1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.usesJestPresetAngular = exports.transformerIsFromJestPresetAngular = exports.getNewAstTransformers = exports.updateTransform = exports.updateASTTransformers = void 0;
|
4 | const tslib_1 = require("tslib");
|
5 | const devkit_1 = require("@nrwl/devkit");
|
6 | const path_1 = require("path");
|
7 | const executor_options_utils_1 = require("@nrwl/workspace/src/utilities/executor-options-utils");
|
8 | const update_config_1 = require("../../utils/config/update-config");
|
9 | function 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 | }
|
28 | function 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 | }
|
34 | exports.default = update;
|
35 | function 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 | }
|
45 | exports.updateASTTransformers = updateASTTransformers;
|
46 | function 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 | }
|
52 | exports.updateTransform = updateTransform;
|
53 | function 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 | }
|
74 | exports.getNewAstTransformers = getNewAstTransformers;
|
75 | function transformerIsFromJestPresetAngular(transformer) {
|
76 | return typeof transformer === 'string'
|
77 | ? transformer.includes('jest-preset-angular')
|
78 | : transformer.path.includes('jest-preset-angular');
|
79 | }
|
80 | exports.transformerIsFromJestPresetAngular = transformerIsFromJestPresetAngular;
|
81 | function 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 | }
|
88 | exports.usesJestPresetAngular = usesJestPresetAngular;
|
89 |
|
\ | No newline at end of file |