@modern-js/plugin-testing 2.0.0-beta.2 → 2.0.0-beta.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. package/CHANGELOG.md +145 -0
  2. package/dist/js/modern/base/config/index.js +29 -9
  3. package/dist/js/modern/base/config/patches/assetsModule.js +7 -7
  4. package/dist/js/modern/base/config/patches/filemock.js +4 -1
  5. package/dist/js/modern/base/config/patches/index.js +30 -7
  6. package/dist/js/modern/base/config/patches/transformer.js +13 -18
  7. package/dist/js/modern/base/config/resolver.js +11 -6
  8. package/dist/js/modern/base/config/testConfigOperator.js +29 -23
  9. package/dist/js/modern/base/config/transformer/babelTransformer.js +16 -8
  10. package/dist/js/modern/base/hook.js +10 -5
  11. package/dist/js/modern/base/index.js +14 -6
  12. package/dist/js/modern/base/runJest.js +73 -62
  13. package/dist/js/modern/base/utils.js +40 -23
  14. package/dist/js/modern/cli/bff/app.js +37 -12
  15. package/dist/js/modern/cli/bff/constant.js +4 -1
  16. package/dist/js/modern/cli/bff/index.js +95 -52
  17. package/dist/js/modern/cli/bff/mockAPI.js +79 -64
  18. package/dist/js/modern/cli/bff/setup.js +71 -34
  19. package/dist/js/modern/cli/bff/utils/index.js +31 -15
  20. package/dist/js/modern/cli/index.js +64 -30
  21. package/dist/js/modern/cli/test.js +53 -18
  22. package/dist/js/modern/constant.js +4 -1
  23. package/dist/js/modern/index.js +3 -3
  24. package/dist/js/modern/modern-app.env.d.js +0 -0
  25. package/dist/js/modern/runtime-testing/app.js +25 -14
  26. package/dist/js/modern/runtime-testing/base.js +7 -3
  27. package/dist/js/modern/runtime-testing/customRender.js +24 -10
  28. package/dist/js/modern/runtime-testing/index.js +1 -1
  29. package/dist/js/modern/runtime-testing/reduck.js +41 -19
  30. package/dist/js/modern/runtime-testing/request.js +4 -4
  31. package/dist/js/modern/runtime-testing/resolvePlugins.js +24 -8
  32. package/dist/js/node/base/config/index.js +56 -18
  33. package/dist/js/node/base/config/patches/assetsModule.js +30 -12
  34. package/dist/js/node/base/config/patches/filemock.js +22 -7
  35. package/dist/js/node/base/config/patches/index.js +50 -15
  36. package/dist/js/node/base/config/patches/transformer.js +38 -25
  37. package/dist/js/node/base/config/resolver.js +37 -10
  38. package/dist/js/node/base/config/testConfigOperator.js +49 -30
  39. package/dist/js/node/base/config/transformer/babelTransformer.js +40 -15
  40. package/dist/js/node/base/hook.js +28 -13
  41. package/dist/js/node/base/index.js +31 -63
  42. package/dist/js/node/base/runJest.js +99 -71
  43. package/dist/js/node/base/utils.js +66 -34
  44. package/dist/js/node/cli/bff/app.js +57 -22
  45. package/dist/js/node/cli/bff/constant.js +22 -7
  46. package/dist/js/node/cli/bff/index.js +121 -65
  47. package/dist/js/node/cli/bff/mockAPI.js +103 -71
  48. package/dist/js/node/cli/bff/setup.js +100 -38
  49. package/dist/js/node/cli/bff/utils/index.js +55 -22
  50. package/dist/js/node/cli/index.js +87 -46
  51. package/dist/js/node/cli/test.js +79 -27
  52. package/dist/js/node/constant.js +22 -7
  53. package/dist/js/node/index.js +19 -18
  54. package/dist/js/node/modern-app.env.d.js +0 -0
  55. package/dist/js/node/runtime-testing/app.js +53 -25
  56. package/dist/js/node/runtime-testing/base.js +30 -33
  57. package/dist/js/node/runtime-testing/customRender.js +49 -18
  58. package/dist/js/node/runtime-testing/index.js +18 -27
  59. package/dist/js/node/runtime-testing/reduck.js +67 -31
  60. package/dist/js/node/runtime-testing/request.js +32 -13
  61. package/dist/js/node/runtime-testing/resolvePlugins.js +41 -12
  62. package/dist/js/treeshaking/base/config/index.js +150 -31
  63. package/dist/js/treeshaking/base/config/patches/assetsModule.js +9 -11
  64. package/dist/js/treeshaking/base/config/patches/filemock.js +2 -1
  65. package/dist/js/treeshaking/base/config/patches/index.js +221 -64
  66. package/dist/js/treeshaking/base/config/patches/transformer.js +34 -37
  67. package/dist/js/treeshaking/base/config/resolver.js +24 -11
  68. package/dist/js/treeshaking/base/config/testConfigOperator.js +120 -69
  69. package/dist/js/treeshaking/base/config/transformer/babelTransformer.js +16 -10
  70. package/dist/js/treeshaking/base/hook.js +8 -7
  71. package/dist/js/treeshaking/base/index.js +7 -6
  72. package/dist/js/treeshaking/base/runJest.js +281 -164
  73. package/dist/js/treeshaking/base/types/index.js +1 -0
  74. package/dist/js/treeshaking/base/utils.js +72 -48
  75. package/dist/js/treeshaking/cli/bff/app.js +192 -68
  76. package/dist/js/treeshaking/cli/bff/constant.js +2 -1
  77. package/dist/js/treeshaking/cli/bff/index.js +291 -130
  78. package/dist/js/treeshaking/cli/bff/mockAPI.js +181 -91
  79. package/dist/js/treeshaking/cli/bff/setup.js +185 -59
  80. package/dist/js/treeshaking/cli/bff/utils/index.js +47 -21
  81. package/dist/js/treeshaking/cli/index.js +248 -108
  82. package/dist/js/treeshaking/cli/test.js +177 -44
  83. package/dist/js/treeshaking/constant.js +2 -1
  84. package/dist/js/treeshaking/index.js +3 -3
  85. package/dist/js/treeshaking/modern-app.env.d.js +1 -0
  86. package/dist/js/treeshaking/runtime-testing/app.js +85 -39
  87. package/dist/js/treeshaking/runtime-testing/base.js +4 -3
  88. package/dist/js/treeshaking/runtime-testing/customRender.js +38 -10
  89. package/dist/js/treeshaking/runtime-testing/index.js +1 -1
  90. package/dist/js/treeshaking/runtime-testing/reduck.js +85 -33
  91. package/dist/js/treeshaking/runtime-testing/request.js +49 -19
  92. package/dist/js/treeshaking/runtime-testing/resolvePlugins.js +45 -14
  93. package/dist/types/base/config/index.d.ts +1 -0
  94. package/dist/types/base/config/patches/assetsModule.d.ts +1 -0
  95. package/dist/types/base/config/patches/filemock.d.ts +1 -0
  96. package/dist/types/base/config/patches/transformer.d.ts +1 -0
  97. package/dist/types/base/config/resolver.d.ts +2 -1
  98. package/dist/types/base/config/testConfigOperator.d.ts +2 -0
  99. package/dist/types/base/runJest.d.ts +2 -0
  100. package/dist/types/base/utils.d.ts +1 -0
  101. package/dist/types/cli/bff/index.d.ts +2 -0
  102. package/dist/types/cli/bff/mockAPI.d.ts +1 -0
  103. package/dist/types/cli/index.d.ts +2 -0
  104. package/dist/types/runtime-testing/app.d.ts +3 -0
  105. package/dist/types/runtime-testing/customRender.d.ts +2 -0
  106. package/package.json +13 -13
package/CHANGELOG.md CHANGED
@@ -1,5 +1,150 @@
1
1
  # @modern-js/plugin-testing
2
2
 
3
+ ## 2.0.0-beta.4
4
+
5
+ ### Major Changes
6
+
7
+ - dda38c9c3e: chore: v2
8
+
9
+ ### Patch Changes
10
+
11
+ - cc971eabfc: refactor: move server plugin load logic in `@modern-js/core`
12
+ refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
13
+ - 14b712da84: fix: use consistent alias type and default value across packages
14
+
15
+ fix: 在各个包中使用一致的 alias 类型定义和默认值
16
+
17
+ - Updated dependencies [2344eb26ed]
18
+ - Updated dependencies [a11fcf8b50]
19
+ - Updated dependencies [a931594]
20
+ - Updated dependencies [e7ce063]
21
+ - Updated dependencies [b18fa8f3ed]
22
+ - Updated dependencies [7879e8f]
23
+ - Updated dependencies [50d4675]
24
+ - Updated dependencies [c9e800d39a]
25
+ - Updated dependencies [6604f1b]
26
+ - Updated dependencies [d032d49e09]
27
+ - Updated dependencies [6aca875]
28
+ - Updated dependencies [fda836f]
29
+ - Updated dependencies [15bf09d9c8]
30
+ - Updated dependencies [d6bc321]
31
+ - Updated dependencies [3e57f2bd58]
32
+ - Updated dependencies [2e6031955e]
33
+ - Updated dependencies [c5798d2]
34
+ - Updated dependencies [fbf5eed5aa]
35
+ - Updated dependencies [a2509bfbdb]
36
+ - Updated dependencies [a7c6883]
37
+ - Updated dependencies [425e57092d]
38
+ - Updated dependencies [decfcd989d]
39
+ - Updated dependencies [e4357f1856]
40
+ - Updated dependencies [7b7d12c]
41
+ - Updated dependencies [4369648ae2]
42
+ - Updated dependencies [92f0eade39]
43
+ - Updated dependencies [92c0994468]
44
+ - Updated dependencies [2cc2eb3]
45
+ - Updated dependencies [edd1cfb1af]
46
+ - Updated dependencies [cc971eabfc]
47
+ - Updated dependencies [5b9049f2e9]
48
+ - Updated dependencies [6bda14ed71]
49
+ - Updated dependencies [92004d1906]
50
+ - Updated dependencies [b8bbe036c7]
51
+ - Updated dependencies [40ed5874c6]
52
+ - Updated dependencies [60d5378632]
53
+ - Updated dependencies [d5a31df781]
54
+ - Updated dependencies [dda38c9c3e]
55
+ - Updated dependencies [102d32e4ba]
56
+ - Updated dependencies [8b8e1bb571]
57
+ - Updated dependencies [3bbea92b2a]
58
+ - Updated dependencies [73cd29dd9f]
59
+ - Updated dependencies [9144c21]
60
+ - Updated dependencies [b710adb843]
61
+ - Updated dependencies [cce8ecee2d]
62
+ - Updated dependencies [18aaf42249]
63
+ - Updated dependencies [34702d5]
64
+ - Updated dependencies [f179749375]
65
+ - Updated dependencies [fcace5b5b9]
66
+ - Updated dependencies [ea7cf06]
67
+ - Updated dependencies [bbe4c4a]
68
+ - Updated dependencies [e4558a0]
69
+ - Updated dependencies [abf3421a75]
70
+ - Updated dependencies [543be9558e]
71
+ - Updated dependencies [fd1d9fd]
72
+ - Updated dependencies [14b712da84]
73
+ - @modern-js/runtime@2.0.0-beta.4
74
+ - @modern-js/prod-server@2.0.0-beta.4
75
+ - @modern-js/utils@2.0.0-beta.4
76
+ - @modern-js/babel-preset-app@2.0.0-beta.4
77
+ - @modern-js/plugin@2.0.0-beta.4
78
+ - @modern-js/babel-compiler@2.0.0-beta.4
79
+
80
+ ## 2.0.0-beta.3
81
+
82
+ ### Major Changes
83
+
84
+ - dda38c9c3e: chore: v2
85
+
86
+ ### Patch Changes
87
+
88
+ - cc971eabfc: refactor: move server plugin load logic in `@modern-js/core`
89
+ refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
90
+ - 14b712da84: fix: use consistent alias type and default value across packages
91
+
92
+ fix: 在各个包中使用一致的 alias 类型定义和默认值
93
+
94
+ - Updated dependencies [2344eb26ed]
95
+ - Updated dependencies [a11fcf8b50]
96
+ - Updated dependencies [e7ce063]
97
+ - Updated dependencies [b18fa8f3ed]
98
+ - Updated dependencies [c9e800d39a]
99
+ - Updated dependencies [6604f1b]
100
+ - Updated dependencies [d032d49e09]
101
+ - Updated dependencies [6aca875]
102
+ - Updated dependencies [fda836f]
103
+ - Updated dependencies [15bf09d9c8]
104
+ - Updated dependencies [3e57f2bd58]
105
+ - Updated dependencies [2e60319]
106
+ - Updated dependencies [fbf5eed5aa]
107
+ - Updated dependencies [a2509bfbdb]
108
+ - Updated dependencies [425e570]
109
+ - Updated dependencies [decfcd989d]
110
+ - Updated dependencies [e4357f1]
111
+ - Updated dependencies [4369648ae2]
112
+ - Updated dependencies [92f0eade39]
113
+ - Updated dependencies [92c0994468]
114
+ - Updated dependencies [edd1cfb1af]
115
+ - Updated dependencies [cc971eabfc]
116
+ - Updated dependencies [5b9049f2e9]
117
+ - Updated dependencies [6bda14ed71]
118
+ - Updated dependencies [92004d1906]
119
+ - Updated dependencies [b8bbe036c7]
120
+ - Updated dependencies [40ed5874c6]
121
+ - Updated dependencies [60d5378632]
122
+ - Updated dependencies [d5a31df781]
123
+ - Updated dependencies [dda38c9c3e]
124
+ - Updated dependencies [102d32e4ba]
125
+ - Updated dependencies [8b8e1bb571]
126
+ - Updated dependencies [3bbea92b2a]
127
+ - Updated dependencies [73cd29dd9f]
128
+ - Updated dependencies [b710adb]
129
+ - Updated dependencies [cce8ece]
130
+ - Updated dependencies [18aaf42249]
131
+ - Updated dependencies [34702d5]
132
+ - Updated dependencies [f179749375]
133
+ - Updated dependencies [fcace5b5b9]
134
+ - Updated dependencies [ea7cf06]
135
+ - Updated dependencies [bbe4c4a]
136
+ - Updated dependencies [e4558a0]
137
+ - Updated dependencies [abf3421a75]
138
+ - Updated dependencies [543be9558e]
139
+ - Updated dependencies [fd1d9fd]
140
+ - Updated dependencies [14b712da84]
141
+ - @modern-js/runtime@2.0.0-beta.3
142
+ - @modern-js/prod-server@2.0.0-beta.3
143
+ - @modern-js/utils@2.0.0-beta.3
144
+ - @modern-js/babel-preset-app@2.0.0-beta.3
145
+ - @modern-js/plugin@2.0.0-beta.3
146
+ - @modern-js/babel-compiler@2.0.0-beta.3
147
+
3
148
  ## 2.0.0-beta.2
4
149
 
5
150
  ### Major Changes
@@ -1,16 +1,36 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
1
21
  import { applyPatches } from "./patches";
2
22
  import { TestConfigOperator } from "./testConfigOperator";
3
-
4
- /**
5
- * Parse jest config
6
- */
7
- const getJestUtils = testConfig => {
23
+ const getJestUtils = (testConfig) => {
8
24
  const testOperator = new TestConfigOperator(testConfig);
9
25
  return testOperator;
10
26
  };
11
- const patchConfig = async testOperator => {
12
- await applyPatches(testOperator);
27
+ const patchConfig = (testOperator) => __async(void 0, null, function* () {
28
+ yield applyPatches(testOperator);
13
29
  return testOperator.jestConfig;
30
+ });
31
+ const DEFAULT_RESOLVER_PATH = require.resolve("./resolver");
32
+ export {
33
+ DEFAULT_RESOLVER_PATH,
34
+ getJestUtils,
35
+ patchConfig
14
36
  };
15
- export const DEFAULT_RESOLVER_PATH = require.resolve("./resolver");
16
- export { getJestUtils, patchConfig };
@@ -1,11 +1,11 @@
1
- /**
2
- * Merge config from testConfig.jest
3
- */
4
- export const patchAssetsModule = testOperator => {
1
+ const patchAssetsModule = (testOperator) => {
5
2
  testOperator.mergeJestConfig({
6
3
  moduleNameMapper: {
7
- '\\.(css|less|scss|sass)$': require.resolve('identity-obj-proxy'),
8
- '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': require.resolve("./filemock.js")
4
+ "\\.(css|less|scss|sass)$": require.resolve("identity-obj-proxy"),
5
+ "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": require.resolve("./filemock.js")
9
6
  }
10
7
  });
11
- };
8
+ };
9
+ export {
10
+ patchAssetsModule
11
+ };
@@ -1 +1,4 @@
1
- export default 'test-file-stub';
1
+ var filemock_default = "test-file-stub";
2
+ export {
3
+ filemock_default as default
4
+ };
@@ -1,11 +1,34 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
1
21
  import { patchTransformer } from "./transformer";
2
22
  import { patchAssetsModule } from "./assetsModule";
3
- const _applyPatches = async (patches, testOperator) => {
4
- for (const patch of patches) {
5
- await patch(testOperator);
23
+ const _applyPatches = (patches2, testOperator) => __async(void 0, null, function* () {
24
+ for (const patch of patches2) {
25
+ yield patch(testOperator);
6
26
  }
7
- };
27
+ });
8
28
  const patches = [patchTransformer, patchAssetsModule];
9
- export const applyPatches = async testConfig => {
10
- await _applyPatches(patches, testConfig);
11
- };
29
+ const applyPatches = (testConfig) => __async(void 0, null, function* () {
30
+ yield _applyPatches(patches, testConfig);
31
+ });
32
+ export {
33
+ applyPatches
34
+ };
@@ -1,43 +1,38 @@
1
1
  import { readCompilerOptions } from "../../utils";
2
2
  const resolveTsCompilerOptions = () => {
3
3
  const tsCompilerOptions = readCompilerOptions() || {};
4
- const {
5
- jsx
6
- } = tsCompilerOptions;
4
+ const { jsx } = tsCompilerOptions;
7
5
  if (!jsx) {
8
6
  return null;
9
7
  }
10
- tsCompilerOptions.jsx = 'react-jsx';
8
+ tsCompilerOptions.jsx = "react-jsx";
11
9
  return tsCompilerOptions;
12
10
  };
13
-
14
- /**
15
- * Map `TestConfig.transformer` to jest config
16
- */
17
- export const patchTransformer = testOperator => {
18
- const {
19
- transformer
20
- } = testOperator.testConfig;
21
- if (transformer === 'babel-jest') {
11
+ const patchTransformer = (testOperator) => {
12
+ const { transformer } = testOperator.testConfig;
13
+ if (transformer === "babel-jest") {
22
14
  testOperator.mergeJestConfig({
23
15
  transform: {
24
- '\\.[jt]sx?$': require.resolve("../transformer/babelTransformer")
16
+ "\\.[jt]sx?$": require.resolve("../transformer/babelTransformer")
25
17
  }
26
18
  });
27
19
  }
28
- if (transformer === 'ts-jest') {
20
+ if (transformer === "ts-jest") {
29
21
  testOperator.mergeJestConfig({
30
22
  transform: {
31
- '\\.[jt]sx?$': require.resolve('ts-jest')
23
+ "\\.[jt]sx?$": require.resolve("ts-jest")
32
24
  }
33
25
  });
34
26
  const compilerOptions = resolveTsCompilerOptions();
35
27
  compilerOptions && testOperator.mergeJestConfig({
36
28
  globals: {
37
- 'ts-jest': {
29
+ "ts-jest": {
38
30
  tsconfig: compilerOptions
39
31
  }
40
32
  }
41
33
  });
42
34
  }
43
- };
35
+ };
36
+ export {
37
+ patchTransformer
38
+ };
@@ -1,12 +1,17 @@
1
- import enhanceResolve from 'enhanced-resolve';
1
+ import enhanceResolve from "enhanced-resolve";
2
2
  const resolver = enhanceResolve.create.sync({
3
- conditionNames: ['require', 'node', 'default'],
4
- extensions: ['.js', '.json', '.node', '.ts', '.tsx']
3
+ conditionNames: ["require", "node", "default"],
4
+ extensions: [".js", ".json", ".node", ".ts", ".tsx"]
5
5
  });
6
- const shouldResolveByEnhance = url => /^@[^/]+\/[^/]+\/.*/.test(url);
7
- module.exports = function (request, options) {
6
+ const shouldResolveByEnhance = (url) => /^@[^/]+\/[^/]+\/.*/.test(url);
7
+ const internalResolve = function(request, options) {
8
8
  if (shouldResolveByEnhance(request)) {
9
9
  return resolver(options.basedir, request);
10
10
  }
11
11
  return options.defaultResolver(request, options);
12
- };
12
+ };
13
+ module.exports = internalResolve;
14
+ var resolver_default = internalResolve;
15
+ export {
16
+ resolver_default as default
17
+ };
@@ -1,15 +1,25 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import { merge } from '@modern-js/utils/lodash';
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import { merge } from "@modern-js/utils/lodash";
5
18
  class TestConfigOperator {
6
19
  constructor(testConfig) {
7
- _defineProperty(this, "_testConfig", void 0);
8
- _defineProperty(this, "_jestConfig", void 0);
9
- _defineProperty(this, "userJestConfig", void 0);
10
- _defineProperty(this, "defaultTestConfig", {
11
- transformer: 'babel-jest'
12
- });
20
+ this.defaultTestConfig = {
21
+ transformer: "babel-jest"
22
+ };
13
23
  this._testConfig = testConfig;
14
24
  this._jestConfig = {};
15
25
  this.userJestConfig = testConfig.jest;
@@ -28,36 +38,32 @@ class TestConfigOperator {
28
38
  this._jestConfig = merge({}, this._jestConfig, sourceConfig);
29
39
  }
30
40
  setJestUserConfig() {
31
- const {
32
- userJestConfig
33
- } = this;
34
- if (typeof userJestConfig === 'object') {
41
+ const { userJestConfig } = this;
42
+ if (typeof userJestConfig === "object") {
35
43
  this.setJestConfig(userJestConfig);
36
44
  }
37
45
  }
38
46
  setJestConfig(sourceConfig, options) {
39
47
  if (options) {
40
- const {
41
- force
42
- } = options;
48
+ const { force } = options;
43
49
  if (force) {
44
50
  this._jestConfig = sourceConfig;
45
51
  return;
46
52
  }
47
53
  }
48
- this._jestConfig = _objectSpread(_objectSpread({}, this._jestConfig), sourceConfig);
54
+ this._jestConfig = __spreadValues(__spreadValues({}, this._jestConfig), sourceConfig);
49
55
  }
50
56
  getFinalConfig() {
51
- const {
52
- userJestConfig
53
- } = this;
57
+ const { userJestConfig } = this;
54
58
  if (!userJestConfig) {
55
59
  return this._jestConfig;
56
60
  }
57
- if (typeof userJestConfig === 'function') {
61
+ if (typeof userJestConfig === "function") {
58
62
  return userJestConfig(this._jestConfig);
59
63
  }
60
64
  return this.jestConfig;
61
65
  }
62
66
  }
63
- export { TestConfigOperator };
67
+ export {
68
+ TestConfigOperator
69
+ };
@@ -1,11 +1,19 @@
1
- var _babelJest$createTran;
2
- import babelJest from 'babel-jest';
3
- const babelTransformer = (_babelJest$createTran = babelJest.createTransformer) === null || _babelJest$createTran === void 0 ? void 0 : _babelJest$createTran.call(babelJest, {
4
- presets: [[require.resolve('@modern-js/babel-preset-app'), {
5
- appDirectory: process.cwd(),
6
- modules: 'cjs'
7
- }]],
1
+ var _a, _b;
2
+ import babelJest from "babel-jest";
3
+ const babelTransformer = (_b = (_a = babelJest).createTransformer) == null ? void 0 : _b.call(_a, {
4
+ presets: [
5
+ [
6
+ require.resolve("@modern-js/babel-preset-app"),
7
+ {
8
+ appDirectory: process.cwd(),
9
+ modules: "cjs"
10
+ }
11
+ ]
12
+ ],
8
13
  configFile: false,
9
14
  babelrc: false
10
15
  });
11
- export default babelTransformer;
16
+ var babelTransformer_default = babelTransformer;
17
+ export {
18
+ babelTransformer_default as default
19
+ };
@@ -1,7 +1,12 @@
1
- import { createAsyncPipeline, createParallelWorkflow } from '@modern-js/plugin';
2
- export const jestConfigHook = createAsyncPipeline();
3
- export const afterTestHook = createParallelWorkflow();
4
- export const testingHooks = {
1
+ import { createAsyncPipeline, createParallelWorkflow } from "@modern-js/plugin";
2
+ const jestConfigHook = createAsyncPipeline();
3
+ const afterTestHook = createParallelWorkflow();
4
+ const testingHooks = {
5
5
  jestConfig: createAsyncPipeline(),
6
6
  afterTest: createParallelWorkflow()
7
- };
7
+ };
8
+ export {
9
+ afterTestHook,
10
+ jestConfigHook,
11
+ testingHooks
12
+ };
@@ -1,6 +1,14 @@
1
- export { runTest, runJest } from "./runJest";
2
- export { getModuleNameMapper } from "./utils";
3
- export { DEFAULT_RESOLVER_PATH } from "./config";
4
- export { TestConfigOperator } from "./config/testConfigOperator";
5
- export { testingHooks } from "./hook";
6
- export * from "./types";
1
+ import { runTest, runJest } from "./runJest";
2
+ import { getModuleNameMapper } from "./utils";
3
+ import { DEFAULT_RESOLVER_PATH } from "./config";
4
+ import { TestConfigOperator } from "./config/testConfigOperator";
5
+ import { testingHooks } from "./hook";
6
+ export * from "./types";
7
+ export {
8
+ DEFAULT_RESOLVER_PATH,
9
+ TestConfigOperator,
10
+ getModuleNameMapper,
11
+ runJest,
12
+ runTest,
13
+ testingHooks
14
+ };
@@ -1,24 +1,36 @@
1
- /**
2
- * @file run jest by nodejs API
3
- * @description
4
- * Jest does not provide node API to run jest.
5
- * The followed code is inspired by
6
- * https://github.com/facebook/jest/blob/fdc74af37235354e077edeeee8aa2d1a4a863032/packages/jest-cli/src/cli/index.ts#L21
7
- */
8
-
9
- import yargs from 'yargs/yargs';
10
- import { runCLI } from 'jest';
11
- import { chalk } from '@modern-js/utils';
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import yargs from "yargs/yargs";
22
+ import { runCLI } from "jest";
23
+ import { chalk } from "@modern-js/utils";
12
24
  import { getJestUtils, patchConfig } from "./config";
13
25
  import { debug } from "./utils";
14
- const buildArgv = async (rawArgv, config) => {
15
- const argv = await yargs(rawArgv).argv;
26
+ const buildArgv = (rawArgv, config) => __async(void 0, null, function* () {
27
+ const argv = yield yargs(rawArgv).argv;
16
28
  const result = {
17
29
  $0: argv.$0,
18
30
  _: argv._.slice(1)
19
31
  };
20
- Object.keys(argv).forEach(key => {
21
- if (key.includes('-') || key === '_') {
32
+ Object.keys(argv).forEach((key) => {
33
+ if (key.includes("-") || key === "_") {
22
34
  return;
23
35
  }
24
36
  result[key] = argv[key];
@@ -27,65 +39,64 @@ const buildArgv = async (rawArgv, config) => {
27
39
  result.config = JSON.stringify(config);
28
40
  }
29
41
  return result;
30
- };
42
+ });
31
43
  const readResultsAndExit = (result, globalConfig) => {
32
44
  const code = !result || result.success ? 0 : globalConfig.testFailureExitCode;
33
-
34
- // Only exit if needed
35
- process.on('exit', () => {
36
- if (typeof code === 'number' && code !== 0) {
45
+ process.on("exit", () => {
46
+ if (typeof code === "number" && code !== 0) {
37
47
  process.exitCode = code;
38
48
  }
39
49
  });
40
50
  if (globalConfig.forceExit) {
41
51
  if (!globalConfig.detectOpenHandles) {
42
- console.warn(`${chalk.bold('Force exiting Jest: ')}Have you considered using \`--detectOpenHandles\` to detect ` + `async operations that kept running after all tests finished?`);
52
+ console.warn(
53
+ `${chalk.bold(
54
+ "Force exiting Jest: "
55
+ )}Have you considered using \`--detectOpenHandles\` to detect async operations that kept running after all tests finished?`
56
+ );
43
57
  }
44
-
45
- // eslint-disable-next-line no-process-exit
46
58
  process.exit(code);
47
59
  } else if (!globalConfig.detectOpenHandles) {
48
60
  setTimeout(() => {
49
- console.warn(chalk.yellow.bold('Jest did not exit one second after the test run has completed.\n\n') + chalk.yellow('This usually means that there are asynchronous operations that ' + "weren't stopped in your tests. Consider running Jest with " + '`--detectOpenHandles` to troubleshoot this issue.'));
50
- }, 1000).unref();
61
+ console.warn(
62
+ chalk.yellow.bold(
63
+ "Jest did not exit one second after the test run has completed.\n\n"
64
+ ) + chalk.yellow(
65
+ "This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with `--detectOpenHandles` to troubleshoot this issue."
66
+ )
67
+ );
68
+ }, 1e3).unref();
51
69
  }
52
70
  };
53
-
54
- /**
55
- * Node API: execute jest
56
- */
57
- export async function runJest(config, pwd = process.cwd()) {
58
- try {
59
- const argvConfig = await buildArgv(process.argv.slice(2), config);
60
- const {
61
- results,
62
- globalConfig
63
- } = await runCLI(argvConfig, [pwd]);
64
- readResultsAndExit(results, globalConfig);
65
- } catch (e) {
66
- console.error(chalk.red((e === null || e === void 0 ? void 0 : e.stack) || e));
67
-
68
- // eslint-disable-next-line no-process-exit
69
- process.exit(1);
70
- }
71
+ function runJest(_0) {
72
+ return __async(this, arguments, function* (config, pwd = process.cwd()) {
73
+ try {
74
+ const argvConfig = yield buildArgv(process.argv.slice(2), config);
75
+ const { results, globalConfig } = yield runCLI(argvConfig, [pwd]);
76
+ readResultsAndExit(results, globalConfig);
77
+ } catch (e) {
78
+ console.error(chalk.red((e == null ? void 0 : e.stack) || e));
79
+ process.exit(1);
80
+ }
81
+ });
71
82
  }
72
-
73
- /**
74
- * Node API: run test
75
- */
76
- export async function runTest(api, config, pwd = process.cwd()) {
77
- process.env.NODE_ENV = 'test';
78
- const jestUtils = getJestUtils(config);
79
- await patchConfig(jestUtils);
80
-
81
- // 确保用户设置的配置可以被插件处理,比如设置在 projects 中
82
- jestUtils.setJestUserConfig();
83
- const hookRunners = api.useHookRunners();
84
- const testConfigOperator = await hookRunners.jestConfig(jestUtils, {
85
- onLast: input => input
83
+ function runTest(_0, _1) {
84
+ return __async(this, arguments, function* (api, config, pwd = process.cwd()) {
85
+ process.env.NODE_ENV = "test";
86
+ const jestUtils = getJestUtils(config);
87
+ yield patchConfig(jestUtils);
88
+ jestUtils.setJestUserConfig();
89
+ const hookRunners = api.useHookRunners();
90
+ const testConfigOperator = yield hookRunners.jestConfig(jestUtils, {
91
+ onLast: (input) => input
92
+ });
93
+ const finalConfig = testConfigOperator.getFinalConfig();
94
+ debug("Jest config:", finalConfig);
95
+ yield runJest(finalConfig, pwd);
96
+ yield hookRunners.afterTest();
86
97
  });
87
- const finalConfig = testConfigOperator.getFinalConfig();
88
- debug('Jest config:', finalConfig);
89
- await runJest(finalConfig, pwd);
90
- await hookRunners.afterTest();
91
- }
98
+ }
99
+ export {
100
+ runJest,
101
+ runTest
102
+ };