@absolutejs/absolute 0.19.0-beta.800 → 0.19.0-beta.802

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 (53) hide show
  1. package/dist/angular/index.js +5 -5
  2. package/dist/angular/server.js +5 -5
  3. package/dist/build.js +6 -6
  4. package/dist/{chunk-kvq01j35.js → chunk-0r32762k.js} +13 -3
  5. package/dist/{chunk-kvq01j35.js.map → chunk-0r32762k.js.map} +3 -3
  6. package/dist/chunk-26qn7py4.js +20 -0
  7. package/dist/{chunk-73brtyw5.js.map → chunk-26qn7py4.js.map} +1 -1
  8. package/dist/{chunk-8feq2qek.js → chunk-41bf6aqt.js} +2 -2
  9. package/dist/{chunk-mpk61s31.js → chunk-7x4hne4h.js} +7 -7
  10. package/dist/{chunk-9eab59st.js → chunk-8zz4g25g.js} +10 -9
  11. package/dist/chunk-8zz4g25g.js.map +14 -0
  12. package/dist/{chunk-hhqh49fz.js → chunk-by7t1d3r.js} +5 -5
  13. package/dist/chunk-by7t1d3r.js.map +10 -0
  14. package/dist/{chunk-1x82dcw0.js → chunk-ccz4x8vr.js} +3 -3
  15. package/dist/{chunk-pesza0p6.js → chunk-g8n8v5r8.js} +36 -20
  16. package/dist/{chunk-pesza0p6.js.map → chunk-g8n8v5r8.js.map} +4 -4
  17. package/dist/{chunk-jmfv960b.js → chunk-hf5fjykx.js} +11 -11
  18. package/dist/{chunk-jmfv960b.js.map → chunk-hf5fjykx.js.map} +3 -3
  19. package/dist/{chunk-ey5hs6x6.js → chunk-k6km9xnz.js} +46 -3
  20. package/dist/{chunk-ey5hs6x6.js.map → chunk-k6km9xnz.js.map} +3 -3
  21. package/dist/{chunk-1e9vsfyh.js → chunk-mtxzyxpg.js} +4 -2
  22. package/dist/{chunk-1e9vsfyh.js.map → chunk-mtxzyxpg.js.map} +3 -3
  23. package/dist/{chunk-cs95jp8a.js → chunk-pevt15h0.js} +5 -5
  24. package/dist/{chunk-8xf58ka4.js → chunk-r0w678ve.js} +2 -2
  25. package/dist/{chunk-aaa985m2.js → chunk-r8dzkm4s.js} +2 -2
  26. package/dist/{chunk-77cqkarb.js → chunk-vjhxm8n2.js} +8 -4
  27. package/dist/{chunk-77cqkarb.js.map → chunk-vjhxm8n2.js.map} +1 -1
  28. package/dist/{chunk-t81a331y.js → chunk-y84qnsd3.js} +8 -3
  29. package/dist/chunk-y84qnsd3.js.map +10 -0
  30. package/dist/{chunk-azqk45e4.js → chunk-z6c8qcmw.js} +2 -2
  31. package/dist/client/index.js +4 -4
  32. package/dist/index.js +6 -6
  33. package/dist/islands/index.js +1 -1
  34. package/dist/react/index.js +1 -1
  35. package/dist/src/angular/resolveAngularPackage.d.ts +10 -0
  36. package/dist/src/build/buildAngularVendor.d.ts +14 -0
  37. package/dist/src/core/devVendorPaths.d.ts +2 -0
  38. package/dist/src/dev/moduleMapper.d.ts +1 -1
  39. package/dist/src/dev/reactComponentClassifier.d.ts +1 -1
  40. package/dist/svelte/index.js +1 -1
  41. package/dist/vue/index.js +1 -1
  42. package/package.json +1 -1
  43. package/dist/chunk-73brtyw5.js +0 -16
  44. package/dist/chunk-9eab59st.js.map +0 -14
  45. package/dist/chunk-hhqh49fz.js.map +0 -10
  46. package/dist/chunk-t81a331y.js.map +0 -10
  47. /package/dist/{chunk-8feq2qek.js.map → chunk-41bf6aqt.js.map} +0 -0
  48. /package/dist/{chunk-mpk61s31.js.map → chunk-7x4hne4h.js.map} +0 -0
  49. /package/dist/{chunk-1x82dcw0.js.map → chunk-ccz4x8vr.js.map} +0 -0
  50. /package/dist/{chunk-cs95jp8a.js.map → chunk-pevt15h0.js.map} +0 -0
  51. /package/dist/{chunk-8xf58ka4.js.map → chunk-r0w678ve.js.map} +0 -0
  52. /package/dist/{chunk-aaa985m2.js.map → chunk-r8dzkm4s.js.map} +0 -0
  53. /package/dist/{chunk-azqk45e4.js.map → chunk-z6c8qcmw.js.map} +0 -0
@@ -3,10 +3,10 @@ import {
3
3
  generateClientScriptCode,
4
4
  getAndClearClientScripts,
5
5
  patchAngularInjectorSingleton
6
- } from "./chunk-aaa985m2.js";
6
+ } from "./chunk-r8dzkm4s.js";
7
7
  import {
8
- resolveAngularPackage
9
- } from "./chunk-kvq01j35.js";
8
+ resolveAngularRuntimePath
9
+ } from "./chunk-0r32762k.js";
10
10
  import {
11
11
  toScreamingSnake
12
12
  } from "./chunk-p5504p14.js";
@@ -29,14 +29,14 @@ var initDominoAdapter = (platformServer) => {
29
29
  };
30
30
  var loadAngularDeps = async () => {
31
31
  patchAngularInjectorSingleton();
32
- await import(resolveAngularPackage("@angular/compiler"));
33
- const { applyPatches } = await import("./chunk-hhqh49fz.js");
32
+ await import(resolveAngularRuntimePath("@angular/compiler"));
33
+ const { applyPatches } = await import("./chunk-by7t1d3r.js");
34
34
  await applyPatches();
35
35
  const [platformBrowser, platformServer, common, core] = await Promise.all([
36
- import(resolveAngularPackage("@angular/platform-browser")),
37
- import(resolveAngularPackage("@angular/platform-server")),
38
- import(resolveAngularPackage("@angular/common")),
39
- import(resolveAngularPackage("@angular/core"))
36
+ import(resolveAngularRuntimePath("@angular/platform-browser")),
37
+ import(resolveAngularRuntimePath("@angular/platform-server")),
38
+ import(resolveAngularRuntimePath("@angular/common")),
39
+ import(resolveAngularRuntimePath("@angular/core"))
40
40
  ]);
41
41
  if (false) {}
42
42
  initDominoAdapter(platformServer);
@@ -203,5 +203,5 @@ var withSuppressedAngularDevLogs = async (render) => {
203
203
 
204
204
  export { getAngularDeps, cacheRouteData, getCachedRouteData, buildDeps, buildProviders, clearSelectorCache, discoverTokens, loadSsrDeps, resolveSelector, injectSsrScripts, renderAngularApp, withSuppressedAngularDevLogs };
205
205
 
206
- //# debugId=4564B452FF877EDB64756E2164756E21
207
- //# sourceMappingURL=chunk-jmfv960b.js.map
206
+ //# debugId=70A307989631B9D464756E2164756E21
207
+ //# sourceMappingURL=chunk-hf5fjykx.js.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/angular/angularDeps.ts", "../src/angular/ssrRender.ts"],
4
4
  "sourcesContent": [
5
- "import type { AngularDeps, SsrDepsResult } from '../../types/angular';\nimport { patchAngularInjectorSingleton } from './injectorPatch';\nimport { resolveAngularPackage } from './resolveAngularPackage';\n\nconst initDominoAdapter = (platformServer: SsrDepsResult['platformServer']) => {\n\ttry {\n\t\tconst DominoAdapter: { makeCurrent?: () => void } | undefined =\n\t\t\tplatformServer.ɵDominoAdapter;\n\t\tDominoAdapter?.makeCurrent?.();\n\t} catch (err) {\n\t\tconsole.error('Failed to initialize DominoAdapter:', err);\n\t}\n};\n\nconst loadAngularDeps = async () => {\n\t// Patch Angular's _currentInjector to use globalThis BEFORE any\n\t// Angular module is loaded — this prevents NG0203 when Bun's --hot\n\t// mode creates duplicate module instances during HMR rebuilds.\n\tpatchAngularInjectorSingleton();\n\n\t// JIT compiler MUST be fully loaded before any other Angular import.\n\t// Angular packages like @angular/common contain partially compiled\n\t// injectables (e.g. PlatformLocation) that need the JIT compiler\n\t// facade to be registered first.\n\tawait import(resolveAngularPackage('@angular/compiler'));\n\n\t// angularPatch imports @angular/platform-server internally, so it\n\t// must also run after the compiler is available.\n\tconst { applyPatches } = await import('./angularPatch');\n\tawait applyPatches();\n\n\t// Now safe to load all Angular packages in parallel\n\tconst [platformBrowser, platformServer, common, core] = await Promise.all([\n\t\timport(resolveAngularPackage('@angular/platform-browser')),\n\t\timport(resolveAngularPackage('@angular/platform-server')),\n\t\timport(resolveAngularPackage('@angular/common')),\n\t\timport(resolveAngularPackage('@angular/core'))\n\t]);\n\n\tif (process.env.NODE_ENV !== 'development') {\n\t\tcore.enableProdMode();\n\t}\n\n\tinitDominoAdapter(platformServer);\n\n\treturn {\n\t\tAPP_BASE_HREF: common.APP_BASE_HREF,\n\t\tbootstrapApplication: platformBrowser.bootstrapApplication,\n\t\tDomSanitizer: platformBrowser.DomSanitizer,\n\t\tENVIRONMENT_INITIALIZER: core.ENVIRONMENT_INITIALIZER,\n\t\tinject: core.inject,\n\t\tprovideClientHydration: platformBrowser.provideClientHydration,\n\t\tprovideServerRendering: platformServer.provideServerRendering,\n\t\tprovideZonelessChangeDetection: core.provideZonelessChangeDetection,\n\t\treflectComponentType: core.reflectComponentType,\n\t\trenderApplication: platformServer.renderApplication,\n\t\tREQUEST: core.REQUEST,\n\t\tREQUEST_CONTEXT: core.REQUEST_CONTEXT,\n\t\tRESPONSE_INIT: core.RESPONSE_INIT,\n\t\tSanitizer: core.Sanitizer,\n\t\tSecurityContext: core.SecurityContext,\n\t\twithHttpTransferCacheOptions:\n\t\t\tplatformBrowser.withHttpTransferCacheOptions\n\t};\n};\n\nlet angularDeps: Promise<AngularDeps> | null = null;\n\nexport const getAngularDeps = () => {\n\tif (!angularDeps) {\n\t\tangularDeps = loadAngularDeps();\n\t}\n\n\treturn angularDeps;\n};\n",
5
+ "import type { AngularDeps, SsrDepsResult } from '../../types/angular';\nimport { patchAngularInjectorSingleton } from './injectorPatch';\nimport { resolveAngularRuntimePath } from './resolveAngularPackage';\n\nconst initDominoAdapter = (platformServer: SsrDepsResult['platformServer']) => {\n\ttry {\n\t\tconst DominoAdapter: { makeCurrent?: () => void } | undefined =\n\t\t\tplatformServer.ɵDominoAdapter;\n\t\tDominoAdapter?.makeCurrent?.();\n\t} catch (err) {\n\t\tconsole.error('Failed to initialize DominoAdapter:', err);\n\t}\n};\n\nconst loadAngularDeps = async () => {\n\t// Patch Angular's _currentInjector to use globalThis BEFORE any\n\t// Angular module is loaded — this prevents NG0203 when Bun's --hot\n\t// mode creates duplicate module instances during HMR rebuilds.\n\tpatchAngularInjectorSingleton();\n\n\t// JIT compiler MUST be fully loaded before any other Angular import.\n\t// Angular packages like @angular/common contain partially compiled\n\t// injectables (e.g. PlatformLocation) that need the JIT compiler\n\t// facade to be registered first.\n\tawait import(resolveAngularRuntimePath('@angular/compiler'));\n\n\t// angularPatch imports @angular/platform-server internally, so it\n\t// must also run after the compiler is available.\n\tconst { applyPatches } = await import('./angularPatch');\n\tawait applyPatches();\n\n\t// Now safe to load all Angular packages in parallel\n\tconst [platformBrowser, platformServer, common, core] = await Promise.all([\n\t\timport(resolveAngularRuntimePath('@angular/platform-browser')),\n\t\timport(resolveAngularRuntimePath('@angular/platform-server')),\n\t\timport(resolveAngularRuntimePath('@angular/common')),\n\t\timport(resolveAngularRuntimePath('@angular/core'))\n\t]);\n\n\tif (process.env.NODE_ENV !== 'development') {\n\t\tcore.enableProdMode();\n\t}\n\n\tinitDominoAdapter(platformServer);\n\n\treturn {\n\t\tAPP_BASE_HREF: common.APP_BASE_HREF,\n\t\tbootstrapApplication: platformBrowser.bootstrapApplication,\n\t\tDomSanitizer: platformBrowser.DomSanitizer,\n\t\tENVIRONMENT_INITIALIZER: core.ENVIRONMENT_INITIALIZER,\n\t\tinject: core.inject,\n\t\tprovideClientHydration: platformBrowser.provideClientHydration,\n\t\tprovideServerRendering: platformServer.provideServerRendering,\n\t\tprovideZonelessChangeDetection: core.provideZonelessChangeDetection,\n\t\treflectComponentType: core.reflectComponentType,\n\t\trenderApplication: platformServer.renderApplication,\n\t\tREQUEST: core.REQUEST,\n\t\tREQUEST_CONTEXT: core.REQUEST_CONTEXT,\n\t\tRESPONSE_INIT: core.RESPONSE_INIT,\n\t\tSanitizer: core.Sanitizer,\n\t\tSecurityContext: core.SecurityContext,\n\t\twithHttpTransferCacheOptions:\n\t\t\tplatformBrowser.withHttpTransferCacheOptions\n\t};\n};\n\nlet angularDeps: Promise<AngularDeps> | null = null;\n\nexport const getAngularDeps = () => {\n\tif (!angularDeps) {\n\t\tangularDeps = loadAngularDeps();\n\t}\n\n\treturn angularDeps;\n};\n",
6
6
  "import type { EnvironmentProviders, Provider, Type } from '@angular/core';\nimport type { BootstrapContext } from '@angular/platform-browser';\nimport type {\n\tAngularDeps,\n\tCachedRouteData,\n\tSsrDepsResult\n} from '../../types/angular';\nimport { toScreamingSnake } from '../utils/stringModifiers';\nimport {\n\tgetAndClearClientScripts,\n\tgenerateClientScriptCode\n} from '../utils/registerClientScript';\nimport { buildAbsoluteHttpTransferCacheOptions } from './httpTransferCache';\nimport { buildRequestProviders } from './requestProviders';\n\n// --- Last-used props cache for HMR ---\n// Stores { props, headTag } from the most recent real request per route\n// so HMR re-renders with the same data the user last saw (Vite/Next behavior).\n\nconst routePropsCache = new Map<string, CachedRouteData>();\n\nexport const cacheRouteData = (pagePath: string, data: CachedRouteData) => {\n\tconst cacheKey = pagePath.split('?')[0] ?? pagePath;\n\troutePropsCache.set(cacheKey, data);\n};\nexport const getCachedRouteData = (pagePath: string) =>\n\troutePropsCache.get(pagePath);\n\n// --- Selector cache ---\n\nconst selectorCache = new Map<string, string>();\n\nexport const buildDeps = (\n\tssrResult: SsrDepsResult | null,\n\tbaseDeps: AngularDeps\n) => {\n\tif (!ssrResult?.core) {\n\t\treturn baseDeps;\n\t}\n\n\tconst { common, core, platformBrowser, platformServer } = ssrResult;\n\n\treturn {\n\t\tAPP_BASE_HREF: common?.APP_BASE_HREF ?? baseDeps.APP_BASE_HREF,\n\t\tbootstrapApplication:\n\t\t\tplatformBrowser?.bootstrapApplication ??\n\t\t\tbaseDeps.bootstrapApplication,\n\t\tDomSanitizer: platformBrowser?.DomSanitizer ?? baseDeps.DomSanitizer,\n\t\tENVIRONMENT_INITIALIZER:\n\t\t\tcore.ENVIRONMENT_INITIALIZER ?? baseDeps.ENVIRONMENT_INITIALIZER,\n\t\tinject: core.inject ?? baseDeps.inject,\n\t\tprovideClientHydration:\n\t\t\tplatformBrowser?.provideClientHydration ??\n\t\t\tbaseDeps.provideClientHydration,\n\t\tprovideServerRendering:\n\t\t\tplatformServer?.provideServerRendering ??\n\t\t\tbaseDeps.provideServerRendering,\n\t\tprovideZonelessChangeDetection: core.provideZonelessChangeDetection,\n\t\treflectComponentType: core.reflectComponentType,\n\t\trenderApplication:\n\t\t\tplatformServer?.renderApplication ?? baseDeps.renderApplication,\n\t\tREQUEST: core.REQUEST ?? baseDeps.REQUEST,\n\t\tREQUEST_CONTEXT: core.REQUEST_CONTEXT ?? baseDeps.REQUEST_CONTEXT,\n\t\tRESPONSE_INIT: core.RESPONSE_INIT ?? baseDeps.RESPONSE_INIT,\n\t\tSanitizer: core.Sanitizer,\n\t\tSecurityContext: core.SecurityContext,\n\t\twithHttpTransferCacheOptions:\n\t\t\tplatformBrowser?.withHttpTransferCacheOptions ??\n\t\t\tbaseDeps.withHttpTransferCacheOptions\n\t} satisfies AngularDeps;\n};\nexport const buildProviders = (\n\tdeps: AngularDeps,\n\tsanitizer: InstanceType<AngularDeps['DomSanitizer']>,\n\tmaybeProps: Record<string, unknown> | undefined,\n\ttokenMap: Map<string, unknown>,\n\trequest: Request | undefined,\n\trequestContext: unknown,\n\tresponseInit: ResponseInit | undefined,\n\tuserProviders: ReadonlyArray<Provider | EnvironmentProviders> = []\n) => {\n\tconst providers: (Provider | EnvironmentProviders)[] = [\n\t\tdeps.provideServerRendering(),\n\t\tdeps.provideClientHydration(\n\t\t\tdeps.withHttpTransferCacheOptions(\n\t\t\t\tbuildAbsoluteHttpTransferCacheOptions()\n\t\t\t)\n\t\t),\n\t\tdeps.provideZonelessChangeDetection(),\n\t\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t\t{\n\t\t\tprovide: deps.DomSanitizer,\n\t\t\tuseValue: sanitizer\n\t\t},\n\t\t{ provide: deps.Sanitizer, useValue: sanitizer },\n\t\t...buildRequestProviders(deps, request, requestContext, responseInit),\n\t\t...userProviders\n\t];\n\n\tif (!maybeProps) {\n\t\treturn providers;\n\t}\n\n\tconst propProviders = Object.entries(maybeProps)\n\t\t.map(([propName, propValue]) => ({\n\t\t\ttoken: tokenMap.get(toScreamingSnake(propName)),\n\t\t\tvalue: propValue\n\t\t}))\n\t\t.filter((entry) => entry.token)\n\t\t.map((entry) => ({ provide: entry.token, useValue: entry.value }));\n\n\treturn [...providers, ...propProviders];\n};\nexport const clearSelectorCache = () => selectorCache.clear();\n\nconst isInjectionToken = (value: unknown) => {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\t'ngMetadataName' in value && value.ngMetadataName === 'InjectionToken'\n\t);\n};\n\nexport const discoverTokens = (pageModule: Record<string, unknown>) =>\n\tnew Map(\n\t\tObject.entries(pageModule).filter(([, value]) =>\n\t\t\tisInjectionToken(value)\n\t\t)\n\t);\nexport const loadSsrDeps = async (pagePath: string) => {\n\tconst ssrDepsPath = (pagePath.split('?')[0] ?? pagePath).replace(\n\t\t/\\.js$/,\n\t\t'.ssr-deps.js'\n\t);\n\n\ttry {\n\t\tconst ssrDeps = await import(ssrDepsPath);\n\n\t\tconst result: SsrDepsResult = {\n\t\t\tcommon: ssrDeps.__angularCommon,\n\t\t\tcore: ssrDeps.__angularCore,\n\t\t\tplatformBrowser: ssrDeps.__angularPlatformBrowser,\n\t\t\tplatformServer: ssrDeps.__angularPlatformServer\n\t\t};\n\n\t\treturn result;\n\t} catch {\n\t\treturn null;\n\t}\n};\nexport const resolveSelector = (\n\tdeps: AngularDeps,\n\tpagePath: string,\n\tPageComponent: Type<unknown>\n) => {\n\tconst cached = selectorCache.get(pagePath);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst selector =\n\t\tdeps.reflectComponentType(PageComponent)?.selector ?? 'ng-app';\n\tselectorCache.set(pagePath, selector);\n\n\treturn selector;\n};\n\n// --- Inject HTML helper ---\n\nconst injectBeforeClose = (html: string, snippet: string) => {\n\tif (html.includes('</body>')) {\n\t\treturn html.replace('</body>', `${snippet}</body>`);\n\t}\n\tif (html.includes('</html>')) {\n\t\treturn html.replace('</html>', `${snippet}</html>`);\n\t}\n\n\treturn html + snippet;\n};\n\n// --- Post-render HTML injection ---\n\nexport const injectSsrScripts = (\n\thtml: string,\n\trequestId: string,\n\tindexPath: string,\n\tprops?: Record<string, unknown>\n) => {\n\tlet result = html;\n\n\tconst registeredScripts = getAndClearClientScripts(requestId);\n\tif (registeredScripts.length > 0) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\tgenerateClientScriptCode(registeredScripts)\n\t\t);\n\t}\n\n\tif (props) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script>window.__ABS_ANGULAR_PAGE_PROPS__ = ${JSON.stringify(props)};</script>`\n\t\t);\n\t}\n\n\tif (indexPath) {\n\t\tconst escapedIndexPath = JSON.stringify(indexPath);\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script>import(${escapedIndexPath});</script>`\n\t\t);\n\t}\n\n\treturn result;\n};\nexport const renderAngularApp = async (\n\tdeps: AngularDeps,\n\tPageComponent: Type<unknown>,\n\tproviders: (Provider | EnvironmentProviders)[],\n\tdocument: string | Document,\n\turl: string = '/'\n) => {\n\tconst bootstrap = (context: BootstrapContext) =>\n\t\tdeps.bootstrapApplication(PageComponent, { providers }, context);\n\n\treturn withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(bootstrap, {\n\t\t\tdocument,\n\t\t\tplatformProviders: [],\n\t\t\turl\n\t\t})\n\t);\n};\nexport const withSuppressedAngularDevLogs = async <T>(\n\trender: () => Promise<T>\n) => {\n\tconst origLog = console.log;\n\tconsole.log = (...args: unknown[]) => {\n\t\tif (\n\t\t\ttypeof args[0] === 'string' &&\n\t\t\targs[0].includes('development mode')\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\torigLog.apply(console, args);\n\t};\n\n\ttry {\n\t\treturn await render();\n\t} finally {\n\t\tconsole.log = origLog;\n\t}\n};\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "4564B452FF877EDB64756E2164756E21",
8
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAIA,IAAM,oBAAoB,CAAC,mBAAoD;AAAA,EAC9E,IAAI;AAAA,IACH,MAAM,gBACL,eAAe;AAAA,IAChB,eAAe,cAAc;AAAA,IAC5B,OAAO,KAAK;AAAA,IACb,QAAQ,MAAM,uCAAuC,GAAG;AAAA;AAAA;AAI1D,IAAM,kBAAkB,YAAY;AAAA,EAInC,8BAA8B;AAAA,EAM9B,MAAa,iCAA0B,mBAAmB;AAAA,EAI1D,QAAQ,iBAAiB,MAAa;AAAA,EACtC,MAAM,aAAa;AAAA,EAGnB,OAAO,iBAAiB,gBAAgB,QAAQ,QAAQ,MAAM,QAAQ,IAAI;AAAA,IAClE,iCAA0B,2BAA2B;AAAA,IACrD,iCAA0B,0BAA0B;AAAA,IACpD,iCAA0B,iBAAiB;AAAA,IAC3C,iCAA0B,eAAe;AAAA,EACjD,CAAC;AAAA,EAED,IAAI,OAAwC,CAE5C;AAAA,EAEA,kBAAkB,cAAc;AAAA,EAEhC,OAAO;AAAA,IACN,eAAe,OAAO;AAAA,IACtB,sBAAsB,gBAAgB;AAAA,IACtC,cAAc,gBAAgB;AAAA,IAC9B,yBAAyB,KAAK;AAAA,IAC9B,QAAQ,KAAK;AAAA,IACb,wBAAwB,gBAAgB;AAAA,IACxC,wBAAwB,eAAe;AAAA,IACvC,gCAAgC,KAAK;AAAA,IACrC,sBAAsB,KAAK;AAAA,IAC3B,mBAAmB,eAAe;AAAA,IAClC,SAAS,KAAK;AAAA,IACd,iBAAiB,KAAK;AAAA,IACtB,eAAe,KAAK;AAAA,IACpB,WAAW,KAAK;AAAA,IAChB,iBAAiB,KAAK;AAAA,IACtB,8BACC,gBAAgB;AAAA,EAClB;AAAA;AAGD,IAAI,cAA2C;AAExC,IAAM,iBAAiB,MAAM;AAAA,EACnC,IAAI,CAAC,aAAa;AAAA,IACjB,cAAc,gBAAgB;AAAA,EAC/B;AAAA,EAEA,OAAO;AAAA;;;ACtDR,IAAM,kBAAkB,IAAI;AAErB,IAAM,iBAAiB,CAAC,UAAkB,SAA0B;AAAA,EAC1E,MAAM,WAAW,SAAS,MAAM,GAAG,EAAE,MAAM;AAAA,EAC3C,gBAAgB,IAAI,UAAU,IAAI;AAAA;AAE5B,IAAM,qBAAqB,CAAC,aAClC,gBAAgB,IAAI,QAAQ;AAI7B,IAAM,gBAAgB,IAAI;AAEnB,IAAM,YAAY,CACxB,WACA,aACI;AAAA,EACJ,IAAI,CAAC,WAAW,MAAM;AAAA,IACrB,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,QAAQ,MAAM,iBAAiB,mBAAmB;AAAA,EAE1D,OAAO;AAAA,IACN,eAAe,QAAQ,iBAAiB,SAAS;AAAA,IACjD,sBACC,iBAAiB,wBACjB,SAAS;AAAA,IACV,cAAc,iBAAiB,gBAAgB,SAAS;AAAA,IACxD,yBACC,KAAK,2BAA2B,SAAS;AAAA,IAC1C,QAAQ,KAAK,UAAU,SAAS;AAAA,IAChC,wBACC,iBAAiB,0BACjB,SAAS;AAAA,IACV,wBACC,gBAAgB,0BAChB,SAAS;AAAA,IACV,gCAAgC,KAAK;AAAA,IACrC,sBAAsB,KAAK;AAAA,IAC3B,mBACC,gBAAgB,qBAAqB,SAAS;AAAA,IAC/C,SAAS,KAAK,WAAW,SAAS;AAAA,IAClC,iBAAiB,KAAK,mBAAmB,SAAS;AAAA,IAClD,eAAe,KAAK,iBAAiB,SAAS;AAAA,IAC9C,WAAW,KAAK;AAAA,IAChB,iBAAiB,KAAK;AAAA,IACtB,8BACC,iBAAiB,gCACjB,SAAS;AAAA,EACX;AAAA;AAEM,IAAM,iBAAiB,CAC7B,MACA,WACA,YACA,UACA,SACA,gBACA,cACA,gBAAgE,CAAC,MAC7D;AAAA,EACJ,MAAM,YAAiD;AAAA,IACtD,KAAK,uBAAuB;AAAA,IAC5B,KAAK,uBACJ,KAAK,6BACJ,sCAAsC,CACvC,CACD;AAAA,IACA,KAAK,+BAA+B;AAAA,IACpC,EAAE,SAAS,KAAK,eAAe,UAAU,IAAI;AAAA,IAC7C;AAAA,MACC,SAAS,KAAK;AAAA,MACd,UAAU;AAAA,IACX;AAAA,IACA,EAAE,SAAS,KAAK,WAAW,UAAU,UAAU;AAAA,IAC/C,GAAG,sBAAsB,MAAM,SAAS,gBAAgB,YAAY;AAAA,IACpE,GAAG;AAAA,EACJ;AAAA,EAEA,IAAI,CAAC,YAAY;AAAA,IAChB,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB,OAAO,QAAQ,UAAU,EAC7C,IAAI,EAAE,UAAU,gBAAgB;AAAA,IAChC,OAAO,SAAS,IAAI,iBAAiB,QAAQ,CAAC;AAAA,IAC9C,OAAO;AAAA,EACR,EAAE,EACD,OAAO,CAAC,UAAU,MAAM,KAAK,EAC7B,IAAI,CAAC,WAAW,EAAE,SAAS,MAAM,OAAO,UAAU,MAAM,MAAM,EAAE;AAAA,EAElE,OAAO,CAAC,GAAG,WAAW,GAAG,aAAa;AAAA;AAEhC,IAAM,qBAAqB,MAAM,cAAc,MAAM;AAE5D,IAAM,mBAAmB,CAAC,UAAmB;AAAA,EAC5C,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,IACxC,OAAO;AAAA,EACR;AAAA,EAEA,OACC,oBAAoB,SAAS,MAAM,mBAAmB;AAAA;AAIjD,IAAM,iBAAiB,CAAC,eAC9B,IAAI,IACH,OAAO,QAAQ,UAAU,EAAE,OAAO,IAAI,WACrC,iBAAiB,KAAK,CACvB,CACD;AACM,IAAM,cAAc,OAAO,aAAqB;AAAA,EACtD,MAAM,eAAe,SAAS,MAAM,GAAG,EAAE,MAAM,UAAU,QACxD,SACA,cACD;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,UAAU,MAAa;AAAA,IAE7B,MAAM,SAAwB;AAAA,MAC7B,QAAQ,QAAQ;AAAA,MAChB,MAAM,QAAQ;AAAA,MACd,iBAAiB,QAAQ;AAAA,MACzB,gBAAgB,QAAQ;AAAA,IACzB;AAAA,IAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAGF,IAAM,kBAAkB,CAC9B,MACA,UACA,kBACI;AAAA,EACJ,MAAM,SAAS,cAAc,IAAI,QAAQ;AAAA,EACzC,IAAI,QAAQ;AAAA,IACX,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,WACL,KAAK,qBAAqB,aAAa,GAAG,YAAY;AAAA,EACvD,cAAc,IAAI,UAAU,QAAQ;AAAA,EAEpC,OAAO;AAAA;AAKR,IAAM,oBAAoB,CAAC,MAAc,YAAoB;AAAA,EAC5D,IAAI,KAAK,SAAS,SAAS,GAAG;AAAA,IAC7B,OAAO,KAAK,QAAQ,WAAW,GAAG,gBAAgB;AAAA,EACnD;AAAA,EACA,IAAI,KAAK,SAAS,SAAS,GAAG;AAAA,IAC7B,OAAO,KAAK,QAAQ,WAAW,GAAG,gBAAgB;AAAA,EACnD;AAAA,EAEA,OAAO,OAAO;AAAA;AAKR,IAAM,mBAAmB,CAC/B,MACA,WACA,WACA,UACI;AAAA,EACJ,IAAI,SAAS;AAAA,EAEb,MAAM,oBAAoB,yBAAyB,SAAS;AAAA,EAC5D,IAAI,kBAAkB,SAAS,GAAG;AAAA,IACjC,SAAS,kBACR,QACA,yBAAyB,iBAAiB,CAC3C;AAAA,EACD;AAAA,EAEA,IAAI,OAAO;AAAA,IACV,SAAS,kBACR,QACA,+CAA+C,KAAK,UAAU,KAAK,aACpE;AAAA,EACD;AAAA,EAEA,IAAI,WAAW;AAAA,IACd,MAAM,mBAAmB,KAAK,UAAU,SAAS;AAAA,IACjD,SAAS,kBACR,QACA,kBAAkB,6BACnB;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAED,IAAM,mBAAmB,OAC/B,MACA,eACA,WACA,UACA,MAAc,QACV;AAAA,EACJ,MAAM,YAAY,CAAC,YAClB,KAAK,qBAAqB,eAAe,EAAE,UAAU,GAAG,OAAO;AAAA,EAEhE,OAAO,6BAA6B,MACnC,KAAK,kBAAkB,WAAW;AAAA,IACjC;AAAA,IACA,mBAAmB,CAAC;AAAA,IACpB;AAAA,EACD,CAAC,CACF;AAAA;AAEM,IAAM,+BAA+B,OAC3C,WACI;AAAA,EACJ,MAAM,UAAU,QAAQ;AAAA,EACxB,QAAQ,MAAM,IAAI,SAAoB;AAAA,IACrC,IACC,OAAO,KAAK,OAAO,YACnB,KAAK,GAAG,SAAS,kBAAkB,GAClC;AAAA,MACD;AAAA,IACD;AAAA,IACA,QAAQ,MAAM,SAAS,IAAI;AAAA;AAAA,EAG5B,IAAI;AAAA,IACH,OAAO,MAAM,OAAO;AAAA,YACnB;AAAA,IACD,QAAQ,MAAM;AAAA;AAAA;",
9
+ "debugId": "70A307989631B9D464756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -246,8 +246,51 @@ var computeAngularVendorPathsAsync = async (directories = []) => {
246
246
  const specifiers = await resolveAngularSpecifiers(directories);
247
247
  return computeAngularVendorPaths(specifiers);
248
248
  };
249
+ var buildAngularServerVendor = async (buildDir, directories = [], linkerJitMode = false) => {
250
+ const vendorDir = join2(buildDir, "angular", "vendor", "server");
251
+ mkdirSync2(vendorDir, { recursive: true });
252
+ const tmpDir = join2(buildDir, "_angular_server_vendor_tmp");
253
+ mkdirSync2(tmpDir, { recursive: true });
254
+ const browserSpecs = await resolveAngularSpecifiers(directories);
255
+ const allSpecs = new Set(browserSpecs);
256
+ for (const spec of SERVER_ONLY_ANGULAR_SPECIFIERS) {
257
+ if (isResolvable(spec))
258
+ allSpecs.add(spec);
259
+ }
260
+ const specifiers = Array.from(allSpecs);
261
+ const entrypoints = await Promise.all(specifiers.map(async (specifier) => {
262
+ const safeName = toSafeFileName(specifier);
263
+ const entryPath = join2(tmpDir, `${safeName}.ts`);
264
+ await Bun.write(entryPath, generateVendorEntrySource(specifier));
265
+ return entryPath;
266
+ }));
267
+ const result = await bunBuild({
268
+ entrypoints,
269
+ format: "esm",
270
+ minify: false,
271
+ naming: "[name].[ext]",
272
+ outdir: vendorDir,
273
+ plugins: [createAngularLinkerPlugin(linkerJitMode)],
274
+ splitting: true,
275
+ target: "bun",
276
+ throw: false
277
+ });
278
+ await rm(tmpDir, { force: true, recursive: true });
279
+ if (!result.success) {
280
+ console.warn("\u26A0\uFE0F Angular server vendor build had errors:", result.logs);
281
+ }
282
+ return specifiers;
283
+ };
284
+ var computeAngularServerVendorPaths = (buildDir, specifiers) => {
285
+ const paths = {};
286
+ const vendorDir = join2(buildDir, "angular", "vendor", "server");
287
+ for (const specifier of specifiers) {
288
+ paths[specifier] = join2(vendorDir, `${toSafeFileName(specifier)}.js`);
289
+ }
290
+ return paths;
291
+ };
249
292
 
250
- export { createAngularLinkerPlugin, buildAngularVendor, computeAngularVendorPaths, computeAngularVendorPathsAsync };
293
+ export { createAngularLinkerPlugin, buildAngularVendor, computeAngularVendorPaths, computeAngularVendorPathsAsync, buildAngularServerVendor, computeAngularServerVendorPaths };
251
294
 
252
- //# debugId=6E97B8F47726EBE564756E2164756E21
253
- //# sourceMappingURL=chunk-ey5hs6x6.js.map
295
+ //# debugId=6CE3FECB3EBBA3EB64756E2164756E21
296
+ //# sourceMappingURL=chunk-k6km9xnz.js.map
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/build/buildAngularVendor.ts", "../src/build/angularLinkerPlugin.ts"],
4
4
  "sourcesContent": [
5
- "import { mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { rm } from 'node:fs/promises';\nimport { build as bunBuild, Glob } from 'bun';\nimport { createAngularLinkerPlugin } from './angularLinkerPlugin';\nimport { generateVendorEntrySource } from './vendorEntrySource';\n\n/** Always-vendored Angular packages.\n * Required for any Angular page even if not imported in user code: the runtime\n * needs them to bootstrap. Server-only packages (@angular/platform-server) are\n * excluded. Additional @angular/* packages are auto-discovered from source. */\nconst REQUIRED_ANGULAR_SPECIFIERS = [\n\t'@angular/core',\n\t'@angular/compiler',\n\t'@angular/common',\n\t'@angular/common/http',\n\t'@angular/platform-browser'\n];\n\n/** Build-only / server-only specifiers that should never be browser-vendored. */\nconst SERVER_ONLY_ANGULAR_SPECIFIERS = new Set([\n\t'@angular/platform-server',\n\t'@angular/ssr',\n\t'@angular/compiler-cli'\n]);\n\nconst SCAN_SKIP_DIRS = new Set([\n\t'node_modules',\n\t'build',\n\t'dist',\n\t'.absolutejs',\n\t'generated'\n]);\n\nconst isResolvable = (specifier: string) => {\n\ttry {\n\t\tBun.resolveSync(specifier, process.cwd());\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst isBareSpecifier = (spec: string) =>\n\t!spec.startsWith('.') && !spec.startsWith('/') && !spec.startsWith('@src/');\n\nconst isAngularBrowserSpecifier = (spec: string) =>\n\tspec.startsWith('@angular/') && !SERVER_ONLY_ANGULAR_SPECIFIERS.has(spec);\n\n/** Scan user source for any imports — both @angular/* (kept) and other bare\n * specs (returned as transitive scan seeds). Finding angular subpaths only\n * reachable through deps (e.g. `@angular/core/rxjs-interop` from\n * `@angular/fire/compat/auth`) requires walking through non-angular roots. */\nconst scanSourceImports = async (directories: string[]) => {\n\tconst angular = new Set<string>();\n\tconst transitiveRoots = new Set<string>();\n\tconst transpiler = new Bun.Transpiler({ loader: 'tsx' });\n\tconst glob = new Glob('**/*.{ts,tsx,js,jsx}');\n\n\tfor (const dir of directories) {\n\t\ttry {\n\t\t\tfor await (const file of glob.scan({ absolute: true, cwd: dir })) {\n\t\t\t\tconst rel = file.slice(dir.length + 1);\n\t\t\t\tconst [first] = rel.split('/');\n\t\t\t\tif (first && SCAN_SKIP_DIRS.has(first)) continue;\n\t\t\t\ttry {\n\t\t\t\t\tconst content = await Bun.file(file).text();\n\t\t\t\t\tfor (const imp of transpiler.scanImports(content)) {\n\t\t\t\t\t\tif (isAngularBrowserSpecifier(imp.path)) {\n\t\t\t\t\t\t\tangular.add(imp.path);\n\t\t\t\t\t\t} else if (isBareSpecifier(imp.path)) {\n\t\t\t\t\t\t\ttransitiveRoots.add(imp.path);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// unreadable file, skip\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// missing dir, skip\n\t\t}\n\t}\n\n\treturn { angular, transitiveRoots };\n};\n\n/** Walk through transitive deps and harvest any @angular/* subpaths reachable\n * via non-angular packages (e.g. firebase imports `@angular/core/rxjs-interop`\n * through @angular/fire). Mirrors buildDepVendor's framework-root traversal. */\nconst collectTransitiveAngularSpecs = async (\n\troots: Iterable<string>,\n\tangularFound: Set<string>\n) => {\n\tconst { readFileSync } = await import('node:fs');\n\tconst transpiler = new Bun.Transpiler({ loader: 'js' });\n\tconst visited = new Set<string>();\n\tconst frontier: string[] = [];\n\tfor (const r of roots) frontier.push(r);\n\n\tconst MAX_PASSES = 5;\n\tfor (let pass = 0; pass < MAX_PASSES; pass++) {\n\t\tconst next: string[] = [];\n\t\tfor (const spec of frontier) {\n\t\t\tif (visited.has(spec)) continue;\n\t\t\tvisited.add(spec);\n\t\t\tlet resolved: string;\n\t\t\ttry {\n\t\t\t\tresolved = Bun.resolveSync(spec, process.cwd());\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet content: string;\n\t\t\ttry {\n\t\t\t\tcontent = readFileSync(resolved, 'utf-8');\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet imports;\n\t\t\ttry {\n\t\t\t\timports = transpiler.scanImports(content);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const imp of imports) {\n\t\t\t\tconst child = imp.path;\n\t\t\t\tif (!isBareSpecifier(child)) continue;\n\t\t\t\tif (visited.has(child)) continue;\n\t\t\t\tif (isAngularBrowserSpecifier(child)) {\n\t\t\t\t\tangularFound.add(child);\n\t\t\t\t}\n\t\t\t\tnext.push(child);\n\t\t\t}\n\t\t}\n\t\tif (next.length === 0) break;\n\t\tfrontier.length = 0;\n\t\tfor (const s of next) frontier.push(s);\n\t}\n};\n\n/** Convert a bare specifier to a safe filename:\n * @angular/common/http → angular_common_http */\nconst toSafeFileName = (specifier: string) =>\n\tspecifier.replace(/^@/, '').replace(/\\//g, '_');\n\nconst resolveAngularSpecifiers = async (directories: string[]) => {\n\tconst { angular, transitiveRoots } = await scanSourceImports(directories);\n\tfor (const spec of REQUIRED_ANGULAR_SPECIFIERS) angular.add(spec);\n\tawait collectTransitiveAngularSpecs(\n\t\t[...angular, ...transitiveRoots],\n\t\tangular\n\t);\n\n\treturn Array.from(angular).filter(isResolvable);\n};\n\n/** Build vendor bundles for every @angular/* package the project imports.\n * `linkerJitMode` controls whether NgModule definitions retain their\n * declarations/exports — required when consumer (user) components are\n * runtime-compiled by `@angular/compiler` (dev/HMR via compileAngularFileJIT).\n * Production AOT builds set this to false to match AOT'd user components.\n *\n * `depVendorSpecifiers` are non-framework packages that are also vendored\n * separately (by `buildDepVendor`). They MUST be externalized here too —\n * otherwise transitive imports like `@angular/fire/compat/auth` →\n * `firebase/compat/auth` get bundled twice, creating duplicate\n * @firebase/app-compat instances. The angular-vendor copy registers\n * `firebase.auth.*` on its own firebase singleton, leaving the user's\n * `import firebase from 'firebase/compat/app'` with `firebase.auth` undefined.\n * Externalizing forces both pipelines to share the same /vendor chunks. */\nexport const buildAngularVendor = async (\n\tbuildDir: string,\n\tdirectories: string[] = [],\n\tlinkerJitMode = false,\n\tdepVendorSpecifiers: string[] = []\n) => {\n\tconst vendorDir = join(buildDir, 'angular', 'vendor');\n\tmkdirSync(vendorDir, { recursive: true });\n\n\tconst tmpDir = join(buildDir, '_angular_vendor_tmp');\n\tmkdirSync(tmpDir, { recursive: true });\n\n\tconst specifiers = await resolveAngularSpecifiers(directories);\n\n\t// Angular packages are proper ESM. `export *` re-exports only NAMED exports\n\t// per ECMA spec, so we use the namespace-default-fallback pattern that's\n\t// safe regardless of whether the package has a default export.\n\tconst entrypoints = await Promise.all(\n\t\tspecifiers.map(async (specifier) => {\n\t\t\tconst safeName = toSafeFileName(specifier);\n\t\t\tconst entryPath = join(tmpDir, `${safeName}.ts`);\n\t\t\tawait Bun.write(entryPath, generateVendorEntrySource(specifier));\n\n\t\t\treturn entryPath;\n\t\t})\n\t);\n\n\tconst result = await bunBuild({\n\t\tentrypoints,\n\t\texternal: depVendorSpecifiers,\n\t\tformat: 'esm',\n\t\tminify: false,\n\t\tnaming: '[name].[ext]',\n\t\toutdir: vendorDir,\n\t\tplugins: [createAngularLinkerPlugin(linkerJitMode)],\n\t\tsplitting: true,\n\t\ttarget: 'browser',\n\t\tthrow: false\n\t});\n\n\tawait rm(tmpDir, { force: true, recursive: true });\n\n\tif (!result.success) {\n\t\tconsole.warn('⚠️ Angular vendor build had errors:', result.logs);\n\t}\n\n\treturn specifiers;\n};\nexport const computeAngularVendorPaths = (\n\tspecifiers: string[] = REQUIRED_ANGULAR_SPECIFIERS\n) => {\n\tconst paths: Record<string, string> = {};\n\tfor (const specifier of specifiers) {\n\t\tpaths[specifier] = `/angular/vendor/${toSafeFileName(specifier)}.js`;\n\t}\n\n\treturn paths;\n};\n\n/** Async variant that scans source + transitive deps before producing the\n * vendor path map. Use this when the page-bundle build needs the full set of\n * angular specs in its rewrite map (otherwise transitively-discovered subpaths\n * like `@angular/core/rxjs-interop` end up as bare specifiers in the output). */\nexport const computeAngularVendorPathsAsync = async (\n\tdirectories: string[] = []\n) => {\n\tconst specifiers = await resolveAngularSpecifiers(directories);\n\n\treturn computeAngularVendorPaths(specifiers);\n};\n",
5
+ "import { mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { rm } from 'node:fs/promises';\nimport { build as bunBuild, Glob } from 'bun';\nimport { createAngularLinkerPlugin } from './angularLinkerPlugin';\nimport { generateVendorEntrySource } from './vendorEntrySource';\n\n/** Always-vendored Angular packages.\n * Required for any Angular page even if not imported in user code: the runtime\n * needs them to bootstrap. Server-only packages (@angular/platform-server) are\n * excluded. Additional @angular/* packages are auto-discovered from source. */\nconst REQUIRED_ANGULAR_SPECIFIERS = [\n\t'@angular/core',\n\t'@angular/compiler',\n\t'@angular/common',\n\t'@angular/common/http',\n\t'@angular/platform-browser'\n];\n\n/** Build-only / server-only specifiers that should never be browser-vendored. */\nconst SERVER_ONLY_ANGULAR_SPECIFIERS = new Set([\n\t'@angular/platform-server',\n\t'@angular/ssr',\n\t'@angular/compiler-cli'\n]);\n\nconst SCAN_SKIP_DIRS = new Set([\n\t'node_modules',\n\t'build',\n\t'dist',\n\t'.absolutejs',\n\t'generated'\n]);\n\nconst isResolvable = (specifier: string) => {\n\ttry {\n\t\tBun.resolveSync(specifier, process.cwd());\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst isBareSpecifier = (spec: string) =>\n\t!spec.startsWith('.') && !spec.startsWith('/') && !spec.startsWith('@src/');\n\nconst isAngularBrowserSpecifier = (spec: string) =>\n\tspec.startsWith('@angular/') && !SERVER_ONLY_ANGULAR_SPECIFIERS.has(spec);\n\n/** Scan user source for any imports — both @angular/* (kept) and other bare\n * specs (returned as transitive scan seeds). Finding angular subpaths only\n * reachable through deps (e.g. `@angular/core/rxjs-interop` from\n * `@angular/fire/compat/auth`) requires walking through non-angular roots. */\nconst scanSourceImports = async (directories: string[]) => {\n\tconst angular = new Set<string>();\n\tconst transitiveRoots = new Set<string>();\n\tconst transpiler = new Bun.Transpiler({ loader: 'tsx' });\n\tconst glob = new Glob('**/*.{ts,tsx,js,jsx}');\n\n\tfor (const dir of directories) {\n\t\ttry {\n\t\t\tfor await (const file of glob.scan({ absolute: true, cwd: dir })) {\n\t\t\t\tconst rel = file.slice(dir.length + 1);\n\t\t\t\tconst [first] = rel.split('/');\n\t\t\t\tif (first && SCAN_SKIP_DIRS.has(first)) continue;\n\t\t\t\ttry {\n\t\t\t\t\tconst content = await Bun.file(file).text();\n\t\t\t\t\tfor (const imp of transpiler.scanImports(content)) {\n\t\t\t\t\t\tif (isAngularBrowserSpecifier(imp.path)) {\n\t\t\t\t\t\t\tangular.add(imp.path);\n\t\t\t\t\t\t} else if (isBareSpecifier(imp.path)) {\n\t\t\t\t\t\t\ttransitiveRoots.add(imp.path);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// unreadable file, skip\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// missing dir, skip\n\t\t}\n\t}\n\n\treturn { angular, transitiveRoots };\n};\n\n/** Walk through transitive deps and harvest any @angular/* subpaths reachable\n * via non-angular packages (e.g. firebase imports `@angular/core/rxjs-interop`\n * through @angular/fire). Mirrors buildDepVendor's framework-root traversal. */\nconst collectTransitiveAngularSpecs = async (\n\troots: Iterable<string>,\n\tangularFound: Set<string>\n) => {\n\tconst { readFileSync } = await import('node:fs');\n\tconst transpiler = new Bun.Transpiler({ loader: 'js' });\n\tconst visited = new Set<string>();\n\tconst frontier: string[] = [];\n\tfor (const r of roots) frontier.push(r);\n\n\tconst MAX_PASSES = 5;\n\tfor (let pass = 0; pass < MAX_PASSES; pass++) {\n\t\tconst next: string[] = [];\n\t\tfor (const spec of frontier) {\n\t\t\tif (visited.has(spec)) continue;\n\t\t\tvisited.add(spec);\n\t\t\tlet resolved: string;\n\t\t\ttry {\n\t\t\t\tresolved = Bun.resolveSync(spec, process.cwd());\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet content: string;\n\t\t\ttry {\n\t\t\t\tcontent = readFileSync(resolved, 'utf-8');\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet imports;\n\t\t\ttry {\n\t\t\t\timports = transpiler.scanImports(content);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const imp of imports) {\n\t\t\t\tconst child = imp.path;\n\t\t\t\tif (!isBareSpecifier(child)) continue;\n\t\t\t\tif (visited.has(child)) continue;\n\t\t\t\tif (isAngularBrowserSpecifier(child)) {\n\t\t\t\t\tangularFound.add(child);\n\t\t\t\t}\n\t\t\t\tnext.push(child);\n\t\t\t}\n\t\t}\n\t\tif (next.length === 0) break;\n\t\tfrontier.length = 0;\n\t\tfor (const s of next) frontier.push(s);\n\t}\n};\n\n/** Convert a bare specifier to a safe filename:\n * @angular/common/http → angular_common_http */\nconst toSafeFileName = (specifier: string) =>\n\tspecifier.replace(/^@/, '').replace(/\\//g, '_');\n\nconst resolveAngularSpecifiers = async (directories: string[]) => {\n\tconst { angular, transitiveRoots } = await scanSourceImports(directories);\n\tfor (const spec of REQUIRED_ANGULAR_SPECIFIERS) angular.add(spec);\n\tawait collectTransitiveAngularSpecs(\n\t\t[...angular, ...transitiveRoots],\n\t\tangular\n\t);\n\n\treturn Array.from(angular).filter(isResolvable);\n};\n\n/** Build vendor bundles for every @angular/* package the project imports.\n * `linkerJitMode` controls whether NgModule definitions retain their\n * declarations/exports — required when consumer (user) components are\n * runtime-compiled by `@angular/compiler` (dev/HMR via compileAngularFileJIT).\n * Production AOT builds set this to false to match AOT'd user components.\n *\n * `depVendorSpecifiers` are non-framework packages that are also vendored\n * separately (by `buildDepVendor`). They MUST be externalized here too —\n * otherwise transitive imports like `@angular/fire/compat/auth` →\n * `firebase/compat/auth` get bundled twice, creating duplicate\n * @firebase/app-compat instances. The angular-vendor copy registers\n * `firebase.auth.*` on its own firebase singleton, leaving the user's\n * `import firebase from 'firebase/compat/app'` with `firebase.auth` undefined.\n * Externalizing forces both pipelines to share the same /vendor chunks. */\nexport const buildAngularVendor = async (\n\tbuildDir: string,\n\tdirectories: string[] = [],\n\tlinkerJitMode = false,\n\tdepVendorSpecifiers: string[] = []\n) => {\n\tconst vendorDir = join(buildDir, 'angular', 'vendor');\n\tmkdirSync(vendorDir, { recursive: true });\n\n\tconst tmpDir = join(buildDir, '_angular_vendor_tmp');\n\tmkdirSync(tmpDir, { recursive: true });\n\n\tconst specifiers = await resolveAngularSpecifiers(directories);\n\n\t// Angular packages are proper ESM. `export *` re-exports only NAMED exports\n\t// per ECMA spec, so we use the namespace-default-fallback pattern that's\n\t// safe regardless of whether the package has a default export.\n\tconst entrypoints = await Promise.all(\n\t\tspecifiers.map(async (specifier) => {\n\t\t\tconst safeName = toSafeFileName(specifier);\n\t\t\tconst entryPath = join(tmpDir, `${safeName}.ts`);\n\t\t\tawait Bun.write(entryPath, generateVendorEntrySource(specifier));\n\n\t\t\treturn entryPath;\n\t\t})\n\t);\n\n\tconst result = await bunBuild({\n\t\tentrypoints,\n\t\texternal: depVendorSpecifiers,\n\t\tformat: 'esm',\n\t\tminify: false,\n\t\tnaming: '[name].[ext]',\n\t\toutdir: vendorDir,\n\t\tplugins: [createAngularLinkerPlugin(linkerJitMode)],\n\t\tsplitting: true,\n\t\ttarget: 'browser',\n\t\tthrow: false\n\t});\n\n\tawait rm(tmpDir, { force: true, recursive: true });\n\n\tif (!result.success) {\n\t\tconsole.warn('⚠️ Angular vendor build had errors:', result.logs);\n\t}\n\n\treturn specifiers;\n};\nexport const computeAngularVendorPaths = (\n\tspecifiers: string[] = REQUIRED_ANGULAR_SPECIFIERS\n) => {\n\tconst paths: Record<string, string> = {};\n\tfor (const specifier of specifiers) {\n\t\tpaths[specifier] = `/angular/vendor/${toSafeFileName(specifier)}.js`;\n\t}\n\n\treturn paths;\n};\n\n/** Async variant that scans source + transitive deps before producing the\n * vendor path map. Use this when the page-bundle build needs the full set of\n * angular specs in its rewrite map (otherwise transitively-discovered subpaths\n * like `@angular/core/rxjs-interop` end up as bare specifiers in the output). */\nexport const computeAngularVendorPathsAsync = async (\n\tdirectories: string[] = []\n) => {\n\tconst specifiers = await resolveAngularSpecifiers(directories);\n\n\treturn computeAngularVendorPaths(specifiers);\n};\n\n/** Server-side counterpart to `buildAngularVendor`. Outputs fully-linked\n * Bun-target ESM bundles for every @angular/* package the project uses,\n * *plus* `@angular/platform-server` and `@angular/ssr` (excluded from the\n * browser vendor). The server bundle and `getAngularDeps()` import from\n * these paths so SSR shares one Angular runtime instance with the page\n * bundles — eliminates the dual-package hazard that produces NG0201.\n *\n * After this build, `@angular/compiler` is no longer required at runtime\n * for AOT-mode builds: every partial `ɵɵngDeclare*` has been linked into\n * final ɵdir/ɵcmp/ɵfac definitions in the vendor output. */\nexport const buildAngularServerVendor = async (\n\tbuildDir: string,\n\tdirectories: string[] = [],\n\tlinkerJitMode = false\n) => {\n\tconst vendorDir = join(buildDir, 'angular', 'vendor', 'server');\n\tmkdirSync(vendorDir, { recursive: true });\n\n\tconst tmpDir = join(buildDir, '_angular_server_vendor_tmp');\n\tmkdirSync(tmpDir, { recursive: true });\n\n\tconst browserSpecs = await resolveAngularSpecifiers(directories);\n\tconst allSpecs = new Set(browserSpecs);\n\tfor (const spec of SERVER_ONLY_ANGULAR_SPECIFIERS) {\n\t\tif (isResolvable(spec)) allSpecs.add(spec);\n\t}\n\tconst specifiers = Array.from(allSpecs);\n\n\tconst entrypoints = await Promise.all(\n\t\tspecifiers.map(async (specifier) => {\n\t\t\tconst safeName = toSafeFileName(specifier);\n\t\t\tconst entryPath = join(tmpDir, `${safeName}.ts`);\n\t\t\tawait Bun.write(entryPath, generateVendorEntrySource(specifier));\n\n\t\t\treturn entryPath;\n\t\t})\n\t);\n\n\tconst result = await bunBuild({\n\t\tentrypoints,\n\t\tformat: 'esm',\n\t\tminify: false,\n\t\tnaming: '[name].[ext]',\n\t\toutdir: vendorDir,\n\t\tplugins: [createAngularLinkerPlugin(linkerJitMode)],\n\t\tsplitting: true,\n\t\ttarget: 'bun',\n\t\tthrow: false\n\t});\n\n\tawait rm(tmpDir, { force: true, recursive: true });\n\n\tif (!result.success) {\n\t\tconsole.warn(\n\t\t\t'⚠️ Angular server vendor build had errors:',\n\t\t\tresult.logs\n\t\t);\n\t}\n\n\treturn specifiers;\n};\n\n/** Absolute filesystem paths to server vendor files, for `rewriteImports`\n * on server-side bundles and for runtime resolution in `getAngularDeps`. */\nexport const computeAngularServerVendorPaths = (\n\tbuildDir: string,\n\tspecifiers: string[]\n) => {\n\tconst paths: Record<string, string> = {};\n\tconst vendorDir = join(buildDir, 'angular', 'vendor', 'server');\n\tfor (const specifier of specifiers) {\n\t\tpaths[specifier] = join(vendorDir, `${toSafeFileName(specifier)}.js`);\n\t}\n\n\treturn paths;\n};\n",
6
6
  "import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport { createHash } from 'node:crypto';\nimport type { BunPlugin } from 'bun';\n\nconst CACHE_ROOT = resolve('.absolutejs', 'cache', 'angular-linker');\n\n/**\n * Bun bundler plugin that runs the Angular Linker on partially compiled\n * Angular libraries at build time. Converts ɵɵngDeclare* declarations\n * into fully linked code.\n *\n * The `linkerJitMode` flag controls whether NgModule definitions retain\n * `declarations`/`exports` (JIT-mode, required when consumer code is\n * runtime-compiled) or strip them (AOT-mode, smaller output but only\n * correct when consumer components have ɵcmp.dependencies baked in by\n * the Angular compiler-cli).\n *\n * In AbsoluteJS dev/HMR, user components are TypeScript-transpiled via\n * `compileAngularFileJIT` and rely on @angular/compiler at runtime —\n * that runtime JIT path reads `NgModule.ɵmod.declarations` to find\n * directives like FormGroupDirective. Linking vendor code in AOT mode\n * (the default) silently breaks dev because declarations get stripped\n * and runtime JIT then can't resolve `[formGroup]`, `[ngIf]`, etc. So\n * dev/HMR builds must use `linkerJitMode: true`. Production AOT builds\n * use `linkerJitMode: false` (matches AOT'd user components).\n *\n * Cache key includes mode so dev and prod artifacts don't collide.\n */\nexport const createAngularLinkerPlugin = (\n\tlinkerJitMode: boolean\n): BunPlugin => ({\n\tname: 'angular-linker',\n\tsetup(bld) {\n\t\tlet needsLinking: ((path: string, source: string) => boolean) | undefined;\n\t\tlet babelTransform: ((source: string, options: Record<string, unknown>) => { code?: string } | null) | undefined;\n\t\tlet linkerPlugin: unknown;\n\n\t\tconst cacheDir = join(CACHE_ROOT, linkerJitMode ? 'jit' : 'aot');\n\n\t\tbld.onLoad(\n\t\t\t{ filter: /[\\\\/]@angular[\\\\/].*\\.m?js$/ },\n\t\t\tasync (args) => {\n\t\t\t\tconst source = await Bun.file(args.path).text();\n\n\t\t\t\tif (!needsLinking) {\n\t\t\t\t\tconst specifier = '@angular/compiler-cli/linker';\n\t\t\t\t\tconst mod = await import(specifier);\n\t\t\t\t\t({ needsLinking } = mod);\n\t\t\t\t}\n\n\t\t\t\tconst checkLink = needsLinking;\n\t\t\t\tif (!checkLink || !checkLink(args.path, source)) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst hash = createHash('md5')\n\t\t\t\t\t.update(source)\n\t\t\t\t\t.digest('hex');\n\t\t\t\tconst cachePath = join(cacheDir, `${hash}.js`);\n\n\t\t\t\tif (existsSync(cachePath)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontents: readFileSync(cachePath, 'utf-8'),\n\t\t\t\t\t\tloader: 'js'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (!babelTransform) {\n\t\t\t\t\tconst babelSpecifier = '@babel/core';\n\t\t\t\t\tconst babel = await import(babelSpecifier);\n\t\t\t\t\tbabelTransform = babel.transformSync;\n\t\t\t\t}\n\t\t\t\tif (!linkerPlugin) {\n\t\t\t\t\tconst linkerSpecifier = '@angular/compiler-cli/linker/babel';\n\t\t\t\t\tconst mod = await import(linkerSpecifier);\n\t\t\t\t\tlinkerPlugin = mod.createEs2015LinkerPlugin({\n\t\t\t\t\t\tfileSystem: {\n\t\t\t\t\t\t\tdirname,\n\t\t\t\t\t\t\texists: existsSync,\n\t\t\t\t\t\t\treadFile: readFileSync,\n\t\t\t\t\t\t\trelative,\n\t\t\t\t\t\t\tresolve\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlinkerJitMode,\n\t\t\t\t\t\tlogger: {\n\t\t\t\t\t\t\terror: console.error,\n\t\t\t\t\t\t\tlevel: 1,\n\t\t\t\t\t\t\twarn: console.warn,\n\t\t\t\t\t\t\tdebug: () => { /* noop */ },\n\t\t\t\t\t\t\tinfo: () => { /* noop */ }\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst transform = babelTransform;\n\t\t\t\tif (!transform) {\n\t\t\t\t\treturn { contents: source, loader: 'js' };\n\t\t\t\t}\n\n\t\t\t\tconst result = transform(source, {\n\t\t\t\t\tcompact: false,\n\t\t\t\t\tfilename: args.path,\n\t\t\t\t\tfilenameRelative: args.path,\n\t\t\t\t\tplugins: [linkerPlugin],\n\t\t\t\t\tsourceMaps: false\n\t\t\t\t});\n\n\t\t\t\tconst linked = result?.code ?? source;\n\n\t\t\t\tmkdirSync(cacheDir, { recursive: true });\n\t\t\t\twriteFileSync(cachePath, linked, 'utf-8');\n\n\t\t\t\treturn { contents: linked, loader: 'js' };\n\t\t\t}\n\t\t);\n\t}\n});\n\n/** Default AOT-mode plugin instance — keep for callers that don't need\n * to choose. Production AOT builds and any callsite that AOT-compiles\n * user components alongside vendor should use this. */\nexport const angularLinkerPlugin: BunPlugin = createAngularLinkerPlugin(false);\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "6E97B8F47726EBE564756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "6CE3FECB3EBBA3EB64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -67,6 +67,8 @@ var generateManifest = (outputs, buildPath) => outputs.reduce((manifest, artifac
67
67
  const ext = extname(fileWithHash);
68
68
  const islandIndex = segments.findIndex((seg) => seg === "islands");
69
69
  if (ext === ".css") {
70
+ if (segments.includes("server"))
71
+ return manifest;
70
72
  const cssKey = getCssKey(pascalName, segments);
71
73
  if (manifest[cssKey] && manifest[cssKey] !== `/${relative}`)
72
74
  logWarn(`Duplicate manifest key "${cssKey}" \u2014 "${manifest[cssKey]}" will be overwritten by "/${relative}". Use unique page names across frameworks.`);
@@ -96,5 +98,5 @@ var generateManifest = (outputs, buildPath) => outputs.reduce((manifest, artifac
96
98
 
97
99
  export { generateManifest };
98
100
 
99
- //# debugId=CD6D21C2F87146D264756E2164756E21
100
- //# sourceMappingURL=chunk-1e9vsfyh.js.map
101
+ //# debugId=0A117CCD4566069A64756E2164756E21
102
+ //# sourceMappingURL=chunk-mtxzyxpg.js.map
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/build/generateManifest.ts"],
4
4
  "sourcesContent": [
5
- "import { extname } from 'node:path';\nimport type { BuildArtifact } from 'bun';\nimport { UNFOUND_INDEX } from '../constants';\nimport { getIslandManifestKey } from '../core/islandManifest';\nimport { logWarn } from '../utils/logger';\nimport { normalizePath } from '../utils/normalizePath';\nimport { toPascal } from '../utils/stringModifiers';\n\nconst getManifestKey = (\n\tfolder: string | undefined,\n\tpascalName: string,\n\tisClientComponent: boolean,\n\tisReact: boolean,\n\tisVue: boolean,\n\tisSvelte: boolean,\n\tisAngular: boolean\n) => {\n\tif (folder === 'indexes') return `${pascalName}Index`;\n\tif (isClientComponent) return `${pascalName}Client`;\n\tif (folder !== 'pages') return pascalName;\n\n\t// Only add \"Page\" suffix for React pages\n\t// Vue and Svelte pages use their base PascalCase name\n\tif (isReact) return `${pascalName}Page`;\n\tif (isVue || isSvelte || isAngular) return pascalName;\n\n\t// Default behavior for other frameworks\n\treturn `${pascalName}Page`;\n};\n\nconst getCssKey = (pascalName: string, segments: string[]) => {\n\tconst isFromVue = segments.some((seg) => seg === 'vue');\n\tif (isFromVue && segments.includes('css'))\n\t\treturn `${pascalName}CompiledCSS`;\n\n\tconst isFromReact = segments.some((seg) => seg === 'react');\n\tconst isFromSvelte = segments.some((seg) => seg === 'svelte');\n\tconst isFromAngular = segments.some((seg) => seg === 'angular');\n\tif (isFromReact || isFromVue || isFromSvelte || isFromAngular)\n\t\treturn `${pascalName}BundledCSS`;\n\n\treturn `${pascalName}CSS`;\n};\n\nconst getArtifactBaseName = (fileName: string, hash: string | null) => {\n\tconst ext = extname(fileName);\n\tconst stem = ext ? fileName.slice(0, -ext.length) : fileName;\n\tif (!hash) return stem;\n\n\tconst hashSuffix = `.${hash}`;\n\tif (stem.endsWith(hashSuffix)) return stem.slice(0, -hashSuffix.length);\n\n\treturn stem;\n};\n\nexport const generateManifest = (outputs: BuildArtifact[], buildPath: string) =>\n\toutputs.reduce<Record<string, string>>((manifest, artifact) => {\n\t\t// Normalize both paths for consistent comparison across platforms\n\t\tconst normalizedArtifactPath = normalizePath(artifact.path);\n\t\tconst normalizedBuildPath = normalizePath(buildPath);\n\n\t\tlet relative = normalizedArtifactPath.startsWith(normalizedBuildPath)\n\t\t\t? normalizedArtifactPath.slice(normalizedBuildPath.length)\n\t\t\t: normalizedArtifactPath;\n\t\trelative = relative.replace(/^\\/+/, '');\n\n\t\tconst segments = relative.split('/');\n\t\tconst fileWithHash = segments.pop();\n\t\tif (!fileWithHash) return manifest;\n\n\t\tconst baseName = getArtifactBaseName(fileWithHash, artifact.hash);\n\t\tif (!baseName) return manifest;\n\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst ext = extname(fileWithHash);\n\t\tconst islandIndex = segments.findIndex((seg) => seg === 'islands');\n\n\t\tif (ext === '.css') {\n\t\t\t// Distinguish CSS from different sources to avoid key collisions.\n\t\t\t// CSS co-emitted from a JS bundle (e.g. CSS Modules) lives under a\n\t\t\t// framework path like react/generated/indexes/, while global\n\t\t\t// stylesheets from the styles directory land directly in indexes/.\n\t\t\t// Vue compiled SFC styles live in assets/css/.\n\t\t\tconst cssKey = getCssKey(pascalName, segments);\n\n\t\t\tif (manifest[cssKey] && manifest[cssKey] !== `/${relative}`)\n\t\t\t\tlogWarn(\n\t\t\t\t\t`Duplicate manifest key \"${cssKey}\" — \"${manifest[cssKey]}\" will be overwritten by \"/${relative}\". Use unique page names across frameworks.`\n\t\t\t\t);\n\n\t\t\tmanifest[cssKey] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst frameworkSegment =\n\t\t\tislandIndex > UNFOUND_INDEX ? segments[islandIndex + 1] : undefined;\n\t\tif (\n\t\t\tframeworkSegment === 'react' ||\n\t\t\tframeworkSegment === 'svelte' ||\n\t\t\tframeworkSegment === 'vue' ||\n\t\t\tframeworkSegment === 'angular'\n\t\t) {\n\t\t\tconst manifestKey = getIslandManifestKey(\n\t\t\t\tframeworkSegment,\n\t\t\t\tpascalName\n\t\t\t);\n\t\t\tmanifest[manifestKey] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst idx = segments.findIndex(\n\t\t\t(seg) => seg === 'indexes' || seg === 'pages' || seg === 'client'\n\t\t);\n\t\tconst folder = idx > UNFOUND_INDEX ? segments[idx] : segments[0];\n\n\t\t// Detect framework from path segments\n\t\tconst isReact = segments.some((seg) => seg === 'react');\n\t\tconst isVue = segments.some((seg) => seg === 'vue');\n\t\tconst isSvelte = segments.some((seg) => seg === 'svelte');\n\t\tconst isAngular = segments.some((seg) => seg === 'angular');\n\n\t\t// Check if this is a client component (for official HMR)\n\t\tconst isClientComponent = segments.includes('client');\n\n\t\tconst manifestKey = getManifestKey(\n\t\t\tfolder,\n\t\t\tpascalName,\n\t\t\tisClientComponent,\n\t\t\tisReact,\n\t\t\tisVue,\n\t\t\tisSvelte,\n\t\t\tisAngular\n\t\t);\n\t\tif (manifest[manifestKey] && manifest[manifestKey] !== `/${relative}`) {\n\t\t\tlogWarn(\n\t\t\t\t`Duplicate manifest key \"${manifestKey}\" — \"${manifest[manifestKey]}\" will be overwritten by \"/${relative}\". Use unique page names across frameworks.`\n\t\t\t);\n\t\t}\n\t\tmanifest[manifestKey] = `/${relative}`;\n\n\t\treturn manifest;\n\t}, {});\n"
5
+ "import { extname } from 'node:path';\nimport type { BuildArtifact } from 'bun';\nimport { UNFOUND_INDEX } from '../constants';\nimport { getIslandManifestKey } from '../core/islandManifest';\nimport { logWarn } from '../utils/logger';\nimport { normalizePath } from '../utils/normalizePath';\nimport { toPascal } from '../utils/stringModifiers';\n\nconst getManifestKey = (\n\tfolder: string | undefined,\n\tpascalName: string,\n\tisClientComponent: boolean,\n\tisReact: boolean,\n\tisVue: boolean,\n\tisSvelte: boolean,\n\tisAngular: boolean\n) => {\n\tif (folder === 'indexes') return `${pascalName}Index`;\n\tif (isClientComponent) return `${pascalName}Client`;\n\tif (folder !== 'pages') return pascalName;\n\n\t// Only add \"Page\" suffix for React pages\n\t// Vue and Svelte pages use their base PascalCase name\n\tif (isReact) return `${pascalName}Page`;\n\tif (isVue || isSvelte || isAngular) return pascalName;\n\n\t// Default behavior for other frameworks\n\treturn `${pascalName}Page`;\n};\n\nconst getCssKey = (pascalName: string, segments: string[]) => {\n\tconst isFromVue = segments.some((seg) => seg === 'vue');\n\tif (isFromVue && segments.includes('css'))\n\t\treturn `${pascalName}CompiledCSS`;\n\n\tconst isFromReact = segments.some((seg) => seg === 'react');\n\tconst isFromSvelte = segments.some((seg) => seg === 'svelte');\n\tconst isFromAngular = segments.some((seg) => seg === 'angular');\n\tif (isFromReact || isFromVue || isFromSvelte || isFromAngular)\n\t\treturn `${pascalName}BundledCSS`;\n\n\treturn `${pascalName}CSS`;\n};\n\nconst getArtifactBaseName = (fileName: string, hash: string | null) => {\n\tconst ext = extname(fileName);\n\tconst stem = ext ? fileName.slice(0, -ext.length) : fileName;\n\tif (!hash) return stem;\n\n\tconst hashSuffix = `.${hash}`;\n\tif (stem.endsWith(hashSuffix)) return stem.slice(0, -hashSuffix.length);\n\n\treturn stem;\n};\n\nexport const generateManifest = (outputs: BuildArtifact[], buildPath: string) =>\n\toutputs.reduce<Record<string, string>>((manifest, artifact) => {\n\t\t// Normalize both paths for consistent comparison across platforms\n\t\tconst normalizedArtifactPath = normalizePath(artifact.path);\n\t\tconst normalizedBuildPath = normalizePath(buildPath);\n\n\t\tlet relative = normalizedArtifactPath.startsWith(normalizedBuildPath)\n\t\t\t? normalizedArtifactPath.slice(normalizedBuildPath.length)\n\t\t\t: normalizedArtifactPath;\n\t\trelative = relative.replace(/^\\/+/, '');\n\n\t\tconst segments = relative.split('/');\n\t\tconst fileWithHash = segments.pop();\n\t\tif (!fileWithHash) return manifest;\n\n\t\tconst baseName = getArtifactBaseName(fileWithHash, artifact.hash);\n\t\tif (!baseName) return manifest;\n\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst ext = extname(fileWithHash);\n\t\tconst islandIndex = segments.findIndex((seg) => seg === 'islands');\n\n\t\tif (ext === '.css') {\n\t\t\t// Server bundles auto-emit a sibling .css for any CSS imported by\n\t\t\t// the SSR entry (Vue scoped styles, etc.). It's never linked from\n\t\t\t// HTML — the indexes-pass CSS is — so skip it to avoid clobbering\n\t\t\t// the same `${Page}BundledCSS` key.\n\t\t\tif (segments.includes('server')) return manifest;\n\n\t\t\t// Distinguish CSS from different sources to avoid key collisions.\n\t\t\t// CSS co-emitted from a JS bundle (e.g. CSS Modules) lives under a\n\t\t\t// framework path like react/generated/indexes/, while global\n\t\t\t// stylesheets from the styles directory land directly in indexes/.\n\t\t\t// Vue compiled SFC styles live in assets/css/.\n\t\t\tconst cssKey = getCssKey(pascalName, segments);\n\n\t\t\tif (manifest[cssKey] && manifest[cssKey] !== `/${relative}`)\n\t\t\t\tlogWarn(\n\t\t\t\t\t`Duplicate manifest key \"${cssKey}\" — \"${manifest[cssKey]}\" will be overwritten by \"/${relative}\". Use unique page names across frameworks.`\n\t\t\t\t);\n\n\t\t\tmanifest[cssKey] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst frameworkSegment =\n\t\t\tislandIndex > UNFOUND_INDEX ? segments[islandIndex + 1] : undefined;\n\t\tif (\n\t\t\tframeworkSegment === 'react' ||\n\t\t\tframeworkSegment === 'svelte' ||\n\t\t\tframeworkSegment === 'vue' ||\n\t\t\tframeworkSegment === 'angular'\n\t\t) {\n\t\t\tconst manifestKey = getIslandManifestKey(\n\t\t\t\tframeworkSegment,\n\t\t\t\tpascalName\n\t\t\t);\n\t\t\tmanifest[manifestKey] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst idx = segments.findIndex(\n\t\t\t(seg) => seg === 'indexes' || seg === 'pages' || seg === 'client'\n\t\t);\n\t\tconst folder = idx > UNFOUND_INDEX ? segments[idx] : segments[0];\n\n\t\t// Detect framework from path segments\n\t\tconst isReact = segments.some((seg) => seg === 'react');\n\t\tconst isVue = segments.some((seg) => seg === 'vue');\n\t\tconst isSvelte = segments.some((seg) => seg === 'svelte');\n\t\tconst isAngular = segments.some((seg) => seg === 'angular');\n\n\t\t// Check if this is a client component (for official HMR)\n\t\tconst isClientComponent = segments.includes('client');\n\n\t\tconst manifestKey = getManifestKey(\n\t\t\tfolder,\n\t\t\tpascalName,\n\t\t\tisClientComponent,\n\t\t\tisReact,\n\t\t\tisVue,\n\t\t\tisSvelte,\n\t\t\tisAngular\n\t\t);\n\t\tif (manifest[manifestKey] && manifest[manifestKey] !== `/${relative}`) {\n\t\t\tlogWarn(\n\t\t\t\t`Duplicate manifest key \"${manifestKey}\" — \"${manifest[manifestKey]}\" will be overwritten by \"/${relative}\". Use unique page names across frameworks.`\n\t\t\t);\n\t\t}\n\t\tmanifest[manifestKey] = `/${relative}`;\n\n\t\treturn manifest;\n\t}, {});\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "CD6D21C2F87146D264756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "0A117CCD4566069A64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -3,10 +3,10 @@ import {
3
3
  getAngularIslandSelector,
4
4
  mountAngularIsland,
5
5
  renderAngularIslandToHtml
6
- } from "./chunk-1x82dcw0.js";
7
- import"./chunk-jmfv960b.js";
8
- import"./chunk-aaa985m2.js";
9
- import"./chunk-kvq01j35.js";
6
+ } from "./chunk-ccz4x8vr.js";
7
+ import"./chunk-hf5fjykx.js";
8
+ import"./chunk-r8dzkm4s.js";
9
+ import"./chunk-0r32762k.js";
10
10
  import"./chunk-p5504p14.js";
11
11
  import"./chunk-25v9t56f.js";
12
12
  import"./chunk-bmgqm774.js";
@@ -17,4 +17,4 @@ export {
17
17
  };
18
18
 
19
19
  //# debugId=C1AFCC34B998790A64756E2164756E21
20
- //# sourceMappingURL=chunk-cs95jp8a.js.map
20
+ //# sourceMappingURL=chunk-pevt15h0.js.map
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-gf0ygptk.js";
20
20
  import {
21
21
  renderIslandMarkup
22
- } from "./chunk-azqk45e4.js";
22
+ } from "./chunk-z6c8qcmw.js";
23
23
  import {
24
24
  getIslandBuildReference
25
25
  } from "./chunk-8kcfffry.js";
@@ -669,4 +669,4 @@ var setCurrentPageIslandMetadata = (metadata) => {
669
669
  export { isTailwindCandidate, compileTailwind, compileTailwindConfig, collectIslandFrameworkSources, generateIslandEntryPoints, loadIslandRegistryBuildInfo, extractStaticStreamingTags, transformCurrentStaticPageHtml, transformStaticPagesWithIslands, getPagesUsingIslandSource, loadPageIslandMetadata, setCurrentPageIslandMetadata, logStartupTimingBlock };
670
670
 
671
671
  //# debugId=EA2793B90D7FF16C64756E2164756E21
672
- //# sourceMappingURL=chunk-8xf58ka4.js.map
672
+ //# sourceMappingURL=chunk-r0w678ve.js.map
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  resolveAngularPackageDir
4
- } from "./chunk-kvq01j35.js";
4
+ } from "./chunk-0r32762k.js";
5
5
  import {
6
6
  __require
7
7
  } from "./chunk-bmgqm774.js";
@@ -191,4 +191,4 @@ var getAndClearClientScripts = (requestId) => {
191
191
  export { patchAngularInjectorSingleton, getSsrContextId, registerClientScript, setSsrContextGetter, clearAllClientScripts, generateClientScriptCode, getAndClearClientScripts };
192
192
 
193
193
  //# debugId=7DE0E2AE7CE02C0664756E2164756E21
194
- //# sourceMappingURL=chunk-aaa985m2.js.map
194
+ //# sourceMappingURL=chunk-r8dzkm4s.js.map
@@ -1,25 +1,29 @@
1
1
  // @bun
2
2
  import {
3
+ getAngularServerVendorPaths,
3
4
  getAngularVendorPaths,
4
5
  getDevVendorPaths,
5
6
  getSvelteVendorPaths,
6
7
  getVueVendorPaths,
8
+ setAngularServerVendorPaths,
7
9
  setAngularVendorPaths,
8
10
  setDevVendorPaths,
9
11
  setSvelteVendorPaths,
10
12
  setVueVendorPaths
11
- } from "./chunk-t81a331y.js";
13
+ } from "./chunk-y84qnsd3.js";
12
14
  import"./chunk-bmgqm774.js";
13
15
  export {
14
16
  setVueVendorPaths,
15
17
  setSvelteVendorPaths,
16
18
  setDevVendorPaths,
17
19
  setAngularVendorPaths,
20
+ setAngularServerVendorPaths,
18
21
  getVueVendorPaths,
19
22
  getSvelteVendorPaths,
20
23
  getDevVendorPaths,
21
- getAngularVendorPaths
24
+ getAngularVendorPaths,
25
+ getAngularServerVendorPaths
22
26
  };
23
27
 
24
- //# debugId=0F246913487541FE64756E2164756E21
25
- //# sourceMappingURL=chunk-77cqkarb.js.map
28
+ //# debugId=12057FC8D31DCC3F64756E2164756E21
29
+ //# sourceMappingURL=chunk-vjhxm8n2.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "0F246913487541FE64756E2164756E21",
7
+ "debugId": "12057FC8D31DCC3F64756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -10,6 +10,11 @@ var getAngularVendorPaths = () => angularVendorPaths;
10
10
  var setAngularVendorPaths = (paths) => {
11
11
  angularVendorPaths = paths;
12
12
  };
13
+ var angularServerVendorPaths = null;
14
+ var getAngularServerVendorPaths = () => angularServerVendorPaths;
15
+ var setAngularServerVendorPaths = (paths) => {
16
+ angularServerVendorPaths = paths;
17
+ };
13
18
  var svelteVendorPaths = null;
14
19
  var getSvelteVendorPaths = () => svelteVendorPaths;
15
20
  var setSvelteVendorPaths = (paths) => {
@@ -21,7 +26,7 @@ var setVueVendorPaths = (paths) => {
21
26
  vueVendorPaths = paths;
22
27
  };
23
28
 
24
- export { getDevVendorPaths, setDevVendorPaths, getAngularVendorPaths, setAngularVendorPaths, getSvelteVendorPaths, setSvelteVendorPaths, getVueVendorPaths, setVueVendorPaths };
29
+ export { getDevVendorPaths, setDevVendorPaths, getAngularVendorPaths, setAngularVendorPaths, getAngularServerVendorPaths, setAngularServerVendorPaths, getSvelteVendorPaths, setSvelteVendorPaths, getVueVendorPaths, setVueVendorPaths };
25
30
 
26
- //# debugId=B8D7CD29E8493CCD64756E2164756E21
27
- //# sourceMappingURL=chunk-t81a331y.js.map
31
+ //# debugId=BAC2D5506ADAF01564756E2164756E21
32
+ //# sourceMappingURL=chunk-y84qnsd3.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/devVendorPaths.ts"],
4
+ "sourcesContent": [
5
+ "/** Module-level dev vendor paths state.\n * Set by devBuild() before the initial build so that build() can\n * externalize React and rewrite imports to stable vendor files.\n * Production builds never call setDevVendorPaths, so the getter\n * returns null and build() bundles React normally. */\n\nlet devVendorPaths: Record<string, string> | null = null;\n\nexport const getDevVendorPaths = () => devVendorPaths;\nexport const setDevVendorPaths = (paths: Record<string, string>) => {\n\tdevVendorPaths = paths;\n};\n\n/** Angular vendor paths — same pattern as React. */\nlet angularVendorPaths: Record<string, string> | null = null;\n\nexport const getAngularVendorPaths = () => angularVendorPaths;\nexport const setAngularVendorPaths = (paths: Record<string, string>) => {\n\tangularVendorPaths = paths;\n};\n\n/** Angular *server* vendor paths — absolute filesystem paths to the\n * Bun-target linked vendor files. Used by `rewriteImports` on server\n * bundles and by `getAngularDeps` for runtime resolution. */\nlet angularServerVendorPaths: Record<string, string> | null = null;\n\nexport const getAngularServerVendorPaths = () => angularServerVendorPaths;\nexport const setAngularServerVendorPaths = (\n\tpaths: Record<string, string>\n) => {\n\tangularServerVendorPaths = paths;\n};\n\n/** Svelte vendor paths — same pattern as React. */\nlet svelteVendorPaths: Record<string, string> | null = null;\n\nexport const getSvelteVendorPaths = () => svelteVendorPaths;\nexport const setSvelteVendorPaths = (paths: Record<string, string>) => {\n\tsvelteVendorPaths = paths;\n};\n\n/** Vue vendor paths — same pattern as React. */\nlet vueVendorPaths: Record<string, string> | null = null;\n\nexport const getVueVendorPaths = () => vueVendorPaths;\nexport const setVueVendorPaths = (paths: Record<string, string>) => {\n\tvueVendorPaths = paths;\n};\n"
6
+ ],
7
+ "mappings": ";;AAMA,IAAI,iBAAgD;AAE7C,IAAM,oBAAoB,MAAM;AAChC,IAAM,oBAAoB,CAAC,UAAkC;AAAA,EACnE,iBAAiB;AAAA;AAIlB,IAAI,qBAAoD;AAEjD,IAAM,wBAAwB,MAAM;AACpC,IAAM,wBAAwB,CAAC,UAAkC;AAAA,EACvE,qBAAqB;AAAA;AAMtB,IAAI,2BAA0D;AAEvD,IAAM,8BAA8B,MAAM;AAC1C,IAAM,8BAA8B,CAC1C,UACI;AAAA,EACJ,2BAA2B;AAAA;AAI5B,IAAI,oBAAmD;AAEhD,IAAM,uBAAuB,MAAM;AACnC,IAAM,uBAAuB,CAAC,UAAkC;AAAA,EACtE,oBAAoB;AAAA;AAIrB,IAAI,iBAAgD;AAE7C,IAAM,oBAAoB,MAAM;AAChC,IAAM,oBAAoB,CAAC,UAAkC;AAAA,EACnE,iBAAiB;AAAA;",
8
+ "debugId": "BAC2D5506ADAF01564756E2164756E21",
9
+ "names": []
10
+ }
@@ -16,7 +16,7 @@ import {
16
16
 
17
17
  // src/core/islandSsr.ts
18
18
  var renderAngularIslandToHtmlInternal = async (component, props, islandId) => {
19
- const { renderAngularIslandToHtml } = await import("./chunk-cs95jp8a.js");
19
+ const { renderAngularIslandToHtml } = await import("./chunk-pevt15h0.js");
20
20
  return renderAngularIslandToHtml(component, props, islandId);
21
21
  };
22
22
  var renderAngularIslandToHtml = renderAngularIslandToHtmlInternal;
@@ -181,4 +181,4 @@ var renderIslandResult = async (registry, props) => {
181
181
  export { renderIslandMarkup, renderIslandResult };
182
182
 
183
183
  //# debugId=422A05E95D6E1A7B64756E2164756E21
184
- //# sourceMappingURL=chunk-azqk45e4.js.map
184
+ //# sourceMappingURL=chunk-z6c8qcmw.js.map
@@ -1,13 +1,13 @@
1
1
  // @bun
2
2
  import {
3
3
  mountAngularIsland
4
- } from "../chunk-1x82dcw0.js";
4
+ } from "../chunk-ccz4x8vr.js";
5
5
  import {
6
6
  initializeIslandMarkupSnapshot
7
7
  } from "../chunk-fak944et.js";
8
- import"../chunk-jmfv960b.js";
9
- import"../chunk-aaa985m2.js";
10
- import"../chunk-kvq01j35.js";
8
+ import"../chunk-hf5fjykx.js";
9
+ import"../chunk-r8dzkm4s.js";
10
+ import"../chunk-0r32762k.js";
11
11
  import {
12
12
  getStreamSwapRuntimeScript
13
13
  } from "../chunk-s6defjk2.js";
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  logStartupTimingBlock,
15
15
  setCurrentPageIslandMetadata,
16
16
  transformCurrentStaticPageHtml
17
- } from "./chunk-8xf58ka4.js";
17
+ } from "./chunk-r0w678ve.js";
18
18
  import {
19
19
  disposeTailwindCompiler,
20
20
  incrementalTailwindBuild,
@@ -66,14 +66,14 @@ import {
66
66
  getSsrContextId,
67
67
  registerClientScript,
68
68
  setSsrContextGetter
69
- } from "./chunk-aaa985m2.js";
70
- import"./chunk-kvq01j35.js";
69
+ } from "./chunk-r8dzkm4s.js";
70
+ import"./chunk-0r32762k.js";
71
71
  import"./chunk-s6defjk2.js";
72
72
  import"./chunk-p5504p14.js";
73
73
  import {
74
74
  renderIslandMarkup,
75
75
  renderIslandResult
76
- } from "./chunk-azqk45e4.js";
76
+ } from "./chunk-z6c8qcmw.js";
77
77
  import"./chunk-9ve9jq72.js";
78
78
  import"./chunk-7fw6x3js.js";
79
79
  import"./chunk-mbazhahf.js";
@@ -452,7 +452,7 @@ var prepareDev = async (config, buildDir) => {
452
452
  patchElysiaRouteRegistrationCallsites();
453
453
  recordStep("patch route registration", stepStartedAt);
454
454
  stepStartedAt = performance.now();
455
- const { devBuild } = await import("./chunk-mpk61s31.js");
455
+ const { devBuild } = await import("./chunk-7x4hne4h.js");
456
456
  const result = await devBuild(config);
457
457
  recordStep("devBuild", stepStartedAt);
458
458
  stepStartedAt = performance.now();
@@ -464,7 +464,7 @@ var prepareDev = async (config, buildDir) => {
464
464
  getAngularVendorPaths,
465
465
  getSvelteVendorPaths,
466
466
  getVueVendorPaths
467
- } = await import("./chunk-77cqkarb.js");
467
+ } = await import("./chunk-vjhxm8n2.js");
468
468
  recordStep("load dev runtime modules", stepStartedAt);
469
469
  stepStartedAt = performance.now();
470
470
  const depVendorPaths = globalThis.__depVendorPaths ?? {};
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  renderIslandMarkup
4
- } from "../chunk-azqk45e4.js";
4
+ } from "../chunk-z6c8qcmw.js";
5
5
  import"../chunk-9ve9jq72.js";
6
6
  import"../chunk-7fw6x3js.js";
7
7
  import"../chunk-mbazhahf.js";
@@ -22,7 +22,7 @@ import"../chunk-s6defjk2.js";
22
22
  import"../chunk-p5504p14.js";
23
23
  import {
24
24
  renderIslandResult
25
- } from "../chunk-azqk45e4.js";
25
+ } from "../chunk-z6c8qcmw.js";
26
26
  import"../chunk-9ve9jq72.js";
27
27
  import"../chunk-7fw6x3js.js";
28
28
  import"../chunk-mbazhahf.js";
@@ -7,3 +7,13 @@
7
7
  */
8
8
  export declare const resolveAngularPackageDir: (specifier: string) => string | null;
9
9
  export declare const resolveAngularPackage: (specifier: string) => string;
10
+ /** Prefer the linked Bun-target vendor file built by
11
+ * `buildAngularServerVendor`. The file is at
12
+ * `<ABSOLUTE_BUILD_DIR>/angular/vendor/server/<safe>.js`, which is what every
13
+ * server bundle's `@angular/*` imports get rewritten to point at. Sharing
14
+ * this path keeps SSR's class identity unified — the dual-package hazard
15
+ * that produces NG0201 only appears when the runtime imports a *different*
16
+ * copy from the bundles. Falls back to `resolveAngularPackage` (node_modules)
17
+ * when no vendor file is available — e.g. running tests outside an
18
+ * absolutejs build, or before the vendor pass completes. */
19
+ export declare const resolveAngularRuntimePath: (specifier: string) => string;
@@ -19,3 +19,17 @@ export declare const computeAngularVendorPaths: (specifiers?: string[]) => Recor
19
19
  * angular specs in its rewrite map (otherwise transitively-discovered subpaths
20
20
  * like `@angular/core/rxjs-interop` end up as bare specifiers in the output). */
21
21
  export declare const computeAngularVendorPathsAsync: (directories?: string[]) => Promise<Record<string, string>>;
22
+ /** Server-side counterpart to `buildAngularVendor`. Outputs fully-linked
23
+ * Bun-target ESM bundles for every @angular/* package the project uses,
24
+ * *plus* `@angular/platform-server` and `@angular/ssr` (excluded from the
25
+ * browser vendor). The server bundle and `getAngularDeps()` import from
26
+ * these paths so SSR shares one Angular runtime instance with the page
27
+ * bundles — eliminates the dual-package hazard that produces NG0201.
28
+ *
29
+ * After this build, `@angular/compiler` is no longer required at runtime
30
+ * for AOT-mode builds: every partial `ɵɵngDeclare*` has been linked into
31
+ * final ɵdir/ɵcmp/ɵfac definitions in the vendor output. */
32
+ export declare const buildAngularServerVendor: (buildDir: string, directories?: string[], linkerJitMode?: boolean) => Promise<string[]>;
33
+ /** Absolute filesystem paths to server vendor files, for `rewriteImports`
34
+ * on server-side bundles and for runtime resolution in `getAngularDeps`. */
35
+ export declare const computeAngularServerVendorPaths: (buildDir: string, specifiers: string[]) => Record<string, string>;
@@ -7,6 +7,8 @@ export declare const getDevVendorPaths: () => Record<string, string> | null;
7
7
  export declare const setDevVendorPaths: (paths: Record<string, string>) => void;
8
8
  export declare const getAngularVendorPaths: () => Record<string, string> | null;
9
9
  export declare const setAngularVendorPaths: (paths: Record<string, string>) => void;
10
+ export declare const getAngularServerVendorPaths: () => Record<string, string> | null;
11
+ export declare const setAngularServerVendorPaths: (paths: Record<string, string>) => void;
10
12
  export declare const getSvelteVendorPaths: () => Record<string, string> | null;
11
13
  export declare const setSvelteVendorPaths: (paths: Record<string, string>) => void;
12
14
  export declare const getVueVendorPaths: () => Record<string, string> | null;