@nx/jest 16.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +22 -0
  3. package/README.md +63 -0
  4. package/executors.json +17 -0
  5. package/generators.json +34 -0
  6. package/index.d.ts +5 -0
  7. package/index.js +16 -0
  8. package/index.js.map +1 -0
  9. package/migrations.json +275 -0
  10. package/package.json +57 -0
  11. package/plugins/resolver.d.ts +1 -0
  12. package/plugins/resolver.js +56 -0
  13. package/plugins/resolver.js.map +1 -0
  14. package/preset/index.d.ts +2 -0
  15. package/preset/index.js +5 -0
  16. package/preset/index.js.map +1 -0
  17. package/preset/jest-preset.d.ts +2 -0
  18. package/preset/jest-preset.js +34 -0
  19. package/preset/jest-preset.js.map +1 -0
  20. package/src/executors/jest/compat.d.ts +2 -0
  21. package/src/executors/jest/compat.js +6 -0
  22. package/src/executors/jest/compat.js.map +1 -0
  23. package/src/executors/jest/jest.impl.d.ts +11 -0
  24. package/src/executors/jest/jest.impl.js +153 -0
  25. package/src/executors/jest/jest.impl.js.map +1 -0
  26. package/src/executors/jest/schema.d.ts +42 -0
  27. package/src/executors/jest/schema.json +218 -0
  28. package/src/executors/jest/summary.d.ts +7 -0
  29. package/src/executors/jest/summary.js +155 -0
  30. package/src/executors/jest/summary.js.map +1 -0
  31. package/src/generators/init/init.d.ts +5 -0
  32. package/src/generators/init/init.js +169 -0
  33. package/src/generators/init/init.js.map +1 -0
  34. package/src/generators/init/schema.d.ts +11 -0
  35. package/src/generators/init/schema.json +42 -0
  36. package/src/generators/jest-project/files/jest.config.ts__tmpl__ +16 -0
  37. package/src/generators/jest-project/files/src/test-setup.ts__tmpl__ +0 -0
  38. package/src/generators/jest-project/files/tsconfig.spec.json__tmpl__ +21 -0
  39. package/src/generators/jest-project/files-angular/jest.config.ts__tmpl__ +27 -0
  40. package/src/generators/jest-project/files-angular/src/test-setup.ts__tmpl__ +1 -0
  41. package/src/generators/jest-project/files-angular/tsconfig.spec.json__tmpl__ +22 -0
  42. package/src/generators/jest-project/jest-project.d.ts +4 -0
  43. package/src/generators/jest-project/jest-project.js +55 -0
  44. package/src/generators/jest-project/jest-project.js.map +1 -0
  45. package/src/generators/jest-project/lib/check-for-test-target.d.ts +3 -0
  46. package/src/generators/jest-project/lib/check-for-test-target.js +13 -0
  47. package/src/generators/jest-project/lib/check-for-test-target.js.map +1 -0
  48. package/src/generators/jest-project/lib/create-files.d.ts +3 -0
  49. package/src/generators/jest-project/lib/create-files.js +44 -0
  50. package/src/generators/jest-project/lib/create-files.js.map +1 -0
  51. package/src/generators/jest-project/lib/update-jestconfig.d.ts +3 -0
  52. package/src/generators/jest-project/lib/update-jestconfig.js +22 -0
  53. package/src/generators/jest-project/lib/update-jestconfig.js.map +1 -0
  54. package/src/generators/jest-project/lib/update-tsconfig.d.ts +3 -0
  55. package/src/generators/jest-project/lib/update-tsconfig.js +22 -0
  56. package/src/generators/jest-project/lib/update-tsconfig.js.map +1 -0
  57. package/src/generators/jest-project/lib/update-workspace.d.ts +3 -0
  58. package/src/generators/jest-project/lib/update-workspace.js +37 -0
  59. package/src/generators/jest-project/lib/update-workspace.js.map +1 -0
  60. package/src/generators/jest-project/schema.d.ts +23 -0
  61. package/src/generators/jest-project/schema.json +80 -0
  62. package/src/migrations/update-12-1-2/update-jest-preset-angular.d.ts +1 -0
  63. package/src/migrations/update-12-1-2/update-jest-preset-angular.js +55 -0
  64. package/src/migrations/update-12-1-2/update-jest-preset-angular.js.map +1 -0
  65. package/src/migrations/update-12-1-2/update-ts-jest.d.ts +2 -0
  66. package/src/migrations/update-12-1-2/update-ts-jest.js +36 -0
  67. package/src/migrations/update-12-1-2/update-ts-jest.js.map +1 -0
  68. package/src/migrations/update-12-4-0/add-test-environment-for-node.d.ts +2 -0
  69. package/src/migrations/update-12-4-0/add-test-environment-for-node.js +38 -0
  70. package/src/migrations/update-12-4-0/add-test-environment-for-node.js.map +1 -0
  71. package/src/migrations/update-12-4-0/update-jest-preset-angular.d.ts +25 -0
  72. package/src/migrations/update-12-4-0/update-jest-preset-angular.js +89 -0
  73. package/src/migrations/update-12-4-0/update-jest-preset-angular.js.map +1 -0
  74. package/src/migrations/update-12-6-0/update-base-jest-config.d.ts +2 -0
  75. package/src/migrations/update-12-6-0/update-base-jest-config.js +43 -0
  76. package/src/migrations/update-12-6-0/update-base-jest-config.js.map +1 -0
  77. package/src/migrations/update-13-1-2/update-tsconfigs-for-tests.d.ts +2 -0
  78. package/src/migrations/update-13-1-2/update-tsconfigs-for-tests.js +60 -0
  79. package/src/migrations/update-13-1-2/update-tsconfigs-for-tests.js.map +1 -0
  80. package/src/migrations/update-13-4-4/add-missing-root-babel-config.d.ts +2 -0
  81. package/src/migrations/update-13-4-4/add-missing-root-babel-config.js +43 -0
  82. package/src/migrations/update-13-4-4/add-missing-root-babel-config.js.map +1 -0
  83. package/src/migrations/update-14-0-0/update-jest-config-ext.d.ts +3 -0
  84. package/src/migrations/update-14-0-0/update-jest-config-ext.js +115 -0
  85. package/src/migrations/update-14-0-0/update-jest-config-ext.js.map +1 -0
  86. package/src/migrations/update-14-1-5/update-exports-jest-config.d.ts +7 -0
  87. package/src/migrations/update-14-1-5/update-exports-jest-config.js +66 -0
  88. package/src/migrations/update-14-1-5/update-exports-jest-config.js.map +1 -0
  89. package/src/migrations/update-14-6-0/update-configs-jest-28.d.ts +5 -0
  90. package/src/migrations/update-14-6-0/update-configs-jest-28.js +82 -0
  91. package/src/migrations/update-14-6-0/update-configs-jest-28.js.map +1 -0
  92. package/src/migrations/update-14-6-0/update-tests-jest-28.d.ts +24 -0
  93. package/src/migrations/update-14-6-0/update-tests-jest-28.js +158 -0
  94. package/src/migrations/update-14-6-0/update-tests-jest-28.js.map +1 -0
  95. package/src/migrations/update-15-0-0/add-jest-inputs.d.ts +2 -0
  96. package/src/migrations/update-15-0-0/add-jest-inputs.js +47 -0
  97. package/src/migrations/update-15-0-0/add-jest-inputs.js.map +1 -0
  98. package/src/migrations/update-15-8-0/update-configs-jest-29.d.ts +3 -0
  99. package/src/migrations/update-15-8-0/update-configs-jest-29.js +153 -0
  100. package/src/migrations/update-15-8-0/update-configs-jest-29.js.map +1 -0
  101. package/src/migrations/update-15-8-0/update-tests-jest-29.d.ts +5 -0
  102. package/src/migrations/update-15-8-0/update-tests-jest-29.js +64 -0
  103. package/src/migrations/update-15-8-0/update-tests-jest-29.js.map +1 -0
  104. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
  105. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +13 -0
  106. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js.map +1 -0
  107. package/src/utils/ast-utils.d.ts +9 -0
  108. package/src/utils/ast-utils.js +33 -0
  109. package/src/utils/ast-utils.js.map +1 -0
  110. package/src/utils/config/find-root-jest-files.d.ts +3 -0
  111. package/src/utils/config/find-root-jest-files.js +21 -0
  112. package/src/utils/config/find-root-jest-files.js.map +1 -0
  113. package/src/utils/config/functions.d.ts +17 -0
  114. package/src/utils/config/functions.js +214 -0
  115. package/src/utils/config/functions.js.map +1 -0
  116. package/src/utils/config/get-jest-projects.d.ts +19 -0
  117. package/src/utils/config/get-jest-projects.js +64 -0
  118. package/src/utils/config/get-jest-projects.js.map +1 -0
  119. package/src/utils/config/update-config.d.ts +20 -0
  120. package/src/utils/config/update-config.js +84 -0
  121. package/src/utils/config/update-config.js.map +1 -0
  122. package/src/utils/versions.d.ts +9 -0
  123. package/src/utils/versions.js +13 -0
  124. package/src/utils/versions.js.map +1 -0
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jestInitSchematic = exports.jestInitGenerator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const js_1 = require("@nx/js");
7
+ const find_root_jest_files_1 = require("../../utils/config/find-root-jest-files");
8
+ const versions_1 = require("../../utils/versions");
9
+ const schemaDefaults = {
10
+ compiler: 'tsc',
11
+ js: false,
12
+ rootProject: false,
13
+ testEnvironment: 'jsdom',
14
+ };
15
+ function generateGlobalConfig(tree, isJS) {
16
+ const contents = isJS
17
+ ? (0, devkit_1.stripIndents) `
18
+ const { getJestProjects } = require('@nrwl/jest');
19
+
20
+ module.exports = {
21
+ projects: getJestProjects()
22
+ };`
23
+ : (0, devkit_1.stripIndents) `
24
+ import { getJestProjects } from '@nrwl/jest';
25
+
26
+ export default {
27
+ projects: getJestProjects()
28
+ };`;
29
+ tree.write(`jest.config.${isJS ? 'js' : 'ts'}`, contents);
30
+ }
31
+ function createJestConfig(tree, options) {
32
+ var _a;
33
+ if (!tree.exists('jest.preset.js')) {
34
+ // preset is always js file.
35
+ tree.write(`jest.preset.js`, `
36
+ const nxPreset = require('@nrwl/jest/preset').default;
37
+
38
+ module.exports = { ...nxPreset }`);
39
+ addTestInputs(tree);
40
+ }
41
+ if (options.rootProject) {
42
+ // we don't want any config to be made because the `jestProjectGenerator`
43
+ // will copy the template config file
44
+ return;
45
+ }
46
+ const rootJestPath = (0, find_root_jest_files_1.findRootJestConfig)(tree);
47
+ if (!rootJestPath) {
48
+ // if there's not root jest config, we will create one and return
49
+ // this can happen when:
50
+ // - root jest config was renamed => in which case there is migration needed
51
+ // - root project didn't have jest setup => again, no migration is needed
52
+ generateGlobalConfig(tree, options.js);
53
+ return;
54
+ }
55
+ if (tree.exists(rootJestPath)) {
56
+ // moving from root project config to monorepo-style config
57
+ const projects = (0, devkit_1.getProjects)(tree);
58
+ const projectNames = Array.from(projects.keys());
59
+ const rootProject = projectNames.find((projectName) => { var _a; return ((_a = projects.get(projectName)) === null || _a === void 0 ? void 0 : _a.root) === '.'; });
60
+ // root project might have been removed,
61
+ // if it's missing there's nothing to migrate
62
+ if (rootProject) {
63
+ const rootProjectConfig = projects.get(rootProject);
64
+ const jestTarget = Object.values(rootProjectConfig.targets || {}).find((t) => (t === null || t === void 0 ? void 0 : t.executor) === '@nrwl/jest:jest');
65
+ const isProjectConfig = ((_a = jestTarget === null || jestTarget === void 0 ? void 0 : jestTarget.options) === null || _a === void 0 ? void 0 : _a.jestConfig) === rootJestPath;
66
+ // if root project doesn't have jest target, there's nothing to migrate
67
+ if (isProjectConfig) {
68
+ const jestAppConfig = `jest.config.app.${options.js ? 'js' : 'ts'}`;
69
+ tree.rename(rootJestPath, jestAppConfig);
70
+ jestTarget.options.jestConfig = jestAppConfig;
71
+ (0, devkit_1.updateProjectConfiguration)(tree, rootProject, rootProjectConfig);
72
+ }
73
+ // generate new global config as it was move to project config or is missing
74
+ generateGlobalConfig(tree, options.js);
75
+ }
76
+ }
77
+ }
78
+ function addTestInputs(tree) {
79
+ var _a, _b, _c, _d;
80
+ var _e, _f;
81
+ const nxJson = (0, devkit_1.readNxJson)(tree);
82
+ const productionFileSet = (_a = nxJson.namedInputs) === null || _a === void 0 ? void 0 : _a.production;
83
+ if (productionFileSet) {
84
+ // This is one of the patterns in the default jest patterns
85
+ productionFileSet.push(
86
+ // Remove spec, test, and snapshots from the production fileset
87
+ '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)',
88
+ // Remove tsconfig.spec.json
89
+ '!{projectRoot}/tsconfig.spec.json',
90
+ // Remove jest.config.js/ts
91
+ '!{projectRoot}/jest.config.[jt]s');
92
+ // Dedupe and set
93
+ nxJson.namedInputs.production = Array.from(new Set(productionFileSet));
94
+ }
95
+ // Test targets depend on all their project's sources + production sources of dependencies
96
+ (_b = nxJson.targetDefaults) !== null && _b !== void 0 ? _b : (nxJson.targetDefaults = {});
97
+ (_c = (_e = nxJson.targetDefaults).test) !== null && _c !== void 0 ? _c : (_e.test = {});
98
+ (_d = (_f = nxJson.targetDefaults.test).inputs) !== null && _d !== void 0 ? _d : (_f.inputs = [
99
+ 'default',
100
+ productionFileSet ? '^production' : '^default',
101
+ ]);
102
+ nxJson.targetDefaults.test.inputs.push('{workspaceRoot}/jest.preset.js');
103
+ (0, devkit_1.updateNxJson)(tree, nxJson);
104
+ }
105
+ function updateDependencies(tree, options) {
106
+ const dependencies = {
107
+ tslib: versions_1.tslibVersion,
108
+ };
109
+ const devDeps = {
110
+ '@nrwl/jest': versions_1.nxVersion,
111
+ jest: versions_1.jestVersion,
112
+ // because the default jest-preset uses ts-jest,
113
+ // jest will throw an error if it's not installed
114
+ // even if not using it in overriding transformers
115
+ 'ts-jest': versions_1.tsJestVersion,
116
+ };
117
+ if (options.testEnvironment !== 'none') {
118
+ devDeps[`jest-environment-${options.testEnvironment}`] = versions_1.jestVersion;
119
+ }
120
+ if (!options.js) {
121
+ devDeps['ts-node'] = versions_1.tsNodeVersion;
122
+ devDeps['@types/jest'] = versions_1.jestTypesVersion;
123
+ devDeps['@types/node'] = versions_1.typesNodeVersion;
124
+ }
125
+ if (options.compiler === 'babel' || options.babelJest) {
126
+ devDeps['babel-jest'] = versions_1.babelJestVersion;
127
+ // in some cases @nrwl/js will not already be present i.e. node only projects
128
+ devDeps['@nrwl/js'] = versions_1.nxVersion;
129
+ }
130
+ else if (options.compiler === 'swc') {
131
+ devDeps['@swc/jest'] = versions_1.swcJestVersion;
132
+ }
133
+ return (0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDeps);
134
+ }
135
+ function updateExtensions(host) {
136
+ if (!host.exists('.vscode/extensions.json')) {
137
+ return;
138
+ }
139
+ (0, devkit_1.updateJson)(host, '.vscode/extensions.json', (json) => {
140
+ json.recommendations = json.recommendations || [];
141
+ const extension = 'firsttris.vscode-jest-runner';
142
+ if (!json.recommendations.includes(extension)) {
143
+ json.recommendations.push(extension);
144
+ }
145
+ return json;
146
+ });
147
+ }
148
+ function jestInitGenerator(tree, schema) {
149
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
150
+ const options = normalizeOptions(schema);
151
+ const tasks = [];
152
+ tasks.push(yield (0, js_1.initGenerator)(tree, Object.assign(Object.assign({}, schema), { skipFormat: true })));
153
+ createJestConfig(tree, options);
154
+ if (!options.skipPackageJson) {
155
+ (0, devkit_1.removeDependenciesFromPackageJson)(tree, ['@nrwl/jest'], []);
156
+ const installTask = updateDependencies(tree, options);
157
+ tasks.push(installTask);
158
+ }
159
+ updateExtensions(tree);
160
+ return (0, devkit_1.runTasksInSerial)(...tasks);
161
+ });
162
+ }
163
+ exports.jestInitGenerator = jestInitGenerator;
164
+ function normalizeOptions(options) {
165
+ return Object.assign(Object.assign({}, schemaDefaults), options);
166
+ }
167
+ exports.default = jestInitGenerator;
168
+ exports.jestInitSchematic = (0, devkit_1.convertNxGenerator)(jestInitGenerator);
169
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../packages/jest/src/generators/init/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface JestInitSchema {
2
+ compiler?: 'tsc' | 'babel' | 'swc';
3
+ js?: boolean;
4
+ skipPackageJson?: boolean;
5
+ testEnvironment?: 'node' | 'jsdom' | 'none';
6
+ /**
7
+ * @deprecated
8
+ */
9
+ babelJest?: boolean;
10
+ rootProject?: boolean;
11
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "NxJestInit",
4
+ "cli": "nx",
5
+ "title": "Jest init",
6
+ "description": "Add Jest Configuration to a workspace.",
7
+ "type": "object",
8
+ "properties": {
9
+ "babelJest": {
10
+ "type": "boolean",
11
+ "alias": "babel-jest",
12
+ "description": "Use `babel-jest` instead of `ts-jest`.",
13
+ "default": false
14
+ },
15
+ "skipPackageJson": {
16
+ "type": "boolean",
17
+ "default": false,
18
+ "description": "Do not add dependencies to `package.json`.",
19
+ "x-priority": "internal"
20
+ },
21
+ "testEnvironment": {
22
+ "type": "string",
23
+ "enum": ["jsdom", "node", "none"],
24
+ "description": "The test environment for jest. This controls which jest-environment-* package is installed",
25
+ "default": "jsdom",
26
+ "x-priority": "important"
27
+ },
28
+ "js": {
29
+ "type": "boolean",
30
+ "default": false,
31
+ "description": "Use JavaScript instead of TypeScript for config files"
32
+ },
33
+ "rootProject": {
34
+ "description": "initialize Jest for an application at the root of the workspace",
35
+ "type": "boolean",
36
+ "default": false,
37
+ "hidden": true,
38
+ "x-priority": "internal"
39
+ }
40
+ },
41
+ "required": []
42
+ }
@@ -0,0 +1,16 @@
1
+ /* eslint-disable */
2
+ <% if(js){ %>module.exports =<% } else{ %>export default<% } %> {
3
+ displayName: '<%= project %>',
4
+ preset: '<%= offsetFromRoot %>jest.preset.js',<% if(setupFile !== 'none') { %>
5
+ setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],<% } %><% if(testEnvironment) { %>
6
+ testEnvironment: '<%= testEnvironment %>',<% } %><% if(skipSerializers){ %>
7
+ transform: {
8
+ <% if (supportTsx){ %>'^.+\\.[tj]sx?$'<% } else { %>'^.+\\.[tj]s$'<% } %>: <% if (transformerOptions) { %>['<%= transformer %>', <%- transformerOptions %>]<% } else { %>'<%= transformer %>'<% } %>
9
+ },
10
+ <% if (supportTsx) { %>moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],<% } else { %>moduleFileExtensions: ['ts', 'js', 'html'],<% } %><% } %>
11
+ coverageDirectory: '<%= offsetFromRoot %>coverage/<%= projectRoot %>'<% if(rootProject){ %>,
12
+ testMatch: [
13
+ '<rootDir>/src/**/__tests__/**/*.[jt]s?(x)',
14
+ '<rootDir>/src/**/*(*.)@(spec|test).[jt]s?(x)',
15
+ ],<% } %>
16
+ };
@@ -0,0 +1,21 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5
+ "module": "commonjs",
6
+ "types": ["jest", "node"]
7
+ },<% if(setupFile !== 'none') { %>
8
+ "files": ["src/test-setup.ts"],<% } %>
9
+ "include": [
10
+ "jest.config.ts",
11
+ "src/**/*.test.ts",
12
+ "src/**/*.spec.ts",<% if (supportTsx) { %>
13
+ "src/**/*.test.tsx",
14
+ "src/**/*.spec.tsx",
15
+ "src/**/*.test.js",
16
+ "src/**/*.spec.js",
17
+ "src/**/*.test.jsx",
18
+ "src/**/*.spec.jsx",<% } %>
19
+ "src/**/*.d.ts"
20
+ ]
21
+ }
@@ -0,0 +1,27 @@
1
+ /* eslint-disable */
2
+ <% if(js){ %>module.exports =<% } else{ %>export default<% } %> {
3
+ displayName: '<%= project %>',
4
+ preset: '<%= offsetFromRoot %>jest.preset.js',
5
+ setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],<% if(testEnvironment) { %>
6
+ testEnvironment: '<%= testEnvironment %>',<% } %>
7
+ coverageDirectory: '<%= offsetFromRoot %>coverage/<%= projectRoot %>',
8
+ transform: {
9
+ '^.+\\.(ts|mjs|js|html)$': [
10
+ 'jest-preset-angular',
11
+ {
12
+ tsconfig: '<rootDir>/tsconfig.spec.json',
13
+ stringifyContentPathRegex: '\\.(html|svg)$',
14
+ },
15
+ ],
16
+ },
17
+ transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)']<% if(!skipSerializers) { %>,
18
+ snapshotSerializers: [
19
+ 'jest-preset-angular/build/serializers/no-ng-attributes',
20
+ 'jest-preset-angular/build/serializers/ng-snapshot',
21
+ 'jest-preset-angular/build/serializers/html-comment',
22
+ ]<% } %><% if(rootProject){ %>,
23
+ testMatch: [
24
+ '<rootDir>/src/**/__tests__/**/*.[jt]s?(x)',
25
+ '<rootDir>/src/**/*(*.)@(spec|test).[jt]s?(x)',
26
+ ],<% } %>
27
+ };
@@ -0,0 +1 @@
1
+ import 'jest-preset-angular/setup-jest';
@@ -0,0 +1,22 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "<%= offsetFromRoot %>dist/out-tsc",
5
+ "module": "commonjs",
6
+ "target": "es2016",
7
+ "types": ["jest", "node"]
8
+ },<% if(setupFile !== 'none') { %>
9
+ "files": ["src/test-setup.ts"],<% } %>
10
+ "include": [
11
+ "jest.config.ts",
12
+ "src/**/*.test.ts",
13
+ "src/**/*.spec.ts",<% if (supportTsx) { %>
14
+ "src/**/*.test.tsx",
15
+ "src/**/*.spec.tsx",
16
+ "src/**/*.test.js",
17
+ "src/**/*.spec.js",
18
+ "src/**/*.test.jsx",
19
+ "src/**/*.spec.jsx",<% } %>
20
+ "src/**/*.d.ts"
21
+ ]
22
+ }
@@ -0,0 +1,4 @@
1
+ import { JestProjectSchema } from './schema';
2
+ import { Tree, GeneratorCallback } from '@nx/devkit';
3
+ export declare function jestProjectGenerator(tree: Tree, schema: JestProjectSchema): Promise<GeneratorCallback>;
4
+ export declare const jestProjectSchematic: (generatorOptions: JestProjectSchema) => (tree: any, context: any) => Promise<any>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jestProjectSchematic = exports.jestProjectGenerator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const init_1 = require("../init/init");
6
+ const check_for_test_target_1 = require("./lib/check-for-test-target");
7
+ const create_files_1 = require("./lib/create-files");
8
+ const update_tsconfig_1 = require("./lib/update-tsconfig");
9
+ const update_workspace_1 = require("./lib/update-workspace");
10
+ const devkit_1 = require("@nx/devkit");
11
+ const schemaDefaults = {
12
+ setupFile: 'none',
13
+ babelJest: false,
14
+ supportTsx: false,
15
+ skipSetupFile: false,
16
+ skipSerializers: false,
17
+ testEnvironment: 'jsdom',
18
+ };
19
+ function normalizeOptions(tree, options) {
20
+ if (!options.testEnvironment) {
21
+ options.testEnvironment = 'jsdom';
22
+ }
23
+ if (!options.hasOwnProperty('supportTsx')) {
24
+ options.supportTsx = false;
25
+ }
26
+ // if we support TSX or compiler is not tsc, then we don't support angular(html templates)
27
+ if (options.supportTsx ||
28
+ options.babelJest ||
29
+ ['swc', 'babel'].includes(options.compiler)) {
30
+ options.skipSerializers = true;
31
+ }
32
+ if (options.skipSetupFile) {
33
+ // setupFile is always 'none'
34
+ options.setupFile = schemaDefaults.setupFile;
35
+ }
36
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
37
+ return Object.assign(Object.assign(Object.assign({}, schemaDefaults), options), { rootProject: project.root === '.' || project.root === '' });
38
+ }
39
+ function jestProjectGenerator(tree, schema) {
40
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
41
+ const options = normalizeOptions(tree, schema);
42
+ const installTask = yield (0, init_1.default)(tree, options);
43
+ (0, check_for_test_target_1.checkForTestTarget)(tree, options);
44
+ (0, create_files_1.createFiles)(tree, options);
45
+ (0, update_tsconfig_1.updateTsConfig)(tree, options);
46
+ (0, update_workspace_1.updateWorkspace)(tree, options);
47
+ if (!schema.skipFormat) {
48
+ yield (0, devkit_1.formatFiles)(tree);
49
+ }
50
+ return installTask;
51
+ });
52
+ }
53
+ exports.jestProjectGenerator = jestProjectGenerator;
54
+ exports.jestProjectSchematic = (0, devkit_1.convertNxGenerator)(jestProjectGenerator);
55
+ //# sourceMappingURL=jest-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-project.js","sourceRoot":"","sources":["../../../../../../packages/jest/src/generators/jest-project/jest-project.ts"],"names":[],"mappings":";;;;AAAA,uCAAgC;AAChC,uEAAiE;AACjE,qDAAiD;AACjD,2DAAuD;AACvD,6DAAyD;AAEzD,uCAMoB;AAEpB,MAAM,cAAc,GAAG;IACrB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,OAAO;CAChB,CAAC;AAEX,SAAS,gBAAgB,CACvB,IAAU,EACV,OAA0B;IAE1B,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QAC5B,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;KACnC;IAED,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;QACzC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;KAC5B;IAED,0FAA0F;IAC1F,IACE,OAAO,CAAC,UAAU;QAClB,OAAO,CAAC,SAAS;QACjB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC3C;QACA,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;KAChC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE;QACzB,6BAA6B;QAC7B,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;KAC9C;IAED,MAAM,OAAO,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE,qDACK,cAAc,GACd,OAAO,KACV,WAAW,EAAE,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,IACxD;AACJ,CAAC;AAED,SAAsB,oBAAoB,CACxC,IAAU,EACV,MAAyB;;QAEzB,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,IAAA,cAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9C,IAAA,0CAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,IAAA,0BAAW,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAA,gCAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAA,kCAAe,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACtB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;SACzB;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CAAA;AAhBD,oDAgBC;AAEY,QAAA,oBAAoB,GAAG,IAAA,2BAAkB,EAAC,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import { NormalizedJestProjectSchema } from '../schema';
3
+ export declare function checkForTestTarget(tree: Tree, options: NormalizedJestProjectSchema): void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkForTestTarget = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ function checkForTestTarget(tree, options) {
6
+ var _a;
7
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
8
+ if ((_a = projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.targets) === null || _a === void 0 ? void 0 : _a.test) {
9
+ throw new Error(`${options.project}: already has a test target set.`);
10
+ }
11
+ }
12
+ exports.checkForTestTarget = checkForTestTarget;
13
+ //# sourceMappingURL=check-for-test-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-for-test-target.js","sourceRoot":"","sources":["../../../../../../../packages/jest/src/generators/jest-project/lib/check-for-test-target.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAG5D,SAAgB,kBAAkB,CAChC,IAAU,EACV,OAAoC;;IAEpC,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,IAAI,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,0CAAE,IAAI,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,kCAAkC,CAAC,CAAC;KACvE;AACH,CAAC;AARD,gDAQC"}
@@ -0,0 +1,3 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import { NormalizedJestProjectSchema } from '../schema';
3
+ export declare function createFiles(tree: Tree, options: NormalizedJestProjectSchema): void;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createFiles = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const path_1 = require("path");
6
+ function createFiles(tree, options) {
7
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
8
+ const filesFolder = options.setupFile === 'angular' ? '../files-angular' : '../files';
9
+ let transformer;
10
+ let transformerOptions = null;
11
+ if (options.compiler === 'babel' || options.babelJest) {
12
+ transformer = 'babel-jest';
13
+ }
14
+ else if (options.compiler === 'swc') {
15
+ transformer = '@swc/jest';
16
+ if (options.supportTsx) {
17
+ transformerOptions =
18
+ "{ jsc: { transform: { react: { runtime: 'automatic' } } } }";
19
+ }
20
+ }
21
+ else {
22
+ transformer = 'ts-jest';
23
+ transformerOptions = "{ tsconfig: '<rootDir>/tsconfig.spec.json' }";
24
+ }
25
+ (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, filesFolder), projectConfig.root, Object.assign(Object.assign({ tmpl: '' }, options), {
26
+ // jsdom is the default
27
+ testEnvironment: options.testEnvironment === 'none' || options.testEnvironment === 'jsdom'
28
+ ? ''
29
+ : options.testEnvironment, transformer,
30
+ transformerOptions, js: !!options.js, rootProject: options.rootProject, projectRoot: options.rootProject ? options.project : projectConfig.root, offsetFromRoot: (0, devkit_1.offsetFromRoot)(projectConfig.root) }));
31
+ if (options.setupFile === 'none') {
32
+ tree.delete((0, path_1.join)(projectConfig.root, './src/test-setup.ts'));
33
+ }
34
+ if (options.babelJest && !tree.exists('babel.config.json')) {
35
+ tree.write('babel.config.json', JSON.stringify({
36
+ babelrcRoots: ['*'],
37
+ }));
38
+ }
39
+ if (options.js) {
40
+ tree.rename((0, path_1.join)(projectConfig.root, 'jest.config.ts'), (0, path_1.join)(projectConfig.root, 'jest.config.js'));
41
+ }
42
+ }
43
+ exports.createFiles = createFiles;
44
+ //# sourceMappingURL=create-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-files.js","sourceRoot":"","sources":["../../../../../../../packages/jest/src/generators/jest-project/lib/create-files.ts"],"names":[],"mappings":";;;AAAA,uCAKoB;AACpB,+BAA4B;AAG5B,SAAgB,WAAW,CAAC,IAAU,EAAE,OAAoC;IAC1E,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtE,MAAM,WAAW,GACf,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC;IAEpE,IAAI,WAAmB,CAAC;IACxB,IAAI,kBAAkB,GAAkB,IAAI,CAAC;IAC7C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;QACrD,WAAW,GAAG,YAAY,CAAC;KAC5B;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;QACrC,WAAW,GAAG,WAAW,CAAC;QAC1B,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,kBAAkB;gBAChB,6DAA6D,CAAC;SACjE;KACF;SAAM;QACL,WAAW,GAAG,SAAS,CAAC;QACxB,kBAAkB,GAAG,8CAA8C,CAAC;KACrE;IAED,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,IAAI,gCAClE,IAAI,EAAE,EAAE,IACL,OAAO;QACV,uBAAuB;QACvB,eAAe,EACb,OAAO,CAAC,eAAe,KAAK,MAAM,IAAI,OAAO,CAAC,eAAe,KAAK,OAAO;YACvE,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,eAAe,EAC7B,WAAW;QACX,kBAAkB,EAClB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAChB,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EACvE,cAAc,EAAE,IAAA,uBAAc,EAAC,aAAa,CAAC,IAAI,CAAC,IAClD,CAAC;IAEH,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE;QAChC,IAAI,CAAC,MAAM,CAAC,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;KAC9D;IAED,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;QAC1D,IAAI,CAAC,KAAK,CACR,mBAAmB,EACnB,IAAI,CAAC,SAAS,CAAC;YACb,YAAY,EAAE,CAAC,GAAG,CAAC;SACpB,CAAC,CACH,CAAC;KACH;IAED,IAAI,OAAO,CAAC,EAAE,EAAE;QACd,IAAI,CAAC,MAAM,CACT,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAC1C,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAC3C,CAAC;KACH;AACH,CAAC;AAxDD,kCAwDC"}
@@ -0,0 +1,3 @@
1
+ import { NormalizedJestProjectSchema } from '../schema';
2
+ import { Tree } from '@nx/devkit';
3
+ export declare function updateJestConfig(host: Tree, options: NormalizedJestProjectSchema): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateJestConfig = void 0;
4
+ const find_root_jest_files_1 = require("../../../utils/config/find-root-jest-files");
5
+ const update_config_1 = require("../../../utils/config/update-config");
6
+ const devkit_1 = require("@nx/devkit");
7
+ function isUsingUtilityFunction(host) {
8
+ const rootConfig = (0, find_root_jest_files_1.findRootJestConfig)(host);
9
+ return (rootConfig && host.read(rootConfig).toString().includes('getJestProjects()'));
10
+ }
11
+ function updateJestConfig(host, options) {
12
+ if (isUsingUtilityFunction(host)) {
13
+ return;
14
+ }
15
+ const project = (0, devkit_1.readProjectConfiguration)(host, options.project);
16
+ const rootConfig = (0, find_root_jest_files_1.findRootJestConfig)(host);
17
+ if (rootConfig) {
18
+ (0, update_config_1.addPropertyToJestConfig)(host, (0, find_root_jest_files_1.findRootJestConfig)(host), 'projects', `<rootDir>/${project.root}`);
19
+ }
20
+ }
21
+ exports.updateJestConfig = updateJestConfig;
22
+ //# sourceMappingURL=update-jestconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-jestconfig.js","sourceRoot":"","sources":["../../../../../../../packages/jest/src/generators/jest-project/lib/update-jestconfig.ts"],"names":[],"mappings":";;;AAAA,qFAAgF;AAEhF,uEAA8E;AAC9E,uCAA4D;AAE5D,SAAS,sBAAsB,CAAC,IAAU;IACxC,MAAM,UAAU,GAAG,IAAA,yCAAkB,EAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CACL,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAC9B,IAAU,EACV,OAAoC;IAEpC,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAChC,OAAO;KACR;IACD,MAAM,OAAO,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAA,yCAAkB,EAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE;QACd,IAAA,uCAAuB,EACrB,IAAI,EACJ,IAAA,yCAAkB,EAAC,IAAI,CAAC,EACxB,UAAU,EACV,aAAa,OAAO,CAAC,IAAI,EAAE,CAC5B,CAAC;KACH;AACH,CAAC;AAjBD,4CAiBC"}
@@ -0,0 +1,3 @@
1
+ import { NormalizedJestProjectSchema } from '../schema';
2
+ import { Tree } from '@nx/devkit';
3
+ export declare function updateTsConfig(host: Tree, options: NormalizedJestProjectSchema): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateTsConfig = void 0;
4
+ const path_1 = require("path");
5
+ const devkit_1 = require("@nx/devkit");
6
+ function updateTsConfig(host, options) {
7
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(host, options.project);
8
+ if (!host.exists((0, path_1.join)(projectConfig.root, 'tsconfig.json'))) {
9
+ throw new Error(`Expected ${(0, path_1.join)(projectConfig.root, 'tsconfig.json')} to exist. Please create one.`);
10
+ }
11
+ (0, devkit_1.updateJson)(host, (0, path_1.join)(projectConfig.root, 'tsconfig.json'), (json) => {
12
+ if (json.references &&
13
+ !json.references.some((r) => r.path === './tsconfig.spec.json')) {
14
+ json.references.push({
15
+ path: './tsconfig.spec.json',
16
+ });
17
+ }
18
+ return json;
19
+ });
20
+ }
21
+ exports.updateTsConfig = updateTsConfig;
22
+ //# sourceMappingURL=update-tsconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-tsconfig.js","sourceRoot":"","sources":["../../../../../../../packages/jest/src/generators/jest-project/lib/update-tsconfig.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAE5B,uCAAwE;AAExE,SAAgB,cAAc,CAC5B,IAAU,EACV,OAAoC;IAEpC,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CACb,YAAY,IAAA,WAAI,EACd,aAAa,CAAC,IAAI,EAClB,eAAe,CAChB,+BAA+B,CACjC,CAAC;KACH;IACD,IAAA,mBAAU,EAAC,IAAI,EAAE,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;QACnE,IACE,IAAI,CAAC,UAAU;YACf,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC,EAC/D;YACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAxBD,wCAwBC"}
@@ -0,0 +1,3 @@
1
+ import { NormalizedJestProjectSchema } from '../schema';
2
+ import { Tree } from '@nx/devkit';
3
+ export declare function updateWorkspace(tree: Tree, options: NormalizedJestProjectSchema): void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateWorkspace = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ function updateWorkspace(tree, options) {
6
+ var _a;
7
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
8
+ projectConfig.targets.test = {
9
+ executor: '@nrwl/jest:jest',
10
+ outputs: [
11
+ options.rootProject
12
+ ? (0, devkit_1.joinPathFragments)('{workspaceRoot}', 'coverage', '{projectName}')
13
+ : (0, devkit_1.joinPathFragments)('{workspaceRoot}', 'coverage', '{projectRoot}'),
14
+ ],
15
+ options: {
16
+ jestConfig: (0, devkit_1.joinPathFragments)((0, devkit_1.normalizePath)(projectConfig.root), `jest.config.${options.js ? 'js' : 'ts'}`),
17
+ passWithNoTests: true,
18
+ },
19
+ configurations: {
20
+ ci: {
21
+ ci: true,
22
+ codeCoverage: true,
23
+ },
24
+ },
25
+ };
26
+ const isUsingTSLint = ((_a = projectConfig.targets.lint) === null || _a === void 0 ? void 0 : _a.executor) ===
27
+ '@angular-devkit/build-angular:tslint';
28
+ if (isUsingTSLint) {
29
+ projectConfig.targets.lint.options.tsConfig = [
30
+ ...(projectConfig.targets.lint.options.tsConfig || []),
31
+ (0, devkit_1.joinPathFragments)((0, devkit_1.normalizePath)(projectConfig.root), 'tsconfig.spec.json'),
32
+ ];
33
+ }
34
+ (0, devkit_1.updateProjectConfiguration)(tree, options.project, projectConfig);
35
+ }
36
+ exports.updateWorkspace = updateWorkspace;
37
+ //# sourceMappingURL=update-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-workspace.js","sourceRoot":"","sources":["../../../../../../../packages/jest/src/generators/jest-project/lib/update-workspace.ts"],"names":[],"mappings":";;;AACA,uCAMoB;AAEpB,SAAgB,eAAe,CAC7B,IAAU,EACV,OAAoC;;IAEpC,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG;QAC3B,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE;YACP,OAAO,CAAC,WAAW;gBACjB,CAAC,CAAC,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,UAAU,EAAE,eAAe,CAAC;gBACnE,CAAC,CAAC,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,UAAU,EAAE,eAAe,CAAC;SACtE;QACD,OAAO,EAAE;YACP,UAAU,EAAE,IAAA,0BAAiB,EAC3B,IAAA,sBAAa,EAAC,aAAa,CAAC,IAAI,CAAC,EACjC,eAAe,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAC1C;YACD,eAAe,EAAE,IAAI;SACtB;QACD,cAAc,EAAE;YACd,EAAE,EAAE;gBACF,EAAE,EAAE,IAAI;gBACR,YAAY,EAAE,IAAI;aACnB;SACF;KACF,CAAC;IAEF,MAAM,aAAa,GACjB,CAAA,MAAA,aAAa,CAAC,OAAO,CAAC,IAAI,0CAAE,QAAQ;QACpC,sCAAsC,CAAC;IAEzC,IAAI,aAAa,EAAE;QACjB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG;YAC5C,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YACtD,IAAA,0BAAiB,EACf,IAAA,sBAAa,EAAC,aAAa,CAAC,IAAI,CAAC,EACjC,oBAAoB,CACrB;SACF,CAAC;KACH;IACD,IAAA,mCAA0B,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACnE,CAAC;AAzCD,0CAyCC"}
@@ -0,0 +1,23 @@
1
+ export interface JestProjectSchema {
2
+ project: string;
3
+ supportTsx?: boolean;
4
+ /**
5
+ * @deprecated use setupFile instead
6
+ */
7
+ skipSetupFile?: boolean;
8
+ setupFile?: 'angular' | 'web-components' | 'none';
9
+ skipSerializers?: boolean;
10
+ testEnvironment?: 'node' | 'jsdom' | 'none';
11
+ /**
12
+ * @deprecated use compiler: "babel" instead
13
+ */
14
+ babelJest?: boolean;
15
+ skipFormat?: boolean;
16
+ compiler?: 'tsc' | 'babel' | 'swc';
17
+ skipPackageJson?: boolean;
18
+ js?: boolean;
19
+ }
20
+
21
+ export type NormalizedJestProjectSchema = JestProjectSchema & {
22
+ rootProject: boolean;
23
+ };