@ecopages/core 0.2.0-beta.4 → 0.2.0-beta.40
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,35 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Minimal app-local invalidation state backed by a single generation counter.
|
|
3
|
+
*/
|
|
4
|
+
export class CounterServerInvalidationState {
|
|
5
|
+
serverInvalidationVersion = 0;
|
|
6
|
+
getServerInvalidationVersion() {
|
|
7
|
+
return this.serverInvalidationVersion;
|
|
8
|
+
}
|
|
9
|
+
invalidateServerModules(_changedFiles) {
|
|
10
|
+
this.serverInvalidationVersion += 1;
|
|
11
|
+
}
|
|
12
|
+
reset() {
|
|
13
|
+
this.serverInvalidationVersion += 1;
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
function isLegacyServerInvalidationState(value) {
|
|
14
|
-
|
|
17
|
+
return (Boolean(value) &&
|
|
18
|
+
typeof value === 'object' &&
|
|
19
|
+
typeof value.getServerInvalidationVersion === 'function' &&
|
|
20
|
+
typeof value.invalidateServerModules === 'function' &&
|
|
21
|
+
typeof value.reset === 'function');
|
|
15
22
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Returns the app-owned server invalidation state.
|
|
25
|
+
*/
|
|
26
|
+
export function getAppServerInvalidationState(appConfig) {
|
|
27
|
+
if (appConfig.runtime?.serverInvalidationState) {
|
|
28
|
+
return appConfig.runtime.serverInvalidationState;
|
|
29
|
+
}
|
|
30
|
+
if (isLegacyServerInvalidationState(appConfig.runtime?.devGraphService)) {
|
|
31
|
+
return appConfig.runtime.devGraphService;
|
|
32
|
+
}
|
|
33
|
+
return new CounterServerInvalidationState();
|
|
24
34
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Installs the invalidation state used by one app instance.
|
|
37
|
+
*/
|
|
38
|
+
export function setAppServerInvalidationState(appConfig, serverInvalidationState) {
|
|
39
|
+
appConfig.runtime = {
|
|
40
|
+
...(appConfig.runtime ?? {}),
|
|
41
|
+
serverInvalidationState,
|
|
42
|
+
};
|
|
30
43
|
}
|
|
31
|
-
export {
|
|
32
|
-
CounterServerInvalidationState,
|
|
33
|
-
getAppServerInvalidationState,
|
|
34
|
-
setAppServerInvalidationState
|
|
35
|
-
};
|
|
@@ -113,10 +113,7 @@ export declare class SchemaValidationService {
|
|
|
113
113
|
validateRequest(source: ValidationSource, schemas: ValidationSchemas): Promise<ValidationResult<ValidatedData>>;
|
|
114
114
|
/**
|
|
115
115
|
* Validates a single value against a Standard Schema.
|
|
116
|
-
*
|
|
117
|
-
* @param schema - The Standard Schema validator
|
|
118
|
-
* @param data - The data to validate
|
|
119
|
-
* @returns Validation result with validated data or errors
|
|
120
116
|
*/
|
|
117
|
+
private mapSchemaIssue;
|
|
121
118
|
private validateWithSchema;
|
|
122
119
|
}
|
|
@@ -1,101 +1,162 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
import { SchemaError, validateStandardSchema } from './validate-standard-schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Service for validating request data using Standard Schema compliant validators.
|
|
4
|
+
*
|
|
5
|
+
* This service provides a unified interface for validating HTTP request data (body, query parameters, headers)
|
|
6
|
+
* using any validation library that implements the Standard Schema specification.
|
|
7
|
+
*
|
|
8
|
+
* @example Using with Zod
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { z } from 'zod';
|
|
11
|
+
* import { SchemaValidationService } from './schema-validation-service.js';
|
|
12
|
+
*
|
|
13
|
+
* const service = new SchemaValidationService();
|
|
14
|
+
* const result = await service.validateRequest(
|
|
15
|
+
* { body: { title: 'Hello', count: 42 } },
|
|
16
|
+
* { body: z.object({ title: z.string(), count: z.number() }) }
|
|
17
|
+
* );
|
|
18
|
+
*
|
|
19
|
+
* if (result.success) {
|
|
20
|
+
* console.log(result.data.body);
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @example Using with Valibot
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import * as v from 'valibot';
|
|
27
|
+
*
|
|
28
|
+
* const result = await service.validateRequest(
|
|
29
|
+
* { query: { page: '1' } },
|
|
30
|
+
* { query: v.object({ page: v.string() }) }
|
|
31
|
+
* );
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example Using with ArkType
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import { type } from 'arktype';
|
|
37
|
+
*
|
|
38
|
+
* const result = await service.validateRequest(
|
|
39
|
+
* { headers: { 'authorization': 'Bearer token' } },
|
|
40
|
+
* { headers: type({ authorization: 'string' }) }
|
|
41
|
+
* );
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example Multiple sources
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const result = await service.validateRequest(
|
|
47
|
+
* {
|
|
48
|
+
* body: { title: 'Post' },
|
|
49
|
+
* query: { format: 'json' },
|
|
50
|
+
* headers: { 'content-type': 'application/json' }
|
|
51
|
+
* },
|
|
52
|
+
* {
|
|
53
|
+
* body: z.object({ title: z.string() }),
|
|
54
|
+
* query: v.object({ format: v.string() }),
|
|
55
|
+
* headers: type({ 'content-type': 'string' })
|
|
56
|
+
* }
|
|
57
|
+
* );
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* Supported libraries: Zod, Valibot, ArkType, Effect Schema (with standardSchemaV1 wrapper)
|
|
61
|
+
*/
|
|
62
|
+
export class SchemaValidationService {
|
|
63
|
+
/**
|
|
64
|
+
* Validates request data against provided schemas.
|
|
65
|
+
*
|
|
66
|
+
* Validates body, query parameters, and headers against their respective schemas.
|
|
67
|
+
* All validations are performed, and errors are aggregated from all sources.
|
|
68
|
+
*
|
|
69
|
+
* @param source - The data to validate (body, query, headers)
|
|
70
|
+
* @param schemas - The Standard Schema validators for each source
|
|
71
|
+
* @returns Validation result with validated data or aggregated errors
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const result = await service.validateRequest(
|
|
76
|
+
* { body: { name: 'John', age: 30 } },
|
|
77
|
+
* { body: z.object({ name: z.string(), age: z.number() }) }
|
|
78
|
+
* );
|
|
79
|
+
*
|
|
80
|
+
* if (result.success) {
|
|
81
|
+
* const validated = result.data.body;
|
|
82
|
+
* } else {
|
|
83
|
+
* console.error(result.errors);
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
async validateRequest(source, schemas) {
|
|
88
|
+
const validated = {};
|
|
89
|
+
const allErrors = [];
|
|
90
|
+
if (schemas.body && source.body !== undefined) {
|
|
91
|
+
const result = await this.validateWithSchema(schemas.body, source.body);
|
|
92
|
+
if (!result.success) {
|
|
93
|
+
allErrors.push(...(result.errors || []));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
validated.body = result.data;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (schemas.query && source.query) {
|
|
100
|
+
const result = await this.validateWithSchema(schemas.query, source.query);
|
|
101
|
+
if (!result.success) {
|
|
102
|
+
allErrors.push(...(result.errors || []));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
validated.query = result.data;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (schemas.headers && source.headers) {
|
|
109
|
+
const result = await this.validateWithSchema(schemas.headers, source.headers);
|
|
110
|
+
if (!result.success) {
|
|
111
|
+
allErrors.push(...(result.errors || []));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
validated.headers = result.data;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (schemas.params && source.params) {
|
|
118
|
+
const result = await this.validateWithSchema(schemas.params, source.params);
|
|
119
|
+
if (!result.success) {
|
|
120
|
+
allErrors.push(...(result.errors || []));
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
validated.params = result.data;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (allErrors.length > 0) {
|
|
127
|
+
return { success: false, errors: allErrors };
|
|
128
|
+
}
|
|
129
|
+
return { success: true, data: validated };
|
|
36
130
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
} else {
|
|
42
|
-
validated.query = result.data;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (schemas.headers && source.headers) {
|
|
46
|
-
const result = await this.validateWithSchema(schemas.headers, source.headers);
|
|
47
|
-
if (!result.success) {
|
|
48
|
-
allErrors.push(...result.errors || []);
|
|
49
|
-
} else {
|
|
50
|
-
validated.headers = result.data;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (schemas.params && source.params) {
|
|
54
|
-
const result = await this.validateWithSchema(schemas.params, source.params);
|
|
55
|
-
if (!result.success) {
|
|
56
|
-
allErrors.push(...result.errors || []);
|
|
57
|
-
} else {
|
|
58
|
-
validated.params = result.data;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (allErrors.length > 0) {
|
|
62
|
-
return { success: false, errors: allErrors };
|
|
63
|
-
}
|
|
64
|
-
return { success: true, data: validated };
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Validates a single value against a Standard Schema.
|
|
68
|
-
*
|
|
69
|
-
* @param schema - The Standard Schema validator
|
|
70
|
-
* @param data - The data to validate
|
|
71
|
-
* @returns Validation result with validated data or errors
|
|
72
|
-
*/
|
|
73
|
-
async validateWithSchema(schema, data) {
|
|
74
|
-
try {
|
|
75
|
-
const resultOrPromise = schema["~standard"].validate(data);
|
|
76
|
-
const result = resultOrPromise instanceof Promise ? await resultOrPromise : resultOrPromise;
|
|
77
|
-
if (result.issues) {
|
|
131
|
+
/**
|
|
132
|
+
* Validates a single value against a Standard Schema.
|
|
133
|
+
*/
|
|
134
|
+
mapSchemaIssue(issue) {
|
|
78
135
|
return {
|
|
79
|
-
success: false,
|
|
80
|
-
errors: result.issues.map((issue) => ({
|
|
81
136
|
message: issue.message,
|
|
82
|
-
path: issue.path?.map((p) => typeof p ===
|
|
83
|
-
}))
|
|
137
|
+
path: issue.path?.map((p) => (typeof p === 'object' && 'key' in p ? p.key : p)),
|
|
84
138
|
};
|
|
85
|
-
}
|
|
86
|
-
return { success: true, data: result.value };
|
|
87
|
-
} catch (error) {
|
|
88
|
-
return {
|
|
89
|
-
success: false,
|
|
90
|
-
errors: [
|
|
91
|
-
{
|
|
92
|
-
message: error instanceof Error ? error.message : "Validation failed"
|
|
93
|
-
}
|
|
94
|
-
]
|
|
95
|
-
};
|
|
96
139
|
}
|
|
97
|
-
|
|
140
|
+
async validateWithSchema(schema, data) {
|
|
141
|
+
try {
|
|
142
|
+
const value = await validateStandardSchema(schema, data);
|
|
143
|
+
return { success: true, data: value };
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
if (error instanceof SchemaError) {
|
|
147
|
+
return {
|
|
148
|
+
success: false,
|
|
149
|
+
errors: error.issues.map((issue) => this.mapSchemaIssue(issue)),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
success: false,
|
|
154
|
+
errors: [
|
|
155
|
+
{
|
|
156
|
+
message: error instanceof Error ? error.message : 'Validation failed',
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
98
162
|
}
|
|
99
|
-
export {
|
|
100
|
-
SchemaValidationService
|
|
101
|
-
};
|
|
@@ -1,65 +1,12 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
1
2
|
/**
|
|
2
|
-
* Standard Schema
|
|
3
|
-
* Compatible with Zod, Valibot, ArkType, Effect Schema, and other validation libraries.
|
|
4
|
-
*
|
|
3
|
+
* Ecopages aliases for the official Standard Schema V1 types.
|
|
5
4
|
* @see https://standardschema.dev
|
|
6
|
-
*
|
|
7
|
-
* @example Using with Zod
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { z } from 'zod';
|
|
10
|
-
*
|
|
11
|
-
* const bodySchema = z.object({
|
|
12
|
-
* title: z.string().min(1),
|
|
13
|
-
* content: z.string()
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* app.post('/posts', async (ctx) => {
|
|
17
|
-
* const { title, content } = ctx.body;
|
|
18
|
-
* return ctx.json({ id: 1, title, content });
|
|
19
|
-
* }, {
|
|
20
|
-
* schema: { body: bodySchema }
|
|
21
|
-
* });
|
|
22
|
-
* ```
|
|
23
5
|
*/
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
readonly output: Output;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Result of Standard Schema validation.
|
|
37
|
-
*/
|
|
38
|
-
export type StandardSchemaResult<Output> = StandardSchemaSuccessResult<Output> | StandardSchemaFailureResult;
|
|
39
|
-
/**
|
|
40
|
-
* Successful validation result.
|
|
41
|
-
*/
|
|
42
|
-
export interface StandardSchemaSuccessResult<Output> {
|
|
43
|
-
readonly value: Output;
|
|
44
|
-
readonly issues?: undefined;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Failed validation result.
|
|
48
|
-
*/
|
|
49
|
-
export interface StandardSchemaFailureResult {
|
|
50
|
-
readonly value?: undefined;
|
|
51
|
-
readonly issues: ReadonlyArray<StandardSchemaIssue>;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Validation issue details.
|
|
55
|
-
*/
|
|
56
|
-
export interface StandardSchemaIssue {
|
|
57
|
-
readonly message: string;
|
|
58
|
-
readonly path?: ReadonlyArray<PropertyKey | {
|
|
59
|
-
key: PropertyKey;
|
|
60
|
-
}>;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Infers the output type from a Standard Schema.
|
|
64
|
-
*/
|
|
65
|
-
export type InferOutput<T extends StandardSchema> = T extends StandardSchema<any, infer O> ? O : never;
|
|
6
|
+
export type StandardSchema<Input = unknown, Output = Input> = StandardSchemaV1<Input, Output>;
|
|
7
|
+
export type StandardSchemaResult<Output> = StandardSchemaV1.Result<Output>;
|
|
8
|
+
export type StandardSchemaSuccessResult<Output> = StandardSchemaV1.SuccessResult<Output>;
|
|
9
|
+
export type StandardSchemaFailureResult = StandardSchemaV1.FailureResult;
|
|
10
|
+
export type StandardSchemaIssue = StandardSchemaV1.Issue;
|
|
11
|
+
export type InferOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
|
|
12
|
+
export type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
+
export { SchemaError } from '@standard-schema/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Validates a value with any Standard Schema-compliant validator.
|
|
5
|
+
* Throws {@link SchemaError} when validation fails.
|
|
6
|
+
*/
|
|
7
|
+
export declare function validateStandardSchema<T>(schema: StandardSchemaV1<unknown, T>, value: unknown): Promise<T>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SchemaError } from '@standard-schema/utils';
|
|
2
|
+
export { SchemaError } from '@standard-schema/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Validates a value with any Standard Schema-compliant validator.
|
|
5
|
+
* Throws {@link SchemaError} when validation fails.
|
|
6
|
+
*/
|
|
7
|
+
export async function validateStandardSchema(schema, value) {
|
|
8
|
+
const resultOrPromise = schema['~standard'].validate(value);
|
|
9
|
+
const result = resultOrPromise instanceof Promise ? await resultOrPromise : resultOrPromise;
|
|
10
|
+
if (result.issues) {
|
|
11
|
+
throw new SchemaError(result.issues);
|
|
12
|
+
}
|
|
13
|
+
return result.value;
|
|
14
|
+
}
|
|
@@ -24,3 +24,44 @@ That means it should reuse:
|
|
|
24
24
|
- asset processing
|
|
25
25
|
|
|
26
26
|
It should not invent a parallel rendering stack just for build mode.
|
|
27
|
+
|
|
28
|
+
## Files
|
|
29
|
+
|
|
30
|
+
| File | Role |
|
|
31
|
+
| ------------------------------ | ---------------------------------------------------------------------------- |
|
|
32
|
+
| `static-site-generator.ts` | Route enumeration, HTML artifact writes, integration export hooks, sitemap |
|
|
33
|
+
| `static-export-context.ts` | Hook context type for `beforeStaticExport` / `afterStaticExport` |
|
|
34
|
+
| `sitemap.ts` | Pure sitemap.xml renderer |
|
|
35
|
+
| `sitemap-routes.ts` | Sitemap location assembly (`exclude`, `extraUrls`, dedupe) |
|
|
36
|
+
| `static-build-invalidation.ts` | `dist/` reset policy, production cache clearing, static-render cache context |
|
|
37
|
+
|
|
38
|
+
Build-input fingerprinting (`hashAppConfigFile`, `createBuildInputsFingerprint`) lives in `packages/core/src/build/cache/build-input-fingerprint.ts` and is shared with server-entry and unified-graph caches.
|
|
39
|
+
|
|
40
|
+
## Incremental static export
|
|
41
|
+
|
|
42
|
+
`ServerStaticBuilder.prepareExportDirectory()` decides whether to wipe `dist/`:
|
|
43
|
+
|
|
44
|
+
1. `force: true` → always reset
|
|
45
|
+
2. Any processor/integration reports `didChange()` → reset
|
|
46
|
+
3. Route-module manifest lacks matching `configHash` + `buildInputsFingerprint` → reset
|
|
47
|
+
|
|
48
|
+
When `dist/` is preserved (`preserveExportDirectory: true`), `StaticSiteGenerator.run()` prunes HTML files no longer in the active route set.
|
|
49
|
+
|
|
50
|
+
Rendered HTML reuse is tracked in `.eco/.server-modules/.build-cache.json` under each route module's `renderedOutputs`. `canReuseStaticRender()` skips re-rendering when the source file, dependency hashes, and output path are unchanged.
|
|
51
|
+
|
|
52
|
+
`clearProductionBuildCaches()` runs on `force` builds and removes all persisted `.eco` build manifests (route modules, server entry, unified pages graph).
|
|
53
|
+
|
|
54
|
+
## Integration hooks
|
|
55
|
+
|
|
56
|
+
Integrations may implement:
|
|
57
|
+
|
|
58
|
+
- `beforeStaticExport(context)` — runs after unified-graph prebuild, before page rendering
|
|
59
|
+
- `afterStaticExport(context)` — runs in a `finally` block after generation completes
|
|
60
|
+
|
|
61
|
+
When `appConfig.sitemap.enabled` is true, `sitemap.xml` is written **after** `afterStaticExport` so integration-generated URLs can be listed via `extraUrls`.
|
|
62
|
+
|
|
63
|
+
Sitemap eligibility is decided during successful page export (`activeStaticPathnames` plus `robots.index !== false`, fail-closed on metadata errors). `resolveSitemapLocations` then applies `exclude` and appends `extraUrls`.
|
|
64
|
+
|
|
65
|
+
`StaticExportContext.routes` is the unfiltered static-generation route list. Sitemap filtering is applied separately.
|
|
66
|
+
|
|
67
|
+
See `StaticExportContext` in `static-export-context.ts`.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
2
|
+
import type { PageParams } from '../types/public-types.js';
|
|
3
|
+
import type { PageRendererResolver } from '../route-renderer/route-renderer.js';
|
|
4
|
+
export type ProductionPageBrowserGraphRouteInstance = {
|
|
5
|
+
routeFile: string;
|
|
6
|
+
params?: PageParams;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Returns whether production static export should warm Page Browser Graphs before rendering.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* True only when `NODE_ENV === 'production'`. Independent of `force` and of
|
|
13
|
+
* unified pages-graph env flags. Does not persist a disk manifest.
|
|
14
|
+
*/
|
|
15
|
+
export declare function shouldPrebuildProductionPageBrowserGraphs(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Clears in-memory production Page Browser Graph session records.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* Clears only the `'production'` policy so a failed or force export cannot
|
|
21
|
+
* reuse staged graph output. Development session records are left intact.
|
|
22
|
+
*/
|
|
23
|
+
export declare function clearProductionPageBrowserGraphSession(appConfig: EcoPagesAppConfig): void;
|
|
24
|
+
/**
|
|
25
|
+
* Warms production Page Browser Graphs for the supplied static route instances.
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* Deduplicates route file + params pairs, then calls each integration renderer's
|
|
29
|
+
* `prebuildProductionPageBrowserGraph` sequentially (activates integration runtime,
|
|
30
|
+
* then resolves into `page-browser-graph-session`). Does not persist a disk manifest.
|
|
31
|
+
*/
|
|
32
|
+
export declare function prebuildProductionPageBrowserGraphs(routeInstances: readonly ProductionPageBrowserGraphRouteInstance[], routeRendererFactory: PageRendererResolver): Promise<void>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { getAppPageBrowserGraphSession } from '../route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js';
|
|
3
|
+
import { createPageDependencyInstanceKey } from '../route-renderer/orchestration/page-browser-graph/route-instance-key.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns whether production static export should warm Page Browser Graphs before rendering.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* True only when `NODE_ENV === 'production'`. Independent of `force` and of
|
|
9
|
+
* unified pages-graph env flags. Does not persist a disk manifest.
|
|
10
|
+
*/
|
|
11
|
+
export function shouldPrebuildProductionPageBrowserGraphs() {
|
|
12
|
+
return process.env.NODE_ENV === 'production';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Clears in-memory production Page Browser Graph session records.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* Clears only the `'production'` policy so a failed or force export cannot
|
|
19
|
+
* reuse staged graph output. Development session records are left intact.
|
|
20
|
+
*/
|
|
21
|
+
export function clearProductionPageBrowserGraphSession(appConfig) {
|
|
22
|
+
getAppPageBrowserGraphSession(appConfig).clearPolicyRecords('production');
|
|
23
|
+
}
|
|
24
|
+
function serializeProductionRouteInstance(instance) {
|
|
25
|
+
const routeFile = path.resolve(instance.routeFile);
|
|
26
|
+
const dependencyInstanceKey = createPageDependencyInstanceKey({ params: instance.params });
|
|
27
|
+
return JSON.stringify([routeFile, dependencyInstanceKey]);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Warms production Page Browser Graphs for the supplied static route instances.
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* Deduplicates route file + params pairs, then calls each integration renderer's
|
|
34
|
+
* `prebuildProductionPageBrowserGraph` sequentially (activates integration runtime,
|
|
35
|
+
* then resolves into `page-browser-graph-session`). Does not persist a disk manifest.
|
|
36
|
+
*/
|
|
37
|
+
export async function prebuildProductionPageBrowserGraphs(routeInstances, routeRendererFactory) {
|
|
38
|
+
const uniqueRouteInstances = [
|
|
39
|
+
...new Map(routeInstances.map((instance) => [serializeProductionRouteInstance(instance), instance])).values(),
|
|
40
|
+
].sort((left, right) => serializeProductionRouteInstance(left).localeCompare(serializeProductionRouteInstance(right)));
|
|
41
|
+
const instancesByRenderer = new Map();
|
|
42
|
+
for (const routeInstance of uniqueRouteInstances) {
|
|
43
|
+
const renderer = routeRendererFactory.getPageRenderer(routeInstance.routeFile);
|
|
44
|
+
const instances = instancesByRenderer.get(renderer) ?? [];
|
|
45
|
+
instances.push(routeInstance);
|
|
46
|
+
instancesByRenderer.set(renderer, instances);
|
|
47
|
+
}
|
|
48
|
+
for (const [renderer, routeInstancesForRenderer] of instancesByRenderer) {
|
|
49
|
+
const groupedBuildPlan = await renderer.buildGroupedGraphBuildPlan(routeInstancesForRenderer);
|
|
50
|
+
for (const routeInstance of routeInstancesForRenderer) {
|
|
51
|
+
await renderer.prebuildProductionPageBrowserGraph(routeInstance.routeFile, {
|
|
52
|
+
params: routeInstance.params,
|
|
53
|
+
groupedBuildPlan,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SitemapConfig } from '../types/public-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the ordered absolute locations for sitemap.xml.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* `eligiblePathnames` must already be successfully exported and robots-indexable.
|
|
7
|
+
* Filtering here is only `sitemap.exclude`, then `extraUrls` are appended.
|
|
8
|
+
* `extraUrls` always include (deduped) and are not subject to `exclude` or page robots.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveSitemapLocations(input: {
|
|
11
|
+
eligiblePathnames: readonly string[];
|
|
12
|
+
sitemap: SitemapConfig;
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
}): string[];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { matchesAnyPathPattern, normalizePathname } from '../utils/path-pattern.js';
|
|
2
|
+
import { buildSitemapLocation } from './sitemap.js';
|
|
3
|
+
/**
|
|
4
|
+
* Builds the ordered absolute locations for sitemap.xml.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* `eligiblePathnames` must already be successfully exported and robots-indexable.
|
|
8
|
+
* Filtering here is only `sitemap.exclude`, then `extraUrls` are appended.
|
|
9
|
+
* `extraUrls` always include (deduped) and are not subject to `exclude` or page robots.
|
|
10
|
+
*/
|
|
11
|
+
export function resolveSitemapLocations(input) {
|
|
12
|
+
const exclude = input.sitemap.exclude ?? [];
|
|
13
|
+
const locations = [];
|
|
14
|
+
const seen = new Set();
|
|
15
|
+
for (const pathname of input.eligiblePathnames) {
|
|
16
|
+
const normalized = normalizePathname(pathname);
|
|
17
|
+
if (matchesAnyPathPattern(normalized, exclude)) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const location = buildSitemapLocation(input.baseUrl, normalized);
|
|
21
|
+
if (seen.has(location)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
seen.add(location);
|
|
25
|
+
locations.push(location);
|
|
26
|
+
}
|
|
27
|
+
for (const extraUrl of input.sitemap.extraUrls ?? []) {
|
|
28
|
+
const location = buildSitemapLocation(input.baseUrl, extraUrl);
|
|
29
|
+
if (seen.has(location)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
seen.add(location);
|
|
33
|
+
locations.push(location);
|
|
34
|
+
}
|
|
35
|
+
return locations;
|
|
36
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Joins a base origin with a pathname or absolute URL into a sitemap `<loc>` value.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Trailing slashes are stripped except for the site root (`/`). Absolute `http(s)`
|
|
6
|
+
* URLs in `extraUrls` are returned as-is (still slash-normalized).
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildSitemapLocation(baseUrl: string, pathnameOrUrl: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Renders a sitemap.org 0.9 urlset document from absolute location URLs.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* Callers are responsible for deduplication; this serializer preserves input order.
|
|
14
|
+
*/
|
|
15
|
+
export declare function renderSitemap(locations: readonly string[]): string;
|