arui-scripts 23.2.0 → 23.3.0

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,24 +1,24 @@
1
1
  ts-jest[versions] (WARN) Version 6.0.2 of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=4.3.0 <6.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
2
2
  ts-jest[versions] (WARN) Version 6.0.2 of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=4.3.0 <6.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
3
3
  ts-jest[versions] (WARN) Version 6.0.2 of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=4.3.0 <6.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
4
- PASS src/bin/__tests__/create-cli.tests.ts (33.121 s)
5
- PASS src/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts (33.348 s)
6
- PASS src/configs/util/__tests__/create-watch-ignore-regex.tests.ts
4
+ PASS src/bin/__tests__/create-cli.tests.ts (32.447 s)
7
5
  PASS src/configs/app-configs/__tests__/update-with-presets.tests.ts
8
- PASS src/configs/app-configs/__tests__/update-with-env.tests.ts
6
+ PASS src/configs/util/__tests__/create-watch-ignore-regex.tests.ts
7
+ PASS src/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts (32.626 s)
9
8
  PASS src/configs/util/__tests__/apply-overrides.tests.ts
9
+ PASS src/configs/app-configs/__tests__/update-with-env.tests.ts
10
10
  PASS src/configs/app-configs/__tests__/update-with-package.tests.ts
11
11
  PASS src/configs/util/__tests__/compress-with-dcb.test.ts
12
12
  PASS src/configs/util/__tests__/get-polyfills.tests.ts
13
13
  PASS src/plugins/postcss-global-variables/utils/__tests__/parse-variables.tests.ts
14
14
  PASS src/plugins/postcss-global-variables/utils/__tests__/get-media-query-name.tests.ts
15
15
  PASS src/configs/app-configs/__tests__/validate-settings-keys.tests.ts
16
- PASS src/configs/__tests__/webpack-client-modules.tests.ts (11.904 s)
17
- PASS src/configs/util/__tests__/find-plugin.tests.ts (46.13 s)
16
+ PASS src/configs/__tests__/webpack-client-modules.tests.ts (9.936 s)
17
+ PASS src/configs/util/__tests__/find-plugin.tests.ts (43.865 s)
18
18
  A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper teardown. Try running with --detectOpenHandles to find leaks. Active timers can also cause this, ensure that .unref() was called on them.
19
19
 
20
20
  Test Suites: 14 passed, 14 total
21
21
  Tests: 37 passed, 37 total
22
22
  Snapshots: 0 total
23
- Time: 48.013 s
23
+ Time: 45.272 s
24
24
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # arui-scripts
2
2
 
3
+ ## 23.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#561](https://github.com/core-ds/arui-scripts/pull/561) [`98a2da5`](https://github.com/core-ds/arui-scripts/commit/98a2da587e1f0bc1d9b053cf509d96379b2e9af2) Thanks [@heymdall-legal](https://github.com/heymdall-legal)! - Добавлена настройка `jestTransformNodeModules` — список пакетов из `node_modules`, которые нужно прогонять
8
+ через трансформер при запуске тестов. Нужна для зависимостей, публикующихся только в формате ESM: рантайм jest
9
+ работает в CommonJS, а его нативный ESM-режим до сих пор требует `--experimental-vm-modules`.
10
+ По умолчанию `[]`, поведение не меняется.
11
+
3
12
  ## 23.2.0
4
13
 
5
14
  ### Minor Changes
@@ -58,6 +58,7 @@ function getDefaultAppConfig() {
58
58
  installServerSourceMaps: false,
59
59
  disableDevRspackTypecheck: true,
60
60
  jestCodeTransformer: 'swc',
61
+ jestTransformNodeModules: [],
61
62
  collectCoverage: process.env.NODE_ENV === 'cypress' || process.env.USE_ISTANBUL === 'enabled',
62
63
  // image processing
63
64
  dataUrlMaxSize: 1536,
@@ -48,6 +48,7 @@ export type AppConfigs = {
48
48
  /** @deprecated используйте `disableDevRspackTypecheck` */
49
49
  disableDevWebpackTypecheck?: boolean;
50
50
  jestCodeTransformer: 'babel' | 'tsc' | 'swc';
51
+ jestTransformNodeModules: string[];
51
52
  collectCoverage: boolean;
52
53
  dataUrlMaxSize?: number;
53
54
  imageMinimizer?: {
@@ -10,6 +10,7 @@ export let transform: {
10
10
  '^.+\\.tsx?$': string | (string | import("@swc/types").Options)[];
11
11
  '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': string;
12
12
  };
13
+ export let transformIgnorePatterns: string[];
13
14
  export let moduleNameMapper: {
14
15
  '\\.css$': string;
15
16
  };
@@ -9,6 +9,9 @@ const { pathsToModuleNameMapper } = require('ts-jest');
9
9
  const { parseConfigFileTextToJson } = require('typescript');
10
10
  const { swcJestConfig } = require('../swc');
11
11
  const { configs } = require('../app-configs');
12
+ // Значения по умолчанию из самого jest, см. https://jestjs.io/docs/configuration#transformignorepatterns-arraystring
13
+ const PNP_TRANSFORM_IGNORE_PATTERN = '\\.pnp\\.[^\\\\/]+$';
14
+ const DEFAULT_TRANSFORM_IGNORE_PATTERNS = ['/node_modules/', PNP_TRANSFORM_IGNORE_PATTERN];
12
15
  module.exports = {
13
16
  testRegex: 'src/.*(((/__test__/|/__tests__/).*)|(test|spec|tests)).(jsx?|tsx?)$',
14
17
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
@@ -22,6 +25,7 @@ module.exports = {
22
25
  '^.+\\.tsx?$': getTsTransformer(),
23
26
  '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': require.resolve('./file-transform'),
24
27
  },
28
+ transformIgnorePatterns: getTransformIgnorePatterns(),
25
29
  moduleNameMapper: Object.assign({
26
30
  // replace all css files with simple empty exports
27
31
  '\\.css$': require.resolve('./css-mock') }, pathsToModuleNameMapper(getPathMapping(), { prefix: '<rootDir>/' })),
@@ -56,3 +60,17 @@ function getJsTransformer() {
56
60
  }
57
61
  return require.resolve('./babel-transform');
58
62
  }
63
+ function getTransformIgnorePatterns() {
64
+ const packages = configs.jestTransformNodeModules;
65
+ if (!packages || packages.length === 0) {
66
+ return DEFAULT_TRANSFORM_IGNORE_PATTERNS;
67
+ }
68
+ const list = packages.map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|');
69
+ // Игнорируем всё в node_modules, кроме путей, содержащих /node_modules/<пакет>/.
70
+ // Вхождение ищется в любом месте пути, чтобы работали вложенные установки
71
+ // вида node_modules/foo/node_modules/uuid.
72
+ return [
73
+ `^(?!.*[\\\\/]node_modules[\\\\/](?:${list})[\\\\/]).*[\\\\/]node_modules[\\\\/]`,
74
+ PNP_TRANSFORM_IGNORE_PATTERN,
75
+ ];
76
+ }
package/docs/settings.md CHANGED
@@ -271,6 +271,28 @@ const packageSettings = {
271
271
  - `swc` - для всего кода будет использоваться `@swc/jest`.
272
272
  Swc более строго следует спецификациям и [не дает возможности](https://github.com/swc-project/swc/issues/5059) делать `spyOn` для экспортов из esm модулей.
273
273
 
274
+ #### jestTransformNodeModules
275
+ Список пакетов из `node_modules`, которые нужно прогонять через трансформер при запуске тестов. По умолчанию `[]`.
276
+
277
+ ```js
278
+ module.exports = {
279
+ jestTransformNodeModules: ['uuid', '@scope/some-package'],
280
+ };
281
+ ```
282
+
283
+ Нужно для пакетов, которые публикуются только в формате ESM (`"type": "module"` без CommonJS сборки).
284
+ По умолчанию jest не трансформирует ничего внутри `node_modules`, а его рантайм — CommonJS: он оборачивает
285
+ файл в `function(module, exports, require, ...)` и выполняет его, поэтому на ESM-коде падает с
286
+ `SyntaxError: Unexpected token 'export'`. Собственный `require(esm)` из Node тут не помогает — jest его не использует,
287
+ а нативный ESM-режим самого jest до сих пор требует запуска ноды с `--experimental-vm-modules`.
288
+
289
+ Настройка добавляет перечисленные пакеты в исключения `transformIgnorePatterns`, так что их код будет обработан
290
+ тем же трансформером, который выбран в [jestCodeTransformer](#jestcodetransformer). Вложенные установки
291
+ (`node_modules/foo/node_modules/uuid`) тоже учитываются.
292
+
293
+ Если нужно что-то более тонкое, `transformIgnorePatterns` по-прежнему можно задать напрямую — через ключ `jest`
294
+ в `package.json` или через `jest.config.js`, настройки приложения имеют приоритет над пресетом.
295
+
274
296
  #### collectCoverage
275
297
  Добавлять ли инструменты для сборки coverage при сборке. По умолчанию определяется по env переменным - будет выставлено в `true` если `NODE_ENV = 'cypress'` или `USE_ISTANBUL = 'enabled'`.
276
298
  Сбор coverage не будет работать при использовании `codeLoader=tsc`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arui-scripts",
3
- "version": "23.2.0",
3
+ "version": "23.3.0",
4
4
  "main": "./build/index.js",
5
5
  "typings": "./build/index.d.ts",
6
6
  "exports": {
@@ -116,7 +116,7 @@
116
116
  "style-loader": "3.3.3",
117
117
  "swc-loader": "^0.2.6",
118
118
  "swc-plugin-coverage-instrument": "0.0.32",
119
- "tar": "7.5.16",
119
+ "tar": "7.5.21",
120
120
  "terser-webpack-plugin": "5.3.14",
121
121
  "ts-checker-rspack-plugin": "^1.3.0",
122
122
  "ts-jest": "29.1.0",