@koslibs/builder 0.1.0 → 1.0.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +79 -14
  3. package/dist/cli/handlers/library.d.ts.map +1 -1
  4. package/dist/cli/handlers/library.js +2 -2
  5. package/dist/cli/handlers/library.js.map +1 -1
  6. package/dist/cli/handlers/storybook.d.ts.map +1 -1
  7. package/dist/cli/handlers/storybook.js +22 -1
  8. package/dist/cli/handlers/storybook.js.map +1 -1
  9. package/dist/cli/handlers/typecheck.d.ts +2 -0
  10. package/dist/cli/handlers/typecheck.d.ts.map +1 -1
  11. package/dist/cli/handlers/typecheck.js +49 -1
  12. package/dist/cli/handlers/typecheck.js.map +1 -1
  13. package/dist/cli/handlers/ui.d.ts.map +1 -1
  14. package/dist/cli/handlers/ui.js +2 -1
  15. package/dist/cli/handlers/ui.js.map +1 -1
  16. package/dist/cli/process.d.ts +4 -2
  17. package/dist/cli/process.d.ts.map +1 -1
  18. package/dist/cli/process.js +29 -5
  19. package/dist/cli/process.js.map +1 -1
  20. package/dist/configs/library.d.ts.map +1 -1
  21. package/dist/configs/library.js +1 -2
  22. package/dist/configs/library.js.map +1 -1
  23. package/dist/configs/normalize.d.ts.map +1 -1
  24. package/dist/configs/normalize.js +7 -2
  25. package/dist/configs/normalize.js.map +1 -1
  26. package/dist/configs/storybook.d.ts +2 -2
  27. package/dist/configs/storybook.d.ts.map +1 -1
  28. package/dist/configs/storybook.js +10 -15
  29. package/dist/configs/storybook.js.map +1 -1
  30. package/dist/configs/typescript.d.ts +0 -1
  31. package/dist/configs/typescript.d.ts.map +1 -1
  32. package/dist/configs/typescript.js +0 -9
  33. package/dist/configs/typescript.js.map +1 -1
  34. package/dist/configs/ui.d.ts.map +1 -1
  35. package/dist/configs/ui.js +0 -2
  36. package/dist/configs/ui.js.map +1 -1
  37. package/dist/storybook/blocks.d.ts +2 -0
  38. package/dist/storybook/blocks.d.ts.map +1 -0
  39. package/dist/storybook/blocks.js +2 -0
  40. package/dist/storybook/blocks.js.map +1 -0
  41. package/dist/typings/config.d.ts +3 -0
  42. package/dist/typings/config.d.ts.map +1 -1
  43. package/dist/typings/storybook.d.ts +1 -1
  44. package/dist/typings/storybook.d.ts.map +1 -1
  45. package/package.json +26 -13
package/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # @koslibs/builder
2
+
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#1](https://github.com/koslibs/builder/pull/1) [`79bd508`](https://github.com/koslibs/builder/commit/79bd5081d2dd824ec80a5249de4a9181a384563b) Thanks [@holypower777](https://github.com/holypower777)! - Update the shared toolchain and require @koslibs/configs 1.x. Replace the type-check plugin with tsc and background tsc --watch, and move Storybook to Vite to remove the vulnerable braces dependency chain. Application and library builds continue to use Rspack.
8
+
9
+ Add storybookViteConfig for Storybook-specific settings and expose Docs components and types through @koslibs/builder/storybook/blocks. Storybook customizations previously supplied through Rsbuild settings must be migrated to storybookViteConfig.
10
+
11
+ Adopt shared Changesets release workflows, changelog generation and Git hooks from @koslibs/configs.
package/README.md CHANGED
@@ -2,23 +2,21 @@
2
2
 
3
3
  Единый CLI для React-приложений, ESM-библиотек, Storybook и тестов.
4
4
  UI собирается через Rsbuild, библиотеки — через Rslib. Оба используют Rspack.
5
+ Storybook собирается через Vite.
5
6
 
6
7
  ## Подключение
7
8
 
8
9
  Node.js >= 24.13.0. Builder устанавливается в devDependencies:
9
10
 
10
11
  ```sh
11
- npm install @koslibs/api @koslibs/components
12
12
  npm install --save-dev @koslibs/builder @koslibs/configs @types/react @types/react-dom @types/node
13
13
  ```
14
14
 
15
- `@koslibs/configs` — обязательная peer-зависимость builder с диапазоном `^0.2.11`.
15
+ `@koslibs/configs` — обязательная peer-зависимость builder с диапазоном `^1.0.0`.
16
16
  Builder использует версию configs, установленную в проекте.
17
17
 
18
- Первая строка — целевая схема подключения runtime-пакетов: она применима, когда
19
- нужные версии API и components опубликованы. Builder не устанавливает эти пакеты автоматически
20
- и не требует их наличия для работы. React и react-dom устанавливаются самим приложением.
21
- Поддерживаются React 18.3 и 19; совместимость остальных пакетов нужно учитывать отдельно.
18
+ Builder использует TypeScript 6.0.3. TypeScript 7 пока не используется: генератор
19
+ типов свойств Storybook зависит от API компилятора TypeScript 6.
22
20
 
23
21
  В корне проекта создаётся `koslibs-builder.ts`:
24
22
 
@@ -45,6 +43,7 @@ export default config;
45
43
  interface KoslibsBuilderConfig {
46
44
  rsbuildConfig?: RsbuildConfig;
47
45
  clientConfig?: EnvironmentConfig;
46
+ storybookViteConfig?: UserConfig;
48
47
  port?: number;
49
48
  }
50
49
  ```
@@ -75,7 +74,8 @@ export default config;
75
74
  → клиентское окружение `clientConfig`. В UI это окружение называется `client`.
76
75
  `port` имеет приоритет над `rsbuildConfig.server.port`, затем используется 8080.
77
76
  Занятый порт вызывает ошибку вместо незаметного переключения на другой.
78
- `clientConfig` используется для UI и Storybook, для сборки библиотеки он игнорируется.
77
+ `clientConfig` используется только для UI. `rsbuildConfig` используется для UI и библиотек.
78
+ Для Storybook предназначен `storybookViteConfig`; настройки Rsbuild в Vite не переносятся.
79
79
 
80
80
  ## Scripts приложения
81
81
 
@@ -115,6 +115,7 @@ HTML можно изменить через `clientConfig.html`; для обыч
115
115
  "extends": "@koslibs/configs/tsconfig",
116
116
  "compilerOptions": {
117
117
  "types": ["@koslibs/builder/client"],
118
+ "esModuleInterop": true,
118
119
  "jsx": "react-jsx"
119
120
  },
120
121
  "include": ["src", "koslibs-builder.ts"]
@@ -122,6 +123,8 @@ HTML можно изменить через `clientConfig.html`; для обыч
122
123
  ```
123
124
 
124
125
  `@koslibs/builder/client` предоставляет типы CSS Modules, ресурсов и `import.meta.env`.
126
+ Для TypeScript 6 нужно явно включить `esModuleInterop`: preset из `@koslibs/configs@1.0.0`
127
+ задаёт устаревшее значение `false`.
125
128
  Для кода Node.js и конфигов, использующих `process`, добавь `@types/node` и `node` в `types`.
126
129
  При использовании библиотек или JSX также нужны соответствующие `@types/*`.
127
130
 
@@ -137,9 +140,10 @@ npm run typecheck
137
140
  зависимостей в package.json примера.
138
141
 
139
142
  `ui:build` сначала проверяет весь TS-проект и возвращает ненулевой код при ошибках.
140
- `ui:start` проверяет типы в отдельном процессе, показывает ошибки в терминале и overlay,
143
+ `ui:start` запускает `tsc --noEmit --watch`, показывает ошибки в терминале,
141
144
  продолжает работать и повторяет проверку после исправлений. Dev-server не прекращает
142
145
  работу из-за исправимой ошибки типов. Проверку типов задаёт builder.
146
+ Фоновый checker завершается вместе с dev-server; его неожиданное завершение останавливает сервер.
143
147
 
144
148
  ## Библиотеки
145
149
 
@@ -198,15 +202,47 @@ Builder не изменяет exports автоматически. Линтинг
198
202
 
199
203
  ## Storybook
200
204
 
201
- Builder управляет Rsbuild-framework, addon-docs, Controls, автодокументацией и stories
205
+ Builder управляет Vite-framework, addon-docs, Controls, автодокументацией и stories
202
206
  из `src/**/*.stories.{ts,tsx,js,jsx,mjs}`. `.storybook/main.ts` не требуется и не читается:
203
207
  служебный main создаётся builder. При миграции старые addons и main-настройки нужно
204
208
  сверить отдельно. Для локальных decorators и parameters используется `.storybook/preview.ts`.
205
209
  Файлы `public` подключаются как статические ресурсы. Выход — `storybook-static`.
206
210
 
207
- Storybook использует `port`, проверяет типы, наследует подходящие общие настройки
208
- Rsbuild и клиентские настройки. Entry, HTML, server и distPath принадлежат Storybook
209
- и не переносятся из настроек сборки приложения. Неподдерживаемые поля builder-конфига,
211
+ Блоки для собственных страниц Docs доступны через builder:
212
+
213
+ ```tsx
214
+ import { Canvas, Controls, Title } from '@koslibs/builder/storybook/blocks';
215
+ ```
216
+
217
+ Экспорт включает компоненты и типы `@storybook/addon-docs/blocks`. При миграции замените
218
+ импорты из `@storybook/addon-docs/blocks` на `@koslibs/builder/storybook/blocks`.
219
+ Если других прямых импортов `@storybook/addon-docs` нет, отдельную зависимость можно удалить:
220
+ builder управляет её версией и подключением addon в Storybook.
221
+
222
+ Storybook использует `port`. Перед production-сборкой запускается `tsc --noEmit`,
223
+ в dev — отдельный `tsc --noEmit --watch`. TypeScript 6 остаётся для извлечения типов
224
+ свойств компонентов в Docs/Controls.
225
+
226
+ Настройки Storybook задаются через `storybookViteConfig` в `koslibs-builder.ts`:
227
+
228
+ ```ts
229
+ import type { KoslibsBuilderConfig } from '@koslibs/builder';
230
+
231
+ const config: KoslibsBuilderConfig = {
232
+ storybookViteConfig: {
233
+ define: { __API_URL__: JSON.stringify('https://api.example.test') },
234
+ },
235
+ };
236
+
237
+ export default config;
238
+ ```
239
+
240
+ Это типизированные настройки Vite. Корень проекта задаёт builder; локальные
241
+ `vite.config.*` не загружаются автоматически. CSS Modules и автоматический JSX runtime
242
+ поддерживаются без дополнительных настроек. Vite загружает `.env` проекта и публикует
243
+ переменные с префиксами `PUBLIC_` и `VITE_`. `rsbuildConfig`, `clientConfig` и плагины
244
+ Rspack не применяются к Storybook: определения, алиасы и другие специальные настройки
245
+ нужно перенести в соответствующие поля Vite. Неподдерживаемые поля builder-конфига,
210
246
  включая `storybookConfig`, игнорируются; расширение API для addons возможно следующим шагом.
211
247
 
212
248
  ## Тесты
@@ -238,7 +274,7 @@ import type { Meta, StoryObj } from '@koslibs/builder/storybook';
238
274
  ```
239
275
 
240
276
  Если используются прямые импорты `@playwright/test`, `@rstest/core` или
241
- `storybook-react-rsbuild`, эти пакеты должны быть прямыми devDependencies проекта.
277
+ `@storybook/react-vite`, эти пакеты должны быть прямыми devDependencies проекта.
242
278
  Builder сам разрешает исполняемые файлы своих инструментов и не полагается на глобальную установку.
243
279
 
244
280
  Если проект имеет `rstest.config.*` или `playwright.config.*`, builder использует их.
@@ -274,6 +310,35 @@ const apiUrl = import.meta.env.PUBLIC_API_URL;
274
310
  Для переиспользуемых библиотек builder не загружает `.env` автоматически.
275
311
  Поведение описано в [документации Rsbuild](https://rsbuild.rs/guide/advanced/env-vars).
276
312
 
313
+ ## Релиз самого builder
314
+
315
+ Релиз и Git hooks управляются `@koslibs/configs`. `npm install` / `npm ci` запускают
316
+ `prepare` и устанавливают общий Lefthook preset: проверки перед commit, Commitlint
317
+ и проверку Changeset перед push.
318
+
319
+ Перед отправкой изменений создайте один Changeset для PR:
320
+
321
+ ```sh
322
+ npm run changeset
323
+ git add .changeset/*.md
324
+ git commit -m "feat: describe the change"
325
+ git push
326
+ ```
327
+
328
+ Для следующих изменений в том же PR обновляйте существующий Changeset.
329
+ Проверка перед push требует, чтобы файл был добавлен и закоммичен; версия пакета
330
+ до релиза остаётся прежней. Для ручной проверки используется
331
+ `npm run changeset:check -- --base origin/main --head HEAD`.
332
+
333
+ В PR общий workflow запускает проверку `Changeset required`. После merge в `main`
334
+ workflow проверяет npm-пакет и через `koslibs-release` обновляет версию и `CHANGELOG.md`,
335
+ публикует пакет и отправляет релизный commit и Git tag. Повторный запуск доступен
336
+ через `workflow_dispatch`. Общие workflows закреплены на теге configs `v1.0.0`.
337
+
338
+ В настройках GitHub сделайте `Changeset required` обязательным для merge.
339
+ Для публикации используется существующий `NPM_TOKEN` либо npm Trusted Publishing,
340
+ настроенный для репозитория `koslibs/builder` и вызывающего workflow `release.yml`.
341
+
277
342
  ## Структура исходников
278
343
 
279
344
  ```text
@@ -298,4 +363,4 @@ src/
298
363
 
299
364
  Архитектурные источники: [Rsbuild](https://rsbuild.dev/guide/faq/general),
300
365
  [Rslib: сохранение структуры модулей](https://www.rslib.rs/config/lib/bundle),
301
- [Storybook Rsbuild](https://storybook.rsbuild.rs/guide/configuration).
366
+ [Storybook Vite](https://storybook.js.org/docs/builders/vite).
@@ -1 +1 @@
1
- {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7E"}
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7E"}
@@ -1,7 +1,7 @@
1
1
  import { writeLibraryTsconfig } from '../../configs/generated.js';
2
2
  import { createLibraryConfig } from '../../configs/library.js';
3
3
  import { loadBuilderConfig } from '../../configs/load.js';
4
- import { closeOnSignal } from '../process.js';
4
+ import { watchTypecheck } from './typecheck.js';
5
5
  export async function runLibrary(command, root) {
6
6
  const config = await loadBuilderConfig(root);
7
7
  const { createRslib } = await import('@rslib/core');
@@ -12,7 +12,7 @@ export async function runLibrary(command, root) {
12
12
  });
13
13
  const result = await rslib.build({ watch: command === 'lib:watch' });
14
14
  if (command === 'lib:watch') {
15
- closeOnSignal(() => result.close());
15
+ await watchTypecheck(root, () => result.close());
16
16
  }
17
17
  else {
18
18
  await result.close();
@@ -1 +1 @@
1
- {"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAY;IAC1D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;QAC5B,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,WAAW,CAAC;KACrE,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC1B,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAY;IAC1D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;QAC5B,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,WAAW,CAAC;KACrE,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC1B,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBjG"}
1
+ {"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"AAUA,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2CjG"}
@@ -4,11 +4,18 @@ import { writeGeneratedConfig } from '../../configs/generated.js';
4
4
  import { loadBuilderConfig } from '../../configs/load.js';
5
5
  import { packageBin } from '../../utils/packages.js';
6
6
  import { runNode } from '../process.js';
7
+ import { typecheck, watchTypecheck } from './typecheck.js';
7
8
  export async function runStorybook(command, root, args) {
8
9
  const config = await loadBuilderConfig(root);
9
10
  const generated = await writeGeneratedConfig(root, 'storybook', `import { createStorybookConfig } from ${JSON.stringify(new URL('../../storybook/index.js', import.meta.url).href)};\n` +
10
11
  `export default await createStorybookConfig(${JSON.stringify(root)});\n`);
11
12
  const dev = command.endsWith(':start');
13
+ if (!dev) {
14
+ const code = await typecheck(root);
15
+ if (code !== 0) {
16
+ return code;
17
+ }
18
+ }
12
19
  const flags = dev
13
20
  ? [
14
21
  'dev',
@@ -18,6 +25,20 @@ export async function runStorybook(command, root, args) {
18
25
  '--no-open',
19
26
  ]
20
27
  : ['build', '--output-dir', resolve(root, 'storybook-static')];
21
- return runNode(packageBin('storybook', 'storybook'), [...flags, '--config-dir', generated.directory, '--disable-telemetry', ...args], root);
28
+ const controller = new AbortController();
29
+ const result = runNode(packageBin('storybook', 'storybook'), [...flags, '--config-dir', generated.directory, '--disable-telemetry', ...args], root, controller.signal);
30
+ if (!dev) {
31
+ return result;
32
+ }
33
+ const stop = await watchTypecheck(root, async () => {
34
+ controller.abort();
35
+ await result;
36
+ });
37
+ try {
38
+ return await result;
39
+ }
40
+ finally {
41
+ await stop();
42
+ }
22
43
  }
23
44
  //# sourceMappingURL=storybook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,IAAY,EAAE,IAAc;IAC5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,oBAAoB,CACxC,IAAI,EACJ,WAAW,EACX,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;QACnH,8CAA8C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAC/E,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,GAAG;QACb,CAAC,CAAC;YACI,KAAK;YACL,QAAQ;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,CAAC;YACzE,cAAc;YACd,WAAW;SACd;QACH,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACnE,OAAO,OAAO,CACV,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,EACpC,CAAC,GAAG,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,SAAS,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,EAC/E,IAAI,CACP,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,IAAY,EAAE,IAAc;IAC5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,oBAAoB,CACxC,IAAI,EACJ,WAAW,EACX,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;QACnH,8CAA8C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAC/E,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,MAAM,KAAK,GAAG,GAAG;QACb,CAAC,CAAC;YACI,KAAK;YACL,QAAQ;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,CAAC;YACzE,cAAc;YACd,WAAW;SACd;QACH,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAClB,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,EACpC,CAAC,GAAG,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,SAAS,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,EAC/E,IAAI,EACJ,UAAU,CAAC,MAAM,CACpB,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAC/C,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACD,OAAO,MAAM,MAAM,CAAC;IACxB,CAAC;YAAS,CAAC;QACP,MAAM,IAAI,EAAE,CAAC;IACjB,CAAC;AACL,CAAC"}
@@ -1,2 +1,4 @@
1
1
  export declare function typecheck(root: string): Promise<number>;
2
+ /** Owns the checker and the dev/watch resource, closing both together. */
3
+ export declare function watchTypecheck(root: string, closeOwner: () => Promise<void>): Promise<() => Promise<void>>;
2
4
  //# sourceMappingURL=typecheck.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7D"}
1
+ {"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7D;AAED,0EAA0E;AAC1E,wBAAsB,cAAc,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAChC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA+C9B"}
@@ -1,6 +1,54 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { once } from 'node:events';
1
3
  import { packageBin } from '../../utils/packages.js';
2
- import { runNode } from '../process.js';
4
+ import { closeOnSignal, runNode, stopNode } from '../process.js';
3
5
  export async function typecheck(root) {
4
6
  return runNode(packageBin('typescript', 'tsc'), ['--project', 'tsconfig.json', '--noEmit'], root);
5
7
  }
8
+ /** Owns the checker and the dev/watch resource, closing both together. */
9
+ export async function watchTypecheck(root, closeOwner) {
10
+ const child = spawn(process.execPath, [
11
+ packageBin('typescript', 'tsc'),
12
+ '--project',
13
+ 'tsconfig.json',
14
+ '--noEmit',
15
+ '--watch',
16
+ '--preserveWatchOutput',
17
+ '--pretty',
18
+ 'false',
19
+ ], { cwd: root, stdio: 'inherit', windowsHide: true });
20
+ const closed = new Promise((resolveClosed) => child.once('close', () => resolveClosed()));
21
+ let stopping;
22
+ let removeSignals = () => { };
23
+ const onExit = () => stopNode(child);
24
+ const stop = () => {
25
+ if (!stopping) {
26
+ // Mark as stopping before killing: a normal shutdown is not a checker failure.
27
+ stopping = Promise.resolve().then(async () => {
28
+ removeSignals();
29
+ process.removeListener('exit', onExit);
30
+ stopNode(child);
31
+ await Promise.all([closed, closeOwner()]);
32
+ });
33
+ }
34
+ return stopping;
35
+ };
36
+ try {
37
+ await once(child, 'spawn');
38
+ }
39
+ catch (error) {
40
+ await stop();
41
+ throw error;
42
+ }
43
+ child.once('close', (code) => {
44
+ if (!stopping) {
45
+ console.error(`[koslibs-builder] TypeScript watcher exited unexpectedly (${code}).`);
46
+ process.exitCode = 1;
47
+ void stop().catch((error) => console.error(error));
48
+ }
49
+ });
50
+ process.once('exit', onExit);
51
+ removeSignals = closeOnSignal(stop);
52
+ return stop;
53
+ }
6
54
  //# sourceMappingURL=typecheck.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IACxC,OAAO,OAAO,CACV,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,EAC/B,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,EAC1C,IAAI,CACP,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IACxC,OAAO,OAAO,CACV,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,EAC/B,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,EAC1C,IAAI,CACP,CAAC;AACN,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,IAAY,EACZ,UAA+B;IAE/B,MAAM,KAAK,GAAG,KAAK,CACf,OAAO,CAAC,QAAQ,EAChB;QACI,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC;QAC/B,WAAW;QACX,eAAe;QACf,UAAU;QACV,SAAS;QACT,uBAAuB;QACvB,UAAU;QACV,OAAO;KACV,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CACrD,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAChG,IAAI,QAAmC,CAAC;IACxC,IAAI,aAAa,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,+EAA+E;YAC/E,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACzC,aAAa,EAAE,CAAC;gBAChB,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACvC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IACF,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,EAAE,CAAC;QACb,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,6DAA6D,IAAI,IAAI,CAAC,CAAC;YACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"AAIA,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxE"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"AAMA,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxE"}
@@ -1,6 +1,7 @@
1
1
  import { loadBuilderConfig } from '../../configs/load.js';
2
2
  import { createUiConfig } from '../../configs/ui.js';
3
3
  import { closeOnSignal } from '../process.js';
4
+ import { watchTypecheck } from './typecheck.js';
4
5
  export async function runUi(command, root) {
5
6
  const config = await loadBuilderConfig(root);
6
7
  const { createRsbuild } = await import('@rsbuild/core');
@@ -11,7 +12,7 @@ export async function runUi(command, root) {
11
12
  });
12
13
  if (command === 'ui:start') {
13
14
  const result = await rsbuild.startDevServer();
14
- closeOnSignal(() => result.server.close());
15
+ await watchTypecheck(root, () => result.server.close());
15
16
  }
16
17
  else if (command === 'ui:preview') {
17
18
  const result = await rsbuild.preview();
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC;QAChC,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9C,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC;QAChC,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9C,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC"}
@@ -1,3 +1,5 @@
1
- export declare function runNode(bin: string, args: string[], root: string): Promise<number>;
2
- export declare function closeOnSignal(close: () => Promise<void>): void;
1
+ import { type ChildProcess } from 'node:child_process';
2
+ export declare function stopNode(child: ChildProcess): void;
3
+ export declare function runNode(bin: string, args: string[], root: string, signal?: AbortSignal): Promise<number>;
4
+ export declare function closeOnSignal(close: () => Promise<void>): () => void;
3
5
  //# sourceMappingURL=process.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAgB9D"}
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAclD;AAED,wBAAgB,OAAO,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAoBpE"}
@@ -1,21 +1,41 @@
1
- import { spawn } from 'node:child_process';
2
- export function runNode(bin, args, root) {
1
+ import { spawn, spawnSync } from 'node:child_process';
2
+ export function stopNode(child) {
3
+ if (!child.pid || child.exitCode !== null || child.signalCode !== null) {
4
+ return;
5
+ }
6
+ if (process.platform === 'win32') {
7
+ const result = spawnSync('taskkill', ['/pid', String(child.pid), '/T', '/F'], {
8
+ stdio: 'ignore',
9
+ windowsHide: true,
10
+ });
11
+ if (result.status === 0) {
12
+ return;
13
+ }
14
+ }
15
+ child.kill('SIGTERM');
16
+ }
17
+ export function runNode(bin, args, root, signal) {
3
18
  return new Promise((resolveCode, reject) => {
4
19
  const child = spawn(process.execPath, [bin, ...args], { cwd: root, stdio: 'inherit' });
5
- const stop = () => child.kill('SIGTERM');
20
+ const stop = () => stopNode(child);
6
21
  process.once('SIGINT', stop);
7
22
  process.once('SIGTERM', stop);
23
+ signal?.addEventListener('abort', stop, { once: true });
24
+ if (signal?.aborted) {
25
+ stop();
26
+ }
8
27
  const removeListeners = () => {
9
28
  process.removeListener('SIGINT', stop);
10
29
  process.removeListener('SIGTERM', stop);
30
+ signal?.removeEventListener('abort', stop);
11
31
  };
12
32
  child.once('error', (error) => {
13
33
  removeListeners();
14
34
  reject(error);
15
35
  });
16
- child.once('exit', (code, signal) => {
36
+ child.once('exit', (code, exitSignal) => {
17
37
  removeListeners();
18
- resolveCode(code ?? (signal ? 130 : 1));
38
+ resolveCode(code ?? (exitSignal ? 130 : 1));
19
39
  });
20
40
  });
21
41
  }
@@ -32,5 +52,9 @@ export function closeOnSignal(close) {
32
52
  };
33
53
  process.once('SIGINT', stop);
34
54
  process.once('SIGTERM', stop);
55
+ return () => {
56
+ process.removeListener('SIGINT', stop);
57
+ process.removeListener('SIGTERM', stop);
58
+ };
35
59
  }
36
60
  //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,IAAc,EAAE,IAAY;IAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,eAAe,GAAG,GAAG,EAAE;YACzB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,eAAe,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,eAAe,EAAE,CAAC;YAClB,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAA0B;IACpD,MAAM,IAAI,GAAG,GAAG,EAAE;QACd,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,KAAK,KAAK,EAAE,CAAC,IAAI,CACb,GAAG,EAAE;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzB,CAAC,CACJ,CAAC;IACN,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAEzE,MAAM,UAAU,QAAQ,CAAC,KAAmB;IACxC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACrE,OAAO;IACX,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAC1E,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;IACL,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,OAAO,CACnB,GAAW,EACX,IAAc,EACd,IAAY,EACZ,MAAoB;IAEpB,OAAO,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAClB,IAAI,EAAE,CAAC;QACX,CAAC;QACD,MAAM,eAAe,GAAG,GAAG,EAAE;YACzB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,eAAe,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;YACpC,eAAe,EAAE,CAAC;YAClB,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAA0B;IACpD,MAAM,IAAI,GAAG,GAAG,EAAE;QACd,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,KAAK,KAAK,EAAE,CAAC,IAAI,CACb,GAAG,EAAE;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzB,CAAC,CACJ,CAAC;IACN,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,GAAG,EAAE;QACR,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACd,WAAW,CA+Bb"}
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACd,WAAW,CA8Bb"}
@@ -1,7 +1,7 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { mergeRsbuildConfig } from '@rsbuild/core';
3
3
  import { pluginReact } from '@rsbuild/plugin-react';
4
- import { typeCheckPlugin, typescriptPath } from './typescript.js';
4
+ import { typescriptPath } from './typescript.js';
5
5
  export function createLibraryConfig(config, root, watch = false) {
6
6
  // clientConfig belongs to browser UIs and Storybook, never to the library output.
7
7
  const merged = mergeRsbuildConfig({
@@ -21,7 +21,6 @@ export function createLibraryConfig(config, root, watch = false) {
21
21
  }, config.rsbuildConfig);
22
22
  return {
23
23
  ...merged,
24
- plugins: [...(merged.plugins ?? []), ...(watch ? [typeCheckPlugin(root)] : [])],
25
24
  lib: [
26
25
  {
27
26
  format: 'esm',
@@ -1 +1 @@
1
- {"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElE,MAAM,UAAU,mBAAmB,CAC/B,MAA4B,EAC5B,IAAY,EACZ,KAAK,GAAG,KAAK;IAEb,kFAAkF;IAClF,MAAM,MAAM,GAAG,kBAAkB,CAC7B;QACI,MAAM,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,IAAI;gBAC1C,KAAK,EAAE;oBACH,UAAU;oBACV,oBAAoB;oBACpB,oBAAoB;oBACpB,uBAAuB;iBAC1B;aACJ;YACD,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,8CAA8C,CAAC;SAC9E;QACD,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACrD,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;KAC3B,EACD,MAAM,CAAC,aAAa,CACvB,CAAC;IACF,OAAO;QACH,GAAG,MAAM;QACT,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,GAAG,EAAE;YACD;gBACI,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE;aAC/D;SACJ;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAC/B,MAA4B,EAC5B,IAAY,EACZ,KAAK,GAAG,KAAK;IAEb,kFAAkF;IAClF,MAAM,MAAM,GAAG,kBAAkB,CAC7B;QACI,MAAM,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,IAAI;gBAC1C,KAAK,EAAE;oBACH,UAAU;oBACV,oBAAoB;oBACpB,oBAAoB;oBACpB,uBAAuB;iBAC1B;aACJ;YACD,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,8CAA8C,CAAC;SAC9E;QACD,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACrD,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;KAC3B,EACD,MAAM,CAAC,aAAa,CACvB,CAAC;IACF,OAAO;QACH,GAAG,MAAM;QACT,GAAG,EAAE;YACD;gBACI,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE;aAC/D;SACJ;KACJ,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAqBpE"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CA0BpE"}
@@ -5,12 +5,16 @@ export function normalizeConfig(value) {
5
5
  if (!isObject(value)) {
6
6
  throw new Error('koslibs-builder.ts must default-export a configuration object.');
7
7
  }
8
- const { port, rsbuildConfig, clientConfig } = value;
8
+ const { port, rsbuildConfig, clientConfig, storybookViteConfig } = value;
9
9
  if (port !== undefined &&
10
10
  (!Number.isInteger(port) || Number(port) < 1 || Number(port) > 65535)) {
11
11
  throw new Error('port must be an integer between 1 and 65535.');
12
12
  }
13
- for (const [name, field] of Object.entries({ rsbuildConfig, clientConfig })) {
13
+ for (const [name, field] of Object.entries({
14
+ rsbuildConfig,
15
+ clientConfig,
16
+ storybookViteConfig,
17
+ })) {
14
18
  if (field !== undefined && !isObject(field)) {
15
19
  throw new Error(`${name} must be a configuration object.`);
16
20
  }
@@ -19,6 +23,7 @@ export function normalizeConfig(value) {
19
23
  port: port,
20
24
  rsbuildConfig: rsbuildConfig,
21
25
  clientConfig: clientConfig,
26
+ storybookViteConfig: storybookViteConfig,
22
27
  };
23
28
  }
24
29
  //# sourceMappingURL=normalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAEA,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACpD,IACI,IAAI,KAAK,SAAS;QAClB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EACvE,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC1E,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IACD,OAAO;QACH,IAAI,EAAE,IAA0B;QAChC,aAAa,EAAE,aAAsD;QACrE,YAAY,EAAE,YAAoD;KACrE,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAEA,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;IACzE,IACI,IAAI,KAAK,SAAS;QAClB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EACvE,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;QACvC,aAAa;QACb,YAAY;QACZ,mBAAmB;KACtB,CAAC,EAAE,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IACD,OAAO;QACH,IAAI,EAAE,IAA0B;QAChC,aAAa,EAAE,aAAsD;QACrE,YAAY,EAAE,YAAoD;QAClE,mBAAmB,EAAE,mBAAkE;KAC1F,CAAC;AACN,CAAC"}
@@ -1,6 +1,6 @@
1
- import { type RsbuildConfig } from '@rsbuild/core';
1
+ import { type UserConfig } from 'vite';
2
2
  import type { KoslibsBuilderConfig } from '../typings/config.js';
3
3
  import type { StorybookConfig } from '../typings/storybook.js';
4
- export declare function createStorybookRsbuildConfig(config: KoslibsBuilderConfig): RsbuildConfig;
4
+ export declare function createStorybookViteConfig(config: KoslibsBuilderConfig, root: string): UserConfig;
5
5
  export declare function createStorybookConfig(root?: string): Promise<StorybookConfig>;
6
6
  //# sourceMappingURL=storybook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,CAYxF;AAED,wBAAsB,qBAAqB,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAmB1F"}
1
+ {"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAKhG;AAED,wBAAsB,qBAAqB,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB1F"}
@@ -1,35 +1,30 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
- import { mergeRsbuildConfig } from '@rsbuild/core';
3
+ import { mergeConfig } from 'vite';
4
4
  import { packageDirectory } from '../utils/packages.js';
5
- import { createClientDefaults } from './defaults.js';
5
+ import { writeGeneratedConfig } from './generated.js';
6
6
  import { loadBuilderConfig } from './load.js';
7
- export function createStorybookRsbuildConfig(config) {
8
- const defaults = createClientDefaults();
9
- const merged = mergeRsbuildConfig(defaults, config.rsbuildConfig, config.clientConfig);
10
- // Storybook owns its entry points, HTML, dev server and output directory.
11
- const { environments: _environments, server: _server, html: _html, ...common } = merged;
12
- const { entry: _entry, ...source } = common.source ?? {};
13
- const { distPath: _distPath, target: _target, ...output } = common.output ?? {};
14
- return { ...common, source, output };
7
+ export function createStorybookViteConfig(config, root) {
8
+ return mergeConfig(mergeConfig({ envPrefix: ['VITE_', 'PUBLIC_'] }, config.storybookViteConfig ?? {}), { root });
15
9
  }
16
10
  export async function createStorybookConfig(root = process.cwd()) {
17
11
  const config = await loadBuilderConfig(root);
12
+ const viteConfig = await writeGeneratedConfig(root, 'storybook-vite', 'export default {};\n');
18
13
  const preview = ['ts', 'tsx', 'js', 'jsx', 'mjs']
19
14
  .map((extension) => resolve(root, `.storybook/preview.${extension}`))
20
15
  .find((path) => existsSync(path));
21
16
  return {
22
17
  framework: {
23
- name: packageDirectory('storybook-react-rsbuild'),
24
- options: {},
18
+ name: packageDirectory('@storybook/react-vite'),
19
+ options: { builder: { viteConfigPath: viteConfig.file } },
25
20
  },
26
21
  stories: [resolve(root, 'src/**/*.stories.@(ts|tsx|js|jsx|mjs)').replaceAll('\\', '/')],
27
22
  addons: [packageDirectory('@storybook/addon-docs')],
28
23
  ...(preview ? { previewAnnotations: [preview] } : {}),
29
24
  ...(existsSync(resolve(root, 'public')) ? { staticDirs: [resolve(root, 'public')] } : {}),
30
- typescript: { check: true, reactDocgen: 'react-docgen-typescript' },
31
- async rsbuildFinal(base) {
32
- return mergeRsbuildConfig(base, createStorybookRsbuildConfig(config));
25
+ typescript: { check: false, reactDocgen: 'react-docgen-typescript' },
26
+ async viteFinal(base) {
27
+ return mergeConfig(base, createStorybookViteConfig(config, root));
33
28
  },
34
29
  };
35
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAsB,MAAM,eAAe,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,UAAU,4BAA4B,CAAC,MAA4B;IACrE,MAAM,QAAQ,GAAkB,oBAAoB,EAAE,CAAC;IACvD,MAAM,MAAM,GAAkB,kBAAkB,CAC5C,QAAQ,EACR,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,YAAY,CACtB,CAAC;IACF,0EAA0E;IAC1E,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACzD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAChF,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;SAC5C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,SAAS,EAAE,CAAC,CAAC;SACpE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO;QACH,SAAS,EAAE;YACP,IAAI,EAAE,gBAAgB,CAAC,yBAAyB,CAAC;YACjD,OAAO,EAAE,EAAE;SACd;QACD,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,EAAE,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACnE,KAAK,CAAC,YAAY,CAAC,IAAI;YACnB,OAAO,kBAAkB,CAAC,IAAI,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAmB,MAAM,MAAM,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,UAAU,yBAAyB,CAAC,MAA4B,EAAE,IAAY;IAChF,OAAO,WAAW,CACd,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAClF,EAAE,IAAI,EAAE,CACX,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;SAC5C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,SAAS,EAAE,CAAC,CAAC;SACpE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO;QACH,SAAS,EAAE;YACP,IAAI,EAAE,gBAAgB,CAAC,uBAAuB,CAAC;YAC/C,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE;SAC5D;QACD,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,EAAE,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACpE,KAAK,CAAC,SAAS,CAAC,IAAI;YAChB,OAAO,WAAW,CAAC,IAAI,EAAE,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -1,3 +1,2 @@
1
1
  export declare const typescriptPath: string;
2
- export declare function typeCheckPlugin(root: string): import("@rsbuild/core").RsbuildPlugin;
3
2
  //# sourceMappingURL=typescript.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,QAAgC,CAAC;AAE5D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,yCAM3C"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,QAAgC,CAAC"}
@@ -1,13 +1,4 @@
1
1
  import { createRequire } from 'node:module';
2
- import { resolve } from 'node:path';
3
- import { pluginTypeCheck } from '@rsbuild/plugin-type-check';
4
2
  const require = createRequire(import.meta.url);
5
3
  export const typescriptPath = require.resolve('typescript');
6
- export function typeCheckPlugin(root) {
7
- return pluginTypeCheck({
8
- tsCheckerOptions: {
9
- typescript: { configFile: resolve(root, 'tsconfig.json'), typescriptPath },
10
- },
11
- });
12
- }
13
4
  //# sourceMappingURL=typescript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAE5D,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,OAAO,eAAe,CAAC;QACnB,gBAAgB,EAAE;YACd,UAAU,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,cAAc,EAAE;SAC7E;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAYjE,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAqBxF"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAWjE,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAoBxF"}
@@ -3,7 +3,6 @@ import { resolve } from 'node:path';
3
3
  import { mergeRsbuildConfig } from '@rsbuild/core';
4
4
  import { pluginReact } from '@rsbuild/plugin-react';
5
5
  import { createClientDefaults, DEFAULT_PORT } from './defaults.js';
6
- import { typeCheckPlugin } from './typescript.js';
7
6
  function defaultEntry(root, names) {
8
7
  return resolve(root, names.find((name) => existsSync(resolve(root, name))) ?? names[0]).replaceAll('\\', '/');
9
8
  }
@@ -22,7 +21,6 @@ export function createUiConfig(config, root) {
22
21
  }, config.rsbuildConfig, { environments: { client: config.clientConfig ?? {} } });
23
22
  return mergeRsbuildConfig(merged, {
24
23
  server: { port: config.port ?? config.rsbuildConfig?.server?.port ?? DEFAULT_PORT },
25
- plugins: [typeCheckPlugin(root)],
26
24
  });
27
25
  }
28
26
  //# sourceMappingURL=ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAsB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,SAAS,YAAY,CAAC,IAAY,EAAE,KAAe;IAC/C,OAAO,OAAO,CACV,IAAI,EACJ,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CACpE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA4B,EAAE,IAAY;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC;IACxF,MAAM,MAAM,GAAG,kBAAkB,CAC7B;QACI,GAAG,oBAAoB,EAAE;QACzB,MAAM,EAAE;YACJ,KAAK,EAAE,KAAK,IAAI;gBACZ,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;aAC/E;YACD,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;SAC/C;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;QAChD,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;KAC3B,EACD,MAAM,CAAC,aAAa,EACpB,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,CAC1D,CAAC;IACF,OAAO,kBAAkB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,EAAE;QACnF,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KACnC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAsB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE,SAAS,YAAY,CAAC,IAAY,EAAE,KAAe;IAC/C,OAAO,OAAO,CACV,IAAI,EACJ,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CACpE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA4B,EAAE,IAAY;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC;IACxF,MAAM,MAAM,GAAG,kBAAkB,CAC7B;QACI,GAAG,oBAAoB,EAAE;QACzB,MAAM,EAAE;YACJ,KAAK,EAAE,KAAK,IAAI;gBACZ,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;aAC/E;YACD,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;SAC/C;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;QAChD,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;KAC3B,EACD,MAAM,CAAC,aAAa,EACpB,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,CAC1D,CAAC;IACF,OAAO,kBAAkB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,EAAE;KACtF,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@storybook/addon-docs/blocks';
2
+ //# sourceMappingURL=blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/storybook/blocks.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@storybook/addon-docs/blocks';
2
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/storybook/blocks.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import type { EnvironmentConfig, RsbuildConfig } from '@rsbuild/core';
2
+ import type { UserConfig } from 'vite';
2
3
  /** Unknown properties are ignored by the CLI; only these fields are public. */
3
4
  export interface KoslibsBuilderConfig {
4
5
  rsbuildConfig?: RsbuildConfig;
5
6
  clientConfig?: EnvironmentConfig;
7
+ /** Vite options used only by Storybook. */
8
+ storybookViteConfig?: UserConfig;
6
9
  /** Shared dev-server port. Defaults to 8080. */
7
10
  port?: number;
8
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/typings/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEtE,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/typings/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1,2 +1,2 @@
1
- export type { Meta, StoryObj, Preview, StorybookConfig } from 'storybook-react-rsbuild';
1
+ export type { Meta, StoryObj, Preview, StorybookConfig } from '@storybook/react-vite';
2
2
  //# sourceMappingURL=storybook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/typings/storybook.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/typings/storybook.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koslibs/builder",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "Shared React application and ESM library toolchain powered by Rspack",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -25,6 +25,10 @@
25
25
  "types": "./dist/storybook/index.d.ts",
26
26
  "import": "./dist/storybook/index.js"
27
27
  },
28
+ "./storybook/blocks": {
29
+ "types": "./dist/storybook/blocks.d.ts",
30
+ "import": "./dist/storybook/blocks.js"
31
+ },
28
32
  "./testing": {
29
33
  "types": "./dist/testing/index.d.ts",
30
34
  "import": "./dist/testing/index.js"
@@ -42,6 +46,7 @@
42
46
  "files": [
43
47
  "dist",
44
48
  "README.md",
49
+ "CHANGELOG.md",
45
50
  "LICENSE"
46
51
  ],
47
52
  "scripts": {
@@ -59,33 +64,41 @@
59
64
  "format": "koslibs-lint format",
60
65
  "format:check": "koslibs-lint format:check",
61
66
  "prepack": "node scripts/build.mjs",
62
- "version-package:patch": "npm version patch --no-git-tag-version",
63
- "release": "npm publish --access public"
67
+ "changeset": "koslibs-release add",
68
+ "changeset:check": "koslibs-release check",
69
+ "version-package": "koslibs-release version",
70
+ "release": "koslibs-release publish",
71
+ "prepare": "koslibs-release hooks:install"
72
+ },
73
+ "commitlint": {
74
+ "extends": [
75
+ "@koslibs/configs/commitlint"
76
+ ]
64
77
  },
65
78
  "dependencies": {
66
79
  "@playwright/test": "1.63.0",
67
80
  "@rsbuild/core": "2.2.11",
68
81
  "@rsbuild/plugin-react": "2.1.1",
69
- "@rsbuild/plugin-type-check": "1.6.0",
70
82
  "@rslib/core": "1.0.3",
71
83
  "@rstest/core": "0.12.3",
72
84
  "@rstest/coverage-istanbul": "0.12.3",
73
85
  "@storybook/addon-docs": "10.6.1",
86
+ "@storybook/react-vite": "10.6.1",
74
87
  "happy-dom": "20.14.5",
75
88
  "storybook": "10.6.1",
76
- "storybook-react-rsbuild": "3.6.0",
77
- "typescript": "5.9.3"
89
+ "typescript": "6.0.3",
90
+ "vite": "8.3.2"
78
91
  },
79
92
  "devDependencies": {
80
- "@koslibs/configs": "0.2.11",
81
- "@types/node": "^24.0.0",
82
- "@types/react": "^18.3.0",
83
- "@types/react-dom": "^18.3.0",
84
- "react": "18.3.1",
85
- "react-dom": "18.3.1"
93
+ "@koslibs/configs": "1.0.0",
94
+ "@types/node": "^24.19.1",
95
+ "@types/react": "^19.3.0",
96
+ "@types/react-dom": "^19.3.0",
97
+ "react": "19.3.0",
98
+ "react-dom": "19.3.0"
86
99
  },
87
100
  "peerDependencies": {
88
- "@koslibs/configs": "^0.2.11",
101
+ "@koslibs/configs": "^1.0.0",
89
102
  "react": "^18.3.1 || ^19.0.0",
90
103
  "react-dom": "^18.3.1 || ^19.0.0"
91
104
  },