@ecopages/core 0.2.0-beta.9 → 0.2.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -13
- package/package.json +360 -57
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +57 -5
- package/src/adapters/abstract/application-adapter.js +261 -203
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +147 -0
- package/src/adapters/abstract/server-adapter.d.ts +13 -2
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +2 -50
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -57
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.d.ts +4 -6
- package/src/adapters/bun/create-app.js +169 -154
- package/src/adapters/bun/hmr-manager.d.ts +2 -3
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -8
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +34 -53
- package/src/adapters/bun/server-adapter.js +557 -637
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- package/src/adapters/bun/static-preview-host.js +43 -41
- package/src/adapters/create-app.d.ts +1 -12
- package/src/adapters/create-app.js +11 -72
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +2 -8
- package/src/adapters/node/create-app.d.ts +4 -3
- package/src/adapters/node/create-app.js +123 -98
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.js +62 -64
- package/src/adapters/node/node-hmr-manager.d.ts +2 -3
- package/src/adapters/node/node-hmr-manager.js +58 -48
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -17
- package/src/adapters/node/server-adapter.d.ts +28 -8
- package/src/adapters/node/server-adapter.js +349 -302
- package/src/adapters/node/static-content-server.js +172 -186
- package/src/adapters/node/static-preview-host.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +88 -64
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +132 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/http/api-response.js +79 -0
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +26 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +49 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/http/fs-server-response-matcher.js +260 -0
- package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
- package/src/adapters/shared/http/run-middleware-chain.js +17 -0
- package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
- package/src/adapters/shared/runtime/application-adapter.js +75 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +226 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/runtime/render-context.js +99 -0
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -2
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
- package/src/adapters/shared/runtime/server-adapter.js +301 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/runtime/server-route-handler.js +77 -0
- package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +26 -31
- package/src/adapters/shared/runtime/server-static-builder.js +172 -0
- package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
- package/src/adapters/shared/{node-http-websocket-upgrades.d.ts → ws/node-http-websocket-upgrades.d.ts} +1 -1
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
- package/src/build/README.md +165 -45
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +145 -0
- package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +4 -0
- package/src/build/browser/browser-runtime-manifest.js +65 -0
- package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +3 -5
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +12 -13
- package/src/build/browser/browser-runtime-plugin.js +218 -0
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +55 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +4 -0
- package/src/build/build-adapter.d.ts +25 -355
- package/src/build/build-adapter.js +258 -265
- package/src/build/{build-input-fingerprint.d.ts → cache/build-input-fingerprint.d.ts} +3 -3
- package/src/build/cache/build-input-fingerprint.js +33 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +4 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +71 -0
- package/src/build/{pages-unified-graph-build.d.ts → cache/pages-unified-graph-build.d.ts} +1 -1
- package/src/build/cache/pages-unified-graph-build.js +199 -0
- package/src/build/cache/production-build-cache.d.ts +21 -0
- package/src/build/cache/production-build-cache.js +56 -0
- package/src/build/{server-entry-build-cache.d.ts → cache/server-entry-build-cache.d.ts} +3 -4
- package/src/build/cache/server-entry-build-cache.js +153 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/contracts/build-manifest.js +64 -0
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/contracts/content-virtual-modules.d.ts +12 -0
- package/src/build/contracts/content-virtual-modules.js +29 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
- package/src/build/rolldown/rolldown-adapter-helpers.js +463 -0
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/rolldown/rolldown-build-adapter.js +57 -0
- package/src/build/{rolldown-build-invocation-metrics.d.ts → rolldown/rolldown-build-invocation-metrics.d.ts} +1 -1
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +7 -2
- package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
- package/src/build/{rolldown-source-transform-pass.d.ts → rolldown/rolldown-source-transform-pass.d.ts} +1 -1
- package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
- package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
- package/src/build/runtime/build-profile-options.d.ts +7 -0
- package/src/build/runtime/build-profile-options.js +37 -0
- package/src/build/runtime/build-request-identity.d.ts +17 -0
- package/src/build/runtime/build-request-identity.js +79 -0
- package/src/build/runtime/build-request-policy.d.ts +58 -0
- package/src/build/runtime/build-request-policy.js +84 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +75 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +40 -0
- package/src/build/{parallel-build-executor.d.ts → runtime/parallel-build-executor.d.ts} +1 -1
- package/src/build/runtime/parallel-build-executor.js +60 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- package/src/build/runtime/serialized-build-executor.js +79 -0
- package/src/cache/index.d.ts +2 -1
- package/src/cache/index.js +7 -6
- package/src/cache/module-parse-cache.d.ts +5 -0
- package/src/cache/module-parse-cache.js +122 -67
- package/src/cache/module-transform-profiler.d.ts +8 -0
- package/src/cache/module-transform-profiler.js +8 -0
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +49 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +3 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +16 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +90 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +33 -0
- package/src/client/scroll.test.browser.d.ts +1 -0
- package/src/client/scroll.test.browser.js +31 -0
- package/src/client/view-transitions.d.ts +32 -0
- package/src/client/view-transitions.js +120 -0
- package/src/client/view-transitions.test.browser.d.ts +1 -0
- package/src/client/view-transitions.test.browser.js +56 -0
- package/src/config/README.md +1 -1
- package/src/config/config-builder.d.ts +40 -20
- package/src/config/config-builder.js +645 -610
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +44 -23
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +10 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +8 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +10 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +25 -23
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +3 -0
- package/src/dev/sc-server.js +106 -103
- package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
- package/src/dev/transform-server/dev-transform-bundler.js +79 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.js +127 -0
- package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
- package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
- package/src/dev/transform-server/dev-transform-server.js +191 -0
- package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-url.js +58 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +166 -0
- package/src/dev/transform-server/index.d.ts +6 -0
- package/src/dev/transform-server/index.js +4 -0
- package/src/dev/transform-server/types.d.ts +15 -0
- package/src/dev/transform-server/types.js +1 -0
- package/src/dev-toolbar/README.md +52 -0
- package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
- package/src/dev-toolbar/define-dev-tool.js +9 -0
- package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
- package/src/dev-toolbar/dev-toolbar-config.js +19 -0
- package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
- package/src/dev-toolbar/dev-toolbar-host.js +117 -0
- package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
- package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
- package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
- package/src/dev-toolbar/dev-toolbar-package.js +78 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
- package/src/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +39 -0
- package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
- package/src/diagnostics/request-pipeline-metrics.js +121 -0
- package/src/diagnostics/startup-trace.d.ts +81 -0
- package/src/diagnostics/startup-trace.js +281 -0
- package/src/eco/README.md +17 -0
- package/src/eco/component-identity.d.ts +13 -0
- package/src/eco/component-identity.js +18 -0
- package/src/eco/eco-declared-component.d.ts +15 -0
- package/src/eco/eco-declared-component.js +23 -0
- package/src/eco/eco.browser.js +63 -70
- package/src/eco/eco.js +163 -97
- package/src/eco/eco.types.d.ts +47 -8
- package/src/eco/eco.types.js +5 -0
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -10
- package/src/eco/global-injector-map.js +55 -41
- package/src/eco/lazy-injector-map.js +90 -60
- package/src/eco/module-dependencies.js +52 -44
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +69 -0
- package/src/env.d.ts +2 -0
- package/src/errors/http-error.d.ts +8 -0
- package/src/errors/http-error.js +66 -49
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -6
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +21 -0
- package/src/hmr/client/hmr-runtime.js +119 -110
- package/src/hmr/client/module-update.d.ts +13 -0
- package/src/hmr/client/module-update.js +39 -0
- package/src/hmr/hmr-asset-paths.d.ts +14 -0
- package/src/hmr/hmr-asset-paths.js +22 -0
- package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
- package/src/hmr/hmr-entrypoint-output.js +34 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +14 -0
- package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
- package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
- package/src/hmr/hmr-runtime-paths.d.ts +10 -0
- package/src/hmr/hmr-runtime-paths.js +13 -0
- package/src/hmr/hmr-strategy.d.ts +9 -0
- package/src/hmr/hmr-strategy.js +113 -42
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
- package/src/hmr/strategies/js-hmr-strategy.js +107 -167
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
- package/src/index.browser.d.ts +1 -0
- package/src/index.browser.js +2 -4
- package/src/index.d.ts +4 -1
- package/src/index.js +7 -21
- package/src/islands/README.md +25 -0
- package/src/islands/island-host.d.ts +37 -0
- package/src/islands/island-host.js +55 -0
- package/src/plugins/README.md +2 -1
- package/src/plugins/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +35 -62
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +20 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
- package/src/plugins/eco-component-meta-plugin.js +123 -162
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +49 -37
- package/src/plugins/integration-plugin.d.ts +24 -6
- package/src/plugins/integration-plugin.js +212 -195
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +21 -0
- package/src/plugins/package-specifier.d.ts +12 -0
- package/src/plugins/package-specifier.js +33 -0
- package/src/plugins/processor.d.ts +66 -12
- package/src/plugins/processor.js +168 -137
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.d.ts +1 -1
- package/src/plugins/source-transform.js +109 -79
- package/src/plugins/tsconfig-import-resolver.d.ts +37 -0
- package/src/plugins/tsconfig-import-resolver.js +262 -0
- package/src/route-renderer/GRAPH.md +24 -30
- package/src/route-renderer/README.md +52 -32
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
- package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
- package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +20 -7
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +195 -0
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +37 -153
- package/src/route-renderer/orchestration/integration-renderer.js +803 -1008
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +248 -0
- package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
- package/src/{integrations/ghtml/ghtml-renderer.d.ts → route-renderer/orchestration/string-markup-renderer.d.ts} +8 -10
- package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
- package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
- package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
- package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
- package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
- package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
- package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
- package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
- package/src/route-renderer/page-loading/page-module-loader.js +136 -124
- package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
- package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/README.md +31 -0
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +56 -30
- package/src/router/client/link-intent.test.browser.js +50 -39
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +122 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +82 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +235 -211
- package/src/router/client/navigation-lifecycle.d.ts +55 -0
- package/src/router/client/navigation-lifecycle.js +50 -0
- package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
- package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
- package/src/router/server/route-registry.js +237 -242
- package/src/services/README.md +5 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +12 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +335 -268
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -58
- package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +8 -6
- package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
- package/src/services/assets/asset-processing-service/page-package.js +70 -72
- package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
- package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
- package/src/services/assets/browser-bundle.service.d.ts +27 -31
- package/src/services/assets/browser-bundle.service.js +54 -49
- package/src/services/assets/browser-runtime-asset-generation.d.ts +17 -0
- package/src/services/assets/browser-runtime-asset-generation.js +28 -0
- package/src/services/cache/cache.types.d.ts +4 -2
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
- package/src/services/cache/html-page-cache-dependency-index.js +88 -0
- package/src/services/cache/index.d.ts +2 -0
- package/src/services/cache/index.js +8 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.d.ts +31 -1
- package/src/services/cache/page-cache-service.js +237 -150
- package/src/services/cache/page-request-cache-coordinator.service.d.ts +2 -1
- package/src/services/cache/page-request-cache-coordinator.service.js +112 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.d.ts +15 -1
- package/src/services/invalidation/development-invalidation.service.js +241 -204
- package/src/services/module-loading/README.md +9 -6
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +104 -106
- package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
- package/src/services/module-loading/collection-server-module-build.service.js +83 -0
- package/src/services/module-loading/host-module-loader-registry.js +6 -11
- package/src/services/module-loading/module-loading-types.js +1 -0
- package/src/services/module-loading/page-module-import.service.d.ts +7 -12
- package/src/services/module-loading/page-module-import.service.js +232 -206
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +2 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +59 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.d.ts +10 -0
- package/src/services/module-loading/route-module-build-cache.store.js +213 -196
- package/src/services/module-loading/route-module-build-manifest.d.ts +10 -14
- package/src/services/module-loading/route-module-build-manifest.js +54 -118
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +2 -2
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -109
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
- package/src/services/module-loading/server-module-transpiler.service.js +65 -62
- package/src/services/module-loading/source-module-support.js +15 -7
- package/src/services/runtime-state/dev-graph.service.js +165 -157
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
- package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +156 -95
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.d.ts +7 -0
- package/src/services/validation/validate-standard-schema.js +14 -0
- package/src/static-site-generator/README.md +10 -2
- package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +36 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +42 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +2 -2
- package/src/static-site-generator/static-build-invalidation.js +33 -74
- package/src/static-site-generator/static-export-context.d.ts +9 -1
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.d.ts +27 -6
- package/src/static-site-generator/static-site-generator.js +528 -389
- package/src/types/internal-types.d.ts +55 -17
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +236 -95
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +30 -0
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +22 -5
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.d.ts +1 -0
- package/src/utils/parse-cli-args.js +73 -62
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +42 -0
- package/src/utils/path-utils.module.js +8 -11
- package/src/utils/resolve-entry-file.js +70 -38
- package/src/utils/resolve-work-dir.js +23 -27
- package/src/utils/runtime.js +24 -33
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +60 -53
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +54 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +17 -0
- package/src/watchers/project-watcher.d.ts +21 -6
- package/src/watchers/project-watcher.js +402 -277
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/api-response.js +0 -96
- package/src/adapters/shared/application-adapter.js +0 -90
- package/src/adapters/shared/bun-user-websocket-lifecycle.js +0 -102
- package/src/adapters/shared/copy-runtime-public-dir.js +0 -24
- package/src/adapters/shared/define-api-handler.d.ts +0 -25
- package/src/adapters/shared/define-api-handler.js +0 -15
- package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
- package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
- package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
- package/src/adapters/shared/fs-server-response-factory.js +0 -81
- package/src/adapters/shared/fs-server-response-matcher.js +0 -186
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/hmr-html-response.js +0 -33
- package/src/adapters/shared/node-http-websocket-upgrades.js +0 -125
- package/src/adapters/shared/render-context.js +0 -93
- package/src/adapters/shared/runtime-app-bootstrap.js +0 -41
- package/src/adapters/shared/runtime-host.js +0 -0
- package/src/adapters/shared/server-adapter.js +0 -436
- package/src/adapters/shared/server-route-handler.js +0 -111
- package/src/adapters/shared/server-static-builder.js +0 -202
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -61
- package/src/adapters/shared/shared-hmr-manager.js +0 -273
- package/src/adapters/shared/static-preview-host.js +0 -0
- package/src/adapters/shared/websocket-lifecycle.d.ts +0 -3
- package/src/adapters/shared/websocket-lifecycle.js +0 -19
- package/src/build/browser-runtime-manifest.js +0 -61
- package/src/build/browser-runtime-plugin-helpers.js +0 -14
- package/src/build/browser-runtime-plugin.js +0 -173
- package/src/build/build-input-fingerprint.js +0 -31
- package/src/build/build-manifest.d.ts +0 -33
- package/src/build/build-manifest.js +0 -49
- package/src/build/build-types.js +0 -0
- package/src/build/jsx-ownership-plugins.d.ts +0 -10
- package/src/build/jsx-ownership-plugins.js +0 -17
- package/src/build/pages-unified-graph-build.js +0 -208
- package/src/build/parallel-build-executor.js +0 -52
- package/src/build/rolldown-adapter-helpers.js +0 -310
- package/src/build/rolldown-build-adapter.js +0 -67
- package/src/build/rolldown-build-invocation-metrics.js +0 -43
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -182
- package/src/build/rolldown-plugin-bridge.js +0 -211
- package/src/build/rolldown-source-transform-pass.js +0 -58
- package/src/build/runtime-build-executor.d.ts +0 -15
- package/src/build/runtime-build-executor.js +0 -43
- package/src/build/runtime-build-output-normalizer.js +0 -203
- package/src/build/serialized-build-executor.js +0 -63
- package/src/build/server-entry-build-cache.js +0 -169
- package/src/build/server-side-css-shim-plugin.js +0 -35
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -54
- package/src/integrations/ghtml/ghtml-renderer.js +0 -57
- package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
- package/src/integrations/ghtml/ghtml.constants.js +0 -4
- package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
- package/src/integrations/ghtml/ghtml.plugin.js +0 -20
- package/src/route-renderer/orchestration/component-render-context.js +0 -147
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
- package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -231
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
- package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
- package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
- package/src/route-renderer/orchestration/render-output.utils.js +0 -175
- package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- package/src/utils/html.d.ts +0 -1
- package/src/utils/html.js +0 -4
- /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
- /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
|
@@ -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
|
+
}
|
|
@@ -29,11 +29,13 @@ It should not invent a parallel rendering stack just for build mode.
|
|
|
29
29
|
|
|
30
30
|
| File | Role |
|
|
31
31
|
| ------------------------------ | ---------------------------------------------------------------------------- |
|
|
32
|
-
| `static-site-generator.ts` | Route enumeration, HTML artifact writes, integration export hooks
|
|
32
|
+
| `static-site-generator.ts` | Route enumeration, HTML artifact writes, integration export hooks, sitemap |
|
|
33
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) |
|
|
34
36
|
| `static-build-invalidation.ts` | `dist/` reset policy, production cache clearing, static-render cache context |
|
|
35
37
|
|
|
36
|
-
Build-input fingerprinting (`hashAppConfigFile`, `createBuildInputsFingerprint`) lives in `packages/core/src/build/build-input-fingerprint.ts` and is shared with server-entry and unified-graph caches.
|
|
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.
|
|
37
39
|
|
|
38
40
|
## Incremental static export
|
|
39
41
|
|
|
@@ -56,4 +58,10 @@ Integrations may implement:
|
|
|
56
58
|
- `beforeStaticExport(context)` — runs after unified-graph prebuild, before page rendering
|
|
57
59
|
- `afterStaticExport(context)` — runs in a `finally` block after generation completes
|
|
58
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
|
+
|
|
59
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;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { escapeXmlText } from '../utils/html-escaping.js';
|
|
2
|
+
import { normalizePathname } from '../utils/path-pattern.js';
|
|
3
|
+
/**
|
|
4
|
+
* Joins a base origin with a pathname or absolute URL into a sitemap `<loc>` value.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Trailing slashes are stripped except for the site root (`/`). Absolute `http(s)`
|
|
8
|
+
* URLs in `extraUrls` are returned as-is (still slash-normalized).
|
|
9
|
+
*/
|
|
10
|
+
export function buildSitemapLocation(baseUrl, pathnameOrUrl) {
|
|
11
|
+
const trimmed = pathnameOrUrl.trim();
|
|
12
|
+
if (/^https?:\/\//i.test(trimmed)) {
|
|
13
|
+
return normalizeLocation(trimmed);
|
|
14
|
+
}
|
|
15
|
+
const origin = baseUrl.replace(/\/+$/, '');
|
|
16
|
+
const pathname = normalizePathname(trimmed);
|
|
17
|
+
return pathname === '/' ? `${origin}/` : `${origin}${pathname}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Renders a sitemap.org 0.9 urlset document from absolute location URLs.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* Callers are responsible for deduplication; this serializer preserves input order.
|
|
24
|
+
*/
|
|
25
|
+
export function renderSitemap(locations) {
|
|
26
|
+
const urls = locations
|
|
27
|
+
.map((loc) => ` <url>\n <loc>${escapeXmlText(normalizeLocation(loc))}</loc>\n </url>`)
|
|
28
|
+
.join('\n');
|
|
29
|
+
return [
|
|
30
|
+
'<?xml version="1.0" encoding="UTF-8"?>',
|
|
31
|
+
'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
|
|
32
|
+
urls,
|
|
33
|
+
'</urlset>',
|
|
34
|
+
'',
|
|
35
|
+
].join('\n');
|
|
36
|
+
}
|
|
37
|
+
function normalizeLocation(location) {
|
|
38
|
+
if (/^https?:\/\/[^/]+\/?$/i.test(location)) {
|
|
39
|
+
return `${location.replace(/\/+$/, '')}/`;
|
|
40
|
+
}
|
|
41
|
+
return location.replace(/\/+$/, '');
|
|
42
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
2
2
|
import { type RouteModuleStaticRenderCacheContext } from '../services/module-loading/route-module-build-manifest.js';
|
|
3
|
-
export type { BuildInputChangeContributor, IntegrationPlugin, Processor } from '../build/build-input-fingerprint.js';
|
|
4
|
-
export { collectBuildInputContributors, createBuildInputsFingerprint, didBuildInputContributorChange, hashAppConfigFile, haveBuildInputsChanged, } from '../build/build-input-fingerprint.js';
|
|
3
|
+
export type { BuildInputChangeContributor, IntegrationPlugin, Processor, } from '../build/cache/build-input-fingerprint.js';
|
|
4
|
+
export { collectBuildInputContributors, createBuildInputsFingerprint, didBuildInputContributorChange, hashAppConfigFile, haveBuildInputsChanged, } from '../build/cache/build-input-fingerprint.js';
|
|
5
5
|
/** Builds the static-render invalidation context for one app config. */
|
|
6
6
|
export declare function createRouteModuleStaticRenderCacheContext(appConfig: EcoPagesAppConfig): RouteModuleStaticRenderCacheContext;
|
|
7
7
|
/** Returns whether `dist/` should be wiped before the next static export. */
|