@ecopages/core 0.2.0-beta.8 → 0.2.0-rc.0
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 +42 -13
- package/package.json +361 -58
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +57 -5
- package/src/adapters/abstract/application-adapter.js +261 -203
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +147 -0
- package/src/adapters/abstract/server-adapter.d.ts +13 -2
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +2 -50
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -57
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.d.ts +4 -6
- package/src/adapters/bun/create-app.js +169 -154
- package/src/adapters/bun/hmr-manager.d.ts +2 -3
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -8
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +34 -53
- package/src/adapters/bun/server-adapter.js +557 -637
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- package/src/adapters/bun/static-preview-host.js +43 -41
- package/src/adapters/create-app.d.ts +1 -12
- package/src/adapters/create-app.js +11 -72
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +2 -8
- package/src/adapters/node/create-app.d.ts +4 -3
- package/src/adapters/node/create-app.js +123 -98
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.js +62 -64
- package/src/adapters/node/node-hmr-manager.d.ts +2 -3
- package/src/adapters/node/node-hmr-manager.js +58 -48
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -17
- package/src/adapters/node/server-adapter.d.ts +28 -8
- package/src/adapters/node/server-adapter.js +349 -302
- package/src/adapters/node/static-content-server.js +172 -186
- package/src/adapters/node/static-preview-host.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +88 -64
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +132 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/http/api-response.js +79 -0
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +26 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +49 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/http/fs-server-response-matcher.js +260 -0
- 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/runtime/application-adapter.js +75 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +226 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/runtime/render-context.js +99 -0
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -2
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
- package/src/adapters/shared/runtime/server-adapter.js +301 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/runtime/server-route-handler.js +77 -0
- package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +26 -31
- package/src/adapters/shared/runtime/server-static-builder.js +172 -0
- package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
- package/src/adapters/shared/{node-http-websocket-upgrades.d.ts → ws/node-http-websocket-upgrades.d.ts} +1 -1
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
- package/src/build/README.md +165 -45
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +145 -0
- package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +4 -0
- package/src/build/browser/browser-runtime-manifest.js +65 -0
- package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +3 -5
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +12 -13
- package/src/build/browser/browser-runtime-plugin.js +218 -0
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +55 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +4 -0
- package/src/build/build-adapter.d.ts +29 -340
- package/src/build/build-adapter.js +258 -260
- package/src/build/{build-input-fingerprint.d.ts → cache/build-input-fingerprint.d.ts} +3 -3
- package/src/build/cache/build-input-fingerprint.js +33 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +4 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +71 -0
- package/src/build/{pages-unified-graph-build.d.ts → cache/pages-unified-graph-build.d.ts} +1 -1
- package/src/build/cache/pages-unified-graph-build.js +199 -0
- package/src/build/cache/production-build-cache.d.ts +21 -0
- package/src/build/cache/production-build-cache.js +56 -0
- package/src/build/{server-entry-build-cache.d.ts → cache/server-entry-build-cache.d.ts} +3 -4
- package/src/build/cache/server-entry-build-cache.js +153 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/contracts/build-manifest.js +64 -0
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/contracts/content-virtual-modules.d.ts +12 -0
- package/src/build/contracts/content-virtual-modules.js +29 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
- package/src/build/rolldown/rolldown-adapter-helpers.js +463 -0
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/rolldown/rolldown-build-adapter.js +57 -0
- package/src/build/{rolldown-build-invocation-metrics.d.ts → rolldown/rolldown-build-invocation-metrics.d.ts} +1 -1
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
- package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
- package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
- package/src/build/rolldown/server-side-css-shim-plugin.js +58 -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 +79 -0
- package/src/build/runtime/build-request-policy.d.ts +58 -0
- package/src/build/runtime/build-request-policy.js +84 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +75 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +40 -0
- package/src/build/{parallel-build-executor.d.ts → runtime/parallel-build-executor.d.ts} +1 -1
- package/src/build/runtime/parallel-build-executor.js +60 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- package/src/build/runtime/serialized-build-executor.js +79 -0
- package/src/cache/index.d.ts +2 -1
- package/src/cache/index.js +7 -6
- package/src/cache/module-parse-cache.d.ts +5 -0
- package/src/cache/module-parse-cache.js +122 -67
- package/src/cache/module-transform-profiler.d.ts +8 -0
- package/src/cache/module-transform-profiler.js +8 -0
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +49 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +3 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +16 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +90 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +33 -0
- package/src/client/scroll.test.browser.d.ts +1 -0
- package/src/client/scroll.test.browser.js +31 -0
- package/src/client/view-transitions.d.ts +32 -0
- package/src/client/view-transitions.js +120 -0
- package/src/client/view-transitions.test.browser.d.ts +1 -0
- package/src/client/view-transitions.test.browser.js +56 -0
- package/src/config/README.md +1 -1
- package/src/config/config-builder.d.ts +42 -12
- package/src/config/config-builder.js +645 -600
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +44 -23
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +10 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +8 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +10 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +25 -23
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +3 -0
- package/src/dev/sc-server.js +106 -103
- package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
- package/src/dev/transform-server/dev-transform-bundler.js +79 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.js +127 -0
- package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
- package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
- package/src/dev/transform-server/dev-transform-server.js +191 -0
- package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-url.js +58 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +166 -0
- package/src/dev/transform-server/index.d.ts +6 -0
- package/src/dev/transform-server/index.js +4 -0
- package/src/dev/transform-server/types.d.ts +15 -0
- package/src/dev/transform-server/types.js +1 -0
- package/src/dev-toolbar/README.md +52 -0
- package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
- package/src/dev-toolbar/define-dev-tool.js +9 -0
- package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
- package/src/dev-toolbar/dev-toolbar-config.js +19 -0
- package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
- package/src/dev-toolbar/dev-toolbar-host.js +117 -0
- package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
- package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
- package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
- package/src/dev-toolbar/dev-toolbar-package.js +78 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
- package/src/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +39 -0
- package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
- package/src/diagnostics/request-pipeline-metrics.js +121 -0
- package/src/diagnostics/startup-trace.d.ts +81 -0
- package/src/diagnostics/startup-trace.js +281 -0
- package/src/eco/README.md +17 -0
- package/src/eco/component-identity.d.ts +13 -0
- package/src/eco/component-identity.js +18 -0
- package/src/eco/eco-declared-component.d.ts +15 -0
- package/src/eco/eco-declared-component.js +23 -0
- package/src/eco/eco.browser.js +63 -70
- package/src/eco/eco.js +163 -97
- package/src/eco/eco.types.d.ts +47 -8
- package/src/eco/eco.types.js +5 -0
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -10
- package/src/eco/global-injector-map.js +55 -41
- package/src/eco/lazy-injector-map.js +90 -60
- package/src/eco/module-dependencies.js +52 -44
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +69 -0
- package/src/env.d.ts +2 -0
- package/src/errors/http-error.d.ts +8 -0
- package/src/errors/http-error.js +66 -49
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -6
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +21 -0
- package/src/hmr/client/hmr-runtime.js +119 -110
- package/src/hmr/client/module-update.d.ts +13 -0
- package/src/hmr/client/module-update.js +39 -0
- package/src/hmr/hmr-asset-paths.d.ts +14 -0
- package/src/hmr/hmr-asset-paths.js +22 -0
- package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
- package/src/hmr/hmr-entrypoint-output.js +34 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +14 -0
- package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
- package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
- package/src/hmr/hmr-runtime-paths.d.ts +10 -0
- package/src/hmr/hmr-runtime-paths.js +13 -0
- package/src/hmr/hmr-strategy.d.ts +9 -0
- package/src/hmr/hmr-strategy.js +113 -42
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
- package/src/hmr/strategies/js-hmr-strategy.js +107 -167
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
- package/src/index.browser.d.ts +1 -0
- package/src/index.browser.js +2 -4
- package/src/index.d.ts +4 -1
- package/src/index.js +7 -21
- package/src/islands/README.md +25 -0
- package/src/islands/island-host.d.ts +37 -0
- package/src/islands/island-host.js +55 -0
- package/src/plugins/README.md +2 -1
- package/src/plugins/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +35 -62
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +20 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
- package/src/plugins/eco-component-meta-plugin.js +123 -162
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +49 -37
- package/src/plugins/integration-plugin.d.ts +24 -6
- package/src/plugins/integration-plugin.js +212 -195
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +21 -0
- package/src/plugins/package-specifier.d.ts +12 -0
- package/src/plugins/package-specifier.js +33 -0
- package/src/plugins/processor.d.ts +66 -12
- package/src/plugins/processor.js +168 -137
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.d.ts +32 -1
- package/src/plugins/source-transform.js +112 -60
- package/src/plugins/tsconfig-import-resolver.d.ts +37 -0
- package/src/plugins/tsconfig-import-resolver.js +262 -0
- package/src/route-renderer/GRAPH.md +24 -30
- package/src/route-renderer/README.md +52 -32
- 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 +155 -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 +37 -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/foreign-child/component-render-context.js +196 -0
- package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +20 -7
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +195 -0
- 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-child/foreign-subtree-execution.service.js +354 -0
- 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 +36 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +37 -153
- package/src/route-renderer/orchestration/integration-renderer.js +803 -1008
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -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 +132 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
- 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 +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -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 +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +248 -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/page-browser-graph/processed-asset-dedupe.js +23 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -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 +25 -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 +43 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +44 -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 +30 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
- package/src/{integrations/ghtml/ghtml-renderer.d.ts → route-renderer/orchestration/string-markup-renderer.d.ts} +8 -10
- package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
- package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
- package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
- package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
- package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
- package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
- package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
- package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
- package/src/route-renderer/page-loading/page-module-loader.js +136 -124
- package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
- package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/README.md +31 -0
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +56 -30
- package/src/router/client/link-intent.test.browser.js +50 -39
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +122 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +82 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +235 -211
- package/src/router/client/navigation-lifecycle.d.ts +55 -0
- package/src/router/client/navigation-lifecycle.js +50 -0
- package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
- package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
- package/src/router/server/route-registry.js +237 -242
- package/src/services/README.md +5 -0
- 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 +64 -50
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +12 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +335 -268
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
- 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 +115 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -58
- 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 +5 -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 +85 -60
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +8 -6
- 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 +23 -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 +22 -0
- package/src/services/assets/asset-processing-service/page-package.js +70 -72
- package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
- package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
- 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 +102 -130
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- 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 +111 -111
- 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 +95 -94
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
- 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 +26 -57
- 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 +33 -67
- 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 +44 -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 +15 -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 +27 -44
- package/src/services/assets/browser-bundle.service.d.ts +27 -30
- package/src/services/assets/browser-bundle.service.js +54 -46
- package/src/services/assets/browser-runtime-asset-generation.d.ts +17 -0
- package/src/services/assets/browser-runtime-asset-generation.js +28 -0
- package/src/services/cache/cache.types.d.ts +4 -2
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
- package/src/services/cache/html-page-cache-dependency-index.js +88 -0
- package/src/services/cache/index.d.ts +2 -0
- package/src/services/cache/index.js +8 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.d.ts +31 -1
- package/src/services/cache/page-cache-service.js +237 -150
- package/src/services/cache/page-request-cache-coordinator.service.d.ts +2 -1
- package/src/services/cache/page-request-cache-coordinator.service.js +112 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.d.ts +15 -1
- package/src/services/invalidation/development-invalidation.service.js +241 -204
- package/src/services/module-loading/README.md +9 -6
- package/src/services/module-loading/app-module-loader.service.js +1 -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 +104 -106
- package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
- package/src/services/module-loading/collection-server-module-build.service.js +83 -0
- package/src/services/module-loading/host-module-loader-registry.js +6 -11
- package/src/services/module-loading/module-loading-types.js +1 -0
- package/src/services/module-loading/page-module-import.service.d.ts +7 -12
- package/src/services/module-loading/page-module-import.service.js +232 -206
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +2 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +59 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.d.ts +10 -0
- package/src/services/module-loading/route-module-build-cache.store.js +213 -196
- package/src/services/module-loading/route-module-build-manifest.d.ts +10 -14
- package/src/services/module-loading/route-module-build-manifest.js +54 -118
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +2 -2
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -109
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
- package/src/services/module-loading/server-module-transpiler.service.js +65 -62
- package/src/services/module-loading/source-module-support.js +15 -7
- package/src/services/runtime-state/dev-graph.service.js +165 -157
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
- package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +156 -95
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- package/src/services/validation/standard-schema.types.js +1 -0
- 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 +10 -2
- package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +36 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +42 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +2 -2
- package/src/static-site-generator/static-build-invalidation.js +33 -74
- package/src/static-site-generator/static-export-context.d.ts +9 -1
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.d.ts +27 -6
- package/src/static-site-generator/static-site-generator.js +528 -389
- package/src/types/internal-types.d.ts +55 -17
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +236 -95
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +30 -0
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +22 -5
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.d.ts +1 -0
- package/src/utils/parse-cli-args.js +73 -62
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +42 -0
- package/src/utils/path-utils.module.js +8 -11
- package/src/utils/resolve-entry-file.js +70 -38
- package/src/utils/resolve-work-dir.js +23 -27
- package/src/utils/runtime.js +24 -33
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +60 -53
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +54 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +17 -0
- package/src/watchers/project-watcher.d.ts +21 -6
- package/src/watchers/project-watcher.js +402 -277
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/api-response.js +0 -96
- package/src/adapters/shared/application-adapter.js +0 -90
- package/src/adapters/shared/bun-user-websocket-lifecycle.js +0 -102
- package/src/adapters/shared/copy-runtime-public-dir.js +0 -24
- 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/explicit-static-render-preparation.js +0 -26
- package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
- package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
- package/src/adapters/shared/fs-server-response-factory.js +0 -81
- package/src/adapters/shared/fs-server-response-matcher.js +0 -186
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/hmr-html-response.js +0 -33
- package/src/adapters/shared/node-http-websocket-upgrades.js +0 -125
- package/src/adapters/shared/render-context.js +0 -93
- package/src/adapters/shared/runtime-app-bootstrap.js +0 -41
- package/src/adapters/shared/runtime-host.js +0 -0
- package/src/adapters/shared/server-adapter.js +0 -436
- package/src/adapters/shared/server-route-handler.js +0 -111
- package/src/adapters/shared/server-static-builder.js +0 -202
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -61
- package/src/adapters/shared/shared-hmr-manager.js +0 -273
- package/src/adapters/shared/static-preview-host.js +0 -0
- package/src/adapters/shared/websocket-lifecycle.d.ts +0 -3
- package/src/adapters/shared/websocket-lifecycle.js +0 -19
- package/src/build/browser-runtime-manifest.js +0 -61
- package/src/build/browser-runtime-plugin-helpers.js +0 -14
- package/src/build/browser-runtime-plugin.js +0 -173
- package/src/build/build-input-fingerprint.js +0 -31
- package/src/build/build-manifest.d.ts +0 -33
- package/src/build/build-manifest.js +0 -49
- package/src/build/build-types.js +0 -0
- package/src/build/jsx-ownership-plugins.d.ts +0 -10
- package/src/build/jsx-ownership-plugins.js +0 -17
- package/src/build/pages-unified-graph-build.js +0 -208
- package/src/build/parallel-build-executor.js +0 -52
- package/src/build/rolldown-adapter-helpers.js +0 -309
- package/src/build/rolldown-build-adapter.js +0 -67
- package/src/build/rolldown-build-invocation-metrics.js +0 -43
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -182
- package/src/build/rolldown-plugin-bridge.js +0 -199
- package/src/build/runtime-build-executor.d.ts +0 -15
- package/src/build/runtime-build-executor.js +0 -43
- package/src/build/runtime-build-output-normalizer.js +0 -203
- package/src/build/serialized-build-executor.js +0 -63
- package/src/build/server-entry-build-cache.js +0 -169
- package/src/build/server-side-css-shim-plugin.js +0 -35
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -54
- package/src/integrations/ghtml/ghtml-renderer.js +0 -57
- package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
- package/src/integrations/ghtml/ghtml.constants.js +0 -4
- package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
- package/src/integrations/ghtml/ghtml.plugin.js +0 -20
- package/src/route-renderer/orchestration/component-render-context.js +0 -147
- 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/foreign-subtree-execution.service.js +0 -231
- 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/ownership-validation.service.js +0 -53
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
- 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/render-output.utils.js +0 -175
- package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- package/src/utils/html.d.ts +0 -1
- package/src/utils/html.js +0 -4
- /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
- /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* Assembles the final integration render options after route prep dependencies resolve.
|
|
6
|
+
*/
|
|
7
|
+
export function buildPreparedRenderOptions(input) {
|
|
8
|
+
const { routeOptions, resolvedInputs, resolvedPageDependencyComponents, resolvedDependencies, allDependencies, pageBrowserGraph, } = input;
|
|
9
|
+
const { Page, HtmlTemplate, Layouts, Layout, layoutEntries, props, metadata, integrationSpecificProps } = resolvedInputs;
|
|
10
|
+
const dedupedDependencies = dedupeProcessedAssets(allDependencies);
|
|
11
|
+
const pagePackage = createPagePackage(dedupedDependencies, { pageBrowserGraph });
|
|
12
|
+
const resolvedProps = props;
|
|
13
|
+
const pageProps = {
|
|
14
|
+
...resolvedProps,
|
|
15
|
+
params: routeOptions.params || {},
|
|
16
|
+
query: routeOptions.query || {},
|
|
17
|
+
};
|
|
18
|
+
const cacheStrategy = Page.cache;
|
|
19
|
+
const pageLocals = routeOptions.locals ?? createPageLocalsProxy(routeOptions.file);
|
|
20
|
+
const locals = routeOptions.locals;
|
|
21
|
+
const preparedOptions = {
|
|
22
|
+
...routeOptions,
|
|
23
|
+
resolvedPageDependencyComponents,
|
|
24
|
+
resolvedDependencies,
|
|
25
|
+
pagePackage,
|
|
26
|
+
HtmlTemplate: HtmlTemplate,
|
|
27
|
+
Layouts,
|
|
28
|
+
Layout,
|
|
29
|
+
layoutEntries,
|
|
30
|
+
props: resolvedProps,
|
|
31
|
+
Page: Page,
|
|
32
|
+
metadata,
|
|
33
|
+
params: routeOptions.params || {},
|
|
34
|
+
query: routeOptions.query || {},
|
|
35
|
+
pageProps,
|
|
36
|
+
locals,
|
|
37
|
+
pageLocals,
|
|
38
|
+
cacheStrategy,
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
...integrationSpecificProps,
|
|
42
|
+
...preparedOptions,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { LocalsAccessError } from '../../../errors/locals-access-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Proxy that throws when dynamic route locals are accessed on non-dynamic pages.
|
|
4
|
+
*/
|
|
5
|
+
export function createPageLocalsProxy(filePath) {
|
|
6
|
+
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.`;
|
|
7
|
+
return new Proxy({}, {
|
|
8
|
+
get: () => {
|
|
9
|
+
throw new LocalsAccessError(errorMessage);
|
|
10
|
+
},
|
|
11
|
+
set: () => {
|
|
12
|
+
throw new LocalsAccessError(errorMessage);
|
|
13
|
+
},
|
|
14
|
+
has: () => {
|
|
15
|
+
throw new LocalsAccessError(errorMessage);
|
|
16
|
+
},
|
|
17
|
+
ownKeys: () => {
|
|
18
|
+
throw new LocalsAccessError(errorMessage);
|
|
19
|
+
},
|
|
20
|
+
deleteProperty: () => {
|
|
21
|
+
throw new LocalsAccessError(errorMessage);
|
|
22
|
+
},
|
|
23
|
+
defineProperty: () => {
|
|
24
|
+
throw new LocalsAccessError(errorMessage);
|
|
25
|
+
},
|
|
26
|
+
getOwnPropertyDescriptor: () => {
|
|
27
|
+
throw new LocalsAccessError(errorMessage);
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -1,13 +1,18 @@
|
|
|
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, PageBrowserGraphContributionContext, 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
|
+
import type { GroupedGraphBuildPlan } from '../page-browser-graph/grouped-graph-build-plan.js';
|
|
8
|
+
import type { ResolvedPageDependencies } from '../../page-loading/resolved-page-dependencies.js';
|
|
7
9
|
export type RouteRenderOrchestratorResolvedInputs = {
|
|
8
10
|
Page: EcoPageFile['default'] | EcoPageComponent<any>;
|
|
11
|
+
pageModule: EcoPageFile;
|
|
9
12
|
HtmlTemplate: EcoComponent<HtmlTemplateProps>;
|
|
13
|
+
Layouts: EcoComponent[];
|
|
10
14
|
Layout?: EcoComponent;
|
|
15
|
+
layoutEntries?: EcoPageLayoutEntry[];
|
|
11
16
|
props: Record<string, unknown>;
|
|
12
17
|
metadata: PageMetadataProps;
|
|
13
18
|
integrationSpecificProps: Record<string, unknown>;
|
|
@@ -41,18 +46,14 @@ export interface RouteRenderOrchestratorAdapter<C> {
|
|
|
41
46
|
components: (EcoComponent | Partial<EcoComponent>)[];
|
|
42
47
|
}): Promise<RouteRenderOrchestratorResolvedDependencies>;
|
|
43
48
|
/**
|
|
44
|
-
* Collects declarative Page Browser Graph requirements for one route.
|
|
49
|
+
* Collects declarative Page Browser Graph requirements for one route instance.
|
|
45
50
|
*/
|
|
46
|
-
collectPageBrowserGraphContribution(
|
|
51
|
+
collectPageBrowserGraphContribution(context: PageBrowserGraphContributionContext): Promise<PageBrowserGraphContribution | undefined>;
|
|
52
|
+
resolvePageDependencies(context: PageBrowserGraphContributionContext): Promise<ResolvedPageDependencies | undefined>;
|
|
47
53
|
/**
|
|
48
|
-
*
|
|
54
|
+
* Builds the graph contribution context for one route file and optional params.
|
|
49
55
|
*/
|
|
50
|
-
|
|
51
|
-
Page: EcoComponent;
|
|
52
|
-
Layout?: EcoComponent;
|
|
53
|
-
props: Record<string, unknown>;
|
|
54
|
-
routeOptions: RouteRendererOptions;
|
|
55
|
-
}): Promise<ComponentRenderResult | undefined>;
|
|
56
|
+
buildPageBrowserGraphContributionContext(routeFile: string, routeOptions?: Pick<RouteRendererOptions, 'params' | 'query'>): Promise<PageBrowserGraphContributionContext>;
|
|
56
57
|
/**
|
|
57
58
|
* Executes the Integration-specific route render.
|
|
58
59
|
*/
|
|
@@ -64,7 +65,7 @@ export interface RouteRenderOrchestratorAdapter<C> {
|
|
|
64
65
|
/**
|
|
65
66
|
* Runs SSR-policy response transformation and returns the body value exposed to callers.
|
|
66
67
|
*/
|
|
67
|
-
transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[], pagePackage?:
|
|
68
|
+
transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[], pagePackage?: IntegrationRendererRenderOptions<C>['pagePackage']): Promise<RouteRendererBody>;
|
|
68
69
|
}
|
|
69
70
|
/**
|
|
70
71
|
* Captured route-render output in both replayable body and string HTML forms.
|
|
@@ -77,8 +78,8 @@ export interface CapturedHtmlRenderResult {
|
|
|
77
78
|
* Optional app-scoped collaborators used by the route render orchestrator.
|
|
78
79
|
*/
|
|
79
80
|
export interface RouteRenderOrchestratorDependencies {
|
|
80
|
-
ownershipPlanningService?: OwnershipPlanningService;
|
|
81
81
|
ownershipValidationService?: OwnershipValidationService;
|
|
82
|
+
pageBrowserGraphService?: PageBrowserGraphService;
|
|
82
83
|
}
|
|
83
84
|
/**
|
|
84
85
|
* Owns one route render from normalized module loading through final HTML output.
|
|
@@ -91,49 +92,24 @@ export interface RouteRenderOrchestratorDependencies {
|
|
|
91
92
|
export declare class RouteRenderOrchestrator {
|
|
92
93
|
private readonly appConfig;
|
|
93
94
|
private readonly assetProcessingService;
|
|
94
|
-
private readonly ownershipPlanningService;
|
|
95
95
|
private readonly ownershipValidationService;
|
|
96
|
-
private readonly
|
|
97
|
-
private readonly groupedPageBrowserGraphCache;
|
|
96
|
+
private readonly pageBrowserGraphService;
|
|
98
97
|
constructor(appConfig: EcoPagesAppConfig, assetProcessingService: AssetProcessingService, dependencies?: RouteRenderOrchestratorDependencies);
|
|
99
98
|
/**
|
|
100
99
|
* Builds normalized route render options before the integration render runs.
|
|
101
100
|
*
|
|
102
101
|
* This preparation step validates route-root ownership, resolves page data,
|
|
103
|
-
* collects processed assets,
|
|
104
|
-
*
|
|
102
|
+
* collects processed assets, and produces the page package consumed by downstream
|
|
103
|
+
* HTML transformation.
|
|
105
104
|
*/
|
|
106
105
|
prepareRenderOptions<C = unknown>(routeOptions: RouteRendererOptions, adapter: RouteRenderOrchestratorAdapter<C>): Promise<IntegrationRendererRenderOptions<C>>;
|
|
107
106
|
resolveDeclaredPageBrowserGraph(input: {
|
|
108
107
|
routeFile: string;
|
|
108
|
+
dependencyInstanceKey?: string;
|
|
109
109
|
integrationName: string;
|
|
110
|
-
collectContribution: (
|
|
110
|
+
collectContribution: () => Promise<PageBrowserGraphContribution | undefined>;
|
|
111
|
+
groupedBuildPlan?: GroupedGraphBuildPlan;
|
|
111
112
|
}): 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
113
|
/**
|
|
138
114
|
* Captures one route render body as HTML while preserving a replayable body value.
|
|
139
115
|
*/
|
|
@@ -147,10 +123,4 @@ export declare class RouteRenderOrchestrator {
|
|
|
147
123
|
*/
|
|
148
124
|
executePrepared<C = unknown>(renderOptions: IntegrationRendererRenderOptions<C>, adapter: RouteRenderOrchestratorAdapter<C>): Promise<RouteRenderResult>;
|
|
149
125
|
private captureRenderedBody;
|
|
150
|
-
private collectResolvedTriggers;
|
|
151
|
-
private collectUsedIntegrationDependencies;
|
|
152
|
-
private collectIntegrationNames;
|
|
153
|
-
private buildGlobalInjectorAssets;
|
|
154
|
-
private buildEagerSsrLazyAssets;
|
|
155
|
-
private collectEagerSsrLazyDependencies;
|
|
156
126
|
}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { collectHtmlCacheSourceDependencyPaths } from '../../../services/cache/html-page-cache-dependency-index.js';
|
|
2
|
+
import { getComponentIdentity } from '../../../eco/component-identity.js';
|
|
3
|
+
import { inspectUnresolvedMarkerArtifactHtml } from './marker-artifact.utils.js';
|
|
4
|
+
import { OwnershipValidationService, throwIfOwnershipInvalid, } from '../ownership-graph/ownership-validation.service.js';
|
|
5
|
+
import { buildEagerSsrLazyAssetsFromGraph, collectResolvedLazyTriggersFromGraph, collectUsedIntegrationDependenciesFromGraph, } from '../ownership-graph/component-graph-collectors.js';
|
|
6
|
+
import { buildGlobalInjectorAssets } from '../page-browser-graph/global-injector-assets.service.js';
|
|
7
|
+
import { mergePageBrowserGraphContributions } from '../page-browser-graph/page-browser-graph-contribution.merge.js';
|
|
8
|
+
import { PageBrowserGraphService } from '../page-browser-graph/page-browser-graph.service.js';
|
|
9
|
+
import { createPageDependencyInstanceKey } from '../page-browser-graph/route-instance-key.js';
|
|
10
|
+
import { buildPreparedRenderOptions } from './route-prepared-options.builder.js';
|
|
11
|
+
import { measureRouteRenderPhase } from '../../../diagnostics/request-pipeline-metrics.js';
|
|
12
|
+
/**
|
|
13
|
+
* Owns one route render from normalized module loading through final HTML output.
|
|
14
|
+
*
|
|
15
|
+
* This orchestrator keeps route rendering as one app-scoped unit while still
|
|
16
|
+
* delegating integration-specific behavior through the adapter seam. It owns
|
|
17
|
+
* route-root validation, dependency aggregation, page package creation, and the
|
|
18
|
+
* final HTML/body handling that happens after the integration render returns.
|
|
19
|
+
*/
|
|
20
|
+
export class RouteRenderOrchestrator {
|
|
21
|
+
appConfig;
|
|
22
|
+
assetProcessingService;
|
|
23
|
+
ownershipValidationService;
|
|
24
|
+
pageBrowserGraphService;
|
|
25
|
+
constructor(appConfig, assetProcessingService, dependencies = {}) {
|
|
26
|
+
this.appConfig = appConfig;
|
|
27
|
+
this.assetProcessingService = assetProcessingService;
|
|
28
|
+
this.ownershipValidationService =
|
|
29
|
+
dependencies.ownershipValidationService ?? new OwnershipValidationService(appConfig);
|
|
30
|
+
this.pageBrowserGraphService =
|
|
31
|
+
dependencies.pageBrowserGraphService ?? new PageBrowserGraphService(appConfig, assetProcessingService);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Builds normalized route render options before the integration render runs.
|
|
35
|
+
*
|
|
36
|
+
* This preparation step validates route-root ownership, resolves page data,
|
|
37
|
+
* collects processed assets, and produces the page package consumed by downstream
|
|
38
|
+
* HTML transformation.
|
|
39
|
+
*/
|
|
40
|
+
async prepareRenderOptions(routeOptions, adapter) {
|
|
41
|
+
const resolvedInputs = await measureRouteRenderPhase('resolve-route-inputs', () => adapter.resolveRouteRenderInputs(routeOptions));
|
|
42
|
+
const finalProps = {
|
|
43
|
+
...resolvedInputs.props,
|
|
44
|
+
...(routeOptions.props ?? {}),
|
|
45
|
+
};
|
|
46
|
+
const finalResolvedInputs = {
|
|
47
|
+
...resolvedInputs,
|
|
48
|
+
props: finalProps,
|
|
49
|
+
};
|
|
50
|
+
const { Page, HtmlTemplate, Layouts } = finalResolvedInputs;
|
|
51
|
+
await measureRouteRenderPhase('ownership-validation', async () => {
|
|
52
|
+
const validationErrors = this.ownershipValidationService.validate({
|
|
53
|
+
currentIntegrationName: adapter.name,
|
|
54
|
+
roots: [
|
|
55
|
+
{ component: HtmlTemplate, source: 'html-template' },
|
|
56
|
+
...Layouts.map((layout) => ({ component: layout, source: 'layout' })),
|
|
57
|
+
{ component: Page, source: 'page' },
|
|
58
|
+
],
|
|
59
|
+
});
|
|
60
|
+
throwIfOwnershipInvalid(validationErrors);
|
|
61
|
+
});
|
|
62
|
+
const componentsToResolve = [HtmlTemplate, ...Layouts, Page];
|
|
63
|
+
const dependencyInstanceKey = createPageDependencyInstanceKey({
|
|
64
|
+
params: routeOptions.params,
|
|
65
|
+
query: routeOptions.query,
|
|
66
|
+
});
|
|
67
|
+
const graphContext = {
|
|
68
|
+
file: routeOptions.file,
|
|
69
|
+
pageModule: finalResolvedInputs.pageModule,
|
|
70
|
+
props: finalProps,
|
|
71
|
+
params: routeOptions.params,
|
|
72
|
+
query: routeOptions.query,
|
|
73
|
+
dependencyInstanceKey,
|
|
74
|
+
};
|
|
75
|
+
const resolvedPageDependencies = await adapter.resolvePageDependencies(graphContext);
|
|
76
|
+
const { resolvedDependencies } = await measureRouteRenderPhase('resolve-dependencies', () => adapter.resolveRouteDependencies({
|
|
77
|
+
components: componentsToResolve,
|
|
78
|
+
}));
|
|
79
|
+
const pageBrowserGraph = await measureRouteRenderPhase('page-browser-graph', () => this.pageBrowserGraphService.resolvePageBrowserGraph({
|
|
80
|
+
routeFile: routeOptions.file,
|
|
81
|
+
dependencyInstanceKey,
|
|
82
|
+
integrationName: adapter.name,
|
|
83
|
+
collectContribution: async () => mergePageBrowserGraphContributions(await adapter.collectPageBrowserGraphContribution(graphContext), resolvedPageDependencies?.contribution),
|
|
84
|
+
}));
|
|
85
|
+
const graphDependencyPaths = this.pageBrowserGraphService.getDependencyPathsForRoute({
|
|
86
|
+
integrationName: adapter.name,
|
|
87
|
+
routeFile: routeOptions.file,
|
|
88
|
+
dependencyInstanceKey,
|
|
89
|
+
});
|
|
90
|
+
const resolvedPageDependencyComponents = resolvedPageDependencies?.components ?? [];
|
|
91
|
+
const allDependencies = [
|
|
92
|
+
...resolvedDependencies,
|
|
93
|
+
...collectUsedIntegrationDependenciesFromGraph(this.appConfig, componentsToResolve, adapter.name),
|
|
94
|
+
];
|
|
95
|
+
const triggers = collectResolvedLazyTriggersFromGraph(componentsToResolve, adapter.name);
|
|
96
|
+
const [globalAssets, eagerSsrLazyAssets] = await Promise.all([
|
|
97
|
+
triggers.length > 0
|
|
98
|
+
? buildGlobalInjectorAssets(this.appConfig, this.assetProcessingService, triggers, adapter.name)
|
|
99
|
+
: Promise.resolve([]),
|
|
100
|
+
buildEagerSsrLazyAssetsFromGraph(this.assetProcessingService, componentsToResolve, adapter.name),
|
|
101
|
+
]);
|
|
102
|
+
allDependencies.push(...globalAssets, ...eagerSsrLazyAssets);
|
|
103
|
+
const sourceDependencyPaths = collectHtmlCacheSourceDependencyPaths({
|
|
104
|
+
routeFile: routeOptions.file,
|
|
105
|
+
processedAssets: allDependencies,
|
|
106
|
+
graphDependencyPaths,
|
|
107
|
+
additionalSourcePaths: collectRenderShellSourcePaths(this.appConfig, componentsToResolve),
|
|
108
|
+
});
|
|
109
|
+
return {
|
|
110
|
+
...buildPreparedRenderOptions({
|
|
111
|
+
routeOptions,
|
|
112
|
+
resolvedInputs: finalResolvedInputs,
|
|
113
|
+
resolvedPageDependencyComponents,
|
|
114
|
+
resolvedDependencies,
|
|
115
|
+
allDependencies,
|
|
116
|
+
pageBrowserGraph,
|
|
117
|
+
appConfig: this.appConfig,
|
|
118
|
+
}),
|
|
119
|
+
sourceDependencyPaths,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
async resolveDeclaredPageBrowserGraph(input) {
|
|
123
|
+
return await this.pageBrowserGraphService.resolvePageBrowserGraph(input);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Captures one route render body as HTML while preserving a replayable body value.
|
|
127
|
+
*/
|
|
128
|
+
async captureHtmlRender(render) {
|
|
129
|
+
const renderedBody = await render();
|
|
130
|
+
const capturedRender = await this.captureRenderedBody(renderedBody);
|
|
131
|
+
return {
|
|
132
|
+
body: capturedRender.body,
|
|
133
|
+
html: capturedRender.html,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Executes the full route-render flow and returns the final body plus cache strategy.
|
|
138
|
+
*/
|
|
139
|
+
async execute(options, adapter) {
|
|
140
|
+
const renderOptions = await this.prepareRenderOptions(options, adapter);
|
|
141
|
+
return this.executePrepared(renderOptions, adapter);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Executes the route-render finalization path for already prepared render options.
|
|
145
|
+
*/
|
|
146
|
+
async executePrepared(renderOptions, adapter) {
|
|
147
|
+
const renderExecution = await measureRouteRenderPhase('render-body', () => this.captureHtmlRender(async () => adapter.renderRouteBody(renderOptions)));
|
|
148
|
+
const unresolvedArtifactInspection = inspectUnresolvedMarkerArtifactHtml(renderExecution.html);
|
|
149
|
+
const htmlFinalization = adapter.getRouteHtmlFinalization(renderOptions);
|
|
150
|
+
const hasUnresolvedMarkerHtml = unresolvedArtifactInspection.hasUnresolvedMarkerArtifacts;
|
|
151
|
+
if (hasUnresolvedMarkerHtml) {
|
|
152
|
+
throw new Error('[ecopages] Route render returned unresolved eco-marker artifact HTML. Full-route unresolved-marker fallback has been removed; resolve mixed foreign children inside renderComponentWithForeignChildren().');
|
|
153
|
+
}
|
|
154
|
+
const canReuseCapturedBody = !hasUnresolvedMarkerHtml && htmlFinalization.finalizeHtml === undefined;
|
|
155
|
+
if (canReuseCapturedBody) {
|
|
156
|
+
const responseBody = typeof renderExecution.body === 'string' ? renderExecution.body : renderExecution.html;
|
|
157
|
+
const body = await measureRouteRenderPhase('transform-response', () => adapter.transformRouteResponse(new Response(responseBody, {
|
|
158
|
+
headers: {
|
|
159
|
+
'Content-Type': 'text/html',
|
|
160
|
+
},
|
|
161
|
+
}), htmlFinalization.htmlContributions, renderOptions.pagePackage));
|
|
162
|
+
return {
|
|
163
|
+
body,
|
|
164
|
+
cacheStrategy: renderOptions.cacheStrategy,
|
|
165
|
+
sourceDependencyPaths: renderOptions.sourceDependencyPaths,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const finalization = htmlFinalization.finalizeHtml
|
|
169
|
+
? htmlFinalization.finalizeHtml(unresolvedArtifactInspection.normalizedHtml)
|
|
170
|
+
: unresolvedArtifactInspection.normalizedHtml;
|
|
171
|
+
const body = await measureRouteRenderPhase('transform-response', () => adapter.transformRouteResponse(new Response(finalization, {
|
|
172
|
+
headers: {
|
|
173
|
+
'Content-Type': 'text/html',
|
|
174
|
+
},
|
|
175
|
+
}), htmlFinalization.htmlContributions, renderOptions.pagePackage));
|
|
176
|
+
return {
|
|
177
|
+
body,
|
|
178
|
+
cacheStrategy: renderOptions.cacheStrategy,
|
|
179
|
+
sourceDependencyPaths: renderOptions.sourceDependencyPaths,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
async captureRenderedBody(body) {
|
|
183
|
+
const response = new Response(body);
|
|
184
|
+
if (typeof body === 'string') {
|
|
185
|
+
return {
|
|
186
|
+
body,
|
|
187
|
+
html: await response.text(),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
if (!response.body) {
|
|
191
|
+
return {
|
|
192
|
+
body,
|
|
193
|
+
html: await response.text(),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const [capturedBody, replayBody] = response.body.tee();
|
|
197
|
+
return {
|
|
198
|
+
body: replayBody,
|
|
199
|
+
html: await new Response(capturedBody).text(),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function collectRenderShellSourcePaths(appConfig, components) {
|
|
204
|
+
const sourcePaths = new Set();
|
|
205
|
+
if (appConfig.absolutePaths?.htmlTemplatePath) {
|
|
206
|
+
sourcePaths.add(appConfig.absolutePaths.htmlTemplatePath);
|
|
207
|
+
}
|
|
208
|
+
for (const component of components) {
|
|
209
|
+
const componentFile = getComponentIdentity(component)?.file;
|
|
210
|
+
if (componentFile) {
|
|
211
|
+
sourcePaths.add(componentFile);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return [...sourcePaths];
|
|
215
|
+
}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This module contains the ghtml renderer
|
|
3
|
-
* @module
|
|
4
|
-
*/
|
|
5
1
|
import type { ComponentRenderInput, ComponentRenderResult, EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../types/public-types.js';
|
|
6
|
-
import { IntegrationRenderer, type RenderToResponseContext } from '
|
|
2
|
+
import { IntegrationRenderer, type RenderToResponseContext } from './integration-renderer.js';
|
|
7
3
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Base renderer for integrations whose page output is string HTML markup.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Test string fixtures, KitaJS, and MDX share the same document-shell rendering path. Subclasses
|
|
8
|
+
* only need to set `name` and override hooks for integration-specific behavior.
|
|
10
9
|
*/
|
|
11
|
-
export declare class
|
|
12
|
-
name: string;
|
|
10
|
+
export declare abstract class StringMarkupRenderer extends IntegrationRenderer<EcoPagesElement> {
|
|
13
11
|
renderComponent(input: ComponentRenderInput): Promise<ComponentRenderResult>;
|
|
14
|
-
render({ params, query, props, locals, pageLocals, metadata, Page, Layout, HtmlTemplate, }: IntegrationRendererRenderOptions): Promise<RouteRendererBody>;
|
|
12
|
+
render({ params, query, props, locals, pageLocals, metadata, Page, Layout, HtmlTemplate, pageProps, }: IntegrationRendererRenderOptions): Promise<RouteRendererBody>;
|
|
15
13
|
renderToResponse<P = Record<string, unknown>>(view: EcoComponent<P>, props: P, ctx: RenderToResponseContext): Promise<Response>;
|
|
16
14
|
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { IntegrationRenderer } from './integration-renderer.js';
|
|
2
|
+
import { resolveInnermostPageLayout } from './document-shell/layout-shell-props.service.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base renderer for integrations whose page output is string HTML markup.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Test string fixtures, KitaJS, and MDX share the same document-shell rendering path. Subclasses
|
|
8
|
+
* only need to set `name` and override hooks for integration-specific behavior.
|
|
9
|
+
*/
|
|
10
|
+
export class StringMarkupRenderer extends IntegrationRenderer {
|
|
11
|
+
async renderComponent(input) {
|
|
12
|
+
if (typeof input.component !== 'function') {
|
|
13
|
+
throw new TypeError(`${this.name} renderer expected a callable component.`);
|
|
14
|
+
}
|
|
15
|
+
return this.renderStringComponentWithQueuedForeignSubtrees(input, input.component);
|
|
16
|
+
}
|
|
17
|
+
async render({ params, query, props, locals, pageLocals, metadata, Page, Layout, HtmlTemplate, pageProps, }) {
|
|
18
|
+
try {
|
|
19
|
+
return await this.renderPageWithDocumentShell({
|
|
20
|
+
page: {
|
|
21
|
+
component: Page,
|
|
22
|
+
props: { params, query, ...props, locals: pageLocals },
|
|
23
|
+
},
|
|
24
|
+
layout: Layout
|
|
25
|
+
? {
|
|
26
|
+
component: Layout,
|
|
27
|
+
props: locals ? { locals } : {},
|
|
28
|
+
}
|
|
29
|
+
: undefined,
|
|
30
|
+
htmlTemplate: HtmlTemplate,
|
|
31
|
+
metadata,
|
|
32
|
+
pageProps: pageProps ?? props ?? {},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw this.createRenderError('Error rendering page', error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async renderToResponse(view, props, ctx) {
|
|
40
|
+
try {
|
|
41
|
+
return await this.renderViewWithDocumentShell({
|
|
42
|
+
view,
|
|
43
|
+
props,
|
|
44
|
+
ctx,
|
|
45
|
+
layout: resolveInnermostPageLayout(view.config?.layouts),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
throw this.createRenderError('Error rendering view', error);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|