UNPKG

@nrwl/jest

Version:

The Nx Plugin for Jest contains executors and generators allowing your workspace to use the powerful Jest testing capabilities.

89 lines 5.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usesJestPresetAngular = exports.transformerIsFromJestPresetAngular = exports.getNewAstTransformers = exports.updateTransform = exports.updateASTTransformers = void 0; const tslib_1 = require("tslib"); const devkit_1 = require("@nrwl/devkit"); const path_1 = require("path"); const executor_options_utils_1 = require("@nrwl/workspace/src/utilities/executor-options-utils"); const update_config_1 = require("../../utils/config/update-config"); function updateJestConfig(tree) { (0, executor_options_utils_1.forEachExecutorOptions)(tree, '@nrwl/jest:jest', (options, project) => { if (!options.jestConfig) { return; } const jestConfigPath = options.jestConfig; const jestConfig = require((0, path_1.join)(tree.root, jestConfigPath)); if (!usesJestPresetAngular(jestConfig)) { return; } try { updateASTTransformers(tree, jestConfigPath, jestConfig); updateTransform(tree, jestConfigPath, jestConfig); } catch (_a) { devkit_1.logger.error((0, devkit_1.stripIndents) `Unable to update jest.config.js for project ${project}.`); } }); } function update(tree) { return tslib_1.__awaiter(this, void 0, void 0, function* () { updateJestConfig(tree); yield (0, devkit_1.formatFiles)(tree); }); } exports.default = update; function updateASTTransformers(tree, jestConfigPath, jestConfig) { var _a, _b; const newTransformers = getNewAstTransformers((_b = (_a = jestConfig.globals) === null || _a === void 0 ? void 0 : _a['ts-jest']) === null || _b === void 0 ? void 0 : _b.astTransformers); if (newTransformers === null) { (0, update_config_1.removePropertyFromJestConfig)(tree, jestConfigPath, 'globals.ts-jest.astTransformers'); } else { (0, update_config_1.addPropertyToJestConfig)(tree, jestConfigPath, 'globals.ts-jest.astTransformers', newTransformers); } } exports.updateASTTransformers = updateASTTransformers; function updateTransform(tree, jestConfigPath, jestConfig) { (0, update_config_1.removePropertyFromJestConfig)(tree, jestConfigPath, 'transform'); (0, update_config_1.addPropertyToJestConfig)(tree, jestConfigPath, 'transform', { '^.+\\.(ts|js|html)$': 'jest-preset-angular', }); } exports.updateTransform = updateTransform; function getNewAstTransformers(astTransformers) { var _a, _b, _c, _d, _e, _f, _g, _h, _j; let result = { before: (_b = (_a = astTransformers === null || astTransformers === void 0 ? void 0 : astTransformers.before) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.call(_a, (x) => !transformerIsFromJestPresetAngular(x)), after: (_d = (_c = astTransformers === null || astTransformers === void 0 ? void 0 : astTransformers.after) === null || _c === void 0 ? void 0 : _c.filter) === null || _d === void 0 ? void 0 : _d.call(_c, (x) => !transformerIsFromJestPresetAngular(x)), afterDeclarations: (_f = (_e = astTransformers === null || astTransformers === void 0 ? void 0 : astTransformers.afterDeclarations) === null || _e === void 0 ? void 0 : _e.filter) === null || _f === void 0 ? void 0 : _f.call(_e, (x) => !transformerIsFromJestPresetAngular(x)), }; result = { before: ((_g = result.before) === null || _g === void 0 ? void 0 : _g.length) > 0 ? result.before : undefined, after: ((_h = result.after) === null || _h === void 0 ? void 0 : _h.length) > 0 ? result.after : undefined, afterDeclarations: ((_j = result.afterDeclarations) === null || _j === void 0 ? void 0 : _j.length) > 0 ? result.afterDeclarations : undefined, }; if (!result.before && !result.after && !result.afterDeclarations) { return null; } else { return result; } } exports.getNewAstTransformers = getNewAstTransformers; function transformerIsFromJestPresetAngular(transformer) { return typeof transformer === 'string' ? transformer.includes('jest-preset-angular') : transformer.path.includes('jest-preset-angular'); } exports.transformerIsFromJestPresetAngular = transformerIsFromJestPresetAngular; function usesJestPresetAngular(jestConfig) { var _a, _b, _c, _d, _e, _f, _g; const transformers = Array.isArray((_b = (_a = jestConfig.globals) === null || _a === void 0 ? void 0 : _a['ts-jest']) === null || _b === void 0 ? void 0 : _b.astTransformers) ? ((_d = (_c = jestConfig.globals) === null || _c === void 0 ? void 0 : _c['ts-jest']) === null || _d === void 0 ? void 0 : _d.astTransformers) || [] : ((_g = (_f = (_e = jestConfig.globals) === null || _e === void 0 ? void 0 : _e['ts-jest']) === null || _f === void 0 ? void 0 : _f.astTransformers) === null || _g === void 0 ? void 0 : _g.before) || []; return transformers.some((x) => transformerIsFromJestPresetAngular(x)); } exports.usesJestPresetAngular = usesJestPresetAngular; //# sourceMappingURL=update-jest-preset-angular.js.map