arui-scripts 0.0.0-next-multiple-node-20260208170835 → 0.0.0-next-20260709074302

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.
Files changed (74) hide show
  1. package/.turbo/turbo-test.log +12 -7
  2. package/CHANGELOG.md +213 -3
  3. package/README.md +14 -2
  4. package/build/bin/index.d.ts +1 -2
  5. package/build/bin/index.js +2 -0
  6. package/build/commands/build/client.js +2 -2
  7. package/build/commands/build/server.js +2 -2
  8. package/build/commands/bundle-analyze/index.js +14 -0
  9. package/build/commands/changelog/index.js +17 -7
  10. package/build/commands/ensure-yarn/index.d.ts +1 -0
  11. package/build/commands/ensure-yarn/index.js +1 -0
  12. package/build/commands/test/get-config.js +4 -25
  13. package/build/commands/test/index.js +17 -7
  14. package/build/commands/test-vitest/index.d.ts +1 -0
  15. package/build/commands/test-vitest/index.js +15 -0
  16. package/build/commands/util/get-local-ident.d.ts +6 -0
  17. package/build/commands/util/get-local-ident.js +29 -0
  18. package/build/commands/util/print-build-error.d.ts +1 -0
  19. package/build/commands/util/print-build-error.js +32 -0
  20. package/build/commands/util/run-client-dev-server.js +5 -2
  21. package/build/commands/util/run-vitest.d.ts +7 -0
  22. package/build/commands/util/run-vitest.js +41 -0
  23. package/build/configs/app-configs/get-defaults.js +7 -4
  24. package/build/configs/app-configs/types.d.ts +4 -2
  25. package/build/configs/dev-server.js +31 -28
  26. package/build/configs/jest/babel-transform.d.ts +1 -1
  27. package/build/configs/modules-css-manifest.d.ts +11 -0
  28. package/build/configs/modules-css-manifest.js +14 -0
  29. package/build/configs/modules.d.ts +1 -0
  30. package/build/configs/modules.js +43 -10
  31. package/build/configs/postcss.config.d.ts +3 -1
  32. package/build/configs/postcss.d.ts +6 -1
  33. package/build/configs/postcss.js +17 -2
  34. package/build/configs/process-assets-plugin-output.js +10 -4
  35. package/build/configs/server-externals-exemptions.js +1 -1
  36. package/build/configs/swc.js +1 -1
  37. package/build/configs/util/apply-overrides.d.ts +3 -3
  38. package/build/configs/util/compress-with-dcb.d.ts +1 -1
  39. package/build/configs/util/dcb-compression-plugin.d.ts +2 -3
  40. package/build/configs/util/find-plugin.d.ts +5 -12
  41. package/build/configs/util/find-plugin.js +7 -8
  42. package/build/configs/util/node-assets-ignore.d.ts +1 -0
  43. package/build/configs/util/node-assets-ignore.js +1 -0
  44. package/build/configs/util/register-ts-node.d.ts +1 -0
  45. package/build/configs/util/register-ts-node.js +4 -3
  46. package/build/configs/vitest/config.d.ts +2 -0
  47. package/build/configs/vitest/config.js +5 -0
  48. package/build/configs/vitest/settings.d.ts +30 -0
  49. package/build/configs/vitest/settings.js +77 -0
  50. package/build/configs/webpack.client.d.ts +1 -1
  51. package/build/configs/webpack.client.dev.d.ts +1 -1
  52. package/build/configs/webpack.client.dev.js +1 -1
  53. package/build/configs/webpack.client.js +26 -16
  54. package/build/configs/webpack.client.prod.d.ts +1 -1
  55. package/build/configs/webpack.client.prod.js +1 -1
  56. package/build/configs/webpack.server.dev.d.ts +1 -1
  57. package/build/configs/webpack.server.dev.js +1 -1
  58. package/build/configs/webpack.server.js +4 -9
  59. package/build/configs/webpack.server.prod.d.ts +1 -1
  60. package/build/configs/webpack.server.prod.js +1 -1
  61. package/build/index.d.ts +2 -1
  62. package/build/index.js +3 -1
  63. package/build/plugins/attribute-module-css.d.ts +35 -0
  64. package/build/plugins/attribute-module-css.js +109 -0
  65. package/docs/caveats.md +2 -2
  66. package/docs/commands.md +35 -1
  67. package/docs/modules.md +191 -0
  68. package/docs/presets.md +2 -2
  69. package/docs/settings.md +8 -1
  70. package/package.json +62 -24
  71. package/tsconfig-local.json +6 -2
  72. package/tsconfig-local.tsbuildinfo +1 -0
  73. package/tsconfig.json +1 -41
  74. package/build/tsconfig-local.tsbuildinfo +0 -1
@@ -1,18 +1,23 @@
1
- PASS src/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts (27.688 s)
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
+ 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
+ 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/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts (27.791 s)
5
+ PASS src/configs/app-configs/__tests__/update-with-presets.tests.ts
2
6
  PASS src/configs/util/__tests__/create-watch-ignore-regex.tests.ts
3
7
  PASS src/configs/util/__tests__/apply-overrides.tests.ts
4
8
  PASS src/configs/app-configs/__tests__/update-with-env.tests.ts
5
- PASS src/configs/app-configs/__tests__/update-with-presets.tests.ts (28.258 s)
9
+ PASS src/plugins/__tests__/attribute-module-css.tests.ts (35.59 s)
6
10
  PASS src/configs/app-configs/__tests__/update-with-package.tests.ts
7
11
  PASS src/configs/util/__tests__/compress-with-dcb.test.ts
8
12
  PASS src/configs/util/__tests__/get-polyfills.tests.ts
9
- PASS src/plugins/postcss-global-variables/utils/__tests__/get-media-query-name.tests.ts
10
13
  PASS src/plugins/postcss-global-variables/utils/__tests__/parse-variables.tests.ts
14
+ PASS src/plugins/postcss-global-variables/utils/__tests__/get-media-query-name.tests.ts
11
15
  PASS src/configs/app-configs/__tests__/validate-settings-keys.tests.ts
12
- PASS src/configs/util/__tests__/find-plugin.tests.ts (30.493 s)
16
+ PASS src/configs/__tests__/webpack-client-modules.tests.ts (9.979 s)
17
+ PASS src/configs/util/__tests__/find-plugin.tests.ts (39.212 s)
13
18
 
14
- Test Suites: 12 passed, 12 total
15
- Tests: 30 passed, 30 total
19
+ Test Suites: 14 passed, 14 total
20
+ Tests: 37 passed, 37 total
16
21
  Snapshots: 0 total
17
- Time: 31.542 s
22
+ Time: 40.445 s
18
23
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -1,10 +1,220 @@
1
- # [15.3.0](https://github.com/core-ds/arui-scripts/compare/v15.2.0...v15.3.0) (2023-06-30)
1
+ # arui-scripts
2
2
 
3
- ## 0.0.0-next-multiple-node-20260208170835
3
+ ## 0.0.0-next-20260709074302
4
+
5
+ ### Minor Changes
6
+
7
+ - [#532](https://github.com/core-ds/arui-scripts/pull/532) [`331ff349`](https://github.com/core-ds/arui-scripts/commit/331ff3490d12dc334486a445479d9c47a9532c5b) Thanks [@heymdall-legal](https://github.com/heymdall-legal)! - CSS module-federation модулей теперь попадает в манифест сборки на уровне каждого модуля.
8
+ Раньше стили модуля не были привязаны к его записи в манифесте, из-за чего хост-сервер не мог
9
+ отдать их при серверном рендере, и модуль отрисовывался без стилей до загрузки на клиенте.
10
+ Теперь стили доступны в записи модуля и могут быть встроены при SSR. Изменение аддитивно: для
11
+ сборок без модулей и для не-SSR потребления манифест остаётся прежним.
12
+
13
+ Подробнее: [SSR-спецификация модулей, раздел 10](../docs/specs/ssr-spec.md#10-addendum-css-delivery-for-module-federation-modules)..
14
+
15
+ ## 23.0.2
16
+
17
+ ### Patch Changes
18
+
19
+ - [#512](https://github.com/core-ds/arui-scripts/pull/512) [`e2b0ee1`](https://github.com/core-ds/arui-scripts/commit/e2b0ee1d3376e359a7e466de7a5d3c37ed672684) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - Исправлен запуск команды `bundle-analyze`. Теперь явно включаются необходимые поля stats для `webpack-bundle-analyzer`, которые больше не попадают в `stats.toJson()` по умолчанию
20
+
21
+ ## 23.0.1
22
+
23
+ ### Patch Changes
24
+
25
+ - [#513](https://github.com/core-ds/arui-scripts/pull/513) [`fb3dcef`](https://github.com/core-ds/arui-scripts/commit/fb3dcef62e38e71da665175d2aef42fa00b95040) Thanks [@evK608](https://github.com/evK608)! - Исправление конфликта runtime-чанков между основной сборкой и отдельной WMF-сборкой при использовании modules.options.useSeparateBuild
26
+
27
+ ## 23.0.0
28
+
29
+ ### Major Changes
30
+
31
+ - [#507](https://github.com/core-ds/arui-scripts/pull/507) [`ed3c42b`](https://github.com/core-ds/arui-scripts/commit/ed3c42b75644b626fbfeb40fb6944160a33f84b1) Thanks [@heymdall-legal](https://github.com/heymdall-legal)! - SWC больше не использует loose режим по умолчанию. Это меняет то, как именно собирается код.
32
+
33
+ ### Что это означает:
34
+
35
+ Если вы не делали вещей, противоречащих спеке - все должно остаться как прежде. Если же нет - вам придется модифицировать ваш код.
36
+ Не-loose режим генерирует немного больше кода: 3% в несжатом виде, 0.3% для gzip/brotli.
37
+
38
+ Если ошибки проявляются в коде, который вы не можете контролировать:
39
+
40
+ 1. Сообщите об этом в чате arui-scripts
41
+ 2. Используйте оверрайды, чтобы включить loose режим.
42
+
43
+ ### Краткое описание того, что меняется в не-loose режиме:
44
+
45
+ - Приватные поля классов (`#private`) теперь будут создаваться через `WeakMap` и их действительно невозможно будет прочитать снаружи.
46
+ - Публичные поля классов (`class Foo { x = 1 }`) теперь создаются через `Object.defineProperty`, а не простым присваиванием `this.x = 1`. Это корректно по спецификации, но медленнее.
47
+ - Компилятор больше не предполагает, что суперкласс статичен — добавляются рантаймовые проверки на случай, если цепочка прототипов меняется через `setPrototypeOf`.
48
+ - Операторы `?.` и `??` теперь корректно обрабатывают `document.all`: вместо `== null` используется строгая проверка `=== null || === undefined`.
49
+ - Геттеры свойств могут иметь побочные эффекты, поэтому компилятор кеширует промежуточный результат во временную переменную, чтобы не вызывать геттер дважды.
50
+ - При rest-деструктуризации символьные ключи тоже копируются в `rest`. Используется полный хелпер `objectWithoutProperties`.
51
+ - Object spread (`{ ...obj }`) теперь клонирует дескрипторы свойств через `Object.defineProperty` вместо `Object.assign`. Медленнее, но точнее воспроизводит оригинальные дескрипторы.
52
+ - Компилятор явно задаёт `.name` у функциональных выражений через `Object.defineProperty`, как того требует спецификация.
53
+ - Компилятор корректно имитирует `.length` функции с учётом параметров по умолчанию — через обращение к `arguments`.
54
+ - Шаблонные строки используют `.concat()` вместо `+`, что корректно учитывает возможное переопределение `Symbol.toPrimitive` на объекте.
55
+ - Объект тегового шаблона замораживается через `Object.freeze`, как требует спецификация.
56
+ - В каждый конструктор класса добавляется проверка `_classCallCheck`, которая выбрасывает ошибку при вызове класса без `new`.
57
+ - Методы добавляются на прототип через `Object.defineProperty` с `enumerable: false`, что соответствует спецификации.
58
+ - `super()` компилируется через `Reflect.construct` вместо `.call()`, что позволяет корректно наследоваться от нативных классов (`Array`, `Error` и т.п.).
59
+ - Итерируемые объекты обходятся через полный итераторный протокол (`Symbol.iterator`), а не прямой индексный доступ. Корректно работает с `Set`, `Map`, генераторами и любыми кастомными итерируемыми.
60
+
61
+ Подробности можно прочитать в документации [swc](https://swc.rs/docs/configuration/compilation#jscloose) и [babel](https://babeljs.io/docs/assumptions)
62
+
63
+ ## 22.4.0
64
+
65
+ ### Minor Changes
66
+
67
+ - [#500](https://github.com/core-ds/arui-scripts/pull/500) [`c8662df`](https://github.com/core-ds/arui-scripts/commit/c8662df4ad59ee602069679ad80b8445513263ac) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - добавлен экспорт типа CompatModuleConfig
68
+
69
+ ## 22.3.0
70
+
71
+ ### Minor Changes
72
+
73
+ - [#498](https://github.com/core-ds/arui-scripts/pull/498) [`807e9a8`](https://github.com/core-ds/arui-scripts/commit/807e9a85d8753611c7cfeb7c38fdede28a970901) Thanks [@qrik116](https://github.com/qrik116)! - Добавлена настройка `nodeExternals` для настройки **webpack-node-externals** в конфигурации сервера
74
+
75
+ ## 22.2.0
76
+
77
+ ### Minor Changes
78
+
79
+ - [#493](https://github.com/core-ds/arui-scripts/pull/493) [`800b5db`](https://github.com/core-ds/arui-scripts/commit/800b5db0b5e2387aed2092ef54bbf01b58f11c50) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - добавлен рееэкспорт patchMainWebpackConfigForModules для публичного api, для исправления ошибки ERR_PACKAGE_PATH_NOT_EXPORTED в проектах. если нужна функция patchMainWebpackConfigForModules, то используйте `import { patchMainWebpackConfigForModules } from 'arui-scripts'`
80
+
81
+ ## 22.1.1
82
+
83
+ ### Patch Changes
84
+
85
+ - [#495](https://github.com/core-ds/arui-scripts/pull/495) [`3a00087`](https://github.com/core-ds/arui-scripts/commit/3a00087aa6e8ade68f9e5d2781641f33caca50d7) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - удален неиспользуемый импорт get-port в файле run-client-dev-server.ts
86
+
87
+ ## 22.1.0
88
+
89
+ ### Minor Changes
90
+
91
+ - [#426](https://github.com/core-ds/arui-scripts/pull/426) [`48ff487`](https://github.com/core-ds/arui-scripts/commit/48ff487b52a98c8d5d5118c0338bcbd888c6ce55) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - добавлена возможность запускать тесты c помощью vitest
92
+
93
+ ## 22.0.1
94
+
95
+ ### Patch Changes
96
+
97
+ - [#483](https://github.com/core-ds/arui-scripts/pull/483) [`b19bd97`](https://github.com/core-ds/arui-scripts/commit/b19bd97cfc607752f3211968cd83771e7ded2f3c) Thanks [@ngg-dev](https://github.com/ngg-dev)! - Обновление импорта для get-port, так как начиная с версии 6.0.0, данная библиотека полностью переведена на ESM
98
+
99
+ ## 22.0.0
100
+
101
+ ### Major Changes
102
+
103
+ - [#470](https://github.com/core-ds/arui-scripts/pull/470) [`6f3178f`](https://github.com/core-ds/arui-scripts/commit/6f3178f9e6e37d4b21d1bcd08a9ad6c469ae59c2) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - В **arui-scripts** переведены инструменты сборки на **Rspack 2** и **@rspack/dev-server 2**.
104
+
105
+ ## Почему мажорный релиз
106
+
107
+ Поднято требование к node.js: для разработки теперь требуется **20.19.0 и выше** или **22.12.0 и выше** (см. поле `engines` в `package.json`). На **node.js 18** и на **20.0–20.18** новая версия не рассчитана, потому что этого требует сам Rspack 2 и dev-server 2.
108
+
109
+ ## Что это означает для проектов на arui-scripts
110
+
111
+ - **Обычный сценарий** (настройки из доки, без своих оверрайдов webpack/rspack/devServer): после обновления пакета достаточно **поднять версию node.js** до поддерживаемой версии и прогнать `yarn start` / `yarn build`.
112
+ - **Если в проекте есть оверрайды** (`arui-scripts` override с `devServer`, `proxy`, `webpackClient` и тд.): часть старых опций пропала или переименована в Rspack 2 и в dev-server 2. Например, в прокси dev-сервера больше нет `bypass`, вместо него теперь используются фильтры путей и колбэки в `on.*`. Подробнее про это в ссылка ниже.
113
+
114
+ ## Ссылки про миграцию
115
+
116
+ - [Rspack: обновление с 1.x на 2.0](https://rspack.rs/guide/migration/rspack_1.x)
117
+ - [@rspack/dev-server: с v1 на v2](https://github.com/rstackjs/rspack-dev-server/blob/main/docs/migrate-v1-to-v2.md)
118
+
119
+ ## 21.0.5
120
+
121
+ ### Patch Changes
122
+
123
+ - [#480](https://github.com/core-ds/arui-scripts/pull/480) [`54ee0bf`](https://github.com/core-ds/arui-scripts/commit/54ee0bf09c5fae5ff329bdf7394044d2b0aab851) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - Отключен autoprefixer в cерверной конфигурации postcss, чтобы CSS modules в server сборке не генерировали предупреждения при таргете `current node`.
124
+
125
+ ## 21.0.4
4
126
 
5
127
  ### Patch Changes
6
128
 
7
- - [#417](https://github.com/core-ds/arui-scripts/pull/417) [`d9888fd9`](https://github.com/core-ds/arui-scripts/commit/d9888fd9552bfec3585e1c21d26e181f6db05a1d) Thanks [@VladislavNsk](https://github.com/VladislavNsk)! - Порты для клиента и сервера задаются через env переменные
129
+ - [#467](https://github.com/core-ds/arui-scripts/pull/467) [`e6d6a40`](https://github.com/core-ds/arui-scripts/commit/e6d6a40c5200fcb128850f44ddf0e676b144624b) Thanks [@Los-Santos1](https://github.com/Los-Santos1)! - Исправлен запуск Jest на Windows из-за абсолютных путей в import
130
+
131
+ ## 21.0.3
132
+
133
+ ### Patch Changes
134
+
135
+ - [#463](https://github.com/core-ds/arui-scripts/pull/463) [`b27ac8c`](https://github.com/core-ds/arui-scripts/commit/b27ac8c40420df53704a12d83163c31fa6943495) Thanks [@ngg-dev](https://github.com/ngg-dev)! - - удаление устаревшего пакета react-dev-utils для решение проблем с уязвимостями в пакете ajv
136
+ - добавление пакета get-port
137
+ - создание утилит getLocalIdent и printBuildError
138
+
139
+ ## 21.0.2
140
+
141
+ ### Patch Changes
142
+
143
+ - [#464](https://github.com/core-ds/arui-scripts/pull/464) [`b17a8c3`](https://github.com/core-ds/arui-scripts/commit/b17a8c30774df8c4fbf854fdebe440d863d177b4) Thanks [@TheDiamondDoge](https://github.com/TheDiamondDoge)! - Исправляем название пакета на common-app-html в exemptions
144
+
145
+ ## 21.0.1
146
+
147
+ ### Patch Changes
148
+
149
+ - [#461](https://github.com/core-ds/arui-scripts/pull/461) [`e99e957`](https://github.com/core-ds/arui-scripts/commit/e99e95759bf072bb19eff08618c0233fa5bd742d) Thanks [@heymdall-legal](https://github.com/heymdall-legal)! - Пакет fork-ts-checker-webpack-plugin заменен на ts-checker-rspack-plugin. Вам больше не требуется иметь webpack в зависимостях. Баг был представлен в версии 20.12.2
150
+
151
+ ## 21.0.0
152
+
153
+ ### Major Changes
154
+
155
+ - [#449](https://github.com/core-ds/arui-scripts/pull/449) [`63a7336`](https://github.com/core-ds/arui-scripts/commit/63a7336cc279d6eeab3bc8ba24246a036e683d72) Thanks [@heymdall-legal](https://github.com/heymdall-legal)! - Добавлена поддержка ts@6. Удалена поддержка ts@4.
156
+
157
+ В базовом tsconfig.json значение `compilerOptions.moduleResolution` изменено с "node" на "bundler".
158
+ Режим bundler включает поддержку современных механизмов резолва пакетов — в первую очередь поля exports в package.json зависимостей.
159
+ Это приближает поведение TypeScript к тому, как модули реально резолвятся rspack.
160
+
161
+ ### Что может сломаться
162
+
163
+ **Импорты по путям, не объявленным в `exports` зависимости**
164
+
165
+ Это основная причина возможных ошибок. Если у пакета в `package.json` есть поле `exports`, TypeScript теперь использует **только его** для резолва. Прямые импорты внутренностей пакета, не описанные в `exports`, перестанут резолвиться:
166
+
167
+ ```
168
+ TS2307: Cannot find module 'some-lib/dist/utils' or its corresponding type declarations.
169
+ ```
170
+
171
+ Примеры импортов, которые могут сломаться:
172
+
173
+ ```ts
174
+ // Импорт из внутренней директории пакета
175
+ import { helper } from 'some-lib/dist/internal/utils';
176
+
177
+ // Субпутевой импорт, не описанный в exports
178
+ import { Component } from '@scope/ui-kit/some-undeclared-path';
179
+ ```
180
+
181
+ **Изменение приоритета `typesVersions` vs `exports`**
182
+
183
+ Если зависимость использует одновременно `typesVersions` и `exports` с условием `types`, то в режиме `bundler` приоритет получает `exports`. В редких случаях это может привести к подхвату других типов.
184
+
185
+ **Пакеты с неполными `exports` (только `require`)**
186
+
187
+ Если зависимость в `exports` указала только условие `require` без `import` или `default`, импорт может не зарезолвиться. На практике это редкость.
188
+
189
+ ## 20.12.2
190
+
191
+ ### Patch Changes
192
+
193
+ - [#458](https://github.com/core-ds/arui-scripts/pull/458) [`13b7c96`](https://github.com/core-ds/arui-scripts/commit/13b7c96ec280322649f4e30f413187c4e8c6f8df) Thanks [@ngg-dev](https://github.com/ngg-dev)! - обновлены версии внутренних зависимостей для фикса уязвимостей связанных с пакетом ajv
194
+
195
+ ## 20.12.1
196
+
197
+ ### Patch Changes
198
+
199
+ - [#440](https://github.com/core-ds/arui-scripts/pull/440) [`a1c0cc1`](https://github.com/core-ds/arui-scripts/commit/a1c0cc1ef45a44cc97f4419dd333bab811c04cd9) Thanks [@Los-Santos1](https://github.com/Los-Santos1)! - Обновлены зависимости для устранения уязвимостей транзитивных пакетов: imagemin-svgo ^12.0.0, css-minimizer-webpack-plugin 5.0.0.
200
+
201
+ ## 20.12.0
202
+
203
+ ### Minor Changes
204
+
205
+ - [#404](https://github.com/core-ds/arui-scripts/pull/404) [`ce6539b`](https://github.com/core-ds/arui-scripts/commit/ce6539b1e408591624bee7e1aacaab2681dfa25c) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - обновлен базовый докер образ arui-scripts
206
+
207
+ ## 20.11.1
208
+
209
+ ### Patch Changes
210
+
211
+ - [#424](https://github.com/core-ds/arui-scripts/pull/424) [`2df564c`](https://github.com/core-ds/arui-scripts/commit/2df564c57272cd03fb72f9f610887371ae0b2126) Thanks [@ngg-dev](https://github.com/ngg-dev)! - Обновил пакеты для устранения уязвимости CVE-2025-15284
212
+
213
+ ## 20.11.0
214
+
215
+ ### Minor Changes
216
+
217
+ - [#420](https://github.com/core-ds/arui-scripts/pull/420) [`3f26ba9`](https://github.com/core-ds/arui-scripts/commit/3f26ba95f76ca88115330234c329dc360af78536) Thanks [@heymdall-legal](https://github.com/heymdall-legal)! - Изменено дефолтное значение для devSourceMap. Теперь они будут по умолчанию более качественные
8
218
 
9
219
  ## 20.10.0
10
220
 
package/README.md CHANGED
@@ -27,14 +27,25 @@ npm install arui-scripts --save-dev
27
27
  2. Создайте необходимые файлы
28
28
  - `src/index.{js,jsx,ts,tsx}` - входная точка для клиентского приложения.
29
29
  - `src/server/index.{js,jsx,tsx}` - входная точка для серверного приложения.
30
- - `node_modules/arui-feather/polyfills` - полифилы для клиентского приложения.
30
+ Если нужен только клиент, смотреть [Режим clientOnly](./docs/client-only.md).
31
31
 
32
- При желании вы можете изменить эти пути с помощью настроек.
32
+ **Полифилы (опционально).**
33
+ Отдельный бандл полифилов не обязателен: по умолчанию [clientPolyfillsEntry](docs/settings.md#clientpolyfillsentry) не задан. Для большинства целей по браузерам (их можно сузить или расширить через overrides `supporting-browsers`, см. [Тонкая настройка](docs/overrides.md#тонкая-настройка)) можно не подключать отдельный файл полифилов.
34
+
35
+ Если полифилы все же нужны (старые браузеры или режим `entry` у SWC/Babel с `core-js`):
36
+
37
+ - добавьте в проект зависимость `core-js` (при необходимости)
38
+ - создайте файл, например `src/polyfills.ts`, с импортом `import 'core-js/stable';`
39
+ - укажите в [arui-scripts.config](docs/settings.md) или в `package.json` в секции `aruiScripts`: `clientPolyfillsEntry: './src/polyfills'`
40
+
41
+ Пути ко входным точкам и полифилам можно переопределить через настройки.
42
+ Полный список в [документации по настройкам](docs/settings.md).
33
43
 
34
44
  3. Используйте команды из `arui-scripts`!
35
45
 
36
46
  Документация
37
47
  ===
48
+ - [Список актуальных версий docker-образов](../alpine-node-nginx/README.md)
38
49
  - [Настройки](docs/settings.md)
39
50
  - [Команды](docs/commands.md)
40
51
  - [Примеры входных точек](docs/examples.md)
@@ -45,3 +56,4 @@ npm install arui-scripts --save-dev
45
56
  - [Особенности поведения](docs/caveats.md)
46
57
  - [Использование модулей](docs/modules.md)
47
58
  - [Client-only режим](./docs/client-only.md)
59
+ - [Словарь для сжатия](./docs/compression-dictionary.md)
@@ -1,3 +1,2 @@
1
1
  #! /usr/bin/env node
2
- declare const commands: Record<string, () => void>;
3
- declare const command: string;
2
+ export {};
@@ -2,6 +2,7 @@
2
2
  "use strict";
3
3
  /* eslint-disable global-require */
4
4
  /* eslint import/no-dynamic-require: 0 */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
5
6
  const commands = {
6
7
  start: () => require('../commands/start'),
7
8
  'start:prod': () => require('../commands/start-prod'),
@@ -9,6 +10,7 @@ const commands = {
9
10
  'docker-build': () => require('../commands/docker-build'),
10
11
  'docker-build:compiled': () => require('../commands/docker-build-compiled'),
11
12
  test: () => require('../commands/test'),
13
+ 'test:vitest': () => require('../commands/test-vitest'),
12
14
  'ensure-yarn': () => require('../commands/ensure-yarn'),
13
15
  'archive-build': () => require('../commands/archive-build'),
14
16
  'bundle-analyze': () => require('../commands/bundle-analyze'),
@@ -13,11 +13,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const chalk_1 = __importDefault(require("chalk"));
16
- const printBuildError_1 = __importDefault(require("react-dev-utils/printBuildError"));
17
16
  const build_wrapper_1 = __importDefault(require("./build-wrapper"));
18
17
  const client_assets_sizes_1 = require("../util/client-assets-sizes");
19
18
  const webpack_client_prod_1 = require("../../configs/webpack.client.prod");
20
19
  const load_browserslist_1 = require("../util/load-browserslist");
20
+ const print_build_error_1 = require("../util/print-build-error");
21
21
  (0, load_browserslist_1.loadBrowserslist)();
22
22
  console.log(chalk_1.default.magenta('Building client...'));
23
23
  function main() {
@@ -46,7 +46,7 @@ function main() {
46
46
  }
47
47
  catch (err) {
48
48
  console.log(chalk_1.default.red('Failed to compile client.\n'));
49
- (0, printBuildError_1.default)(err);
49
+ (0, print_build_error_1.printBuildError)(err);
50
50
  process.exit(1);
51
51
  }
52
52
  });
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const chalk_1 = __importDefault(require("chalk"));
7
- const printBuildError_1 = __importDefault(require("react-dev-utils/printBuildError"));
8
7
  const build_wrapper_1 = __importDefault(require("./build-wrapper"));
9
8
  const webpack_server_prod_1 = require("../../configs/webpack.server.prod");
10
9
  const supporting_node_1 = require("../../configs/supporting-node");
10
+ const print_build_error_1 = require("../util/print-build-error");
11
11
  process.env.BROWSERSLIST = supporting_node_1.supportingNode.join(',');
12
12
  console.log(chalk_1.default.magenta('Building server...'));
13
13
  (0, build_wrapper_1.default)(webpack_server_prod_1.webpackServerConfig)
@@ -24,6 +24,6 @@ console.log(chalk_1.default.magenta('Building server...'));
24
24
  })
25
25
  .catch((err) => {
26
26
  console.log(chalk_1.default.red('Failed to compile server.\n'));
27
- (0, printBuildError_1.default)(err);
27
+ (0, print_build_error_1.printBuildError)(err);
28
28
  process.exit(1);
29
29
  });
@@ -15,6 +15,17 @@ const webpack_bundle_analyzer_1 = require("webpack-bundle-analyzer");
15
15
  const app_configs_1 = require("../../configs/app-configs");
16
16
  const webpack_client_prod_1 = require("../../configs/webpack.client.prod");
17
17
  const make_tmp_dir_1 = require("../util/make-tmp-dir");
18
+ // В rspack по умолчанию больше не включаются эти поля, но для webpack-bundle-analyzer они нужны
19
+ // https://rspack.rs/guide/migration/rspack_1.x#changed-default-parameters-of-statstojson
20
+ const bundleAnalyzerStatsOptions = {
21
+ assets: true,
22
+ chunks: true,
23
+ chunkGroups: true,
24
+ chunkModules: true,
25
+ entryPoints: true,
26
+ entrypoints: true,
27
+ modules: true,
28
+ };
18
29
  (() => __awaiter(void 0, void 0, void 0, function* () {
19
30
  console.log('Starting bundle analysis...');
20
31
  const clientWebpackConfigs = Array.isArray(webpack_client_prod_1.webpackClientConfig)
@@ -23,11 +34,13 @@ const make_tmp_dir_1 = require("../util/make-tmp-dir");
23
34
  /* eslint-disable no-param-reassign */
24
35
  const promises = clientWebpackConfigs.map((webpackConfig, i) => __awaiter(void 0, void 0, void 0, function* () {
25
36
  const tmpDir = yield (0, make_tmp_dir_1.makeTmpDir)(i.toString());
37
+ const webpackStatsOptions = Object.assign(Object.assign({}, (typeof webpackConfig.stats === 'object' ? webpackConfig.stats : {})), bundleAnalyzerStatsOptions);
26
38
  webpackConfig.plugins = [
27
39
  ...(webpackConfig.plugins || []),
28
40
  new webpack_bundle_analyzer_1.BundleAnalyzerPlugin({
29
41
  generateStatsFile: true,
30
42
  statsFilename: app_configs_1.configs.statsOutputPath,
43
+ statsOptions: bundleAnalyzerStatsOptions,
31
44
  analyzerPort: 'auto',
32
45
  analyzerMode: 'server',
33
46
  openAnalyzer: true,
@@ -35,6 +48,7 @@ const make_tmp_dir_1 = require("../util/make-tmp-dir");
35
48
  }), // webpack-bundle-analyzer has incorrect types
36
49
  new rspack_plugin_1.RsdoctorRspackPlugin({}),
37
50
  ];
51
+ webpackConfig.stats = webpackStatsOptions;
38
52
  webpackConfig.output = Object.assign(Object.assign({}, webpackConfig.output), { path: tmpDir });
39
53
  }));
40
54
  yield Promise.all(promises);
@@ -19,13 +19,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
19
19
  }) : function(o, v) {
20
20
  o["default"] = v;
21
21
  });
22
- var __importStar = (this && this.__importStar) || function (mod) {
23
- if (mod && mod.__esModule) return mod;
24
- var result = {};
25
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
- __setModuleDefault(result, mod);
27
- return result;
28
- };
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
29
39
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
30
40
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
31
41
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
  if (process.env.npm_config_user_agent && process.env.npm_config_user_agent.indexOf('yarn') === -1) {
3
4
  console.log(process.env);
4
5
  console.error('You must use yarn to install dependencies, now using', process.env.npm_execpath);
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -49,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
49
26
  exports.getJestConfig = void 0;
50
27
  const fs_1 = __importDefault(require("fs"));
51
28
  const path_1 = __importDefault(require("path"));
29
+ const url_1 = require("url");
52
30
  const jest_config_1 = require("jest-config");
53
31
  const jest_resolve_1 = __importDefault(require("jest-resolve"));
54
32
  const lodash_merge_1 = __importDefault(require("lodash.merge"));
@@ -71,7 +49,7 @@ function getAppJestConfig() {
71
49
  return __awaiter(this, void 0, void 0, function* () {
72
50
  const jestConfigPath = path_1.default.resolve(process.cwd(), 'jest.config.js');
73
51
  if (fs_1.default.existsSync(jestConfigPath)) {
74
- return (yield Promise.resolve(`${jestConfigPath}`).then(s => __importStar(require(s)))).default;
52
+ return (yield import((0, url_1.pathToFileURL)(jestConfigPath).href)).default;
75
53
  }
76
54
  if (app_configs_1.configs.appPackage.jest) {
77
55
  return app_configs_1.configs.appPackage.jest;
@@ -95,7 +73,8 @@ function getPresetConfig(presetPath) {
95
73
  if (!presetModule) {
96
74
  throw new Error(`Cannot find module '${normalizedPresetPath}'`);
97
75
  }
98
- const _a = (yield Promise.resolve(`${presetModule}`).then(s => __importStar(require(s)))).default, { preset: subPreset } = _a, preset = __rest(_a, ["preset"]);
76
+ const _a = (yield import((0, url_1.pathToFileURL)(presetModule).href))
77
+ .default, { preset: subPreset } = _a, preset = __rest(_a, ["preset"]);
99
78
  if (subPreset) {
100
79
  console.warn(`Jest can't handle preset chaining. Preset "${subPreset}" will be ignored.`);
101
80
  }
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
36
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
37
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const run_vitest_1 = require("../util/run-vitest");
4
+ process.env.BABEL_ENV = 'test';
5
+ process.env.NODE_ENV = 'test';
6
+ process.env.PUBLIC_URL = '';
7
+ const args = process.argv.slice(3);
8
+ (0, run_vitest_1.runVitest)({ args })
9
+ .then((code) => {
10
+ process.exit(code);
11
+ })
12
+ .catch((error) => {
13
+ console.error('Error running Vitest:', error);
14
+ process.exit(1);
15
+ });
@@ -0,0 +1,6 @@
1
+ type CssLoaderContext = {
2
+ resourcePath: string;
3
+ rootContext: string;
4
+ };
5
+ export declare function getLocalIdent(context: CssLoaderContext, _localIdentName: string, localName: string): string;
6
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLocalIdent = getLocalIdent;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const path_1 = __importDefault(require("path"));
9
+ function getLocalIdent(context, _localIdentName, localName) {
10
+ const isIndexModule = /index\.module\.(css|scss|sass)$/.test(context.resourcePath);
11
+ const relativePath = path_1.default.posix.relative(context.rootContext, context.resourcePath);
12
+ const hash = crypto_1.default
13
+ .createHash('md5')
14
+ .update(relativePath + localName)
15
+ .digest('base64')
16
+ .slice(0, 5)
17
+ .replace(/\+/g, '_')
18
+ .replace(/\//g, '_')
19
+ .replace(/=/g, '');
20
+ let baseName;
21
+ if (isIndexModule) {
22
+ baseName = path_1.default.basename(path_1.default.dirname(context.resourcePath));
23
+ }
24
+ else {
25
+ baseName = path_1.default.basename(context.resourcePath, '.module.css');
26
+ }
27
+ const className = `${baseName}_${localName}__${hash}`;
28
+ return className.replace('.module_', '_').replace(/\./g, '_');
29
+ }
@@ -0,0 +1 @@
1
+ export declare function printBuildError(err: Error | null | undefined): void;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printBuildError = printBuildError;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ function printBuildError(err) {
9
+ const message = err === null || err === void 0 ? void 0 : err.message;
10
+ const stack = err === null || err === void 0 ? void 0 : err.stack;
11
+ if (stack && typeof message === 'string' && message.includes('from Terser')) {
12
+ try {
13
+ const matched = /(.+)\[(.+):(.+),(.+)\]\[.+\]/.exec(stack);
14
+ if (!matched) {
15
+ throw new Error('Using errors for control flow is bad.');
16
+ }
17
+ const problemPath = matched[2];
18
+ const line = matched[3];
19
+ const column = matched[4];
20
+ const columnFormatted = column === '0' ? '' : `:${column}`;
21
+ console.log(`Failed to minify the code from this file: \n\n${chalk_1.default.yellow(`\t${problemPath}:${line}${columnFormatted}`)}\n`);
22
+ }
23
+ catch (ignored) {
24
+ console.log('Failed to minify the bundle.', err);
25
+ }
26
+ console.log('Read more here: https://cra.link/failed-to-minify');
27
+ }
28
+ else {
29
+ console.log(`${message || err}\n`);
30
+ }
31
+ console.log();
32
+ }