@ecopages/core 0.2.0-beta.3 → 0.2.0-beta.31
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 +38 -9
- package/package.json +241 -30
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +123 -6
- package/src/adapters/abstract/application-adapter.js +151 -1
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +149 -0
- package/src/adapters/abstract/server-adapter.d.ts +16 -2
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
- package/src/adapters/abstract/ws-pattern-matcher.js +30 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +96 -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 +9 -6
- package/src/adapters/bun/create-app.js +76 -45
- package/src/adapters/bun/hmr-manager.d.ts +1 -1
- package/src/adapters/bun/hmr-manager.js +1 -1
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +25 -2
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +1 -1
- package/src/adapters/bun/server-adapter.d.ts +92 -41
- package/src/adapters/bun/server-adapter.js +256 -117
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- 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 +2 -2
- package/src/adapters/index.js +26 -4
- package/src/adapters/node/create-app.d.ts +8 -3
- package/src/adapters/node/create-app.js +61 -13
- 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 +1 -1
- package/src/adapters/node/node-hmr-manager.js +1 -1
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +1 -1
- package/src/adapters/node/server-adapter-dependencies.js +4 -0
- package/src/adapters/node/server-adapter.d.ts +64 -23
- package/src/adapters/node/server-adapter.js +169 -142
- 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.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +27 -12
- package/src/adapters/shared/{hmr-entrypoint-registrar.d.ts → hmr/hmr-entrypoint-registrar.d.ts} +31 -30
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +106 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/{hmr-html-response.js → hmr/hmr-html-response.js} +4 -1
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +101 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +432 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +129 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/{api-response.js → http/api-response.js} +6 -23
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +23 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +63 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/{explicit-static-route-matcher.js → http/explicit-static-route-matcher.js} +3 -38
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/{file-route-middleware-pipeline.js → http/file-route-middleware-pipeline.js} +10 -22
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/{fs-server-response-factory.js → http/fs-server-response-factory.js} +22 -2
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/{fs-server-response-matcher.js → http/fs-server-response-matcher.js} +109 -27
- package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
- package/src/adapters/shared/http/run-middleware-chain.js +17 -0
- package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
- package/src/adapters/shared/{application-adapter.js → runtime/application-adapter.js} +1 -1
- package/src/adapters/shared/runtime/copy-runtime-public-dir.d.ts +6 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +24 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +196 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/{render-context.js → runtime/render-context.js} +8 -17
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -3
- package/src/adapters/shared/{runtime-app-bootstrap.js → runtime/runtime-app-bootstrap.js} +4 -7
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +46 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +57 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +23 -49
- package/src/adapters/shared/runtime/server-adapter.js +226 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/{server-route-handler.js → runtime/server-route-handler.js} +5 -43
- package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +27 -35
- package/src/adapters/shared/runtime/server-static-builder.js +191 -0
- package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
- package/src/adapters/shared/ws/node-http-websocket-upgrades.d.ts +21 -0
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +100 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +55 -0
- package/src/build/README.md +140 -31
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +124 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
- package/src/build/{browser-runtime-plugin.js → browser/browser-runtime-plugin.js} +1 -1
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +41 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +6 -0
- package/src/build/build-adapter.d.ts +29 -334
- package/src/build/build-adapter.js +32 -133
- package/src/build/cache/build-input-fingerprint.d.ts +28 -0
- package/src/build/cache/build-input-fingerprint.js +31 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +6 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +63 -0
- package/src/build/cache/dev-browser-script-cache.d.ts +34 -0
- package/src/build/cache/dev-browser-script-cache.js +90 -0
- package/src/build/cache/pages-unified-graph-build.d.ts +31 -0
- package/src/build/cache/pages-unified-graph-build.js +198 -0
- package/src/build/cache/production-build-cache.d.ts +20 -0
- package/src/build/cache/production-build-cache.js +63 -0
- package/src/build/cache/server-entry-build-cache.d.ts +43 -0
- package/src/build/cache/server-entry-build-cache.js +165 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/{build-manifest.js → contracts/build-manifest.js} +2 -2
- package/src/build/contracts/build-types.js +0 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +23 -9
- package/src/build/{rolldown-adapter-helpers.js → rolldown/rolldown-adapter-helpers.js} +99 -13
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/{rolldown-build-adapter.js → rolldown/rolldown-build-adapter.js} +3 -3
- package/src/build/rolldown/rolldown-build-invocation-metrics.d.ts +12 -0
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +43 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
- package/src/build/{rolldown-plugin-bridge.js → rolldown/rolldown-plugin-bridge.js} +21 -6
- package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown/rolldown-source-transform-pass.js +61 -0
- package/src/build/rolldown/runtime-build-output-normalizer.d.ts +10 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +201 -0
- package/src/build/runtime/build-profile-options.d.ts +7 -0
- package/src/build/runtime/build-profile-options.js +37 -0
- package/src/build/runtime/build-request-identity.d.ts +17 -0
- package/src/build/runtime/build-request-identity.js +54 -0
- package/src/build/runtime/build-request-policy.d.ts +59 -0
- package/src/build/runtime/build-request-policy.js +46 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +65 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +34 -0
- package/src/build/runtime/parallel-build-executor.d.ts +21 -0
- package/src/build/runtime/parallel-build-executor.js +52 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- 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 +25 -10
- package/src/config/config-builder.js +53 -11
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +2 -1
- 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/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +33 -0
- package/src/diagnostics/startup-trace.d.ts +72 -0
- package/src/diagnostics/startup-trace.js +253 -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 +7 -8
- package/src/eco/eco.types.d.ts +14 -3
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -1
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +59 -0
- package/src/env.d.ts +2 -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 +7 -4
- package/src/hmr/hmr-entrypoint-output.d.ts +49 -0
- package/src/hmr/hmr-entrypoint-output.js +60 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +17 -0
- package/src/hmr/hmr-strategy.d.ts +15 -0
- package/src/hmr/hmr-strategy.js +19 -0
- package/src/hmr/strategies/js-hmr-strategy.d.ts +3 -5
- package/src/hmr/strategies/js-hmr-strategy.js +72 -19
- 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/index.d.ts +2 -1
- package/src/index.js +28 -2
- 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/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +38 -51
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +19 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +1 -1
- package/src/plugins/eco-component-meta-plugin.js +5 -8
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +4 -6
- package/src/plugins/integration-plugin.d.ts +43 -14
- package/src/plugins/integration-plugin.js +18 -5
- 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 +61 -12
- package/src/plugins/processor.js +24 -5
- package/src/plugins/source-transform.d.ts +32 -1
- package/src/plugins/source-transform.js +23 -1
- package/src/plugins/tsconfig-import-resolver.d.ts +18 -0
- package/src/plugins/tsconfig-import-resolver.js +159 -0
- package/src/route-renderer/GRAPH.md +26 -32
- package/src/route-renderer/README.md +38 -31
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +148 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +31 -0
- package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
- package/src/route-renderer/orchestration/{component-render-context.js → foreign-child/component-render-context.js} +4 -2
- package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +17 -7
- package/src/route-renderer/orchestration/{render-output.utils.js → foreign-child/foreign-child-output.utils.js} +35 -26
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.js → foreign-child/foreign-subtree-execution.service.js} +170 -37
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +35 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +24 -143
- package/src/route-renderer/orchestration/integration-renderer.js +163 -402
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +177 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +143 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +96 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +7 -2
- package/src/route-renderer/orchestration/{ownership-validation.service.js → ownership-graph/ownership-validation.service.js} +30 -3
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.d.ts +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +106 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +436 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +31 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +229 -0
- package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +31 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +25 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +27 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +36 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +20 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +24 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +25 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +49 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +33 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +13 -53
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +162 -0
- 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/route-renderer/page-loading/ecopages-virtual-imports.d.ts +6 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +7 -2
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +4 -0
- 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/asset-dependency-keys.d.ts +13 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +3 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +6 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +44 -5
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +78 -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 +28 -13
- package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +7 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +38 -12
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +2 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +17 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +18 -0
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +2 -15
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +73 -68
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +18 -15
- 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/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +17 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +5 -10
- package/src/services/assets/browser-bundle.service.d.ts +28 -30
- package/src/services/assets/browser-bundle.service.js +28 -19
- package/src/services/html/html-transformer.service.d.ts +1 -1
- package/src/services/html/html-transformer.service.js +5 -5
- package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
- package/src/services/invalidation/development-invalidation.service.js +64 -11
- package/src/services/module-loading/README.md +49 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +3 -21
- package/src/services/module-loading/page-module-import.service.d.ts +6 -2
- package/src/services/module-loading/page-module-import.service.js +110 -47
- 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 +54 -0
- package/src/services/module-loading/route-module-build-manifest.js +85 -0
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
- package/src/services/module-loading/route-module-dependency-hasher.js +122 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -1
- package/src/services/module-loading/server-module-transpiler.service.js +1 -1
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +12 -13
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- package/src/services/validation/validate-standard-schema.d.ts +7 -0
- package/src/services/validation/validate-standard-schema.js +14 -0
- package/src/static-site-generator/README.md +41 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +28 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +22 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +31 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +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 +30 -0
- package/src/static-site-generator/static-export-context.js +0 -0
- package/src/static-site-generator/static-site-generator.d.ts +43 -25
- package/src/static-site-generator/static-site-generator.js +381 -106
- package/src/types/internal-types.d.ts +39 -13
- package/src/types/public-types.d.ts +289 -52
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +26 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +5 -1
- package/src/utils/parse-cli-args.d.ts +2 -0
- package/src/utils/parse-cli-args.js +6 -0
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +27 -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 +29 -6
- package/src/watchers/project-watcher.js +146 -34
- package/src/watchers/project-watcher.test-helpers.js +5 -5
- package/src/adapters/shared/define-api-handler.d.ts +0 -25
- package/src/adapters/shared/define-api-handler.js +0 -15
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/server-adapter.js +0 -436
- package/src/adapters/shared/server-static-builder.js +0 -162
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -59
- package/src/adapters/shared/shared-hmr-manager.js +0 -241
- package/src/build/build-manifest.d.ts +0 -33
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -166
- package/src/build/runtime-build-executor.d.ts +0 -21
- package/src/build/runtime-build-executor.js +0 -19
- package/src/build/runtime-build-output-normalizer.d.ts +0 -3
- package/src/build/runtime-build-output-normalizer.js +0 -111
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -43
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
- package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
- 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/route-renderer/orchestration/route-render-orchestrator.js +0 -577
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- /package/src/adapters/shared/{explicit-static-render-preparation.js → http/explicit-static-render-preparation.js} +0 -0
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/adapters/shared/{runtime-host.js → runtime/runtime-host.js} +0 -0
- /package/src/adapters/shared/{static-preview-host.js → runtime/static-preview-host.js} +0 -0
- /package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +0 -0
- /package/src/build/{browser-runtime-manifest.js → browser/browser-runtime-manifest.js} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.js → browser/browser-runtime-plugin-helpers.js} +0 -0
- /package/src/build/{build-types.js → contracts/build-contracts.js} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.js → rolldown/server-side-css-shim-plugin.js} +0 -0
- /package/src/build/{serialized-build-executor.js → runtime/serialized-build-executor.js} +0 -0
- /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
- /package/src/route-renderer/orchestration/{processed-asset-dedupe.js → page-browser-graph/processed-asset-dedupe.js} +0 -0
|
@@ -0,0 +1,229 @@
|
|
|
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
|
+
import { startupTrace } from "../../../diagnostics/startup-trace.js";
|
|
7
|
+
import {
|
|
8
|
+
collectPageBrowserGraphDependencyPaths,
|
|
9
|
+
createPageBrowserGraphEntryFingerprint,
|
|
10
|
+
getAppPageBrowserGraphSession
|
|
11
|
+
} from "./page-browser-graph-session.js";
|
|
12
|
+
function isGroupedContentScriptAsset(asset) {
|
|
13
|
+
return asset.kind === "script" && asset.source === "content" && Boolean(asset.groupedBundle?.id);
|
|
14
|
+
}
|
|
15
|
+
function getGroupedBundleAssetKey(groupedBundle) {
|
|
16
|
+
return `${groupedBundle.id}:${groupedBundle.entryName}`;
|
|
17
|
+
}
|
|
18
|
+
class PageBrowserGraphService {
|
|
19
|
+
appConfig;
|
|
20
|
+
assetProcessingService;
|
|
21
|
+
constructor(appConfig, assetProcessingService) {
|
|
22
|
+
this.appConfig = appConfig;
|
|
23
|
+
this.assetProcessingService = assetProcessingService;
|
|
24
|
+
}
|
|
25
|
+
async resolvePageBrowserGraph(input) {
|
|
26
|
+
return await this.getOrBuild(input);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolves or builds one Page Browser Graph under the given policy.
|
|
30
|
+
*/
|
|
31
|
+
async getOrBuild(input) {
|
|
32
|
+
const policy = input.policy ?? this.resolveGraphPolicy();
|
|
33
|
+
const session = getAppPageBrowserGraphSession(this.appConfig);
|
|
34
|
+
if (!this.isHmrEnabled()) {
|
|
35
|
+
const cachedByRoute = session.getGraphByRoute(input.integrationName, input.routeFile, policy);
|
|
36
|
+
if (cachedByRoute) {
|
|
37
|
+
return cachedByRoute;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const contribution = await input.collectContribution(input.routeFile);
|
|
41
|
+
if (!contribution) {
|
|
42
|
+
return void 0;
|
|
43
|
+
}
|
|
44
|
+
const entryFingerprint = createPageBrowserGraphEntryFingerprint(contribution);
|
|
45
|
+
return await session.resolveGraph(
|
|
46
|
+
{
|
|
47
|
+
integrationName: input.integrationName,
|
|
48
|
+
routeFile: input.routeFile,
|
|
49
|
+
entryFingerprint,
|
|
50
|
+
policy
|
|
51
|
+
},
|
|
52
|
+
async () => this.buildPageBrowserGraphRecord(input, contribution)
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
resolveGraphPolicy() {
|
|
56
|
+
return this.isHmrEnabled() ? "development" : "production";
|
|
57
|
+
}
|
|
58
|
+
isHmrEnabled() {
|
|
59
|
+
return typeof this.assetProcessingService.getHmrManager === "function" && this.assetProcessingService.getHmrManager()?.isEnabled() === true;
|
|
60
|
+
}
|
|
61
|
+
async buildPageBrowserGraphRecord(input, contribution) {
|
|
62
|
+
const result = await this.materializePageBrowserGraph(input, contribution);
|
|
63
|
+
if (!result) {
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
startupTrace.markFirstPageBrowserGraphReady(getAppPageBrowserGraphSession(this.appConfig).getBuildCount());
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
async materializePageBrowserGraph(input, contribution) {
|
|
70
|
+
const groupedDependencies = (contribution.dependencies ?? []).filter((dep) => isGroupedContentScriptAsset(dep));
|
|
71
|
+
const ungroupedDependencies = (contribution.dependencies ?? []).filter(
|
|
72
|
+
(dep) => !isGroupedContentScriptAsset(dep)
|
|
73
|
+
);
|
|
74
|
+
const groupedAssets = groupedDependencies.length ? (await this.resolveGroupedPageBrowserAssets(input, contribution)).assetsByRoute.get(input.routeFile) ?? [] : [];
|
|
75
|
+
const processedDependencies = ungroupedDependencies.length ? await this.assetProcessingService.processDependencies(
|
|
76
|
+
ungroupedDependencies,
|
|
77
|
+
`${input.integrationName}:${input.routeFile}`
|
|
78
|
+
) : [];
|
|
79
|
+
const resolvedAssets = [...processedDependencies, ...groupedAssets, ...contribution.assets ?? []];
|
|
80
|
+
const result = this.partitionPageBrowserGraphAssets(resolvedAssets);
|
|
81
|
+
const dependencyPaths = collectPageBrowserGraphDependencyPaths(input.routeFile, contribution, resolvedAssets);
|
|
82
|
+
return {
|
|
83
|
+
result,
|
|
84
|
+
dependencyPaths
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async resolveGroupedPageBrowserAssets(input, currentContribution) {
|
|
88
|
+
if (this.isHmrEnabled()) {
|
|
89
|
+
return await this.buildGroupedPageBrowserAssets(input, currentContribution);
|
|
90
|
+
}
|
|
91
|
+
const session = getAppPageBrowserGraphSession(this.appConfig);
|
|
92
|
+
const assetsByRoute = await session.resolveGroupedGraph(input.integrationName, async () => {
|
|
93
|
+
const built = await this.buildGroupedPageBrowserAssets(input, currentContribution);
|
|
94
|
+
if (built.hasCollectionFailures) {
|
|
95
|
+
return {
|
|
96
|
+
skipCache: true,
|
|
97
|
+
assetsByRoute: built.assetsByRoute,
|
|
98
|
+
dependencyPaths: built.dependencyPaths
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
assetsByRoute: built.assetsByRoute,
|
|
103
|
+
dependencyPaths: built.dependencyPaths,
|
|
104
|
+
generation: 0
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
assetsByRoute,
|
|
109
|
+
dependencyPaths: /* @__PURE__ */ new Set(),
|
|
110
|
+
hasCollectionFailures: false
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
async buildGroupedPageBrowserAssets(input, currentContribution) {
|
|
114
|
+
const routeFiles = this.isHmrEnabled() ? [input.routeFile] : await this.listIntegrationRouteFiles(input.integrationName);
|
|
115
|
+
const currentRouteGroupedDependencies = (currentContribution.dependencies ?? []).filter(
|
|
116
|
+
(dep) => isGroupedContentScriptAsset(dep)
|
|
117
|
+
);
|
|
118
|
+
const groupedDependencies = [...currentRouteGroupedDependencies];
|
|
119
|
+
const groupedAssetKeysByRoute = /* @__PURE__ */ new Map();
|
|
120
|
+
const dependencyPaths = /* @__PURE__ */ new Set([path.resolve(input.routeFile)]);
|
|
121
|
+
let hasCollectionFailures = false;
|
|
122
|
+
if (currentRouteGroupedDependencies.length > 0) {
|
|
123
|
+
groupedAssetKeysByRoute.set(
|
|
124
|
+
input.routeFile,
|
|
125
|
+
new Set(currentRouteGroupedDependencies.map((dep) => getGroupedBundleAssetKey(dep.groupedBundle)))
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
for (const routeFile of routeFiles) {
|
|
129
|
+
if (routeFile === input.routeFile) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
let contribution;
|
|
133
|
+
try {
|
|
134
|
+
contribution = await input.collectContribution(routeFile);
|
|
135
|
+
} catch (error) {
|
|
136
|
+
hasCollectionFailures = true;
|
|
137
|
+
appLogger.warn(
|
|
138
|
+
`Skipping grouped page-browser contribution for ${routeFile}: ${error instanceof Error ? error.message : String(error)}`
|
|
139
|
+
);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (!contribution?.dependencies?.length) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const routeGroupedDependencies = contribution.dependencies.filter(
|
|
146
|
+
(dep) => isGroupedContentScriptAsset(dep)
|
|
147
|
+
);
|
|
148
|
+
if (routeGroupedDependencies.length === 0) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
groupedDependencies.push(...routeGroupedDependencies);
|
|
152
|
+
groupedAssetKeysByRoute.set(
|
|
153
|
+
routeFile,
|
|
154
|
+
new Set(routeGroupedDependencies.map((dep) => getGroupedBundleAssetKey(dep.groupedBundle)))
|
|
155
|
+
);
|
|
156
|
+
dependencyPaths.add(path.resolve(routeFile));
|
|
157
|
+
}
|
|
158
|
+
if (groupedDependencies.length === 0) {
|
|
159
|
+
return {
|
|
160
|
+
assetsByRoute: /* @__PURE__ */ new Map(),
|
|
161
|
+
dependencyPaths,
|
|
162
|
+
hasCollectionFailures
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
for (const dependency of groupedDependencies) {
|
|
166
|
+
if (dependency.source === "file") {
|
|
167
|
+
dependencyPaths.add(path.resolve(dependency.filepath));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const processedGroupedDependencies = await this.assetProcessingService.processDependencies(
|
|
171
|
+
groupedDependencies,
|
|
172
|
+
`${input.integrationName}:grouped-page-browser-graph`
|
|
173
|
+
);
|
|
174
|
+
const groupedAssetsByRoute = /* @__PURE__ */ new Map();
|
|
175
|
+
for (const [routeFile, groupedAssetKeys] of groupedAssetKeysByRoute) {
|
|
176
|
+
const matchedAssets = processedGroupedDependencies.filter((asset) => {
|
|
177
|
+
if (!asset.groupedBundle) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
return groupedAssetKeys.has(getGroupedBundleAssetKey(asset.groupedBundle));
|
|
181
|
+
});
|
|
182
|
+
if (groupedAssetKeys.size > 0 && matchedAssets.length === 0) {
|
|
183
|
+
appLogger.warn(
|
|
184
|
+
`Grouped page-browser assets for ${routeFile} are missing groupedBundle metadata after processing. Hydration scripts may be omitted from HTML.`
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
groupedAssetsByRoute.set(routeFile, matchedAssets);
|
|
188
|
+
}
|
|
189
|
+
for (const asset of processedGroupedDependencies) {
|
|
190
|
+
if (asset.sourceFilepath) {
|
|
191
|
+
dependencyPaths.add(path.resolve(asset.sourceFilepath));
|
|
192
|
+
}
|
|
193
|
+
for (const bundledSourceFilepath of asset.bundledSourceFilepaths ?? []) {
|
|
194
|
+
dependencyPaths.add(path.resolve(bundledSourceFilepath));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
assetsByRoute: groupedAssetsByRoute,
|
|
199
|
+
dependencyPaths,
|
|
200
|
+
hasCollectionFailures
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
async listIntegrationRouteFiles(integrationName) {
|
|
204
|
+
const integration = this.appConfig.integrations.find((plugin) => plugin.name === integrationName);
|
|
205
|
+
if (!integration) {
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
const scannedFiles = await fileSystem.glob(
|
|
209
|
+
integration.extensions.map((extension) => `**/*${extension}`),
|
|
210
|
+
{ cwd: this.appConfig.absolutePaths.pagesDir }
|
|
211
|
+
);
|
|
212
|
+
return scannedFiles.filter((file) => !file.includes(".ecopages-node.")).map((file) => path.join(this.appConfig.absolutePaths.pagesDir, file)).sort((left, right) => left.localeCompare(right));
|
|
213
|
+
}
|
|
214
|
+
partitionPageBrowserGraphAssets(assets) {
|
|
215
|
+
const entryAssets = [];
|
|
216
|
+
const chunkAssets = [];
|
|
217
|
+
for (const asset of assets) {
|
|
218
|
+
if (asset.packageRole === "dynamic-chunk") {
|
|
219
|
+
chunkAssets.push(asset);
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
entryAssets.push(asset);
|
|
223
|
+
}
|
|
224
|
+
return { entryAssets, chunkAssets };
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
export {
|
|
228
|
+
PageBrowserGraphService
|
|
229
|
+
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ProcessedAsset } from '
|
|
1
|
+
import type { ProcessedAsset } from '../../../services/assets/asset-processing-service/index.js';
|
|
2
2
|
export declare function buildProcessedAssetDedupeKey(asset: ProcessedAsset): string;
|
|
3
3
|
export declare function dedupeProcessedAssets(assets: ProcessedAsset[]): ProcessedAsset[];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ProcessedAsset } from '../../../services/assets/asset-processing-service/index.js';
|
|
2
|
+
import type { HtmlDocumentContribution } from '../../../services/html/html-transformer.service.js';
|
|
3
|
+
import type { EcoComponent, EcoPageFile, IntegrationRendererRenderOptions, PageBrowserGraphContribution, PageBrowserGraphContributionContext, PagePackageResult, RouteRendererBody, RouteRendererOptions } from '../../../types/public-types.js';
|
|
4
|
+
import type { RouteHtmlFinalization, RouteRenderOrchestratorAdapter, RouteRenderOrchestratorResolvedInputs } from './route-render-orchestrator.js';
|
|
5
|
+
/**
|
|
6
|
+
* Host surface required to build the orchestrator adapter for one integration renderer.
|
|
7
|
+
*/
|
|
8
|
+
export type IntegrationRouteRenderAdapterHost<C> = {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
resolveRouteRenderInputs(routeOptions: RouteRendererOptions): Promise<RouteRenderOrchestratorResolvedInputs>;
|
|
11
|
+
resolveRouteDependencies(input: {
|
|
12
|
+
components: (EcoComponent | Partial<EcoComponent>)[];
|
|
13
|
+
}): Promise<{
|
|
14
|
+
resolvedDependencies: ProcessedAsset[];
|
|
15
|
+
}>;
|
|
16
|
+
importPageFile(file: string): Promise<EcoPageFile>;
|
|
17
|
+
collectPageBrowserGraphContribution(context: PageBrowserGraphContributionContext): Promise<PageBrowserGraphContribution | undefined>;
|
|
18
|
+
renderRouteBody(renderOptions: IntegrationRendererRenderOptions<C>): Promise<RouteRendererBody>;
|
|
19
|
+
getDocumentAttributes(renderOptions: IntegrationRendererRenderOptions<C>): Record<string, string> | undefined;
|
|
20
|
+
getHtmlDocumentContributions(options: {
|
|
21
|
+
renderOptions: IntegrationRendererRenderOptions<C>;
|
|
22
|
+
partial: boolean;
|
|
23
|
+
}): HtmlDocumentContribution[] | undefined;
|
|
24
|
+
applyAttributesToHtmlElement(html: string, attributes: Record<string, string>): string;
|
|
25
|
+
transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[], pagePackage?: PagePackageResult): Promise<RouteRendererBody>;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Builds the internal route-render adapter consumed by `RouteRenderOrchestrator`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createIntegrationRouteRenderAdapter<C>(host: IntegrationRouteRenderAdapterHost<C>): RouteRenderOrchestratorAdapter<C>;
|
|
31
|
+
export type { RouteHtmlFinalization };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { loadPageBrowserGraphContribution } from "../page-browser-graph/page-browser-graph-contribution.loader.js";
|
|
2
|
+
import { buildRouteHtmlFinalization } from "./route-html-finalization.service.js";
|
|
3
|
+
function createIntegrationRouteRenderAdapter(host) {
|
|
4
|
+
return {
|
|
5
|
+
name: host.name,
|
|
6
|
+
resolveRouteRenderInputs: (routeOptions) => host.resolveRouteRenderInputs(routeOptions),
|
|
7
|
+
resolveRouteDependencies: (input) => host.resolveRouteDependencies(input),
|
|
8
|
+
collectPageBrowserGraphContribution: (routeFile) => loadPageBrowserGraphContribution(
|
|
9
|
+
routeFile,
|
|
10
|
+
(file) => host.importPageFile(file),
|
|
11
|
+
(context) => host.collectPageBrowserGraphContribution(context)
|
|
12
|
+
),
|
|
13
|
+
renderRouteBody: (renderOptions) => host.renderRouteBody(renderOptions),
|
|
14
|
+
getRouteHtmlFinalization: (renderOptions) => buildRouteHtmlFinalization({
|
|
15
|
+
renderOptions,
|
|
16
|
+
getDocumentAttributes: (options) => host.getDocumentAttributes(options),
|
|
17
|
+
getHtmlDocumentContributions: (options) => host.getHtmlDocumentContributions(options),
|
|
18
|
+
applyAttributesToHtmlElement: (html, attributes) => host.applyAttributesToHtmlElement(html, attributes)
|
|
19
|
+
}),
|
|
20
|
+
transformRouteResponse: (response, htmlContributions, pagePackage) => host.transformRouteResponse(response, htmlContributions, pagePackage)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
createIntegrationRouteRenderAdapter
|
|
25
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function decodeHtmlEntities(value: string): string;
|
|
2
|
+
export declare function normalizeUnresolvedMarkerArtifactHtml(html: string): string;
|
|
3
|
+
export declare function inspectUnresolvedMarkerArtifactHtml(html: string): {
|
|
4
|
+
hasUnresolvedMarkerArtifacts: boolean;
|
|
5
|
+
normalizedHtml: string;
|
|
6
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function decodeHtmlEntities(value) {
|
|
2
|
+
let decoded = value;
|
|
3
|
+
let previous;
|
|
4
|
+
do {
|
|
5
|
+
previous = decoded;
|
|
6
|
+
decoded = decoded.replaceAll(""", '"').replaceAll("'", "'").replaceAll("'", "'").replaceAll("<", "<").replaceAll(">", ">").replaceAll("&", "&");
|
|
7
|
+
} while (decoded !== previous);
|
|
8
|
+
return decoded;
|
|
9
|
+
}
|
|
10
|
+
function normalizeUnresolvedMarkerArtifactHtml(html) {
|
|
11
|
+
return html.replace(
|
|
12
|
+
/&(?:amp;)?lt;eco-marker\b[\s\S]*?&(?:amp;)?gt;&(?:amp;)?lt;\/eco-marker&(?:amp;)?gt;/g,
|
|
13
|
+
(marker) => decodeHtmlEntities(marker)
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
function inspectUnresolvedMarkerArtifactHtml(html) {
|
|
17
|
+
const normalizedHtml = normalizeUnresolvedMarkerArtifactHtml(html);
|
|
18
|
+
return {
|
|
19
|
+
normalizedHtml,
|
|
20
|
+
hasUnresolvedMarkerArtifacts: normalizedHtml.includes("<eco-marker")
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
decodeHtmlEntities,
|
|
25
|
+
inspectUnresolvedMarkerArtifactHtml,
|
|
26
|
+
normalizeUnresolvedMarkerArtifactHtml
|
|
27
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { HtmlDocumentContribution } from '../../../services/html/html-transformer.service.js';
|
|
2
|
+
import type { PageMetadataProps, PageRobotsMetadata } from '../../../types/public-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Builds a head contribution for non-default `metadata.robots` values.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* When `robots` is omitted or matches the default `index,follow` behaviour,
|
|
8
|
+
* no tag is emitted (Next.js parity). Otherwise a single
|
|
9
|
+
* `<meta name="robots" content="...">` contribution is returned.
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildRobotsMetaContribution(metadata: Pick<PageMetadataProps, 'robots'>): HtmlDocumentContribution | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Formats robots directives for a meta tag, or `undefined` when defaults apply.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatRobotsMetaContent(robots: PageRobotsMetadata | undefined): string | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { escapeHtmlAttribute } from "../../../utils/html-escaping.js";
|
|
2
|
+
function buildRobotsMetaContribution(metadata) {
|
|
3
|
+
const content = formatRobotsMetaContent(metadata.robots);
|
|
4
|
+
if (!content) {
|
|
5
|
+
return void 0;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
placement: "head-append",
|
|
9
|
+
html: `<meta name="robots" content="${escapeHtmlAttribute(content)}">`
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function formatRobotsMetaContent(robots) {
|
|
13
|
+
if (!robots) {
|
|
14
|
+
return void 0;
|
|
15
|
+
}
|
|
16
|
+
const index = robots.index !== false;
|
|
17
|
+
const follow = robots.follow !== false;
|
|
18
|
+
const directives = [];
|
|
19
|
+
if (!index) {
|
|
20
|
+
directives.push("noindex");
|
|
21
|
+
}
|
|
22
|
+
if (!follow) {
|
|
23
|
+
directives.push("nofollow");
|
|
24
|
+
}
|
|
25
|
+
if (robots.nocache) {
|
|
26
|
+
directives.push("nocache");
|
|
27
|
+
}
|
|
28
|
+
if (directives.length === 0) {
|
|
29
|
+
return void 0;
|
|
30
|
+
}
|
|
31
|
+
return directives.join(", ");
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
buildRobotsMetaContribution,
|
|
35
|
+
formatRobotsMetaContent
|
|
36
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
applyAttributesToHtmlElement: (html: string, attributes: Record<string, string>) => string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Builds the structural HTML finalization plan for one prepared route render.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* Merges core robots meta contributions with integration-owned document
|
|
18
|
+
* contributions so page-level `metadata.robots` works across templates.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildRouteHtmlFinalization<C>(context: RouteHtmlFinalizationContext<C>): RouteHtmlFinalization;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { buildRobotsMetaContribution } from "./robots-meta.contribution.js";
|
|
2
|
+
function buildRouteHtmlFinalization(context) {
|
|
3
|
+
const { renderOptions } = context;
|
|
4
|
+
const documentAttributes = context.getDocumentAttributes(renderOptions);
|
|
5
|
+
const integrationContributions = context.getHtmlDocumentContributions({ renderOptions, partial: false }) ?? [];
|
|
6
|
+
const robotsContribution = buildRobotsMetaContribution(renderOptions.metadata ?? {});
|
|
7
|
+
const htmlContributions = robotsContribution ? [robotsContribution, ...integrationContributions] : integrationContributions;
|
|
8
|
+
const hasStructuralFinalization = documentAttributes && Object.keys(documentAttributes).length > 0;
|
|
9
|
+
if (!hasStructuralFinalization && htmlContributions.length === 0) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
htmlContributions,
|
|
14
|
+
finalizeHtml: (html) => {
|
|
15
|
+
if (!documentAttributes || Object.keys(documentAttributes).length === 0) {
|
|
16
|
+
return html;
|
|
17
|
+
}
|
|
18
|
+
return context.applyAttributesToHtmlElement(html, documentAttributes);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
buildRouteHtmlFinalization
|
|
24
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../../types/internal-types.js';
|
|
2
|
+
import type { 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
|
+
appConfig: EcoPagesAppConfig;
|
|
24
|
+
}): IntegrationRendererRenderOptions<C>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createPagePackage } from "../../../services/assets/asset-processing-service/index.js";
|
|
2
|
+
import { dedupeProcessedAssets } from "../page-browser-graph/processed-asset-dedupe.js";
|
|
3
|
+
import { createPageLocalsProxy } from "./route-prepared-options.utils.js";
|
|
4
|
+
function buildPreparedRenderOptions(input) {
|
|
5
|
+
const { routeOptions, resolvedInputs, resolvedDependencies, allDependencies, pageBrowserGraph, appConfig } = input;
|
|
6
|
+
const { Page, HtmlTemplate, Layouts, Layout, layoutEntries, props, metadata, integrationSpecificProps } = resolvedInputs;
|
|
7
|
+
const dedupedDependencies = dedupeProcessedAssets(allDependencies);
|
|
8
|
+
const pagePackage = createPagePackage(dedupedDependencies, { pageBrowserGraph });
|
|
9
|
+
const resolvedProps = {
|
|
10
|
+
...props,
|
|
11
|
+
...routeOptions.props ?? {}
|
|
12
|
+
};
|
|
13
|
+
const pageProps = {
|
|
14
|
+
...resolvedProps,
|
|
15
|
+
params: routeOptions.params || {},
|
|
16
|
+
query: routeOptions.query || {}
|
|
17
|
+
};
|
|
18
|
+
const cacheStrategy = Page.cache;
|
|
19
|
+
const defaultCacheStrategy = appConfig.cache?.defaultStrategy ?? "static";
|
|
20
|
+
const effectiveCacheStrategy = cacheStrategy ?? defaultCacheStrategy;
|
|
21
|
+
const localsAvailable = effectiveCacheStrategy === "dynamic" && routeOptions.locals !== void 0;
|
|
22
|
+
const pageLocals = localsAvailable ? routeOptions.locals : createPageLocalsProxy(routeOptions.file);
|
|
23
|
+
const locals = localsAvailable ? routeOptions.locals : void 0;
|
|
24
|
+
const preparedOptions = {
|
|
25
|
+
...routeOptions,
|
|
26
|
+
resolvedDependencies,
|
|
27
|
+
pagePackage,
|
|
28
|
+
HtmlTemplate,
|
|
29
|
+
Layouts,
|
|
30
|
+
Layout,
|
|
31
|
+
layoutEntries,
|
|
32
|
+
props: resolvedProps,
|
|
33
|
+
Page,
|
|
34
|
+
metadata,
|
|
35
|
+
params: routeOptions.params || {},
|
|
36
|
+
query: routeOptions.query || {},
|
|
37
|
+
pageProps,
|
|
38
|
+
locals,
|
|
39
|
+
pageLocals,
|
|
40
|
+
cacheStrategy
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
...integrationSpecificProps,
|
|
44
|
+
...preparedOptions
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
buildPreparedRenderOptions
|
|
49
|
+
};
|
|
@@ -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
|
-
import type { EcoPagesAppConfig } from '
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
4
|
-
import type { HtmlDocumentContribution } from '
|
|
5
|
-
import { OwnershipValidationService } from '
|
|
6
|
-
import {
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../../types/internal-types.js';
|
|
2
|
+
import type { 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
|
+
import type { HtmlDocumentContribution } from '../../../services/html/html-transformer.service.js';
|
|
5
|
+
import { OwnershipValidationService } from '../ownership-graph/ownership-validation.service.js';
|
|
6
|
+
import { PageBrowserGraphService } from '../page-browser-graph/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>;
|
|
@@ -44,15 +46,6 @@ export interface RouteRenderOrchestratorAdapter<C> {
|
|
|
44
46
|
* Collects declarative Page Browser Graph requirements for one route.
|
|
45
47
|
*/
|
|
46
48
|
collectPageBrowserGraphContribution(routeFile: string): Promise<PageBrowserGraphContribution | undefined>;
|
|
47
|
-
/**
|
|
48
|
-
* Resolves the optional page-root render through the foreign-child-aware component contract.
|
|
49
|
-
*/
|
|
50
|
-
resolveRoutePageComponentRender(input: {
|
|
51
|
-
Page: EcoComponent;
|
|
52
|
-
Layout?: EcoComponent;
|
|
53
|
-
props: Record<string, unknown>;
|
|
54
|
-
routeOptions: RouteRendererOptions;
|
|
55
|
-
}): Promise<ComponentRenderResult | undefined>;
|
|
56
49
|
/**
|
|
57
50
|
* Executes the Integration-specific route render.
|
|
58
51
|
*/
|
|
@@ -64,7 +57,7 @@ export interface RouteRenderOrchestratorAdapter<C> {
|
|
|
64
57
|
/**
|
|
65
58
|
* Runs SSR-policy response transformation and returns the body value exposed to callers.
|
|
66
59
|
*/
|
|
67
|
-
transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[]): Promise<RouteRendererBody>;
|
|
60
|
+
transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[], pagePackage?: IntegrationRendererRenderOptions<C>['pagePackage']): Promise<RouteRendererBody>;
|
|
68
61
|
}
|
|
69
62
|
/**
|
|
70
63
|
* Captured route-render output in both replayable body and string HTML forms.
|
|
@@ -77,8 +70,8 @@ export interface CapturedHtmlRenderResult {
|
|
|
77
70
|
* Optional app-scoped collaborators used by the route render orchestrator.
|
|
78
71
|
*/
|
|
79
72
|
export interface RouteRenderOrchestratorDependencies {
|
|
80
|
-
ownershipPlanningService?: OwnershipPlanningService;
|
|
81
73
|
ownershipValidationService?: OwnershipValidationService;
|
|
74
|
+
pageBrowserGraphService?: PageBrowserGraphService;
|
|
82
75
|
}
|
|
83
76
|
/**
|
|
84
77
|
* Owns one route render from normalized module loading through final HTML output.
|
|
@@ -91,17 +84,15 @@ export interface RouteRenderOrchestratorDependencies {
|
|
|
91
84
|
export declare class RouteRenderOrchestrator {
|
|
92
85
|
private readonly appConfig;
|
|
93
86
|
private readonly assetProcessingService;
|
|
94
|
-
private readonly ownershipPlanningService;
|
|
95
87
|
private readonly ownershipValidationService;
|
|
96
|
-
private readonly
|
|
97
|
-
private readonly groupedPageBrowserGraphCache;
|
|
88
|
+
private readonly pageBrowserGraphService;
|
|
98
89
|
constructor(appConfig: EcoPagesAppConfig, assetProcessingService: AssetProcessingService, dependencies?: RouteRenderOrchestratorDependencies);
|
|
99
90
|
/**
|
|
100
91
|
* Builds normalized route render options before the integration render runs.
|
|
101
92
|
*
|
|
102
93
|
* This preparation step validates route-root ownership, resolves page data,
|
|
103
|
-
* collects processed assets,
|
|
104
|
-
*
|
|
94
|
+
* collects processed assets, and produces the page package consumed by downstream
|
|
95
|
+
* HTML transformation.
|
|
105
96
|
*/
|
|
106
97
|
prepareRenderOptions<C = unknown>(routeOptions: RouteRendererOptions, adapter: RouteRenderOrchestratorAdapter<C>): Promise<IntegrationRendererRenderOptions<C>>;
|
|
107
98
|
resolveDeclaredPageBrowserGraph(input: {
|
|
@@ -109,31 +100,6 @@ export declare class RouteRenderOrchestrator {
|
|
|
109
100
|
integrationName: string;
|
|
110
101
|
collectContribution: (routeFile: string) => Promise<PageBrowserGraphContribution | undefined>;
|
|
111
102
|
}): 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
103
|
/**
|
|
138
104
|
* Captures one route render body as HTML while preserving a replayable body value.
|
|
139
105
|
*/
|
|
@@ -147,10 +113,4 @@ export declare class RouteRenderOrchestrator {
|
|
|
147
113
|
*/
|
|
148
114
|
executePrepared<C = unknown>(renderOptions: IntegrationRendererRenderOptions<C>, adapter: RouteRenderOrchestratorAdapter<C>): Promise<RouteRenderResult>;
|
|
149
115
|
private captureRenderedBody;
|
|
150
|
-
private collectResolvedTriggers;
|
|
151
|
-
private collectUsedIntegrationDependencies;
|
|
152
|
-
private collectIntegrationNames;
|
|
153
|
-
private buildGlobalInjectorAssets;
|
|
154
|
-
private buildEagerSsrLazyAssets;
|
|
155
|
-
private collectEagerSsrLazyDependencies;
|
|
156
116
|
}
|