@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
package/src/eco/README.md
CHANGED
|
@@ -14,6 +14,12 @@ The `eco` namespace provides a consistent, type-safe interface for:
|
|
|
14
14
|
6. **`eco.staticPaths()`** - Type-safe wrapper for dynamic route generation (legacy pattern)
|
|
15
15
|
7. **`eco.staticProps()`** - Type-safe wrapper for static data fetching (legacy pattern)
|
|
16
16
|
|
|
17
|
+
## Layout assignment
|
|
18
|
+
|
|
19
|
+
Layouts are assigned explicitly on each `eco.page({ layout })` call — either one layout component or an outer→inner array. EcoPages normalizes the stack at factory time to `config.layouts` and `config.layoutEntries`.
|
|
20
|
+
|
|
21
|
+
EcoPages does **not** infer layouts from `src/layouts/` file paths or route segment directories. A file under `src/layouts/` is only used when a page imports it and passes it to `layout`.
|
|
22
|
+
|
|
17
23
|
## Component Patterns
|
|
18
24
|
|
|
19
25
|
EcoPages supports two approaches for creating components, each suited for different use cases:
|
|
@@ -279,6 +285,17 @@ export default eco.page({
|
|
|
279
285
|
});
|
|
280
286
|
```
|
|
281
287
|
|
|
288
|
+
**Nested layouts (outer → inner):**
|
|
289
|
+
|
|
290
|
+
```tsx
|
|
291
|
+
export default eco.page({
|
|
292
|
+
layout: [MarketingShell, DocsShell],
|
|
293
|
+
render: () => <h1>Hello</h1>,
|
|
294
|
+
});
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
A single layout remains equivalent to a one-element array. Normalization stores the stack on `config.layouts` and `config.layoutEntries` at factory time.
|
|
298
|
+
|
|
282
299
|
### `eco.component()`
|
|
283
300
|
|
|
284
301
|
Define a reusable component with dependencies.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EcoComponent, EcoComponentConfig } from '../types/public-types.js';
|
|
2
|
+
/** Stable attribution for a Component created by an Integration-owned module. */
|
|
3
|
+
export type ComponentIdentity = {
|
|
4
|
+
id: string;
|
|
5
|
+
file: string;
|
|
6
|
+
integration: string;
|
|
7
|
+
};
|
|
8
|
+
/** Gets canonical component attribution. */
|
|
9
|
+
export declare function getComponentIdentity(value: EcoComponent | EcoComponentConfig | undefined): ComponentIdentity | undefined;
|
|
10
|
+
/** Merges attribution into factory options. */
|
|
11
|
+
export declare function bindComponentIdentity<T extends object>(identity: ComponentIdentity, options: T): T & {
|
|
12
|
+
identity: ComponentIdentity;
|
|
13
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
function asConfig(value) {
|
|
2
|
+
if (!value)
|
|
3
|
+
return undefined;
|
|
4
|
+
if (typeof value === 'function')
|
|
5
|
+
return value.config;
|
|
6
|
+
if ('config' in value)
|
|
7
|
+
return value.config;
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
/** Gets canonical component attribution. */
|
|
11
|
+
export function getComponentIdentity(value) {
|
|
12
|
+
const config = asConfig(value);
|
|
13
|
+
return config?.identity;
|
|
14
|
+
}
|
|
15
|
+
/** Merges attribution into factory options. */
|
|
16
|
+
export function bindComponentIdentity(identity, options) {
|
|
17
|
+
return { ...options, identity };
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EcoDeclaredComponent } from '../types/public-types.js';
|
|
2
|
+
export { getUndeclaredComponentDependencyMessage } from '../errors/undeclared-component-dependency-error.js';
|
|
3
|
+
/**
|
|
4
|
+
* @remarks
|
|
5
|
+
* Declared components are produced by `eco.component()`, `eco.layout()`, and
|
|
6
|
+
* `eco.html()` after the component identity transform binds identity via
|
|
7
|
+
* `bindComponentIdentity`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isEcoDeclaredComponent(component: unknown): component is EcoDeclaredComponent;
|
|
10
|
+
/**
|
|
11
|
+
* @throws {UndeclaredComponentDependencyError} When the value lacks component identity.
|
|
12
|
+
*/
|
|
13
|
+
export declare function assertEcoDeclaredComponent(component: unknown, context?: {
|
|
14
|
+
parentComponentFile?: string;
|
|
15
|
+
}): asserts component is EcoDeclaredComponent;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UndeclaredComponentDependencyError } from '../errors/undeclared-component-dependency-error.js';
|
|
2
|
+
import { getComponentIdentity } from './component-identity.js';
|
|
3
|
+
export { getUndeclaredComponentDependencyMessage } from '../errors/undeclared-component-dependency-error.js';
|
|
4
|
+
/**
|
|
5
|
+
* @remarks
|
|
6
|
+
* Declared components are produced by `eco.component()`, `eco.layout()`, and
|
|
7
|
+
* `eco.html()` after the component identity transform binds identity via
|
|
8
|
+
* `bindComponentIdentity`.
|
|
9
|
+
*/
|
|
10
|
+
export function isEcoDeclaredComponent(component) {
|
|
11
|
+
return (typeof component === 'function' &&
|
|
12
|
+
typeof getComponentIdentity(component)?.file === 'string' &&
|
|
13
|
+
typeof getComponentIdentity(component)?.integration === 'string');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @throws {UndeclaredComponentDependencyError} When the value lacks component identity.
|
|
17
|
+
*/
|
|
18
|
+
export function assertEcoDeclaredComponent(component, context = {}) {
|
|
19
|
+
if (isEcoDeclaredComponent(component)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
throw new UndeclaredComponentDependencyError(context.parentComponentFile);
|
|
23
|
+
}
|
package/src/eco/eco.browser.js
CHANGED
|
@@ -1,88 +1,81 @@
|
|
|
1
|
+
import { applyPageLayoutConfig, mergeLayoutDependencies, normalizePageLayouts } from './page-layout-normalization.js';
|
|
1
2
|
function createComponentFactory(options) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
const component = ((props) => options.render(props));
|
|
4
|
+
component.config = {
|
|
5
|
+
identity: options.identity,
|
|
6
|
+
integration: options.integration,
|
|
7
|
+
dependencies: options.dependencies,
|
|
8
|
+
};
|
|
9
|
+
return component;
|
|
9
10
|
}
|
|
10
11
|
function component(options) {
|
|
11
|
-
|
|
12
|
+
return createComponentFactory(options);
|
|
12
13
|
}
|
|
13
|
-
function embed(
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
function embed(component, props, children) {
|
|
15
|
+
const nextProps = (children === undefined ? props : { ...props, children });
|
|
16
|
+
return component(nextProps);
|
|
16
17
|
}
|
|
17
18
|
function html(options) {
|
|
18
|
-
|
|
19
|
+
return createComponentFactory(options);
|
|
19
20
|
}
|
|
20
21
|
function layout(options) {
|
|
21
|
-
|
|
22
|
+
return createComponentFactory(options);
|
|
22
23
|
}
|
|
23
24
|
function page(options) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
pageComponent
|
|
61
|
-
}
|
|
62
|
-
if (middleware) {
|
|
63
|
-
pageComponent.middleware = middleware;
|
|
64
|
-
}
|
|
65
|
-
return pageComponent;
|
|
25
|
+
const { layout: pageLayout, dependencies: dependenciesInput, render, staticPaths, staticProps, metadata, cache, requires, middleware, } = options;
|
|
26
|
+
const layoutEntries = normalizePageLayouts(pageLayout);
|
|
27
|
+
const resolveDependencies = typeof dependenciesInput === 'function' ? dependenciesInput : undefined;
|
|
28
|
+
const staticDependencies = typeof dependenciesInput === 'function'
|
|
29
|
+
? mergeLayoutDependencies(undefined, layoutEntries)
|
|
30
|
+
: mergeLayoutDependencies(dependenciesInput, layoutEntries);
|
|
31
|
+
const pageComponent = createComponentFactory({
|
|
32
|
+
identity: options.identity,
|
|
33
|
+
integration: options.integration,
|
|
34
|
+
dependencies: staticDependencies,
|
|
35
|
+
render,
|
|
36
|
+
});
|
|
37
|
+
if (pageComponent.config) {
|
|
38
|
+
applyPageLayoutConfig(pageComponent.config, layoutEntries);
|
|
39
|
+
}
|
|
40
|
+
if (staticPaths) {
|
|
41
|
+
pageComponent.staticPaths = staticPaths;
|
|
42
|
+
}
|
|
43
|
+
if (staticProps) {
|
|
44
|
+
pageComponent.staticProps = staticProps;
|
|
45
|
+
}
|
|
46
|
+
if (metadata) {
|
|
47
|
+
pageComponent.metadata = metadata;
|
|
48
|
+
}
|
|
49
|
+
if (resolveDependencies) {
|
|
50
|
+
pageComponent.resolveDependencies = resolveDependencies;
|
|
51
|
+
}
|
|
52
|
+
if (cache) {
|
|
53
|
+
pageComponent.cache = cache;
|
|
54
|
+
}
|
|
55
|
+
if (requires) {
|
|
56
|
+
pageComponent.requires = requires;
|
|
57
|
+
}
|
|
58
|
+
if (middleware) {
|
|
59
|
+
pageComponent.middleware = middleware;
|
|
60
|
+
}
|
|
61
|
+
return pageComponent;
|
|
66
62
|
}
|
|
67
63
|
function metadata(fn) {
|
|
68
|
-
|
|
64
|
+
return fn;
|
|
69
65
|
}
|
|
70
66
|
function staticPaths(fn) {
|
|
71
|
-
|
|
67
|
+
return fn;
|
|
72
68
|
}
|
|
73
69
|
function staticProps(fn) {
|
|
74
|
-
|
|
70
|
+
return fn;
|
|
75
71
|
}
|
|
76
|
-
const eco = {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
};
|
|
86
|
-
export {
|
|
87
|
-
eco
|
|
72
|
+
export const eco = {
|
|
73
|
+
component,
|
|
74
|
+
embed,
|
|
75
|
+
html,
|
|
76
|
+
layout,
|
|
77
|
+
page,
|
|
78
|
+
metadata,
|
|
79
|
+
staticPaths,
|
|
80
|
+
staticProps,
|
|
88
81
|
};
|
package/src/eco/eco.js
CHANGED
|
@@ -1,119 +1,185 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from
|
|
6
|
-
import { isThenable } from
|
|
1
|
+
/**
|
|
2
|
+
* The eco namespace - unified component and page factory API
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import { finalizeComponentRender, getComponentRenderContext, interceptForeignChild, } from '../route-renderer/orchestration/foreign-child/component-render-context.js';
|
|
6
|
+
import { isThenable } from '../route-renderer/orchestration/foreign-child/foreign-child-output.utils.js';
|
|
7
|
+
import { applyPageLayoutConfig, mergeLayoutDependencies, normalizePageLayouts } from './page-layout-normalization.js';
|
|
8
|
+
import { getComponentIdentity } from './component-identity.js';
|
|
9
|
+
/**
|
|
10
|
+
* Creates a component factory with lazy-trigger support and foreign-child-runtime
|
|
11
|
+
* interception.
|
|
12
|
+
*
|
|
13
|
+
* Behavior:
|
|
14
|
+
* - In normal render flow, returns `options.render(props)` with optional lazy
|
|
15
|
+
* trigger/script wrapping.
|
|
16
|
+
* - When rendering under an active foreign-child runtime and the current
|
|
17
|
+
* renderer-owned foreign-child runtime resolves the foreign child immediately, returns
|
|
18
|
+
* that resolved output instead of rendering the component inline.
|
|
19
|
+
*
|
|
20
|
+
* @param options Component options for rendering and dependency declaration.
|
|
21
|
+
* @returns Configured eco component.
|
|
22
|
+
*/
|
|
7
23
|
function createComponentFactory(options) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
const integrationName = options.integration ?? options.identity?.integration;
|
|
25
|
+
const comp = ((props) => {
|
|
26
|
+
const componentProps = (props ?? {});
|
|
27
|
+
const renderInline = (nextProps = props) => finalizeComponentRender(comp, options.render(nextProps));
|
|
28
|
+
const activeRenderContext = getComponentRenderContext();
|
|
29
|
+
const foreignChildRender = interceptForeignChild({
|
|
30
|
+
component: comp,
|
|
31
|
+
props: componentProps,
|
|
32
|
+
targetIntegration: integrationName,
|
|
33
|
+
});
|
|
34
|
+
if (isThenable(foreignChildRender)) {
|
|
35
|
+
return foreignChildRender.then((resolvedForeignChildRender) => {
|
|
36
|
+
if (resolvedForeignChildRender?.kind === 'resolved') {
|
|
37
|
+
return resolvedForeignChildRender.value;
|
|
38
|
+
}
|
|
39
|
+
return renderInline((resolvedForeignChildRender?.props ?? props));
|
|
40
|
+
});
|
|
22
41
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
return comp;
|
|
42
|
+
if (foreignChildRender?.kind === 'resolved') {
|
|
43
|
+
return foreignChildRender.value;
|
|
44
|
+
}
|
|
45
|
+
if (foreignChildRender?.kind === 'inline') {
|
|
46
|
+
return renderInline((foreignChildRender.props ?? props));
|
|
47
|
+
}
|
|
48
|
+
if (activeRenderContext &&
|
|
49
|
+
activeRenderContext.foreignChildRuntime &&
|
|
50
|
+
integrationName &&
|
|
51
|
+
integrationName !== activeRenderContext.currentIntegration) {
|
|
52
|
+
throw new Error(`[ecopages] Missing foreign-child interception from ${activeRenderContext.currentIntegration} to ${integrationName} for ${options.identity?.file ?? 'unknown component'}.`);
|
|
53
|
+
}
|
|
54
|
+
return renderInline();
|
|
55
|
+
});
|
|
56
|
+
comp.config = {
|
|
57
|
+
identity: options.identity,
|
|
58
|
+
integration: options.integration,
|
|
59
|
+
dependencies: options.dependencies,
|
|
60
|
+
};
|
|
61
|
+
return comp;
|
|
45
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Creates a reusable component with optional dependencies.
|
|
65
|
+
*
|
|
66
|
+
* @param options Component definition options.
|
|
67
|
+
* @returns Eco component function.
|
|
68
|
+
*/
|
|
46
69
|
function component(options) {
|
|
47
|
-
|
|
70
|
+
return createComponentFactory(options);
|
|
48
71
|
}
|
|
49
72
|
function isMissingForeignChildInterceptionError(error) {
|
|
50
|
-
|
|
73
|
+
return error instanceof Error && error.message.startsWith('[ecopages] Missing foreign-child interception from ');
|
|
51
74
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Renders a component explicitly and optionally injects `children` into the
|
|
77
|
+
* props bag before invocation.
|
|
78
|
+
*/
|
|
79
|
+
function embed(component, props, children) {
|
|
80
|
+
const activeRenderContext = getComponentRenderContext();
|
|
81
|
+
const ecoComponent = component;
|
|
82
|
+
const targetIntegration = ecoComponent.config?.integration ?? getComponentIdentity(ecoComponent)?.integration;
|
|
83
|
+
const componentFile = getComponentIdentity(ecoComponent)?.file ?? 'unknown component';
|
|
84
|
+
const nextProps = (children === undefined ? props : { ...props, children });
|
|
85
|
+
try {
|
|
86
|
+
return component(nextProps);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (!isMissingForeignChildInterceptionError(error)) {
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`[ecopages] eco.embed() could not hand off the Foreign Child from ${activeRenderContext?.currentIntegration ?? 'unknown integration'} to ${targetIntegration ?? 'unknown integration'} for ${componentFile}. The active Integration renderer exposed a foreign-child runtime, but it did not intercept this cross-integration render. Ensure mixed-integration Page, Layout, Html, or Component renders install foreign-child handoff before calling eco.embed().`);
|
|
63
93
|
}
|
|
64
|
-
throw new Error(
|
|
65
|
-
`[ecopages] eco.embed() could not hand off the Foreign Child from ${activeRenderContext?.currentIntegration ?? "unknown integration"} to ${targetIntegration ?? "unknown integration"} for ${componentFile}. The active Integration renderer exposed a foreign-child runtime, but it did not intercept this cross-integration render. Ensure mixed-integration Page, Layout, Html, or Component renders install foreign-child handoff before calling eco.embed().`
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Creates a document shell component.
|
|
97
|
+
*/
|
|
69
98
|
function html(options) {
|
|
70
|
-
|
|
99
|
+
return createComponentFactory(options);
|
|
71
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates a route layout component.
|
|
103
|
+
*/
|
|
72
104
|
function layout(options) {
|
|
73
|
-
|
|
105
|
+
return createComponentFactory(options);
|
|
74
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Creates a page component and attaches optional static APIs.
|
|
109
|
+
*
|
|
110
|
+
* @param options Page options.
|
|
111
|
+
* @returns Eco page component.
|
|
112
|
+
*/
|
|
75
113
|
function page(options) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
pageComponent
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
114
|
+
const { layout, dependencies: dependenciesInput, render, staticPaths, staticProps, metadata, cache, requires, middleware, } = options;
|
|
115
|
+
const layoutEntries = normalizePageLayouts(layout);
|
|
116
|
+
const resolveDependencies = typeof dependenciesInput === 'function' ? dependenciesInput : undefined;
|
|
117
|
+
const staticDependencies = typeof dependenciesInput === 'function'
|
|
118
|
+
? mergeLayoutDependencies(undefined, layoutEntries)
|
|
119
|
+
: mergeLayoutDependencies(dependenciesInput, layoutEntries);
|
|
120
|
+
const componentOptions = {
|
|
121
|
+
identity: options.identity,
|
|
122
|
+
integration: options.integration,
|
|
123
|
+
dependencies: staticDependencies,
|
|
124
|
+
render,
|
|
125
|
+
};
|
|
126
|
+
const pageComponent = createComponentFactory(componentOptions);
|
|
127
|
+
if (pageComponent.config) {
|
|
128
|
+
applyPageLayoutConfig(pageComponent.config, layoutEntries);
|
|
129
|
+
}
|
|
130
|
+
if (staticPaths)
|
|
131
|
+
pageComponent.staticPaths = staticPaths;
|
|
132
|
+
if (staticProps)
|
|
133
|
+
pageComponent.staticProps = staticProps;
|
|
134
|
+
if (metadata)
|
|
135
|
+
pageComponent.metadata = metadata;
|
|
136
|
+
if (resolveDependencies)
|
|
137
|
+
pageComponent.resolveDependencies = resolveDependencies;
|
|
138
|
+
if (cache)
|
|
139
|
+
pageComponent.cache = cache;
|
|
140
|
+
if (requires)
|
|
141
|
+
pageComponent.requires = requires;
|
|
142
|
+
if (middleware)
|
|
143
|
+
pageComponent.middleware = middleware;
|
|
144
|
+
return pageComponent;
|
|
97
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Type-safe wrapper for metadata functions.
|
|
148
|
+
*
|
|
149
|
+
* @param fn Metadata factory function.
|
|
150
|
+
* @returns The same function.
|
|
151
|
+
*/
|
|
98
152
|
function metadata(fn) {
|
|
99
|
-
|
|
153
|
+
return fn;
|
|
100
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Type-safe wrapper for static paths functions.
|
|
157
|
+
*
|
|
158
|
+
* @param fn Static paths function.
|
|
159
|
+
* @returns The same function.
|
|
160
|
+
*/
|
|
101
161
|
function staticPaths(fn) {
|
|
102
|
-
|
|
162
|
+
return fn;
|
|
103
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Type-safe wrapper for static props functions.
|
|
166
|
+
*
|
|
167
|
+
* @param fn Static props function.
|
|
168
|
+
* @returns The same function.
|
|
169
|
+
*/
|
|
104
170
|
function staticProps(fn) {
|
|
105
|
-
|
|
171
|
+
return fn;
|
|
106
172
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
173
|
+
/**
|
|
174
|
+
* The eco namespace - provides factories for components and pages
|
|
175
|
+
*/
|
|
176
|
+
export const eco = {
|
|
177
|
+
component,
|
|
178
|
+
embed,
|
|
179
|
+
html,
|
|
180
|
+
layout,
|
|
181
|
+
page,
|
|
182
|
+
metadata,
|
|
183
|
+
staticPaths,
|
|
184
|
+
staticProps,
|
|
119
185
|
};
|
package/src/eco/eco.types.d.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Type definitions for the eco namespace API
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
|
-
import type { DependencyLazyTrigger, EcoComponent, EcoComponentDependencies, EcoHtmlComponent,
|
|
5
|
+
import type { DependencyLazyTrigger, EcoComponent, EcoComponentDependencies, EcoHtmlComponent, EcoLayoutComponent, EcoPageLayouts, EcoPagesElement, FileRouteMiddleware, GetMetadata, GetStaticPaths, GetStaticProps, HtmlTemplateProps, LayoutProps, RequestLocals, RequestPageContext, PageParams, PageQuery } from '../types/public-types.js';
|
|
6
6
|
import type { CacheStrategy } from '../services/cache/cache.types.js';
|
|
7
|
+
import type { ComponentIdentity } from './component-identity.js';
|
|
7
8
|
/**
|
|
8
9
|
* Extracts the props type from one eco component.
|
|
9
10
|
*/
|
|
@@ -54,6 +55,28 @@ type WithRequiredLocals<K extends keyof RequestLocals> = Omit<RequestLocals, K>
|
|
|
54
55
|
};
|
|
55
56
|
type RequiresKeys = keyof RequestLocals;
|
|
56
57
|
export type PageRequires<K extends RequiresKeys = RequiresKeys> = K | readonly K[];
|
|
58
|
+
/**
|
|
59
|
+
* Context passed to a page `dependencies` resolver for one concrete route render.
|
|
60
|
+
*/
|
|
61
|
+
export type GetPageDependenciesContext<T = Record<string, unknown>> = {
|
|
62
|
+
props: PagePropsFor<T>;
|
|
63
|
+
params?: PageParams;
|
|
64
|
+
query?: PageQuery;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Page dependency bag optionally scoped to a declaring file.
|
|
68
|
+
*/
|
|
69
|
+
export type PageDependenciesResult = EcoComponentDependencies & {
|
|
70
|
+
ownerFile?: string;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Resolves request-specific page dependencies for one route render.
|
|
74
|
+
*/
|
|
75
|
+
export type GetPageDependencies<T = Record<string, unknown>> = (context: GetPageDependenciesContext<T>) => PageDependenciesResult | undefined | Promise<PageDependenciesResult | undefined>;
|
|
76
|
+
/**
|
|
77
|
+
* Static page dependencies or a per-render resolver.
|
|
78
|
+
*/
|
|
79
|
+
export type PageDependenciesInput<T = Record<string, unknown>> = EcoComponentDependencies | GetPageDependencies<T>;
|
|
57
80
|
/**
|
|
58
81
|
* Lazy trigger options map directly to scripts-injector attributes.
|
|
59
82
|
* Only one trigger type can be active at a time.
|
|
@@ -65,23 +88,38 @@ export type LazyTrigger = DependencyLazyTrigger;
|
|
|
65
88
|
* @template E - The element/return type (defaults to EcoPagesElement for Kita, use ReactNode for React)
|
|
66
89
|
*/
|
|
67
90
|
export interface ComponentOptions<P, E = EcoPagesElement> {
|
|
68
|
-
/** @internal
|
|
69
|
-
|
|
91
|
+
/** @internal Bound by the component identity attribution transform. */
|
|
92
|
+
identity?: ComponentIdentity;
|
|
70
93
|
integration?: string;
|
|
71
94
|
dependencies?: EcoComponentDependencies;
|
|
72
95
|
render: (props: P) => E | Promise<E>;
|
|
73
96
|
}
|
|
74
97
|
export type HtmlOptions<E = EcoPagesElement> = ComponentOptions<HtmlTemplateProps, E>;
|
|
75
|
-
export type LayoutOptions<E = EcoPagesElement> = ComponentOptions<LayoutProps<E>, E
|
|
98
|
+
export type LayoutOptions<E = EcoPagesElement> = ComponentOptions<LayoutProps<E>, E> & {
|
|
99
|
+
/**
|
|
100
|
+
* Marks this layout as mounting shared client runtime state such as React context
|
|
101
|
+
* providers or query clients.
|
|
102
|
+
*
|
|
103
|
+
* @remarks
|
|
104
|
+
* When any layout in the app sets this flag, only flagged layouts participate in
|
|
105
|
+
* React auto-vendoring discovery. This keeps shell-only layouts out of provider
|
|
106
|
+
* scans while persisted SPA navigation stays on one shared vendor instance.
|
|
107
|
+
*/
|
|
108
|
+
runtimeProvider?: boolean;
|
|
109
|
+
};
|
|
76
110
|
/**
|
|
77
111
|
* Base options shared by all page variants
|
|
78
112
|
*/
|
|
79
113
|
export interface PageOptionsBase<T, E = EcoPagesElement> {
|
|
80
|
-
/** @internal
|
|
81
|
-
|
|
114
|
+
/** @internal Bound by the component identity attribution transform. */
|
|
115
|
+
identity?: ComponentIdentity;
|
|
82
116
|
integration?: string;
|
|
83
|
-
|
|
84
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Declares browser dependencies for the page, or resolves them per render after
|
|
119
|
+
* `staticProps` are available.
|
|
120
|
+
*/
|
|
121
|
+
dependencies?: PageDependenciesInput<T>;
|
|
122
|
+
layout?: EcoPageLayouts<E>;
|
|
85
123
|
/**
|
|
86
124
|
* Define static paths for dynamic routes (e.g., [slug].tsx).
|
|
87
125
|
* Returns all possible paths that should be pre-rendered at build time.
|
|
@@ -167,6 +205,7 @@ export type EcoPageComponent<T> = EcoComponent<PagePropsFor<T> & Partial<Request
|
|
|
167
205
|
staticPaths?: GetStaticPaths;
|
|
168
206
|
staticProps?: GetStaticProps<T>;
|
|
169
207
|
metadata?: GetMetadata<T>;
|
|
208
|
+
resolveDependencies?: GetPageDependencies<T>;
|
|
170
209
|
cache?: CacheStrategy;
|
|
171
210
|
requires?: PageRequires;
|
|
172
211
|
middleware?: FileRouteMiddleware[];
|
package/src/eco/eco.types.js
CHANGED
package/src/eco/eco.utils.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { addTriggerAttribute, isThenable, wrapWithScriptsInjector, } from '../route-renderer/orchestration/
|
|
1
|
+
export { addTriggerAttribute, isThenable, wrapWithScriptsInjector, } from '../route-renderer/orchestration/foreign-child/foreign-child-output.utils.js';
|
package/src/eco/eco.utils.js
CHANGED
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
addTriggerAttribute,
|
|
3
|
-
isThenable,
|
|
4
|
-
wrapWithScriptsInjector
|
|
5
|
-
} from "../route-renderer/orchestration/render-output.utils.js";
|
|
6
|
-
export {
|
|
7
|
-
addTriggerAttribute,
|
|
8
|
-
isThenable,
|
|
9
|
-
wrapWithScriptsInjector
|
|
10
|
-
};
|
|
1
|
+
export { addTriggerAttribute, isThenable, wrapWithScriptsInjector, } from '../route-renderer/orchestration/foreign-child/foreign-child-output.utils.js';
|