@ecopages/core 0.2.0-beta.2 → 0.2.0-beta.20
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/README.md +1 -1
- package/package.json +163 -3
- package/src/adapters/abstract/application-adapter.d.ts +104 -5
- package/src/adapters/abstract/application-adapter.js +125 -1
- package/src/adapters/abstract/server-adapter.d.ts +6 -2
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +60 -0
- package/src/adapters/abstract/ws-pattern-matcher.js +61 -0
- package/src/adapters/bun/client-bridge.d.ts +1 -0
- package/src/adapters/bun/client-bridge.js +3 -0
- package/src/adapters/bun/create-app.d.ts +6 -4
- package/src/adapters/bun/create-app.js +65 -43
- package/src/adapters/bun/hmr-manager.d.ts +2 -1
- package/src/adapters/bun/hmr-manager.js +2 -2
- package/src/adapters/bun/server-adapter.d.ts +90 -22
- package/src/adapters/bun/server-adapter.js +265 -84
- package/src/adapters/bun/static-preview-host.js +25 -20
- package/src/adapters/create-app.d.ts +13 -11
- package/src/adapters/create-app.js +2 -51
- package/src/adapters/index.d.ts +1 -1
- package/src/adapters/index.js +1 -2
- package/src/adapters/node/create-app.d.ts +5 -1
- package/src/adapters/node/create-app.js +51 -12
- package/src/adapters/node/node-client-bridge.d.ts +1 -0
- package/src/adapters/node/node-client-bridge.js +3 -0
- package/src/adapters/node/node-hmr-manager.d.ts +2 -1
- package/src/adapters/node/node-hmr-manager.js +2 -2
- package/src/adapters/node/server-adapter-dependencies.js +4 -0
- package/src/adapters/node/server-adapter.d.ts +62 -20
- package/src/adapters/node/server-adapter.js +161 -131
- package/src/adapters/node/static-content-server.d.ts +1 -0
- package/src/adapters/node/static-content-server.js +10 -2
- package/src/adapters/node/static-preview-host.js +27 -12
- package/src/adapters/shared/bun-user-websocket-lifecycle.d.ts +22 -0
- package/src/adapters/shared/bun-user-websocket-lifecycle.js +96 -0
- package/src/adapters/shared/copy-runtime-public-dir.d.ts +6 -0
- package/src/adapters/shared/copy-runtime-public-dir.js +24 -0
- package/src/adapters/shared/fs-server-response-matcher.d.ts +2 -0
- package/src/adapters/shared/fs-server-response-matcher.js +40 -18
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -2
- package/src/adapters/shared/hmr-entrypoint-registrar.js +3 -26
- package/src/adapters/shared/hmr-html-response.d.ts +1 -1
- package/src/adapters/shared/hmr-html-response.js +4 -1
- package/src/adapters/shared/node-http-websocket-upgrades.d.ts +21 -0
- package/src/adapters/shared/node-http-websocket-upgrades.js +100 -0
- package/src/adapters/shared/port-manager.d.ts +116 -0
- package/src/adapters/shared/port-manager.js +196 -0
- package/src/adapters/shared/runtime-app-bootstrap.d.ts +2 -1
- package/src/adapters/shared/runtime-app-bootstrap.js +3 -6
- package/src/adapters/shared/runtime-server-lifecycle.d.ts +38 -0
- package/src/adapters/shared/runtime-server-lifecycle.js +43 -0
- package/src/adapters/shared/server-adapter.d.ts +2 -1
- package/src/adapters/shared/server-adapter.js +13 -6
- package/src/adapters/shared/server-route-handler.d.ts +4 -1
- package/src/adapters/shared/server-route-handler.js +5 -2
- package/src/adapters/shared/server-static-builder.d.ts +23 -32
- package/src/adapters/shared/server-static-builder.js +97 -73
- package/src/adapters/shared/shared-hmr-manager.d.ts +28 -0
- package/src/adapters/shared/shared-hmr-manager.js +119 -9
- package/src/adapters/shared/static-preview-host.d.ts +5 -0
- package/src/adapters/shared/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/websocket-lifecycle.js +55 -0
- package/src/build/README.md +77 -14
- package/src/build/app-build-manifest-runtime.d.ts +10 -0
- package/src/build/app-build-manifest-runtime.js +90 -0
- package/src/build/build-adapter.d.ts +17 -319
- package/src/build/build-adapter.js +28 -94
- package/src/build/build-contracts.d.ts +97 -0
- package/src/build/build-contracts.js +0 -0
- package/src/build/build-input-fingerprint.d.ts +28 -0
- package/src/build/build-input-fingerprint.js +31 -0
- package/src/build/build-profile-options.d.ts +7 -0
- package/src/build/build-profile-options.js +37 -0
- package/src/build/build-runtime.d.ts +24 -0
- package/src/build/build-runtime.js +65 -0
- package/src/build/deduping-build-executor.d.ts +28 -0
- package/src/build/deduping-build-executor.js +56 -0
- package/src/build/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/jsx-ownership-plugins.js +41 -0
- package/src/build/pages-unified-graph-build.d.ts +31 -0
- package/src/build/pages-unified-graph-build.js +206 -0
- package/src/build/parallel-build-executor.d.ts +21 -0
- package/src/build/parallel-build-executor.js +52 -0
- package/src/build/production-build-cache.d.ts +20 -0
- package/src/build/production-build-cache.js +63 -0
- package/src/build/rolldown-adapter-helpers.d.ts +3 -6
- package/src/build/rolldown-adapter-helpers.js +71 -6
- package/src/build/rolldown-build-adapter.d.ts +2 -6
- package/src/build/rolldown-build-adapter.js +3 -3
- package/src/build/rolldown-build-invocation-metrics.d.ts +12 -0
- package/src/build/rolldown-build-invocation-metrics.js +43 -0
- package/src/build/rolldown-plugin-bridge.d.ts +15 -1
- package/src/build/rolldown-plugin-bridge.js +20 -5
- package/src/build/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown-source-transform-pass.js +58 -0
- package/src/build/runtime-build-executor.d.ts +8 -15
- package/src/build/runtime-build-executor.js +12 -15
- package/src/build/runtime-build-output-normalizer.d.ts +7 -0
- package/src/build/runtime-build-output-normalizer.js +94 -2
- package/src/build/server-entry-build-cache.d.ts +44 -0
- package/src/build/server-entry-build-cache.js +161 -0
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +41 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +23 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +65 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +12 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +73 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +25 -0
- package/src/client/scroll.test.browser.js +37 -0
- package/src/client/view-transitions.d.ts +16 -0
- package/src/client/view-transitions.js +63 -0
- package/src/config/config-builder.d.ts +12 -7
- package/src/config/config-builder.js +12 -9
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +15 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +6 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +15 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +7 -0
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +6 -0
- package/src/eco/README.md +11 -0
- package/src/eco/eco-declared-component.d.ts +14 -0
- package/src/eco/eco-declared-component.js +16 -0
- package/src/eco/eco.browser.js +5 -6
- package/src/eco/eco.js +5 -6
- package/src/eco/eco.types.d.ts +2 -2
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +59 -0
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +7 -1
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/hmr/client/hmr-runtime.js +5 -2
- package/src/hmr/hmr-entrypoint-output.d.ts +28 -0
- package/src/hmr/hmr-entrypoint-output.js +58 -0
- package/src/hmr/strategies/js-hmr-strategy.d.ts +3 -0
- package/src/hmr/strategies/js-hmr-strategy.js +68 -18
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +29 -0
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -6
- package/src/integrations/ghtml/ghtml-renderer.js +2 -51
- package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
- package/src/integrations/ghtml/ghtml.plugin.js +7 -14
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +19 -0
- package/src/plugins/eco-component-meta-plugin.js +5 -8
- package/src/plugins/foreign-jsx-override-plugin.js +4 -6
- package/src/plugins/integration-plugin.d.ts +19 -9
- package/src/plugins/integration-plugin.js +7 -4
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +26 -0
- package/src/plugins/processor.d.ts +19 -4
- package/src/plugins/processor.js +22 -4
- package/src/plugins/source-transform.d.ts +31 -0
- package/src/plugins/source-transform.js +23 -1
- package/src/route-renderer/GRAPH.md +8 -8
- package/src/route-renderer/README.md +30 -28
- package/src/route-renderer/orchestration/component-graph-collectors.d.ts +10 -0
- package/src/route-renderer/orchestration/component-graph-collectors.js +143 -0
- package/src/route-renderer/orchestration/component-graph.d.ts +36 -0
- package/src/route-renderer/orchestration/component-graph.js +98 -0
- package/src/route-renderer/orchestration/component-render-context.d.ts +3 -10
- package/src/route-renderer/orchestration/component-render-context.js +3 -1
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +1 -18
- package/src/route-renderer/orchestration/declared-ownership-graph.js +5 -31
- package/src/route-renderer/orchestration/document-shell-render.service.d.ts +90 -0
- package/src/route-renderer/orchestration/document-shell-render.service.js +120 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +59 -29
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +164 -35
- package/src/route-renderer/orchestration/global-injector-assets.service.d.ts +7 -0
- package/src/route-renderer/orchestration/global-injector-assets.service.js +32 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +18 -54
- package/src/route-renderer/orchestration/integration-renderer.js +113 -195
- package/src/route-renderer/orchestration/integration-route-render-adapter.d.ts +38 -0
- package/src/route-renderer/orchestration/integration-route-render-adapter.js +27 -0
- package/src/route-renderer/orchestration/layout-shell-props.service.d.ts +20 -0
- package/src/route-renderer/orchestration/layout-shell-props.service.js +31 -0
- package/src/route-renderer/orchestration/ownership-validation.service.d.ts +5 -0
- package/src/route-renderer/orchestration/ownership-validation.service.js +29 -1
- package/src/route-renderer/orchestration/page-browser-graph-contribution.loader.d.ts +9 -0
- package/src/route-renderer/orchestration/page-browser-graph-contribution.loader.js +7 -0
- package/src/route-renderer/orchestration/page-browser-graph.service.d.ts +25 -0
- package/src/route-renderer/orchestration/page-browser-graph.service.js +174 -0
- package/src/route-renderer/orchestration/render-output.utils.d.ts +2 -0
- package/src/route-renderer/orchestration/render-output.utils.js +4 -0
- package/src/route-renderer/orchestration/route-html-finalization.service.d.ts +17 -0
- package/src/route-renderer/orchestration/route-html-finalization.service.js +26 -0
- package/src/route-renderer/orchestration/route-prepared-options.builder.d.ts +26 -0
- package/src/route-renderer/orchestration/route-prepared-options.builder.js +54 -0
- package/src/route-renderer/orchestration/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-prepared-options.utils.js +33 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +8 -39
- package/src/route-renderer/orchestration/route-render-orchestrator.js +53 -461
- package/src/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
- package/src/route-renderer/orchestration/string-markup-renderer.js +55 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +5 -2
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +10 -0
- package/src/router/client/link-intent.test.browser.js +12 -1
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +101 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +92 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +12 -2
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +4 -2
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +27 -7
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +36 -14
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +17 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +2 -31
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +2 -30
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +43 -0
- package/src/services/assets/browser-bundle.service.d.ts +3 -1
- package/src/services/assets/browser-bundle.service.js +17 -5
- package/src/services/html/html-transformer.service.d.ts +1 -1
- package/src/services/html/html-transformer.service.js +4 -4
- package/src/services/invalidation/development-invalidation.service.d.ts +20 -2
- package/src/services/invalidation/development-invalidation.service.js +56 -2
- package/src/services/module-loading/README.md +49 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +5 -17
- package/src/services/module-loading/page-module-import.service.d.ts +5 -1
- package/src/services/module-loading/page-module-import.service.js +97 -45
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +24 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +37 -0
- package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
- package/src/services/module-loading/route-module-build-cache.js +38 -0
- package/src/services/module-loading/route-module-build-cache.store.d.ts +57 -0
- package/src/services/module-loading/route-module-build-cache.store.js +207 -0
- package/src/services/module-loading/route-module-build-manifest.d.ts +61 -0
- package/src/services/module-loading/route-module-build-manifest.js +116 -0
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
- package/src/services/module-loading/route-module-dependency-hasher.js +121 -0
- package/src/services/module-loading/server-module-transpiler.service.js +1 -1
- package/src/static-site-generator/README.md +33 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +10 -0
- package/src/static-site-generator/static-build-invalidation.js +59 -0
- package/src/static-site-generator/static-export-context.d.ts +22 -0
- package/src/static-site-generator/static-export-context.js +0 -0
- package/src/static-site-generator/static-site-generator.d.ts +17 -20
- package/src/static-site-generator/static-site-generator.js +188 -85
- package/src/types/internal-types.d.ts +16 -9
- package/src/types/public-types.d.ts +138 -26
- package/src/utils/parse-cli-args.d.ts +2 -0
- package/src/utils/parse-cli-args.js +6 -0
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +5 -6
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +48 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +16 -0
- package/src/watchers/project-watcher.d.ts +25 -2
- package/src/watchers/project-watcher.js +130 -23
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -166
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -43
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
- package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → client/navigation-scripts/navigation-scripts.test.browser.d.ts} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → client/scroll.test.browser.d.ts} +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
import type { PageBrowserGraphContribution, PageBrowserGraphResult } from '../../types/public-types.js';
|
|
3
|
+
import { type AssetProcessingService } from '../../services/assets/asset-processing-service/index.js';
|
|
4
|
+
export type PageBrowserGraphResolveInput = {
|
|
5
|
+
routeFile: string;
|
|
6
|
+
integrationName: string;
|
|
7
|
+
collectContribution: (routeFile: string) => Promise<PageBrowserGraphContribution | undefined>;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Resolves declarative page browser graph assets for one route and integration.
|
|
11
|
+
*/
|
|
12
|
+
export declare class PageBrowserGraphService {
|
|
13
|
+
private readonly appConfig;
|
|
14
|
+
private readonly assetProcessingService;
|
|
15
|
+
private readonly pageBrowserGraphCache;
|
|
16
|
+
private readonly groupedPageBrowserGraphCache;
|
|
17
|
+
constructor(appConfig: EcoPagesAppConfig, assetProcessingService: AssetProcessingService);
|
|
18
|
+
resolvePageBrowserGraph(input: PageBrowserGraphResolveInput): Promise<PageBrowserGraphResult | undefined>;
|
|
19
|
+
private isHmrEnabled;
|
|
20
|
+
private buildPageBrowserGraph;
|
|
21
|
+
private resolveGroupedPageBrowserAssets;
|
|
22
|
+
private buildGroupedPageBrowserAssets;
|
|
23
|
+
private listIntegrationRouteFiles;
|
|
24
|
+
private partitionPageBrowserGraphAssets;
|
|
25
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileSystem } from "@ecopages/file-system";
|
|
3
|
+
import {
|
|
4
|
+
} from "../../services/assets/asset-processing-service/index.js";
|
|
5
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
6
|
+
function isGroupedContentScriptAsset(asset) {
|
|
7
|
+
return asset.kind === "script" && asset.source === "content" && Boolean(asset.groupedBundle?.id);
|
|
8
|
+
}
|
|
9
|
+
function getGroupedBundleAssetKey(groupedBundle) {
|
|
10
|
+
return `${groupedBundle.id}:${groupedBundle.entryName}`;
|
|
11
|
+
}
|
|
12
|
+
class PageBrowserGraphService {
|
|
13
|
+
appConfig;
|
|
14
|
+
assetProcessingService;
|
|
15
|
+
pageBrowserGraphCache = /* @__PURE__ */ new Map();
|
|
16
|
+
groupedPageBrowserGraphCache = /* @__PURE__ */ new Map();
|
|
17
|
+
constructor(appConfig, assetProcessingService) {
|
|
18
|
+
this.appConfig = appConfig;
|
|
19
|
+
this.assetProcessingService = assetProcessingService;
|
|
20
|
+
}
|
|
21
|
+
async resolvePageBrowserGraph(input) {
|
|
22
|
+
if (this.isHmrEnabled()) {
|
|
23
|
+
return await this.buildPageBrowserGraph(input);
|
|
24
|
+
}
|
|
25
|
+
const cacheKey = `${input.integrationName}:${input.routeFile}`;
|
|
26
|
+
const cachedGraph = this.pageBrowserGraphCache.get(cacheKey);
|
|
27
|
+
if (cachedGraph) {
|
|
28
|
+
return await cachedGraph;
|
|
29
|
+
}
|
|
30
|
+
const pendingGraph = this.buildPageBrowserGraph(input).catch((error) => {
|
|
31
|
+
this.pageBrowserGraphCache.delete(cacheKey);
|
|
32
|
+
throw error;
|
|
33
|
+
});
|
|
34
|
+
this.pageBrowserGraphCache.set(cacheKey, pendingGraph);
|
|
35
|
+
return await pendingGraph;
|
|
36
|
+
}
|
|
37
|
+
isHmrEnabled() {
|
|
38
|
+
return typeof this.assetProcessingService.getHmrManager === "function" && this.assetProcessingService.getHmrManager()?.isEnabled() === true;
|
|
39
|
+
}
|
|
40
|
+
async buildPageBrowserGraph(input) {
|
|
41
|
+
const contribution = await input.collectContribution(input.routeFile);
|
|
42
|
+
if (!contribution) {
|
|
43
|
+
return void 0;
|
|
44
|
+
}
|
|
45
|
+
const groupedDependencies = (contribution.dependencies ?? []).filter((dep) => isGroupedContentScriptAsset(dep));
|
|
46
|
+
const ungroupedDependencies = (contribution.dependencies ?? []).filter(
|
|
47
|
+
(dep) => !isGroupedContentScriptAsset(dep)
|
|
48
|
+
);
|
|
49
|
+
const groupedAssets = groupedDependencies.length ? (await this.resolveGroupedPageBrowserAssets(input, contribution)).get(input.routeFile) ?? [] : [];
|
|
50
|
+
const processedDependencies = ungroupedDependencies.length ? await this.assetProcessingService.processDependencies(
|
|
51
|
+
ungroupedDependencies,
|
|
52
|
+
`${input.integrationName}:${input.routeFile}`
|
|
53
|
+
) : [];
|
|
54
|
+
const resolvedAssets = [...processedDependencies, ...groupedAssets, ...contribution.assets ?? []];
|
|
55
|
+
return this.partitionPageBrowserGraphAssets(resolvedAssets);
|
|
56
|
+
}
|
|
57
|
+
async resolveGroupedPageBrowserAssets(input, currentContribution) {
|
|
58
|
+
if (this.isHmrEnabled()) {
|
|
59
|
+
const result = await this.buildGroupedPageBrowserAssets(input, currentContribution);
|
|
60
|
+
return result.assetsByRoute;
|
|
61
|
+
}
|
|
62
|
+
const cacheKey = input.integrationName;
|
|
63
|
+
let pending = this.groupedPageBrowserGraphCache.get(cacheKey);
|
|
64
|
+
if (!pending) {
|
|
65
|
+
pending = this.buildGroupedPageBrowserAssets(input, currentContribution).then((result) => {
|
|
66
|
+
if (result.hasCollectionFailures) {
|
|
67
|
+
this.groupedPageBrowserGraphCache.delete(cacheKey);
|
|
68
|
+
}
|
|
69
|
+
return result.assetsByRoute;
|
|
70
|
+
}).catch((error) => {
|
|
71
|
+
this.groupedPageBrowserGraphCache.delete(cacheKey);
|
|
72
|
+
throw error;
|
|
73
|
+
});
|
|
74
|
+
this.groupedPageBrowserGraphCache.set(cacheKey, pending);
|
|
75
|
+
}
|
|
76
|
+
return await pending;
|
|
77
|
+
}
|
|
78
|
+
async buildGroupedPageBrowserAssets(input, currentContribution) {
|
|
79
|
+
const routeFiles = await this.listIntegrationRouteFiles(input.integrationName);
|
|
80
|
+
const currentRouteGroupedDependencies = (currentContribution.dependencies ?? []).filter(
|
|
81
|
+
(dep) => isGroupedContentScriptAsset(dep)
|
|
82
|
+
);
|
|
83
|
+
const groupedDependencies = [...currentRouteGroupedDependencies];
|
|
84
|
+
const groupedAssetKeysByRoute = /* @__PURE__ */ new Map();
|
|
85
|
+
let hasCollectionFailures = false;
|
|
86
|
+
if (currentRouteGroupedDependencies.length > 0) {
|
|
87
|
+
groupedAssetKeysByRoute.set(
|
|
88
|
+
input.routeFile,
|
|
89
|
+
new Set(currentRouteGroupedDependencies.map((dep) => getGroupedBundleAssetKey(dep.groupedBundle)))
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
for (const routeFile of routeFiles) {
|
|
93
|
+
if (routeFile === input.routeFile) {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
let contribution;
|
|
97
|
+
try {
|
|
98
|
+
contribution = await input.collectContribution(routeFile);
|
|
99
|
+
} catch (error) {
|
|
100
|
+
hasCollectionFailures = true;
|
|
101
|
+
appLogger.warn(
|
|
102
|
+
`Skipping grouped page-browser contribution for ${routeFile}: ${error instanceof Error ? error.message : String(error)}`
|
|
103
|
+
);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (!contribution?.dependencies?.length) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const routeGroupedDependencies = contribution.dependencies.filter(
|
|
110
|
+
(dep) => isGroupedContentScriptAsset(dep)
|
|
111
|
+
);
|
|
112
|
+
if (routeGroupedDependencies.length === 0) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
groupedDependencies.push(...routeGroupedDependencies);
|
|
116
|
+
groupedAssetKeysByRoute.set(
|
|
117
|
+
routeFile,
|
|
118
|
+
new Set(routeGroupedDependencies.map((dep) => getGroupedBundleAssetKey(dep.groupedBundle)))
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
if (groupedDependencies.length === 0) {
|
|
122
|
+
return {
|
|
123
|
+
assetsByRoute: /* @__PURE__ */ new Map(),
|
|
124
|
+
hasCollectionFailures
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const processedGroupedDependencies = await this.assetProcessingService.processDependencies(
|
|
128
|
+
groupedDependencies,
|
|
129
|
+
`${input.integrationName}:grouped-page-browser-graph`
|
|
130
|
+
);
|
|
131
|
+
const groupedAssetsByRoute = /* @__PURE__ */ new Map();
|
|
132
|
+
for (const [routeFile, groupedAssetKeys] of groupedAssetKeysByRoute) {
|
|
133
|
+
groupedAssetsByRoute.set(
|
|
134
|
+
routeFile,
|
|
135
|
+
processedGroupedDependencies.filter((asset) => {
|
|
136
|
+
if (!asset.groupedBundle) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
return groupedAssetKeys.has(getGroupedBundleAssetKey(asset.groupedBundle));
|
|
140
|
+
})
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
assetsByRoute: groupedAssetsByRoute,
|
|
145
|
+
hasCollectionFailures
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
async listIntegrationRouteFiles(integrationName) {
|
|
149
|
+
const integration = this.appConfig.integrations.find((plugin) => plugin.name === integrationName);
|
|
150
|
+
if (!integration) {
|
|
151
|
+
return [];
|
|
152
|
+
}
|
|
153
|
+
const scannedFiles = await fileSystem.glob(
|
|
154
|
+
integration.extensions.map((extension) => `**/*${extension}`),
|
|
155
|
+
{ cwd: this.appConfig.absolutePaths.pagesDir }
|
|
156
|
+
);
|
|
157
|
+
return scannedFiles.filter((file) => !file.includes(".ecopages-node.")).map((file) => path.join(this.appConfig.absolutePaths.pagesDir, file)).sort((left, right) => left.localeCompare(right));
|
|
158
|
+
}
|
|
159
|
+
partitionPageBrowserGraphAssets(assets) {
|
|
160
|
+
const entryAssets = [];
|
|
161
|
+
const chunkAssets = [];
|
|
162
|
+
for (const asset of assets) {
|
|
163
|
+
if (asset.packageRole === "dynamic-chunk") {
|
|
164
|
+
chunkAssets.push(asset);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
entryAssets.push(asset);
|
|
168
|
+
}
|
|
169
|
+
return { entryAssets, chunkAssets };
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
export {
|
|
173
|
+
PageBrowserGraphService
|
|
174
|
+
};
|
|
@@ -21,6 +21,8 @@ type MarkupNodeLikeShape = {
|
|
|
21
21
|
* @typeParam T Expected resolved type of the thenable.
|
|
22
22
|
*/
|
|
23
23
|
export declare function isThenable<T>(value: unknown): value is PromiseLike<T>;
|
|
24
|
+
/** Returns whether a value looks like a DOM-like markup node from SSR integrations. */
|
|
25
|
+
export declare function isMarkupNodeLike(value: unknown): value is MarkupNodeLikeShape;
|
|
24
26
|
/**
|
|
25
27
|
* Injects `data-eco-trigger` into the first real HTML element opening tag of
|
|
26
28
|
* a component's rendered output string.
|
|
@@ -82,6 +82,9 @@ function isTemplateContentShape(value) {
|
|
|
82
82
|
function isMarkupNodeLikeShape(value) {
|
|
83
83
|
return typeof value === "object" && value !== null && typeof value.nodeType === "number";
|
|
84
84
|
}
|
|
85
|
+
function isMarkupNodeLike(value) {
|
|
86
|
+
return isMarkupNodeLikeShape(value);
|
|
87
|
+
}
|
|
85
88
|
function injectTriggerAttributeIntoString(content, triggerId) {
|
|
86
89
|
const str = content;
|
|
87
90
|
let i = 0;
|
|
@@ -165,6 +168,7 @@ export {
|
|
|
165
168
|
addTriggerAttribute,
|
|
166
169
|
decodeHtmlEntities,
|
|
167
170
|
inspectUnresolvedMarkerArtifactHtml,
|
|
171
|
+
isMarkupNodeLike,
|
|
168
172
|
isThenable,
|
|
169
173
|
normalizeUnresolvedMarkerArtifactHtml,
|
|
170
174
|
wrapWithScriptsInjector
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { HtmlDocumentContribution } from '../../services/html/html-transformer.service.js';
|
|
2
|
+
import type { IntegrationRendererRenderOptions } from '../../types/public-types.js';
|
|
3
|
+
import type { RouteHtmlFinalization } from './route-render-orchestrator.js';
|
|
4
|
+
export type RouteHtmlFinalizationContext<C> = {
|
|
5
|
+
renderOptions: IntegrationRendererRenderOptions<C>;
|
|
6
|
+
getDocumentAttributes: (renderOptions: IntegrationRendererRenderOptions<C>) => Record<string, string> | undefined;
|
|
7
|
+
getHtmlDocumentContributions: (options: {
|
|
8
|
+
renderOptions: IntegrationRendererRenderOptions<C>;
|
|
9
|
+
partial: boolean;
|
|
10
|
+
}) => HtmlDocumentContribution[] | undefined;
|
|
11
|
+
applyAttributesToFirstBodyElement: (html: string, attributes: Record<string, string>) => string;
|
|
12
|
+
applyAttributesToHtmlElement: (html: string, attributes: Record<string, string>) => string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Builds the structural HTML finalization plan for one prepared route render.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildRouteHtmlFinalization<C>(context: RouteHtmlFinalizationContext<C>): RouteHtmlFinalization;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
function buildRouteHtmlFinalization(context) {
|
|
2
|
+
const { renderOptions } = context;
|
|
3
|
+
const componentRootAttributes = renderOptions.componentRender?.canAttachAttributes && renderOptions.componentRender.rootAttributes && Object.keys(renderOptions.componentRender.rootAttributes).length > 0 ? renderOptions.componentRender.rootAttributes : void 0;
|
|
4
|
+
const documentAttributes = context.getDocumentAttributes(renderOptions);
|
|
5
|
+
const htmlContributions = context.getHtmlDocumentContributions({ renderOptions, partial: false });
|
|
6
|
+
const hasStructuralFinalization = componentRootAttributes && Object.keys(componentRootAttributes).length > 0 || documentAttributes && Object.keys(documentAttributes).length > 0;
|
|
7
|
+
if (!hasStructuralFinalization && (!htmlContributions || htmlContributions.length === 0)) {
|
|
8
|
+
return {};
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
htmlContributions,
|
|
12
|
+
finalizeHtml: (html) => {
|
|
13
|
+
let renderedHtml = html;
|
|
14
|
+
if (componentRootAttributes) {
|
|
15
|
+
renderedHtml = context.applyAttributesToFirstBodyElement(renderedHtml, componentRootAttributes);
|
|
16
|
+
}
|
|
17
|
+
if (documentAttributes) {
|
|
18
|
+
renderedHtml = context.applyAttributesToHtmlElement(renderedHtml, documentAttributes);
|
|
19
|
+
}
|
|
20
|
+
return renderedHtml;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
buildRouteHtmlFinalization
|
|
26
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
import type { ComponentRenderResult, EcoComponent, EcoPageComponent, EcoPageFile, HtmlTemplateProps, IntegrationRendererRenderOptions, PageBrowserGraphResult, PageMetadataProps, EcoPageLayoutEntry, RouteRendererOptions } from '../../types/public-types.js';
|
|
3
|
+
import { type ProcessedAsset } from '../../services/assets/asset-processing-service/index.js';
|
|
4
|
+
type PreparedRenderInputs = {
|
|
5
|
+
Page: EcoPageFile['default'] | EcoPageComponent<any>;
|
|
6
|
+
HtmlTemplate: EcoComponent<HtmlTemplateProps>;
|
|
7
|
+
Layouts: EcoComponent[];
|
|
8
|
+
Layout?: EcoComponent;
|
|
9
|
+
layoutEntries?: EcoPageLayoutEntry[];
|
|
10
|
+
props: Record<string, unknown>;
|
|
11
|
+
metadata: PageMetadataProps;
|
|
12
|
+
integrationSpecificProps: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Assembles the final integration render options after route prep dependencies resolve.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildPreparedRenderOptions<C = unknown>(input: {
|
|
18
|
+
routeOptions: RouteRendererOptions;
|
|
19
|
+
resolvedInputs: PreparedRenderInputs;
|
|
20
|
+
resolvedDependencies: ProcessedAsset[];
|
|
21
|
+
allDependencies: ProcessedAsset[];
|
|
22
|
+
pageBrowserGraph?: PageBrowserGraphResult;
|
|
23
|
+
componentRender?: ComponentRenderResult;
|
|
24
|
+
appConfig: EcoPagesAppConfig;
|
|
25
|
+
}): IntegrationRendererRenderOptions<C>;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createPagePackage } from "../../services/assets/asset-processing-service/index.js";
|
|
2
|
+
import { dedupeProcessedAssets } from "./processed-asset-dedupe.js";
|
|
3
|
+
import { createPageLocalsProxy } from "./route-prepared-options.utils.js";
|
|
4
|
+
function buildPreparedRenderOptions(input) {
|
|
5
|
+
const {
|
|
6
|
+
routeOptions,
|
|
7
|
+
resolvedInputs,
|
|
8
|
+
resolvedDependencies,
|
|
9
|
+
allDependencies,
|
|
10
|
+
pageBrowserGraph,
|
|
11
|
+
componentRender,
|
|
12
|
+
appConfig
|
|
13
|
+
} = input;
|
|
14
|
+
const { Page, HtmlTemplate, Layouts, Layout, layoutEntries, props, metadata, integrationSpecificProps } = resolvedInputs;
|
|
15
|
+
const dedupedDependencies = dedupeProcessedAssets(allDependencies);
|
|
16
|
+
const pagePackage = createPagePackage(dedupedDependencies, { pageBrowserGraph });
|
|
17
|
+
const pageProps = {
|
|
18
|
+
...props,
|
|
19
|
+
params: routeOptions.params || {},
|
|
20
|
+
query: routeOptions.query || {}
|
|
21
|
+
};
|
|
22
|
+
const cacheStrategy = Page.cache;
|
|
23
|
+
const defaultCacheStrategy = appConfig.cache?.defaultStrategy ?? "static";
|
|
24
|
+
const effectiveCacheStrategy = cacheStrategy ?? defaultCacheStrategy;
|
|
25
|
+
const localsAvailable = effectiveCacheStrategy === "dynamic" && routeOptions.locals !== void 0;
|
|
26
|
+
const pageLocals = localsAvailable ? routeOptions.locals : createPageLocalsProxy(routeOptions.file);
|
|
27
|
+
const locals = localsAvailable ? routeOptions.locals : void 0;
|
|
28
|
+
const preparedOptions = {
|
|
29
|
+
...routeOptions,
|
|
30
|
+
resolvedDependencies,
|
|
31
|
+
pagePackage,
|
|
32
|
+
componentRender,
|
|
33
|
+
HtmlTemplate,
|
|
34
|
+
Layouts,
|
|
35
|
+
Layout,
|
|
36
|
+
layoutEntries,
|
|
37
|
+
props,
|
|
38
|
+
Page,
|
|
39
|
+
metadata,
|
|
40
|
+
params: routeOptions.params || {},
|
|
41
|
+
query: routeOptions.query || {},
|
|
42
|
+
pageProps,
|
|
43
|
+
locals,
|
|
44
|
+
pageLocals,
|
|
45
|
+
cacheStrategy
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
...integrationSpecificProps,
|
|
49
|
+
...preparedOptions
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export {
|
|
53
|
+
buildPreparedRenderOptions
|
|
54
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { LocalsAccessError } from "../../errors/locals-access-error.js";
|
|
2
|
+
function createPageLocalsProxy(filePath) {
|
|
3
|
+
const errorMessage = `[ecopages] Request locals are only available during request-time rendering with cache: 'dynamic'. Page: ${filePath}. If you meant to use locals here, set cache: 'dynamic' and provide locals from route middleware/handlers.`;
|
|
4
|
+
return new Proxy(
|
|
5
|
+
{},
|
|
6
|
+
{
|
|
7
|
+
get: () => {
|
|
8
|
+
throw new LocalsAccessError(errorMessage);
|
|
9
|
+
},
|
|
10
|
+
set: () => {
|
|
11
|
+
throw new LocalsAccessError(errorMessage);
|
|
12
|
+
},
|
|
13
|
+
has: () => {
|
|
14
|
+
throw new LocalsAccessError(errorMessage);
|
|
15
|
+
},
|
|
16
|
+
ownKeys: () => {
|
|
17
|
+
throw new LocalsAccessError(errorMessage);
|
|
18
|
+
},
|
|
19
|
+
deleteProperty: () => {
|
|
20
|
+
throw new LocalsAccessError(errorMessage);
|
|
21
|
+
},
|
|
22
|
+
defineProperty: () => {
|
|
23
|
+
throw new LocalsAccessError(errorMessage);
|
|
24
|
+
},
|
|
25
|
+
getOwnPropertyDescriptor: () => {
|
|
26
|
+
throw new LocalsAccessError(errorMessage);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
createPageLocalsProxy
|
|
33
|
+
};
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
-
import type { ComponentRenderResult, EcoComponent, EcoPageComponent, EcoPageFile, HtmlTemplateProps, IntegrationRendererRenderOptions, PageBrowserGraphContribution, PageBrowserGraphResult, PageMetadataProps, RouteRendererBody, RouteRendererOptions, RouteRenderResult } from '../../types/public-types.js';
|
|
3
|
-
import {
|
|
2
|
+
import type { ComponentRenderResult, EcoComponent, EcoPageComponent, EcoPageFile, HtmlTemplateProps, IntegrationRendererRenderOptions, PageBrowserGraphContribution, PageBrowserGraphResult, PageMetadataProps, RouteRendererBody, RouteRendererOptions, RouteRenderResult, EcoPageLayoutEntry } from '../../types/public-types.js';
|
|
3
|
+
import type { AssetProcessingService, ProcessedAsset } from '../../services/assets/asset-processing-service/index.js';
|
|
4
4
|
import type { HtmlDocumentContribution } from '../../services/html/html-transformer.service.js';
|
|
5
5
|
import { OwnershipValidationService } from './ownership-validation.service.js';
|
|
6
|
-
import {
|
|
6
|
+
import { PageBrowserGraphService } from './page-browser-graph.service.js';
|
|
7
7
|
export type RouteRenderOrchestratorResolvedInputs = {
|
|
8
8
|
Page: EcoPageFile['default'] | EcoPageComponent<any>;
|
|
9
9
|
HtmlTemplate: EcoComponent<HtmlTemplateProps>;
|
|
10
|
+
Layouts: EcoComponent[];
|
|
10
11
|
Layout?: EcoComponent;
|
|
12
|
+
layoutEntries?: EcoPageLayoutEntry[];
|
|
11
13
|
props: Record<string, unknown>;
|
|
12
14
|
metadata: PageMetadataProps;
|
|
13
15
|
integrationSpecificProps: Record<string, unknown>;
|
|
@@ -64,7 +66,7 @@ export interface RouteRenderOrchestratorAdapter<C> {
|
|
|
64
66
|
/**
|
|
65
67
|
* Runs SSR-policy response transformation and returns the body value exposed to callers.
|
|
66
68
|
*/
|
|
67
|
-
transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[]): Promise<RouteRendererBody>;
|
|
69
|
+
transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[], pagePackage?: IntegrationRendererRenderOptions<C>['pagePackage']): Promise<RouteRendererBody>;
|
|
68
70
|
}
|
|
69
71
|
/**
|
|
70
72
|
* Captured route-render output in both replayable body and string HTML forms.
|
|
@@ -77,8 +79,8 @@ export interface CapturedHtmlRenderResult {
|
|
|
77
79
|
* Optional app-scoped collaborators used by the route render orchestrator.
|
|
78
80
|
*/
|
|
79
81
|
export interface RouteRenderOrchestratorDependencies {
|
|
80
|
-
ownershipPlanningService?: OwnershipPlanningService;
|
|
81
82
|
ownershipValidationService?: OwnershipValidationService;
|
|
83
|
+
pageBrowserGraphService?: PageBrowserGraphService;
|
|
82
84
|
}
|
|
83
85
|
/**
|
|
84
86
|
* Owns one route render from normalized module loading through final HTML output.
|
|
@@ -91,10 +93,8 @@ export interface RouteRenderOrchestratorDependencies {
|
|
|
91
93
|
export declare class RouteRenderOrchestrator {
|
|
92
94
|
private readonly appConfig;
|
|
93
95
|
private readonly assetProcessingService;
|
|
94
|
-
private readonly ownershipPlanningService;
|
|
95
96
|
private readonly ownershipValidationService;
|
|
96
|
-
private readonly
|
|
97
|
-
private readonly groupedPageBrowserGraphCache;
|
|
97
|
+
private readonly pageBrowserGraphService;
|
|
98
98
|
constructor(appConfig: EcoPagesAppConfig, assetProcessingService: AssetProcessingService, dependencies?: RouteRenderOrchestratorDependencies);
|
|
99
99
|
/**
|
|
100
100
|
* Builds normalized route render options before the integration render runs.
|
|
@@ -109,31 +109,6 @@ export declare class RouteRenderOrchestrator {
|
|
|
109
109
|
integrationName: string;
|
|
110
110
|
collectContribution: (routeFile: string) => Promise<PageBrowserGraphContribution | undefined>;
|
|
111
111
|
}): Promise<PageBrowserGraphResult | undefined>;
|
|
112
|
-
private resolvePageBrowserGraph;
|
|
113
|
-
private isHmrEnabled;
|
|
114
|
-
private buildPageBrowserGraph;
|
|
115
|
-
/**
|
|
116
|
-
* Resolves grouped page-browser assets for all routes owned by one integration.
|
|
117
|
-
*
|
|
118
|
-
* @remarks
|
|
119
|
-
* This keeps one shared browser-build result available across sibling routes so
|
|
120
|
-
* navigation can reuse the same emitted client graph instead of rebuilding one
|
|
121
|
-
* page entry at a time. HMR bypasses this cache because the grouped build must
|
|
122
|
-
* reflect the latest source on every request.
|
|
123
|
-
*/
|
|
124
|
-
private resolveGroupedPageBrowserAssets;
|
|
125
|
-
/**
|
|
126
|
-
* Builds the shared grouped page-browser asset map for one integration.
|
|
127
|
-
*
|
|
128
|
-
* @remarks
|
|
129
|
-
* Each route can declare grouped content-script dependencies that should be
|
|
130
|
-
* emitted together. This method collects those declarations across the owning
|
|
131
|
-
* integration, runs the grouped processor once, and then maps the emitted
|
|
132
|
-
* assets back onto the routes that reference them.
|
|
133
|
-
*/
|
|
134
|
-
private buildGroupedPageBrowserAssets;
|
|
135
|
-
private listIntegrationRouteFiles;
|
|
136
|
-
private partitionPageBrowserGraphAssets;
|
|
137
112
|
/**
|
|
138
113
|
* Captures one route render body as HTML while preserving a replayable body value.
|
|
139
114
|
*/
|
|
@@ -147,10 +122,4 @@ export declare class RouteRenderOrchestrator {
|
|
|
147
122
|
*/
|
|
148
123
|
executePrepared<C = unknown>(renderOptions: IntegrationRendererRenderOptions<C>, adapter: RouteRenderOrchestratorAdapter<C>): Promise<RouteRenderResult>;
|
|
149
124
|
private captureRenderedBody;
|
|
150
|
-
private collectResolvedTriggers;
|
|
151
|
-
private collectUsedIntegrationDependencies;
|
|
152
|
-
private collectIntegrationNames;
|
|
153
|
-
private buildGlobalInjectorAssets;
|
|
154
|
-
private buildEagerSsrLazyAssets;
|
|
155
|
-
private collectEagerSsrLazyDependencies;
|
|
156
125
|
}
|