@ecopages/core 0.2.0-beta.4 → 0.2.0-beta.41
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 +40 -9
- package/package.json +371 -33
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +115 -6
- package/src/adapters/abstract/application-adapter.js +261 -120
- 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 +16 -2
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
- package/src/adapters/abstract/ws-pattern-matcher.js +28 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
- package/src/adapters/bun/client-bridge.d.ts +1 -0
- package/src/adapters/bun/client-bridge.js +51 -47
- package/src/adapters/bun/create-app.d.ts +9 -6
- package/src/adapters/bun/create-app.js +171 -130
- package/src/adapters/bun/hmr-manager.d.ts +1 -1
- 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 +91 -41
- package/src/adapters/bun/server-adapter.js +566 -426
- 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 +13 -11
- package/src/adapters/create-app.js +11 -63
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +2 -8
- package/src/adapters/node/create-app.d.ts +8 -3
- package/src/adapters/node/create-app.js +126 -84
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.d.ts +1 -0
- package/src/adapters/node/node-client-bridge.js +62 -61
- package/src/adapters/node/node-hmr-manager.d.ts +1 -1
- 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 +63 -23
- package/src/adapters/node/server-adapter.js +346 -297
- package/src/adapters/node/static-content-server.d.ts +1 -0
- package/src/adapters/node/static-content-server.js +172 -183
- 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 +258 -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.d.ts +6 -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 -3
- 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} +27 -35
- 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/ws/node-http-websocket-upgrades.d.ts +21 -0
- 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 +191 -31
- 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/browser-runtime-manifest.js +58 -0
- package/src/build/browser/browser-runtime-plugin-helpers.js +34 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
- package/src/build/browser/browser-runtime-plugin.js +216 -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 -334
- package/src/build/build-adapter.js +273 -237
- package/src/build/cache/build-input-fingerprint.d.ts +28 -0
- 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/cache/pages-unified-graph-build.d.ts +31 -0
- 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/cache/server-entry-build-cache.d.ts +43 -0
- 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 +458 -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/rolldown-build-invocation-metrics.d.ts +12 -0
- 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.d.ts +10 -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/runtime/parallel-build-executor.d.ts +21 -0
- 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/config-builder.d.ts +40 -10
- package/src/config/config-builder.js +647 -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 +126 -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 +158 -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/integrations/ghtml/ghtml-renderer.d.ts +2 -6
- package/src/integrations/ghtml/ghtml-renderer.js +12 -56
- package/src/integrations/ghtml/ghtml.constants.js +1 -4
- package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
- package/src/integrations/ghtml/ghtml.plugin.js +10 -20
- 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 +120 -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 +43 -14
- package/src/plugins/integration-plugin.js +212 -190
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +21 -0
- package/src/plugins/processor.d.ts +71 -12
- package/src/plugins/processor.js +168 -130
- 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 +35 -0
- package/src/plugins/tsconfig-import-resolver.js +235 -0
- package/src/route-renderer/GRAPH.md +26 -32
- package/src/route-renderer/README.md +54 -33
- 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} +17 -7
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +191 -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 +41 -151
- package/src/route-renderer/orchestration/integration-renderer.js +798 -988
- 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 +232 -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 +49 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +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/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
- 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 -201
- 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 +7 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +308 -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 +2 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -45
- 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.d.ts +4 -2
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -38
- 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 -121
- 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 +28 -30
- package/src/services/assets/browser-bundle.service.js +54 -40
- 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.js +106 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.d.ts +1 -1
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
- package/src/services/invalidation/development-invalidation.service.js +239 -175
- package/src/services/module-loading/README.md +52 -0
- 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 +103 -118
- 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 +11 -13
- package/src/services/module-loading/page-module-import.service.js +222 -184
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +24 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +51 -0
- package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
- package/src/services/module-loading/route-module-build-cache.js +3 -0
- package/src/services/module-loading/route-module-build-cache.store.d.ts +57 -0
- package/src/services/module-loading/route-module-build-cache.store.js +202 -0
- package/src/services/module-loading/route-module-build-manifest.d.ts +57 -0
- package/src/services/module-loading/route-module-build-manifest.js +60 -0
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
- package/src/services/module-loading/route-module-dependency-hasher.js +148 -0
- 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 +41 -0
- 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 +10 -0
- package/src/static-site-generator/static-build-invalidation.js +37 -0
- package/src/static-site-generator/static-export-context.d.ts +30 -0
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.d.ts +43 -25
- package/src/static-site-generator/static-site-generator.js +536 -294
- package/src/types/internal-types.d.ts +59 -13
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +310 -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/html.js +1 -4
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.d.ts +2 -0
- package/src/utils/parse-cli-args.js +73 -59
- 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 +29 -6
- package/src/watchers/project-watcher.js +402 -257
- 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/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/render-context.js +0 -93
- package/src/adapters/shared/runtime-app-bootstrap.js +0 -46
- 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 -162
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -59
- package/src/adapters/shared/shared-hmr-manager.js +0 -241
- package/src/adapters/shared/static-preview-host.js +0 -0
- 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-manifest.d.ts +0 -33
- package/src/build/build-manifest.js +0 -49
- package/src/build/build-types.js +0 -0
- package/src/build/rolldown-adapter-helpers.js +0 -265
- package/src/build/rolldown-build-adapter.js +0 -65
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -166
- package/src/build/rolldown-plugin-bridge.js +0 -199
- package/src/build/runtime-build-executor.d.ts +0 -21
- package/src/build/runtime-build-executor.js +0 -19
- package/src/build/runtime-build-output-normalizer.d.ts +0 -3
- package/src/build/runtime-build-output-normalizer.js +0 -111
- package/src/build/serialized-build-executor.js +0 -63
- 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 -43
- 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 -233
- 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 -171
- package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -577
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- /package/src/adapters/shared/{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/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
|
@@ -1,21 +1,96 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type { ForeignChildRuntime } from '../route-renderer/orchestration/component-render-context.js';
|
|
2
|
+
import type { ComponentIdentity } from '../eco/component-identity.js';
|
|
3
|
+
import type { ApiResponseBuilder } from '../adapters/shared/http/api-response.js';
|
|
4
|
+
import type { ForeignChildRuntime } from '../route-renderer/orchestration/foreign-child/component-render-context.js';
|
|
6
5
|
import type { EcoPageComponent } from '../eco/eco.types.js';
|
|
7
6
|
import type { EcoPagesAppConfig } from './internal-types.js';
|
|
8
7
|
import type { HmrStrategy } from '../hmr/hmr-strategy.js';
|
|
9
|
-
import type { BrowserBundleExecutor } from '../services/assets/browser-bundle.service.js';
|
|
10
8
|
import type { AssetDefinition, ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
11
9
|
import type { CacheStats, CacheStrategy } from '../services/cache/cache.types.js';
|
|
12
10
|
import type { InteractionEventsString as ScriptsInjectorInteractionEventsString } from '@ecopages/scripts-injector/types';
|
|
13
11
|
import type { EntrypointDependencyGraph } from '../services/runtime-state/entrypoint-dependency-graph.service.js';
|
|
12
|
+
import type { DevTransformBundleContributor } from '../dev/transform-server/types.js';
|
|
14
13
|
export type { EcoPagesAppConfig } from './internal-types.js';
|
|
15
|
-
export type { EcoPageComponent } from '../eco/eco.types.js';
|
|
14
|
+
export type { EcoPageComponent, GetPageDependencies, GetPageDependenciesContext, PageDependenciesResult, } from '../eco/eco.types.js';
|
|
16
15
|
export type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Runtime-agnostic incoming WebSocket frame.
|
|
18
|
+
*
|
|
19
|
+
* Both Bun and Node `ws` deliver text and binary frames; this discriminated
|
|
20
|
+
* union lets handlers deal with both without runtime-specific casts.
|
|
21
|
+
*/
|
|
22
|
+
export type IncomingWebSocketMessage = {
|
|
23
|
+
readonly kind: 'text';
|
|
24
|
+
readonly text: string;
|
|
25
|
+
} | {
|
|
26
|
+
readonly kind: 'binary';
|
|
27
|
+
readonly data: Uint8Array;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Runtime-agnostic outgoing WebSocket payload.
|
|
31
|
+
*
|
|
32
|
+
* Strings are sent as text frames. Anything binary-shaped is sent as binary
|
|
33
|
+
* frames. `Blob` is included for cross-runtime parity and is normalized to a
|
|
34
|
+
* binary frame by each adapter.
|
|
35
|
+
*/
|
|
36
|
+
export type OutgoingWebSocketMessage = string | Uint8Array | ArrayBuffer | ArrayBufferView | Blob;
|
|
37
|
+
/**
|
|
38
|
+
* Close event delivered to `onClose` after a connection terminates.
|
|
39
|
+
*/
|
|
40
|
+
export interface WebSocketCloseInfo {
|
|
41
|
+
readonly code: number;
|
|
42
|
+
readonly reason: string;
|
|
43
|
+
readonly wasClean: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Input passed to a WebSocket handler's `context()` factory.
|
|
47
|
+
*
|
|
48
|
+
* Adapters call `context()` exactly once per accepted upgrade. The returned
|
|
49
|
+
* value becomes `socket.context` and is shared by all lifecycle hooks.
|
|
50
|
+
*/
|
|
51
|
+
export interface WebSocketContextFactoryInput<TParams extends Record<string, string> = Record<string, string>> {
|
|
52
|
+
readonly request: Request;
|
|
53
|
+
readonly kind: string;
|
|
54
|
+
readonly params: TParams;
|
|
55
|
+
readonly search: Readonly<Record<string, string>>;
|
|
56
|
+
readonly locals?: RequestLocals;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Runtime-agnostic WebSocket socket view exposed to handlers.
|
|
60
|
+
*
|
|
61
|
+
* Framework-owned fields:
|
|
62
|
+
* - `kind`: the registered route pattern (e.g. '/ws/chat/:roomId')
|
|
63
|
+
* - `params`: dynamic segments captured at match time
|
|
64
|
+
* - `search`: query string, always string-typed
|
|
65
|
+
*
|
|
66
|
+
* App-owned field:
|
|
67
|
+
* - `context`: returned by the handler's `context()` factory
|
|
68
|
+
*/
|
|
69
|
+
export interface EcopagesSocket<TContext = unknown, TParams extends Record<string, string> = Record<string, string>> {
|
|
70
|
+
readonly kind: string;
|
|
71
|
+
readonly params: TParams;
|
|
72
|
+
readonly search: Readonly<Record<string, string>>;
|
|
73
|
+
readonly context: TContext;
|
|
74
|
+
send(message: OutgoingWebSocketMessage): void;
|
|
75
|
+
sendStream(stream: ReadableStream<Uint8Array>): Promise<void>;
|
|
76
|
+
close(code?: number, reason?: string): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Connection-lifecycle handler object.
|
|
80
|
+
*
|
|
81
|
+
* All hooks are optional. `context()` is the one-time initializer that
|
|
82
|
+
* produces the per-connection state shared by the lifecycle hooks. Returning
|
|
83
|
+
* a rejected promise from `context()` aborts the upgrade.
|
|
84
|
+
*/
|
|
85
|
+
export interface EcopagesWebSocketHandler<TContext = unknown, TParams extends Record<string, string> = Record<string, string>> {
|
|
86
|
+
context?(input: WebSocketContextFactoryInput<TParams>): TContext | Promise<TContext>;
|
|
87
|
+
onConnect?(socket: EcopagesSocket<TContext, TParams>): void | Promise<void>;
|
|
88
|
+
onMessage?(socket: EcopagesSocket<TContext, TParams>, message: IncomingWebSocketMessage): void | Promise<void>;
|
|
89
|
+
onClose?(socket: EcopagesSocket<TContext, TParams>, event: WebSocketCloseInfo): void | Promise<void>;
|
|
90
|
+
onError?(socket: EcopagesSocket<TContext, TParams>, error: unknown): void | Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
import type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, StandardSchemaV1 } from '../services/validation/standard-schema.types.js';
|
|
93
|
+
export type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, StandardSchemaV1, ForeignChildRuntime, };
|
|
19
94
|
export type InteractionEventsString = ScriptsInjectorInteractionEventsString;
|
|
20
95
|
export type DependencyLazyTrigger = {
|
|
21
96
|
'on:idle': true;
|
|
@@ -88,21 +163,14 @@ export interface CacheInvalidator {
|
|
|
88
163
|
}
|
|
89
164
|
/**
|
|
90
165
|
* Context interface for HMR strategies.
|
|
91
|
-
* Provides access to
|
|
166
|
+
* Provides access to registered entrypoints and build configuration.
|
|
92
167
|
*/
|
|
93
168
|
export interface DefaultHmrContext {
|
|
94
169
|
/**
|
|
95
|
-
* Map of registered
|
|
170
|
+
* Map of registered entrypoint source paths to their dev-transform output URLs.
|
|
96
171
|
*/
|
|
97
172
|
getWatchedFiles(): Map<string, string>;
|
|
98
|
-
|
|
99
|
-
* Directory where HMR bundles are written.
|
|
100
|
-
*/
|
|
101
|
-
getDistDir(): string;
|
|
102
|
-
/**
|
|
103
|
-
* Build plugins to use during bundling.
|
|
104
|
-
*/
|
|
105
|
-
getPlugins(): EcoBuildPlugin[];
|
|
173
|
+
getRegisteredEntrypoints(): ReadonlyMap<string, ResolvedHmrEntrypoint>;
|
|
106
174
|
/**
|
|
107
175
|
* Absolute path to the source directory.
|
|
108
176
|
*/
|
|
@@ -117,14 +185,6 @@ export interface DefaultHmrContext {
|
|
|
117
185
|
* Used by plugins to identify page files for transformation.
|
|
118
186
|
*/
|
|
119
187
|
getPagesDir(): string;
|
|
120
|
-
/**
|
|
121
|
-
* Build executor owned by the active app/runtime.
|
|
122
|
-
*/
|
|
123
|
-
getBuildExecutor(): BuildExecutor;
|
|
124
|
-
/**
|
|
125
|
-
* Browser bundler owned by the active app/runtime.
|
|
126
|
-
*/
|
|
127
|
-
getBrowserBundleService(): BrowserBundleExecutor;
|
|
128
188
|
/**
|
|
129
189
|
* Server-side module loader owned by the active app/runtime.
|
|
130
190
|
*/
|
|
@@ -154,6 +214,22 @@ export type ClientBridgeEvent = {
|
|
|
154
214
|
* Timestamp for cache busting
|
|
155
215
|
*/
|
|
156
216
|
timestamp?: number;
|
|
217
|
+
/**
|
|
218
|
+
* Page Browser Graph identities invalidated by the originating file change.
|
|
219
|
+
*/
|
|
220
|
+
graphIdentities?: Array<{
|
|
221
|
+
integrationName: string;
|
|
222
|
+
routeFile: string;
|
|
223
|
+
policy: 'development' | 'production';
|
|
224
|
+
entryFingerprint: string;
|
|
225
|
+
}>;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Options for handling a development file change through HMR.
|
|
229
|
+
*/
|
|
230
|
+
export type HmrFileChangeOptions = {
|
|
231
|
+
broadcast?: boolean;
|
|
232
|
+
graphIdentities?: ClientBridgeEvent['graphIdentities'];
|
|
157
233
|
};
|
|
158
234
|
/**
|
|
159
235
|
* Adapter-agnostic interface for broadcasting development events to connected clients.
|
|
@@ -167,40 +243,42 @@ export interface IClientBridge {
|
|
|
167
243
|
error(message: string): void;
|
|
168
244
|
subscriberCount: number;
|
|
169
245
|
}
|
|
246
|
+
export interface ResolvedHmrEntrypoint {
|
|
247
|
+
sourcePath: string;
|
|
248
|
+
outputPath: string;
|
|
249
|
+
outputUrl: string;
|
|
250
|
+
role: 'page' | 'script';
|
|
251
|
+
}
|
|
170
252
|
/**
|
|
171
253
|
* Interface for the HMR Manager.
|
|
172
254
|
* Used by integration plugins to register entrypoints and strategies.
|
|
173
255
|
*/
|
|
174
256
|
export interface IHmrManager {
|
|
175
257
|
/**
|
|
176
|
-
* Registers
|
|
258
|
+
* Registers a client entrypoint for dev-transform delivery and HMR watching.
|
|
177
259
|
*
|
|
178
260
|
* @remarks
|
|
179
|
-
*
|
|
180
|
-
*
|
|
261
|
+
* Returns a stable `/assets/__eco_dev__/…` URL immediately; the module is
|
|
262
|
+
* transpiled on the first browser request (per-file ESM, not a page bundle).
|
|
181
263
|
*/
|
|
182
264
|
registerEntrypoint(entrypointPath: string): Promise<string>;
|
|
183
265
|
/**
|
|
184
|
-
* Registers
|
|
185
|
-
*
|
|
186
|
-
* @remarks
|
|
187
|
-
* This path exists for non-page script assets that are not owned by a
|
|
188
|
-
* framework integration. Unlike `registerEntrypoint()`, it may use the generic
|
|
189
|
-
* script bundling path.
|
|
266
|
+
* Registers an integration contributor that supplies per-module transform plugins.
|
|
190
267
|
*/
|
|
191
|
-
|
|
268
|
+
registerDevTransformContributor(contributor: DevTransformBundleContributor): void;
|
|
269
|
+
registerScriptEntrypoint(entrypointPath: string): Promise<ResolvedHmrEntrypoint>;
|
|
192
270
|
/**
|
|
193
271
|
* Registers a custom HMR strategy.
|
|
194
272
|
*/
|
|
195
273
|
registerStrategy(strategy: HmrStrategy): void;
|
|
196
|
-
/**
|
|
197
|
-
* Sets the build plugins to use during bundling.
|
|
198
|
-
*/
|
|
199
|
-
setPlugins(plugins: EcoBuildPlugin[]): void;
|
|
200
274
|
/**
|
|
201
275
|
* Enables or disables HMR.
|
|
202
276
|
*/
|
|
203
277
|
setEnabled(enabled: boolean): void;
|
|
278
|
+
/**
|
|
279
|
+
* Stops active HMR watchers and releases dev-time resources.
|
|
280
|
+
*/
|
|
281
|
+
stop(): void;
|
|
204
282
|
/**
|
|
205
283
|
* Returns whether HMR is enabled.
|
|
206
284
|
*/
|
|
@@ -213,18 +291,30 @@ export interface IHmrManager {
|
|
|
213
291
|
* Gets the output URL for a registered entrypoint.
|
|
214
292
|
*/
|
|
215
293
|
getOutputUrl(entrypointPath: string): string | undefined;
|
|
294
|
+
/**
|
|
295
|
+
* Returns an existing emitted HMR script artifact without registering it.
|
|
296
|
+
*/
|
|
297
|
+
getResolvedScriptOutput?(entrypointPath: string): ResolvedHmrEntrypoint | undefined;
|
|
216
298
|
/**
|
|
217
299
|
* Gets the map of watched files.
|
|
218
300
|
*/
|
|
219
301
|
getWatchedFiles(): Map<string, string>;
|
|
220
302
|
/**
|
|
221
|
-
* Gets
|
|
303
|
+
* Gets registered dev-transform entrypoints keyed by resolved source path.
|
|
222
304
|
*/
|
|
223
|
-
|
|
305
|
+
getRegisteredEntrypoints(): ReadonlyMap<string, ResolvedHmrEntrypoint>;
|
|
224
306
|
/**
|
|
225
|
-
* Gets the
|
|
307
|
+
* Gets the on-disk work directory for the bundled HMR client runtime.
|
|
226
308
|
*/
|
|
227
|
-
|
|
309
|
+
getRuntimeWorkDir(): string;
|
|
310
|
+
/**
|
|
311
|
+
* Returns the on-disk path to the bundled HMR runtime script.
|
|
312
|
+
*/
|
|
313
|
+
getRuntimePath(): string;
|
|
314
|
+
/**
|
|
315
|
+
* Serves a development HMR asset request when the URL matches a known HMR path.
|
|
316
|
+
*/
|
|
317
|
+
tryHandleAssetRequest(request: Request): Response | null;
|
|
228
318
|
/**
|
|
229
319
|
* Gets the default HMR context.
|
|
230
320
|
*/
|
|
@@ -232,7 +322,7 @@ export interface IHmrManager {
|
|
|
232
322
|
/**
|
|
233
323
|
* Handles a file change event.
|
|
234
324
|
*/
|
|
235
|
-
handleFileChange(path: string): Promise<void>;
|
|
325
|
+
handleFileChange(path: string, options?: HmrFileChangeOptions): Promise<void>;
|
|
236
326
|
}
|
|
237
327
|
/**
|
|
238
328
|
* Represents the dependencies for an EcoComponent.
|
|
@@ -247,44 +337,43 @@ export type EcoComponentDependencies = {
|
|
|
247
337
|
* to express explicit module imports for client bundles.
|
|
248
338
|
*/
|
|
249
339
|
modules?: string[];
|
|
250
|
-
|
|
340
|
+
/**
|
|
341
|
+
* Child components whose assets and foreign-child graph are collected transitively.
|
|
342
|
+
* Each entry must be an `eco.component()`, `eco.layout()`, or `eco.html()` result
|
|
343
|
+
* with bound component identity.
|
|
344
|
+
*/
|
|
345
|
+
components?: EcoDeclaredComponent[];
|
|
251
346
|
};
|
|
347
|
+
/**
|
|
348
|
+
* Component returned from `eco.component()`, `eco.layout()`, or `eco.html()`.
|
|
349
|
+
*
|
|
350
|
+
* @remarks
|
|
351
|
+
* Used for `dependencies.components` and eco factory return types. Bound
|
|
352
|
+
* component identity is enforced at runtime via `isEcoDeclaredComponent()`, not by this alias.
|
|
353
|
+
*/
|
|
354
|
+
export type EcoDeclaredComponent<P = any, R = any> = EcoComponent<P, R>;
|
|
252
355
|
export type EcoPagesElement = string | Promise<string>;
|
|
253
356
|
/**
|
|
254
357
|
* Serializable child payloads accepted by cross-integration deferred rendering.
|
|
255
358
|
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
259
|
-
*
|
|
260
|
-
*
|
|
359
|
+
* @remarks
|
|
360
|
+
* Covers primitives, arrays, and Kita/Lit-style template results (`strings` /
|
|
361
|
+
* optional `values`). Plain opaque objects are intentionally excluded; foreign
|
|
362
|
+
* composition boundaries reject them before serializers can coerce `String(object)`.
|
|
363
|
+
* Framework-native trees (React nodes, JSX elements) stay outside this type and
|
|
364
|
+
* use EcoEmbed or already-serialized HTML at the boundary.
|
|
261
365
|
*/
|
|
262
366
|
export type EcoChildren = string | Promise<string> | number | bigint | boolean | null | undefined | readonly EcoChildren[] | {
|
|
263
367
|
strings: readonly string[];
|
|
264
368
|
values?: readonly EcoChildren[];
|
|
265
|
-
} | {
|
|
266
|
-
[key: string]: EcoChildren;
|
|
267
369
|
};
|
|
268
370
|
/**
|
|
269
371
|
* Represents the input configuration for EcoPages.
|
|
270
372
|
*/
|
|
271
373
|
export type EcoPagesConfig = Omit<Partial<EcoPagesAppConfig>, 'baseUrl' | 'derivedPaths' | 'templatesExt' | 'integrationsDependencies'> & Pick<EcoPagesAppConfig, 'baseUrl' | 'rootDir'>;
|
|
272
|
-
/**
|
|
273
|
-
* Internal metadata injected by eco-component-meta-plugin.
|
|
274
|
-
* Contains component file path and integration info for dependency resolution.
|
|
275
|
-
* @internal
|
|
276
|
-
*/
|
|
277
|
-
export interface EcoInjectedMeta {
|
|
278
|
-
/** Hashed identifier for client-side use (doesn't expose file paths) */
|
|
279
|
-
id: string;
|
|
280
|
-
/** Full file path of the component (use path.dirname() to get directory) */
|
|
281
|
-
file: string;
|
|
282
|
-
/** The integration identifier (e.g., 'react', 'kitajs', 'lit', 'ghtml', 'mdx') */
|
|
283
|
-
integration: string;
|
|
284
|
-
}
|
|
285
374
|
export type EcoComponentConfig = {
|
|
286
|
-
/**
|
|
287
|
-
|
|
375
|
+
/** Canonical integration, module, and stable component attribution. */
|
|
376
|
+
identity?: ComponentIdentity;
|
|
288
377
|
/**
|
|
289
378
|
* Explicit integration override for this component.
|
|
290
379
|
* When provided, this takes precedence over auto-detected integration metadata.
|
|
@@ -314,11 +403,13 @@ export type EcoComponentConfig = {
|
|
|
314
403
|
* );
|
|
315
404
|
*
|
|
316
405
|
* // Page using the layout
|
|
317
|
-
* const MyPage = () => <h1>Hello</h1
|
|
318
|
-
* MyPage.config = { layout: Layout };
|
|
406
|
+
* const MyPage = eco.page({ layout: Layout, render: () => <h1>Hello</h1> });
|
|
319
407
|
* ```
|
|
320
408
|
*/
|
|
321
|
-
layout
|
|
409
|
+
/** Normalized outer→inner layout stack from `eco.page({ layout: [...] })`. */
|
|
410
|
+
layouts?: EcoDeclaredComponent[];
|
|
411
|
+
/** Layout entries retained for per-tier prop factories. */
|
|
412
|
+
layoutEntries?: EcoPageLayoutEntry[];
|
|
322
413
|
dependencies?: EcoComponentDependencies;
|
|
323
414
|
/**
|
|
324
415
|
* Internal: Resolved lazy scripts grouped by trigger.
|
|
@@ -409,6 +500,21 @@ export type EcoComponent<P = any, R = any> = IsAny<P> extends true ? EcoFunction
|
|
|
409
500
|
export type PageProps<T = unknown> = T & StaticPageContext & {
|
|
410
501
|
locals?: RequestLocals;
|
|
411
502
|
};
|
|
503
|
+
/**
|
|
504
|
+
* Page-level robots directives for the document head and sitemap filtering.
|
|
505
|
+
*
|
|
506
|
+
* @remarks
|
|
507
|
+
* When `index` is `false`, the page is omitted from the auto-generated sitemap
|
|
508
|
+
* for routes whose metadata can be resolved during static export (filesystem
|
|
509
|
+
* pages and `app.static()` views with `metadata`). Defaults when omitted:
|
|
510
|
+
* `index: true`, `follow: true`. A `<meta name="robots">` tag is emitted by the
|
|
511
|
+
* route HTML finalization path when directives differ from those defaults.
|
|
512
|
+
*/
|
|
513
|
+
export interface PageRobotsMetadata {
|
|
514
|
+
index?: boolean;
|
|
515
|
+
follow?: boolean;
|
|
516
|
+
nocache?: boolean;
|
|
517
|
+
}
|
|
412
518
|
/**
|
|
413
519
|
* Represents the metadata for a page.
|
|
414
520
|
*/
|
|
@@ -418,6 +524,48 @@ export interface PageMetadataProps {
|
|
|
418
524
|
image?: string;
|
|
419
525
|
url?: string;
|
|
420
526
|
keywords?: string[];
|
|
527
|
+
robots?: PageRobotsMetadata;
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Configuration for automatic `sitemap.xml` generation during static export.
|
|
531
|
+
*
|
|
532
|
+
* @remarks
|
|
533
|
+
* Disabled by default. When enabled, the sitemap is written after
|
|
534
|
+
* `afterStaticExport` so integration-generated URLs can be listed via
|
|
535
|
+
* `extraUrls`. Use `exclude` for bulk pathname filters and `metadata.robots.index: false`
|
|
536
|
+
* for page-level noindex that also removes the URL from the sitemap when metadata
|
|
537
|
+
* is available during export.
|
|
538
|
+
*/
|
|
539
|
+
export interface SitemapConfig {
|
|
540
|
+
/** Emit sitemap.xml during static generation. @default false */
|
|
541
|
+
enabled?: boolean;
|
|
542
|
+
/** Output file name. @default "sitemap.xml" */
|
|
543
|
+
fileName?: string;
|
|
544
|
+
/**
|
|
545
|
+
* Extra, non-page URLs to include (e.g. "/rss.xml").
|
|
546
|
+
*
|
|
547
|
+
* @remarks
|
|
548
|
+
* Relative paths are resolved against `baseUrl`. Absolute `http(s)` URLs pass
|
|
549
|
+
* through. Always appended after page URLs; not filtered by `exclude` or page robots.
|
|
550
|
+
*/
|
|
551
|
+
extraUrls?: string[];
|
|
552
|
+
/**
|
|
553
|
+
* Pathname patterns to exclude even if a page exists.
|
|
554
|
+
*
|
|
555
|
+
* @remarks
|
|
556
|
+
* Supported patterns: exact paths (`/admin`) and prefix wildcards (`/admin/**`).
|
|
557
|
+
* Unsupported patterns are treated as exact matches. This is not a full glob engine.
|
|
558
|
+
*/
|
|
559
|
+
exclude?: string[];
|
|
560
|
+
}
|
|
561
|
+
/**
|
|
562
|
+
* Slim route descriptor for static-export hooks and runtime consumers.
|
|
563
|
+
*/
|
|
564
|
+
export interface EcopagesRouteInfo {
|
|
565
|
+
/** Resolved URL pathname, e.g. `/blog/my-post`. */
|
|
566
|
+
pathname: string;
|
|
567
|
+
/** Route params for dynamic routes (empty for static routes). */
|
|
568
|
+
params: Record<string, string>;
|
|
421
569
|
}
|
|
422
570
|
/**
|
|
423
571
|
* Represents the props for the head of a page.
|
|
@@ -441,7 +589,46 @@ export interface HtmlTemplateProps<T = EcoPagesElement> extends PageHeadProps<T>
|
|
|
441
589
|
language?: string;
|
|
442
590
|
headContent?: T;
|
|
443
591
|
pageProps: Record<string, unknown>;
|
|
592
|
+
/**
|
|
593
|
+
* Browser-importable page module URL for router-enabled documents.
|
|
594
|
+
*
|
|
595
|
+
* @remarks
|
|
596
|
+
* Transport-only: threaded into HTML shells (for example `EcoPropsScript`
|
|
597
|
+
* `moduleUrl`) and serialized as the page-data envelope `moduleUrl`. Not page
|
|
598
|
+
* component state.
|
|
599
|
+
*/
|
|
600
|
+
pageModuleUrl?: string;
|
|
444
601
|
}
|
|
602
|
+
/**
|
|
603
|
+
* Request-scoped context available to layout prop factories on `eco.page`.
|
|
604
|
+
*/
|
|
605
|
+
export type LayoutPropsContext = {
|
|
606
|
+
params?: Record<string, string>;
|
|
607
|
+
query?: Record<string, string>;
|
|
608
|
+
locals?: RequestLocals;
|
|
609
|
+
};
|
|
610
|
+
/**
|
|
611
|
+
* One layout tier in a page layout stack (outer→inner).
|
|
612
|
+
*/
|
|
613
|
+
export type EcoPageLayoutEntry<E = EcoPagesElement> = {
|
|
614
|
+
component: EcoDeclaredComponent<any, E>;
|
|
615
|
+
props?: (context: LayoutPropsContext) => Record<string, unknown>;
|
|
616
|
+
};
|
|
617
|
+
/**
|
|
618
|
+
* Layout declaration accepted by `eco.page()`.
|
|
619
|
+
*
|
|
620
|
+
* @remarks
|
|
621
|
+
* Array order is outer→inner, matching Next.js App Router segment nesting.
|
|
622
|
+
*/
|
|
623
|
+
export type EcoPageLayoutSpec<E = EcoPagesElement> = EcoDeclaredComponent<any, E> | EcoPageLayoutEntry<E>;
|
|
624
|
+
/**
|
|
625
|
+
* One or more layout tiers for `eco.page({ layout })`.
|
|
626
|
+
*
|
|
627
|
+
* @remarks
|
|
628
|
+
* When an array, order is **outer → inner** (outermost layout wraps all inner tiers).
|
|
629
|
+
* Normalized at factory time to `config.layouts` and `config.layoutEntries`.
|
|
630
|
+
*/
|
|
631
|
+
export type EcoPageLayouts<E = EcoPagesElement> = EcoPageLayoutSpec<E> | EcoPageLayoutSpec<E>[];
|
|
445
632
|
/**
|
|
446
633
|
* Layout components accepted by pages.
|
|
447
634
|
*
|
|
@@ -458,12 +645,25 @@ export type EcoLayoutComponent<T = EcoPagesElement> = EcoComponent<LayoutProps<T
|
|
|
458
645
|
*/
|
|
459
646
|
export type EcoHtmlComponent<T = EcoPagesElement> = EcoComponent<HtmlTemplateProps, T>;
|
|
460
647
|
/**
|
|
461
|
-
*
|
|
648
|
+
* Props type for the semantic `404.*` page template.
|
|
649
|
+
* @remarks `message` and `stack` are declared for future error context. The
|
|
650
|
+
* runtime does not currently pass these props when rendering the custom 404 page.
|
|
462
651
|
*/
|
|
463
652
|
export interface Error404TemplateProps extends Omit<HtmlTemplateProps, 'children'> {
|
|
464
653
|
message: string;
|
|
465
654
|
stack?: string;
|
|
466
655
|
}
|
|
656
|
+
/**
|
|
657
|
+
* Props type for the semantic `500.*` page template.
|
|
658
|
+
* @remarks In development, the page-pipeline passes `message` and `stack` from the
|
|
659
|
+
* thrown error when rendering this page after a failure. In production those
|
|
660
|
+
* fields are omitted so stacks are not serialized into HTML. Direct visits to
|
|
661
|
+
* `/500` also omit them.
|
|
662
|
+
*/
|
|
663
|
+
export interface Error500TemplateProps extends Omit<HtmlTemplateProps, 'children'> {
|
|
664
|
+
message?: string;
|
|
665
|
+
stack?: string;
|
|
666
|
+
}
|
|
467
667
|
/**
|
|
468
668
|
* Represents the parameters for a page.
|
|
469
669
|
* The keys are strings, and the values can be either a string or an array of strings.
|
|
@@ -587,6 +787,20 @@ export type RouteRendererOptions = {
|
|
|
587
787
|
params?: PageParams;
|
|
588
788
|
query?: PageQuery;
|
|
589
789
|
locals?: RequestLocals;
|
|
790
|
+
/**
|
|
791
|
+
* Preloaded page module from request-time inspection.
|
|
792
|
+
*
|
|
793
|
+
* @remarks
|
|
794
|
+
* When present, render preparation reuses this module instead of importing the
|
|
795
|
+
* page file again for the same request.
|
|
796
|
+
*/
|
|
797
|
+
pageModule?: EcoPageFile;
|
|
798
|
+
/**
|
|
799
|
+
* Extra props merged into the page props for this render.
|
|
800
|
+
* @remarks Used by semantic error pages (for example development `message` /
|
|
801
|
+
* `stack` on the custom 500 page).
|
|
802
|
+
*/
|
|
803
|
+
props?: Record<string, unknown>;
|
|
590
804
|
};
|
|
591
805
|
/**
|
|
592
806
|
* The body of the route renderer.
|
|
@@ -599,6 +813,8 @@ export type RouteRenderResult = {
|
|
|
599
813
|
body: RouteRendererBody;
|
|
600
814
|
/** Cache strategy from page component's eco.page({ cache }) option */
|
|
601
815
|
cacheStrategy?: CacheStrategy;
|
|
816
|
+
/** Source paths observed during render preparation for HTML cache invalidation. */
|
|
817
|
+
sourceDependencyPaths?: readonly string[];
|
|
602
818
|
};
|
|
603
819
|
/**
|
|
604
820
|
* Represents the dependencies required for an integration plugin.
|
|
@@ -659,15 +875,19 @@ export type IntegrationRendererRenderOptions<C = EcoPagesElement> = RouteRendere
|
|
|
659
875
|
metadata: PageMetadataProps;
|
|
660
876
|
HtmlTemplate: EcoHtmlComponent<C>;
|
|
661
877
|
Page: EcoComponent<PageProps, C>;
|
|
878
|
+
Layouts?: EcoDeclaredComponent[];
|
|
662
879
|
Layout?: EcoPageLayoutComponent<any>;
|
|
880
|
+
layoutEntries?: EcoPageLayoutEntry[];
|
|
663
881
|
dependencies?: EcoComponentDependencies;
|
|
882
|
+
/** @internal Resolved page dependencies carried through the render pipeline. */
|
|
883
|
+
resolvedPageDependencyComponents?: ReadonlyArray<EcoComponent | Partial<EcoComponent>>;
|
|
664
884
|
resolvedDependencies: ProcessedAsset[];
|
|
665
885
|
pagePackage?: PagePackageResult;
|
|
666
|
-
componentRender?: ComponentRenderResult;
|
|
667
886
|
pageProps?: Record<string, unknown>;
|
|
668
887
|
cacheStrategy?: CacheStrategy;
|
|
669
888
|
pageLocals?: RequestLocals;
|
|
670
|
-
|
|
889
|
+
/** @internal Source paths from render preparation for HTML cache dependency registration. */
|
|
890
|
+
sourceDependencyPaths?: readonly string[];
|
|
671
891
|
};
|
|
672
892
|
/**
|
|
673
893
|
* Structured page asset package produced after dependency resolution.
|
|
@@ -732,10 +952,16 @@ export interface PageBrowserGraphResult {
|
|
|
732
952
|
export type PageBrowserGraphContributionContext = {
|
|
733
953
|
file: string;
|
|
734
954
|
pageModule: EcoPageFile;
|
|
955
|
+
props?: Record<string, unknown>;
|
|
956
|
+
params?: PageParams;
|
|
957
|
+
query?: PageQuery;
|
|
958
|
+
dependencyInstanceKey?: string;
|
|
735
959
|
};
|
|
736
960
|
export interface PageBrowserGraphContribution {
|
|
737
961
|
dependencies?: AssetDefinition[];
|
|
738
962
|
assets?: ProcessedAsset[];
|
|
963
|
+
/** Source files that should invalidate this graph entry when they change. */
|
|
964
|
+
watchPaths?: string[];
|
|
739
965
|
}
|
|
740
966
|
export type OwnershipValidationErrorCode = 'UNKNOWN_INTEGRATION_OWNER' | 'MISSING_COMPONENT_METADATA';
|
|
741
967
|
export interface OwnershipValidationError {
|
|
@@ -746,27 +972,6 @@ export interface OwnershipValidationError {
|
|
|
746
972
|
integrationName?: string;
|
|
747
973
|
}
|
|
748
974
|
export type OwnershipPlanNodeSource = 'route' | 'page' | 'layout' | 'html-template' | 'dependency';
|
|
749
|
-
export interface IntegrationOwnership {
|
|
750
|
-
integrationName: string;
|
|
751
|
-
componentId: string;
|
|
752
|
-
componentFile?: string;
|
|
753
|
-
isPageEntry: boolean;
|
|
754
|
-
isForeignToParent: boolean;
|
|
755
|
-
}
|
|
756
|
-
export interface OwnershipPlanNode {
|
|
757
|
-
id: string;
|
|
758
|
-
source: OwnershipPlanNodeSource;
|
|
759
|
-
ownership: IntegrationOwnership;
|
|
760
|
-
children: OwnershipPlanNode[];
|
|
761
|
-
declaredDependenciesValid: boolean;
|
|
762
|
-
}
|
|
763
|
-
export interface OwnershipPlan {
|
|
764
|
-
root: OwnershipPlanNode;
|
|
765
|
-
rendererNames: string[];
|
|
766
|
-
foreignEdgeCount: number;
|
|
767
|
-
hasValidationErrors: boolean;
|
|
768
|
-
validationErrors: OwnershipValidationError[];
|
|
769
|
-
}
|
|
770
975
|
export type ForeignSubtreeAttachmentPolicy = {
|
|
771
976
|
kind: 'none';
|
|
772
977
|
} | {
|
|
@@ -790,6 +995,16 @@ export interface BaseIntegrationContext {
|
|
|
790
995
|
rendererCache?: Map<string, unknown>;
|
|
791
996
|
componentInstanceId?: string;
|
|
792
997
|
}
|
|
998
|
+
/**
|
|
999
|
+
* Shared input for renderer-owned component execution.
|
|
1000
|
+
*
|
|
1001
|
+
* @remarks
|
|
1002
|
+
* `children` stays `unknown` at this boundary so integrations can receive
|
|
1003
|
+
* queued tokens, already-serialized HTML, or framework-native values before
|
|
1004
|
+
* their own placement rules apply. Opaque values must be rejected or converted
|
|
1005
|
+
* by foreign-child interception before string serializers run; adapters keep
|
|
1006
|
+
* framework-specific placement (React raw HTML, Lit slot markers).
|
|
1007
|
+
*/
|
|
793
1008
|
export interface ComponentRenderInput<TIntegrationContext extends BaseIntegrationContext = BaseIntegrationContext> {
|
|
794
1009
|
component: EcoComponent;
|
|
795
1010
|
props: Record<string, unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/src/utils/deep-merge.js
CHANGED
|
@@ -1,32 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module contains a simple utility function to merge two objects deeply
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
1
5
|
function isObject(item) {
|
|
2
|
-
|
|
6
|
+
return item && typeof item === 'object' && !Array.isArray(item);
|
|
3
7
|
}
|
|
4
8
|
function isArray(item) {
|
|
5
|
-
|
|
9
|
+
return Array.isArray(item);
|
|
6
10
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} else {
|
|
20
|
-
output[key] = deepMerge(target[key], source[key]);
|
|
21
|
-
}
|
|
22
|
-
} else if (isArray(source[key])) {
|
|
23
|
-
output[key] = [...target[key] || [], ...source[key]];
|
|
24
|
-
} else if (source[key] !== void 0) {
|
|
25
|
-
Object.assign(output, { [key]: source[key] });
|
|
11
|
+
/**
|
|
12
|
+
* Deeply merges two objects or arrays
|
|
13
|
+
* @function deepMerge
|
|
14
|
+
* @template T - Type of target object
|
|
15
|
+
* @template U - Type of source object
|
|
16
|
+
* @param target - The target object to merge into
|
|
17
|
+
* @param source - The source object to merge from
|
|
18
|
+
* @returns A new object with merged properties
|
|
19
|
+
*/
|
|
20
|
+
export function deepMerge(target, source) {
|
|
21
|
+
if (isArray(target) && isArray(source)) {
|
|
22
|
+
return [...target, ...source];
|
|
26
23
|
}
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
if (!isObject(target) || !isObject(source)) {
|
|
25
|
+
return source;
|
|
26
|
+
}
|
|
27
|
+
const output = Object.assign({}, target);
|
|
28
|
+
for (const key in source) {
|
|
29
|
+
if (isObject(source[key])) {
|
|
30
|
+
if (!target[key]) {
|
|
31
|
+
Object.assign(output, { [key]: source[key] });
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
output[key] = deepMerge(target[key], source[key]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (isArray(source[key])) {
|
|
38
|
+
output[key] = [...(target[key] || []), ...source[key]];
|
|
39
|
+
}
|
|
40
|
+
else if (source[key] !== undefined) {
|
|
41
|
+
Object.assign(output, { [key]: source[key] });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return output;
|
|
29
45
|
}
|
|
30
|
-
export {
|
|
31
|
-
deepMerge
|
|
32
|
-
};
|