@koslibs/builder 0.1.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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +301 -0
  3. package/dist/cli/args.d.ts +3 -0
  4. package/dist/cli/args.d.ts.map +1 -0
  5. package/dist/cli/args.js +24 -0
  6. package/dist/cli/args.js.map +1 -0
  7. package/dist/cli/commands.d.ts +2 -0
  8. package/dist/cli/commands.d.ts.map +1 -0
  9. package/dist/cli/commands.js +20 -0
  10. package/dist/cli/commands.js.map +1 -0
  11. package/dist/cli/handlers/library.d.ts +2 -0
  12. package/dist/cli/handlers/library.d.ts.map +1 -0
  13. package/dist/cli/handlers/library.js +21 -0
  14. package/dist/cli/handlers/library.js.map +1 -0
  15. package/dist/cli/handlers/storybook.d.ts +2 -0
  16. package/dist/cli/handlers/storybook.d.ts.map +1 -0
  17. package/dist/cli/handlers/storybook.js +23 -0
  18. package/dist/cli/handlers/storybook.js.map +1 -0
  19. package/dist/cli/handlers/tests.d.ts +2 -0
  20. package/dist/cli/handlers/tests.d.ts.map +1 -0
  21. package/dist/cli/handlers/tests.js +39 -0
  22. package/dist/cli/handlers/tests.js.map +1 -0
  23. package/dist/cli/handlers/typecheck.d.ts +2 -0
  24. package/dist/cli/handlers/typecheck.d.ts.map +1 -0
  25. package/dist/cli/handlers/typecheck.js +6 -0
  26. package/dist/cli/handlers/typecheck.js.map +1 -0
  27. package/dist/cli/handlers/ui.d.ts +2 -0
  28. package/dist/cli/handlers/ui.d.ts.map +1 -0
  29. package/dist/cli/handlers/ui.js +25 -0
  30. package/dist/cli/handlers/ui.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +10 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/process.d.ts +3 -0
  36. package/dist/cli/process.d.ts.map +1 -0
  37. package/dist/cli/process.js +36 -0
  38. package/dist/cli/process.js.map +1 -0
  39. package/dist/cli/run.d.ts +2 -0
  40. package/dist/cli/run.d.ts.map +1 -0
  41. package/dist/cli/run.js +54 -0
  42. package/dist/cli/run.js.map +1 -0
  43. package/dist/configs/browser-tests.d.ts +4 -0
  44. package/dist/configs/browser-tests.d.ts.map +1 -0
  45. package/dist/configs/browser-tests.js +29 -0
  46. package/dist/configs/browser-tests.js.map +1 -0
  47. package/dist/configs/defaults.d.ts +5 -0
  48. package/dist/configs/defaults.d.ts.map +1 -0
  49. package/dist/configs/defaults.js +15 -0
  50. package/dist/configs/defaults.js.map +1 -0
  51. package/dist/configs/find-test.d.ts +2 -0
  52. package/dist/configs/find-test.d.ts.map +1 -0
  53. package/dist/configs/find-test.js +8 -0
  54. package/dist/configs/find-test.js.map +1 -0
  55. package/dist/configs/generated.d.ts +6 -0
  56. package/dist/configs/generated.d.ts.map +1 -0
  57. package/dist/configs/generated.js +21 -0
  58. package/dist/configs/generated.js.map +1 -0
  59. package/dist/configs/library.d.ts +4 -0
  60. package/dist/configs/library.d.ts.map +1 -0
  61. package/dist/configs/library.js +34 -0
  62. package/dist/configs/library.js.map +1 -0
  63. package/dist/configs/load.d.ts +3 -0
  64. package/dist/configs/load.d.ts.map +1 -0
  65. package/dist/configs/load.js +13 -0
  66. package/dist/configs/load.js.map +1 -0
  67. package/dist/configs/normalize.d.ts +3 -0
  68. package/dist/configs/normalize.d.ts.map +1 -0
  69. package/dist/configs/normalize.js +24 -0
  70. package/dist/configs/normalize.js.map +1 -0
  71. package/dist/configs/storybook.d.ts +6 -0
  72. package/dist/configs/storybook.d.ts.map +1 -0
  73. package/dist/configs/storybook.js +36 -0
  74. package/dist/configs/storybook.js.map +1 -0
  75. package/dist/configs/typescript.d.ts +3 -0
  76. package/dist/configs/typescript.d.ts.map +1 -0
  77. package/dist/configs/typescript.js +13 -0
  78. package/dist/configs/typescript.js.map +1 -0
  79. package/dist/configs/ui.d.ts +4 -0
  80. package/dist/configs/ui.d.ts.map +1 -0
  81. package/dist/configs/ui.js +28 -0
  82. package/dist/configs/ui.js.map +1 -0
  83. package/dist/configs/unit-tests.d.ts +4 -0
  84. package/dist/configs/unit-tests.d.ts.map +1 -0
  85. package/dist/configs/unit-tests.js +14 -0
  86. package/dist/configs/unit-tests.js.map +1 -0
  87. package/dist/index.d.ts +2 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +2 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/storybook/index.d.ts +3 -0
  92. package/dist/storybook/index.d.ts.map +1 -0
  93. package/dist/storybook/index.js +2 -0
  94. package/dist/storybook/index.js.map +1 -0
  95. package/dist/testing/index.d.ts +5 -0
  96. package/dist/testing/index.d.ts.map +1 -0
  97. package/dist/testing/index.js +4 -0
  98. package/dist/testing/index.js.map +1 -0
  99. package/dist/testing/playwright.d.ts +2 -0
  100. package/dist/testing/playwright.d.ts.map +1 -0
  101. package/dist/testing/playwright.js +2 -0
  102. package/dist/testing/playwright.js.map +1 -0
  103. package/dist/testing/rstest.d.ts +2 -0
  104. package/dist/testing/rstest.d.ts.map +1 -0
  105. package/dist/testing/rstest.js +2 -0
  106. package/dist/testing/rstest.js.map +1 -0
  107. package/dist/typings/cli.d.ts +7 -0
  108. package/dist/typings/cli.d.ts.map +1 -0
  109. package/dist/typings/cli.js +2 -0
  110. package/dist/typings/cli.js.map +1 -0
  111. package/dist/typings/client.d.ts +3 -0
  112. package/dist/typings/client.d.ts.map +1 -0
  113. package/dist/typings/client.js +3 -0
  114. package/dist/typings/client.js.map +1 -0
  115. package/dist/typings/config.d.ts +9 -0
  116. package/dist/typings/config.d.ts.map +1 -0
  117. package/dist/typings/config.js +2 -0
  118. package/dist/typings/config.js.map +1 -0
  119. package/dist/typings/index.d.ts +5 -0
  120. package/dist/typings/index.d.ts.map +1 -0
  121. package/dist/typings/index.js +2 -0
  122. package/dist/typings/index.js.map +1 -0
  123. package/dist/typings/packages.d.ts +4 -0
  124. package/dist/typings/packages.d.ts.map +1 -0
  125. package/dist/typings/packages.js +2 -0
  126. package/dist/typings/packages.js.map +1 -0
  127. package/dist/typings/storybook.d.ts +2 -0
  128. package/dist/typings/storybook.d.ts.map +1 -0
  129. package/dist/typings/storybook.js +2 -0
  130. package/dist/typings/storybook.js.map +1 -0
  131. package/dist/typings/testing.d.ts +3 -0
  132. package/dist/typings/testing.d.ts.map +1 -0
  133. package/dist/typings/testing.js +2 -0
  134. package/dist/typings/testing.js.map +1 -0
  135. package/dist/utils/packages.d.ts +3 -0
  136. package/dist/utils/packages.d.ts.map +1 -0
  137. package/dist/utils/packages.js +17 -0
  138. package/dist/utils/packages.js.map +1 -0
  139. package/dist/utils/shell.d.ts +2 -0
  140. package/dist/utils/shell.d.ts.map +1 -0
  141. package/dist/utils/shell.js +7 -0
  142. package/dist/utils/shell.js.map +1 -0
  143. package/package.json +107 -0
@@ -0,0 +1,36 @@
1
+ import { spawn } from 'node:child_process';
2
+ export function runNode(bin, args, root) {
3
+ return new Promise((resolveCode, reject) => {
4
+ const child = spawn(process.execPath, [bin, ...args], { cwd: root, stdio: 'inherit' });
5
+ const stop = () => child.kill('SIGTERM');
6
+ process.once('SIGINT', stop);
7
+ process.once('SIGTERM', stop);
8
+ const removeListeners = () => {
9
+ process.removeListener('SIGINT', stop);
10
+ process.removeListener('SIGTERM', stop);
11
+ };
12
+ child.once('error', (error) => {
13
+ removeListeners();
14
+ reject(error);
15
+ });
16
+ child.once('exit', (code, signal) => {
17
+ removeListeners();
18
+ resolveCode(code ?? (signal ? 130 : 1));
19
+ });
20
+ });
21
+ }
22
+ export function closeOnSignal(close) {
23
+ const stop = () => {
24
+ process.removeListener('SIGINT', stop);
25
+ process.removeListener('SIGTERM', stop);
26
+ void close().then(() => {
27
+ process.exitCode = 0;
28
+ }, (error) => {
29
+ console.error(error);
30
+ process.exitCode = 1;
31
+ });
32
+ };
33
+ process.once('SIGINT', stop);
34
+ process.once('SIGTERM', stop);
35
+ }
36
+ //# sourceMappingURL=process.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export declare function runCli(argv?: string[]): Promise<number>;
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAWA,wBAAsB,MAAM,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6C1E"}
@@ -0,0 +1,54 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { parseArgs } from './args.js';
4
+ import { COMMANDS } from './commands.js';
5
+ import { runLibrary } from './handlers/library.js';
6
+ import { runStorybook } from './handlers/storybook.js';
7
+ import { runTests } from './handlers/tests.js';
8
+ import { typecheck } from './handlers/typecheck.js';
9
+ import { runUi } from './handlers/ui.js';
10
+ export async function runCli(argv = process.argv.slice(2)) {
11
+ const { command, root, help, args } = parseArgs(argv);
12
+ if (help || !command) {
13
+ console.info(`Usage: koslibs-builder <command> [--root <directory>]\n\n${COMMANDS.join('\n')}\n\nTest and Storybook flags are forwarded to the underlying CLI.`);
14
+ return 0;
15
+ }
16
+ process.chdir(root);
17
+ process.env.NODE_ENV = 'production';
18
+ if (command.includes(':test')) {
19
+ process.env.NODE_ENV = 'test';
20
+ }
21
+ else if (command.endsWith(':start') || command.endsWith(':watch')) {
22
+ process.env.NODE_ENV = 'development';
23
+ }
24
+ if (command.startsWith('storybook:') || command === 'lib:start') {
25
+ return runStorybook(command, root, args);
26
+ }
27
+ if (command.includes(':test')) {
28
+ return runTests(command, root, args);
29
+ }
30
+ if (args.length) {
31
+ throw new Error(`Unexpected argument "${args[0]}". Set build options in koslibs-builder.ts.`);
32
+ }
33
+ if (!existsSync(resolve(root, 'tsconfig.json'))) {
34
+ throw new Error('tsconfig.json is required. Extend a preset from @koslibs/configs.');
35
+ }
36
+ if (command.endsWith(':typecheck')) {
37
+ return typecheck(root);
38
+ }
39
+ // Check the entire TS project (including the builder config), not only imported modules.
40
+ if (command.endsWith(':build')) {
41
+ const code = await typecheck(root);
42
+ if (code !== 0) {
43
+ return code;
44
+ }
45
+ }
46
+ if (command.startsWith('ui:')) {
47
+ await runUi(command, root);
48
+ }
49
+ else {
50
+ await runLibrary(command, root);
51
+ }
52
+ return 0;
53
+ }
54
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PlaywrightTestConfig } from '@playwright/test';
2
+ import type { BrowserTestKind, ProjectKind } from '../typings/testing.js';
3
+ export declare function createBrowserTestConfig(kind: ProjectKind, suite: BrowserTestKind, root?: string): Promise<PlaywrightTestConfig>;
4
+ //# sourceMappingURL=browser-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-tests.d.ts","sourceRoot":"","sources":["../../src/configs/browser-tests.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAM1E,wBAAsB,uBAAuB,CACzC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,eAAe,EACtB,IAAI,SAAgB,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAsB/B"}
@@ -0,0 +1,29 @@
1
+ import { resolve } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { createPlaywrightConfig } from '@koslibs/configs/playwright';
4
+ import { quote } from '../utils/shell.js';
5
+ import { DEFAULT_PORT } from './defaults.js';
6
+ import { loadBuilderConfig } from './load.js';
7
+ export async function createBrowserTestConfig(kind, suite, root = process.cwd()) {
8
+ const config = await loadBuilderConfig(root);
9
+ const port = config.port ?? config.rsbuildConfig?.server?.port ?? DEFAULT_PORT;
10
+ const cli = fileURLToPath(new URL('../cli/index.js', import.meta.url));
11
+ const command = kind === 'ui' ? 'ui:start' : 'storybook:start';
12
+ return createPlaywrightConfig({
13
+ testDir: resolve(root, 'playwright'),
14
+ testMatch: suite === 'screenshots'
15
+ ? '**/*.screenshots.spec.{ts,tsx,js,mjs}'
16
+ : '**/*.spec.{ts,tsx,js,mjs}',
17
+ ...(suite === 'e2e' ? { testIgnore: '**/*.screenshots.spec.*' } : {}),
18
+ outputDir: resolve(root, 'test-results', suite),
19
+ use: { baseURL: `http://localhost:${port}`, browserName: 'chromium' },
20
+ webServer: {
21
+ command: `${quote(process.execPath)} ${quote(cli)} ${command} --root ${quote(root)}`,
22
+ cwd: root,
23
+ url: `http://localhost:${port}`,
24
+ reuseExistingServer: !process.env.CI,
25
+ timeout: 120000,
26
+ },
27
+ });
28
+ }
29
+ //# sourceMappingURL=browser-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-tests.js","sourceRoot":"","sources":["../../src/configs/browser-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAIrE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,IAAiB,EACjB,KAAsB,EACtB,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAEpB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,CAAC;IAC/E,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC/D,OAAO,sBAAsB,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;QACpC,SAAS,EACL,KAAK,KAAK,aAAa;YACnB,CAAC,CAAC,uCAAuC;YACzC,CAAC,CAAC,2BAA2B;QACrC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;QAC/C,GAAG,EAAE,EAAE,OAAO,EAAE,oBAAoB,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;QACrE,SAAS,EAAE;YACP,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE;YACpF,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,oBAAoB,IAAI,EAAE;YAC/B,mBAAmB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACpC,OAAO,EAAE,MAAM;SAClB;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { EnvironmentConfig } from '@rsbuild/core';
2
+ export declare const DEFAULT_PORT = 8080;
3
+ export declare const BROWSERSLIST: string[];
4
+ export declare function createClientDefaults(): EnvironmentConfig;
5
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/configs/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,YAAY,UAAsB,CAAC;AAEhD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAWxD"}
@@ -0,0 +1,15 @@
1
+ export const DEFAULT_PORT = 8080;
2
+ export const BROWSERSLIST = ['last 2 versions'];
3
+ export function createClientDefaults() {
4
+ return {
5
+ output: {
6
+ target: 'web',
7
+ overrideBrowserslist: BROWSERSLIST,
8
+ cssModules: { auto: true },
9
+ distPath: { root: 'dist' },
10
+ assetPrefix: './',
11
+ },
12
+ performance: { chunkSplit: { strategy: 'split-by-experience' } },
13
+ };
14
+ }
15
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/configs/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAEhD,MAAM,UAAU,oBAAoB;IAChC,OAAO;QACH,MAAM,EAAE;YACJ,MAAM,EAAE,KAAK;YACb,oBAAoB,EAAE,YAAY;YAClC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC1B,WAAW,EAAE,IAAI;SACpB;QACD,WAAW,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE;KACnE,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function findTestConfig(root: string, name: string): string | undefined;
2
+ //# sourceMappingURL=find-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-test.d.ts","sourceRoot":"","sources":["../../src/configs/find-test.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI7E"}
@@ -0,0 +1,8 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ export function findTestConfig(root, name) {
4
+ return ['ts', 'mts', 'mjs', 'js', 'cts', 'cjs']
5
+ .map((extension) => resolve(root, `${name}.config.${extension}`))
6
+ .find((path) => existsSync(path));
7
+ }
8
+ //# sourceMappingURL=find-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-test.js","sourceRoot":"","sources":["../../src/configs/find-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IACrD,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;SAC1C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,WAAW,SAAS,EAAE,CAAC,CAAC;SAChE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function writeGeneratedConfig(root: string, name: string, source: string): Promise<{
2
+ directory: string;
3
+ file: string;
4
+ }>;
5
+ export declare function writeLibraryTsconfig(root: string): Promise<void>;
6
+ //# sourceMappingURL=generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/configs/generated.ts"],"names":[],"mappings":"AAGA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;GAMpF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtE"}
@@ -0,0 +1,21 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { resolve } from 'node:path';
3
+ export async function writeGeneratedConfig(root, name, source) {
4
+ const directory = resolve(root, '.cache/koslibs-builder', name);
5
+ await mkdir(directory, { recursive: true });
6
+ const file = resolve(directory, 'main.mjs');
7
+ await writeFile(file, source, 'utf8');
8
+ return { directory, file };
9
+ }
10
+ export async function writeLibraryTsconfig(root) {
11
+ const directory = resolve(root, '.cache/koslibs-builder/lib');
12
+ await mkdir(directory, { recursive: true });
13
+ const src = resolve(root, 'src').replaceAll('\\', '/');
14
+ await writeFile(resolve(directory, 'tsconfig.lib.json'), JSON.stringify({
15
+ extends: resolve(root, 'tsconfig.json'),
16
+ compilerOptions: { rootDir: src },
17
+ include: [src],
18
+ exclude: [`${src}/**/*.test.*`, `${src}/**/*.spec.*`, `${src}/**/*.stories.*`],
19
+ }, null, 4), 'utf8');
20
+ }
21
+ //# sourceMappingURL=generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated.js","sourceRoot":"","sources":["../../src/configs/generated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAc;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAChE,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;IAC9D,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,SAAS,CACX,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACvC,IAAI,CAAC,SAAS,CACV;QACI,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;QACvC,eAAe,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;QACjC,OAAO,EAAE,CAAC,GAAG,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,GAAG,cAAc,EAAE,GAAG,GAAG,cAAc,EAAE,GAAG,GAAG,iBAAiB,CAAC;KACjF,EACD,IAAI,EACJ,CAAC,CACJ,EACD,MAAM,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { RslibConfig } from '@rslib/core';
2
+ import type { KoslibsBuilderConfig } from '../typings/config.js';
3
+ export declare function createLibraryConfig(config: KoslibsBuilderConfig, root: string, watch?: boolean): RslibConfig;
4
+ //# sourceMappingURL=library.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,34 @@
1
+ import { resolve } from 'node:path';
2
+ import { mergeRsbuildConfig } from '@rsbuild/core';
3
+ import { pluginReact } from '@rsbuild/plugin-react';
4
+ import { typeCheckPlugin, typescriptPath } from './typescript.js';
5
+ export function createLibraryConfig(config, root, watch = false) {
6
+ // clientConfig belongs to browser UIs and Storybook, never to the library output.
7
+ const merged = mergeRsbuildConfig({
8
+ source: {
9
+ entry: config.rsbuildConfig?.source?.entry ?? {
10
+ index: [
11
+ './src/**',
12
+ '!./src/**/*.test.*',
13
+ '!./src/**/*.spec.*',
14
+ '!./src/**/*.stories.*',
15
+ ],
16
+ },
17
+ tsconfigPath: resolve(root, '.cache/koslibs-builder/lib/tsconfig.lib.json'),
18
+ },
19
+ output: { target: 'web', distPath: { root: 'dist' } },
20
+ plugins: [pluginReact()],
21
+ }, config.rsbuildConfig);
22
+ return {
23
+ ...merged,
24
+ plugins: [...(merged.plugins ?? []), ...(watch ? [typeCheckPlugin(root)] : [])],
25
+ lib: [
26
+ {
27
+ format: 'esm',
28
+ bundle: false,
29
+ dts: { bundle: false, abortOnError: !watch, typescriptPath },
30
+ },
31
+ ],
32
+ };
33
+ }
34
+ //# sourceMappingURL=library.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ import type { KoslibsBuilderConfig } from '../typings/config.js';
2
+ export declare function loadBuilderConfig(root: string): Promise<KoslibsBuilderConfig>;
3
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/configs/load.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAOnF"}
@@ -0,0 +1,13 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import { normalizeConfig } from './normalize.js';
5
+ export async function loadBuilderConfig(root) {
6
+ const path = resolve(root, 'koslibs-builder.ts');
7
+ if (!existsSync(path)) {
8
+ return {};
9
+ }
10
+ const { default: config } = await import(pathToFileURL(path).href);
11
+ return normalizeConfig(config);
12
+ }
13
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/configs/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { KoslibsBuilderConfig } from '../typings/config.js';
2
+ export declare function normalizeConfig(value: unknown): KoslibsBuilderConfig;
3
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,24 @@
1
+ function isObject(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ export function normalizeConfig(value) {
5
+ if (!isObject(value)) {
6
+ throw new Error('koslibs-builder.ts must default-export a configuration object.');
7
+ }
8
+ const { port, rsbuildConfig, clientConfig } = value;
9
+ if (port !== undefined &&
10
+ (!Number.isInteger(port) || Number(port) < 1 || Number(port) > 65535)) {
11
+ throw new Error('port must be an integer between 1 and 65535.');
12
+ }
13
+ for (const [name, field] of Object.entries({ rsbuildConfig, clientConfig })) {
14
+ if (field !== undefined && !isObject(field)) {
15
+ throw new Error(`${name} must be a configuration object.`);
16
+ }
17
+ }
18
+ return {
19
+ port: port,
20
+ rsbuildConfig: rsbuildConfig,
21
+ clientConfig: clientConfig,
22
+ };
23
+ }
24
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
1
+ import { type RsbuildConfig } from '@rsbuild/core';
2
+ import type { KoslibsBuilderConfig } from '../typings/config.js';
3
+ import type { StorybookConfig } from '../typings/storybook.js';
4
+ export declare function createStorybookRsbuildConfig(config: KoslibsBuilderConfig): RsbuildConfig;
5
+ export declare function createStorybookConfig(root?: string): Promise<StorybookConfig>;
6
+ //# sourceMappingURL=storybook.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,36 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { mergeRsbuildConfig } from '@rsbuild/core';
4
+ import { packageDirectory } from '../utils/packages.js';
5
+ import { createClientDefaults } from './defaults.js';
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 };
15
+ }
16
+ export async function createStorybookConfig(root = process.cwd()) {
17
+ const config = await loadBuilderConfig(root);
18
+ const preview = ['ts', 'tsx', 'js', 'jsx', 'mjs']
19
+ .map((extension) => resolve(root, `.storybook/preview.${extension}`))
20
+ .find((path) => existsSync(path));
21
+ return {
22
+ framework: {
23
+ name: packageDirectory('storybook-react-rsbuild'),
24
+ options: {},
25
+ },
26
+ stories: [resolve(root, 'src/**/*.stories.@(ts|tsx|js|jsx|mjs)').replaceAll('\\', '/')],
27
+ addons: [packageDirectory('@storybook/addon-docs')],
28
+ ...(preview ? { previewAnnotations: [preview] } : {}),
29
+ ...(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));
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=storybook.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ export declare const typescriptPath: string;
2
+ export declare function typeCheckPlugin(root: string): import("@rsbuild/core").RsbuildPlugin;
3
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,13 @@
1
+ import { createRequire } from 'node:module';
2
+ import { resolve } from 'node:path';
3
+ import { pluginTypeCheck } from '@rsbuild/plugin-type-check';
4
+ const require = createRequire(import.meta.url);
5
+ 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
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import { type RsbuildConfig } from '@rsbuild/core';
2
+ import type { KoslibsBuilderConfig } from '../typings/config.js';
3
+ export declare function createUiConfig(config: KoslibsBuilderConfig, root: string): RsbuildConfig;
4
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,28 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { mergeRsbuildConfig } from '@rsbuild/core';
4
+ import { pluginReact } from '@rsbuild/plugin-react';
5
+ import { createClientDefaults, DEFAULT_PORT } from './defaults.js';
6
+ import { typeCheckPlugin } from './typescript.js';
7
+ function defaultEntry(root, names) {
8
+ return resolve(root, names.find((name) => existsSync(resolve(root, name))) ?? names[0]).replaceAll('\\', '/');
9
+ }
10
+ export function createUiConfig(config, root) {
11
+ const entry = config.clientConfig?.source?.entry ?? config.rsbuildConfig?.source?.entry;
12
+ const merged = mergeRsbuildConfig({
13
+ ...createClientDefaults(),
14
+ source: {
15
+ entry: entry ?? {
16
+ index: defaultEntry(root, ['src/index.tsx', 'src/main.tsx', 'src/index.ts']),
17
+ },
18
+ tsconfigPath: resolve(root, 'tsconfig.json'),
19
+ },
20
+ server: { port: DEFAULT_PORT, strictPort: true },
21
+ plugins: [pluginReact()],
22
+ }, config.rsbuildConfig, { environments: { client: config.clientConfig ?? {} } });
23
+ return mergeRsbuildConfig(merged, {
24
+ server: { port: config.port ?? config.rsbuildConfig?.server?.port ?? DEFAULT_PORT },
25
+ plugins: [typeCheckPlugin(root)],
26
+ });
27
+ }
28
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import type { RstestConfig } from '@rstest/core';
2
+ import type { ProjectKind } from '../typings/testing.js';
3
+ export declare function createUnitTestConfig(kind: ProjectKind, root?: string): RstestConfig;
4
+ //# sourceMappingURL=unit-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-tests.d.ts","sourceRoot":"","sources":["../../src/configs/unit-tests.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,SAAgB,GAAG,YAAY,CAU1F"}
@@ -0,0 +1,14 @@
1
+ import { createRstestConfig } from '@koslibs/configs/rstest';
2
+ import { createReactRstestConfig } from '@koslibs/configs/rstest/react';
3
+ export function createUnitTestConfig(kind, root = process.cwd()) {
4
+ const overrides = {
5
+ root,
6
+ include: [
7
+ 'src/**/*.{test,spec}.{ts,tsx,js,jsx,mjs}',
8
+ 'tests/**/*.{test,spec}.{ts,tsx,js,mjs}',
9
+ ],
10
+ coverage: { provider: 'istanbul', include: ['src/**/*.{ts,tsx}'] },
11
+ };
12
+ return kind === 'ui' ? createReactRstestConfig(overrides) : createRstestConfig(overrides);
13
+ }
14
+ //# sourceMappingURL=unit-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-tests.js","sourceRoot":"","sources":["../../src/configs/unit-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAKxE,MAAM,UAAU,oBAAoB,CAAC,IAAiB,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IACxE,MAAM,SAAS,GAAiB;QAC5B,IAAI;QACJ,OAAO,EAAE;YACL,0CAA0C;YAC1C,wCAAwC;SAC3C;QACD,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE;KACrE,CAAC;IACF,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { EnvironmentConfig, KoslibsBuilderConfig, RsbuildConfig } from './typings/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { createStorybookConfig } from '../configs/storybook.js';
2
+ export type { Meta, StoryObj, Preview, StorybookConfig } from '../typings/storybook.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storybook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createStorybookConfig } from '../configs/storybook.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storybook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createBrowserTestConfig } from '../configs/browser-tests.js';
2
+ export { findTestConfig } from '../configs/find-test.js';
3
+ export { createUnitTestConfig } from '../configs/unit-tests.js';
4
+ export type { BrowserTestKind, ProjectKind } from '../typings/testing.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createBrowserTestConfig } from '../configs/browser-tests.js';
2
+ export { findTestConfig } from '../configs/find-test.js';
3
+ export { createUnitTestConfig } from '../configs/unit-tests.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@playwright/test';
2
+ //# sourceMappingURL=playwright.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../src/testing/playwright.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@playwright/test';
2
+ //# sourceMappingURL=playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright.js","sourceRoot":"","sources":["../../src/testing/playwright.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@rstest/core';
2
+ //# sourceMappingURL=rstest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rstest.d.ts","sourceRoot":"","sources":["../../src/testing/rstest.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}