@ecopages/core 0.2.0-beta.3 → 0.2.0-beta.30
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
|
@@ -2,17 +2,18 @@ import {
|
|
|
2
2
|
getComponentRenderContext,
|
|
3
3
|
runWithComponentRenderContext
|
|
4
4
|
} from "./component-render-context.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
import { assertForeignChildrenNotOpaque, isMarkupNodeLike } from "./foreign-child-output.utils.js";
|
|
6
|
+
function toForeignSubtreeRenderPayload(result) {
|
|
7
|
+
return {
|
|
8
|
+
html: result.html,
|
|
9
|
+
assets: result.assets ?? [],
|
|
10
|
+
rootTag: result.rootTag,
|
|
11
|
+
rootAttributes: result.rootAttributes,
|
|
12
|
+
attachmentPolicy: result.canAttachAttributes ? { kind: "first-element" } : { kind: "none" },
|
|
13
|
+
integrationName: result.integrationName
|
|
14
|
+
};
|
|
10
15
|
}
|
|
11
16
|
class ForeignSubtreeExecutionService {
|
|
12
|
-
queuedForeignSubtreeResolutionService;
|
|
13
|
-
constructor(queuedForeignSubtreeResolutionService = new QueuedForeignSubtreeResolutionService()) {
|
|
14
|
-
this.queuedForeignSubtreeResolutionService = queuedForeignSubtreeResolutionService;
|
|
15
|
-
}
|
|
16
17
|
requiresForeignChildRuntime(input) {
|
|
17
18
|
const children = input.children ?? input.props.children;
|
|
18
19
|
if (children === void 0 || children === null) {
|
|
@@ -26,18 +27,9 @@ class ForeignSubtreeExecutionService {
|
|
|
26
27
|
}
|
|
27
28
|
return !isMarkupNodeLike(children);
|
|
28
29
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Returns whether the current render pass must hand the child off to a foreign owner.
|
|
31
|
-
*/
|
|
32
30
|
shouldDelegateForeignChild(input) {
|
|
33
31
|
return !!input.targetIntegration && input.targetIntegration !== input.currentIntegration;
|
|
34
32
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Creates the base runtime used when a renderer has not supplied its own queueing runtime.
|
|
37
|
-
*
|
|
38
|
-
* The runtime allows same-integration children to continue inline and fails fast
|
|
39
|
-
* when execution crosses into a foreign owner without a renderer-owned handoff.
|
|
40
|
-
*/
|
|
41
33
|
createFailFastRuntime(rendererName) {
|
|
42
34
|
const interceptForeignChild = (input) => {
|
|
43
35
|
if (!this.shouldDelegateForeignChild(input)) {
|
|
@@ -56,10 +48,10 @@ class ForeignSubtreeExecutionService {
|
|
|
56
48
|
};
|
|
57
49
|
}
|
|
58
50
|
getQueuedRuntimeContext(input, runtimeContextKey) {
|
|
59
|
-
return this.
|
|
51
|
+
return this.getRuntimeContext(input, runtimeContextKey);
|
|
60
52
|
}
|
|
61
53
|
createQueuedRuntime(options) {
|
|
62
|
-
return this.
|
|
54
|
+
return this.createQueueRuntime({
|
|
63
55
|
renderInput: options.renderInput,
|
|
64
56
|
rendererCache: options.rendererCache,
|
|
65
57
|
runtimeContextKey: options.runtimeContextKey,
|
|
@@ -68,9 +60,45 @@ class ForeignSubtreeExecutionService {
|
|
|
68
60
|
createRuntimeContext: options.createRuntimeContext
|
|
69
61
|
});
|
|
70
62
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
63
|
+
createQueueRuntime(options) {
|
|
64
|
+
const runtimeContext = this.ensureRuntimeContext(options);
|
|
65
|
+
const interceptForeignChild = (input) => {
|
|
66
|
+
if (!options.shouldQueueForeignChild(input)) {
|
|
67
|
+
return {
|
|
68
|
+
kind: "inline",
|
|
69
|
+
props: { ...input.props }
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if ("children" in input.props) {
|
|
73
|
+
assertForeignChildrenNotOpaque(input.props.children, "foreign-subtree queue");
|
|
74
|
+
}
|
|
75
|
+
runtimeContext.nextForeignSubtreeId += 1;
|
|
76
|
+
const foreignSubtreeId = runtimeContext.nextForeignSubtreeId;
|
|
77
|
+
const token = this.createForeignSubtreeToken(options.tokenPrefix, runtimeContext, foreignSubtreeId);
|
|
78
|
+
runtimeContext.queuedResolutions.push({
|
|
79
|
+
token,
|
|
80
|
+
component: input.component,
|
|
81
|
+
props: { ...input.props },
|
|
82
|
+
componentInstanceId: runtimeContext.componentInstanceScope ? `${runtimeContext.componentInstanceScope}_n_${foreignSubtreeId}` : `n_${foreignSubtreeId}`
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
kind: "resolved",
|
|
86
|
+
value: token
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
interceptForeignChild,
|
|
91
|
+
interceptForeignChildSync: interceptForeignChild
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
getRuntimeContext(input, runtimeContextKey) {
|
|
95
|
+
const integrationContext = input.integrationContext;
|
|
96
|
+
const runtimeContext = integrationContext?.[runtimeContextKey];
|
|
97
|
+
if (typeof runtimeContext !== "object" || runtimeContext === null) {
|
|
98
|
+
return void 0;
|
|
99
|
+
}
|
|
100
|
+
return runtimeContext;
|
|
101
|
+
}
|
|
74
102
|
async resolveStringQueuedHtml(options) {
|
|
75
103
|
const runtimeContext = this.getQueuedRuntimeContext(options.renderInput, options.runtimeContextKey);
|
|
76
104
|
return this.resolveQueuedHtml({
|
|
@@ -83,10 +111,11 @@ class ForeignSubtreeExecutionService {
|
|
|
83
111
|
return { assets: [], html: void 0 };
|
|
84
112
|
}
|
|
85
113
|
if (typeof children !== "string" && !isMarkupNodeLike(children)) {
|
|
114
|
+
assertForeignChildrenNotOpaque(children, options.queueLabel);
|
|
86
115
|
return { assets: [], children };
|
|
87
116
|
}
|
|
88
117
|
const html = await this.resolveQueuedTokens(
|
|
89
|
-
typeof children === "string" ? children : children.outerHTML ??
|
|
118
|
+
typeof children === "string" ? children : children.outerHTML ?? "",
|
|
90
119
|
queuedResolutionsByToken,
|
|
91
120
|
resolveToken
|
|
92
121
|
);
|
|
@@ -98,7 +127,7 @@ class ForeignSubtreeExecutionService {
|
|
|
98
127
|
});
|
|
99
128
|
}
|
|
100
129
|
async resolveQueuedHtml(options) {
|
|
101
|
-
return this.
|
|
130
|
+
return this.resolveQueuedForeignSubtreeTokens({
|
|
102
131
|
html: options.html,
|
|
103
132
|
runtimeContext: options.runtimeContext,
|
|
104
133
|
queueLabel: options.queueLabel,
|
|
@@ -113,9 +142,93 @@ class ForeignSubtreeExecutionService {
|
|
|
113
142
|
dedupeProcessedAssets: options.dedupeProcessedAssets
|
|
114
143
|
});
|
|
115
144
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
145
|
+
async resolveQueuedForeignSubtreeTokens(options) {
|
|
146
|
+
if (!options.runtimeContext || options.runtimeContext.queuedResolutions.length === 0) {
|
|
147
|
+
return { assets: [], html: options.html };
|
|
148
|
+
}
|
|
149
|
+
const runtimeContext = options.runtimeContext;
|
|
150
|
+
const queuedResolutionsByToken = /* @__PURE__ */ new Map();
|
|
151
|
+
const resolvedHtmlByToken = /* @__PURE__ */ new Map();
|
|
152
|
+
const resolvingTokens = /* @__PURE__ */ new Set();
|
|
153
|
+
const collectedAssets = [];
|
|
154
|
+
const syncQueuedResolutions = () => {
|
|
155
|
+
for (const resolution of runtimeContext.queuedResolutions) {
|
|
156
|
+
if (!queuedResolutionsByToken.has(resolution.token)) {
|
|
157
|
+
queuedResolutionsByToken.set(resolution.token, resolution);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
const resolveToken = async (token) => {
|
|
162
|
+
syncQueuedResolutions();
|
|
163
|
+
const cachedHtml = resolvedHtmlByToken.get(token);
|
|
164
|
+
if (cachedHtml) {
|
|
165
|
+
return cachedHtml;
|
|
166
|
+
}
|
|
167
|
+
const resolution = queuedResolutionsByToken.get(token);
|
|
168
|
+
if (!resolution) {
|
|
169
|
+
return token;
|
|
170
|
+
}
|
|
171
|
+
if (resolvingTokens.has(token)) {
|
|
172
|
+
throw new Error(
|
|
173
|
+
`[ecopages] ${options.queueLabel} foreign-subtree queue contains a cycle or unresolved dependency links.`
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
resolvingTokens.add(token);
|
|
177
|
+
try {
|
|
178
|
+
const renderedChildren = await options.renderQueuedChildren(
|
|
179
|
+
resolution.props.children,
|
|
180
|
+
runtimeContext,
|
|
181
|
+
queuedResolutionsByToken,
|
|
182
|
+
resolveToken
|
|
183
|
+
);
|
|
184
|
+
syncQueuedResolutions();
|
|
185
|
+
if (renderedChildren.assets.length > 0) {
|
|
186
|
+
collectedAssets.push(...renderedChildren.assets);
|
|
187
|
+
}
|
|
188
|
+
const foreignSubtreeRender = await options.resolveForeignSubtree(
|
|
189
|
+
{
|
|
190
|
+
component: resolution.component,
|
|
191
|
+
props: { ...resolution.props },
|
|
192
|
+
children: renderedChildren.html ?? renderedChildren.children,
|
|
193
|
+
integrationContext: {
|
|
194
|
+
rendererCache: runtimeContext.rendererCache,
|
|
195
|
+
componentInstanceId: resolution.componentInstanceId
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
runtimeContext.rendererCache
|
|
199
|
+
);
|
|
200
|
+
if (!foreignSubtreeRender) {
|
|
201
|
+
throw new Error(
|
|
202
|
+
`[ecopages] ${options.queueLabel} queued foreign subtree could not resolve its owning renderer.`
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
if ((foreignSubtreeRender.assets?.length ?? 0) > 0) {
|
|
206
|
+
collectedAssets.push(...foreignSubtreeRender.assets ?? []);
|
|
207
|
+
}
|
|
208
|
+
const resolvedHtml2 = foreignSubtreeRender.attachmentPolicy.kind === "first-element" && foreignSubtreeRender.rootAttributes ? options.applyAttributesToFirstElement(
|
|
209
|
+
foreignSubtreeRender.html,
|
|
210
|
+
foreignSubtreeRender.rootAttributes
|
|
211
|
+
) : foreignSubtreeRender.html;
|
|
212
|
+
resolvedHtmlByToken.set(token, resolvedHtml2);
|
|
213
|
+
return resolvedHtml2;
|
|
214
|
+
} finally {
|
|
215
|
+
resolvingTokens.delete(token);
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
let resolvedHtml = options.html;
|
|
219
|
+
for (let index = 0; index < runtimeContext.queuedResolutions.length; index += 1) {
|
|
220
|
+
syncQueuedResolutions();
|
|
221
|
+
const resolution = runtimeContext.queuedResolutions[index];
|
|
222
|
+
if (!resolvedHtml.includes(resolution.token)) {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
resolvedHtml = resolvedHtml.split(resolution.token).join(await resolveToken(resolution.token));
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
assets: options.dedupeProcessedAssets(collectedAssets),
|
|
229
|
+
html: resolvedHtml
|
|
230
|
+
};
|
|
231
|
+
}
|
|
119
232
|
async executeComponentRender(options) {
|
|
120
233
|
const rendererCache = this.getRendererCache(options.input.integrationContext) ?? /* @__PURE__ */ new Map();
|
|
121
234
|
const delegatedForeignChildRender = await this.resolveForeignChildInOwningRenderer({
|
|
@@ -167,12 +280,6 @@ class ForeignSubtreeExecutionService {
|
|
|
167
280
|
integrationContext: integrationContext ? { ...integrationContext, rendererCache: sharedRendererCache } : { rendererCache: sharedRendererCache }
|
|
168
281
|
};
|
|
169
282
|
}
|
|
170
|
-
/**
|
|
171
|
-
* Returns the delegatable owning renderer integration for one component.
|
|
172
|
-
*
|
|
173
|
-
* The pseudo `html` integration marks document-shell ownership only and does
|
|
174
|
-
* not participate in component-level foreign subtree execution.
|
|
175
|
-
*/
|
|
176
283
|
getForeignOwnerIntegrationName(component, currentIntegrationName) {
|
|
177
284
|
const integrationName = component.config?.integration ?? component.config?.__eco?.integration;
|
|
178
285
|
if (!integrationName || integrationName === "html" || integrationName === currentIntegrationName) {
|
|
@@ -195,7 +302,7 @@ class ForeignSubtreeExecutionService {
|
|
|
195
302
|
input: options.input,
|
|
196
303
|
rendererCache: options.rendererCache,
|
|
197
304
|
getOwningRenderer: options.getOwningRenderer,
|
|
198
|
-
run: (owningRenderer, delegatedInput) => owningRenderer.
|
|
305
|
+
run: async (owningRenderer, delegatedInput) => toForeignSubtreeRenderPayload(await owningRenderer.renderComponentWithForeignChildren(delegatedInput))
|
|
199
306
|
});
|
|
200
307
|
}
|
|
201
308
|
async runInForeignOwningRenderer(options) {
|
|
@@ -206,7 +313,7 @@ class ForeignSubtreeExecutionService {
|
|
|
206
313
|
if (!foreignOwnerIntegrationName) {
|
|
207
314
|
return void 0;
|
|
208
315
|
}
|
|
209
|
-
const owningRenderer = options.getOwningRenderer(foreignOwnerIntegrationName, options.rendererCache);
|
|
316
|
+
const owningRenderer = await options.getOwningRenderer(foreignOwnerIntegrationName, options.rendererCache);
|
|
210
317
|
if (owningRenderer.name === options.currentIntegrationName) {
|
|
211
318
|
return void 0;
|
|
212
319
|
}
|
|
@@ -227,7 +334,33 @@ class ForeignSubtreeExecutionService {
|
|
|
227
334
|
}
|
|
228
335
|
return resolvedHtml;
|
|
229
336
|
}
|
|
337
|
+
createForeignSubtreeToken(tokenPrefix, runtimeContext, foreignSubtreeId) {
|
|
338
|
+
return `${tokenPrefix}${runtimeContext.componentInstanceScope ?? "root"}__${foreignSubtreeId}__`;
|
|
339
|
+
}
|
|
340
|
+
ensureRuntimeContext(options) {
|
|
341
|
+
let integrationContext;
|
|
342
|
+
if (typeof options.renderInput.integrationContext === "object" && options.renderInput.integrationContext !== null) {
|
|
343
|
+
integrationContext = options.renderInput.integrationContext;
|
|
344
|
+
} else {
|
|
345
|
+
integrationContext = {};
|
|
346
|
+
}
|
|
347
|
+
const existingRuntimeContext = integrationContext[options.runtimeContextKey];
|
|
348
|
+
if (typeof existingRuntimeContext !== "object" || existingRuntimeContext === null) {
|
|
349
|
+
integrationContext[options.runtimeContextKey] = options.createRuntimeContext?.(integrationContext, options.rendererCache) ?? {
|
|
350
|
+
rendererCache: options.rendererCache,
|
|
351
|
+
componentInstanceScope: integrationContext.componentInstanceId,
|
|
352
|
+
nextForeignSubtreeId: 0,
|
|
353
|
+
queuedResolutions: []
|
|
354
|
+
};
|
|
355
|
+
} else {
|
|
356
|
+
existingRuntimeContext.rendererCache = options.rendererCache;
|
|
357
|
+
}
|
|
358
|
+
integrationContext.rendererCache = options.rendererCache;
|
|
359
|
+
options.renderInput.integrationContext = integrationContext;
|
|
360
|
+
return integrationContext[options.runtimeContextKey];
|
|
361
|
+
}
|
|
230
362
|
}
|
|
231
363
|
export {
|
|
232
|
-
ForeignSubtreeExecutionService
|
|
364
|
+
ForeignSubtreeExecutionService,
|
|
365
|
+
toForeignSubtreeRenderPayload
|
|
233
366
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../../types/internal-types.js';
|
|
2
|
+
import type { ForeignSubtreeExecutionOwningRenderer } from './foreign-subtree-execution.service.js';
|
|
3
|
+
export type OwningRendererResolutionInput = {
|
|
4
|
+
appConfig: EcoPagesAppConfig;
|
|
5
|
+
runtimeOrigin: string;
|
|
6
|
+
currentIntegrationName: string;
|
|
7
|
+
currentRenderer: ForeignSubtreeExecutionOwningRenderer;
|
|
8
|
+
integrationName: string;
|
|
9
|
+
cache: Map<string, ForeignSubtreeExecutionOwningRenderer>;
|
|
10
|
+
};
|
|
11
|
+
export declare function getForeignSubtreeTokenPrefix(integrationName: string): string;
|
|
12
|
+
export declare function getForeignSubtreeResolutionContextKey(integrationName: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Resolves an owning integration renderer for a foreign-child handoff.
|
|
15
|
+
*
|
|
16
|
+
* Reuses the execution-scoped cache, activates the target runtime when needed,
|
|
17
|
+
* and initializes the plugin renderer once per integration name.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveOwningIntegrationRenderer(input: OwningRendererResolutionInput): Promise<ForeignSubtreeExecutionOwningRenderer>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ensureIntegrationRuntimeReady } from "../../../build/app-build-manifest-runtime.js";
|
|
2
|
+
import { invariant } from "../../../utils/invariant.js";
|
|
3
|
+
function getForeignSubtreeTokenPrefix(integrationName) {
|
|
4
|
+
return `__${integrationName}_foreign_subtree__`;
|
|
5
|
+
}
|
|
6
|
+
function getForeignSubtreeResolutionContextKey(integrationName) {
|
|
7
|
+
return `__${integrationName}_foreign_subtree_runtime__`;
|
|
8
|
+
}
|
|
9
|
+
async function resolveOwningIntegrationRenderer(input) {
|
|
10
|
+
const { integrationName, cache } = input;
|
|
11
|
+
if (cache.has(integrationName)) {
|
|
12
|
+
return cache.get(integrationName);
|
|
13
|
+
}
|
|
14
|
+
if (integrationName === input.currentIntegrationName) {
|
|
15
|
+
cache.set(integrationName, input.currentRenderer);
|
|
16
|
+
return input.currentRenderer;
|
|
17
|
+
}
|
|
18
|
+
await ensureIntegrationRuntimeReady({
|
|
19
|
+
appConfig: input.appConfig,
|
|
20
|
+
integrationName,
|
|
21
|
+
runtimeOrigin: input.runtimeOrigin
|
|
22
|
+
});
|
|
23
|
+
const integrationPlugin = input.appConfig.integrations.find((integration) => integration.name === integrationName);
|
|
24
|
+
invariant(!!integrationPlugin, `[ecopages] Integration not found for foreign owner: ${integrationName}`);
|
|
25
|
+
const renderer = integrationPlugin.initializeRenderer({
|
|
26
|
+
rendererModules: input.appConfig.runtime?.rendererModuleContext
|
|
27
|
+
});
|
|
28
|
+
cache.set(integrationName, renderer);
|
|
29
|
+
return renderer;
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
getForeignSubtreeResolutionContextKey,
|
|
33
|
+
getForeignSubtreeTokenPrefix,
|
|
34
|
+
resolveOwningIntegrationRenderer
|
|
35
|
+
};
|
|
@@ -4,17 +4,16 @@
|
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
6
|
import type { EcoPagesAppConfig, IHmrManager } from '../../types/internal-types.js';
|
|
7
|
-
import type { ComponentRenderInput, ComponentRenderResult,
|
|
7
|
+
import type { ComponentRenderInput, ComponentRenderResult, EcoComponent, EcoPageFile, EcoPagesElement, HtmlTemplateProps, IntegrationRendererRenderOptions, PageBrowserGraphContribution, PageBrowserGraphContributionContext, PageBrowserGraphResult, PageMetadataProps, RouteRendererBody, RouteRendererOptions, RouteRenderResult } from '../../types/public-types.js';
|
|
8
8
|
import { type AssetProcessingService, type ProcessedAsset } from '../../services/assets/asset-processing-service/index.js';
|
|
9
9
|
import { HtmlTransformerService } from '../../services/html/html-transformer.service.js';
|
|
10
10
|
import type { HtmlDocumentContribution } from '../../services/html/html-transformer.service.js';
|
|
11
11
|
import { HttpError } from '../../errors/http-error.js';
|
|
12
12
|
import { DependencyResolverService } from '../page-loading/dependency-resolver.js';
|
|
13
13
|
import { PageModuleLoaderService } from '../page-loading/page-module-loader.js';
|
|
14
|
-
import {
|
|
15
|
-
import type { ForeignChildRuntime } from './component-render-context.js';
|
|
16
|
-
import { ForeignSubtreeExecutionService
|
|
17
|
-
import { type QueuedForeignSubtreeResolutionContext } from './queued-foreign-subtree-resolution.service.js';
|
|
14
|
+
import { RouteRenderOrchestrator, type RouteRenderOrchestratorAdapter, type RouteRenderOrchestratorResolvedInputs } from './route-pipeline/route-render-orchestrator.js';
|
|
15
|
+
import type { ForeignChildRuntime } from './foreign-child/component-render-context.js';
|
|
16
|
+
import { ForeignSubtreeExecutionService } from './foreign-child/foreign-subtree-execution.service.js';
|
|
18
17
|
/**
|
|
19
18
|
* Controls how one route module is loaded outside the normal render path.
|
|
20
19
|
*
|
|
@@ -59,7 +58,23 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
59
58
|
protected pageModuleLoaderService: PageModuleLoaderService;
|
|
60
59
|
protected routeRenderOrchestrator: RouteRenderOrchestrator;
|
|
61
60
|
protected readonly foreignSubtreeExecutionService: ForeignSubtreeExecutionService;
|
|
61
|
+
/**
|
|
62
|
+
* Serializes route and view renders that mutate `htmlTransformer` state.
|
|
63
|
+
*
|
|
64
|
+
* Integration renderers are cached per integration, so concurrent static builds
|
|
65
|
+
* and overlapping SSR requests must not share one transformer page package.
|
|
66
|
+
*/
|
|
67
|
+
private renderExclusiveChain;
|
|
62
68
|
protected DOC_TYPE: string;
|
|
69
|
+
private runRenderExclusive;
|
|
70
|
+
/**
|
|
71
|
+
* Activates the owning integration runtime on first render or graph use.
|
|
72
|
+
*/
|
|
73
|
+
protected ensureIntegrationRuntimeActivated(): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Prebuilds the production Page Browser Graph for one route file.
|
|
76
|
+
*/
|
|
77
|
+
prebuildProductionPageBrowserGraph(routeFile: string): Promise<void>;
|
|
63
78
|
/**
|
|
64
79
|
* Loads one route module through the owning renderer's import path.
|
|
65
80
|
*
|
|
@@ -69,34 +84,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
69
84
|
* with raw transpiler access.
|
|
70
85
|
*/
|
|
71
86
|
loadPageModule(file: string, options?: RouteModuleLoadOptions): Promise<EcoPageFile>;
|
|
72
|
-
/**
|
|
73
|
-
* Reads the execution-scoped owning-renderer cache from one render input.
|
|
74
|
-
*
|
|
75
|
-
* Shared page/layout/document shell helpers pass one cache through
|
|
76
|
-
* `integrationContext` so repeated delegation to the same foreign integration
|
|
77
|
-
* can reuse a single initialized renderer instance during one render flow.
|
|
78
|
-
* The cache is deliberately scoped to the current render execution rather than
|
|
79
|
-
* stored on the renderer, which avoids leaking mutable integration state across
|
|
80
|
-
* requests while still preventing redundant renderer initialization.
|
|
81
|
-
*
|
|
82
|
-
* @param integrationContext - Optional render context carried with one render input.
|
|
83
|
-
* @returns The current execution cache when present.
|
|
84
|
-
*/
|
|
85
|
-
private getOwningRendererCache;
|
|
86
|
-
private getForeignOwnerIntegrationName;
|
|
87
|
-
/**
|
|
88
|
-
* Attaches an execution-scoped owning-renderer cache to one render input.
|
|
89
|
-
*
|
|
90
|
-
* Foreign-owned page, layout, or document shells may delegate several times in
|
|
91
|
-
* the same render flow. Threading the cache through `integrationContext`
|
|
92
|
-
* preserves renderer reuse without changing the public render input contract.
|
|
93
|
-
* Existing integration-specific context is preserved and augmented.
|
|
94
|
-
*
|
|
95
|
-
* @param input - Original render input.
|
|
96
|
-
* @param rendererCache - Execution-scoped renderer cache to propagate.
|
|
97
|
-
* @returns Render input augmented with the shared renderer cache.
|
|
98
|
-
*/
|
|
99
|
-
private withOwningRendererCache;
|
|
100
87
|
protected getRendererModuleValue(key: string): unknown;
|
|
101
88
|
protected getRendererModuleString(key: string): string | undefined;
|
|
102
89
|
protected getRendererBootstrapDependencies(partial?: boolean): ProcessedAsset[];
|
|
@@ -131,7 +118,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
131
118
|
*/
|
|
132
119
|
protected prepareViewDependencies(view: EcoComponent, layout?: EcoComponent): Promise<ProcessedAsset[]>;
|
|
133
120
|
protected resolvePageBrowserGraphForFile(filePath: string): Promise<PageBrowserGraphResult | undefined>;
|
|
134
|
-
protected mergePageBrowserGraphIntoPagePackage(pageBrowserGraph?: PageBrowserGraphResult): PageBrowserGraphResult | undefined;
|
|
135
121
|
/**
|
|
136
122
|
* Merges component-scoped assets into the active HTML transformer state.
|
|
137
123
|
*
|
|
@@ -191,6 +177,7 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
191
177
|
props: P;
|
|
192
178
|
ctx: RenderToResponseContext;
|
|
193
179
|
layout?: EcoComponent;
|
|
180
|
+
transformDocumentHtml?: (html: string) => string;
|
|
194
181
|
}): Promise<Response>;
|
|
195
182
|
/**
|
|
196
183
|
* Renders a route page through optional layout and document shells.
|
|
@@ -219,31 +206,7 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
219
206
|
documentProps?: Record<string, unknown>;
|
|
220
207
|
transformDocumentHtml?: (html: string) => string;
|
|
221
208
|
}): Promise<string>;
|
|
222
|
-
private composeDocumentShell;
|
|
223
|
-
/**
|
|
224
|
-
* Renders one string-first component with serialized children and collects its assets.
|
|
225
|
-
*
|
|
226
|
-
* String-oriented integrations frequently share the same component contract:
|
|
227
|
-
* pass serialized children through props, coerce the render result to HTML, and
|
|
228
|
-
* attach any component-scoped dependencies. This helper centralizes that flow
|
|
229
|
-
* so integrations can opt into shared orchestration without repeating the same
|
|
230
|
-
* string-render boilerplate.
|
|
231
|
-
*
|
|
232
|
-
* @param input - Component render input.
|
|
233
|
-
* @param component - String-oriented component implementation to execute.
|
|
234
|
-
* @returns Structured component render result for orchestration paths.
|
|
235
|
-
*/
|
|
236
209
|
protected renderStringComponentWithSerializedChildren(input: ComponentRenderInput, component: (props: Record<string, unknown>) => Promise<EcoPagesElement> | EcoPagesElement): Promise<ComponentRenderResult>;
|
|
237
|
-
protected getForeignSubtreeTokenPrefix(): string;
|
|
238
|
-
protected getForeignSubtreeResolutionContextKey(): string;
|
|
239
|
-
protected createQueuedForeignSubtreeExecutionRuntime<TContext extends QueuedForeignSubtreeResolutionContext>(options: {
|
|
240
|
-
renderInput: ComponentRenderInput;
|
|
241
|
-
rendererCache: Map<string, IntegrationRenderer<any>>;
|
|
242
|
-
runtimeContextKey?: string;
|
|
243
|
-
tokenPrefix?: string;
|
|
244
|
-
createRuntimeContext?: (integrationContext: BaseIntegrationContext & Record<string, unknown>, rendererCache: Map<string, unknown>) => TContext;
|
|
245
|
-
}): ForeignChildRuntime;
|
|
246
|
-
protected getQueuedForeignSubtreeResolutionContext<TContext extends QueuedForeignSubtreeResolutionContext>(input: ComponentRenderInput): TContext | undefined;
|
|
247
210
|
/**
|
|
248
211
|
* Renders a string-first component, then resolves any queued foreign
|
|
249
212
|
* boundaries before returning final component HTML.
|
|
@@ -256,16 +219,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
256
219
|
rendererModules?: unknown;
|
|
257
220
|
runtimeOrigin: string;
|
|
258
221
|
});
|
|
259
|
-
/**
|
|
260
|
-
* Returns the HTML path from the provided file path.
|
|
261
|
-
* It extracts the path relative to the pages directory and removes the 'index' part if present.
|
|
262
|
-
*
|
|
263
|
-
* @param file - The file path to extract the HTML path from.
|
|
264
|
-
* @returns The extracted HTML path.
|
|
265
|
-
*/
|
|
266
|
-
protected getHtmlPath({ file }: {
|
|
267
|
-
file: string;
|
|
268
|
-
}): string;
|
|
269
222
|
/**
|
|
270
223
|
* Returns the HTML template component.
|
|
271
224
|
* It imports the HTML template from the specified path in the app configuration.
|
|
@@ -293,27 +246,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
293
246
|
* @returns The resolved dependency path.
|
|
294
247
|
*/
|
|
295
248
|
protected resolveDependencyPath(componentDir: string, pathUrl: string): string;
|
|
296
|
-
/**
|
|
297
|
-
* Extracts the dependencies from the provided component configuration.
|
|
298
|
-
* It resolves the paths for scripts and stylesheets based on the component directory.
|
|
299
|
-
*
|
|
300
|
-
* @param componentDir - The component directory path.
|
|
301
|
-
* @param scripts - The scripts to extract.
|
|
302
|
-
* @param stylesheets - The stylesheets to extract.
|
|
303
|
-
* @returns The extracted dependencies.
|
|
304
|
-
*/
|
|
305
|
-
protected extractDependencies({ componentDir, scripts, stylesheets, }: {
|
|
306
|
-
componentDir: string;
|
|
307
|
-
} & EcoComponentDependencies): EcoComponentDependencies;
|
|
308
|
-
/**
|
|
309
|
-
* Resolves lazy script paths to public asset URLs.
|
|
310
|
-
* Converts source paths to their final bundled output paths.
|
|
311
|
-
*
|
|
312
|
-
* @param componentDir - The component directory path.
|
|
313
|
-
* @param scripts - The lazy script paths to resolve.
|
|
314
|
-
* @returns Comma-separated string of resolved public script paths.
|
|
315
|
-
*/
|
|
316
|
-
protected resolveLazyScripts(componentDir: string, scripts: string[]): string;
|
|
317
249
|
/**
|
|
318
250
|
* Collects the dependencies for the provided components.
|
|
319
251
|
* Combines component-specific dependencies with global integration dependencies.
|
|
@@ -343,15 +275,7 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
343
275
|
}): Promise<{
|
|
344
276
|
resolvedDependencies: ProcessedAsset[];
|
|
345
277
|
}>;
|
|
346
|
-
protected resolveRoutePageComponentRender(input: {
|
|
347
|
-
Page: EcoComponent;
|
|
348
|
-
Layout?: EcoComponent;
|
|
349
|
-
props: Record<string, unknown>;
|
|
350
|
-
routeOptions: RouteRendererOptions;
|
|
351
|
-
}): Promise<ComponentRenderResult | undefined>;
|
|
352
278
|
protected renderRouteBody(renderOptions: IntegrationRendererRenderOptions<C>): Promise<RouteRendererBody>;
|
|
353
|
-
protected getRouteHtmlFinalization(renderOptions: IntegrationRendererRenderOptions<C>): RouteHtmlFinalization;
|
|
354
|
-
protected transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[]): Promise<RouteRendererBody>;
|
|
355
279
|
/**
|
|
356
280
|
* Prepares the render options for the integration renderer.
|
|
357
281
|
* It imports the page file, collects dependencies, and prepares the render options.
|
|
@@ -360,19 +284,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
360
284
|
* @returns The prepared render options.
|
|
361
285
|
*/
|
|
362
286
|
protected prepareRenderOptions(options: RouteRendererOptions, adapter?: RouteRenderOrchestratorAdapter<C>): Promise<IntegrationRendererRenderOptions<C>>;
|
|
363
|
-
/**
|
|
364
|
-
* Controls whether the page root should be rendered through `renderComponent()`
|
|
365
|
-
* during route option preparation in component-capable modes.
|
|
366
|
-
*
|
|
367
|
-
* Integrations that already own page-level hydration (for example router-driven
|
|
368
|
-
* React rendering) can override this and return `false` to avoid duplicate root
|
|
369
|
-
* mount assets and competing hydration entrypoints.
|
|
370
|
-
*/
|
|
371
|
-
protected shouldRenderPageComponent(_input: {
|
|
372
|
-
Page: EcoComponent;
|
|
373
|
-
Layout?: EcoComponent;
|
|
374
|
-
options: RouteRendererOptions;
|
|
375
|
-
}): boolean;
|
|
376
287
|
/**
|
|
377
288
|
* Executes the integration renderer with the provided options.
|
|
378
289
|
*
|
|
@@ -380,7 +291,7 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
380
291
|
* 1. Build normalized render options (`prepareRenderOptions`).
|
|
381
292
|
* 2. Render the route body once.
|
|
382
293
|
* 3. Reject unresolved route-level eco-marker artifacts.
|
|
383
|
-
* 4. Optionally apply
|
|
294
|
+
* 4. Optionally apply document attributes for integration-owned document boundaries.
|
|
384
295
|
* 5. Run HTML transformer with final dependency set.
|
|
385
296
|
*
|
|
386
297
|
* Stream-safety note: the first render result is normalized to a string once,
|
|
@@ -391,21 +302,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
391
302
|
* @returns Rendered route body plus effective cache strategy.
|
|
392
303
|
*/
|
|
393
304
|
execute(options: RouteRendererOptions): Promise<RouteRenderResult>;
|
|
394
|
-
/**
|
|
395
|
-
* Finalizes already-resolved HTML for explicit renderer-owned paths.
|
|
396
|
-
*
|
|
397
|
-
* This keeps document and root-attribute stamping plus HTML transformation
|
|
398
|
-
* available after a renderer has completed nested foreign-subtree resolution without
|
|
399
|
-
* routing back through shared route execution.
|
|
400
|
-
*/
|
|
401
|
-
protected finalizeResolvedHtml(options: {
|
|
402
|
-
html: string;
|
|
403
|
-
partial?: boolean;
|
|
404
|
-
componentRootAttributes?: Record<string, string>;
|
|
405
|
-
documentAttributes?: Record<string, string>;
|
|
406
|
-
transformHtml?: boolean;
|
|
407
|
-
htmlContributions?: HtmlDocumentContribution[];
|
|
408
|
-
}): Promise<string>;
|
|
409
305
|
/**
|
|
410
306
|
* Returns document-level attributes to stamp onto the rendered `<html>` tag.
|
|
411
307
|
*
|
|
@@ -413,6 +309,8 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
413
309
|
* other runtime coordination markers without relying on script sniffing.
|
|
414
310
|
*/
|
|
415
311
|
protected getDocumentAttributes(_renderOptions: IntegrationRendererRenderOptions<C>): Record<string, string> | undefined;
|
|
312
|
+
protected applyAttributesToFirstBodyElement(html: string, attributes: Record<string, string>): string;
|
|
313
|
+
protected applyAttributesToHtmlElement(html: string, attributes: Record<string, string>): string;
|
|
416
314
|
/**
|
|
417
315
|
* Returns declarative HTML fragments that core should inject into the final document.
|
|
418
316
|
*
|
|
@@ -423,17 +321,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
423
321
|
* response finalization logic.
|
|
424
322
|
*/
|
|
425
323
|
protected getHtmlDocumentContributions(_options: HtmlDocumentContributionContext<C>): HtmlDocumentContribution[] | undefined;
|
|
426
|
-
/**
|
|
427
|
-
* Returns a renderer instance for a given integration name.
|
|
428
|
-
*
|
|
429
|
-
* Uses a per-execution cache to avoid repeated renderer initialization.
|
|
430
|
-
*
|
|
431
|
-
* @param integrationName Target integration name.
|
|
432
|
-
* @param cache Render-pass renderer cache.
|
|
433
|
-
* @returns Renderer for the requested integration.
|
|
434
|
-
* @throws Error when no integration plugin matches `integrationName`.
|
|
435
|
-
*/
|
|
436
|
-
protected getIntegrationRendererForName(integrationName: string, cache: Map<string, ForeignSubtreeExecutionOwningRenderer>): ForeignSubtreeExecutionOwningRenderer;
|
|
437
324
|
/**
|
|
438
325
|
* Abstract method to render the integration-specific component.
|
|
439
326
|
* This method should be implemented by the specific integration renderer.
|
|
@@ -451,12 +338,6 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
|
|
|
451
338
|
* renderer's nested foreign-child handoff.
|
|
452
339
|
*/
|
|
453
340
|
renderComponentWithForeignChildren(input: ComponentRenderInput): Promise<ComponentRenderResult>;
|
|
454
|
-
/**
|
|
455
|
-
* Compatibility foreign-subtree contract that exposes a narrower payload shape for
|
|
456
|
-
* future route-composition work while preserving the current
|
|
457
|
-
* `renderComponentWithForeignChildren()` runtime semantics.
|
|
458
|
-
*/
|
|
459
|
-
renderForeignSubtree(input: ComponentRenderInput): Promise<ForeignSubtreeRenderPayload>;
|
|
460
341
|
private normalizeComponentRenderOutput;
|
|
461
342
|
protected normalizeUnresolvedMarkerArtifactHtml(html: string): string;
|
|
462
343
|
/**
|