@absolutejs/absolute 0.19.0-beta.806 → 0.19.0-beta.807
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.
- package/dist/angular/index.js +4 -4
- package/dist/angular/server.js +4 -4
- package/dist/build.js +4 -4
- package/dist/{chunk-bjdg6cw6.js → chunk-1rfh7hw9.js} +3 -4
- package/dist/chunk-1rfh7hw9.js.map +11 -0
- package/dist/{chunk-ya6g8djq.js → chunk-1x4fxm57.js} +5 -5
- package/dist/{chunk-qx83krhs.js → chunk-3rea1gam.js} +13 -15
- package/dist/{chunk-qx83krhs.js.map → chunk-3rea1gam.js.map} +4 -4
- package/dist/{chunk-nq65m0kj.js → chunk-629x0yh4.js} +4 -4
- package/dist/{chunk-21ht3swm.js → chunk-9j59emg3.js} +2 -2
- package/dist/{chunk-5s1km9v3.js → chunk-bgb8k1qs.js} +2 -2
- package/dist/{chunk-kp7gkhcr.js → chunk-cm0g4q6w.js} +2 -2
- package/dist/{chunk-kn1jn1he.js → chunk-jpkjdgsk.js} +3 -3
- package/dist/{chunk-yc263ckx.js → chunk-kwgh8rmg.js} +6 -7
- package/dist/chunk-kwgh8rmg.js.map +14 -0
- package/dist/{chunk-dxcf95sb.js → chunk-m97ze5hz.js} +3 -3
- package/dist/{chunk-dxcf95sb.js.map → chunk-m97ze5hz.js.map} +1 -1
- package/dist/{chunk-7syt9sz1.js → chunk-p5zgj77m.js} +2 -2
- package/dist/{chunk-nrbnqx5s.js → chunk-r6e8pytx.js} +2 -2
- package/dist/client/index.js +3 -3
- package/dist/index.js +3 -3
- package/dist/islands/index.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/svelte/index.js +1 -1
- package/dist/vue/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-bjdg6cw6.js.map +0 -11
- package/dist/chunk-yc263ckx.js.map +0 -14
- /package/dist/{chunk-ya6g8djq.js.map → chunk-1x4fxm57.js.map} +0 -0
- /package/dist/{chunk-nq65m0kj.js.map → chunk-629x0yh4.js.map} +0 -0
- /package/dist/{chunk-21ht3swm.js.map → chunk-9j59emg3.js.map} +0 -0
- /package/dist/{chunk-5s1km9v3.js.map → chunk-bgb8k1qs.js.map} +0 -0
- /package/dist/{chunk-kp7gkhcr.js.map → chunk-cm0g4q6w.js.map} +0 -0
- /package/dist/{chunk-kn1jn1he.js.map → chunk-jpkjdgsk.js.map} +0 -0
- /package/dist/{chunk-7syt9sz1.js.map → chunk-p5zgj77m.js.map} +0 -0
- /package/dist/{chunk-nrbnqx5s.js.map → chunk-r6e8pytx.js.map} +0 -0
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
getAngularIslandSelector,
|
|
4
4
|
mountAngularIsland,
|
|
5
5
|
renderAngularIslandToHtml
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import"./chunk-
|
|
8
|
-
import"./chunk-
|
|
6
|
+
} from "./chunk-p5zgj77m.js";
|
|
7
|
+
import"./chunk-jpkjdgsk.js";
|
|
8
|
+
import"./chunk-m97ze5hz.js";
|
|
9
9
|
import"./chunk-pnscgw95.js";
|
|
10
10
|
import"./chunk-p5504p14.js";
|
|
11
11
|
import"./chunk-25v9t56f.js";
|
|
@@ -17,4 +17,4 @@ export {
|
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
//# debugId=C1AFCC34B998790A64756E2164756E21
|
|
20
|
-
//# sourceMappingURL=chunk-
|
|
20
|
+
//# sourceMappingURL=chunk-629x0yh4.js.map
|
|
@@ -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-
|
|
19
|
+
const { renderAngularIslandToHtml } = await import("./chunk-629x0yh4.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-
|
|
184
|
+
//# sourceMappingURL=chunk-9j59emg3.js.map
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-gf0ygptk.js";
|
|
20
20
|
import {
|
|
21
21
|
renderIslandMarkup
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-9j59emg3.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-
|
|
672
|
+
//# sourceMappingURL=chunk-bgb8k1qs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
resolveAngularRuntimePath
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-m97ze5hz.js";
|
|
5
5
|
import"./chunk-bmgqm774.js";
|
|
6
6
|
|
|
7
7
|
// src/angular/angularPatch.ts
|
|
@@ -146,4 +146,4 @@ export {
|
|
|
146
146
|
};
|
|
147
147
|
|
|
148
148
|
//# debugId=D59B1B9EA72E3DAF64756E2164756E21
|
|
149
|
-
//# sourceMappingURL=chunk-
|
|
149
|
+
//# sourceMappingURL=chunk-cm0g4q6w.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
resolveAngularRuntimePath
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-m97ze5hz.js";
|
|
5
5
|
import {
|
|
6
6
|
generateClientScriptCode,
|
|
7
7
|
getAndClearClientScripts
|
|
@@ -29,7 +29,7 @@ var loadAngularDeps = async () => {
|
|
|
29
29
|
if (true) {
|
|
30
30
|
await import(resolveAngularRuntimePath("@angular/compiler"));
|
|
31
31
|
}
|
|
32
|
-
const { applyPatches } = await import("./chunk-
|
|
32
|
+
const { applyPatches } = await import("./chunk-cm0g4q6w.js");
|
|
33
33
|
await applyPatches();
|
|
34
34
|
const [platformBrowser, platformServer, common, core] = await Promise.all([
|
|
35
35
|
import(resolveAngularRuntimePath("@angular/platform-browser")),
|
|
@@ -164,4 +164,4 @@ var withSuppressedAngularDevLogs = async (render) => {
|
|
|
164
164
|
export { getAngularDeps, cacheRouteData, getCachedRouteData, buildProviders, clearSelectorCache, discoverTokens, resolveSelector, injectSsrScripts, renderAngularApp, withSuppressedAngularDevLogs };
|
|
165
165
|
|
|
166
166
|
//# debugId=B7A848C26CC37E7664756E2164756E21
|
|
167
|
-
//# sourceMappingURL=chunk-
|
|
167
|
+
//# sourceMappingURL=chunk-jpkjdgsk.js.map
|
|
@@ -28,17 +28,16 @@ import {
|
|
|
28
28
|
injectSsrScripts,
|
|
29
29
|
renderAngularApp,
|
|
30
30
|
resolveSelector
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-jpkjdgsk.js";
|
|
32
32
|
import {
|
|
33
|
-
resolveAngularPackage,
|
|
34
33
|
resolveAngularRuntimePath
|
|
35
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-m97ze5hz.js";
|
|
36
35
|
import {
|
|
37
36
|
setSsrContextGetter
|
|
38
37
|
} from "./chunk-pnscgw95.js";
|
|
39
38
|
import {
|
|
40
39
|
renderIslandMarkup
|
|
41
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-9j59emg3.js";
|
|
42
41
|
import {
|
|
43
42
|
BASE_36_RADIX,
|
|
44
43
|
RANDOM_ID_END_INDEX
|
|
@@ -104,7 +103,7 @@ var buildRedirectEventHandler = (responseInit, routerModule) => {
|
|
|
104
103
|
var buildRouterRedirectProviders = async (deps, responseInit) => {
|
|
105
104
|
let routerModule;
|
|
106
105
|
try {
|
|
107
|
-
routerModule = await import(
|
|
106
|
+
routerModule = await import(resolveAngularRuntimePath("@angular/router"));
|
|
108
107
|
} catch {
|
|
109
108
|
return [];
|
|
110
109
|
}
|
|
@@ -423,5 +422,5 @@ var handleAngularPageRequest = async (input) => {
|
|
|
423
422
|
|
|
424
423
|
export { handleAngularPageRequest };
|
|
425
424
|
|
|
426
|
-
//# debugId=
|
|
427
|
-
//# sourceMappingURL=chunk-
|
|
425
|
+
//# debugId=90BA6F5F775B36CE64756E2164756E21
|
|
426
|
+
//# sourceMappingURL=chunk-kwgh8rmg.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/angular/pageHandler.ts", "../src/angular/animationProviders.ts", "../src/angular/routerRedirectProviders.ts", "../src/angular/lowerServerIslands.ts", "../src/angular/ssrSanitizer.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { AsyncLocalStorage } from 'node:async_hooks';\nimport { mkdir, symlink } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { basename, dirname, join, resolve } from 'node:path';\nimport type { EnvironmentProviders, Provider, Type } from '@angular/core';\nimport type {\n\tAngularPageDefinition,\n\tAngularPagePropsOf\n} from '../../types/angular';\nimport { BASE_36_RADIX, RANDOM_ID_END_INDEX } from '../constants';\nimport { injectIslandPageContext } from '../core/islandPageContext';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\nimport {\n\tderivePageName,\n\trenderConventionError\n} from '../utils/resolveConvention';\nimport { setSsrContextGetter } from '../utils/registerClientScript';\nimport { getAngularDeps } from './angularDeps';\nimport { buildServerAnimationProviders } from './animationProviders';\nimport { buildRouterRedirectProviders } from './routerRedirectProviders';\nimport { lowerAngularServerIslands } from './lowerServerIslands';\nimport { getCurrentRouteRegistrationCallsite } from '../core/devRouteRegistrationCallsite';\nimport { getSsrSanitizer, resetSsrSanitizer } from './ssrSanitizer';\nimport {\n\ttype StreamingSlotEnhancerOptions,\n\twithRegisteredStreamingSlots\n} from '../core/responseEnhancers';\nimport {\n\tcaptureStreamingSlotWarningCallsite,\n\trunWithStreamingSlotWarningScope\n} from '../core/streamingSlotWarningScope';\nimport { isSsrCacheDirty, markSsrCacheDirty } from '../core/ssrCache';\nimport {\n\tbuildProviders,\n\tcacheRouteData,\n\tclearSelectorCache,\n\tdiscoverTokens,\n\tinjectSsrScripts,\n\trenderAngularApp,\n\tresolveSelector\n} from './ssrRender';\nimport { resolveAngularRuntimePath } from './resolveAngularPackage';\n\nlet lastSelector = 'angular-page';\ntype AngularPageRenderOptions = StreamingSlotEnhancerOptions & {\n\tcollectStreamingSlots?: boolean;\n};\ntype IsAny<T> = 0 extends 1 & T ? true : false;\ntype HasNoRequiredAngularProps<Props> =\n\tIsAny<Props> extends true ? true : keyof Props extends never ? true : false;\ntype AngularPageHasOptionalProps<Page> = Page extends {\n\tpage: AngularPageDefinition<infer Props>;\n}\n\t? HasNoRequiredAngularProps<Props>\n\t: Page extends { default: AngularPageDefinition<infer Props> }\n\t\t? HasNoRequiredAngularProps<Props>\n\t\t: HasNoRequiredAngularProps<AngularPagePropsOf<Page>>;\nexport type AngularPageRequestInput<\n\tPage = { page: AngularPageDefinition<Record<never, never>> }\n> = AngularPageRenderOptions & {\n\theadTag?: `<head>${string}</head>`;\n\tindexPath: string;\n\tpagePath: string;\n\t/** The incoming request. When provided, its URL is forwarded to\n\t * Angular's `renderApplication`, so `LocationStrategy.path()` and\n\t * Angular Router both see the real URL instead of `/`. Without it,\n\t * Router-based pages can't match anything but the root route. */\n\trequest?: Request;\n\t/** Per-request context made available through Angular's REQUEST_CONTEXT token. */\n\trequestContext?: unknown;\n\t/** Mutable response init made available through Angular's RESPONSE_INIT token. */\n\tresponseInit?: ResponseInit;\n} & (AngularPageHasOptionalProps<Page> extends true\n\t\t? { props?: NoInfer<AngularPagePropsOf<Page>> }\n\t\t: { props: NoInfer<AngularPagePropsOf<Page>> });\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isAngularComponent = (value: unknown): value is Type<unknown> =>\n\ttypeof value === 'function';\n\nconst isAngularPageDefinition = (\n\tvalue: unknown\n): value is AngularPageDefinition<Record<string, unknown>> =>\n\tisRecord(value) && isAngularComponent(value.component);\n\nconst resolvePageComponent = (pageModule: Record<string, unknown>) => {\n\tconst page = Reflect.get(pageModule, 'page');\n\tif (isAngularPageDefinition(page)) {\n\t\treturn page.component;\n\t}\n\n\tconst defaultExport = pageModule.default;\n\tif (isAngularPageDefinition(defaultExport)) {\n\t\treturn defaultExport.component;\n\t}\n\n\tif (isAngularComponent(defaultExport)) {\n\t\treturn defaultExport;\n\t}\n\n\treturn Object.values(pageModule).find((value) => isAngularComponent(value));\n};\n\n// `@angular/compiler` is required at request time only in dev, where\n// `compileAngularFileJIT` produces partial declarations that need the\n// compiler facade to link. In production every partial has already been\n// linked at build time by the linker plugin, so the compiler isn't loaded\n// or shipped.\nlet compilerImportPromise: Promise<unknown> | null = null;\nconst ensureAngularCompiler = () => {\n\tif (process.env.NODE_ENV === 'production') return Promise.resolve();\n\tif (!compilerImportPromise) {\n\t\tcompilerImportPromise = import(\n\t\t\tresolveAngularRuntimePath('@angular/compiler')\n\t\t);\n\t}\n\n\treturn compilerImportPromise;\n};\n\nconst readAngularPageModule = (value: unknown) =>\n\tisRecord(value) ? value : null;\n\nconst resolveAngularSsrOutDir = () =>\n\tprocess.env.ABSOLUTE_ANGULAR_SSR_OUTDIR ??\n\tjoin(tmpdir(), 'absolutejs', 'generated', 'angular-ssr');\n\nconst ensureAngularSsrNodeModules = async (outDir: string) => {\n\tconst outRoot = resolve(dirname(dirname(outDir)));\n\tconst nodeModulesLink = join(outRoot, 'node_modules');\n\tif (process.env.ABSOLUTE_ANGULAR_SSR_OUTDIR) {\n\t\treturn;\n\t}\n\tif (nodeModulesLink === resolve(process.cwd(), 'node_modules')) {\n\t\treturn;\n\t}\n\tif (await Bun.file(nodeModulesLink).exists()) {\n\t\treturn;\n\t}\n\n\tawait mkdir(outRoot, { recursive: true });\n\ttry {\n\t\tawait symlink(\n\t\t\tresolve(process.cwd(), 'node_modules'),\n\t\t\tnodeModulesLink,\n\t\t\t'dir'\n\t\t);\n\t} catch (error) {\n\t\tif (\n\t\t\t!(error instanceof Error) ||\n\t\t\t!('code' in error) ||\n\t\t\terror.code !== 'EEXIST'\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t}\n};\n\nconst resolveRuntimeAngularModulePath = async (pagePath: string) => {\n\tif (!pagePath.endsWith('.ts')) {\n\t\treturn pagePath;\n\t}\n\n\tconst outDir = resolveAngularSsrOutDir();\n\tawait ensureAngularSsrNodeModules(outDir);\n\tconst { compileAngularFileJIT } = await import('../build/compileAngular');\n\tconst outputs = await compileAngularFileJIT(\n\t\tpagePath,\n\t\toutDir,\n\t\tprocess.cwd()\n\t);\n\tconst expectedFileName = basename(pagePath).replace(/\\.ts$/, '.js');\n\n\treturn (\n\t\toutputs.find((output) => output.endsWith(`/${expectedFileName}`)) ??\n\t\toutputs.find((output) => output.endsWith(`\\\\${expectedFileName}`)) ??\n\t\toutputs[0] ??\n\t\tpagePath\n\t);\n};\n\nconst withHtmlContentType = (responseInit: ResponseInit = {}) => {\n\tconst headers = new Headers(responseInit.headers);\n\tif (!headers.has('Content-Type')) {\n\t\theaders.set('Content-Type', 'text/html');\n\t}\n\n\treturn { ...responseInit, headers };\n};\n\nconst resolveRequestRenderUrl = (request: Request | undefined) => {\n\tif (!request) return '/';\n\n\ttry {\n\t\tconst parsed = new URL(request.url);\n\n\t\treturn `${parsed.pathname}${parsed.search}`;\n\t} catch {\n\t\treturn '/';\n\t}\n};\n\nconst assertNoHandlerProviders = (input: Record<string, unknown>) => {\n\tif (!('providers' in input)) return;\n\n\tthrow new Error(\n\t\t'Angular handler providers are not supported. Export `providers` from the Angular page module, or inject REQUEST / REQUEST_CONTEXT for request-scoped data.'\n\t);\n};\n\nexport const invalidateAngularSsrCache = () => {\n\tmarkSsrCacheDirty('angular');\n\tclearSelectorCache();\n};\n\nconst angularSsrContext = new AsyncLocalStorage<string>();\nsetSsrContextGetter(() => angularSsrContext.getStore());\n\nexport const handleAngularPageRequest = async <\n\tPage = { page: AngularPageDefinition<Record<never, never>> }\n>(\n\tinput: AngularPageRequestInput<Page>\n) => {\n\tconst requestId = `angular_${Date.now()}_${Math.random().toString(BASE_36_RADIX).substring(2, RANDOM_ID_END_INDEX)}`;\n\n\treturn angularSsrContext.run(requestId, async () => {\n\t\tawait ensureAngularCompiler();\n\n\t\tconst resolvedHeadTag = input.headTag ?? '<head></head>';\n\t\tconst resolvedIndexPath = input.indexPath;\n\t\tconst options = input;\n\t\tconst resolvedPagePath = input.pagePath;\n\t\tconst maybeProps = input.props;\n\t\tconst responseInit = input.responseInit ?? {};\n\t\tconst resolvedUrl = resolveRequestRenderUrl(input.request);\n\n\t\t// Cache props + headTag for HMR replay — strip query strings\n\t\t// so cache-busted HMR paths match the original manifest path.\n\t\tcacheRouteData(resolvedPagePath, {\n\t\t\theadTag: resolvedHeadTag,\n\t\t\tprops: maybeProps\n\t\t});\n\n\t\tif (isSsrCacheDirty('angular')) {\n\t\t\tclearSelectorCache();\n\t\t\tconst script = resolvedIndexPath\n\t\t\t\t? `<script>import(${JSON.stringify(resolvedIndexPath)});</script>`\n\t\t\t\t: '';\n\t\t\tconst html = `<!DOCTYPE html><html>${resolvedHeadTag}<body><${lastSelector}></${lastSelector}>${script}</body></html>`;\n\n\t\t\treturn new Response(html, {\n\t\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tassertNoHandlerProviders(input);\n\n\t\t\tconst handlerCallsite =\n\t\t\t\toptions?.collectStreamingSlots === true\n\t\t\t\t\t? undefined\n\t\t\t\t\t: (getCurrentRouteRegistrationCallsite() ??\n\t\t\t\t\t\tcaptureStreamingSlotWarningCallsite());\n\t\t\tconst renderPageResponse = async () => {\n\t\t\t\tconst baseDeps = await getAngularDeps();\n\t\t\t\tconst runtimePagePath =\n\t\t\t\t\tawait resolveRuntimeAngularModulePath(resolvedPagePath);\n\t\t\t\tconst importedPageModule: unknown = await import(\n\t\t\t\t\truntimePagePath\n\t\t\t\t);\n\t\t\t\tconst pageModule = readAngularPageModule(importedPageModule);\n\t\t\t\tif (!pageModule) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Invalid Angular page module: ${resolvedPagePath}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst PageComponent = resolvePageComponent(pageModule);\n\t\t\t\tif (!isAngularComponent(PageComponent)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Angular page module must export an Angular component: ${resolvedPagePath}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst hasIslands =\n\t\t\t\t\ttypeof pageModule.__ABSOLUTE_PAGE_HAS_ISLANDS__ ===\n\t\t\t\t\t'boolean'\n\t\t\t\t\t\t? pageModule.__ABSOLUTE_PAGE_HAS_ISLANDS__\n\t\t\t\t\t\t: false;\n\t\t\t\tconst usesLegacyAnimations =\n\t\t\t\t\tpageModule.__ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ ===\n\t\t\t\t\ttrue;\n\n\t\t\t\tconst deps = baseDeps;\n\n\t\t\t\tconst tokenMap = discoverTokens(pageModule);\n\t\t\t\tconst selector = resolveSelector(\n\t\t\t\t\tdeps,\n\t\t\t\t\tresolvedPagePath,\n\t\t\t\t\tPageComponent\n\t\t\t\t);\n\t\t\t\tlastSelector = selector;\n\n\t\t\t\tconst htmlString = `<!DOCTYPE html><html>${resolvedHeadTag}<body><${selector}></${selector}></body></html>`;\n\n\t\t\t\tresetSsrSanitizer();\n\t\t\t\tconst sanitizer = getSsrSanitizer(deps);\n\t\t\t\t// The page module's `providers` export is the source of truth\n\t\t\t\t// for page-level DI — `bootstrapApplication` reads it on the\n\t\t\t\t// client (see compileAngular.ts client bootstrap). Mirror that\n\t\t\t\t// on the server so anything that requires `provideRouter`,\n\t\t\t\t// `provideAnimations`, etc. resolves the same way during SSR.\n\t\t\t\tconst pageProvidersExport = Reflect.get(\n\t\t\t\t\tpageModule,\n\t\t\t\t\t'providers'\n\t\t\t\t);\n\t\t\t\tconst pageProviders: ReadonlyArray<\n\t\t\t\t\tProvider | EnvironmentProviders\n\t\t\t\t> = Array.isArray(pageProvidersExport)\n\t\t\t\t\t? pageProvidersExport\n\t\t\t\t\t: [];\n\t\t\t\tconst combinedProviders = [\n\t\t\t\t\t...(await buildRouterRedirectProviders(deps, responseInit)),\n\t\t\t\t\t...pageProviders,\n\t\t\t\t\t...(await buildServerAnimationProviders(\n\t\t\t\t\t\tusesLegacyAnimations\n\t\t\t\t\t))\n\t\t\t\t];\n\t\t\t\tconst providers = buildProviders(\n\t\t\t\t\tdeps,\n\t\t\t\t\tsanitizer,\n\t\t\t\t\tmaybeProps,\n\t\t\t\t\ttokenMap,\n\t\t\t\t\tinput.request,\n\t\t\t\t\tinput.requestContext,\n\t\t\t\t\tresponseInit,\n\t\t\t\t\tcombinedProviders\n\t\t\t\t);\n\n\t\t\t\tconst rawHtml: string = await renderAngularApp(\n\t\t\t\t\tdeps,\n\t\t\t\t\tPageComponent,\n\t\t\t\t\tproviders,\n\t\t\t\t\thtmlString,\n\t\t\t\t\tresolvedUrl\n\t\t\t\t);\n\t\t\t\tconst shouldProcessIslands =\n\t\t\t\t\thasIslands || rawHtml.includes('<absolute-island');\n\t\t\t\tconst htmlWithLoweredIslands = shouldProcessIslands\n\t\t\t\t\t? await lowerAngularServerIslands(rawHtml)\n\t\t\t\t\t: rawHtml;\n\n\t\t\t\tconst html = injectIslandPageContext(\n\t\t\t\t\tinjectSsrScripts(\n\t\t\t\t\t\thtmlWithLoweredIslands,\n\t\t\t\t\t\trequestId,\n\t\t\t\t\t\tresolvedIndexPath,\n\t\t\t\t\t\tmaybeProps\n\t\t\t\t\t),\n\t\t\t\t\t{ hasIslands: shouldProcessIslands }\n\t\t\t\t);\n\n\t\t\t\treturn new Response(html, withHtmlContentType(responseInit));\n\t\t\t};\n\n\t\t\treturn await runWithStreamingSlotWarningScope(\n\t\t\t\t() =>\n\t\t\t\t\toptions?.collectStreamingSlots === true\n\t\t\t\t\t\t? withRegisteredStreamingSlots(\n\t\t\t\t\t\t\t\trenderPageResponse,\n\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: renderPageResponse(),\n\t\t\t\t{ handlerCallsite }\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error('[SSR] Angular render error:', error);\n\n\t\t\tconst pageName = derivePageName(resolvedPagePath);\n\t\t\tconst conventionResponse = await renderConventionError(\n\t\t\t\t'angular',\n\t\t\t\tpageName,\n\t\t\t\terror\n\t\t\t);\n\t\t\tif (conventionResponse) return conventionResponse;\n\n\t\t\treturn new Response(ssrErrorPage('angular', error), {\n\t\t\t\theaders: { 'Content-Type': 'text/html' },\n\t\t\t\tstatus: 500\n\t\t\t});\n\t\t}\n\t});\n};\n",
|
|
6
|
+
"import type { EnvironmentProviders, Provider } from '@angular/core';\nimport { resolveAngularRuntimePath } from './resolveAngularPackage';\n\nlet noopAnimationProvidersPromise: Promise<\n\t(Provider | EnvironmentProviders)[]\n> | null = null;\n\nconst loadNoopAnimationProviders = async () => {\n\tconst animations = await import(\n\t\tresolveAngularRuntimePath('@angular/platform-browser/animations')\n\t);\n\n\treturn animations.provideNoopAnimations();\n};\n\nexport const buildServerAnimationProviders = (\n\tusesLegacyAnimations: boolean\n) => {\n\tif (!usesLegacyAnimations) return Promise.resolve([]);\n\n\tnoopAnimationProvidersPromise ??= loadNoopAnimationProviders();\n\n\treturn noopAnimationProvidersPromise;\n};\n",
|
|
7
|
+
"import type { EnvironmentProviders, Provider } from '@angular/core';\nimport type { AngularDeps } from '../../types/angular';\nimport { resolveAngularRuntimePath } from './resolveAngularPackage';\n\ntype AngularRouterModule = typeof import('@angular/router');\n\nconst DEFAULT_REDIRECT_STATUS = 302;\nconst SUCCESS_STATUS = 200;\n\nconst isRouterRedirectCancel = (\n\tevent: unknown,\n\trouterModule: AngularRouterModule\n) =>\n\tevent instanceof routerModule.NavigationCancel &&\n\tevent.code === routerModule.NavigationCancellationCode.Redirect;\n\nconst getNavigationStartUrl = (\n\tevent: unknown,\n\trouterModule: AngularRouterModule\n) => {\n\tif (!(event instanceof routerModule.NavigationStart)) return null;\n\n\treturn event.url;\n};\n\nconst applyRedirectResponse = (\n\tresponseInit: ResponseInit | undefined,\n\tlocation: string\n) => {\n\tif (!responseInit) return;\n\n\tconst headers = new Headers(responseInit.headers);\n\theaders.set('Location', location);\n\tresponseInit.headers = headers;\n\n\tif (\n\t\ttypeof responseInit.status === 'undefined' ||\n\t\tresponseInit.status === SUCCESS_STATUS\n\t) {\n\t\tresponseInit.status = DEFAULT_REDIRECT_STATUS;\n\t}\n};\n\nconst buildRedirectEventHandler = (\n\tresponseInit: ResponseInit | undefined,\n\trouterModule: AngularRouterModule\n) => {\n\tlet waitingForRedirectTarget = false;\n\n\treturn (event: unknown) => {\n\t\tif (isRouterRedirectCancel(event, routerModule)) {\n\t\t\twaitingForRedirectTarget = true;\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!waitingForRedirectTarget) return;\n\n\t\tconst redirectUrl = getNavigationStartUrl(event, routerModule);\n\t\tif (!redirectUrl) return;\n\n\t\tapplyRedirectResponse(responseInit, redirectUrl);\n\t\twaitingForRedirectTarget = false;\n\t};\n};\n\nexport const buildRouterRedirectProviders = async (\n\tdeps: AngularDeps,\n\tresponseInit: ResponseInit | undefined\n) => {\n\tlet routerModule: AngularRouterModule;\n\n\ttry {\n\t\trouterModule = await import(\n\t\t\tresolveAngularRuntimePath('@angular/router')\n\t\t);\n\t} catch {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\tmulti: true,\n\t\t\tprovide: deps.ENVIRONMENT_INITIALIZER,\n\t\t\tuseValue: () => {\n\t\t\t\tconst router = deps.inject(routerModule.Router, {\n\t\t\t\t\toptional: true\n\t\t\t\t});\n\t\t\t\tif (!router) return;\n\n\t\t\t\trouter.events.subscribe(\n\t\t\t\t\tbuildRedirectEventHandler(responseInit, routerModule)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t] satisfies (Provider | EnvironmentProviders)[];\n};\n",
|
|
8
|
+
"import type {\n\tIslandFramework,\n\tIslandHydrate,\n\tRuntimeIslandRenderProps\n} from '../../types/island';\nimport { requireCurrentIslandRegistry } from '../core/currentIslandRegistry';\nimport { renderIslandMarkup } from '../core/renderIslandMarkup';\n\nconst ANGULAR_ISLAND_TAG_RE =\n\t/<absolute-island\\b([^>]*)>[\\s\\S]*?<\\/absolute-island>/gi;\nconst ATTRIBUTE_RE =\n\t/([A-Za-z_:][-A-Za-z0-9_:.]*)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/g;\n\nconst islandFrameworks: IslandFramework[] = [\n\t'react',\n\t'svelte',\n\t'vue',\n\t'angular'\n];\n\nconst islandHydrationModes: IslandHydrate[] = [\n\t'load',\n\t'idle',\n\t'visible',\n\t'none'\n];\n\nconst decodeHtmlAttribute = (value: string) =>\n\tvalue\n\t\t.replaceAll('"', '\"')\n\t\t.replaceAll('"', '\"')\n\t\t.replaceAll(''', \"'\")\n\t\t.replaceAll(''', \"'\")\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>');\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isIslandFramework = (value: string): value is IslandFramework =>\n\tislandFrameworks.some((framework) => framework === value);\n\nconst isIslandHydrate = (value: string): value is IslandHydrate =>\n\tislandHydrationModes.some((mode) => mode === value);\n\nconst parseAttributes = (attributeString: string) => {\n\tconst attributes = new Map<string, string>();\n\tlet match = ATTRIBUTE_RE.exec(attributeString);\n\n\twhile (match) {\n\t\tconst [, key, doubleQuotedValue, singleQuotedValue] = match;\n\t\tmatch = ATTRIBUTE_RE.exec(attributeString);\n\t\tif (!key) continue;\n\n\t\tattributes.set(\n\t\t\tkey,\n\t\t\tdecodeHtmlAttribute(doubleQuotedValue ?? singleQuotedValue ?? '')\n\t\t);\n\t}\n\n\tATTRIBUTE_RE.lastIndex = 0;\n\n\treturn attributes;\n};\n\nconst parseAngularIslandProps = (\n\tattributeString: string\n): RuntimeIslandRenderProps | null => {\n\tconst attributes = parseAttributes(attributeString);\n\tconst component = attributes.get('component');\n\tconst framework = attributes.get('framework');\n\tconst hydrate = attributes.get('hydrate') ?? 'load';\n\tconst serializedProps = attributes.get('data-abs-props') ?? '{}';\n\n\tif (!component || !framework) {\n\t\treturn null;\n\t}\n\n\tif (!isIslandFramework(framework) || !isIslandHydrate(hydrate)) {\n\t\treturn null;\n\t}\n\n\tlet parsedProps: Record<string, unknown> = {};\n\ttry {\n\t\tconst candidate: unknown = JSON.parse(serializedProps);\n\t\tparsedProps = isRecord(candidate) ? candidate : {};\n\t} catch {\n\t\t// parsedProps remains default {}\n\t}\n\n\treturn {\n\t\tcomponent,\n\t\tframework,\n\t\thydrate,\n\t\tprops: parsedProps\n\t};\n};\n\nexport const lowerAngularServerIslands = async (html: string) => {\n\tif (!ANGULAR_ISLAND_TAG_RE.test(html)) {\n\t\treturn html;\n\t}\n\n\tconst registry = requireCurrentIslandRegistry();\n\tANGULAR_ISLAND_TAG_RE.lastIndex = 0;\n\n\tconst segments: {\n\t\tbefore: string;\n\t\tprops: ReturnType<typeof parseAngularIslandProps>;\n\t\tfullMatch: string;\n\t}[] = [];\n\tlet lastIndex = 0;\n\tlet match = ANGULAR_ISLAND_TAG_RE.exec(html);\n\n\twhile (match) {\n\t\tconst [fullMatch, rawAttributeString] = match;\n\t\tconst attributeString = rawAttributeString ?? '';\n\t\tsegments.push({\n\t\t\tbefore: html.slice(lastIndex, match.index),\n\t\t\tfullMatch,\n\t\t\tprops: parseAngularIslandProps(attributeString)\n\t\t});\n\t\tlastIndex = match.index + fullMatch.length;\n\t\tmatch = ANGULAR_ISLAND_TAG_RE.exec(html);\n\t}\n\n\tANGULAR_ISLAND_TAG_RE.lastIndex = 0;\n\n\tconst renderedSegments = await Promise.all(\n\t\tsegments.map(\n\t\t\tasync (segment) =>\n\t\t\t\tsegment.before +\n\t\t\t\t(segment.props\n\t\t\t\t\t? await renderIslandMarkup(registry, segment.props)\n\t\t\t\t\t: segment.fullMatch)\n\t\t)\n\t);\n\n\treturn renderedSegments.join('') + html.slice(lastIndex);\n};\n",
|
|
9
|
+
"import type { SecurityContext } from '@angular/core';\nimport type { SafeValue } from '@angular/platform-browser';\nimport type { AngularDeps } from '../../types/angular';\n\nconst escapeHtml = (str: string) =>\n\tString(str)\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"');\n\nconst bypassValue = (value: string): SafeValue => ({\n\tchangingThisBreaksApplicationSecurity: value\n});\n\n// Deferred: SsrSanitizer class is built after deps load because it\n// extends DomSanitizer which comes from the lazy import. We cache the\n// class + singleton instance after the first request.\nlet ssrSanitizer: InstanceType<AngularDeps['DomSanitizer']> | null = null;\n\nexport const getSsrSanitizer = (deps: AngularDeps) => {\n\tif (ssrSanitizer) return ssrSanitizer;\n\n\tconst SsrSanitizerClass = class extends deps.DomSanitizer {\n\t\tsanitize(ctx: SecurityContext, value: SafeValue | string | null) {\n\t\t\tif (value === null) return null;\n\t\t\tlet strValue: string;\n\t\t\tlet isTrustedHtml = false;\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tstrValue = value;\n\t\t\t} else if (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t'changingThisBreaksApplicationSecurity' in value\n\t\t\t) {\n\t\t\t\tstrValue = String(value.changingThisBreaksApplicationSecurity);\n\t\t\t\tisTrustedHtml = true;\n\t\t\t} else {\n\t\t\t\tstrValue = String(value);\n\t\t\t}\n\n\t\t\tif (ctx === deps.SecurityContext.HTML) {\n\t\t\t\tif (isTrustedHtml) {\n\t\t\t\t\treturn strValue;\n\t\t\t\t}\n\n\t\t\t\treturn escapeHtml(strValue);\n\t\t\t}\n\n\t\t\treturn strValue;\n\t\t}\n\t\tbypassSecurityTrustHtml(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustStyle(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustScript(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustUrl(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustResourceUrl(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t};\n\n\tssrSanitizer = new SsrSanitizerClass();\n\n\treturn ssrSanitizer;\n};\nexport const resetSsrSanitizer = () => {\n\tssrSanitizer = null;\n};\n"
|
|
10
|
+
],
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "90BA6F5F775B36CE64756E2164756E21",
|
|
13
|
+
"names": []
|
|
14
|
+
}
|
|
@@ -40,7 +40,7 @@ var resolveAngularRuntimePath = (specifier) => {
|
|
|
40
40
|
return resolveAngularPackage(specifier);
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
export {
|
|
43
|
+
export { resolveAngularRuntimePath };
|
|
44
44
|
|
|
45
|
-
//# debugId=
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
45
|
+
//# debugId=962497DD515683EC64756E2164756E21
|
|
46
|
+
//# sourceMappingURL=chunk-m97ze5hz.js.map
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import { existsSync, readFileSync } from 'node:fs';\nimport { join, resolve } from 'node:path';\n\n/**\n * Resolve Angular package paths from the compiled runtime node_modules first,\n * then the app's process.cwd()/node_modules, falling back to the bare specifier.\n * This prevents Bun's baked import.meta.dir from resolving Angular packages\n * from the absolutejs source tree instead of the consumer's project when\n * running from a published npm package.\n */\nexport const resolveAngularPackageDir = (specifier: string) => {\n\tconst fromCompiledRuntime = process.env.ABSOLUTE_BUILD_DIR\n\t\t? resolve(process.env.ABSOLUTE_BUILD_DIR, 'node_modules', specifier)\n\t\t: null;\n\tif (fromCompiledRuntime && existsSync(fromCompiledRuntime)) {\n\t\treturn fromCompiledRuntime;\n\t}\n\n\tconst fromProject = resolve(process.cwd(), 'node_modules', specifier);\n\n\tif (existsSync(fromProject)) {\n\t\treturn fromProject;\n\t}\n\n\treturn null;\n};\n\nconst resolvePackageEntry = (packageDir: string) => {\n\ttry {\n\t\tconst pkg = JSON.parse(\n\t\t\treadFileSync(join(packageDir, 'package.json'), 'utf-8')\n\t\t);\n\t\tconst rootExport = pkg.exports?.['.'];\n\t\tconst entry =\n\t\t\t(typeof rootExport === 'string'\n\t\t\t\t? rootExport\n\t\t\t\t: rootExport?.default) ??\n\t\t\tpkg.module ??\n\t\t\tpkg.main ??\n\t\t\t'index.js';\n\n\t\treturn join(packageDir, entry);\n\t} catch {\n\t\treturn packageDir;\n\t}\n};\n\nexport const resolveAngularPackage = (specifier: string) => {\n\tconst packageDir = resolveAngularPackageDir(specifier);\n\tif (packageDir) return resolvePackageEntry(packageDir);\n\n\treturn specifier;\n};\n\nconst toSafeVendorName = (specifier: string) =>\n\tspecifier.replace(/^@/, '').replace(/\\//g, '_');\n\n/** Prefer the linked Bun-target vendor file built by\n * `buildAngularServerVendor`. The file is at\n * `<ABSOLUTE_BUILD_DIR>/angular/vendor/server/<safe>.js`, which is what every\n * server bundle's `@angular/*` imports get rewritten to point at. Sharing\n * this path keeps SSR's class identity unified — the dual-package hazard\n * that produces NG0201 only appears when the runtime imports a *different*\n * copy from the bundles. Falls back to `resolveAngularPackage` (node_modules)\n * when no vendor file is available — e.g. running tests outside an\n * absolutejs build, or before the vendor pass completes. */\nexport const resolveAngularRuntimePath = (specifier: string) => {\n\tconst buildDir = process.env.ABSOLUTE_BUILD_DIR;\n\tif (buildDir) {\n\t\tconst vendorPath = join(\n\t\t\tbuildDir,\n\t\t\t'angular',\n\t\t\t'vendor',\n\t\t\t'server',\n\t\t\t`${toSafeVendorName(specifier)}.js`\n\t\t);\n\t\tif (existsSync(vendorPath)) return vendorPath;\n\t}\n\n\treturn resolveAngularPackage(specifier);\n};\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;AAAA;AACA;AASO,IAAM,2BAA2B,CAAC,cAAsB;AAAA,EAC9D,MAAM,sBAAsB,QAAQ,IAAI,qBACrC,QAAQ,QAAQ,IAAI,oBAAoB,gBAAgB,SAAS,IACjE;AAAA,EACH,IAAI,uBAAuB,WAAW,mBAAmB,GAAG;AAAA,IAC3D,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,cAAc,QAAQ,QAAQ,IAAI,GAAG,gBAAgB,SAAS;AAAA,EAEpE,IAAI,WAAW,WAAW,GAAG;AAAA,IAC5B,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,sBAAsB,CAAC,eAAuB;AAAA,EACnD,IAAI;AAAA,IACH,MAAM,MAAM,KAAK,MAChB,aAAa,KAAK,YAAY,cAAc,GAAG,OAAO,CACvD;AAAA,IACA,MAAM,aAAa,IAAI,UAAU;AAAA,IACjC,MAAM,SACJ,OAAO,eAAe,WACpB,aACA,YAAY,YACf,IAAI,UACJ,IAAI,QACJ;AAAA,IAED,OAAO,KAAK,YAAY,KAAK;AAAA,IAC5B,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIF,IAAM,wBAAwB,CAAC,cAAsB;AAAA,EAC3D,MAAM,aAAa,yBAAyB,SAAS;AAAA,EACrD,IAAI;AAAA,IAAY,OAAO,oBAAoB,UAAU;AAAA,EAErD,OAAO;AAAA;AAGR,IAAM,mBAAmB,CAAC,cACzB,UAAU,QAAQ,MAAM,EAAE,EAAE,QAAQ,OAAO,GAAG;AAWxC,IAAM,4BAA4B,CAAC,cAAsB;AAAA,EAC/D,MAAM,WAAW,QAAQ,IAAI;AAAA,EAC7B,IAAI,UAAU;AAAA,IACb,MAAM,aAAa,KAClB,UACA,WACA,UACA,UACA,GAAG,iBAAiB,SAAS,MAC9B;AAAA,IACA,IAAI,WAAW,UAAU;AAAA,MAAG,OAAO;AAAA,EACpC;AAAA,EAEA,OAAO,sBAAsB,SAAS;AAAA;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "962497DD515683EC64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
getAngularDeps,
|
|
4
4
|
withSuppressedAngularDevLogs
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-jpkjdgsk.js";
|
|
6
6
|
import {
|
|
7
7
|
getSsrContextId
|
|
8
8
|
} from "./chunk-pnscgw95.js";
|
|
@@ -181,4 +181,4 @@ var renderAngularIslandToHtml = async (component, props, islandId) => {
|
|
|
181
181
|
export { getAngularIslandSelector, mountAngularIsland, renderAngularIslandToHtml };
|
|
182
182
|
|
|
183
183
|
//# debugId=22272B760DC7CB5D64756E2164756E21
|
|
184
|
-
//# sourceMappingURL=chunk-
|
|
184
|
+
//# sourceMappingURL=chunk-p5zgj77m.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
computeAngularServerVendorPathsAsync,
|
|
7
7
|
computeAngularVendorPaths,
|
|
8
8
|
computeAngularVendorPathsAsync
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-1rfh7hw9.js";
|
|
10
10
|
import"./chunk-7kjj42xm.js";
|
|
11
11
|
import"./chunk-bmgqm774.js";
|
|
12
12
|
export {
|
|
@@ -19,4 +19,4 @@ export {
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
//# debugId=C6F3C3EFFE1C979664756E2164756E21
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-r6e8pytx.js.map
|
package/dist/client/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
mountAngularIsland
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-p5zgj77m.js";
|
|
5
5
|
import {
|
|
6
6
|
initializeIslandMarkupSnapshot
|
|
7
7
|
} from "../chunk-fak944et.js";
|
|
8
|
-
import"../chunk-
|
|
9
|
-
import"../chunk-
|
|
8
|
+
import"../chunk-jpkjdgsk.js";
|
|
9
|
+
import"../chunk-m97ze5hz.js";
|
|
10
10
|
import"../chunk-pnscgw95.js";
|
|
11
11
|
import {
|
|
12
12
|
getStreamSwapRuntimeScript
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
logStartupTimingBlock,
|
|
15
15
|
setCurrentPageIslandMetadata,
|
|
16
16
|
transformCurrentStaticPageHtml
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-bgb8k1qs.js";
|
|
18
18
|
import {
|
|
19
19
|
disposeTailwindCompiler,
|
|
20
20
|
incrementalTailwindBuild,
|
|
@@ -72,7 +72,7 @@ import"./chunk-p5504p14.js";
|
|
|
72
72
|
import {
|
|
73
73
|
renderIslandMarkup,
|
|
74
74
|
renderIslandResult
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-9j59emg3.js";
|
|
76
76
|
import"./chunk-9ve9jq72.js";
|
|
77
77
|
import"./chunk-7fw6x3js.js";
|
|
78
78
|
import"./chunk-mbazhahf.js";
|
|
@@ -451,7 +451,7 @@ var prepareDev = async (config, buildDir) => {
|
|
|
451
451
|
patchElysiaRouteRegistrationCallsites();
|
|
452
452
|
recordStep("patch route registration", stepStartedAt);
|
|
453
453
|
stepStartedAt = performance.now();
|
|
454
|
-
const { devBuild } = await import("./chunk-
|
|
454
|
+
const { devBuild } = await import("./chunk-1x4fxm57.js");
|
|
455
455
|
const result = await devBuild(config);
|
|
456
456
|
recordStep("devBuild", stepStartedAt);
|
|
457
457
|
stepStartedAt = performance.now();
|
package/dist/islands/index.js
CHANGED
package/dist/react/index.js
CHANGED
|
@@ -22,7 +22,7 @@ import"../chunk-s6defjk2.js";
|
|
|
22
22
|
import"../chunk-p5504p14.js";
|
|
23
23
|
import {
|
|
24
24
|
renderIslandResult
|
|
25
|
-
} from "../chunk-
|
|
25
|
+
} from "../chunk-9j59emg3.js";
|
|
26
26
|
import"../chunk-9ve9jq72.js";
|
|
27
27
|
import"../chunk-7fw6x3js.js";
|
|
28
28
|
import"../chunk-mbazhahf.js";
|
package/dist/svelte/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import"../chunk-s6defjk2.js";
|
|
|
25
25
|
import"../chunk-p5504p14.js";
|
|
26
26
|
import {
|
|
27
27
|
renderIslandMarkup
|
|
28
|
-
} from "../chunk-
|
|
28
|
+
} from "../chunk-9j59emg3.js";
|
|
29
29
|
import"../chunk-9ve9jq72.js";
|
|
30
30
|
import"../chunk-7fw6x3js.js";
|
|
31
31
|
import"../chunk-mbazhahf.js";
|
package/dist/vue/index.js
CHANGED
|
@@ -33,7 +33,7 @@ import"../chunk-s6defjk2.js";
|
|
|
33
33
|
import"../chunk-p5504p14.js";
|
|
34
34
|
import {
|
|
35
35
|
renderIslandResult
|
|
36
|
-
} from "../chunk-
|
|
36
|
+
} from "../chunk-9j59emg3.js";
|
|
37
37
|
import"../chunk-9ve9jq72.js";
|
|
38
38
|
import"../chunk-7fw6x3js.js";
|
|
39
39
|
import"../chunk-mbazhahf.js";
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/build/buildAngularVendor.ts", "../src/build/angularLinkerPlugin.ts"],
|
|
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.\n *\n * `@angular/compiler` is included only when the vendor is built in JIT mode\n * (dev). In AOT mode (prod) every `ɵɵngDeclare*` has been linked at vendor\n * build time, so the compiler isn't needed at runtime and is dropped to keep\n * the prod artifact slim. */\nconst REQUIRED_ANGULAR_SPECIFIERS_BASE = [\n\t'@angular/core',\n\t'@angular/common',\n\t'@angular/common/http',\n\t'@angular/platform-browser'\n];\nconst requiredAngularSpecifiers = (jitMode: boolean) =>\n\tjitMode\n\t\t? [...REQUIRED_ANGULAR_SPECIFIERS_BASE, '@angular/compiler']\n\t\t: REQUIRED_ANGULAR_SPECIFIERS_BASE;\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/** Marker substrings emitted by Angular's partial-AOT compiler into any\n * package that ships `ɵɵngDeclare*` declarations. The presence of any\n * one of these means the file needs the linker before it can run, which\n * in turn means the package belongs in the Angular vendor — even if it's\n * not under `@angular/*` (e.g. `@ngx-translate/core`, `@ng-bootstrap`,\n * community Material extensions, etc.). Mirrors `declarationFunctions`\n * in `@angular/compiler-cli/linker`. */\nconst PARTIAL_DECL_MARKERS = [\n\t'ɵɵngDeclareDirective',\n\t'ɵɵngDeclareComponent',\n\t'ɵɵngDeclareFactory',\n\t'ɵɵngDeclareInjectable',\n\t'ɵɵngDeclareInjector',\n\t'ɵɵngDeclareNgModule',\n\t'ɵɵngDeclarePipe',\n\t'ɵɵngDeclareClassMetadata'\n];\n\nconst containsPartialDeclarations = (source: string) =>\n\tPARTIAL_DECL_MARKERS.some((marker) => source.includes(marker));\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). Also harvests any non-@angular package whose\n * shipped code contains partial AOT declarations — those need the linker\n * too, so they belong in the Angular vendor pipeline. */\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\t// If this file ships partial AOT declarations, the *package* it\n\t\t\t// belongs to needs the linker — add the spec used to import it.\n\t\t\t// Skip if it's already an @angular/* spec (covered separately).\n\t\t\tif (\n\t\t\t\t!isAngularBrowserSpecifier(spec) &&\n\t\t\t\tcontainsPartialDeclarations(content)\n\t\t\t) {\n\t\t\t\tangularFound.add(spec);\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 (\n\tdirectories: string[],\n\tlinkerJitMode: boolean\n) => {\n\tconst { angular, transitiveRoots } = await scanSourceImports(directories);\n\tfor (const spec of requiredAngularSpecifiers(linkerJitMode)) {\n\t\tangular.add(spec);\n\t}\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(\n\t\tdirectories,\n\t\tlinkerJitMode\n\t);\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[] = requiredAngularSpecifiers(true)\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\tlinkerJitMode = true\n) => {\n\tconst specifiers = await resolveAngularSpecifiers(\n\t\tdirectories,\n\t\tlinkerJitMode\n\t);\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(\n\t\tdirectories,\n\t\tlinkerJitMode\n\t);\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\n/** Async server-vendor path map: scans source + transitive deps, then\n * produces absolute filesystem paths for every @angular/* spec the project\n * uses (plus the always-vendored server-only specs). Mirrors\n * `computeAngularVendorPathsAsync` but for server-side rewriting. */\nexport const computeAngularServerVendorPathsAsync = async (\n\tbuildDir: string,\n\tdirectories: string[] = [],\n\tlinkerJitMode = true\n) => {\n\tconst browserSpecs = await resolveAngularSpecifiers(\n\t\tdirectories,\n\t\tlinkerJitMode\n\t);\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\n\treturn computeAngularServerVendorPaths(buildDir, Array.from(allSpecs));\n};\n",
|
|
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
|
-
],
|
|
8
|
-
"mappings": "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",
|
|
9
|
-
"debugId": "A01FFECE2AADFE9264756E2164756E21",
|
|
10
|
-
"names": []
|
|
11
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/angular/pageHandler.ts", "../src/angular/animationProviders.ts", "../src/angular/routerRedirectProviders.ts", "../src/angular/lowerServerIslands.ts", "../src/angular/ssrSanitizer.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { AsyncLocalStorage } from 'node:async_hooks';\nimport { mkdir, symlink } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { basename, dirname, join, resolve } from 'node:path';\nimport type { EnvironmentProviders, Provider, Type } from '@angular/core';\nimport type {\n\tAngularPageDefinition,\n\tAngularPagePropsOf\n} from '../../types/angular';\nimport { BASE_36_RADIX, RANDOM_ID_END_INDEX } from '../constants';\nimport { injectIslandPageContext } from '../core/islandPageContext';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\nimport {\n\tderivePageName,\n\trenderConventionError\n} from '../utils/resolveConvention';\nimport { setSsrContextGetter } from '../utils/registerClientScript';\nimport { getAngularDeps } from './angularDeps';\nimport { buildServerAnimationProviders } from './animationProviders';\nimport { buildRouterRedirectProviders } from './routerRedirectProviders';\nimport { lowerAngularServerIslands } from './lowerServerIslands';\nimport { getCurrentRouteRegistrationCallsite } from '../core/devRouteRegistrationCallsite';\nimport { getSsrSanitizer, resetSsrSanitizer } from './ssrSanitizer';\nimport {\n\ttype StreamingSlotEnhancerOptions,\n\twithRegisteredStreamingSlots\n} from '../core/responseEnhancers';\nimport {\n\tcaptureStreamingSlotWarningCallsite,\n\trunWithStreamingSlotWarningScope\n} from '../core/streamingSlotWarningScope';\nimport { isSsrCacheDirty, markSsrCacheDirty } from '../core/ssrCache';\nimport {\n\tbuildProviders,\n\tcacheRouteData,\n\tclearSelectorCache,\n\tdiscoverTokens,\n\tinjectSsrScripts,\n\trenderAngularApp,\n\tresolveSelector\n} from './ssrRender';\nimport {\n\tresolveAngularPackage,\n\tresolveAngularRuntimePath\n} from './resolveAngularPackage';\n\nlet lastSelector = 'angular-page';\ntype AngularPageRenderOptions = StreamingSlotEnhancerOptions & {\n\tcollectStreamingSlots?: boolean;\n};\ntype IsAny<T> = 0 extends 1 & T ? true : false;\ntype HasNoRequiredAngularProps<Props> =\n\tIsAny<Props> extends true ? true : keyof Props extends never ? true : false;\ntype AngularPageHasOptionalProps<Page> = Page extends {\n\tpage: AngularPageDefinition<infer Props>;\n}\n\t? HasNoRequiredAngularProps<Props>\n\t: Page extends { default: AngularPageDefinition<infer Props> }\n\t\t? HasNoRequiredAngularProps<Props>\n\t\t: HasNoRequiredAngularProps<AngularPagePropsOf<Page>>;\nexport type AngularPageRequestInput<\n\tPage = { page: AngularPageDefinition<Record<never, never>> }\n> = AngularPageRenderOptions & {\n\theadTag?: `<head>${string}</head>`;\n\tindexPath: string;\n\tpagePath: string;\n\t/** The incoming request. When provided, its URL is forwarded to\n\t * Angular's `renderApplication`, so `LocationStrategy.path()` and\n\t * Angular Router both see the real URL instead of `/`. Without it,\n\t * Router-based pages can't match anything but the root route. */\n\trequest?: Request;\n\t/** Per-request context made available through Angular's REQUEST_CONTEXT token. */\n\trequestContext?: unknown;\n\t/** Mutable response init made available through Angular's RESPONSE_INIT token. */\n\tresponseInit?: ResponseInit;\n} & (AngularPageHasOptionalProps<Page> extends true\n\t\t? { props?: NoInfer<AngularPagePropsOf<Page>> }\n\t\t: { props: NoInfer<AngularPagePropsOf<Page>> });\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isAngularComponent = (value: unknown): value is Type<unknown> =>\n\ttypeof value === 'function';\n\nconst isAngularPageDefinition = (\n\tvalue: unknown\n): value is AngularPageDefinition<Record<string, unknown>> =>\n\tisRecord(value) && isAngularComponent(value.component);\n\nconst resolvePageComponent = (pageModule: Record<string, unknown>) => {\n\tconst page = Reflect.get(pageModule, 'page');\n\tif (isAngularPageDefinition(page)) {\n\t\treturn page.component;\n\t}\n\n\tconst defaultExport = pageModule.default;\n\tif (isAngularPageDefinition(defaultExport)) {\n\t\treturn defaultExport.component;\n\t}\n\n\tif (isAngularComponent(defaultExport)) {\n\t\treturn defaultExport;\n\t}\n\n\treturn Object.values(pageModule).find((value) => isAngularComponent(value));\n};\n\n// `@angular/compiler` is required at request time only in dev, where\n// `compileAngularFileJIT` produces partial declarations that need the\n// compiler facade to link. In production every partial has already been\n// linked at build time by the linker plugin, so the compiler isn't loaded\n// or shipped.\nlet compilerImportPromise: Promise<unknown> | null = null;\nconst ensureAngularCompiler = () => {\n\tif (process.env.NODE_ENV === 'production') return Promise.resolve();\n\tif (!compilerImportPromise) {\n\t\tcompilerImportPromise = import(\n\t\t\tresolveAngularRuntimePath('@angular/compiler')\n\t\t);\n\t}\n\n\treturn compilerImportPromise;\n};\n\nconst readAngularPageModule = (value: unknown) =>\n\tisRecord(value) ? value : null;\n\nconst resolveAngularSsrOutDir = () =>\n\tprocess.env.ABSOLUTE_ANGULAR_SSR_OUTDIR ??\n\tjoin(tmpdir(), 'absolutejs', 'generated', 'angular-ssr');\n\nconst ensureAngularSsrNodeModules = async (outDir: string) => {\n\tconst outRoot = resolve(dirname(dirname(outDir)));\n\tconst nodeModulesLink = join(outRoot, 'node_modules');\n\tif (process.env.ABSOLUTE_ANGULAR_SSR_OUTDIR) {\n\t\treturn;\n\t}\n\tif (nodeModulesLink === resolve(process.cwd(), 'node_modules')) {\n\t\treturn;\n\t}\n\tif (await Bun.file(nodeModulesLink).exists()) {\n\t\treturn;\n\t}\n\n\tawait mkdir(outRoot, { recursive: true });\n\ttry {\n\t\tawait symlink(\n\t\t\tresolve(process.cwd(), 'node_modules'),\n\t\t\tnodeModulesLink,\n\t\t\t'dir'\n\t\t);\n\t} catch (error) {\n\t\tif (\n\t\t\t!(error instanceof Error) ||\n\t\t\t!('code' in error) ||\n\t\t\terror.code !== 'EEXIST'\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t}\n};\n\nconst resolveRuntimeAngularModulePath = async (pagePath: string) => {\n\tif (!pagePath.endsWith('.ts')) {\n\t\treturn pagePath;\n\t}\n\n\tconst outDir = resolveAngularSsrOutDir();\n\tawait ensureAngularSsrNodeModules(outDir);\n\tconst { compileAngularFileJIT } = await import('../build/compileAngular');\n\tconst outputs = await compileAngularFileJIT(\n\t\tpagePath,\n\t\toutDir,\n\t\tprocess.cwd()\n\t);\n\tconst expectedFileName = basename(pagePath).replace(/\\.ts$/, '.js');\n\n\treturn (\n\t\toutputs.find((output) => output.endsWith(`/${expectedFileName}`)) ??\n\t\toutputs.find((output) => output.endsWith(`\\\\${expectedFileName}`)) ??\n\t\toutputs[0] ??\n\t\tpagePath\n\t);\n};\n\nconst withHtmlContentType = (responseInit: ResponseInit = {}) => {\n\tconst headers = new Headers(responseInit.headers);\n\tif (!headers.has('Content-Type')) {\n\t\theaders.set('Content-Type', 'text/html');\n\t}\n\n\treturn { ...responseInit, headers };\n};\n\nconst resolveRequestRenderUrl = (request: Request | undefined) => {\n\tif (!request) return '/';\n\n\ttry {\n\t\tconst parsed = new URL(request.url);\n\n\t\treturn `${parsed.pathname}${parsed.search}`;\n\t} catch {\n\t\treturn '/';\n\t}\n};\n\nconst assertNoHandlerProviders = (input: Record<string, unknown>) => {\n\tif (!('providers' in input)) return;\n\n\tthrow new Error(\n\t\t'Angular handler providers are not supported. Export `providers` from the Angular page module, or inject REQUEST / REQUEST_CONTEXT for request-scoped data.'\n\t);\n};\n\nexport const invalidateAngularSsrCache = () => {\n\tmarkSsrCacheDirty('angular');\n\tclearSelectorCache();\n};\n\nconst angularSsrContext = new AsyncLocalStorage<string>();\nsetSsrContextGetter(() => angularSsrContext.getStore());\n\nexport const handleAngularPageRequest = async <\n\tPage = { page: AngularPageDefinition<Record<never, never>> }\n>(\n\tinput: AngularPageRequestInput<Page>\n) => {\n\tconst requestId = `angular_${Date.now()}_${Math.random().toString(BASE_36_RADIX).substring(2, RANDOM_ID_END_INDEX)}`;\n\n\treturn angularSsrContext.run(requestId, async () => {\n\t\tawait ensureAngularCompiler();\n\n\t\tconst resolvedHeadTag = input.headTag ?? '<head></head>';\n\t\tconst resolvedIndexPath = input.indexPath;\n\t\tconst options = input;\n\t\tconst resolvedPagePath = input.pagePath;\n\t\tconst maybeProps = input.props;\n\t\tconst responseInit = input.responseInit ?? {};\n\t\tconst resolvedUrl = resolveRequestRenderUrl(input.request);\n\n\t\t// Cache props + headTag for HMR replay — strip query strings\n\t\t// so cache-busted HMR paths match the original manifest path.\n\t\tcacheRouteData(resolvedPagePath, {\n\t\t\theadTag: resolvedHeadTag,\n\t\t\tprops: maybeProps\n\t\t});\n\n\t\tif (isSsrCacheDirty('angular')) {\n\t\t\tclearSelectorCache();\n\t\t\tconst script = resolvedIndexPath\n\t\t\t\t? `<script>import(${JSON.stringify(resolvedIndexPath)});</script>`\n\t\t\t\t: '';\n\t\t\tconst html = `<!DOCTYPE html><html>${resolvedHeadTag}<body><${lastSelector}></${lastSelector}>${script}</body></html>`;\n\n\t\t\treturn new Response(html, {\n\t\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tassertNoHandlerProviders(input);\n\n\t\t\tconst handlerCallsite =\n\t\t\t\toptions?.collectStreamingSlots === true\n\t\t\t\t\t? undefined\n\t\t\t\t\t: (getCurrentRouteRegistrationCallsite() ??\n\t\t\t\t\t\tcaptureStreamingSlotWarningCallsite());\n\t\t\tconst renderPageResponse = async () => {\n\t\t\t\tconst baseDeps = await getAngularDeps();\n\t\t\t\tconst runtimePagePath =\n\t\t\t\t\tawait resolveRuntimeAngularModulePath(resolvedPagePath);\n\t\t\t\tconst importedPageModule: unknown = await import(\n\t\t\t\t\truntimePagePath\n\t\t\t\t);\n\t\t\t\tconst pageModule = readAngularPageModule(importedPageModule);\n\t\t\t\tif (!pageModule) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Invalid Angular page module: ${resolvedPagePath}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst PageComponent = resolvePageComponent(pageModule);\n\t\t\t\tif (!isAngularComponent(PageComponent)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Angular page module must export an Angular component: ${resolvedPagePath}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst hasIslands =\n\t\t\t\t\ttypeof pageModule.__ABSOLUTE_PAGE_HAS_ISLANDS__ ===\n\t\t\t\t\t'boolean'\n\t\t\t\t\t\t? pageModule.__ABSOLUTE_PAGE_HAS_ISLANDS__\n\t\t\t\t\t\t: false;\n\t\t\t\tconst usesLegacyAnimations =\n\t\t\t\t\tpageModule.__ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ ===\n\t\t\t\t\ttrue;\n\n\t\t\t\tconst deps = baseDeps;\n\n\t\t\t\tconst tokenMap = discoverTokens(pageModule);\n\t\t\t\tconst selector = resolveSelector(\n\t\t\t\t\tdeps,\n\t\t\t\t\tresolvedPagePath,\n\t\t\t\t\tPageComponent\n\t\t\t\t);\n\t\t\t\tlastSelector = selector;\n\n\t\t\t\tconst htmlString = `<!DOCTYPE html><html>${resolvedHeadTag}<body><${selector}></${selector}></body></html>`;\n\n\t\t\t\tresetSsrSanitizer();\n\t\t\t\tconst sanitizer = getSsrSanitizer(deps);\n\t\t\t\t// The page module's `providers` export is the source of truth\n\t\t\t\t// for page-level DI — `bootstrapApplication` reads it on the\n\t\t\t\t// client (see compileAngular.ts client bootstrap). Mirror that\n\t\t\t\t// on the server so anything that requires `provideRouter`,\n\t\t\t\t// `provideAnimations`, etc. resolves the same way during SSR.\n\t\t\t\tconst pageProvidersExport = Reflect.get(\n\t\t\t\t\tpageModule,\n\t\t\t\t\t'providers'\n\t\t\t\t);\n\t\t\t\tconst pageProviders: ReadonlyArray<\n\t\t\t\t\tProvider | EnvironmentProviders\n\t\t\t\t> = Array.isArray(pageProvidersExport)\n\t\t\t\t\t? pageProvidersExport\n\t\t\t\t\t: [];\n\t\t\t\tconst combinedProviders = [\n\t\t\t\t\t...(await buildRouterRedirectProviders(deps, responseInit)),\n\t\t\t\t\t...pageProviders,\n\t\t\t\t\t...(await buildServerAnimationProviders(\n\t\t\t\t\t\tusesLegacyAnimations\n\t\t\t\t\t))\n\t\t\t\t];\n\t\t\t\tconst providers = buildProviders(\n\t\t\t\t\tdeps,\n\t\t\t\t\tsanitizer,\n\t\t\t\t\tmaybeProps,\n\t\t\t\t\ttokenMap,\n\t\t\t\t\tinput.request,\n\t\t\t\t\tinput.requestContext,\n\t\t\t\t\tresponseInit,\n\t\t\t\t\tcombinedProviders\n\t\t\t\t);\n\n\t\t\t\tconst rawHtml: string = await renderAngularApp(\n\t\t\t\t\tdeps,\n\t\t\t\t\tPageComponent,\n\t\t\t\t\tproviders,\n\t\t\t\t\thtmlString,\n\t\t\t\t\tresolvedUrl\n\t\t\t\t);\n\t\t\t\tconst shouldProcessIslands =\n\t\t\t\t\thasIslands || rawHtml.includes('<absolute-island');\n\t\t\t\tconst htmlWithLoweredIslands = shouldProcessIslands\n\t\t\t\t\t? await lowerAngularServerIslands(rawHtml)\n\t\t\t\t\t: rawHtml;\n\n\t\t\t\tconst html = injectIslandPageContext(\n\t\t\t\t\tinjectSsrScripts(\n\t\t\t\t\t\thtmlWithLoweredIslands,\n\t\t\t\t\t\trequestId,\n\t\t\t\t\t\tresolvedIndexPath,\n\t\t\t\t\t\tmaybeProps\n\t\t\t\t\t),\n\t\t\t\t\t{ hasIslands: shouldProcessIslands }\n\t\t\t\t);\n\n\t\t\t\treturn new Response(html, withHtmlContentType(responseInit));\n\t\t\t};\n\n\t\t\treturn await runWithStreamingSlotWarningScope(\n\t\t\t\t() =>\n\t\t\t\t\toptions?.collectStreamingSlots === true\n\t\t\t\t\t\t? withRegisteredStreamingSlots(\n\t\t\t\t\t\t\t\trenderPageResponse,\n\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: renderPageResponse(),\n\t\t\t\t{ handlerCallsite }\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error('[SSR] Angular render error:', error);\n\n\t\t\tconst pageName = derivePageName(resolvedPagePath);\n\t\t\tconst conventionResponse = await renderConventionError(\n\t\t\t\t'angular',\n\t\t\t\tpageName,\n\t\t\t\terror\n\t\t\t);\n\t\t\tif (conventionResponse) return conventionResponse;\n\n\t\t\treturn new Response(ssrErrorPage('angular', error), {\n\t\t\t\theaders: { 'Content-Type': 'text/html' },\n\t\t\t\tstatus: 500\n\t\t\t});\n\t\t}\n\t});\n};\n",
|
|
6
|
-
"import type { EnvironmentProviders, Provider } from '@angular/core';\nimport { resolveAngularRuntimePath } from './resolveAngularPackage';\n\nlet noopAnimationProvidersPromise: Promise<\n\t(Provider | EnvironmentProviders)[]\n> | null = null;\n\nconst loadNoopAnimationProviders = async () => {\n\tconst animations = await import(\n\t\tresolveAngularRuntimePath('@angular/platform-browser/animations')\n\t);\n\n\treturn animations.provideNoopAnimations();\n};\n\nexport const buildServerAnimationProviders = (\n\tusesLegacyAnimations: boolean\n) => {\n\tif (!usesLegacyAnimations) return Promise.resolve([]);\n\n\tnoopAnimationProvidersPromise ??= loadNoopAnimationProviders();\n\n\treturn noopAnimationProvidersPromise;\n};\n",
|
|
7
|
-
"import type { EnvironmentProviders, Provider } from '@angular/core';\nimport type { AngularDeps } from '../../types/angular';\nimport { resolveAngularPackage } from './resolveAngularPackage';\n\ntype AngularRouterModule = typeof import('@angular/router');\n\nconst DEFAULT_REDIRECT_STATUS = 302;\nconst SUCCESS_STATUS = 200;\n\nconst isRouterRedirectCancel = (\n\tevent: unknown,\n\trouterModule: AngularRouterModule\n) =>\n\tevent instanceof routerModule.NavigationCancel &&\n\tevent.code === routerModule.NavigationCancellationCode.Redirect;\n\nconst getNavigationStartUrl = (\n\tevent: unknown,\n\trouterModule: AngularRouterModule\n) => {\n\tif (!(event instanceof routerModule.NavigationStart)) return null;\n\n\treturn event.url;\n};\n\nconst applyRedirectResponse = (\n\tresponseInit: ResponseInit | undefined,\n\tlocation: string\n) => {\n\tif (!responseInit) return;\n\n\tconst headers = new Headers(responseInit.headers);\n\theaders.set('Location', location);\n\tresponseInit.headers = headers;\n\n\tif (\n\t\ttypeof responseInit.status === 'undefined' ||\n\t\tresponseInit.status === SUCCESS_STATUS\n\t) {\n\t\tresponseInit.status = DEFAULT_REDIRECT_STATUS;\n\t}\n};\n\nconst buildRedirectEventHandler = (\n\tresponseInit: ResponseInit | undefined,\n\trouterModule: AngularRouterModule\n) => {\n\tlet waitingForRedirectTarget = false;\n\n\treturn (event: unknown) => {\n\t\tif (isRouterRedirectCancel(event, routerModule)) {\n\t\t\twaitingForRedirectTarget = true;\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!waitingForRedirectTarget) return;\n\n\t\tconst redirectUrl = getNavigationStartUrl(event, routerModule);\n\t\tif (!redirectUrl) return;\n\n\t\tapplyRedirectResponse(responseInit, redirectUrl);\n\t\twaitingForRedirectTarget = false;\n\t};\n};\n\nexport const buildRouterRedirectProviders = async (\n\tdeps: AngularDeps,\n\tresponseInit: ResponseInit | undefined\n) => {\n\tlet routerModule: AngularRouterModule;\n\n\ttry {\n\t\trouterModule = await import(resolveAngularPackage('@angular/router'));\n\t} catch {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\tmulti: true,\n\t\t\tprovide: deps.ENVIRONMENT_INITIALIZER,\n\t\t\tuseValue: () => {\n\t\t\t\tconst router = deps.inject(routerModule.Router, {\n\t\t\t\t\toptional: true\n\t\t\t\t});\n\t\t\t\tif (!router) return;\n\n\t\t\t\trouter.events.subscribe(\n\t\t\t\t\tbuildRedirectEventHandler(responseInit, routerModule)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t] satisfies (Provider | EnvironmentProviders)[];\n};\n",
|
|
8
|
-
"import type {\n\tIslandFramework,\n\tIslandHydrate,\n\tRuntimeIslandRenderProps\n} from '../../types/island';\nimport { requireCurrentIslandRegistry } from '../core/currentIslandRegistry';\nimport { renderIslandMarkup } from '../core/renderIslandMarkup';\n\nconst ANGULAR_ISLAND_TAG_RE =\n\t/<absolute-island\\b([^>]*)>[\\s\\S]*?<\\/absolute-island>/gi;\nconst ATTRIBUTE_RE =\n\t/([A-Za-z_:][-A-Za-z0-9_:.]*)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/g;\n\nconst islandFrameworks: IslandFramework[] = [\n\t'react',\n\t'svelte',\n\t'vue',\n\t'angular'\n];\n\nconst islandHydrationModes: IslandHydrate[] = [\n\t'load',\n\t'idle',\n\t'visible',\n\t'none'\n];\n\nconst decodeHtmlAttribute = (value: string) =>\n\tvalue\n\t\t.replaceAll('"', '\"')\n\t\t.replaceAll('"', '\"')\n\t\t.replaceAll(''', \"'\")\n\t\t.replaceAll(''', \"'\")\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>');\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isIslandFramework = (value: string): value is IslandFramework =>\n\tislandFrameworks.some((framework) => framework === value);\n\nconst isIslandHydrate = (value: string): value is IslandHydrate =>\n\tislandHydrationModes.some((mode) => mode === value);\n\nconst parseAttributes = (attributeString: string) => {\n\tconst attributes = new Map<string, string>();\n\tlet match = ATTRIBUTE_RE.exec(attributeString);\n\n\twhile (match) {\n\t\tconst [, key, doubleQuotedValue, singleQuotedValue] = match;\n\t\tmatch = ATTRIBUTE_RE.exec(attributeString);\n\t\tif (!key) continue;\n\n\t\tattributes.set(\n\t\t\tkey,\n\t\t\tdecodeHtmlAttribute(doubleQuotedValue ?? singleQuotedValue ?? '')\n\t\t);\n\t}\n\n\tATTRIBUTE_RE.lastIndex = 0;\n\n\treturn attributes;\n};\n\nconst parseAngularIslandProps = (\n\tattributeString: string\n): RuntimeIslandRenderProps | null => {\n\tconst attributes = parseAttributes(attributeString);\n\tconst component = attributes.get('component');\n\tconst framework = attributes.get('framework');\n\tconst hydrate = attributes.get('hydrate') ?? 'load';\n\tconst serializedProps = attributes.get('data-abs-props') ?? '{}';\n\n\tif (!component || !framework) {\n\t\treturn null;\n\t}\n\n\tif (!isIslandFramework(framework) || !isIslandHydrate(hydrate)) {\n\t\treturn null;\n\t}\n\n\tlet parsedProps: Record<string, unknown> = {};\n\ttry {\n\t\tconst candidate: unknown = JSON.parse(serializedProps);\n\t\tparsedProps = isRecord(candidate) ? candidate : {};\n\t} catch {\n\t\t// parsedProps remains default {}\n\t}\n\n\treturn {\n\t\tcomponent,\n\t\tframework,\n\t\thydrate,\n\t\tprops: parsedProps\n\t};\n};\n\nexport const lowerAngularServerIslands = async (html: string) => {\n\tif (!ANGULAR_ISLAND_TAG_RE.test(html)) {\n\t\treturn html;\n\t}\n\n\tconst registry = requireCurrentIslandRegistry();\n\tANGULAR_ISLAND_TAG_RE.lastIndex = 0;\n\n\tconst segments: {\n\t\tbefore: string;\n\t\tprops: ReturnType<typeof parseAngularIslandProps>;\n\t\tfullMatch: string;\n\t}[] = [];\n\tlet lastIndex = 0;\n\tlet match = ANGULAR_ISLAND_TAG_RE.exec(html);\n\n\twhile (match) {\n\t\tconst [fullMatch, rawAttributeString] = match;\n\t\tconst attributeString = rawAttributeString ?? '';\n\t\tsegments.push({\n\t\t\tbefore: html.slice(lastIndex, match.index),\n\t\t\tfullMatch,\n\t\t\tprops: parseAngularIslandProps(attributeString)\n\t\t});\n\t\tlastIndex = match.index + fullMatch.length;\n\t\tmatch = ANGULAR_ISLAND_TAG_RE.exec(html);\n\t}\n\n\tANGULAR_ISLAND_TAG_RE.lastIndex = 0;\n\n\tconst renderedSegments = await Promise.all(\n\t\tsegments.map(\n\t\t\tasync (segment) =>\n\t\t\t\tsegment.before +\n\t\t\t\t(segment.props\n\t\t\t\t\t? await renderIslandMarkup(registry, segment.props)\n\t\t\t\t\t: segment.fullMatch)\n\t\t)\n\t);\n\n\treturn renderedSegments.join('') + html.slice(lastIndex);\n};\n",
|
|
9
|
-
"import type { SecurityContext } from '@angular/core';\nimport type { SafeValue } from '@angular/platform-browser';\nimport type { AngularDeps } from '../../types/angular';\n\nconst escapeHtml = (str: string) =>\n\tString(str)\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"');\n\nconst bypassValue = (value: string): SafeValue => ({\n\tchangingThisBreaksApplicationSecurity: value\n});\n\n// Deferred: SsrSanitizer class is built after deps load because it\n// extends DomSanitizer which comes from the lazy import. We cache the\n// class + singleton instance after the first request.\nlet ssrSanitizer: InstanceType<AngularDeps['DomSanitizer']> | null = null;\n\nexport const getSsrSanitizer = (deps: AngularDeps) => {\n\tif (ssrSanitizer) return ssrSanitizer;\n\n\tconst SsrSanitizerClass = class extends deps.DomSanitizer {\n\t\tsanitize(ctx: SecurityContext, value: SafeValue | string | null) {\n\t\t\tif (value === null) return null;\n\t\t\tlet strValue: string;\n\t\t\tlet isTrustedHtml = false;\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tstrValue = value;\n\t\t\t} else if (\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t'changingThisBreaksApplicationSecurity' in value\n\t\t\t) {\n\t\t\t\tstrValue = String(value.changingThisBreaksApplicationSecurity);\n\t\t\t\tisTrustedHtml = true;\n\t\t\t} else {\n\t\t\t\tstrValue = String(value);\n\t\t\t}\n\n\t\t\tif (ctx === deps.SecurityContext.HTML) {\n\t\t\t\tif (isTrustedHtml) {\n\t\t\t\t\treturn strValue;\n\t\t\t\t}\n\n\t\t\t\treturn escapeHtml(strValue);\n\t\t\t}\n\n\t\t\treturn strValue;\n\t\t}\n\t\tbypassSecurityTrustHtml(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustStyle(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustScript(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustUrl(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t\tbypassSecurityTrustResourceUrl(value: string) {\n\t\t\treturn bypassValue(value);\n\t\t}\n\t};\n\n\tssrSanitizer = new SsrSanitizerClass();\n\n\treturn ssrSanitizer;\n};\nexport const resetSsrSanitizer = () => {\n\tssrSanitizer = null;\n};\n"
|
|
10
|
-
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "23DD6645EA3894AB64756E2164756E21",
|
|
13
|
-
"names": []
|
|
14
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|