UNPKG

5.12 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.usesJestPresetAngular = exports.transformerIsFromJestPresetAngular = exports.getNewAstTransformers = exports.updateTransform = exports.updateASTTransformers = void 0;
4const tslib_1 = require("tslib");
5const devkit_1 = require("@nrwl/devkit");
6const path_1 = require("path");
7const executor_options_utils_1 = require("@nrwl/workspace/src/utilities/executor-options-utils");
8const update_config_1 = require("../../utils/config/update-config");
9function updateJestConfig(tree) {
10 (0, executor_options_utils_1.forEachExecutorOptions)(tree, '@nrwl/jest:jest', (options, project) => {
11 if (!options.jestConfig) {
12 return;
13 }
14 const jestConfigPath = options.jestConfig;
15 const jestConfig = require((0, path_1.join)(tree.root, jestConfigPath));
16 if (!usesJestPresetAngular(jestConfig)) {
17 return;
18 }
19 try {
20 updateASTTransformers(tree, jestConfigPath, jestConfig);
21 updateTransform(tree, jestConfigPath, jestConfig);
22 }
23 catch (_a) {
24 devkit_1.logger.error((0, devkit_1.stripIndents) `Unable to update jest.config.js for project ${project}.`);
25 }
26 });
27}
28function update(tree) {
29 return tslib_1.__awaiter(this, void 0, void 0, function* () {
30 updateJestConfig(tree);
31 yield (0, devkit_1.formatFiles)(tree);
32 });
33}
34exports.default = update;
35function updateASTTransformers(tree, jestConfigPath, jestConfig) {
36 var _a, _b;
37 const newTransformers = getNewAstTransformers((_b = (_a = jestConfig.globals) === null || _a === void 0 ? void 0 : _a['ts-jest']) === null || _b === void 0 ? void 0 : _b.astTransformers);
38 if (newTransformers === null) {
39 (0, update_config_1.removePropertyFromJestConfig)(tree, jestConfigPath, 'globals.ts-jest.astTransformers');
40 }
41 else {
42 (0, update_config_1.addPropertyToJestConfig)(tree, jestConfigPath, 'globals.ts-jest.astTransformers', newTransformers);
43 }
44}
45exports.updateASTTransformers = updateASTTransformers;
46function updateTransform(tree, jestConfigPath, jestConfig) {
47 (0, update_config_1.removePropertyFromJestConfig)(tree, jestConfigPath, 'transform');
48 (0, update_config_1.addPropertyToJestConfig)(tree, jestConfigPath, 'transform', {
49 '^.+\\.(ts|js|html)$': 'jest-preset-angular',
50 });
51}
52exports.updateTransform = updateTransform;
53function getNewAstTransformers(astTransformers) {
54 var _a, _b, _c, _d, _e, _f, _g, _h, _j;
55 let result = {
56 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)),
57 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)),
58 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)),
59 };
60 result = {
61 before: ((_g = result.before) === null || _g === void 0 ? void 0 : _g.length) > 0 ? result.before : undefined,
62 after: ((_h = result.after) === null || _h === void 0 ? void 0 : _h.length) > 0 ? result.after : undefined,
63 afterDeclarations: ((_j = result.afterDeclarations) === null || _j === void 0 ? void 0 : _j.length) > 0
64 ? result.afterDeclarations
65 : undefined,
66 };
67 if (!result.before && !result.after && !result.afterDeclarations) {
68 return null;
69 }
70 else {
71 return result;
72 }
73}
74exports.getNewAstTransformers = getNewAstTransformers;
75function transformerIsFromJestPresetAngular(transformer) {
76 return typeof transformer === 'string'
77 ? transformer.includes('jest-preset-angular')
78 : transformer.path.includes('jest-preset-angular');
79}
80exports.transformerIsFromJestPresetAngular = transformerIsFromJestPresetAngular;
81function usesJestPresetAngular(jestConfig) {
82 var _a, _b, _c, _d, _e, _f, _g;
83 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)
84 ? ((_d = (_c = jestConfig.globals) === null || _c === void 0 ? void 0 : _c['ts-jest']) === null || _d === void 0 ? void 0 : _d.astTransformers) || []
85 : ((_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) || [];
86 return transformers.some((x) => transformerIsFromJestPresetAngular(x));
87}
88exports.usesJestPresetAngular = usesJestPresetAngular;
89//# sourceMappingURL=update-jest-preset-angular.js.map
\No newline at end of file