@@ -134,19 +134,31 @@
}
Object.defineProperty(ConfigSet.prototype, "projectPackageJson", {
get: function () {
+ var packageJson = this.tsJest.packageJson;
+ if (packageJson && packageJson.kind === 'inline') {
+ return packageJson.value;
+ }
+ if (packageJson && packageJson.kind === 'file' && packageJson.value) {
+ var path = this.resolvePath(packageJson.value);
+ if (fs_1.existsSync(path)) {
+ return require(path);
+ }
+ this.logger.warn(messages_1.Errors.UnableToFindProjectRoot);
+ return {};
+ }
var tsJestRoot = path_1.resolve(__dirname, '..', '..');
var pkgPath = path_1.resolve(tsJestRoot, '..', '..', 'package.json');
- var exists = fs_1.existsSync(pkgPath);
- if (!exists) {
+ if (fs_1.existsSync(pkgPath)) {
+ return require(pkgPath);
+ }
if (fs_1.realpathSync(this.rootDir) === fs_1.realpathSync(tsJestRoot)) {
pkgPath = path_1.resolve(tsJestRoot, 'package.json');
- exists = true;
- }
- else {
- this.logger.warn(messages_1.Errors.UnableToFindProjectRoot);
+ if (fs_1.existsSync(pkgPath)) {
+ return require(pkgPath);
}
}
- return exists ? require(pkgPath) : {};
+ this.logger.warn(messages_1.Errors.UnableToFindProjectRoot);
+ return {};
},
enumerable: true,
configurable: true
@@ -198,6 +210,20 @@
value: tsConfigOpt,
};
}
+ var packageJsonOpt = options.packageJson;
+ var packageJson;
+ if (typeof packageJsonOpt === 'string' || packageJsonOpt == null || packageJsonOpt === true) {
+ packageJson = {
+ kind: 'file',
+ value: typeof packageJsonOpt === 'string' ? this.resolvePath(packageJsonOpt) : undefined,
+ };
+ }
+ else if (typeof packageJsonOpt === 'object') {
+ packageJson = {
+ kind: 'inline',
+ value: packageJsonOpt,
+ };
+ }
var transformers = (options.astTransformers || []).map(function (mod) { return _this.resolvePath(mod, { nodeResolve: true }); });
var babelConfigOpt = options.babelConfig;
var babelConfig;
@@ -240,6 +266,7 @@
var stringifyContentPathRegex = normalizeRegex(options.stringifyContentPathRegex);
var res = {
tsConfig: tsConfig,
+ packageJson: packageJson,
babelConfig: babelConfig,
diagnostics: diagnostics,
isolatedModules: !!options.isolatedModules,
@@ -313,6 +340,19 @@
enumerable: true,
configurable: true
});
+ ConfigSet.loadConfig = function (base) {
+ var _a = importer_1.importer.babelCore(messages_1.ImportReasons.BabelJest), OptionManager = _a.OptionManager, loadPartialConfig = _a.loadPartialConfig, version = _a.version;
+ if (version && semver_1.default.satisfies(version, '>=6 <7')) {
+ delete base.cwd;
+ }
+ if (typeof loadPartialConfig === 'function') {
+ var partialConfig = loadPartialConfig(base);
+ if (partialConfig) {
+ return partialConfig.options;
+ }
+ }
+ return new OptionManager().init(base);
+ };
Object.defineProperty(ConfigSet.prototype, "babel", {
get: function () {
var babelConfig = this.tsJest.babelConfig;
@@ -329,17 +369,7 @@
else if (babelConfig.kind === 'inline') {
base = __assign({}, base, babelConfig.value);
}
- var _a = importer_1.importer.babelCore(messages_1.ImportReasons.BabelJest), OptionManager = _a.OptionManager, loadOptions = _a.loadOptions, version = _a.version;
- if (version && semver_1.default.satisfies(version, '>=6 <7')) {
- delete base.cwd;
- }
- var config;
- if (typeof loadOptions === 'function') {
- config = loadOptions(base);
- }
- else {
- config = new OptionManager().init(base);
- }
+ var config = ConfigSet.loadConfig(base);
this.logger.debug({ babelConfig: config }, 'normalized babel config');
return config;
},