@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
@@ -1,175 +1,292 @@
1
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- /**
4
- * @file run jest by nodejs API
5
- * @description
6
- * Jest does not provide node API to run jest.
7
- * The followed code is inspired by
8
- * https://github.com/facebook/jest/blob/fdc74af37235354e077edeeee8aa2d1a4a863032/packages/jest-cli/src/cli/index.ts#L21
9
- */
10
-
11
- import yargs from 'yargs/yargs';
12
- import { runCLI } from 'jest';
13
- import { chalk } from '@modern-js/utils';
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import yargs from "yargs/yargs";
126
+ import { runCLI } from "jest";
127
+ import { chalk } from "@modern-js/utils";
14
128
  import { getJestUtils, patchConfig } from "./config";
15
129
  import { debug } from "./utils";
16
- var buildArgv = /*#__PURE__*/function () {
17
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(rawArgv, config) {
18
- var argv, result;
19
- return _regeneratorRuntime().wrap(function _callee$(_context) {
20
- while (1) {
21
- switch (_context.prev = _context.next) {
22
- case 0:
23
- _context.next = 2;
24
- return yargs(rawArgv).argv;
25
- case 2:
26
- argv = _context.sent;
27
- result = {
28
- $0: argv.$0,
29
- _: argv._.slice(1)
30
- };
31
- Object.keys(argv).forEach(function (key) {
32
- if (key.includes('-') || key === '_') {
33
- return;
34
- }
35
- result[key] = argv[key];
36
- });
37
- if (config) {
38
- result.config = JSON.stringify(config);
130
+ var buildArgv = function() {
131
+ var _ref = _asyncToGenerator(function(rawArgv, config) {
132
+ var argv, result;
133
+ return __generator(this, function(_state) {
134
+ switch(_state.label){
135
+ case 0:
136
+ return [
137
+ 4,
138
+ yargs(rawArgv).argv
139
+ ];
140
+ case 1:
141
+ argv = _state.sent();
142
+ result = {
143
+ $0: argv.$0,
144
+ _: argv._.slice(1)
145
+ };
146
+ Object.keys(argv).forEach(function(key) {
147
+ if (key.includes("-") || key === "_") {
148
+ return;
149
+ }
150
+ result[key] = argv[key];
151
+ });
152
+ if (config) {
153
+ result.config = JSON.stringify(config);
154
+ }
155
+ return [
156
+ 2,
157
+ result
158
+ ];
39
159
  }
40
- return _context.abrupt("return", result);
41
- case 7:
42
- case "end":
43
- return _context.stop();
44
- }
45
- }
46
- }, _callee);
47
- }));
48
- return function buildArgv(_x, _x2) {
49
- return _ref.apply(this, arguments);
50
- };
160
+ });
161
+ });
162
+ return function buildArgv(rawArgv, config) {
163
+ return _ref.apply(this, arguments);
164
+ };
51
165
  }();
52
- var readResultsAndExit = function readResultsAndExit(result, globalConfig) {
53
- var code = !result || result.success ? 0 : globalConfig.testFailureExitCode;
54
-
55
- // Only exit if needed
56
- process.on('exit', function () {
57
- if (typeof code === 'number' && code !== 0) {
58
- process.exitCode = code;
59
- }
60
- });
61
- if (globalConfig.forceExit) {
62
- if (!globalConfig.detectOpenHandles) {
63
- console.warn("".concat(chalk.bold('Force exiting Jest: '), "Have you considered using `--detectOpenHandles` to detect ") + "async operations that kept running after all tests finished?");
166
+ var readResultsAndExit = function(result, globalConfig) {
167
+ var code = !result || result.success ? 0 : globalConfig.testFailureExitCode;
168
+ process.on("exit", function() {
169
+ if (typeof code === "number" && code !== 0) {
170
+ process.exitCode = code;
171
+ }
172
+ });
173
+ if (globalConfig.forceExit) {
174
+ if (!globalConfig.detectOpenHandles) {
175
+ console.warn("".concat(chalk.bold("Force exiting Jest: "), "Have you considered using `--detectOpenHandles` to detect async operations that kept running after all tests finished?"));
176
+ }
177
+ process.exit(code);
178
+ } else if (!globalConfig.detectOpenHandles) {
179
+ setTimeout(function() {
180
+ 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."));
181
+ }, 1e3).unref();
64
182
  }
65
-
66
- // eslint-disable-next-line no-process-exit
67
- process.exit(code);
68
- } else if (!globalConfig.detectOpenHandles) {
69
- setTimeout(function () {
70
- 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.'));
71
- }, 1000).unref();
72
- }
73
183
  };
74
-
75
- /**
76
- * Node API: execute jest
77
- */
78
- export function runJest(_x3) {
79
- return _runJest.apply(this, arguments);
184
+ function runJest(config) {
185
+ return _runJest.apply(this, arguments);
80
186
  }
81
-
82
- /**
83
- * Node API: run test
84
- */
85
187
  function _runJest() {
86
- _runJest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(config) {
87
- var pwd,
88
- argvConfig,
89
- _yield$runCLI,
90
- results,
91
- globalConfig,
92
- _args2 = arguments;
93
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
94
- while (1) {
95
- switch (_context2.prev = _context2.next) {
96
- case 0:
97
- pwd = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : process.cwd();
98
- _context2.prev = 1;
99
- _context2.next = 4;
100
- return buildArgv(process.argv.slice(2), config);
101
- case 4:
102
- argvConfig = _context2.sent;
103
- _context2.next = 7;
104
- return runCLI(argvConfig, [pwd]);
105
- case 7:
106
- _yield$runCLI = _context2.sent;
107
- results = _yield$runCLI.results;
108
- globalConfig = _yield$runCLI.globalConfig;
109
- readResultsAndExit(results, globalConfig);
110
- _context2.next = 17;
111
- break;
112
- case 13:
113
- _context2.prev = 13;
114
- _context2.t0 = _context2["catch"](1);
115
- console.error(chalk.red((_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.stack) || _context2.t0));
116
-
117
- // eslint-disable-next-line no-process-exit
118
- process.exit(1);
119
- case 17:
120
- case "end":
121
- return _context2.stop();
122
- }
123
- }
124
- }, _callee2, null, [[1, 13]]);
125
- }));
126
- return _runJest.apply(this, arguments);
188
+ _runJest = _asyncToGenerator(function(config) {
189
+ var pwd, argvConfig, ref, results, globalConfig, e;
190
+ var _arguments = arguments;
191
+ return __generator(this, function(_state) {
192
+ switch(_state.label){
193
+ case 0:
194
+ pwd = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : process.cwd();
195
+ _state.label = 1;
196
+ case 1:
197
+ _state.trys.push([
198
+ 1,
199
+ 4,
200
+ ,
201
+ 5
202
+ ]);
203
+ return [
204
+ 4,
205
+ buildArgv(process.argv.slice(2), config)
206
+ ];
207
+ case 2:
208
+ argvConfig = _state.sent();
209
+ return [
210
+ 4,
211
+ runCLI(argvConfig, [
212
+ pwd
213
+ ])
214
+ ];
215
+ case 3:
216
+ ref = _state.sent(), results = ref.results, globalConfig = ref.globalConfig;
217
+ readResultsAndExit(results, globalConfig);
218
+ return [
219
+ 3,
220
+ 5
221
+ ];
222
+ case 4:
223
+ e = _state.sent();
224
+ console.error(chalk.red((e === null || e === void 0 ? void 0 : e.stack) || e));
225
+ process.exit(1);
226
+ return [
227
+ 3,
228
+ 5
229
+ ];
230
+ case 5:
231
+ return [
232
+ 2
233
+ ];
234
+ }
235
+ });
236
+ });
237
+ return _runJest.apply(this, arguments);
127
238
  }
128
- export function runTest(_x4, _x5) {
129
- return _runTest.apply(this, arguments);
239
+ function runTest(api, config) {
240
+ return _runTest.apply(this, arguments);
130
241
  }
131
242
  function _runTest() {
132
- _runTest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(api, config) {
133
- var pwd,
134
- jestUtils,
135
- hookRunners,
136
- testConfigOperator,
137
- finalConfig,
138
- _args3 = arguments;
139
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
140
- while (1) {
141
- switch (_context3.prev = _context3.next) {
142
- case 0:
143
- pwd = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : process.cwd();
144
- process.env.NODE_ENV = 'test';
145
- jestUtils = getJestUtils(config);
146
- _context3.next = 5;
147
- return patchConfig(jestUtils);
148
- case 5:
149
- // 确保用户设置的配置可以被插件处理,比如设置在 projects 中
150
- jestUtils.setJestUserConfig();
151
- hookRunners = api.useHookRunners();
152
- _context3.next = 9;
153
- return hookRunners.jestConfig(jestUtils, {
154
- onLast: function onLast(input) {
155
- return input;
156
- }
157
- });
158
- case 9:
159
- testConfigOperator = _context3.sent;
160
- finalConfig = testConfigOperator.getFinalConfig();
161
- debug('Jest config:', finalConfig);
162
- _context3.next = 14;
163
- return runJest(finalConfig, pwd);
164
- case 14:
165
- _context3.next = 16;
166
- return hookRunners.afterTest();
167
- case 16:
168
- case "end":
169
- return _context3.stop();
170
- }
171
- }
172
- }, _callee3);
173
- }));
174
- return _runTest.apply(this, arguments);
175
- }
243
+ _runTest = _asyncToGenerator(function(api, config) {
244
+ var pwd, jestUtils, hookRunners, testConfigOperator, finalConfig;
245
+ var _arguments = arguments;
246
+ return __generator(this, function(_state) {
247
+ switch(_state.label){
248
+ case 0:
249
+ pwd = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : process.cwd();
250
+ process.env.NODE_ENV = "test";
251
+ jestUtils = getJestUtils(config);
252
+ return [
253
+ 4,
254
+ patchConfig(jestUtils)
255
+ ];
256
+ case 1:
257
+ _state.sent();
258
+ jestUtils.setJestUserConfig();
259
+ hookRunners = api.useHookRunners();
260
+ return [
261
+ 4,
262
+ hookRunners.jestConfig(jestUtils, {
263
+ onLast: function(input) {
264
+ return input;
265
+ }
266
+ })
267
+ ];
268
+ case 2:
269
+ testConfigOperator = _state.sent();
270
+ finalConfig = testConfigOperator.getFinalConfig();
271
+ debug("Jest config:", finalConfig);
272
+ return [
273
+ 4,
274
+ runJest(finalConfig, pwd)
275
+ ];
276
+ case 3:
277
+ _state.sent();
278
+ return [
279
+ 4,
280
+ hookRunners.afterTest()
281
+ ];
282
+ case 4:
283
+ _state.sent();
284
+ return [
285
+ 2
286
+ ];
287
+ }
288
+ });
289
+ });
290
+ return _runTest.apply(this, arguments);
291
+ }
292
+ export { runJest, runTest };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -1,52 +1,76 @@
1
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { createDebugger } from '@modern-js/utils';
5
- export var debug = createDebugger('test');
6
- /**
7
- * Read `compilerOptions` in the current pwd's tsconfig.json file
8
- */
9
- export var readCompilerOptions = function readCompilerOptions() {
10
- var pwd = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : process.cwd();
11
- var filename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'tsconfig.json';
12
- var tsConfig = {};
13
- var extendedCompilerOptions = {};
14
- var tsconfigFile = '';
15
- try {
16
- var maybeTsconfigFile = path.join(pwd, filename);
17
- if (fs.existsSync(maybeTsconfigFile)) {
18
- tsconfigFile = maybeTsconfigFile;
1
+ function _defineProperty(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
19
9
  } else {
20
- tsconfigFile = require.resolve(filename);
10
+ obj[key] = value;
21
11
  }
22
- var _require$parseConfigF = require('typescript').parseConfigFileTextToJson(tsconfigFile, fs.readFileSync(tsconfigFile, 'utf8'));
23
- tsConfig = _require$parseConfigF.config;
24
- } catch (e) {
25
- return {};
26
- }
27
- if (tsConfig["extends"]) {
28
- extendedCompilerOptions = readCompilerOptions(path.dirname(tsconfigFile), tsConfig["extends"]);
29
- }
30
- return _objectSpread(_objectSpread({}, extendedCompilerOptions), tsConfig.compilerOptions);
31
- };
32
- export var getModuleNameMapper = function getModuleNameMapper(alias) {
33
- return Object.keys(alias).reduce(function (memo, cur) {
34
- var aliasValue = Array.isArray(alias[cur]) ? alias[cur] : [alias[cur]];
35
- var isFile = aliasValue.some(function (s) {
36
- return s.endsWith('.js');
37
- });
38
-
39
- // It's special for if using @modern-js/runtime alias other module @modern-js/runtime/model would not work.
40
- if (cur === '@modern-js/runtime$') {
41
- memo[".+".concat(cur)] = aliasValue[0];
42
- return memo;
12
+ return obj;
13
+ }
14
+ function _objectSpread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _defineProperty(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ import fs from "fs";
30
+ import path from "path";
31
+ import { createDebugger } from "@modern-js/utils";
32
+ var debug = createDebugger("test");
33
+ var readCompilerOptions = function() {
34
+ var pwd = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : process.cwd(), filename = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "tsconfig.json";
35
+ var tsConfig = {};
36
+ var extendedCompilerOptions = {};
37
+ var tsconfigFile = "";
38
+ try {
39
+ var maybeTsconfigFile = path.join(pwd, filename);
40
+ if (fs.existsSync(maybeTsconfigFile)) {
41
+ tsconfigFile = maybeTsconfigFile;
42
+ } else {
43
+ tsconfigFile = require.resolve(filename);
44
+ }
45
+ var ref;
46
+ ref = require("typescript").parseConfigFileTextToJson(tsconfigFile, fs.readFileSync(tsconfigFile, "utf8")), tsConfig = ref.config, ref;
47
+ } catch (e) {
48
+ return {};
43
49
  }
44
- if (isFile) {
45
- memo[cur] = aliasValue[0];
50
+ if (tsConfig.extends) {
51
+ extendedCompilerOptions = readCompilerOptions(path.dirname(tsconfigFile), tsConfig.extends);
46
52
  }
47
- var key = "^".concat(cur, "/(.*)$");
48
- var value = path.normalize("".concat(aliasValue, "/$1"));
49
- memo[key] = value;
50
- return memo;
51
- }, {});
52
- };
53
+ return _objectSpread({}, extendedCompilerOptions, tsConfig.compilerOptions);
54
+ };
55
+ var getModuleNameMapper = function(alias) {
56
+ return Object.keys(alias).reduce(function(memo, cur) {
57
+ var aliasValue = Array.isArray(alias[cur]) ? alias[cur] : [
58
+ alias[cur]
59
+ ];
60
+ var isFile = aliasValue.some(function(s) {
61
+ return s.endsWith(".js");
62
+ });
63
+ if (cur === "@modern-js/runtime$") {
64
+ memo[".+".concat(cur)] = aliasValue[0];
65
+ return memo;
66
+ }
67
+ if (isFile) {
68
+ memo[cur] = aliasValue[0];
69
+ }
70
+ var key = "^".concat(cur, "/(.*)$");
71
+ var value = path.normalize("".concat(aliasValue, "/$1"));
72
+ memo[key] = value;
73
+ return memo;
74
+ }, {});
75
+ };
76
+ export { debug, getModuleNameMapper, readCompilerOptions };