@bluelovers/jest-config 1.1.11 → 1.1.13

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.
@@ -1,99 +1,99 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@yarn-tool/require-resolve'), require('debug-color2'), require('array-hyper-unique'), require('@yarn-tool/table'), require('util'), require('jest-cache-directory')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@yarn-tool/require-resolve', 'debug-color2', 'array-hyper-unique', '@yarn-tool/table', 'util', 'jest-cache-directory'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BlueloversJestConfig = {}, global.requireResolve, global.debugColor2, global.arrayHyperUnique, global.table, global.util, global.jestCacheDirectory));
5
- })(this, (function (exports, requireResolve, debugColor2, arrayHyperUnique, table, util, jestCacheDirectory) { 'use strict';
6
-
7
- function defaultTsJestTransformerOptions(runtime) {
8
- var _runtime$jestConfig$g, _runtime$jestConfig$g2;
9
- const old = (_runtime$jestConfig$g = (_runtime$jestConfig$g2 = runtime.jestConfig.globals) === null || _runtime$jestConfig$g2 === void 0 ? void 0 : _runtime$jestConfig$g2['ts-jest']) !== null && _runtime$jestConfig$g !== void 0 ? _runtime$jestConfig$g : {};
10
- const tsconfig = typeof old.tsconfig === 'object' ? old.tsconfig : {};
11
- return {
12
- ...old,
13
- tsconfig: {
14
- noEmit: true,
15
- emitDeclarationOnly: false,
16
- noUnusedParameters: false,
17
- allowUnusedLabels: true,
18
- noUnusedLocals: false,
19
- noPropertyAccessFromIndexSignature: false,
20
- noImplicitAny: false,
21
- ...tsconfig
22
- }
23
- };
24
- }
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@yarn-tool/require-resolve'), require('debug-color2'), require('array-hyper-unique'), require('@yarn-tool/table'), require('util'), require('jest-cache-directory'), require('regexp-helper-core')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@yarn-tool/require-resolve', 'debug-color2', 'array-hyper-unique', '@yarn-tool/table', 'util', 'jest-cache-directory', 'regexp-helper-core'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BlueloversJestConfig = {}, global.requireResolve, global.debugColor2, global.arrayHyperUnique, global.table, global.util, global.jestCacheDirectory, global.regexpHelperCore));
5
+ })(this, (function (exports, requireResolve, debugColor2, arrayHyperUnique, table, util, jestCacheDirectory, regexpHelperCore) { 'use strict';
25
6
 
7
+ /**
8
+ * 取得預設的測試檔案副檔名列表
9
+ * Get default test file extensions list
10
+ *
11
+ * 定義哪些副檔名的檔案會被視為測試檔案
12
+ * Defines which file extensions are recognized as test files
13
+ *
14
+ * @returns {string[]} 測試檔案副檔名陣列 / Array of test file extensions
15
+ */
26
16
  function defaultTestFileExtensions() {
27
- const value = ['ts', 'tsx', 'mts', 'cts'
28
- // 'js',
29
- // 'jsx',
30
- // 'mjs',
31
- // 'cjs',
32
- ];
33
-
17
+ const value = ['ts', 'tsx', 'mts', 'cts'];
34
18
  return value;
35
19
  }
36
20
  /**
21
+ * 取得預設的模組檔案副檔名列表
22
+ * Get default module file extensions list
23
+ *
24
+ * 定義模組解析時搜尋的副檔名順序
25
+ * Defines the order of extensions to search during module resolution
26
+ *
37
27
  * @see https://jestjs.io/docs/configuration#options
28
+ * @returns {string[]} 模組檔案副檔名陣列 / Array of module file extensions
38
29
  */
39
30
  function defaultModuleFileExtensions() {
40
31
  const value = ['js', 'mjs', 'cjs', 'jsx', 'ts', 'mts', 'cts', 'tsx', 'json', 'node'];
41
32
  return value;
42
33
  }
34
+ /**
35
+ * 取得預設的覆蓋率檔案副檔名列表
36
+ * Get default coverage file extensions list
37
+ *
38
+ * 定義哪些副檔名的檔案會被納入覆蓋率統計
39
+ * Defines which file extensions are included in coverage statistics
40
+ *
41
+ * @returns {string[]} 覆蓋率檔案副檔名陣列 / Array of coverage file extensions
42
+ */
43
43
  function defaultCoverageFileExtensions() {
44
- const value = ['js', 'mjs', 'cjs', 'jsx', 'ts', 'mts', 'cts', 'tsx'
45
- //'json',
46
- //'node',
47
- ];
48
-
44
+ const value = ['js', 'mjs', 'cjs', 'jsx', 'ts', 'mts', 'cts', 'tsx'];
49
45
  return value;
50
46
  }
47
+ /**
48
+ * 取得預設的轉換器檔案副檔名列表
49
+ * Get default transformer file extensions list
50
+ *
51
+ * 定義哪些副檔名的檔案需要經過 ts-jest 轉換
52
+ * Defines which file extensions need to be transformed by ts-jest
53
+ *
54
+ * @returns {string[]} 轉換器檔案副檔名陣列 / Array of transformer file extensions
55
+ */
51
56
  function defaultTransformFileExtensions() {
52
57
  const value = ['ts', 'tsx', 'mts', 'cts'];
53
58
  return value;
54
59
  }
60
+ /**
61
+ * 取得預設的覆蓋率忽略路徑模式
62
+ * Get default coverage path ignore patterns
63
+ *
64
+ * 定義哪些路徑的檔案不納入覆蓋率統計
65
+ * Defines which paths are excluded from coverage statistics
66
+ *
67
+ * @returns {string[]} 覆蓋率忽略路徑模式陣列 / Array of coverage ignore patterns
68
+ */
55
69
  function defaultCoveragePathIgnorePatterns() {
56
- const value = ['/node_modules/', '/__snapshots__/', '/__tests__/', '/__test__/',
57
- //'**/node_modules/',
58
- //'**/__snapshots__/',
59
- //'**/__tests__/',
60
- '/dist/', '/test/', '/fixture/', '/__file_snapshots__/', '/__fixtures__/'];
70
+ const value = ['/node_modules/', '/__snapshots__/', '/__tests__/', '/__test__/', '/dist/', '/test/', '/fixture/', '/__file_snapshots__/', '/__fixtures__/'];
61
71
  return value;
62
72
  }
73
+ /**
74
+ * 取得預設的測試路徑忽略模式
75
+ * Get default test path ignore patterns
76
+ *
77
+ * 定義哪些路徑的檔案不會被視為測試檔案
78
+ * Defines which paths are excluded from test file recognition
79
+ *
80
+ * @returns {string[]} 測試路徑忽略模式陣列 / Array of test path ignore patterns
81
+ */
63
82
  function defaultTestPathIgnorePatterns() {
64
83
  const value = ['/node_modules/', '/__fixtures__/', '/__file_snapshots__/', '/fixtures/', '/__tests__/helpers/', '/__tests__/utils/', '__mocks__', '/dist/'];
65
84
  return value;
66
85
  }
67
- function defaultTransform(runtime) {
68
- const paths = [requireResolve.requireResolveExtra('@bluelovers/jest-config').result].filter(Boolean);
69
- const opts = {
70
- includeGlobal: true,
71
- includeCurrentDirectory: true,
72
- paths
73
- };
74
- let ts_transform = _requireResolve('ts-jest');
75
- ts_transform = [ts_transform, defaultTsJestTransformerOptions(runtime)];
76
- const {
77
- result: tsd
78
- } = requireResolve.requireResolveExtra('jest-tsd-transform', opts);
79
- if (tsd !== null && tsd !== void 0 && tsd.length) {
80
- const {
81
- result: chain
82
- } = requireResolve.requireResolveExtra('jest-chain-transform', opts);
83
- if (chain !== null && chain !== void 0 && chain.length) {
84
- ts_transform = [chain, {
85
- transformers: [tsd,
86
- // @ts-ignore
87
- ts_transform]
88
- }];
89
- }
90
- }
91
- const value = {
92
- [`.(${_handleFileExtensions(defaultTransformFileExtensions(), '|')})$`]: ts_transform
93
- };
94
- return value;
95
- }
96
86
 
87
+ /**
88
+ * 解析模組路徑的內部輔助函數
89
+ * Internal helper function for resolving module paths
90
+ *
91
+ * 優先從 @bluelovers/tsdx 或 tsdx 套件路徑中搜尋,若失敗則使用標準 require.resolve
92
+ * Searches from @bluelovers/tsdx or tsdx package paths first, falls back to standard require.resolve
93
+ *
94
+ * @param {string} name - 要解析的模組名稱 / Module name to resolve
95
+ * @returns {string} 解析後的模組絕對路徑 / Resolved absolute module path
96
+ */
97
97
  function _requireResolve(name) {
98
98
  const paths = [requireResolve.requireResolveExtra('@bluelovers/tsdx').result, requireResolve.requireResolveExtra('tsdx').result].filter(Boolean);
99
99
  const result = requireResolve.requireResolveCore(name, {
@@ -104,21 +104,64 @@
104
104
  debugColor2.console.debug('[require.resolve]', name, '=>', result);
105
105
  return result;
106
106
  }
107
+ function _requireResolve2(name) {
108
+ return requireResolve.requireResolveExtra(name, {
109
+ includeGlobal: true,
110
+ includeCurrentDirectory: true
111
+ });
112
+ }
113
+ /**
114
+ * 建立測試正則表達式配置
115
+ * Create test regex configuration
116
+ *
117
+ * 根據測試檔案副檔名生成 testMatch 和 testRegex 配置
118
+ * Generates testMatch and testRegex configs based on test file extensions
119
+ *
120
+ * @param {T} testExt - 測試檔案副檔名或陣列 / Test file extension(s)
121
+ * @returns {object} 包含 testMatch 和 testRegex 的配置物件 / Object containing testMatch and testRegex
122
+ */
107
123
  function makeTestRegexConfig(testExt) {
108
- var _testExt2;
109
- (_testExt2 = testExt) !== null && _testExt2 !== void 0 ? _testExt2 : testExt = defaultTestFileExtensions();
124
+ testExt !== null && testExt !== void 0 ? testExt : testExt = defaultTestFileExtensions();
110
125
  const _testExt = _handleFileExtensions(testExt, '|');
111
126
  return {
112
127
  testMatch: null,
113
128
  testRegex: [`\\.(tests?|spec)\\.(${_testExt})$`, `__tests__\/\.*\\.(tests?|spec)\\.(${_testExt})$`]
114
129
  };
115
130
  }
131
+ /**
132
+ * 處理檔案副檔名陣列的核心函數
133
+ * Core function for processing file extension arrays
134
+ *
135
+ * 將輸入轉換為唯一的副檔名陣列
136
+ * Converts input to unique array of extensions
137
+ *
138
+ * @param {T} testExt - 輸入的副檔名(可為陣列或單一值) / Input extension(s)
139
+ * @returns {T[]} 唯一的副檔名陣列 / Unique array of extensions
140
+ */
116
141
  function _handleFileExtensionsCore(testExt) {
117
142
  return arrayHyperUnique.array_unique([testExt].flat());
118
143
  }
144
+ /**
145
+ * 處理檔案副檔名並以指定分隔符連接
146
+ * Process file extensions and join with specified separator
147
+ *
148
+ * @param {T} testExt - 輸入的副檔名(可為陣列或單一值) / Input extension(s)
149
+ * @param {string} sep - 分隔符號 / Separator string
150
+ * @returns {string} 連接後的副檔名字串 / Joined extension string
151
+ */
119
152
  function _handleFileExtensions(testExt, sep) {
120
153
  return _handleFileExtensionsCore(testExt).join(sep);
121
154
  }
155
+ /**
156
+ * 修復 Jest 配置中的相容性問題
157
+ * Fix compatibility issues in Jest configuration
158
+ *
159
+ * 處理 testMatch/testRegex 互斥問題以及 testURL 已棄用選項的遷移
160
+ * Handles testMatch/testRegex mutual exclusivity and testURL deprecated option migration
161
+ *
162
+ * @param {T} jestConfig - 原始 Jest 配置 / Original Jest configuration
163
+ * @returns {T} 修復後的 Jest 配置 / Fixed Jest configuration
164
+ */
122
165
  function fixJestConfig(jestConfig) {
123
166
  if (jestConfig.testMatch) {
124
167
  jestConfig.testRegex = null;
@@ -126,7 +169,10 @@
126
169
  jestConfig.testMatch = null;
127
170
  }
128
171
  /**
129
- * Option "testURL" was replaced by passing the URL via "testEnvironmentOptions.url".
172
+ * testURL 選項已被 testEnvironmentOptions.url 取代
173
+ * testURL option has been replaced by testEnvironmentOptions.url
174
+ *
175
+ * @see https://jestjs.io/docs/configuration#testurl-string
130
176
  */
131
177
  if (jestConfig.testURL) {
132
178
  var _jestConfig$testEnvir, _jestConfig$testEnvir2, _url, _jestConfig$testEnvir3;
@@ -137,12 +183,21 @@
137
183
  }
138
184
 
139
185
  var name = "@bluelovers/jest-config";
140
- var version = "1.1.11";
186
+ var version = "1.1.13";
141
187
 
188
+ /**
189
+ * 建立無邊框表格實例
190
+ * Create borderless table instance
191
+ *
192
+ * 用於以整齊的格式顯示 Jest 配置資訊
193
+ * Used to display Jest configuration info in a neat format
194
+ *
195
+ * @param {TableConstructorOptions} options - 表格建構選項 / Table constructor options
196
+ * @returns {Table} 無邊框表格實例 / Borderless table instance
197
+ */
142
198
  function _newTableBorderless(options) {
143
199
  let table$1 = new table.Table({
144
200
  colAligns: ['right', 'left'],
145
- //colAligns: ['left', 'center', 'center', 'center'],
146
201
  chars: {
147
202
  top: '',
148
203
  'top-mid': '',
@@ -165,12 +220,22 @@
165
220
  table$1 = table.applyStyleBorderless(table$1);
166
221
  return table$1;
167
222
  }
223
+ /**
224
+ * 印出 Jest 配置資訊
225
+ * Print Jest configuration information
226
+ *
227
+ * 以表格格式顯示當前 Jest 配置的關鍵資訊,方便除錯和確認設定
228
+ * Displays key info of current Jest config in table format for debugging and verification
229
+ *
230
+ * @param {IJestConfig} jestConfig - Jest 配置物件 / Jest configuration object
231
+ * @param {IOptionsPrintJestConfigInfo} options - 印出選項 / Print options
232
+ */
168
233
  function printJestConfigInfo(jestConfig, options) {
169
- var _options, _jestConfig, _options$cwd, _options$file, _jestConfig$cacheDire, _jestConfig$rootDir, _jestConfig$roots, _jestConfig$preset;
234
+ var _options$cwd, _options$file, _jestConfig$cacheDire, _jestConfig$rootDir, _jestConfig$roots, _jestConfig$preset;
170
235
  const table = _newTableBorderless();
171
- (_options = options) !== null && _options !== void 0 ? _options : options = {};
236
+ options !== null && options !== void 0 ? options : options = {};
172
237
  // @ts-ignore
173
- (_jestConfig = jestConfig) !== null && _jestConfig !== void 0 ? _jestConfig : jestConfig = {};
238
+ jestConfig !== null && jestConfig !== void 0 ? jestConfig : jestConfig = {};
174
239
  table.push([`${name}:`, version]);
175
240
  table.push([`process.versions.node:`, process.versions.node]);
176
241
  table.push(['cwd:', (_options$cwd = options.cwd) !== null && _options$cwd !== void 0 ? _options$cwd : process.cwd()]);
@@ -188,51 +253,198 @@
188
253
  debugColor2.console.gray.log('─'.repeat(20));
189
254
  }
190
255
 
256
+ /**
257
+ * 取得預設的 ts-jest 轉換器選項
258
+ * Get default ts-jest transformer options
259
+ *
260
+ * 此函數會合併使用者自定義的 ts-jest 設定與預設值,確保測試環境的最佳配置
261
+ * This function merges user custom ts-jest settings with defaults for optimal test environment
262
+ *
263
+ * 主要調整項目:
264
+ * - 禁用輸出檔案(noEmit: true)
265
+ * - 允許未使用的參數和標籤(用於測試開發)
266
+ * - 禁用嚴格的型別檢查選項(確保測試能順利執行)
267
+ *
268
+ * Key adjustments:
269
+ * - Disable file output (noEmit: true)
270
+ * - Allow unused parameters and labels (for test development)
271
+ * - Disable strict type checking options (ensure tests run smoothly)
272
+ *
273
+ * @param runtime - 執行時期配置,包含原始 Jest 配置 / Runtime configuration containing original Jest config
274
+ * @returns ts-jest 轉換器選項 / ts-jest transformer options
275
+ */
276
+ function defaultTsJestTransformerOptions(runtime) {
277
+ var _runtime$jestConfig$g, _runtime$jestConfig$g2, _tsconfig$types;
278
+ const old = (_runtime$jestConfig$g = (_runtime$jestConfig$g2 = runtime.jestConfig.globals) === null || _runtime$jestConfig$g2 === void 0 ? void 0 : _runtime$jestConfig$g2['ts-jest']) !== null && _runtime$jestConfig$g !== void 0 ? _runtime$jestConfig$g : {};
279
+ const tsconfig = typeof old.tsconfig === 'object' ? old.tsconfig : {};
280
+ const types = arrayHyperUnique.array_unique([...((_tsconfig$types = tsconfig.types) !== null && _tsconfig$types !== void 0 ? _tsconfig$types : []), 'jest']);
281
+ return {
282
+ ...old,
283
+ tsconfig: {
284
+ noEmit: true,
285
+ emitDeclarationOnly: false,
286
+ noUnusedParameters: false,
287
+ allowUnusedLabels: true,
288
+ noUnusedLocals: false,
289
+ noPropertyAccessFromIndexSignature: false,
290
+ noImplicitAny: false,
291
+ ...tsconfig,
292
+ types
293
+ }
294
+ };
295
+ }
296
+
297
+ /**
298
+ * 建立預設的轉換器配置
299
+ * Create default transformer configuration
300
+ *
301
+ * 配置 ts-jest 作為主要轉換器,並在可用時整合 jest-tsd-transform 和 jest-chain-transform
302
+ * Configures ts-jest as the main transformer, integrating jest-tsd-transform and jest-chain-transform when available
303
+ *
304
+ * @param {IRuntime} runtime - 執行時期配置 / Runtime configuration
305
+ * @returns {object} 轉換器配置物件 / Transformer configuration object
306
+ */
307
+ function defaultTransform(runtime) {
308
+ const paths = [requireResolve.requireResolveExtra('@bluelovers/jest-config').result].filter(Boolean);
309
+ const opts = {
310
+ includeGlobal: true,
311
+ includeCurrentDirectory: true,
312
+ paths
313
+ };
314
+ let ts_transform = _requireResolve('ts-jest');
315
+ ts_transform = [ts_transform, defaultTsJestTransformerOptions(runtime)];
316
+ const {
317
+ result: tsd
318
+ } = requireResolve.requireResolveExtra('jest-tsd-transform', opts);
319
+ if (tsd !== null && tsd !== void 0 && tsd.length) {
320
+ const {
321
+ result: chain
322
+ } = requireResolve.requireResolveExtra('jest-chain-transform', opts);
323
+ if (chain !== null && chain !== void 0 && chain.length) {
324
+ ts_transform = [chain, {
325
+ transformers: [tsd,
326
+ // @ts-ignore
327
+ ts_transform]
328
+ }];
329
+ }
330
+ }
331
+ const value = {
332
+ [`.(${_handleFileExtensions(defaultTransformFileExtensions(), '|')})$`]: ts_transform
333
+ };
334
+ return value;
335
+ }
336
+
337
+ /**
338
+ * Detects all values in an array that include any of the given keys.
339
+ *
340
+ * @example
341
+ * const arr = ['abc', 'def', 'ghi'];
342
+ * const keys = ['a', 'e', 'i'];
343
+ * const result = detectIncludes(arr, keys);
344
+ * // result is { a: ['abc', 'def'], e: ['def', 'ghi'], i: ['abc', 'ghi'] }
345
+ *
346
+ * @param arr - The array to search.
347
+ * @param keys - The keys to search for.
348
+ * @returns An object with the keys as properties and the
349
+ * corresponding values as arrays of strings.
350
+ */
351
+ function detectIncludes(arr, keys) {
352
+ let result = {};
353
+ if (arr !== null && arr !== void 0 && arr.length) {
354
+ if (keys.length) {
355
+ keys = Array.isArray(keys) ? keys : [keys];
356
+ const re = new RegExp(`(${escapeArrayToRegExpSource(keys)})`);
357
+ arr.forEach(value => {
358
+ var _match, _ref;
359
+ let m = value === null || value === void 0 || (_match = (_ref = value).match) === null || _match === void 0 ? void 0 : _match.call(_ref, re);
360
+ if (m) {
361
+ var _result$k;
362
+ const k = m[1];
363
+ ((_result$k = result[k]) !== null && _result$k !== void 0 ? _result$k : result[k] = []).push(value);
364
+ }
365
+ return result;
366
+ });
367
+ }
368
+ }
369
+ return result;
370
+ }
371
+ /**
372
+ * Escapes all strings in an array to be used in a regular expression source.
373
+ *
374
+ * @example
375
+ * const arr = ['abc', 'def', 'ghi'];
376
+ * const result = escapeArrayToRegExpSource(arr);
377
+ * // result is 'abc|def|ghi'
378
+ *
379
+ * @param arr - The array of strings to escape.
380
+ * @returns A single string that can be used as a regular expression source.
381
+ */
382
+ function escapeArrayToRegExpSource(arr) {
383
+ return arr.map(s => regexpHelperCore.escapeRegExp(s)).join("|");
384
+ }
385
+
386
+ function defaultSetupFiles(runtime) {
387
+ var _runtime$jestConfig, _jestConfig$setupFile, _jestConfig$setupFile2;
388
+ const jestConfig = (_runtime$jestConfig = runtime === null || runtime === void 0 ? void 0 : runtime.jestConfig) !== null && _runtime$jestConfig !== void 0 ? _runtime$jestConfig : {};
389
+ let detect = detectIncludes(jestConfig.setupFiles, 'dotenv');
390
+ const setupFiles = [
391
+ /**
392
+ * @see https://lusbuab.medium.com/using-dotenv-with-jest-7e735b34e55f
393
+ */
394
+ !detect['dotenv'] && _requireResolve2('dotenv/config').result, ...((_jestConfig$setupFile = jestConfig.setupFiles) !== null && _jestConfig$setupFile !== void 0 ? _jestConfig$setupFile : [])].filter(Boolean);
395
+ const setupFilesAfterEnv = [
396
+ /**
397
+ * 跨平台測試支援參考 / Cross-platform testing support reference
398
+ * @see https://medium.com/doctolib/how-to-run-the-same-jest-test-suite-across-several-platforms-jest-os-detection-plugin-included-f8113832482b
399
+ * @see https://github.com/doctolib/jest-os-detection
400
+ */
401
+ ...((_jestConfig$setupFile2 = jestConfig.setupFilesAfterEnv) !== null && _jestConfig$setupFile2 !== void 0 ? _jestConfig$setupFile2 : [])].filter(Boolean);
402
+ const ret = {};
403
+ if (setupFiles.length) {
404
+ ret.setupFiles = setupFiles;
405
+ }
406
+ if (setupFilesAfterEnv.length) {
407
+ ret.setupFilesAfterEnv = setupFilesAfterEnv;
408
+ }
409
+ return ret;
410
+ }
411
+
191
412
  const cacheDirectory = /*#__PURE__*/jestCacheDirectory.getJestCacheDirectory();
413
+ /**
414
+ * 混合 Jest 配置函數 - 將預設配置與使用者自定義配置合併
415
+ * Mix Jest configuration function - Merges default config with user custom config
416
+ *
417
+ * 此函數提供了一個完整的 Jest 配置模板,包含 TypeScript 支援、快取管理、覆蓋率收集等功能
418
+ * This function provides a complete Jest configuration template with TypeScript support,
419
+ * cache management, coverage collection, and more.
420
+ *
421
+ * @param {T} jestConfig - 使用者自定義的 Jest 配置 / User custom Jest configuration
422
+ * @param {boolean} autoPrint - 是否自動印出配置資訊 / Whether to auto print config info
423
+ * @param {IOptionsPrintJestConfigInfo} options - 印出配置的選項 / Options for printing config
424
+ * @returns {T} 合併後的完整 Jest 配置 / Merged complete Jest configuration
425
+ */
192
426
  function mixinJestConfig(jestConfig, autoPrint, options) {
193
- var _jestConfig, _newJestConfig$transf;
427
+ var _newJestConfig$transf;
194
428
  // @ts-ignore
195
- (_jestConfig = jestConfig) !== null && _jestConfig !== void 0 ? _jestConfig : jestConfig = {};
429
+ jestConfig !== null && jestConfig !== void 0 ? jestConfig : jestConfig = {};
196
430
  const newJestConfig = fixJestConfig({
197
- globals: {
198
- // 'ts-jest': {
199
- // //tsconfig: 'tsconfig.spec.json',
200
- // },
201
- },
431
+ globals: {},
202
432
  cacheDirectory,
203
433
  maxWorkers: 1,
204
434
  clearMocks: true,
205
435
  passWithNoTests: true,
206
436
  moduleFileExtensions: defaultModuleFileExtensions(),
207
- //testEnvironment: 'node',
208
- //testMatch: ['**/*.test.ts', '**/*.spec.ts'],
209
437
  ...makeTestRegexConfig(defaultTestFileExtensions()),
210
438
  testPathIgnorePatterns: defaultTestPathIgnorePatterns(),
211
- //testRunner: 'jest-circus/runner',
212
- setupFilesAfterEnv: [
213
- //"jest-chain",
214
- //"jest-extended/all",
215
- //"jest-extended-extra",
216
- //"jest-num-close-with",
217
- /**
218
- * https://medium.com/doctolib/how-to-run-the-same-jest-test-suite-across-several-platforms-jest-os-detection-plugin-included-f8113832482b
219
- * https://github.com/doctolib/jest-os-detection
220
- */
221
- //'jest-os-detection',
222
- ],
223
- //transform: defaultTransform(),
439
+ ...defaultSetupFiles(),
224
440
  verbose: true,
225
- /**
226
- * if didn't set `coverageProvider` to `v8`
227
- * with `collectCoverage` `true`, nodejs debug point maybe will fail
228
- */
229
441
  coverageProvider: 'v8',
230
442
  collectCoverage: false,
231
443
  coveragePathIgnorePatterns: defaultCoveragePathIgnorePatterns(),
232
444
  /**
233
- * https://github.com/facebook/jest/issues/9771#issuecomment-872764344
445
+ * Jest 模組解析器參考 / Jest module resolver reference
446
+ * @see https://github.com/facebook/jest/issues/9771#issuecomment-872764344
234
447
  */
235
- //resolver: 'jest-node-exports-resolver',
236
448
  ...jestConfig
237
449
  });
238
450
  (_newJestConfig$transf = newJestConfig.transform) !== null && _newJestConfig$transf !== void 0 ? _newJestConfig$transf : newJestConfig.transform = defaultTransform({
@@ -249,11 +461,13 @@
249
461
  exports._handleFileExtensionsCore = _handleFileExtensionsCore;
250
462
  exports._newTableBorderless = _newTableBorderless;
251
463
  exports._requireResolve = _requireResolve;
464
+ exports._requireResolve2 = _requireResolve2;
252
465
  exports.cacheDirectory = cacheDirectory;
253
466
  exports.default = mixinJestConfig;
254
467
  exports.defaultCoverageFileExtensions = defaultCoverageFileExtensions;
255
468
  exports.defaultCoveragePathIgnorePatterns = defaultCoveragePathIgnorePatterns;
256
469
  exports.defaultModuleFileExtensions = defaultModuleFileExtensions;
470
+ exports.defaultSetupFiles = defaultSetupFiles;
257
471
  exports.defaultTestFileExtensions = defaultTestFileExtensions;
258
472
  exports.defaultTestPathIgnorePatterns = defaultTestPathIgnorePatterns;
259
473
  exports.defaultTransform = defaultTransform;