@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.
- package/CHANGELOG.md +8 -0
- package/LICENSE +22 -0
- package/README.md +63 -0
- package/executors.json +17 -0
- package/generators.json +34 -0
- package/index.d.ts +5 -0
- package/index.js +16 -0
- package/index.js.map +1 -0
- package/migrations.json +275 -0
- package/package.json +57 -0
- package/plugins/resolver.d.ts +1 -0
- package/plugins/resolver.js +56 -0
- package/plugins/resolver.js.map +1 -0
- package/preset/index.d.ts +2 -0
- package/preset/index.js +5 -0
- package/preset/index.js.map +1 -0
- package/preset/jest-preset.d.ts +2 -0
- package/preset/jest-preset.js +34 -0
- package/preset/jest-preset.js.map +1 -0
- package/src/executors/jest/compat.d.ts +2 -0
- package/src/executors/jest/compat.js +6 -0
- package/src/executors/jest/compat.js.map +1 -0
- package/src/executors/jest/jest.impl.d.ts +11 -0
- package/src/executors/jest/jest.impl.js +153 -0
- package/src/executors/jest/jest.impl.js.map +1 -0
- package/src/executors/jest/schema.d.ts +42 -0
- package/src/executors/jest/schema.json +218 -0
- package/src/executors/jest/summary.d.ts +7 -0
- package/src/executors/jest/summary.js +155 -0
- package/src/executors/jest/summary.js.map +1 -0
- package/src/generators/init/init.d.ts +5 -0
- package/src/generators/init/init.js +169 -0
- package/src/generators/init/init.js.map +1 -0
- package/src/generators/init/schema.d.ts +11 -0
- package/src/generators/init/schema.json +42 -0
- package/src/generators/jest-project/files/jest.config.ts__tmpl__ +16 -0
- package/src/generators/jest-project/files/src/test-setup.ts__tmpl__ +0 -0
- package/src/generators/jest-project/files/tsconfig.spec.json__tmpl__ +21 -0
- package/src/generators/jest-project/files-angular/jest.config.ts__tmpl__ +27 -0
- package/src/generators/jest-project/files-angular/src/test-setup.ts__tmpl__ +1 -0
- package/src/generators/jest-project/files-angular/tsconfig.spec.json__tmpl__ +22 -0
- package/src/generators/jest-project/jest-project.d.ts +4 -0
- package/src/generators/jest-project/jest-project.js +55 -0
- package/src/generators/jest-project/jest-project.js.map +1 -0
- package/src/generators/jest-project/lib/check-for-test-target.d.ts +3 -0
- package/src/generators/jest-project/lib/check-for-test-target.js +13 -0
- package/src/generators/jest-project/lib/check-for-test-target.js.map +1 -0
- package/src/generators/jest-project/lib/create-files.d.ts +3 -0
- package/src/generators/jest-project/lib/create-files.js +44 -0
- package/src/generators/jest-project/lib/create-files.js.map +1 -0
- package/src/generators/jest-project/lib/update-jestconfig.d.ts +3 -0
- package/src/generators/jest-project/lib/update-jestconfig.js +22 -0
- package/src/generators/jest-project/lib/update-jestconfig.js.map +1 -0
- package/src/generators/jest-project/lib/update-tsconfig.d.ts +3 -0
- package/src/generators/jest-project/lib/update-tsconfig.js +22 -0
- package/src/generators/jest-project/lib/update-tsconfig.js.map +1 -0
- package/src/generators/jest-project/lib/update-workspace.d.ts +3 -0
- package/src/generators/jest-project/lib/update-workspace.js +37 -0
- package/src/generators/jest-project/lib/update-workspace.js.map +1 -0
- package/src/generators/jest-project/schema.d.ts +23 -0
- package/src/generators/jest-project/schema.json +80 -0
- package/src/migrations/update-12-1-2/update-jest-preset-angular.d.ts +1 -0
- package/src/migrations/update-12-1-2/update-jest-preset-angular.js +55 -0
- package/src/migrations/update-12-1-2/update-jest-preset-angular.js.map +1 -0
- package/src/migrations/update-12-1-2/update-ts-jest.d.ts +2 -0
- package/src/migrations/update-12-1-2/update-ts-jest.js +36 -0
- package/src/migrations/update-12-1-2/update-ts-jest.js.map +1 -0
- package/src/migrations/update-12-4-0/add-test-environment-for-node.d.ts +2 -0
- package/src/migrations/update-12-4-0/add-test-environment-for-node.js +38 -0
- package/src/migrations/update-12-4-0/add-test-environment-for-node.js.map +1 -0
- package/src/migrations/update-12-4-0/update-jest-preset-angular.d.ts +25 -0
- package/src/migrations/update-12-4-0/update-jest-preset-angular.js +89 -0
- package/src/migrations/update-12-4-0/update-jest-preset-angular.js.map +1 -0
- package/src/migrations/update-12-6-0/update-base-jest-config.d.ts +2 -0
- package/src/migrations/update-12-6-0/update-base-jest-config.js +43 -0
- package/src/migrations/update-12-6-0/update-base-jest-config.js.map +1 -0
- package/src/migrations/update-13-1-2/update-tsconfigs-for-tests.d.ts +2 -0
- package/src/migrations/update-13-1-2/update-tsconfigs-for-tests.js +60 -0
- package/src/migrations/update-13-1-2/update-tsconfigs-for-tests.js.map +1 -0
- package/src/migrations/update-13-4-4/add-missing-root-babel-config.d.ts +2 -0
- package/src/migrations/update-13-4-4/add-missing-root-babel-config.js +43 -0
- package/src/migrations/update-13-4-4/add-missing-root-babel-config.js.map +1 -0
- package/src/migrations/update-14-0-0/update-jest-config-ext.d.ts +3 -0
- package/src/migrations/update-14-0-0/update-jest-config-ext.js +115 -0
- package/src/migrations/update-14-0-0/update-jest-config-ext.js.map +1 -0
- package/src/migrations/update-14-1-5/update-exports-jest-config.d.ts +7 -0
- package/src/migrations/update-14-1-5/update-exports-jest-config.js +66 -0
- package/src/migrations/update-14-1-5/update-exports-jest-config.js.map +1 -0
- package/src/migrations/update-14-6-0/update-configs-jest-28.d.ts +5 -0
- package/src/migrations/update-14-6-0/update-configs-jest-28.js +82 -0
- package/src/migrations/update-14-6-0/update-configs-jest-28.js.map +1 -0
- package/src/migrations/update-14-6-0/update-tests-jest-28.d.ts +24 -0
- package/src/migrations/update-14-6-0/update-tests-jest-28.js +158 -0
- package/src/migrations/update-14-6-0/update-tests-jest-28.js.map +1 -0
- package/src/migrations/update-15-0-0/add-jest-inputs.d.ts +2 -0
- package/src/migrations/update-15-0-0/add-jest-inputs.js +47 -0
- package/src/migrations/update-15-0-0/add-jest-inputs.js.map +1 -0
- package/src/migrations/update-15-8-0/update-configs-jest-29.d.ts +3 -0
- package/src/migrations/update-15-8-0/update-configs-jest-29.js +153 -0
- package/src/migrations/update-15-8-0/update-configs-jest-29.js.map +1 -0
- package/src/migrations/update-15-8-0/update-tests-jest-29.d.ts +5 -0
- package/src/migrations/update-15-8-0/update-tests-jest-29.js +64 -0
- package/src/migrations/update-15-8-0/update-tests-jest-29.js.map +1 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +13 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js.map +1 -0
- package/src/utils/ast-utils.d.ts +9 -0
- package/src/utils/ast-utils.js +33 -0
- package/src/utils/ast-utils.js.map +1 -0
- package/src/utils/config/find-root-jest-files.d.ts +3 -0
- package/src/utils/config/find-root-jest-files.js +21 -0
- package/src/utils/config/find-root-jest-files.js.map +1 -0
- package/src/utils/config/functions.d.ts +17 -0
- package/src/utils/config/functions.js +214 -0
- package/src/utils/config/functions.js.map +1 -0
- package/src/utils/config/get-jest-projects.d.ts +19 -0
- package/src/utils/config/get-jest-projects.js +64 -0
- package/src/utils/config/get-jest-projects.js.map +1 -0
- package/src/utils/config/update-config.d.ts +20 -0
- package/src/utils/config/update-config.js +84 -0
- package/src/utils/config/update-config.js.map +1 -0
- package/src/utils/versions.d.ts +9 -0
- package/src/utils/versions.js +13 -0
- 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":";;;;AAAA,uCAaoB;AACpB,+BAA0D;AAE1D,kFAA6E;AAC7E,mDAU8B;AAK9B,MAAM,cAAc,GAAG;IACrB,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,KAAK;IACT,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,OAAO;CAChB,CAAC;AAEX,SAAS,oBAAoB,CAAC,IAAU,EAAE,IAAa;IACrD,MAAM,QAAQ,GAAG,IAAI;QACnB,CAAC,CAAC,IAAA,qBAAY,EAAA;;;;;OAKX;QACH,CAAC,CAAC,IAAA,qBAAY,EAAA;;;;;OAKX,CAAC;IACN,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU,EAAE,OAAyB;;IAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAClC,4BAA4B;QAC5B,IAAI,CAAC,KAAK,CACR,gBAAgB,EAChB;;;uCAGiC,CAClC,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,CAAC;KACrB;IACD,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,yEAAyE;QACzE,qCAAqC;QACrC,OAAO;KACR;IACD,MAAM,YAAY,GAAG,IAAA,yCAAkB,EAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,YAAY,EAAE;QACjB,iEAAiE;QACjE,wBAAwB;QACxB,4EAA4E;QAC5E,yEAAyE;QACzE,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO;KACR;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QAC7B,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CACnC,CAAC,WAAW,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,0CAAE,IAAI,MAAK,GAAG,CAAA,EAAA,CACzD,CAAC;QACF,wCAAwC;QACxC,6CAA6C;QAC7C,IAAI,WAAW,EAAE;YACf,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CACpE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,MAAK,iBAAiB,CACzC,CAAC;YACF,MAAM,eAAe,GAAG,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,0CAAE,UAAU,MAAK,YAAY,CAAC;YACzE,uEAAuE;YACvE,IAAI,eAAe,EAAE;gBACnB,MAAM,aAAa,GAAG,mBAAmB,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEpE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;gBACzC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC;gBAC9C,IAAA,mCAA0B,EAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;aAClE;YACD,4EAA4E;YAC5E,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;SACxC;KACF;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAU;;;IAC/B,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,iBAAiB,GAAG,MAAA,MAAM,CAAC,WAAW,0CAAE,UAAU,CAAC;IACzD,IAAI,iBAAiB,EAAE;QACrB,2DAA2D;QAC3D,iBAAiB,CAAC,IAAI;QACpB,+DAA+D;QAC/D,uDAAuD;QACvD,4BAA4B;QAC5B,mCAAmC;QACnC,2BAA2B;QAC3B,kCAAkC,CACnC,CAAC;QACF,iBAAiB;QACjB,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACxE;IAED,0FAA0F;IAC1F,MAAA,MAAM,CAAC,cAAc,oCAArB,MAAM,CAAC,cAAc,GAAK,EAAE,EAAC;IAC7B,YAAA,MAAM,CAAC,cAAc,EAAC,IAAI,uCAAJ,IAAI,GAAK,EAAE,EAAC;IAClC,YAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAC,MAAM,uCAAN,MAAM,GAAK;QACpC,SAAS;QACT,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;KAC/C,EAAC;IACF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAEzE,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAU,EAAE,OAAyB;IAC/D,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,uBAAY;KACpB,CAAC;IACF,MAAM,OAAO,GAAG;QACd,YAAY,EAAE,oBAAS;QACvB,IAAI,EAAE,sBAAW;QAEjB,gDAAgD;QAChD,iDAAiD;QACjD,kDAAkD;QAClD,SAAS,EAAE,wBAAa;KACzB,CAAC;IAEF,IAAI,OAAO,CAAC,eAAe,KAAK,MAAM,EAAE;QACtC,OAAO,CAAC,oBAAoB,OAAO,CAAC,eAAe,EAAE,CAAC,GAAG,sBAAW,CAAC;KACtE;IAED,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;QACf,OAAO,CAAC,SAAS,CAAC,GAAG,wBAAa,CAAC;QACnC,OAAO,CAAC,aAAa,CAAC,GAAG,2BAAgB,CAAC;QAC1C,OAAO,CAAC,aAAa,CAAC,GAAG,2BAAgB,CAAC;KAC3C;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;QACrD,OAAO,CAAC,YAAY,CAAC,GAAG,2BAAgB,CAAC;QACzC,6EAA6E;QAC7E,OAAO,CAAC,UAAU,CAAC,GAAG,oBAAS,CAAC;KACjC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;QACrC,OAAO,CAAC,WAAW,CAAC,GAAG,yBAAc,CAAC;KACvC;IAED,OAAO,IAAA,qCAA4B,EAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU;IAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE;QAC3C,OAAO;KACR;IAED,IAAA,mBAAU,EAAC,IAAI,EAAE,yBAAyB,EAAE,CAAC,IAAI,EAAE,EAAE;QACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,8BAA8B,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAsB,iBAAiB,CACrC,IAAU,EACV,MAAsB;;QAEtB,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,GAAwB,EAAE,CAAC;QAEtC,KAAK,CAAC,IAAI,CACR,MAAM,IAAA,kBAAe,EAAC,IAAI,kCACrB,MAAM,KACT,UAAU,EAAE,IAAI,IAChB,CACH,CAAC;QAEF,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEhC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC5B,IAAA,0CAAiC,EAAC,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzB;QAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAA,yBAAgB,EAAC,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC;CAAA;AAxBD,8CAwBC;AAED,SAAS,gBAAgB,CAAC,OAAuB;IAC/C,uCACK,cAAc,GACd,OAAO,EACV;AACJ,CAAC;AAED,kBAAe,iBAAiB,CAAC;AAEpB,QAAA,iBAAiB,GAAG,IAAA,2BAAkB,EAAC,iBAAiB,CAAC,CAAC"}
|
|
@@ -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
|
+
};
|
|
File without changes
|
|
@@ -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,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,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,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,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,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
|
+
};
|