@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,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateConfigsJest29 = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
7
+ const ast_utils_1 = require("../../utils/ast-utils");
8
+ const tsquery_1 = require("@phenomnomnominal/tsquery");
9
+ const ts = require("typescript");
10
+ const find_root_jest_files_1 = require("../../utils/config/find-root-jest-files");
11
+ function updateConfigsJest29(tree) {
12
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
13
+ const rootPreset = (0, find_root_jest_files_1.findRootJestPreset)(tree);
14
+ const targetsWithJest = new Set();
15
+ // have to use graph so the negative configuration targets are expanded
16
+ const graph = yield (0, devkit_1.createProjectGraphAsync)();
17
+ (0, executor_options_utils_1.forEachExecutorOptionsInGraph)(graph, '@nrwl/jest:jest', (options, projectName, targetName) => {
18
+ if (options.jestConfig && tree.exists(options.jestConfig)) {
19
+ targetsWithJest.add(targetName);
20
+ // if the default root preset exists or if the project doesn't have a 'preset' configured
21
+ // -> update snapshot config
22
+ if (!rootPreset || !hasPresetConfigured(tree, options.jestConfig)) {
23
+ addSnapshotOptionsToConfig(tree, options.jestConfig, `From within the project directory, run "nx test --update-snapshot"`);
24
+ }
25
+ updateTsJestOptions(tree, options.jestConfig);
26
+ updateNgJestOptions(tree, options.jestConfig);
27
+ }
28
+ });
29
+ if (rootPreset && tree.exists(rootPreset)) {
30
+ const cmd = `"nx affected --targets=${Array.from(targetsWithJest).join(',')} --update-snapshot"`;
31
+ addSnapshotOptionsToConfig(tree, rootPreset, cmd);
32
+ updateTsJestOptions(tree, rootPreset);
33
+ updateNgJestOptions(tree, rootPreset);
34
+ }
35
+ yield (0, devkit_1.formatFiles)(tree);
36
+ devkit_1.logger.info((0, devkit_1.stripIndents) `NX Jest Snapshot format changed in v29.
37
+ By default Nx kept the older style to prevent breaking of existing tests with snapshots.
38
+ It's recommend you update to the latest format.
39
+ You can do this in your project's jest config file.
40
+ Remove the snapshotFormat property and re-run tests with the --update-snapshot flag.
41
+ More info: https://jestjs.io/docs/upgrading-to-jest29#snapshot-format`);
42
+ });
43
+ }
44
+ exports.updateConfigsJest29 = updateConfigsJest29;
45
+ function addSnapshotOptionsToConfig(tree, configPath, updateSnapshotExample) {
46
+ const config = tree.read(configPath, 'utf-8');
47
+ const hasSnapshotOptions = tsquery_1.tsquery.query(config, `${ast_utils_1.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression PropertyAssignment:has(Identifier[name="snapshotFormat"])`);
48
+ if (hasSnapshotOptions.length > 0) {
49
+ return;
50
+ }
51
+ const updatedConfig = tsquery_1.tsquery.replace(config, `${ast_utils_1.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression`, (node) => {
52
+ return `{
53
+ ${node.properties.map((p) => getNodeWithComments(config, p)).join(',\n')},
54
+ /* TODO: Update to latest Jest snapshotFormat
55
+ * By default Nx has kept the older style of Jest Snapshot formats
56
+ * to prevent breaking of any existing tests with snapshots.
57
+ * It's recommend you update to the latest format.
58
+ * You can do this by removing snapshotFormat property
59
+ * and running tests with --update-snapshot flag.
60
+ * Example: ${updateSnapshotExample}
61
+ * More info: https://jestjs.io/docs/upgrading-to-jest29#snapshot-format
62
+ */
63
+ snapshotFormat: { escapeString: true, printBasicPrototype: true }
64
+ }`;
65
+ }, { visitAllChildren: false });
66
+ tree.write(configPath, updatedConfig);
67
+ }
68
+ function hasPresetConfigured(tree, configPath) {
69
+ var _a;
70
+ const contents = tree.read(configPath, 'utf-8');
71
+ return (((_a = tsquery_1.tsquery.query(contents, `${ast_utils_1.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression PropertyAssignment:has(Identifier[name="preset"])`)) === null || _a === void 0 ? void 0 : _a.length) > 0);
72
+ }
73
+ function updateTsJestOptions(tree, configPath) {
74
+ // query for the globals property, if they don't have one then there's nothing to modify.
75
+ const contents = tree.read(configPath, 'utf-8');
76
+ let tsJestGlobalsConfig;
77
+ const noTsJestGlobals = tsquery_1.tsquery.replace(contents, `${ast_utils_1.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression PropertyAssignment:has(Identifier[name="globals"])`, (node) => {
78
+ if (tsJestGlobalsConfig) {
79
+ devkit_1.logger.warn((0, devkit_1.stripIndents) `Found more than one "globals" object in the jest config, ${configPath}
80
+ Will use the first one`);
81
+ return;
82
+ }
83
+ tsJestGlobalsConfig = getGlobalTsJestConfig(node);
84
+ return getGlobalConfigWithoutTsJest(node);
85
+ });
86
+ if (!tsJestGlobalsConfig) {
87
+ return;
88
+ }
89
+ const updatedTsJestTransformer = tsquery_1.tsquery.replace(noTsJestGlobals, `${ast_utils_1.TS_QUERY_JEST_CONFIG_PREFIX}> ObjectLiteralExpression PropertyAssignment:has(Identifier[name="transform"]) PropertyAssignment > :has(StringLiteral[value="ts-jest"], StringLiteral[value="jest-preset-angular"])`, (node) => {
90
+ return `[${node.getText()}, ${tsJestGlobalsConfig}]`;
91
+ });
92
+ tree.write(configPath, updatedTsJestTransformer);
93
+ }
94
+ function updateNgJestOptions(tree, configPath) {
95
+ const contents = tree.read(configPath, 'utf-8');
96
+ let ngJestTeardownConfig;
97
+ const noTeardownConfig = tsquery_1.tsquery.replace(contents, 'BinaryExpression:has(PropertyAccessExpression:has(Identifier[name=ngJest])) PropertyAssignment:has(Identifier[name=teardown])', (node) => {
98
+ ngJestTeardownConfig = node.initializer.getText();
99
+ return ' ';
100
+ });
101
+ if (!ngJestTeardownConfig) {
102
+ return;
103
+ }
104
+ let maybeUpdatedTestEnvOpts = tsquery_1.tsquery.replace(noTeardownConfig, `${ast_utils_1.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression PropertyAssignment:has(Identifier[name="testEnvironmentOptions"]) ObjectLiteralExpression`, (node) => {
105
+ return `{
106
+ ${node.properties
107
+ .map((p) => getNodeWithComments(noTeardownConfig, p))
108
+ .join(',\n')},
109
+ teardown: ${ngJestTeardownConfig}
110
+ }`;
111
+ });
112
+ if (maybeUpdatedTestEnvOpts !== noTeardownConfig) {
113
+ tree.write(configPath, maybeUpdatedTestEnvOpts);
114
+ return;
115
+ }
116
+ // didn't find existing testEnvironmentOptions, so add the new property
117
+ const updatedConfig = tsquery_1.tsquery.replace(maybeUpdatedTestEnvOpts, `${ast_utils_1.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression`, (node) => {
118
+ return `{
119
+ ${node.properties
120
+ .map((p) => getNodeWithComments(maybeUpdatedTestEnvOpts, p))
121
+ .join(',\n')},
122
+ testEnvironmentOptions: { teardown: ${ngJestTeardownConfig} },
123
+ }`;
124
+ }, { visitAllChildren: false });
125
+ tree.write(configPath, updatedConfig);
126
+ }
127
+ function getGlobalTsJestConfig(node) {
128
+ var _a;
129
+ const globalObject = node.initializer;
130
+ const foundConfig = globalObject.properties.find((p) => ts.isPropertyAssignment(p) && p.name.getText().includes('ts-jest'));
131
+ return ((_a = foundConfig === null || foundConfig === void 0 ? void 0 : foundConfig.initializer) === null || _a === void 0 ? void 0 : _a.getText()) || '';
132
+ }
133
+ function getGlobalConfigWithoutTsJest(node) {
134
+ var _a;
135
+ const globalObject = node === null || node === void 0 ? void 0 : node.initializer;
136
+ const withoutTsJest = (_a = globalObject === null || globalObject === void 0 ? void 0 : globalObject.properties) === null || _a === void 0 ? void 0 : _a.filter((p) => {
137
+ return !(ts.isPropertyAssignment(p) && p.name.getText().includes('ts-jest'));
138
+ });
139
+ const globalConfigs = withoutTsJest.map((c) => c.getText()).join(',\n');
140
+ return `globals: { ${globalConfigs} }`;
141
+ }
142
+ function getNodeWithComments(fullText, node) {
143
+ const commentRanges = ts.getLeadingCommentRanges(fullText, node.getFullStart());
144
+ if ((commentRanges === null || commentRanges === void 0 ? void 0 : commentRanges.length) > 0) {
145
+ const withComments = `${commentRanges
146
+ .map((r) => fullText.slice(r.pos, r.end))
147
+ .join('\n')}\n${node.getText()}`;
148
+ return withComments;
149
+ }
150
+ return node.getText();
151
+ }
152
+ exports.default = updateConfigsJest29;
153
+ //# sourceMappingURL=update-configs-jest-29.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-configs-jest-29.js","sourceRoot":"","sources":["../../../../../../packages/jest/src/migrations/update-15-8-0/update-configs-jest-29.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function updateTestsJest29(tree: Tree): Promise<void>;
3
+ export declare function updateJestMockTypes(tree: Tree, filePath: string): void;
4
+ export declare function updateJestMocked(tree: Tree, filePath: string): void;
5
+ export default updateTestsJest29;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateJestMocked = exports.updateJestMockTypes = exports.updateTestsJest29 = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
7
+ const tsquery_1 = require("@phenomnomnominal/tsquery");
8
+ const ast_utils_1 = require("../../utils/ast-utils");
9
+ function updateTestsJest29(tree) {
10
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
11
+ const graph = yield (0, devkit_1.createProjectGraphAsync)();
12
+ (0, executor_options_utils_1.forEachExecutorOptionsInGraph)(graph, '@nrwl/jest:jest', (options, projectName) => {
13
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, projectName);
14
+ (0, devkit_1.visitNotIgnoredFiles)(tree, projectConfig.sourceRoot || projectConfig.root, (file) => {
15
+ if (!ast_utils_1.TEST_FILE_PATTERN.test(file)) {
16
+ return;
17
+ }
18
+ updateJestMockTypes(tree, file);
19
+ updateJestMocked(tree, file);
20
+ });
21
+ });
22
+ yield (0, devkit_1.formatFiles)(tree);
23
+ });
24
+ }
25
+ exports.updateTestsJest29 = updateTestsJest29;
26
+ function updateJestMockTypes(tree, filePath) {
27
+ const contents = tree.read(filePath, 'utf-8');
28
+ const updatedContent = tsquery_1.tsquery.replace(contents, ':matches(ImportDeclaration, VariableStatement):has(Identifier[name="MaybeMockedDeep"], Identifier[name="MaybeMocked"]):has(StringLiteral[value="jest-mock"])', (node) => {
29
+ const text = node.getText();
30
+ return (text
31
+ // MaybeMockedDeep and MaybeMocked now are exported as Mocked and MockedShallow
32
+ .replace('MaybeMockedDeep', 'Mocked')
33
+ .replace('MaybeMocked', 'MockedShallow'));
34
+ });
35
+ tree.write(filePath, updatedContent);
36
+ }
37
+ exports.updateJestMockTypes = updateJestMockTypes;
38
+ function updateJestMocked(tree, filePath) {
39
+ const contents = tree.read(filePath, 'utf-8');
40
+ const jestGlobalNodes = tsquery_1.tsquery.query(contents, ':matches(ImportDeclaration, VariableStatement):has(Identifier[name="jest"]):has(StringLiteral[value="@jest/globals"])');
41
+ // this only applies if using jest from @jest/globals
42
+ if (jestGlobalNodes.length === 0) {
43
+ return;
44
+ }
45
+ const updatedJestMockTypes = tsquery_1.tsquery.replace(contents, 'CallExpression:has(Identifier[name="jest"]):has(Identifier[name="mocked"])', (node) => {
46
+ if (node.arguments.length === 2 &&
47
+ node.getText().startsWith('jest.mocked(')) {
48
+ const text = node.getText();
49
+ // jest.mocked(someObject, true); => jest.mocked(someObject);
50
+ if (node.arguments[1].getText() === 'true') {
51
+ return text.replace(/,\s*true/g, '');
52
+ }
53
+ // jest.mocked(someObject, false); => jest.mocked(someObject, {shallow: true});
54
+ // opt into the new behavior unless explicitly opting out
55
+ if (node.arguments[1].getText() === 'false') {
56
+ return text.replace('false', '{shallow: true}');
57
+ }
58
+ }
59
+ });
60
+ tree.write(filePath, updatedJestMockTypes);
61
+ }
62
+ exports.updateJestMocked = updateJestMocked;
63
+ exports.default = updateTestsJest29;
64
+ //# sourceMappingURL=update-tests-jest-29.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-tests-jest-29.js","sourceRoot":"","sources":["../../../../../../packages/jest/src/migrations/update-15-8-0/update-tests-jest-29.ts"],"names":[],"mappings":";;;;AAAA,uCAMoB;AACpB,6FAAiG;AACjG,uDAAoD;AAOpD,qDAA0D;AAE1D,SAAsB,iBAAiB,CAAC,IAAU;;QAChD,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAuB,GAAE,CAAC;QAC9C,IAAA,sDAA6B,EAC3B,KAAK,EACL,iBAAiB,EACjB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE;YACvB,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAClE,IAAA,6BAAoB,EAClB,IAAI,EACJ,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,IAAI,EAC9C,CAAC,IAAI,EAAE,EAAE;gBACP,IAAI,CAAC,6BAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACjC,OAAO;iBACR;gBACD,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/B,CAAC,CACF,CAAC;QACJ,CAAC,CACF,CAAC;QACF,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AArBD,8CAqBC;AAED,SAAgB,mBAAmB,CAAC,IAAU,EAAE,QAAgB;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,iBAAO,CAAC,OAAO,CACpC,QAAQ,EACR,8JAA8J,EAC9J,CAAC,IAA2C,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,CACL,IAAI;YACF,+EAA+E;aAC9E,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC;aACpC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAC3C,CAAC;IACJ,CAAC,CACF,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvC,CAAC;AAhBD,kDAgBC;AAED,SAAgB,gBAAgB,CAAC,IAAU,EAAE,QAAgB;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,iBAAO,CAAC,KAAK,CACnC,QAAQ,EACR,uHAAuH,CACxH,CAAC;IAEF,qDAAqD;IACrD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO;KACR;IAED,MAAM,oBAAoB,GAAG,iBAAO,CAAC,OAAO,CAC1C,QAAQ,EACR,4EAA4E,EAC5E,CAAC,IAAoB,EAAE,EAAE;QACvB,IACE,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EACzC;YACA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,6DAA6D;YAC7D,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE;gBAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;aACtC;YACD,+EAA+E;YAC/E,yDAAyD;YACzD,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;gBAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;aACjD;SACF;IACH,CAAC,CACF,CAAC;IAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7C,CAAC;AAnCD,4CAmCC;AAED,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function replacePackage(tree: Tree): Promise<void>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const devkit_1 = require("@nx/devkit");
5
+ const replace_package_1 = require("@nx/devkit/src/utils/replace-package");
6
+ function replacePackage(tree) {
7
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
8
+ yield (0, replace_package_1.replaceNrwlPackageWithNxPackage)(tree, '@nrwl/jest', '@nx/jest');
9
+ yield (0, devkit_1.formatFiles)(tree);
10
+ });
11
+ }
12
+ exports.default = replacePackage;
13
+ //# sourceMappingURL=update-16-0-0-add-nx-packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-16-0-0-add-nx-packages.js","sourceRoot":"","sources":["../../../../../../packages/jest/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAC/C,0EAAuF;AAEvF,SAA8B,cAAc,CAAC,IAAU;;QACrD,MAAM,IAAA,iDAA+B,EAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAEtE,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAJD,iCAIC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * match testing file based on their name file
3
+ */
4
+ export declare const TEST_FILE_PATTERN: RegExp;
5
+ /**
6
+ * Match right hand side of `export default` or `module.exports` = statements
7
+ */
8
+ export declare const TS_QUERY_JEST_CONFIG_PREFIX = ":matches(ExportAssignment, BinaryExpression:has(Identifier[name=\"module\"]):has(Identifier[name=\"exports\"]))";
9
+ export declare function addTransformerToConfig(configContents: string, transformer: string): string;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addTransformerToConfig = exports.TS_QUERY_JEST_CONFIG_PREFIX = exports.TEST_FILE_PATTERN = void 0;
4
+ const tsquery_1 = require("@phenomnomnominal/tsquery");
5
+ /**
6
+ * match testing file based on their name file
7
+ */
8
+ exports.TEST_FILE_PATTERN = new RegExp('.*(spec|test).[jt]sx?$');
9
+ /**
10
+ * Match right hand side of `export default` or `module.exports` = statements
11
+ */
12
+ exports.TS_QUERY_JEST_CONFIG_PREFIX = ':matches(ExportAssignment, BinaryExpression:has(Identifier[name="module"]):has(Identifier[name="exports"]))';
13
+ function addTransformerToConfig(configContents, transformer) {
14
+ // TODO make sure there isn't an existing matching transformer regex
15
+ const transformerConfig = tsquery_1.tsquery.query(configContents, `${exports.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression PropertyAssignment:has(Identifier[name="transform"])`);
16
+ if (transformerConfig.length === 0) {
17
+ return tsquery_1.tsquery.replace(configContents, `${exports.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression`, (node) => {
18
+ return `{
19
+ ${node.properties.map((p) => p.getText()).join(',\n')},
20
+ transform: { ${transformer} }
21
+ }`;
22
+ });
23
+ }
24
+ return tsquery_1.tsquery.replace(configContents, `${exports.TS_QUERY_JEST_CONFIG_PREFIX} > ObjectLiteralExpression PropertyAssignment:has(Identifier[name="transform"])`, (node) => {
25
+ const transformObject = node.initializer;
26
+ const transformProperties = transformObject.properties
27
+ .map((p) => p.getText())
28
+ .join(',\n');
29
+ return `transform: { ${transformer}, ${transformProperties} }`;
30
+ });
31
+ }
32
+ exports.addTransformerToConfig = addTransformerToConfig;
33
+ //# sourceMappingURL=ast-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../../../../packages/jest/src/utils/ast-utils.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAGpD;;GAEG;AACU,QAAA,iBAAiB,GAAG,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAEtE;;GAEG;AACU,QAAA,2BAA2B,GACtC,6GAA6G,CAAC;AAEhH,SAAgB,sBAAsB,CACpC,cAAsB,EACtB,WAAmB;IAEnB,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,iBAAO,CAAC,KAAK,CACrC,cAAc,EACd,GAAG,mCAA2B,iFAAiF,CAChH,CAAC;IACF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,OAAO,iBAAO,CAAC,OAAO,CACpB,cAAc,EACd,GAAG,mCAA2B,4BAA4B,EAC1D,CAAC,IAA6B,EAAE,EAAE;YAChC,OAAO;EACb,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;eACtC,WAAW;EACxB,CAAC;QACG,CAAC,CACF,CAAC;KACH;IACD,OAAO,iBAAO,CAAC,OAAO,CACpB,cAAc,EACd,GAAG,mCAA2B,iFAAiF,EAC/G,CAAC,IAAwB,EAAE,EAAE;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,WAAsC,CAAC;QACpE,MAAM,mBAAmB,GAAG,eAAe,CAAC,UAAU;aACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACvB,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,gBAAgB,WAAW,KAAK,mBAAmB,IAAI,CAAC;IACjE,CAAC,CACF,CAAC;AACJ,CAAC;AAhCD,wDAgCC"}
@@ -0,0 +1,3 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function findRootJestConfig(tree: Tree): string | null;
3
+ export declare function findRootJestPreset(tree: Tree): string | null;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findRootJestPreset = exports.findRootJestConfig = void 0;
4
+ function findRootJestConfig(tree) {
5
+ if (tree.exists('jest.config.js')) {
6
+ return 'jest.config.js';
7
+ }
8
+ if (tree.exists('jest.config.ts')) {
9
+ return 'jest.config.ts';
10
+ }
11
+ return null;
12
+ }
13
+ exports.findRootJestConfig = findRootJestConfig;
14
+ function findRootJestPreset(tree) {
15
+ if (tree.exists('jest.preset.js')) {
16
+ return 'jest.preset.js';
17
+ }
18
+ return null;
19
+ }
20
+ exports.findRootJestPreset = findRootJestPreset;
21
+ //# sourceMappingURL=find-root-jest-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-root-jest-files.js","sourceRoot":"","sources":["../../../../../../packages/jest/src/utils/config/find-root-jest-files.ts"],"names":[],"mappings":";;;AAEA,SAAgB,kBAAkB,CAAC,IAAU;IAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QACjC,OAAO,gBAAgB,CAAC;KACzB;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QACjC,OAAO,gBAAgB,CAAC;KACzB;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAVD,gDAUC;AAED,SAAgB,kBAAkB,CAAC,IAAU;IAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QACjC,OAAO,gBAAgB,CAAC;KACzB;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAND,gDAMC"}
@@ -0,0 +1,17 @@
1
+ import type * as ts from 'typescript';
2
+ import { Tree } from '@nx/devkit';
3
+ import { Config } from '@jest/types';
4
+ export declare function addOrUpdateProperty(tree: Tree, object: ts.ObjectLiteralExpression, properties: string[], value: unknown, path: string): any;
5
+ export declare function removeProperty(object: ts.ObjectLiteralExpression, properties: string[]): ts.PropertyAssignment | null;
6
+ /**
7
+ * Should be used to get the jest config object as AST
8
+ */
9
+ export declare function jestConfigObjectAst(fileContent: string): ts.ObjectLiteralExpression;
10
+ /**
11
+ * Returns the jest config object
12
+ * @param host
13
+ * @param path
14
+ */
15
+ export declare function jestConfigObject(host: Tree, path: string): Partial<Config.InitialOptions> & {
16
+ [index: string]: any;
17
+ };
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jestConfigObject = exports.jestConfigObjectAst = exports.removeProperty = exports.addOrUpdateProperty = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const vm_1 = require("vm");
6
+ const path_1 = require("path");
7
+ const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
8
+ let tsModule;
9
+ function makeTextToInsert(value, precedingCommaNeeded) {
10
+ return `${precedingCommaNeeded ? ',' : ''}${value}`;
11
+ }
12
+ function findPropertyAssignment(object, propertyName) {
13
+ if (!tsModule) {
14
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
15
+ }
16
+ return object.properties.find((prop) => {
17
+ if (!tsModule.isPropertyAssignment(prop)) {
18
+ return false;
19
+ }
20
+ const propNameText = prop.name.getText();
21
+ if (propNameText.match(/^["'].+["']$/g)) {
22
+ return JSON.parse(propNameText.replace(/'/g, '"')) === propertyName;
23
+ }
24
+ return propNameText === propertyName;
25
+ });
26
+ }
27
+ function addOrUpdateProperty(tree, object, properties, value, path) {
28
+ if (!tsModule) {
29
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
30
+ }
31
+ const { SyntaxKind } = tsModule;
32
+ const propertyName = properties.shift();
33
+ const propertyAssignment = findPropertyAssignment(object, propertyName);
34
+ const originalContents = tree.read(path, 'utf-8');
35
+ if (propertyAssignment) {
36
+ if (propertyAssignment.initializer.kind === SyntaxKind.StringLiteral ||
37
+ propertyAssignment.initializer.kind === SyntaxKind.NumericLiteral ||
38
+ propertyAssignment.initializer.kind === SyntaxKind.FalseKeyword ||
39
+ propertyAssignment.initializer.kind === SyntaxKind.TrueKeyword) {
40
+ const updatedContents = (0, devkit_1.applyChangesToString)(originalContents, [
41
+ {
42
+ type: devkit_1.ChangeType.Delete,
43
+ start: propertyAssignment.initializer.pos,
44
+ length: propertyAssignment.initializer.getFullText().length,
45
+ },
46
+ {
47
+ type: devkit_1.ChangeType.Insert,
48
+ index: propertyAssignment.initializer.pos,
49
+ text: value,
50
+ },
51
+ ]);
52
+ tree.write(path, updatedContents);
53
+ return;
54
+ }
55
+ if (propertyAssignment.initializer.kind === SyntaxKind.ArrayLiteralExpression) {
56
+ const arrayLiteral = propertyAssignment.initializer;
57
+ if (arrayLiteral.elements.some((element) => {
58
+ return element.getText().replace(/'/g, '"') === value;
59
+ })) {
60
+ return [];
61
+ }
62
+ if (arrayLiteral.elements.length === 0) {
63
+ const updatedContents = (0, devkit_1.applyChangesToString)(originalContents, [
64
+ {
65
+ type: devkit_1.ChangeType.Insert,
66
+ index: arrayLiteral.elements.end,
67
+ text: value,
68
+ },
69
+ ]);
70
+ tree.write(path, updatedContents);
71
+ return;
72
+ }
73
+ else {
74
+ const text = makeTextToInsert(value, arrayLiteral.elements.length !== 0 &&
75
+ !arrayLiteral.elements.hasTrailingComma);
76
+ const updatedContents = (0, devkit_1.applyChangesToString)(originalContents, [
77
+ {
78
+ type: devkit_1.ChangeType.Insert,
79
+ index: arrayLiteral.elements.end,
80
+ text,
81
+ },
82
+ ]);
83
+ tree.write(path, updatedContents);
84
+ return;
85
+ }
86
+ }
87
+ else if (propertyAssignment.initializer.kind === SyntaxKind.ObjectLiteralExpression) {
88
+ return addOrUpdateProperty(tree, propertyAssignment.initializer, properties, value, path);
89
+ }
90
+ }
91
+ else {
92
+ if (propertyName === undefined) {
93
+ throw new Error(`Please use dot delimited paths to update an existing object. Eg. object.property `);
94
+ }
95
+ const text = makeTextToInsert(`${JSON.stringify(propertyName)}: ${value}`, object.properties.length !== 0 && !object.properties.hasTrailingComma);
96
+ const updatedContents = (0, devkit_1.applyChangesToString)(originalContents, [
97
+ {
98
+ type: devkit_1.ChangeType.Insert,
99
+ index: object.properties.end,
100
+ text,
101
+ },
102
+ ]);
103
+ tree.write(path, updatedContents);
104
+ return;
105
+ }
106
+ }
107
+ exports.addOrUpdateProperty = addOrUpdateProperty;
108
+ function removeProperty(object, properties) {
109
+ if (!tsModule) {
110
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
111
+ }
112
+ const propertyName = properties.shift();
113
+ const propertyAssignment = findPropertyAssignment(object, propertyName);
114
+ if (propertyAssignment) {
115
+ if (properties.length > 0 &&
116
+ propertyAssignment.initializer.kind ===
117
+ tsModule.SyntaxKind.ObjectLiteralExpression) {
118
+ return removeProperty(propertyAssignment.initializer, properties);
119
+ }
120
+ return propertyAssignment;
121
+ }
122
+ else {
123
+ return null;
124
+ }
125
+ }
126
+ exports.removeProperty = removeProperty;
127
+ function isModuleExport(node) {
128
+ var _a, _b;
129
+ if (!tsModule) {
130
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
131
+ }
132
+ return (tsModule.isExpressionStatement(node) &&
133
+ ((_a = node.expression) === null || _a === void 0 ? void 0 : _a.kind) &&
134
+ tsModule.isBinaryExpression(node.expression) &&
135
+ node.expression.left.getText() === 'module.exports' &&
136
+ ((_b = node.expression.operatorToken) === null || _b === void 0 ? void 0 : _b.kind) === tsModule.SyntaxKind.EqualsToken);
137
+ }
138
+ function isDefaultExport(node) {
139
+ var _a;
140
+ if (!tsModule) {
141
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
142
+ }
143
+ return (tsModule.isExportAssignment(node) &&
144
+ ((_a = node.expression) === null || _a === void 0 ? void 0 : _a.kind) &&
145
+ tsModule.isObjectLiteralExpression(node.expression) &&
146
+ node.getText().startsWith('export default'));
147
+ }
148
+ /**
149
+ * Should be used to get the jest config object as AST
150
+ */
151
+ function jestConfigObjectAst(fileContent) {
152
+ if (!tsModule) {
153
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
154
+ }
155
+ const sourceFile = tsModule.createSourceFile('jest.config.ts', fileContent, tsModule.ScriptTarget.Latest, true);
156
+ const exportStatement = sourceFile.statements.find((statement) => isModuleExport(statement) || isDefaultExport(statement));
157
+ let ast;
158
+ if (tsModule.isExpressionStatement(exportStatement)) {
159
+ const moduleExports = exportStatement.expression;
160
+ if (!moduleExports) {
161
+ throw new Error(`
162
+ The provided jest config file does not have the expected 'module.exports' expression.
163
+ See https://jestjs.io/docs/en/configuration for more details.`);
164
+ }
165
+ ast = moduleExports.right;
166
+ }
167
+ else if (tsModule.isExportAssignment(exportStatement)) {
168
+ const defaultExport = exportStatement.expression;
169
+ if (!defaultExport) {
170
+ throw new Error(`
171
+ The provided jest config file does not have the expected 'export default' expression.
172
+ See https://jestjs.io/docs/en/configuration for more details.`);
173
+ }
174
+ ast = defaultExport;
175
+ }
176
+ if (!ast) {
177
+ throw new Error(`
178
+ The provided jest config file does not have the expected 'module.exports' or 'export default' expression.
179
+ See https://jestjs.io/docs/en/configuration for more details.`);
180
+ }
181
+ if (!tsModule.isObjectLiteralExpression(ast)) {
182
+ throw new Error(`The 'export default' or 'module.exports' expression is not an object literal.`);
183
+ }
184
+ return ast;
185
+ }
186
+ exports.jestConfigObjectAst = jestConfigObjectAst;
187
+ /**
188
+ * Returns the jest config object
189
+ * @param host
190
+ * @param path
191
+ */
192
+ function jestConfigObject(host, path) {
193
+ const __filename = (0, path_1.join)(host.root, path);
194
+ const contents = host.read(path, 'utf-8');
195
+ let module = { exports: {} };
196
+ // transform the export default syntax to module.exports
197
+ // this will work for the default config, but will break if there are any other ts syntax
198
+ // TODO(caleb): use the AST to transform back to the module.exports syntax so this will keep working
199
+ // or deprecate and make a new method for getting the jest config object
200
+ const forcedModuleSyntax = contents.replace(/export\s+default/, 'module.exports =');
201
+ // Run the contents of the file with some stuff from this current context
202
+ // The module.exports will be mutated by the contents of the file...
203
+ (0, vm_1.runInContext)(forcedModuleSyntax, (0, vm_1.createContext)({
204
+ module,
205
+ require,
206
+ process,
207
+ __filename,
208
+ __dirname: (0, path_1.dirname)(__filename),
209
+ }));
210
+ // TODO: jest actually allows defining configs with async functions... we should be able to read that...
211
+ return module.exports;
212
+ }
213
+ exports.jestConfigObject = jestConfigObject;
214
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../../../packages/jest/src/utils/config/functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Get a list of paths to all the jest config files
3
+ * using the Nx Jest executor.
4
+ *
5
+ * This is used to configure Jest multi-project support.
6
+ *
7
+ * To add a project not using the Nx Jest executor:
8
+ * export default {
9
+ * projects: [...getJestProjects(), '<rootDir>/path/to/jest.config.ts'];
10
+ * }
11
+ *
12
+ **/
13
+ export declare function getJestProjects(): string[];
14
+ /**
15
+ * a list of nested projects that have jest configured
16
+ * to be used in the testPathIgnorePatterns property of a given jest config
17
+ * https://jestjs.io/docs/configuration#testpathignorepatterns-arraystring
18
+ * */
19
+ export declare function getNestedJestProjects(): string[];