@trebired/bundler 3.6.1 → 4.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 (265) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +279 -6
  3. package/dist/core/build.d.ts.map +1 -1
  4. package/dist/core/build.js +4 -0
  5. package/dist/core/build.js.map +1 -1
  6. package/dist/core/discovery/aggregate.d.ts +5 -1
  7. package/dist/core/discovery/aggregate.d.ts.map +1 -1
  8. package/dist/core/discovery/aggregate.js +6 -3
  9. package/dist/core/discovery/aggregate.js.map +1 -1
  10. package/dist/core/discovery/exports.d.ts +17 -0
  11. package/dist/core/discovery/exports.d.ts.map +1 -0
  12. package/dist/core/discovery/exports.js +106 -0
  13. package/dist/core/discovery/exports.js.map +1 -0
  14. package/dist/core/discovery/normalize.d.ts.map +1 -1
  15. package/dist/core/discovery/normalize.js +1 -0
  16. package/dist/core/discovery/normalize.js.map +1 -1
  17. package/dist/core/discovery/resolve.d.ts.map +1 -1
  18. package/dist/core/discovery/resolve.js +16 -8
  19. package/dist/core/discovery/resolve.js.map +1 -1
  20. package/dist/core/discovery/scan.js +1 -1
  21. package/dist/core/discovery/scan.js.map +1 -1
  22. package/dist/core/discovery/shared.d.ts +1 -0
  23. package/dist/core/discovery/shared.d.ts.map +1 -1
  24. package/dist/core/discovery/shared.js.map +1 -1
  25. package/dist/core/esbuild-options.d.ts +6 -1
  26. package/dist/core/esbuild-options.d.ts.map +1 -1
  27. package/dist/core/esbuild-options.js +20 -0
  28. package/dist/core/esbuild-options.js.map +1 -1
  29. package/dist/core/frontend.d.ts +8 -0
  30. package/dist/core/frontend.d.ts.map +1 -0
  31. package/dist/core/frontend.js +51 -0
  32. package/dist/core/frontend.js.map +1 -0
  33. package/dist/core/frontend_app/assets.d.ts +5 -0
  34. package/dist/core/frontend_app/assets.d.ts.map +1 -0
  35. package/dist/core/frontend_app/assets.js +74 -0
  36. package/dist/core/frontend_app/assets.js.map +1 -0
  37. package/dist/core/frontend_app/build.d.ts +5 -0
  38. package/dist/core/frontend_app/build.d.ts.map +1 -0
  39. package/dist/core/frontend_app/build.js +82 -0
  40. package/dist/core/frontend_app/build.js.map +1 -0
  41. package/dist/core/frontend_app/config.d.ts +6 -0
  42. package/dist/core/frontend_app/config.d.ts.map +1 -0
  43. package/dist/core/frontend_app/config.js +183 -0
  44. package/dist/core/frontend_app/config.js.map +1 -0
  45. package/dist/core/frontend_app/defaults.d.ts +12 -0
  46. package/dist/core/frontend_app/defaults.d.ts.map +1 -0
  47. package/dist/core/frontend_app/defaults.js +58 -0
  48. package/dist/core/frontend_app/defaults.js.map +1 -0
  49. package/dist/core/frontend_app/hygiene.d.ts +6 -0
  50. package/dist/core/frontend_app/hygiene.d.ts.map +1 -0
  51. package/dist/core/frontend_app/hygiene.js +46 -0
  52. package/dist/core/frontend_app/hygiene.js.map +1 -0
  53. package/dist/core/frontend_app/index.d.ts +11 -0
  54. package/dist/core/frontend_app/index.d.ts.map +1 -0
  55. package/dist/core/frontend_app/index.js +11 -0
  56. package/dist/core/frontend_app/index.js.map +1 -0
  57. package/dist/core/frontend_app/manifest.d.ts +16 -0
  58. package/dist/core/frontend_app/manifest.d.ts.map +1 -0
  59. package/dist/core/frontend_app/manifest.js +82 -0
  60. package/dist/core/frontend_app/manifest.js.map +1 -0
  61. package/dist/core/frontend_app/related.d.ts +4 -0
  62. package/dist/core/frontend_app/related.d.ts.map +1 -0
  63. package/dist/core/frontend_app/related.js +25 -0
  64. package/dist/core/frontend_app/related.js.map +1 -0
  65. package/dist/core/frontend_app/runtime.d.ts +4 -0
  66. package/dist/core/frontend_app/runtime.d.ts.map +1 -0
  67. package/dist/core/frontend_app/runtime.js +148 -0
  68. package/dist/core/frontend_app/runtime.js.map +1 -0
  69. package/dist/core/frontend_app/ssr.d.ts +5 -0
  70. package/dist/core/frontend_app/ssr.d.ts.map +1 -0
  71. package/dist/core/frontend_app/ssr.js +28 -0
  72. package/dist/core/frontend_app/ssr.js.map +1 -0
  73. package/dist/core/frontend_app/static.d.ts +5 -0
  74. package/dist/core/frontend_app/static.d.ts.map +1 -0
  75. package/dist/core/frontend_app/static.js +165 -0
  76. package/dist/core/frontend_app/static.js.map +1 -0
  77. package/dist/core/manifest.d.ts +3 -1
  78. package/dist/core/manifest.d.ts.map +1 -1
  79. package/dist/core/manifest.js +2 -0
  80. package/dist/core/manifest.js.map +1 -1
  81. package/dist/core/output-layout.d.ts +25 -0
  82. package/dist/core/output-layout.d.ts.map +1 -0
  83. package/dist/core/output-layout.js +239 -0
  84. package/dist/core/output-layout.js.map +1 -0
  85. package/dist/core/post-build.d.ts +15 -0
  86. package/dist/core/post-build.d.ts.map +1 -0
  87. package/dist/core/post-build.js +21 -0
  88. package/dist/core/post-build.js.map +1 -0
  89. package/dist/core/precompression.d.ts +15 -0
  90. package/dist/core/precompression.d.ts.map +1 -0
  91. package/dist/core/precompression.js +147 -0
  92. package/dist/core/precompression.js.map +1 -0
  93. package/dist/core/related-entries.d.ts +4 -0
  94. package/dist/core/related-entries.d.ts.map +1 -0
  95. package/dist/core/related-entries.js +78 -0
  96. package/dist/core/related-entries.js.map +1 -0
  97. package/dist/core/shared.d.ts +3 -1
  98. package/dist/core/shared.d.ts.map +1 -1
  99. package/dist/core/shared.js +4 -0
  100. package/dist/core/shared.js.map +1 -1
  101. package/dist/core/watch.d.ts.map +1 -1
  102. package/dist/core/watch.js +4 -0
  103. package/dist/core/watch.js.map +1 -1
  104. package/dist/index.d.ts +5 -1
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +4 -0
  107. package/dist/index.js.map +1 -1
  108. package/dist/src/core/build.d.ts.map +1 -1
  109. package/dist/src/core/build.js +4 -0
  110. package/dist/src/core/build.js.map +1 -1
  111. package/dist/src/core/discovery/aggregate.d.ts +5 -1
  112. package/dist/src/core/discovery/aggregate.d.ts.map +1 -1
  113. package/dist/src/core/discovery/aggregate.js +6 -3
  114. package/dist/src/core/discovery/aggregate.js.map +1 -1
  115. package/dist/src/core/discovery/exports.d.ts +17 -0
  116. package/dist/src/core/discovery/exports.d.ts.map +1 -0
  117. package/dist/src/core/discovery/exports.js +106 -0
  118. package/dist/src/core/discovery/exports.js.map +1 -0
  119. package/dist/src/core/discovery/normalize.d.ts.map +1 -1
  120. package/dist/src/core/discovery/normalize.js +1 -0
  121. package/dist/src/core/discovery/normalize.js.map +1 -1
  122. package/dist/src/core/discovery/resolve.d.ts.map +1 -1
  123. package/dist/src/core/discovery/resolve.js +16 -8
  124. package/dist/src/core/discovery/resolve.js.map +1 -1
  125. package/dist/src/core/discovery/scan.js +1 -1
  126. package/dist/src/core/discovery/scan.js.map +1 -1
  127. package/dist/src/core/discovery/shared.d.ts +1 -0
  128. package/dist/src/core/discovery/shared.d.ts.map +1 -1
  129. package/dist/src/core/discovery/shared.js.map +1 -1
  130. package/dist/src/core/esbuild-options.d.ts +6 -1
  131. package/dist/src/core/esbuild-options.d.ts.map +1 -1
  132. package/dist/src/core/esbuild-options.js +20 -0
  133. package/dist/src/core/esbuild-options.js.map +1 -1
  134. package/dist/src/core/frontend.d.ts +8 -0
  135. package/dist/src/core/frontend.d.ts.map +1 -0
  136. package/dist/src/core/frontend.js +51 -0
  137. package/dist/src/core/frontend.js.map +1 -0
  138. package/dist/src/core/frontend_app/assets.d.ts +5 -0
  139. package/dist/src/core/frontend_app/assets.d.ts.map +1 -0
  140. package/dist/src/core/frontend_app/assets.js +74 -0
  141. package/dist/src/core/frontend_app/assets.js.map +1 -0
  142. package/dist/src/core/frontend_app/build.d.ts +5 -0
  143. package/dist/src/core/frontend_app/build.d.ts.map +1 -0
  144. package/dist/src/core/frontend_app/build.js +82 -0
  145. package/dist/src/core/frontend_app/build.js.map +1 -0
  146. package/dist/src/core/frontend_app/config.d.ts +6 -0
  147. package/dist/src/core/frontend_app/config.d.ts.map +1 -0
  148. package/dist/src/core/frontend_app/config.js +183 -0
  149. package/dist/src/core/frontend_app/config.js.map +1 -0
  150. package/dist/src/core/frontend_app/defaults.d.ts +12 -0
  151. package/dist/src/core/frontend_app/defaults.d.ts.map +1 -0
  152. package/dist/src/core/frontend_app/defaults.js +58 -0
  153. package/dist/src/core/frontend_app/defaults.js.map +1 -0
  154. package/dist/src/core/frontend_app/hygiene.d.ts +6 -0
  155. package/dist/src/core/frontend_app/hygiene.d.ts.map +1 -0
  156. package/dist/src/core/frontend_app/hygiene.js +46 -0
  157. package/dist/src/core/frontend_app/hygiene.js.map +1 -0
  158. package/dist/src/core/frontend_app/index.d.ts +11 -0
  159. package/dist/src/core/frontend_app/index.d.ts.map +1 -0
  160. package/dist/src/core/frontend_app/index.js +11 -0
  161. package/dist/src/core/frontend_app/index.js.map +1 -0
  162. package/dist/src/core/frontend_app/manifest.d.ts +16 -0
  163. package/dist/src/core/frontend_app/manifest.d.ts.map +1 -0
  164. package/dist/src/core/frontend_app/manifest.js +82 -0
  165. package/dist/src/core/frontend_app/manifest.js.map +1 -0
  166. package/dist/src/core/frontend_app/related.d.ts +4 -0
  167. package/dist/src/core/frontend_app/related.d.ts.map +1 -0
  168. package/dist/src/core/frontend_app/related.js +25 -0
  169. package/dist/src/core/frontend_app/related.js.map +1 -0
  170. package/dist/src/core/frontend_app/runtime.d.ts +4 -0
  171. package/dist/src/core/frontend_app/runtime.d.ts.map +1 -0
  172. package/dist/src/core/frontend_app/runtime.js +148 -0
  173. package/dist/src/core/frontend_app/runtime.js.map +1 -0
  174. package/dist/src/core/frontend_app/ssr.d.ts +5 -0
  175. package/dist/src/core/frontend_app/ssr.d.ts.map +1 -0
  176. package/dist/src/core/frontend_app/ssr.js +28 -0
  177. package/dist/src/core/frontend_app/ssr.js.map +1 -0
  178. package/dist/src/core/frontend_app/static.d.ts +5 -0
  179. package/dist/src/core/frontend_app/static.d.ts.map +1 -0
  180. package/dist/src/core/frontend_app/static.js +165 -0
  181. package/dist/src/core/frontend_app/static.js.map +1 -0
  182. package/dist/src/core/manifest.d.ts +3 -1
  183. package/dist/src/core/manifest.d.ts.map +1 -1
  184. package/dist/src/core/manifest.js +2 -0
  185. package/dist/src/core/manifest.js.map +1 -1
  186. package/dist/src/core/output-layout.d.ts +25 -0
  187. package/dist/src/core/output-layout.d.ts.map +1 -0
  188. package/dist/src/core/output-layout.js +239 -0
  189. package/dist/src/core/output-layout.js.map +1 -0
  190. package/dist/src/core/post-build.d.ts +15 -0
  191. package/dist/src/core/post-build.d.ts.map +1 -0
  192. package/dist/src/core/post-build.js +21 -0
  193. package/dist/src/core/post-build.js.map +1 -0
  194. package/dist/src/core/precompression.d.ts +15 -0
  195. package/dist/src/core/precompression.d.ts.map +1 -0
  196. package/dist/src/core/precompression.js +147 -0
  197. package/dist/src/core/precompression.js.map +1 -0
  198. package/dist/src/core/related-entries.d.ts +4 -0
  199. package/dist/src/core/related-entries.d.ts.map +1 -0
  200. package/dist/src/core/related-entries.js +78 -0
  201. package/dist/src/core/related-entries.js.map +1 -0
  202. package/dist/src/core/shared.d.ts +3 -1
  203. package/dist/src/core/shared.d.ts.map +1 -1
  204. package/dist/src/core/shared.js +4 -0
  205. package/dist/src/core/shared.js.map +1 -1
  206. package/dist/src/core/watch.d.ts.map +1 -1
  207. package/dist/src/core/watch.js +4 -0
  208. package/dist/src/core/watch.js.map +1 -1
  209. package/dist/src/index.d.ts +5 -1
  210. package/dist/src/index.d.ts.map +1 -1
  211. package/dist/src/index.js +4 -0
  212. package/dist/src/index.js.map +1 -1
  213. package/dist/src/types/discovery.d.ts +3 -0
  214. package/dist/src/types/discovery.d.ts.map +1 -1
  215. package/dist/src/types/frontend.d.ts +16 -0
  216. package/dist/src/types/frontend.d.ts.map +1 -0
  217. package/dist/src/types/frontend.js +2 -0
  218. package/dist/src/types/frontend.js.map +1 -0
  219. package/dist/src/types/frontend_app.d.ts +190 -0
  220. package/dist/src/types/frontend_app.d.ts.map +1 -0
  221. package/dist/src/types/frontend_app.js +2 -0
  222. package/dist/src/types/frontend_app.js.map +1 -0
  223. package/dist/src/types/output_layout.d.ts +19 -0
  224. package/dist/src/types/output_layout.d.ts.map +1 -0
  225. package/dist/src/types/output_layout.js +2 -0
  226. package/dist/src/types/output_layout.js.map +1 -0
  227. package/dist/src/types/precompression.d.ts +30 -0
  228. package/dist/src/types/precompression.d.ts.map +1 -0
  229. package/dist/src/types/precompression.js +2 -0
  230. package/dist/src/types/precompression.js.map +1 -0
  231. package/dist/src/types/related_entries.d.ts +22 -0
  232. package/dist/src/types/related_entries.d.ts.map +1 -0
  233. package/dist/src/types/related_entries.js +2 -0
  234. package/dist/src/types/related_entries.js.map +1 -0
  235. package/dist/src/types/runtime.d.ts +8 -1
  236. package/dist/src/types/runtime.d.ts.map +1 -1
  237. package/dist/src/types.d.ts +5 -0
  238. package/dist/src/types.d.ts.map +1 -1
  239. package/dist/types/discovery.d.ts +3 -0
  240. package/dist/types/discovery.d.ts.map +1 -1
  241. package/dist/types/frontend.d.ts +16 -0
  242. package/dist/types/frontend.d.ts.map +1 -0
  243. package/dist/types/frontend.js +2 -0
  244. package/dist/types/frontend.js.map +1 -0
  245. package/dist/types/frontend_app.d.ts +190 -0
  246. package/dist/types/frontend_app.d.ts.map +1 -0
  247. package/dist/types/frontend_app.js +2 -0
  248. package/dist/types/frontend_app.js.map +1 -0
  249. package/dist/types/output_layout.d.ts +19 -0
  250. package/dist/types/output_layout.d.ts.map +1 -0
  251. package/dist/types/output_layout.js +2 -0
  252. package/dist/types/output_layout.js.map +1 -0
  253. package/dist/types/precompression.d.ts +30 -0
  254. package/dist/types/precompression.d.ts.map +1 -0
  255. package/dist/types/precompression.js +2 -0
  256. package/dist/types/precompression.js.map +1 -0
  257. package/dist/types/related_entries.d.ts +22 -0
  258. package/dist/types/related_entries.d.ts.map +1 -0
  259. package/dist/types/related_entries.js +2 -0
  260. package/dist/types/related_entries.js.map +1 -0
  261. package/dist/types/runtime.d.ts +8 -1
  262. package/dist/types/runtime.d.ts.map +1 -1
  263. package/dist/types.d.ts +5 -0
  264. package/dist/types.d.ts.map +1 -1
  265. package/package.json +4 -2
@@ -0,0 +1,82 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { bundle } from "../../src/core/build.js";
4
+ import { createFrontendAppBundlerOptions } from "./config.js";
5
+ import { resolveAssetManifestEntryOutputPath } from "./manifest.js";
6
+ import { buildRelatedClientEntryMap } from "./related.js";
7
+ async function buildFrontendApp(options) {
8
+ const nodeModulesOptions = "nodeModules" in options ? options.nodeModules : undefined;
9
+ const { client, config, ssr } = createFrontendAppBundlerOptions(options);
10
+ const clientResult = await bundle(client);
11
+ const publicDirCopied = await copyPublicDir(config);
12
+ const ssrResult = ssr ? await bundle(ssr) : undefined;
13
+ const relatedClientEntryMap = await resolveBuildRelatedClientEntryMap(config, ssrResult);
14
+ const ssrEntryOutput = resolveBuildSsrEntryOutput(config, ssrResult);
15
+ const nodeModules = ssrResult ? await prepareSsrNodeModules(config, nodeModulesOptions) : undefined;
16
+ return {
17
+ client: clientResult,
18
+ nodeModules,
19
+ publicDirCopied,
20
+ relatedClientEntryMap,
21
+ ssr: ssrResult,
22
+ ssrEntryOutput,
23
+ stats: { precompressed: clientResult.precompressed },
24
+ };
25
+ }
26
+ async function copyPublicDir(config) {
27
+ if (!config.publicDir)
28
+ return false;
29
+ const sourceDir = path.resolve(config.rootDir, config.publicDir);
30
+ if (!await exists(sourceDir))
31
+ return false;
32
+ const targetDir = path.resolve(config.rootDir, config.clientOutDir);
33
+ await fs.mkdir(targetDir, { recursive: true });
34
+ await fs.cp(sourceDir, targetDir, { recursive: true, force: true });
35
+ return true;
36
+ }
37
+ async function resolveBuildRelatedClientEntryMap(config, ssrResult) {
38
+ if (!ssrResult?.assetManifest || !config.ssr)
39
+ return {};
40
+ return buildRelatedClientEntryMap({
41
+ manifest: ssrResult.assetManifest,
42
+ pageId: { collapseIndex: config.ssr.collapseIndex, sourcePrefix: `${config.frontendDir}/pages` },
43
+ rootDir: config.rootDir,
44
+ ruleKey: config.ssr.key,
45
+ });
46
+ }
47
+ function resolveBuildSsrEntryOutput(config, ssrResult) {
48
+ if (!ssrResult?.assetManifest || !config.ssr || !config.ssrOutDir)
49
+ return undefined;
50
+ return resolveAssetManifestEntryOutputPath({
51
+ entryId: config.ssr.key,
52
+ from: "ruleKey",
53
+ manifest: ssrResult.assetManifest,
54
+ outDir: path.resolve(config.rootDir, config.ssrOutDir),
55
+ });
56
+ }
57
+ async function prepareSsrNodeModules(config, options) {
58
+ const strategy = options?.strategy || "none";
59
+ if (strategy === "none" || !config.ssrOutDir)
60
+ return undefined;
61
+ const sourceDir = path.resolve(config.rootDir, options?.sourceDir || "node_modules");
62
+ const targetDir = path.resolve(config.rootDir, options?.targetDir || path.join(config.ssrOutDir, "node_modules"));
63
+ if (options?.force)
64
+ await fs.rm(targetDir, { force: true, recursive: true });
65
+ if (strategy === "symlink")
66
+ await createNodeModulesSymlink(sourceDir, targetDir);
67
+ else
68
+ await fs.cp(sourceDir, targetDir, { recursive: true, force: true });
69
+ return { path: targetDir, strategy };
70
+ }
71
+ async function createNodeModulesSymlink(sourceDir, targetDir) {
72
+ await fs.mkdir(path.dirname(targetDir), { recursive: true });
73
+ await fs.symlink(sourceDir, targetDir, "junction").catch(async (error) => {
74
+ if (error.code !== "EEXIST")
75
+ throw error;
76
+ });
77
+ }
78
+ async function exists(filePath) {
79
+ return fs.access(filePath).then(() => true, () => false);
80
+ }
81
+ export { buildFrontendApp, copyPublicDir, };
82
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../src/core/frontend_app/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { BundlerFrontendAppBundlerConfig, BundlerFrontendAppBundlerConfigOptions, BundlerFrontendAppBundlerOptions, BundlerFrontendRuntimeConfig } from "../../src/types.d.ts";
2
+ declare function defineFrontendBundlerConfig(options: BundlerFrontendAppBundlerConfigOptions): BundlerFrontendAppBundlerConfig;
3
+ declare function createFrontendAppBundlerOptions(options: BundlerFrontendAppBundlerConfigOptions | BundlerFrontendAppBundlerConfig): BundlerFrontendAppBundlerOptions;
4
+ declare function createFrontendBundlerRuntimeConfig(options: BundlerFrontendAppBundlerConfigOptions | BundlerFrontendAppBundlerConfig): BundlerFrontendRuntimeConfig;
5
+ export { createFrontendAppBundlerOptions, createFrontendBundlerRuntimeConfig, defineFrontendBundlerConfig, };
6
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/core/frontend_app/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,+BAA+B,EAC/B,sCAAsC,EACtC,gCAAgC,EAChC,4BAA4B,EAG7B,MAAM,eAAe,CAAC;AAqBvB,iBAAS,2BAA2B,CAAC,OAAO,EAAE,sCAAsC,GAAG,+BAA+B,CASrH;AAED,iBAAS,+BAA+B,CACtC,OAAO,EAAE,sCAAsC,GAAG,+BAA+B,GAChF,gCAAgC,CAOlC;AAED,iBAAS,kCAAkC,CACzC,OAAO,EAAE,sCAAsC,GAAG,+BAA+B,GAChF,4BAA4B,CAS9B;AAiMD,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,2BAA2B,GAC5B,CAAC"}
@@ -0,0 +1,183 @@
1
+ import path from "node:path";
2
+ import { createFrontendEntryRules, DEFAULT_FRONTEND_CLIENT_ENTRY_PATTERNS, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_PATTERNS, } from "../../src/core/frontend.js";
3
+ import { normalizePathValue } from "../../src/core/discovery/shared.js";
4
+ import { DEFAULT_FRONTEND_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS, DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY, DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS, DEFAULT_FRONTEND_PUBLIC_DIR, DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS, DEFAULT_FRONTEND_SOURCE_DIR, DEFAULT_FRONTEND_SSR_PAGE_PATTERNS, DEFAULT_FRONTEND_SSR_RULE_KEY, } from "./defaults.js";
5
+ import { createSsrModuleMapRule } from "./ssr.js";
6
+ function defineFrontendBundlerConfig(options) {
7
+ const base = normalizeFrontendConfigBase(options);
8
+ const ssr = normalizeSsrRuleOptions(options, base.ssrOutDir);
9
+ return {
10
+ ...base,
11
+ ssr,
12
+ clientOptions: createClientOptions(options, base),
13
+ ssrOptions: ssr ? createSsrOptions(options, base, ssr) : undefined,
14
+ };
15
+ }
16
+ function createFrontendAppBundlerOptions(options) {
17
+ const config = "clientOptions" in options ? options : defineFrontendBundlerConfig(options);
18
+ return {
19
+ client: config.clientOptions,
20
+ config,
21
+ ssr: config.ssrOptions,
22
+ };
23
+ }
24
+ function createFrontendBundlerRuntimeConfig(options) {
25
+ const { config } = createFrontendAppBundlerOptions(options);
26
+ return {
27
+ ...config,
28
+ clientManifestPath: path.resolve(config.rootDir, config.clientOutDir, "bundler-manifest.json"),
29
+ pageId: config.ssr ? { collapseIndex: config.ssr.collapseIndex, sourcePrefix: `${config.frontendDir}/pages` } : undefined,
30
+ renderTags: true,
31
+ ssrManifestPath: config.ssrOutDir ? path.resolve(config.rootDir, config.ssrOutDir, "bundler-manifest.json") : undefined,
32
+ };
33
+ }
34
+ function createClientOptions(options, base) {
35
+ const overrides = options.browser || {};
36
+ return {
37
+ ...createCommonBuildOptions(options, base, overrides, base.mode === "production"),
38
+ discover: { dir: base.frontendDir, rules: createClientDiscoverRules(options, base) },
39
+ environment: "browser",
40
+ format: "esm",
41
+ outDir: base.clientOutDir,
42
+ splitting: overrides.splitting ?? true,
43
+ target: overrides.target || "es2020",
44
+ ...pickLooseOverrides(overrides),
45
+ };
46
+ }
47
+ function createSsrOptions(options, base, ssr) {
48
+ const overrides = options.node || {};
49
+ return {
50
+ ...createCommonBuildOptions(options, base, overrides, false),
51
+ discover: { dir: base.frontendDir, rules: createSsrDiscoverRules(options, ssr) },
52
+ environment: "node",
53
+ format: "esm",
54
+ outDir: base.ssrOutDir,
55
+ splitting: overrides.splitting ?? false,
56
+ target: overrides.target || "node18",
57
+ ...pickLooseOverrides(overrides),
58
+ };
59
+ }
60
+ function normalizeFrontendConfigBase(options) {
61
+ const rootDir = path.resolve(String(options.rootDir || "").trim() || process.cwd());
62
+ const frontendDir = normalizeRootRelative(rootDir, options.frontendDir || DEFAULT_FRONTEND_SOURCE_DIR);
63
+ const publicDir = normalizePublicDir(rootDir, frontendDir, options.publicDir);
64
+ return {
65
+ clientOutDir: normalizeRootRelative(rootDir, options.clientOutDir),
66
+ deferredClientEntryKey: options.deferredClientEntryKey || DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY,
67
+ frontendDir,
68
+ globalClientEntries: options.globalClientEntries?.slice() || [],
69
+ globalStyleRuleKey: options.globalStyleRuleKey || DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY,
70
+ mode: options.mode || "production",
71
+ publicDir,
72
+ rootDir,
73
+ ssrOutDir: options.ssrOutDir ? normalizeRootRelative(rootDir, options.ssrOutDir) : undefined,
74
+ };
75
+ }
76
+ function createCommonBuildOptions(options, base, overrides, precompressDefault) {
77
+ return {
78
+ clean: overrides.clean,
79
+ define: { ...(options.define || {}), ...(overrides.define || {}) },
80
+ external: overrides.external,
81
+ i18n: options.supportedI18nLanguages?.length ? { supportedLanguages: options.supportedI18nLanguages } : overrides.i18n,
82
+ loader: overrides.loader,
83
+ logger: options.logger || overrides.logger,
84
+ loggerAdapter: overrides.loggerAdapter,
85
+ manifest: overrides.manifest ?? true,
86
+ minify: overrides.minify ?? options.minify ?? base.mode === "production",
87
+ outputLayout: overrides.outputLayout ?? options.outputLayout ?? true,
88
+ precompress: overrides.precompress ?? options.precompress ?? precompressDefault,
89
+ publicPath: overrides.publicPath ?? options.publicPath,
90
+ rootDir: base.rootDir,
91
+ sourcemap: overrides.sourcemap ?? options.sourcemap ?? base.mode === "development",
92
+ stripComments: overrides.stripComments ?? options.stripComments ?? base.mode === "production",
93
+ };
94
+ }
95
+ function createClientDiscoverRules(options, base) {
96
+ return [
97
+ createIgnoredSourceRule(options, base),
98
+ ...createFrontendEntryRules({
99
+ clientKey: DEFAULT_FRONTEND_CLIENT_ENTRY_KEY,
100
+ deferredKey: base.deferredClientEntryKey,
101
+ }),
102
+ createGlobalStyleRule(options, base),
103
+ createRuntimeSourceIgnoreRule(options),
104
+ ...(options.extraClientRules || []),
105
+ createCatchAllIgnoreRule("ignored-client-rest"),
106
+ ];
107
+ }
108
+ function createSsrDiscoverRules(options, ssr) {
109
+ return [
110
+ createIgnoredSourceRule(options),
111
+ createSsrModuleMapRule({
112
+ ...ssr,
113
+ exclude: mergeLists(ssr.exclude, DEFAULT_FRONTEND_CLIENT_ENTRY_PATTERNS, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_PATTERNS),
114
+ }),
115
+ ...(options.extraSsrRules || []),
116
+ createCatchAllIgnoreRule("ignored-ssr-rest"),
117
+ ];
118
+ }
119
+ function createIgnoredSourceRule(options, base) {
120
+ return {
121
+ key: "ignored-source",
122
+ include: mergeLists(DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS, options.ignoredSourceInclude, resolvePublicIgnorePatterns(base)),
123
+ strategy: "ignore",
124
+ };
125
+ }
126
+ function createGlobalStyleRule(options, base) {
127
+ return {
128
+ key: base.globalStyleRuleKey,
129
+ include: options.globalStyleInclude || [...DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS],
130
+ exclude: options.globalStyleExclude,
131
+ maxBundleSize: "50mb",
132
+ strategy: "bundle",
133
+ };
134
+ }
135
+ function createRuntimeSourceIgnoreRule(options) {
136
+ return {
137
+ key: "ignored-runtime-source",
138
+ include: mergeLists(DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS, options.ignoredSourceInclude),
139
+ exclude: mergeLists(DEFAULT_FRONTEND_CLIENT_ENTRY_PATTERNS, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_PATTERNS),
140
+ strategy: "ignore",
141
+ };
142
+ }
143
+ function normalizeSsrRuleOptions(options, ssrOutDir) {
144
+ if (options.ssr === false || !ssrOutDir)
145
+ return undefined;
146
+ return {
147
+ allowEmpty: true,
148
+ include: [...DEFAULT_FRONTEND_SSR_PAGE_PATTERNS],
149
+ key: DEFAULT_FRONTEND_SSR_RULE_KEY,
150
+ requireMatchedModuleExport: true,
151
+ ...(options.ssr || {}),
152
+ };
153
+ }
154
+ function pickLooseOverrides(options) {
155
+ return {
156
+ annotateSources: options.annotateSources,
157
+ onEntrySetChanged: options.onEntrySetChanged,
158
+ onRebuilt: options.onRebuilt,
159
+ };
160
+ }
161
+ function normalizePublicDir(rootDir, frontendDir, value) {
162
+ if (value === false)
163
+ return undefined;
164
+ return normalizeRootRelative(rootDir, value || path.posix.join(frontendDir, DEFAULT_FRONTEND_PUBLIC_DIR));
165
+ }
166
+ function resolvePublicIgnorePatterns(base) {
167
+ if (!base?.publicDir || !base.publicDir.startsWith(`${base.frontendDir}/`))
168
+ return [];
169
+ return [`${base.publicDir.slice(base.frontendDir.length + 1)}/**/*`];
170
+ }
171
+ function createCatchAllIgnoreRule(key) {
172
+ return { key, include: ["**/*"], strategy: "ignore" };
173
+ }
174
+ function mergeLists(...values) {
175
+ return Array.from(new Set(values.flatMap((items) => items || []))).filter(Boolean);
176
+ }
177
+ function normalizeRootRelative(rootDir, value) {
178
+ if (!value)
179
+ throw new Error("bundler-frontend-missing-path");
180
+ return normalizePathValue(path.isAbsolute(value) ? path.relative(rootDir, value) : value);
181
+ }
182
+ export { createFrontendAppBundlerOptions, createFrontendBundlerRuntimeConfig, defineFrontendBundlerConfig, };
183
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/core/frontend_app/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ declare const DEFAULT_FRONTEND_SOURCE_DIR = "src/frontend";
2
+ declare const DEFAULT_FRONTEND_PUBLIC_DIR = "public";
3
+ declare const DEFAULT_FRONTEND_CLIENT_ENTRY_KEY = "client";
4
+ declare const DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY = "client-defer";
5
+ declare const DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY = "global-style";
6
+ declare const DEFAULT_FRONTEND_SSR_RULE_KEY = "ssr-pages";
7
+ declare const DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS: readonly ["css/**/*.css", "css/**/*.scss", "components/**/styles.css", "components/**/styles.scss", "components/**/styles/**/*.css", "components/**/styles/**/*.scss", "js/**/styles.css", "js/**/styles.scss", "js/**/styles/**/*.css", "js/**/styles/**/*.scss"];
8
+ declare const DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS: readonly ["**/*.d.ts", "**/*.d.mts", "**/*.d.cts", "**/*.test.ts", "**/*.test.tsx", "**/*.test.js", "**/*.test.jsx", "**/*.spec.ts", "**/*.spec.tsx", "**/*.spec.js", "**/*.spec.jsx", "**/_*.scss"];
9
+ declare const DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS: readonly ["layouts/**/*.ts", "layouts/**/*.tsx", "layouts/**/*.js", "layouts/**/*.jsx", "pages/**/*.ts", "pages/**/*.tsx", "pages/**/*.js", "pages/**/*.jsx", "**/*.server.ts", "**/*.server.tsx", "**/*.server.js", "**/*.server.jsx", "**/*.ssr.ts", "**/*.ssr.tsx", "**/*.ssr.js", "**/*.ssr.jsx"];
10
+ declare const DEFAULT_FRONTEND_SSR_PAGE_PATTERNS: readonly ["pages/**/*.ts", "pages/**/*.tsx", "pages/**/*.js", "pages/**/*.jsx"];
11
+ export { DEFAULT_FRONTEND_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS, DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY, DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS, DEFAULT_FRONTEND_PUBLIC_DIR, DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS, DEFAULT_FRONTEND_SOURCE_DIR, DEFAULT_FRONTEND_SSR_PAGE_PATTERNS, DEFAULT_FRONTEND_SSR_RULE_KEY, };
12
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../../src/core/frontend_app/defaults.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,2BAA2B,iBAAiB,CAAC;AACnD,QAAA,MAAM,2BAA2B,WAAW,CAAC;AAC7C,QAAA,MAAM,iCAAiC,WAAW,CAAC;AACnD,QAAA,MAAM,0CAA0C,iBAAiB,CAAC;AAClE,QAAA,MAAM,sCAAsC,iBAAiB,CAAC;AAC9D,QAAA,MAAM,6BAA6B,cAAc,CAAC;AAElD,QAAA,MAAM,sCAAsC,oQAWlC,CAAC;AAEX,QAAA,MAAM,wCAAwC,sMAapC,CAAC;AAEX,QAAA,MAAM,wCAAwC,uSAiBpC,CAAC;AAEX,QAAA,MAAM,kCAAkC,iFAK9B,CAAC;AAEX,OAAO,EACL,iCAAiC,EACjC,0CAA0C,EAC1C,sCAAsC,EACtC,sCAAsC,EACtC,wCAAwC,EACxC,2BAA2B,EAC3B,wCAAwC,EACxC,2BAA2B,EAC3B,kCAAkC,EAClC,6BAA6B,GAC9B,CAAC"}
@@ -0,0 +1,58 @@
1
+ const DEFAULT_FRONTEND_SOURCE_DIR = "src/frontend";
2
+ const DEFAULT_FRONTEND_PUBLIC_DIR = "public";
3
+ const DEFAULT_FRONTEND_CLIENT_ENTRY_KEY = "client";
4
+ const DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY = "client-defer";
5
+ const DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY = "global-style";
6
+ const DEFAULT_FRONTEND_SSR_RULE_KEY = "ssr-pages";
7
+ const DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS = [
8
+ "css/**/*.css",
9
+ "css/**/*.scss",
10
+ "components/**/styles.css",
11
+ "components/**/styles.scss",
12
+ "components/**/styles/**/*.css",
13
+ "components/**/styles/**/*.scss",
14
+ "js/**/styles.css",
15
+ "js/**/styles.scss",
16
+ "js/**/styles/**/*.css",
17
+ "js/**/styles/**/*.scss",
18
+ ];
19
+ const DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS = [
20
+ "**/*.d.ts",
21
+ "**/*.d.mts",
22
+ "**/*.d.cts",
23
+ "**/*.test.ts",
24
+ "**/*.test.tsx",
25
+ "**/*.test.js",
26
+ "**/*.test.jsx",
27
+ "**/*.spec.ts",
28
+ "**/*.spec.tsx",
29
+ "**/*.spec.js",
30
+ "**/*.spec.jsx",
31
+ "**/_*.scss",
32
+ ];
33
+ const DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS = [
34
+ "layouts/**/*.ts",
35
+ "layouts/**/*.tsx",
36
+ "layouts/**/*.js",
37
+ "layouts/**/*.jsx",
38
+ "pages/**/*.ts",
39
+ "pages/**/*.tsx",
40
+ "pages/**/*.js",
41
+ "pages/**/*.jsx",
42
+ "**/*.server.ts",
43
+ "**/*.server.tsx",
44
+ "**/*.server.js",
45
+ "**/*.server.jsx",
46
+ "**/*.ssr.ts",
47
+ "**/*.ssr.tsx",
48
+ "**/*.ssr.js",
49
+ "**/*.ssr.jsx",
50
+ ];
51
+ const DEFAULT_FRONTEND_SSR_PAGE_PATTERNS = [
52
+ "pages/**/*.ts",
53
+ "pages/**/*.tsx",
54
+ "pages/**/*.js",
55
+ "pages/**/*.jsx",
56
+ ];
57
+ export { DEFAULT_FRONTEND_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS, DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY, DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS, DEFAULT_FRONTEND_PUBLIC_DIR, DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS, DEFAULT_FRONTEND_SOURCE_DIR, DEFAULT_FRONTEND_SSR_PAGE_PATTERNS, DEFAULT_FRONTEND_SSR_RULE_KEY, };
58
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../../src/core/frontend_app/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,GAAG,cAAc,CAAC;AACnD,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AAC7C,MAAM,iCAAiC,GAAG,QAAQ,CAAC;AACnD,MAAM,0CAA0C,GAAG,cAAc,CAAC;AAClE,MAAM,sCAAsC,GAAG,cAAc,CAAC;AAC9D,MAAM,6BAA6B,GAAG,WAAW,CAAC;AAElD,MAAM,sCAAsC,GAAG;IAC7C,cAAc;IACd,eAAe;IACf,0BAA0B;IAC1B,2BAA2B;IAC3B,+BAA+B;IAC/B,gCAAgC;IAChC,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,wBAAwB;CAChB,CAAC;AAEX,MAAM,wCAAwC,GAAG;IAC/C,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,eAAe;IACf,cAAc;IACd,eAAe;IACf,cAAc;IACd,eAAe;IACf,cAAc;IACd,eAAe;IACf,YAAY;CACJ,CAAC;AAEX,MAAM,wCAAwC,GAAG;IAC/C,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,cAAc;IACd,aAAa;IACb,cAAc;CACN,CAAC;AAEX,MAAM,kCAAkC,GAAG;IACzC,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,gBAAgB;CACR,CAAC;AAEX,OAAO,EACL,iCAAiC,EACjC,0CAA0C,EAC1C,sCAAsC,EACtC,sCAAsC,EACtC,wCAAwC,EACxC,2BAA2B,EAC3B,wCAAwC,EACxC,2BAA2B,EAC3B,kCAAkC,EAClC,6BAA6B,GAC9B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { BundlerLogger, BundlerQuarantineResult } from "../../src/types.d.ts";
2
+ declare function quarantineUnwritableOutputDir(dir: string, options?: {
3
+ logger?: BundlerLogger;
4
+ }): Promise<BundlerQuarantineResult>;
5
+ export { quarantineUnwritableOutputDir, };
6
+ //# sourceMappingURL=hygiene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hygiene.d.ts","sourceRoot":"","sources":["../../../../src/core/frontend_app/hygiene.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE5E,iBAAe,6BAA6B,CAC1C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,aAAa,CAAA;CAAO,GACvC,OAAO,CAAC,uBAAuB,CAAC,CASlC;AAkCD,OAAO,EACL,6BAA6B,GAC9B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { constants as fsConstants } from "node:fs";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ async function quarantineUnwritableOutputDir(dir, options = {}) {
5
+ const resolvedDir = path.resolve(dir);
6
+ if (!await exists(resolvedDir))
7
+ return { dir: resolvedDir, quarantined: false };
8
+ if (await canWriteDirectory(resolvedDir))
9
+ return { dir: resolvedDir, quarantined: false };
10
+ const quarantineDir = await resolveQuarantineDir(resolvedDir);
11
+ await fs.rename(resolvedDir, quarantineDir);
12
+ warnLogger(options.logger, `quarantine-output-dir :: ${resolvedDir} -> ${quarantineDir}`);
13
+ return { dir: resolvedDir, quarantineDir, quarantined: true };
14
+ }
15
+ async function canWriteDirectory(dir) {
16
+ try {
17
+ await fs.access(dir, fsConstants.W_OK);
18
+ const probe = path.join(dir, `.bundler-write-${process.pid}-${Date.now()}`);
19
+ await fs.writeFile(probe, "");
20
+ await fs.rm(probe, { force: true });
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ async function resolveQuarantineDir(dir) {
28
+ const parent = path.dirname(dir);
29
+ const name = path.basename(dir);
30
+ for (let index = 0; index < 100; index += 1) {
31
+ const suffix = index === 0 ? "" : `-${index}`;
32
+ const candidate = path.join(parent, `${name}.quarantine-${Date.now()}${suffix}`);
33
+ if (!await exists(candidate))
34
+ return candidate;
35
+ }
36
+ throw new Error(`bundler-output-dir-quarantine-conflict :: ${dir}`);
37
+ }
38
+ async function exists(filePath) {
39
+ return fs.access(filePath).then(() => true, () => false);
40
+ }
41
+ function warnLogger(logger, message) {
42
+ const candidate = logger;
43
+ candidate?.warn?.("build", message);
44
+ }
45
+ export { quarantineUnwritableOutputDir, };
46
+ //# sourceMappingURL=hygiene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hygiene.js","sourceRoot":"","sources":["../../../../src/core/frontend_app/hygiene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { collectFrontendAssetLinks, renderAssetLinkTags, } from "./assets.js";
2
+ export { buildFrontendApp, copyPublicDir, } from "./build.js";
3
+ export { createFrontendAppBundlerOptions, createFrontendBundlerRuntimeConfig, defineFrontendBundlerConfig, } from "./config.js";
4
+ export { DEFAULT_FRONTEND_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS, DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY, DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS, DEFAULT_FRONTEND_PUBLIC_DIR, DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS, DEFAULT_FRONTEND_SOURCE_DIR, DEFAULT_FRONTEND_SSR_PAGE_PATTERNS, DEFAULT_FRONTEND_SSR_RULE_KEY, } from "./defaults.js";
5
+ export { quarantineUnwritableOutputDir, } from "./hygiene.js";
6
+ export { collectAggregateMatchedSourcesByRuleKey, createAggregateSourceIdMap, createEmptyAssetManifest, extractAssetManifest, normalizeAggregateSourceId, readBundlerManifest, resolveAggregateEntryByRuleKey, resolveAssetManifestEntryOutputPath, } from "./manifest.js";
7
+ export { buildRelatedClientEntryMap, } from "./related.js";
8
+ export { createFrontendBundlerRuntime, } from "./runtime.js";
9
+ export { createReactSsrModuleMapRule, createSsrModuleMapRule, } from "./ssr.js";
10
+ export { createStaticAssetMiddleware, serveStaticAsset, } from "./static.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/frontend_app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iCAAiC,EACjC,0CAA0C,EAC1C,sCAAsC,EACtC,sCAAsC,EACtC,wCAAwC,EACxC,2BAA2B,EAC3B,wCAAwC,EACxC,2BAA2B,EAC3B,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uCAAuC,EACvC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,8BAA8B,EAC9B,mCAAmC,GACpC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { collectFrontendAssetLinks, renderAssetLinkTags, } from "./assets.js";
2
+ export { buildFrontendApp, copyPublicDir, } from "./build.js";
3
+ export { createFrontendAppBundlerOptions, createFrontendBundlerRuntimeConfig, defineFrontendBundlerConfig, } from "./config.js";
4
+ export { DEFAULT_FRONTEND_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_DEFERRED_CLIENT_ENTRY_KEY, DEFAULT_FRONTEND_GLOBAL_STYLE_PATTERNS, DEFAULT_FRONTEND_GLOBAL_STYLE_RULE_KEY, DEFAULT_FRONTEND_IGNORED_SOURCE_PATTERNS, DEFAULT_FRONTEND_PUBLIC_DIR, DEFAULT_FRONTEND_RUNTIME_SOURCE_PATTERNS, DEFAULT_FRONTEND_SOURCE_DIR, DEFAULT_FRONTEND_SSR_PAGE_PATTERNS, DEFAULT_FRONTEND_SSR_RULE_KEY, } from "./defaults.js";
5
+ export { quarantineUnwritableOutputDir, } from "./hygiene.js";
6
+ export { collectAggregateMatchedSourcesByRuleKey, createAggregateSourceIdMap, createEmptyAssetManifest, extractAssetManifest, normalizeAggregateSourceId, readBundlerManifest, resolveAggregateEntryByRuleKey, resolveAssetManifestEntryOutputPath, } from "./manifest.js";
7
+ export { buildRelatedClientEntryMap, } from "./related.js";
8
+ export { createFrontendBundlerRuntime, } from "./runtime.js";
9
+ export { createReactSsrModuleMapRule, createSsrModuleMapRule, } from "./ssr.js";
10
+ export { createStaticAssetMiddleware, serveStaticAsset, } from "./static.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/frontend_app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iCAAiC,EACjC,0CAA0C,EAC1C,sCAAsC,EACtC,sCAAsC,EACtC,wCAAwC,EACxC,2BAA2B,EAC3B,wCAAwC,EACxC,2BAA2B,EAC3B,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uCAAuC,EACvC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,8BAA8B,EAC9B,mCAAmC,GACpC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BundlerAggregateSourceIdOptions, BundlerAssetManifest, BundlerAssetManifestEntry, BundlerBuildResult, BundlerCollectAssetLinksLookup } from "../../src/types.d.ts";
2
+ declare function createEmptyAssetManifest(): BundlerAssetManifest;
3
+ declare function readBundlerManifest(filePath: string): Promise<Record<string, unknown>>;
4
+ declare function extractAssetManifest(value: BundlerAssetManifest | BundlerBuildResult | Record<string, unknown>): BundlerAssetManifest;
5
+ declare function resolveAssetManifestEntryOutputPath(args: {
6
+ entryId: string;
7
+ from?: BundlerCollectAssetLinksLookup;
8
+ manifest: BundlerAssetManifest | BundlerBuildResult | Record<string, unknown>;
9
+ outDir: string;
10
+ }): string | undefined;
11
+ declare function resolveAggregateEntryByRuleKey(manifestValue: BundlerAssetManifest | BundlerBuildResult | Record<string, unknown>, ruleKey: string): BundlerAssetManifestEntry | undefined;
12
+ declare function collectAggregateMatchedSourcesByRuleKey(manifestValue: BundlerAssetManifest | BundlerBuildResult | Record<string, unknown>, ruleKey: string): string[];
13
+ declare function normalizeAggregateSourceId(sourcePath: string, options?: BundlerAggregateSourceIdOptions): string;
14
+ declare function createAggregateSourceIdMap(sources: readonly string[], options?: BundlerAggregateSourceIdOptions): Record<string, string>;
15
+ export { collectAggregateMatchedSourcesByRuleKey, createAggregateSourceIdMap, createEmptyAssetManifest, extractAssetManifest, normalizeAggregateSourceId, readBundlerManifest, resolveAggregateEntryByRuleKey, resolveAssetManifestEntryOutputPath, };
16
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/core/frontend_app/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,+BAA+B,EAC/B,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,8BAA8B,EAC/B,MAAM,eAAe,CAAC;AAKvB,iBAAS,wBAAwB,IAAI,oBAAoB,CAQxD;AAED,iBAAe,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAKrF;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAI9H;AAED,iBAAS,mCAAmC,CAAC,IAAI,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,8BAA8B,CAAC;IACtC,QAAQ,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,GAAG,SAAS,CAGrB;AAED,iBAAS,8BAA8B,CACrC,aAAa,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClF,OAAO,EAAE,MAAM,GACd,yBAAyB,GAAG,SAAS,CAMvC;AAED,iBAAS,uCAAuC,CAC9C,aAAa,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClF,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAEV;AAED,iBAAS,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,+BAAoC,GAAG,MAAM,CAS7G;AAED,iBAAS,0BAA0B,CACjC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAoCD,OAAO,EACL,uCAAuC,EACvC,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,8BAA8B,EAC9B,mCAAmC,GACpC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { normalizePathValue } from "../../src/core/discovery/shared.js";
4
+ const DEFAULT_ROUTE_EXTENSIONS = [".tsx", ".ts", ".jsx", ".js", ".mts", ".mjs", ".cts", ".cjs"];
5
+ function createEmptyAssetManifest() {
6
+ return {
7
+ entries: {},
8
+ entryOutputs: {},
9
+ outputs: {},
10
+ rules: {},
11
+ sources: {},
12
+ };
13
+ }
14
+ async function readBundlerManifest(filePath) {
15
+ const body = await fs.readFile(path.resolve(filePath), "utf8");
16
+ const parsed = JSON.parse(body);
17
+ if (!parsed || typeof parsed !== "object")
18
+ throw new Error(`bundler-manifest-invalid :: ${filePath}`);
19
+ return parsed;
20
+ }
21
+ function extractAssetManifest(value) {
22
+ const candidate = "assetManifest" in value ? value.assetManifest : value;
23
+ if (!isAssetManifest(candidate))
24
+ throw new Error("bundler-asset-manifest-missing");
25
+ return candidate;
26
+ }
27
+ function resolveAssetManifestEntryOutputPath(args) {
28
+ const entry = resolveAssetManifestEntry(args.manifest, args.entryId, args.from || "auto");
29
+ return entry ? path.resolve(args.outDir, entry.file) : undefined;
30
+ }
31
+ function resolveAggregateEntryByRuleKey(manifestValue, ruleKey) {
32
+ const manifest = extractAssetManifest(manifestValue);
33
+ const normalizedRuleKey = normalizePathValue(ruleKey);
34
+ const rule = manifest.rules[normalizedRuleKey];
35
+ const aggregateKey = rule?.entryKeys.find((entryKey) => manifest.entries[entryKey]?.aggregate);
36
+ return aggregateKey ? manifest.entries[aggregateKey] : undefined;
37
+ }
38
+ function collectAggregateMatchedSourcesByRuleKey(manifestValue, ruleKey) {
39
+ return resolveAggregateEntryByRuleKey(manifestValue, ruleKey)?.aggregate?.matchedSources.slice().sort() || [];
40
+ }
41
+ function normalizeAggregateSourceId(sourcePath, options = {}) {
42
+ const prefix = normalizePathValue(options.sourcePrefix || "");
43
+ const normalized = normalizePathValue(sourcePath);
44
+ const withoutPrefix = prefix && normalized.startsWith(`${prefix}/`) ? normalized.slice(prefix.length + 1) : normalized;
45
+ const withoutExtension = stripKnownExtension(withoutPrefix, options.extensions || DEFAULT_ROUTE_EXTENSIONS);
46
+ const collapsed = options.collapseIndex !== false && withoutExtension.endsWith("/index")
47
+ ? withoutExtension.slice(0, -"/index".length)
48
+ : withoutExtension;
49
+ return normalizePathValue(collapsed);
50
+ }
51
+ function createAggregateSourceIdMap(sources, options = {}) {
52
+ return Object.fromEntries(sources.map((source) => [source, normalizeAggregateSourceId(source, options)]));
53
+ }
54
+ function resolveAssetManifestEntry(manifestValue, entryId, from) {
55
+ const manifest = extractAssetManifest(manifestValue);
56
+ const key = resolveEntryKey(manifest, normalizePathValue(entryId), from);
57
+ return key ? manifest.entries[key] : undefined;
58
+ }
59
+ function resolveEntryKey(manifest, entryId, from) {
60
+ if (from === "entryKey")
61
+ return manifest.entries[entryId] ? entryId : undefined;
62
+ if (from === "source")
63
+ return manifest.sources[entryId]?.entryKey;
64
+ if (from === "entryOutput")
65
+ return manifest.entryOutputs[entryId];
66
+ if (from === "ruleKey")
67
+ return manifest.rules[entryId]?.entryKeys[0];
68
+ return manifest.entries[entryId] ? entryId : manifest.sources[entryId]?.entryKey || manifest.entryOutputs[entryId] || manifest.rules[entryId]?.entryKeys[0];
69
+ }
70
+ function stripKnownExtension(sourcePath, extensions) {
71
+ const sorted = [...extensions].map((item) => item.startsWith(".") ? item : `.${item}`).sort((a, b) => b.length - a.length);
72
+ const extension = sorted.find((item) => sourcePath.endsWith(item));
73
+ return extension ? sourcePath.slice(0, -extension.length) : sourcePath;
74
+ }
75
+ function isAssetManifest(value) {
76
+ if (!value || typeof value !== "object")
77
+ return false;
78
+ const record = value;
79
+ return Boolean(record.entries && record.entryOutputs && record.outputs && record.rules && record.sources);
80
+ }
81
+ export { collectAggregateMatchedSourcesByRuleKey, createAggregateSourceIdMap, createEmptyAssetManifest, extractAssetManifest, normalizeAggregateSourceId, readBundlerManifest, resolveAggregateEntryByRuleKey, resolveAssetManifestEntryOutputPath, };
82
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../src/core/frontend_app/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BundlerRelatedClientEntryMapOptions } from "../../src/types.d.ts";
2
+ declare function buildRelatedClientEntryMap(options: BundlerRelatedClientEntryMapOptions): Promise<Record<string, string[]>>;
3
+ export { buildRelatedClientEntryMap, };
4
+ //# sourceMappingURL=related.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"related.d.ts","sourceRoot":"","sources":["../../../../src/core/frontend_app/related.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mCAAmC,EACpC,MAAM,eAAe,CAAC;AAOvB,iBAAe,0BAA0B,CACvC,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAInC;AAqBD,OAAO,EACL,0BAA0B,GAC3B,CAAC"}