1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.updateJestConfig = void 0;
|
4 | const devkit_1 = require("@nrwl/devkit");
|
5 | const get_source_nodes_1 = require("../../../utilities/typescript/get-source-nodes");
|
6 | const typescript_1 = require("typescript");
|
7 | const path_1 = require("path");
|
8 | function isUsingUtilityFunction(host) {
|
9 | return host.read('jest.config.ts').toString().includes('getJestProjects()');
|
10 | }
|
11 |
|
12 |
|
13 |
|
14 | function updateJestConfig(tree, schema, projectConfig) {
|
15 | const projectToRemove = schema.projectName;
|
16 | if (!tree.exists('jest.config.ts') ||
|
17 | !tree.exists((0, path_1.join)(projectConfig.root, 'jest.config.ts')) ||
|
18 | isUsingUtilityFunction(tree)) {
|
19 | return;
|
20 | }
|
21 | const contents = tree.read('jest.config.ts', 'utf-8');
|
22 | const sourceFile = (0, typescript_1.createSourceFile)('jest.config.ts', contents, typescript_1.ScriptTarget.Latest);
|
23 | const sourceNodes = (0, get_source_nodes_1.getSourceNodes)(sourceFile);
|
24 | const projectsAssignment = sourceNodes.find((node) => (0, typescript_1.isPropertyAssignment)(node) &&
|
25 | node.name.getText(sourceFile) === 'projects' &&
|
26 | (0, typescript_1.isArrayLiteralExpression)(node.initializer));
|
27 | if (!projectsAssignment) {
|
28 | throw Error(`Could not remove ${projectToRemove} from projects in /jest.config.ts. Please remove ${projectToRemove} from your projects.`);
|
29 | }
|
30 | const projectsArray = projectsAssignment.initializer;
|
31 | const project = projectsArray.elements.find((item) => (0, typescript_1.isStringLiteral)(item) &&
|
32 | item.text.startsWith(`<rootDir>/${projectConfig.root}`));
|
33 | if (!project) {
|
34 | console.warn(`Could not find ${projectToRemove} in projects in /jest.config.ts.`);
|
35 | return;
|
36 | }
|
37 | const previousProject = projectsArray.elements[projectsArray.elements.indexOf(project) - 1];
|
38 | const start = previousProject
|
39 | ? previousProject.getEnd()
|
40 | : project.getStart(sourceFile);
|
41 | tree.write('jest.config.ts', (0, devkit_1.applyChangesToString)(contents, [
|
42 | {
|
43 | type: devkit_1.ChangeType.Delete,
|
44 | start,
|
45 | length: project.getEnd() - start,
|
46 | },
|
47 | ]));
|
48 | }
|
49 | exports.updateJestConfig = updateJestConfig;
|
50 |
|
\ | No newline at end of file |