@trebired/bundler 3.7.0 → 4.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 (165) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +198 -1
  3. package/dist/core/discovery/aggregate.d.ts +5 -1
  4. package/dist/core/discovery/aggregate.d.ts.map +1 -1
  5. package/dist/core/discovery/aggregate.js +4 -2
  6. package/dist/core/discovery/aggregate.js.map +1 -1
  7. package/dist/core/discovery/exports.d.ts +17 -0
  8. package/dist/core/discovery/exports.d.ts.map +1 -0
  9. package/dist/core/discovery/exports.js +106 -0
  10. package/dist/core/discovery/exports.js.map +1 -0
  11. package/dist/core/discovery/normalize.d.ts.map +1 -1
  12. package/dist/core/discovery/normalize.js +1 -0
  13. package/dist/core/discovery/normalize.js.map +1 -1
  14. package/dist/core/discovery/resolve.d.ts.map +1 -1
  15. package/dist/core/discovery/resolve.js +16 -8
  16. package/dist/core/discovery/resolve.js.map +1 -1
  17. package/dist/core/discovery/shared.d.ts +1 -0
  18. package/dist/core/discovery/shared.d.ts.map +1 -1
  19. package/dist/core/discovery/shared.js.map +1 -1
  20. package/dist/core/frontend_app/assets.d.ts +5 -0
  21. package/dist/core/frontend_app/assets.d.ts.map +1 -0
  22. package/dist/core/frontend_app/assets.js +74 -0
  23. package/dist/core/frontend_app/assets.js.map +1 -0
  24. package/dist/core/frontend_app/build.d.ts +5 -0
  25. package/dist/core/frontend_app/build.d.ts.map +1 -0
  26. package/dist/core/frontend_app/build.js +70 -0
  27. package/dist/core/frontend_app/build.js.map +1 -0
  28. package/dist/core/frontend_app/config.d.ts +6 -0
  29. package/dist/core/frontend_app/config.d.ts.map +1 -0
  30. package/dist/core/frontend_app/config.js +180 -0
  31. package/dist/core/frontend_app/config.js.map +1 -0
  32. package/dist/core/frontend_app/defaults.d.ts +18 -0
  33. package/dist/core/frontend_app/defaults.d.ts.map +1 -0
  34. package/dist/core/frontend_app/defaults.js +75 -0
  35. package/dist/core/frontend_app/defaults.js.map +1 -0
  36. package/dist/core/frontend_app/global.d.ts +11 -0
  37. package/dist/core/frontend_app/global.d.ts.map +1 -0
  38. package/dist/core/frontend_app/global.js +36 -0
  39. package/dist/core/frontend_app/global.js.map +1 -0
  40. package/dist/core/frontend_app/hygiene.d.ts +6 -0
  41. package/dist/core/frontend_app/hygiene.d.ts.map +1 -0
  42. package/dist/core/frontend_app/hygiene.js +46 -0
  43. package/dist/core/frontend_app/hygiene.js.map +1 -0
  44. package/dist/core/frontend_app/index.d.ts +13 -0
  45. package/dist/core/frontend_app/index.d.ts.map +1 -0
  46. package/dist/core/frontend_app/index.js +13 -0
  47. package/dist/core/frontend_app/index.js.map +1 -0
  48. package/dist/core/frontend_app/manifest.d.ts +16 -0
  49. package/dist/core/frontend_app/manifest.d.ts.map +1 -0
  50. package/dist/core/frontend_app/manifest.js +82 -0
  51. package/dist/core/frontend_app/manifest.js.map +1 -0
  52. package/dist/core/frontend_app/node_modules.d.ts +4 -0
  53. package/dist/core/frontend_app/node_modules.d.ts.map +1 -0
  54. package/dist/core/frontend_app/node_modules.js +25 -0
  55. package/dist/core/frontend_app/node_modules.js.map +1 -0
  56. package/dist/core/frontend_app/related.d.ts +4 -0
  57. package/dist/core/frontend_app/related.d.ts.map +1 -0
  58. package/dist/core/frontend_app/related.js +25 -0
  59. package/dist/core/frontend_app/related.js.map +1 -0
  60. package/dist/core/frontend_app/runtime.d.ts +4 -0
  61. package/dist/core/frontend_app/runtime.d.ts.map +1 -0
  62. package/dist/core/frontend_app/runtime.js +182 -0
  63. package/dist/core/frontend_app/runtime.js.map +1 -0
  64. package/dist/core/frontend_app/ssr.d.ts +6 -0
  65. package/dist/core/frontend_app/ssr.d.ts.map +1 -0
  66. package/dist/core/frontend_app/ssr.js +48 -0
  67. package/dist/core/frontend_app/ssr.js.map +1 -0
  68. package/dist/core/frontend_app/static.d.ts +5 -0
  69. package/dist/core/frontend_app/static.d.ts.map +1 -0
  70. package/dist/core/frontend_app/static.js +173 -0
  71. package/dist/core/frontend_app/static.js.map +1 -0
  72. package/dist/index.d.ts +2 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +1 -0
  75. package/dist/index.js.map +1 -1
  76. package/dist/src/core/discovery/aggregate.d.ts +5 -1
  77. package/dist/src/core/discovery/aggregate.d.ts.map +1 -1
  78. package/dist/src/core/discovery/aggregate.js +4 -2
  79. package/dist/src/core/discovery/aggregate.js.map +1 -1
  80. package/dist/src/core/discovery/exports.d.ts +17 -0
  81. package/dist/src/core/discovery/exports.d.ts.map +1 -0
  82. package/dist/src/core/discovery/exports.js +106 -0
  83. package/dist/src/core/discovery/exports.js.map +1 -0
  84. package/dist/src/core/discovery/normalize.d.ts.map +1 -1
  85. package/dist/src/core/discovery/normalize.js +1 -0
  86. package/dist/src/core/discovery/normalize.js.map +1 -1
  87. package/dist/src/core/discovery/resolve.d.ts.map +1 -1
  88. package/dist/src/core/discovery/resolve.js +16 -8
  89. package/dist/src/core/discovery/resolve.js.map +1 -1
  90. package/dist/src/core/discovery/shared.d.ts +1 -0
  91. package/dist/src/core/discovery/shared.d.ts.map +1 -1
  92. package/dist/src/core/discovery/shared.js.map +1 -1
  93. package/dist/src/core/frontend_app/assets.d.ts +5 -0
  94. package/dist/src/core/frontend_app/assets.d.ts.map +1 -0
  95. package/dist/src/core/frontend_app/assets.js +74 -0
  96. package/dist/src/core/frontend_app/assets.js.map +1 -0
  97. package/dist/src/core/frontend_app/build.d.ts +5 -0
  98. package/dist/src/core/frontend_app/build.d.ts.map +1 -0
  99. package/dist/src/core/frontend_app/build.js +70 -0
  100. package/dist/src/core/frontend_app/build.js.map +1 -0
  101. package/dist/src/core/frontend_app/config.d.ts +6 -0
  102. package/dist/src/core/frontend_app/config.d.ts.map +1 -0
  103. package/dist/src/core/frontend_app/config.js +180 -0
  104. package/dist/src/core/frontend_app/config.js.map +1 -0
  105. package/dist/src/core/frontend_app/defaults.d.ts +18 -0
  106. package/dist/src/core/frontend_app/defaults.d.ts.map +1 -0
  107. package/dist/src/core/frontend_app/defaults.js +75 -0
  108. package/dist/src/core/frontend_app/defaults.js.map +1 -0
  109. package/dist/src/core/frontend_app/global.d.ts +11 -0
  110. package/dist/src/core/frontend_app/global.d.ts.map +1 -0
  111. package/dist/src/core/frontend_app/global.js +36 -0
  112. package/dist/src/core/frontend_app/global.js.map +1 -0
  113. package/dist/src/core/frontend_app/hygiene.d.ts +6 -0
  114. package/dist/src/core/frontend_app/hygiene.d.ts.map +1 -0
  115. package/dist/src/core/frontend_app/hygiene.js +46 -0
  116. package/dist/src/core/frontend_app/hygiene.js.map +1 -0
  117. package/dist/src/core/frontend_app/index.d.ts +13 -0
  118. package/dist/src/core/frontend_app/index.d.ts.map +1 -0
  119. package/dist/src/core/frontend_app/index.js +13 -0
  120. package/dist/src/core/frontend_app/index.js.map +1 -0
  121. package/dist/src/core/frontend_app/manifest.d.ts +16 -0
  122. package/dist/src/core/frontend_app/manifest.d.ts.map +1 -0
  123. package/dist/src/core/frontend_app/manifest.js +82 -0
  124. package/dist/src/core/frontend_app/manifest.js.map +1 -0
  125. package/dist/src/core/frontend_app/node_modules.d.ts +4 -0
  126. package/dist/src/core/frontend_app/node_modules.d.ts.map +1 -0
  127. package/dist/src/core/frontend_app/node_modules.js +25 -0
  128. package/dist/src/core/frontend_app/node_modules.js.map +1 -0
  129. package/dist/src/core/frontend_app/related.d.ts +4 -0
  130. package/dist/src/core/frontend_app/related.d.ts.map +1 -0
  131. package/dist/src/core/frontend_app/related.js +25 -0
  132. package/dist/src/core/frontend_app/related.js.map +1 -0
  133. package/dist/src/core/frontend_app/runtime.d.ts +4 -0
  134. package/dist/src/core/frontend_app/runtime.d.ts.map +1 -0
  135. package/dist/src/core/frontend_app/runtime.js +182 -0
  136. package/dist/src/core/frontend_app/runtime.js.map +1 -0
  137. package/dist/src/core/frontend_app/ssr.d.ts +6 -0
  138. package/dist/src/core/frontend_app/ssr.d.ts.map +1 -0
  139. package/dist/src/core/frontend_app/ssr.js +48 -0
  140. package/dist/src/core/frontend_app/ssr.js.map +1 -0
  141. package/dist/src/core/frontend_app/static.d.ts +5 -0
  142. package/dist/src/core/frontend_app/static.d.ts.map +1 -0
  143. package/dist/src/core/frontend_app/static.js +173 -0
  144. package/dist/src/core/frontend_app/static.js.map +1 -0
  145. package/dist/src/index.d.ts +2 -1
  146. package/dist/src/index.d.ts.map +1 -1
  147. package/dist/src/index.js +1 -0
  148. package/dist/src/index.js.map +1 -1
  149. package/dist/src/types/discovery.d.ts +3 -0
  150. package/dist/src/types/discovery.d.ts.map +1 -1
  151. package/dist/src/types/frontend_app.d.ts +219 -0
  152. package/dist/src/types/frontend_app.d.ts.map +1 -0
  153. package/dist/src/types/frontend_app.js +2 -0
  154. package/dist/src/types/frontend_app.js.map +1 -0
  155. package/dist/src/types.d.ts +1 -0
  156. package/dist/src/types.d.ts.map +1 -1
  157. package/dist/types/discovery.d.ts +3 -0
  158. package/dist/types/discovery.d.ts.map +1 -1
  159. package/dist/types/frontend_app.d.ts +219 -0
  160. package/dist/types/frontend_app.d.ts.map +1 -0
  161. package/dist/types/frontend_app.js +2 -0
  162. package/dist/types/frontend_app.js.map +1 -0
  163. package/dist/types.d.ts +1 -0
  164. package/dist/types.d.ts.map +1 -1
  165. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,28 @@ All notable changes to `@trebired/bundler` will be documented here.
4
4
 
5
5
  This project follows semantic versioning once published.
6
6
 
7
+ ## 4.1.0
8
+
9
+ - Added frontend app build targets for `all`, `client`, and `ssr` so callers can build either side without local branching wrappers.
10
+ - Added runtime SSR `node_modules` preparation, matching the build helper's `none`, `symlink`, and `copy` strategies and refreshing after dev SSR rebuilds.
11
+ - Relaxed frontend SSR module-map config inputs so common rule keys, page patterns, exports, and default-export filtering come from package defaults.
12
+ - Added auto global client entry discovery for package-owned `js/**/*.client.*` and `js/**/*.client.defer.*` defaults, and included those entries in runtime asset links.
13
+ - Added synchronous cached frontend runtime helpers for root/page export resolution and asset links after `ensure()`.
14
+ - Made static asset handlers work cleanly with frontend runtime config paths resolved from `rootDir`.
15
+ - Expanded frontend app verification coverage for target-specific builds, runtime `node_modules`, partial SSR config defaults, auto global client entries, sync helper behavior, and relative static paths.
16
+
17
+ ## 4.0.0
18
+
19
+ - Added a generic frontend app preset with default source, public, client-entry, deferred-entry, global-style, ignore, browser, node SSR, output-layout, i18n, and production precompression options.
20
+ - Added aggregate module-map export filtering with `requireMatchedModuleExport`, including skipped-source metadata for generated entries and rules.
21
+ - Added SSR module-map rule helpers for root modules, matched module maps, index collapsing, map exports, resolver exports, root exports, and optional default exports.
22
+ - Added manifest runtime helpers for reading written manifests, extracting asset manifests, resolving aggregate entries, collecting aggregate matched sources, resolving emitted entry files, and normalizing source paths to route/page IDs.
23
+ - Added related client entry map, frontend asset link collection, and link/script tag rendering helpers.
24
+ - Added a generic frontend build runner for client builds, optional SSR builds, public directory copying, precompression stats, SSR entry output resolution, and optional SSR `node_modules` symlink/copy handling.
25
+ - Added a frontend runtime helper for dev/prod manifest state, watch-backed rebuilds, cache-busted SSR ESM imports, SSR root/page export resolution, and page asset links.
26
+ - Added framework-neutral and Express-compatible static asset serving helpers with private manifest/map blocking, Brotli/gzip selection, cache headers, and development public directory serving.
27
+ - Added `quarantineUnwritableOutputDir()` and frontend app verification coverage for the 4.0 runtime/build/preset behavior.
28
+
7
29
  ## 3.7.0
8
30
 
9
31
  - Added generic frontend entry helpers for `*.client.*` and `*.client.defer.*` discovery patterns without changing discover-rule behavior.
package/README.md CHANGED
@@ -9,7 +9,7 @@ Discover-only bundler wrapper around `esbuild` with SCSS support, watch mode, so
9
9
  Runtime support: Bun 1+ and Node.js 18+.
10
10
 
11
11
  ```sh
12
- npm install @trebired/bundler
12
+ bun i @trebired/bundler
13
13
  ```
14
14
 
15
15
  ## Quick Start
@@ -250,6 +250,27 @@ Path keys default to the matched module path relative to the aggregate rule root
250
250
  - `pages/blog/post.tsx` -> `blog/post`
251
251
  - `pages/settings/index.tsx` -> `settings` when `collapseIndex: true`
252
252
 
253
+ Set `requireMatchedModuleExport: true` when an aggregate rule intentionally uses a broad pattern but should only include modules that provide the configured `matchedModuleExportName`. Files without that export are skipped, not imported into the generated module. Skipped paths are reported in aggregate entry metadata and rule metadata.
254
+
255
+ The export check parses TypeScript and JavaScript source. It supports `export default ...`, `export { value as default }`, `export { default } from "./module"`, and normal named exports.
256
+
257
+ Use the SSR module-map helper to create the same rule without repeating the aggregate shape:
258
+
259
+ ```ts
260
+ import { createSsrModuleMapRule } from "@trebired/bundler";
261
+
262
+ const ssrPages = createSsrModuleMapRule({
263
+ key: "ssr-pages",
264
+ include: ["pages/**/*.tsx"],
265
+ rootModule: "layouts/root/document.tsx",
266
+ rootExport: "rootDocument",
267
+ mapExport: "pages",
268
+ resolverExport: "getPageComponent",
269
+ matchedModuleExportName: "default",
270
+ requireMatchedModuleExport: true,
271
+ });
272
+ ```
273
+
253
274
  ## Frontend Conventions
254
275
 
255
276
  This API is meant for conventions like:
@@ -304,6 +325,97 @@ await bundle({
304
325
 
305
326
  The helper returns ordinary discover rules. Override `clientInclude`, `deferredInclude`, rule keys, or excludes when a project uses different conventions.
306
327
 
328
+ ## Frontend App Preset
329
+
330
+ Use the frontend app preset when a project follows the common frontend/SSR shape and should not repeat discover-rule boilerplate.
331
+
332
+ Before the preset, a project typically had to assemble client rules, SSR aggregate rules, public copying, manifest reading, related-client lookups, static tag rendering, and static asset serving separately.
333
+
334
+ After the preset, the app-specific part is mostly paths, environment defines, and language policy:
335
+
336
+ ```ts
337
+ import {
338
+ buildFrontendApp,
339
+ createStaticAssetMiddleware,
340
+ createFrontendBundlerRuntime,
341
+ defineFrontendBundlerConfig,
342
+ } from "@trebired/bundler";
343
+
344
+ const bundlerConfig = defineFrontendBundlerConfig({
345
+ clientOutDir: "dist/client",
346
+ ssrOutDir: "dist/ssr",
347
+ supportedI18nLanguages: ["en", "cs"],
348
+ ssr: {
349
+ rootModule: "layouts/root/document.tsx",
350
+ rootExport: "rootDocument",
351
+ mapExport: "pages",
352
+ resolverExport: "getPageComponent",
353
+ },
354
+ });
355
+
356
+ await buildFrontendApp(bundlerConfig);
357
+
358
+ const runtime = createFrontendBundlerRuntime(bundlerConfig);
359
+ await runtime.ensure();
360
+ const page = await runtime.resolvePageComponent("account");
361
+ const rootDocument = await runtime.resolveRootDocument();
362
+ const assets = await runtime.buildAssetLinks(["account"]);
363
+
364
+ app.use("/assets", createStaticAssetMiddleware(bundlerConfig));
365
+ ```
366
+
367
+ Defaults:
368
+
369
+ - `frontendDir`: `src/frontend`
370
+ - `publicDir`: `src/frontend/public`
371
+ - client entries: `*.client.ts`, `*.client.tsx`, `*.client.js`, `*.client.jsx`, `*.client.css`, `*.client.scss`
372
+ - deferred client entries: `*.client.defer.ts`, `*.client.defer.tsx`, `*.client.defer.js`, `*.client.defer.jsx`
373
+ - global client entries: `auto`, using `js/**/*.client.*` and `js/**/*.client.defer.*`
374
+ - global style bundle patterns: `css/**/*.css`, `css/**/*.scss`, component `styles.*`, and `js/**/styles.*`
375
+ - ignored sources: tests, declarations, SCSS partials, public files, and runtime-oriented source patterns
376
+ - SSR module map: rule key `ssr-pages`, page patterns under `pages`, exports `rootModule`, `modules`, and `getModule`
377
+ - SSR page filtering: only modules with a default export are included by default
378
+ - browser builds: ESM, splitting on, output layout on
379
+ - node SSR builds: ESM, splitting off, output layout on
380
+ - production client builds: minify, strip comments, and precompress JS/CSS
381
+
382
+ Use `target` when a command should build only one side:
383
+
384
+ ```ts
385
+ await buildFrontendApp({ ...bundlerConfig, target: "client" });
386
+ await buildFrontendApp({ ...bundlerConfig, target: "ssr" });
387
+ await buildFrontendApp({ ...bundlerConfig, target: "all" });
388
+ ```
389
+
390
+ Use `nodeModules` when SSR output needs a runtime `node_modules` directory next to the built entry:
391
+
392
+ ```ts
393
+ const bundlerConfig = defineFrontendBundlerConfig({
394
+ clientOutDir: "dist/client",
395
+ ssrOutDir: "dist/ssr",
396
+ nodeModules: {
397
+ strategy: "symlink",
398
+ sourceDir: "node_modules",
399
+ targetDir: "dist/ssr/node_modules",
400
+ force: true,
401
+ },
402
+ });
403
+ ```
404
+
405
+ `buildFrontendApp()` prepares it after SSR builds. `createFrontendBundlerRuntime()` also prepares it before importing SSR output and refreshes it after dev SSR rebuilds.
406
+
407
+ After `await runtime.ensure()`, synchronous render paths can use cached helpers without starting new builds or imports:
408
+
409
+ ```ts
410
+ const page = runtime.resolvePageComponentSync("account");
411
+ const rootDocument = runtime.resolveRootDocumentSync();
412
+ const assets = runtime.buildAssetLinksSync(["account"]);
413
+ ```
414
+
415
+ The sync helpers throw `bundler-frontend-runtime-not-ensured` until `ensure()` has completed.
416
+
417
+ The preset returns ordinary `BundlerOptions` through `createFrontendAppBundlerOptions()`, so callers can still inspect or pass the client and SSR builds to `bundle()` or `watch()` directly.
418
+
307
419
  ## Related Entries
308
420
 
309
421
  Use `collectRelatedEntries()` when server-side or build orchestration code starts from one or more source modules and needs related client or style entry source paths for `collectAssetLinks()`.
@@ -325,6 +437,23 @@ const links = collectAssetLinks(assetManifest, related.entries, {
325
437
 
326
438
  The generic helper walks the import graph with the same relative import and tsconfig path support as `walkImportGraph()`, then checks configurable candidate patterns. The frontend wrapper uses the default `.client.*` and `.client.defer.*` patterns; pass `candidatePatterns` to replace them.
327
439
 
440
+ Use `buildRelatedClientEntryMap()` when a runtime starts from aggregate SSR matched sources and needs a page ID -> related client entry map:
441
+
442
+ ```ts
443
+ import { buildRelatedClientEntryMap } from "@trebired/bundler";
444
+
445
+ const relatedClientEntries = await buildRelatedClientEntryMap({
446
+ manifest: ssrManifest,
447
+ ruleKey: "ssr-pages",
448
+ rootDir: process.cwd(),
449
+ pageId: {
450
+ sourcePrefix: "src/frontend/pages",
451
+ collapseIndex: true,
452
+ },
453
+ tsconfig: true,
454
+ });
455
+ ```
456
+
328
457
  ## Output Layout
329
458
 
330
459
  Use `outputLayout` when emitted files should be organized by type without a separate relocation step:
@@ -373,6 +502,35 @@ await bundle({
373
502
 
374
503
  When enabled, JS and CSS outputs are compressed by default. Use `include`, `exclude`, `formats`, and `minSize` to tune the selection. `precompressAssets()` is also exported for standalone output folders and returns the same byte and ratio stats.
375
504
 
505
+ ## Static Assets
506
+
507
+ Use `serveStaticAsset()` for a framework-neutral static response object, or `createStaticAssetMiddleware()` for an Express-compatible middleware.
508
+
509
+ ```ts
510
+ import { createStaticAssetMiddleware } from "@trebired/bundler";
511
+
512
+ app.use("/assets", createStaticAssetMiddleware({
513
+ clientOutDir: "dist/client",
514
+ mode: "production",
515
+ rootDir: process.cwd(),
516
+ extraStaticDirs: [
517
+ { dir: "dist/vendor", mountPath: "vendor" },
518
+ ],
519
+ }));
520
+ ```
521
+
522
+ The handler:
523
+
524
+ - blocks `manifest.json`, `bundler-manifest.json`, and source map requests
525
+ - prefers `.br` over `.gz` for JS/CSS when `Accept-Encoding` allows it
526
+ - sets `Content-Encoding`, `Vary: Accept-Encoding`, and `X-Content-Type-Options: nosniff`
527
+ - sends immutable cache headers for hashed production assets
528
+ - sends `no-store` cache headers in development
529
+ - can serve `publicDir` in development and `clientOutDir` in all modes
530
+ - accepts a frontend app runtime/config object directly when paths should resolve from `rootDir`
531
+
532
+ Use `quarantineUnwritableOutputDir(dir, { logger })` before a build when a project wants to move aside an existing output directory that cannot be written.
533
+
376
534
  ## Manifest
377
535
 
378
536
  Set `manifest: true` to write `dist/bundler-manifest.json`, or pass `manifest: { file: "custom-name.json" }`.
@@ -451,6 +609,44 @@ Supported lookup modes:
451
609
  - `from: "ruleKey"`
452
610
  - `from: "auto"` (default)
453
611
 
612
+ ### Manifest Runtime Helpers
613
+
614
+ Runtime code can use package helpers instead of digging through the written manifest shape:
615
+
616
+ ```ts
617
+ import {
618
+ collectAggregateMatchedSourcesByRuleKey,
619
+ createAggregateSourceIdMap,
620
+ extractAssetManifest,
621
+ normalizeAggregateSourceId,
622
+ readBundlerManifest,
623
+ resolveAggregateEntryByRuleKey,
624
+ resolveAssetManifestEntryOutputPath,
625
+ } from "@trebired/bundler";
626
+
627
+ const writtenManifest = await readBundlerManifest("dist/ssr/bundler-manifest.json");
628
+ const assetManifest = extractAssetManifest(writtenManifest);
629
+ const aggregateEntry = resolveAggregateEntryByRuleKey(assetManifest, "ssr-pages");
630
+ const matchedSources = collectAggregateMatchedSourcesByRuleKey(assetManifest, "ssr-pages");
631
+ const sourceIds = createAggregateSourceIdMap(matchedSources, {
632
+ sourcePrefix: "src/frontend/pages",
633
+ collapseIndex: true,
634
+ });
635
+ const entryFile = resolveAssetManifestEntryOutputPath({
636
+ manifest: assetManifest,
637
+ entryId: "ssr-pages",
638
+ from: "ruleKey",
639
+ outDir: "dist/ssr",
640
+ });
641
+ const pageId = normalizeAggregateSourceId("src/frontend/pages/docs/index.tsx", {
642
+ sourcePrefix: "src/frontend/pages",
643
+ });
644
+ ```
645
+
646
+ `createEmptyAssetManifest()` is also exported for callers that need a stable empty shape before a build has produced outputs.
647
+
648
+ Use `collectFrontendAssetLinks()` when runtime code wants global styles, global client entries, and page-related client entries in one call. Pass `renderTags: true`, or call `renderAssetLinkTags()` directly, to get plain `<link>` and `<script type="module">` strings.
649
+
454
650
  ## Watch Mode
455
651
 
456
652
  `watch()` stays discover-driven.
@@ -548,6 +744,7 @@ type BundlerDiscoverRule =
548
744
  keyFromPath?: "relative-path";
549
745
  collapseIndex?: boolean;
550
746
  allowEmpty?: boolean;
747
+ requireMatchedModuleExport?: boolean;
551
748
  exports?: {
552
749
  root?: string;
553
750
  map: string;
@@ -14,8 +14,12 @@ declare function validateAggregatePathKeys(args: {
14
14
  declare function createAggregateEntryMetadata(args: {
15
15
  matchedFiles: DiscoveredFile[];
16
16
  rootModule?: ResolvedAggregateRootModule;
17
+ skippedSources?: string[];
17
18
  }): BundlerAggregateEntryMetadata;
18
- declare function createAggregateRuleMetadata(rootModule?: ResolvedAggregateRootModule): BundlerAggregateRuleMetadata;
19
+ declare function createAggregateRuleMetadata(args?: {
20
+ rootModule?: ResolvedAggregateRootModule;
21
+ skippedSources?: string[];
22
+ }): BundlerAggregateRuleMetadata;
19
23
  declare function buildAggregateModuleMapContents(args: {
20
24
  aggregate: NormalizedAggregateModuleMap;
21
25
  includePatterns: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/core/discovery/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,eAAe,CAAC;AAUvB,OAAO,KAAK,EACV,cAAc,EACd,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,iBAAS,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,CAKlG;AAED,iBAAS,yBAAyB,CAAC,IAAI,EAAE;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAUT;AAED,iBAAS,yBAAyB,CAAC,IAAI,EAAE;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,IAAI,EAAE,uBAAuB,CAAC;CAC/B,GAAG,IAAI,CAYP;AAED,iBAAS,4BAA4B,CAAC,IAAI,EAAE;IAC1C,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,2BAA2B,CAAC;CAC1C,GAAG,6BAA6B,CAMhC;AAED,iBAAS,2BAA2B,CAAC,UAAU,CAAC,EAAE,2BAA2B,GAAG,4BAA4B,CAK3G;AAED,iBAAS,+BAA+B,CAAC,IAAI,EAAE;IAC7C,SAAS,EAAE,4BAA4B,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,2BAA2B,CAAC;CAC1C,GAAG,MAAM,CAYT;AAED,iBAAS,0BAA0B,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,uBAAuB,CAAC;CAC/B,GAAG,2BAA2B,GAAG,SAAS,CAa1C;AA2FD,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,CAAC"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/core/discovery/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,eAAe,CAAC;AAUvB,OAAO,KAAK,EACV,cAAc,EACd,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,iBAAS,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,CAKlG;AAED,iBAAS,yBAAyB,CAAC,IAAI,EAAE;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAUT;AAED,iBAAS,yBAAyB,CAAC,IAAI,EAAE;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,IAAI,EAAE,uBAAuB,CAAC;CAC/B,GAAG,IAAI,CAYP;AAED,iBAAS,4BAA4B,CAAC,IAAI,EAAE;IAC1C,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,GAAG,6BAA6B,CAOhC;AAED,iBAAS,2BAA2B,CAAC,IAAI,GAAE;IACzC,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,4BAA4B,CAMpC;AAED,iBAAS,+BAA+B,CAAC,IAAI,EAAE;IAC7C,SAAS,EAAE,4BAA4B,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,2BAA2B,CAAC;CAC1C,GAAG,MAAM,CAYT;AAED,iBAAS,0BAA0B,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,uBAAuB,CAAC;CAC/B,GAAG,2BAA2B,GAAG,SAAS,CAa1C;AA2FD,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,CAAC"}
@@ -35,12 +35,14 @@ function createAggregateEntryMetadata(args) {
35
35
  kind: "module-map",
36
36
  matchedSources: args.matchedFiles.map((file) => file.rootRel),
37
37
  rootModule: args.rootModule?.rootRel,
38
+ skippedSources: args.skippedSources?.length ? args.skippedSources : undefined,
38
39
  };
39
40
  }
40
- function createAggregateRuleMetadata(rootModule) {
41
+ function createAggregateRuleMetadata(args = {}) {
41
42
  return {
42
43
  kind: "module-map",
43
- rootModule: rootModule?.rootRel,
44
+ rootModule: args.rootModule?.rootRel,
45
+ skippedSources: args.skippedSources?.length ? args.skippedSources : undefined,
44
46
  };
45
47
  }
46
48
  function buildAggregateModuleMapContents(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../src/core/discovery/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,aAAa,CAAC;AASrB,SAAS,uBAAuB,CAAC,eAAyB,EAAE,YAA8B;IACxF,MAAM,WAAW,GAAG,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7F,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACjF,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,yBAAyB,CAAC,IAIlC;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO;QAC3B,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjE,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,yBAAyB,CAAC,IAIlC;IACC,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,yBAAyB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,OAAO,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,IAGrC;IACC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7D,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,UAAwC;IAC3E,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,UAAU,EAAE,OAAO;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CAAC,IAMxC;IACC,MAAM,QAAQ,GAAG;QACf,GAAG,EAAE,sBAAsB;QAC3B,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,uBAAuB;KAC9B,CAAC;IACF,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAEvF,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IACzD,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,0BAA0B,CAAC,IAInC;IACC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;IAEjH,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,OAAO,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAKC,EACD,QAIC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3I,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACxC,KAAK,CAAC,IAAI,CAAC,gCAAgC,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACjI,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,IAAI,+BAA+B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACzH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAe,EACf,IAGC,EACD,aAAqB,EACrB,QAGC;IAED,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACxC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC;YACvD,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;YAC3C,IAAI;YACJ,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC,sBAAsB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,QAAQ,SAAS,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAe,EACf,IAGC,EACD,QAIC;IAED,MAAM,gBAAgB,GAAG;QACvB,GAAG,QAAQ,CAAC,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAClD,GAAG,QAAQ,CAAC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;KAC7D,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACnD,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,YAAY,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO;IAE5C,MAAM,cAAc,GAAG;QACrB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE;QAChD,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;KAC3D,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACnD,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,GAC1B,CAAC"}
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../../src/core/discovery/aggregate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { DiscoveredFile, NormalizedAggregateRule } from "./shared.js";
2
+ type FilteredAggregateFiles = {
3
+ matchedFiles: DiscoveredFile[];
4
+ skippedSources: string[];
5
+ };
6
+ declare function filterAggregateMatchedFiles(args: {
7
+ matchedFiles: DiscoveredFile[];
8
+ rule: NormalizedAggregateRule;
9
+ }): Promise<FilteredAggregateFiles>;
10
+ declare function hasModuleExport(args: {
11
+ exportName: string;
12
+ filePath: string;
13
+ source: string;
14
+ }): boolean;
15
+ export { filterAggregateMatchedFiles, hasModuleExport, };
16
+ export type { FilteredAggregateFiles, };
17
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../../src/core/discovery/exports.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3E,KAAK,sBAAsB,GAAG;IAC5B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,iBAAe,2BAA2B,CAAC,IAAI,EAAE;IAC/C,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,IAAI,EAAE,uBAAuB,CAAC;CAC/B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAuBlC;AAED,iBAAS,eAAe,CAAC,IAAI,EAAE;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CASV;AAkED,OAAO,EACL,2BAA2B,EAC3B,eAAe,GAChB,CAAC;AACF,YAAY,EACV,sBAAsB,GACvB,CAAC"}
@@ -0,0 +1,106 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import ts from "typescript";
4
+ import { resolveAggregateModuleLoader } from "./shared.js";
5
+ async function filterAggregateMatchedFiles(args) {
6
+ if (!args.rule.aggregate.requireMatchedModuleExport) {
7
+ return { matchedFiles: args.matchedFiles, skippedSources: [] };
8
+ }
9
+ const matchedFiles = [];
10
+ const skippedSources = [];
11
+ for (const file of args.matchedFiles) {
12
+ if (!resolveAggregateModuleLoader(file.rootRel)) {
13
+ skippedSources.push(file.rootRel);
14
+ continue;
15
+ }
16
+ const source = await fs.readFile(file.absPath, "utf8");
17
+ if (hasModuleExport({ exportName: args.rule.aggregate.matchedModuleExportName, filePath: file.absPath, source })) {
18
+ matchedFiles.push(file);
19
+ }
20
+ else {
21
+ skippedSources.push(file.rootRel);
22
+ }
23
+ }
24
+ return { matchedFiles, skippedSources };
25
+ }
26
+ function hasModuleExport(args) {
27
+ const sourceFile = ts.createSourceFile(args.filePath, args.source, ts.ScriptTarget.Latest, true, resolveScriptKind(args.filePath));
28
+ return sourceFile.statements.some((statement) => statementExportsName(statement, args.exportName));
29
+ }
30
+ function statementExportsName(statement, exportName) {
31
+ if (exportName === "default" && isDefaultExportAssignment(statement))
32
+ return true;
33
+ if (isExportedDeclaration(statement, exportName))
34
+ return true;
35
+ if (ts.isVariableStatement(statement))
36
+ return variableStatementExportsName(statement, exportName);
37
+ if (ts.isExportDeclaration(statement))
38
+ return exportDeclarationExportsName(statement, exportName);
39
+ return false;
40
+ }
41
+ function isDefaultExportAssignment(statement) {
42
+ return ts.isExportAssignment(statement) && !statement.isExportEquals;
43
+ }
44
+ function isExportedDeclaration(statement, exportName) {
45
+ const modifiers = getNodeModifiers(statement);
46
+ const exported = modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword);
47
+ if (!exported)
48
+ return false;
49
+ const defaulted = modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword);
50
+ if (defaulted)
51
+ return exportName === "default";
52
+ return getStatementName(statement) === exportName;
53
+ }
54
+ function variableStatementExportsName(statement, exportName) {
55
+ if (!getNodeModifiers(statement).some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword))
56
+ return false;
57
+ return statement.declarationList.declarations.some((declaration) => bindingNameExportsName(declaration.name, exportName));
58
+ }
59
+ function getNodeModifiers(node) {
60
+ return ts.canHaveModifiers(node) ? ts.getModifiers(node) || [] : [];
61
+ }
62
+ function getStatementName(statement) {
63
+ if (ts.isFunctionDeclaration(statement))
64
+ return statement.name?.text;
65
+ if (ts.isClassDeclaration(statement))
66
+ return statement.name?.text;
67
+ if (ts.isInterfaceDeclaration(statement))
68
+ return statement.name.text;
69
+ if (ts.isTypeAliasDeclaration(statement))
70
+ return statement.name.text;
71
+ if (ts.isEnumDeclaration(statement))
72
+ return statement.name.text;
73
+ if (ts.isModuleDeclaration(statement) && ts.isIdentifier(statement.name))
74
+ return statement.name.text;
75
+ return undefined;
76
+ }
77
+ function bindingNameExportsName(name, exportName) {
78
+ if (ts.isIdentifier(name))
79
+ return name.text === exportName;
80
+ const elements = ts.isObjectBindingPattern(name) ? name.elements : name.elements;
81
+ return elements.some((element) => {
82
+ if (!ts.isBindingElement(element))
83
+ return false;
84
+ return bindingNameExportsName(element.name, exportName);
85
+ });
86
+ }
87
+ function exportDeclarationExportsName(statement, exportName) {
88
+ const clause = statement.exportClause;
89
+ if (!clause || !ts.isNamedExports(clause))
90
+ return false;
91
+ return clause.elements.some((specifier) => specifier.name.text === exportName);
92
+ }
93
+ function resolveScriptKind(filePath) {
94
+ const extension = path.extname(filePath).toLowerCase();
95
+ if (extension === ".tsx")
96
+ return ts.ScriptKind.TSX;
97
+ if (extension === ".jsx")
98
+ return ts.ScriptKind.JSX;
99
+ if (extension === ".ts" || extension === ".mts" || extension === ".cts")
100
+ return ts.ScriptKind.TS;
101
+ if (extension === ".js" || extension === ".mjs" || extension === ".cjs")
102
+ return ts.ScriptKind.JS;
103
+ return ts.ScriptKind.Unknown;
104
+ }
105
+ export { filterAggregateMatchedFiles, hasModuleExport, };
106
+ //# sourceMappingURL=exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../../src/core/discovery/exports.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/core/discovery/normalize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACf,MAAM,eAAe,CAAC;AAevB,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB,iBAAS,2BAA2B,CAClC,SAAS,EAAE,yBAAyB,GAAG,SAAS,EAChD,OAAO,EAAE,MAAM,GACd,4BAA4B,CAiC9B;AAED,iBAAS,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,sBAAsB,CA6BhF;AAED,iBAAS,wBAAwB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,QAAQ,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACvC,yBAAyB,EAAE,CAW7B;AAwBD,iBAAS,wBAAwB,CAAC,QAAQ,EAAE,OAAO,eAAe,EAAE,sBAAsB,GAAG,SAAS,GAAG,OAAO,aAAa,EAAE,yBAAyB,CAIvJ;AAkCD,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,CAAC"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/core/discovery/normalize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACf,MAAM,eAAe,CAAC;AAevB,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB,iBAAS,2BAA2B,CAClC,SAAS,EAAE,yBAAyB,GAAG,SAAS,EAChD,OAAO,EAAE,MAAM,GACd,4BAA4B,CAkC9B;AAED,iBAAS,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,sBAAsB,CA6BhF;AAED,iBAAS,wBAAwB,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,QAAQ,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACvC,yBAAyB,EAAE,CAW7B;AAwBD,iBAAS,wBAAwB,CAAC,QAAQ,EAAE,OAAO,eAAe,EAAE,sBAAsB,GAAG,SAAS,GAAG,OAAO,aAAa,EAAE,yBAAyB,CAIvJ;AAkCD,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,CAAC"}
@@ -30,6 +30,7 @@ function normalizeAggregateModuleMap(aggregate, ruleKey) {
30
30
  keyFromPath,
31
31
  kind: "module-map",
32
32
  matchedModuleExportName,
33
+ requireMatchedModuleExport: Boolean(aggregate.requireMatchedModuleExport),
33
34
  rootModule,
34
35
  rootModuleExportName,
35
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/core/discovery/normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../../src/core/discovery/normalize.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../src/core/discovery/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,eAAe,CAAC;AAavB,OAAO,EAA4B,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkBtE,OAAO,KAAK,EAOV,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,iBAAe,qBAAqB,CAClC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,EACvC,iBAAiB,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACjD,OAAO,CAAC,iBAAiB,CAAC,CA6C5B;AA2OD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,GAChB,CAAC"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../src/core/discovery/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,eAAe,CAAC;AAcvB,OAAO,EAA4B,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkBtE,OAAO,KAAK,EAOV,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,iBAAe,qBAAqB,CAClC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,EACvC,iBAAiB,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACjD,OAAO,CAAC,iBAAiB,CAAC,CA6C5B;AAmPD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,GAChB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { buildAggregateModuleMapContents, createAggregateEntryMetadata, createAggregateRuleMetadata, resolveAggregateRootModule, validateAggregatePathKeys, } from "./aggregate.js";
3
3
  import { buildBundleContents, createResolvedDiscovery, emitEntryRecord, } from "./emit.js";
4
+ import { filterAggregateMatchedFiles } from "./exports.js";
4
5
  import { normalizeDiscoverOptions, normalizeManifestOptions } from "./normalize.js";
5
6
  import { normalizeDiscoverRoots, toEntryPointMap } from "./public.js";
6
7
  import { classifyFile, readBundleFilesWithStats, scanDiscoveredFiles, splitByMaxSize, validateGroupedBootImports, } from "./scan.js";
@@ -87,7 +88,7 @@ function initializeRules(config, rootDir, rules, matchedByRule) {
87
88
  const rootModule = resolveAggregateRootModule({ config, rootDir, rule });
88
89
  if (rootModule)
89
90
  aggregateRootModules.set(rule.key, rootModule);
90
- ruleRecord.aggregate = createAggregateRuleMetadata(rootModule);
91
+ ruleRecord.aggregate = createAggregateRuleMetadata({ rootModule });
91
92
  }
92
93
  rules.set(rule.key, ruleRecord);
93
94
  matchedByRule.set(rule.key, []);
@@ -118,7 +119,7 @@ async function resolveRuleEntries(args) {
118
119
  await resolveBundleEntryRecords({ ...args, rule: args.rule });
119
120
  return;
120
121
  }
121
- resolveAggregateEntryRecord({ ...args, rule: args.rule }, args.aggregateRootModules.get(args.rule.key));
122
+ await resolveAggregateEntryRecord({ ...args, rule: args.rule }, args.aggregateRootModules.get(args.rule.key));
122
123
  }
123
124
  function resolveDirectEntryRecords(args) {
124
125
  for (const file of args.matchedFiles) {
@@ -187,15 +188,22 @@ async function resolveBundleEntryRecords(args) {
187
188
  });
188
189
  });
189
190
  }
190
- function resolveAggregateEntryRecord(args, rootModule) {
191
- const unsupportedFile = args.matchedFiles.find((file) => !resolveAggregateModuleLoader(file.rootRel));
191
+ async function resolveAggregateEntryRecord(args, rootModule) {
192
+ const filtered = await filterAggregateMatchedFiles({ matchedFiles: args.matchedFiles, rule: args.rule });
193
+ const matchedFiles = filtered.matchedFiles;
194
+ args.ruleRecord.aggregate = createAggregateRuleMetadata({ rootModule, skippedSources: filtered.skippedSources });
195
+ const unsupportedFile = matchedFiles.find((file) => !resolveAggregateModuleLoader(file.rootRel));
192
196
  if (unsupportedFile)
193
197
  throw new Error(`bundler-discover-aggregate-unsupported-file :: ${args.rule.key} :: ${unsupportedFile.rootRel}`);
194
- validateAggregatePathKeys({ collapseIndex: args.rule.aggregate.collapseIndex, matchedFiles: args.matchedFiles, rule: args.rule });
195
- if (args.matchedFiles.length === 0 && !args.rule.aggregate.allowEmpty) {
198
+ validateAggregatePathKeys({ collapseIndex: args.rule.aggregate.collapseIndex, matchedFiles, rule: args.rule });
199
+ if (matchedFiles.length === 0 && !args.rule.aggregate.allowEmpty) {
196
200
  throw new Error(`bundler-discover-aggregate-empty :: ${args.rule.key}`);
197
201
  }
198
- const aggregateMetadata = createAggregateEntryMetadata({ matchedFiles: args.matchedFiles, rootModule });
202
+ const aggregateMetadata = createAggregateEntryMetadata({
203
+ matchedFiles,
204
+ rootModule,
205
+ skippedSources: filtered.skippedSources,
206
+ });
199
207
  const stableId = createStableId(JSON.stringify({
200
208
  aggregate: args.rule.aggregate,
201
209
  dir: args.config.dir,
@@ -213,7 +221,7 @@ function resolveAggregateEntryRecord(args, rootModule) {
213
221
  contents: buildAggregateModuleMapContents({
214
222
  aggregate: args.rule.aggregate,
215
223
  includePatterns: args.rule.include,
216
- matchedFiles: args.matchedFiles,
224
+ matchedFiles,
217
225
  rootDir: args.rootDir,
218
226
  rootModule,
219
227
  }),