@ecopages/core 0.2.0-beta.4 → 0.2.0-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -9
- package/package.json +371 -33
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +115 -6
- package/src/adapters/abstract/application-adapter.js +261 -120
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +147 -0
- package/src/adapters/abstract/server-adapter.d.ts +16 -2
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
- package/src/adapters/abstract/ws-pattern-matcher.js +28 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
- package/src/adapters/bun/client-bridge.d.ts +1 -0
- package/src/adapters/bun/client-bridge.js +51 -47
- package/src/adapters/bun/create-app.d.ts +9 -6
- package/src/adapters/bun/create-app.js +171 -130
- package/src/adapters/bun/hmr-manager.d.ts +1 -1
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -8
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +91 -41
- package/src/adapters/bun/server-adapter.js +566 -426
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- package/src/adapters/bun/static-preview-host.js +43 -41
- package/src/adapters/create-app.d.ts +13 -11
- package/src/adapters/create-app.js +11 -63
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +2 -8
- package/src/adapters/node/create-app.d.ts +8 -3
- package/src/adapters/node/create-app.js +126 -84
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.d.ts +1 -0
- package/src/adapters/node/node-client-bridge.js +62 -61
- package/src/adapters/node/node-hmr-manager.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.js +58 -48
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -17
- package/src/adapters/node/server-adapter.d.ts +63 -23
- package/src/adapters/node/server-adapter.js +346 -297
- package/src/adapters/node/static-content-server.d.ts +1 -0
- package/src/adapters/node/static-content-server.js +172 -183
- package/src/adapters/node/static-preview-host.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +88 -64
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +132 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/http/api-response.js +79 -0
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +26 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +49 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/http/fs-server-response-matcher.js +258 -0
- package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
- package/src/adapters/shared/http/run-middleware-chain.js +17 -0
- package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
- package/src/adapters/shared/runtime/application-adapter.js +75 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.d.ts +6 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +226 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/runtime/render-context.js +99 -0
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -3
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
- package/src/adapters/shared/runtime/server-adapter.js +301 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/runtime/server-route-handler.js +77 -0
- package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +27 -35
- package/src/adapters/shared/runtime/server-static-builder.js +172 -0
- package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
- package/src/adapters/shared/ws/node-http-websocket-upgrades.d.ts +21 -0
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
- package/src/build/README.md +191 -31
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +145 -0
- package/src/build/browser/browser-runtime-manifest.js +58 -0
- package/src/build/browser/browser-runtime-plugin-helpers.js +34 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
- package/src/build/browser/browser-runtime-plugin.js +216 -0
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +55 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +4 -0
- package/src/build/build-adapter.d.ts +29 -334
- package/src/build/build-adapter.js +273 -237
- package/src/build/cache/build-input-fingerprint.d.ts +28 -0
- package/src/build/cache/build-input-fingerprint.js +33 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +4 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +71 -0
- package/src/build/cache/pages-unified-graph-build.d.ts +31 -0
- package/src/build/cache/pages-unified-graph-build.js +199 -0
- package/src/build/cache/production-build-cache.d.ts +21 -0
- package/src/build/cache/production-build-cache.js +56 -0
- package/src/build/cache/server-entry-build-cache.d.ts +43 -0
- package/src/build/cache/server-entry-build-cache.js +153 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/contracts/build-manifest.js +64 -0
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/contracts/content-virtual-modules.d.ts +12 -0
- package/src/build/contracts/content-virtual-modules.js +29 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
- package/src/build/rolldown/rolldown-adapter-helpers.js +458 -0
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/rolldown/rolldown-build-adapter.js +57 -0
- package/src/build/rolldown/rolldown-build-invocation-metrics.d.ts +12 -0
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
- package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
- package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
- package/src/build/rolldown/runtime-build-output-normalizer.d.ts +10 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
- package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
- package/src/build/runtime/build-profile-options.d.ts +7 -0
- package/src/build/runtime/build-profile-options.js +37 -0
- package/src/build/runtime/build-request-identity.d.ts +17 -0
- package/src/build/runtime/build-request-identity.js +79 -0
- package/src/build/runtime/build-request-policy.d.ts +58 -0
- package/src/build/runtime/build-request-policy.js +84 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +75 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +40 -0
- package/src/build/runtime/parallel-build-executor.d.ts +21 -0
- package/src/build/runtime/parallel-build-executor.js +60 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- package/src/build/runtime/serialized-build-executor.js +79 -0
- package/src/cache/index.d.ts +2 -1
- package/src/cache/index.js +7 -6
- package/src/cache/module-parse-cache.d.ts +5 -0
- package/src/cache/module-parse-cache.js +122 -67
- package/src/cache/module-transform-profiler.d.ts +8 -0
- package/src/cache/module-transform-profiler.js +8 -0
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +49 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +3 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +16 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +90 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +33 -0
- package/src/client/scroll.test.browser.d.ts +1 -0
- package/src/client/scroll.test.browser.js +31 -0
- package/src/client/view-transitions.d.ts +32 -0
- package/src/client/view-transitions.js +120 -0
- package/src/client/view-transitions.test.browser.d.ts +1 -0
- package/src/client/view-transitions.test.browser.js +56 -0
- package/src/config/config-builder.d.ts +40 -10
- package/src/config/config-builder.js +647 -600
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +44 -23
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +10 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +8 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +10 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +25 -23
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +3 -0
- package/src/dev/sc-server.js +106 -103
- package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
- package/src/dev/transform-server/dev-transform-bundler.js +79 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.js +126 -0
- package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
- package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
- package/src/dev/transform-server/dev-transform-server.js +191 -0
- package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-url.js +58 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +158 -0
- package/src/dev/transform-server/index.d.ts +6 -0
- package/src/dev/transform-server/index.js +4 -0
- package/src/dev/transform-server/types.d.ts +15 -0
- package/src/dev/transform-server/types.js +1 -0
- package/src/dev-toolbar/README.md +52 -0
- package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
- package/src/dev-toolbar/define-dev-tool.js +9 -0
- package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
- package/src/dev-toolbar/dev-toolbar-config.js +19 -0
- package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
- package/src/dev-toolbar/dev-toolbar-host.js +117 -0
- package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
- package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
- package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
- package/src/dev-toolbar/dev-toolbar-package.js +78 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
- package/src/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +39 -0
- package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
- package/src/diagnostics/request-pipeline-metrics.js +121 -0
- package/src/diagnostics/startup-trace.d.ts +81 -0
- package/src/diagnostics/startup-trace.js +281 -0
- package/src/eco/README.md +17 -0
- package/src/eco/component-identity.d.ts +13 -0
- package/src/eco/component-identity.js +18 -0
- package/src/eco/eco-declared-component.d.ts +15 -0
- package/src/eco/eco-declared-component.js +23 -0
- package/src/eco/eco.browser.js +63 -70
- package/src/eco/eco.js +163 -97
- package/src/eco/eco.types.d.ts +47 -8
- package/src/eco/eco.types.js +5 -0
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -10
- package/src/eco/global-injector-map.js +55 -41
- package/src/eco/lazy-injector-map.js +90 -60
- package/src/eco/module-dependencies.js +52 -44
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +69 -0
- package/src/env.d.ts +2 -0
- package/src/errors/http-error.d.ts +8 -0
- package/src/errors/http-error.js +66 -49
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -6
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +21 -0
- package/src/hmr/client/hmr-runtime.js +119 -110
- package/src/hmr/client/module-update.d.ts +13 -0
- package/src/hmr/client/module-update.js +39 -0
- package/src/hmr/hmr-asset-paths.d.ts +14 -0
- package/src/hmr/hmr-asset-paths.js +22 -0
- package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
- package/src/hmr/hmr-entrypoint-output.js +34 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +14 -0
- package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
- package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
- package/src/hmr/hmr-runtime-paths.d.ts +10 -0
- package/src/hmr/hmr-runtime-paths.js +13 -0
- package/src/hmr/hmr-strategy.d.ts +9 -0
- package/src/hmr/hmr-strategy.js +113 -42
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
- package/src/hmr/strategies/js-hmr-strategy.js +107 -167
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
- package/src/index.browser.d.ts +1 -0
- package/src/index.browser.js +2 -4
- package/src/index.d.ts +4 -1
- package/src/index.js +7 -21
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -6
- package/src/integrations/ghtml/ghtml-renderer.js +12 -56
- package/src/integrations/ghtml/ghtml.constants.js +1 -4
- package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
- package/src/integrations/ghtml/ghtml.plugin.js +10 -20
- package/src/islands/README.md +25 -0
- package/src/islands/island-host.d.ts +37 -0
- package/src/islands/island-host.js +55 -0
- package/src/plugins/README.md +2 -1
- package/src/plugins/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +35 -62
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +20 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
- package/src/plugins/eco-component-meta-plugin.js +120 -162
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +49 -37
- package/src/plugins/integration-plugin.d.ts +43 -14
- package/src/plugins/integration-plugin.js +212 -190
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +21 -0
- package/src/plugins/processor.d.ts +71 -12
- package/src/plugins/processor.js +168 -130
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.d.ts +32 -1
- package/src/plugins/source-transform.js +112 -60
- package/src/plugins/tsconfig-import-resolver.d.ts +35 -0
- package/src/plugins/tsconfig-import-resolver.js +235 -0
- package/src/route-renderer/GRAPH.md +26 -32
- package/src/route-renderer/README.md +54 -33
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
- package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
- package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +17 -7
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +191 -0
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +41 -151
- package/src/route-renderer/orchestration/integration-renderer.js +798 -988
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +232 -0
- package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +49 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
- package/src/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
- package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
- package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
- package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
- package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
- package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
- package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
- package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
- package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
- package/src/route-renderer/page-loading/page-module-loader.js +136 -124
- package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
- package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/README.md +31 -0
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +56 -30
- package/src/router/client/link-intent.test.browser.js +50 -39
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +122 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +82 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +235 -201
- package/src/router/client/navigation-lifecycle.d.ts +55 -0
- package/src/router/client/navigation-lifecycle.js +50 -0
- package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
- package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
- package/src/router/server/route-registry.js +237 -242
- package/src/services/README.md +5 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +7 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +308 -268
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -45
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +4 -2
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -38
- package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +8 -6
- package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
- package/src/services/assets/asset-processing-service/page-package.js +70 -72
- package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
- package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -121
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
- package/src/services/assets/browser-bundle.service.d.ts +28 -30
- package/src/services/assets/browser-bundle.service.js +54 -40
- package/src/services/cache/cache.types.d.ts +4 -2
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
- package/src/services/cache/html-page-cache-dependency-index.js +88 -0
- package/src/services/cache/index.d.ts +2 -0
- package/src/services/cache/index.js +8 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.d.ts +31 -1
- package/src/services/cache/page-cache-service.js +237 -150
- package/src/services/cache/page-request-cache-coordinator.service.js +106 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.d.ts +1 -1
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
- package/src/services/invalidation/development-invalidation.service.js +239 -175
- package/src/services/module-loading/README.md +52 -0
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +103 -118
- package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
- package/src/services/module-loading/collection-server-module-build.service.js +83 -0
- package/src/services/module-loading/host-module-loader-registry.js +6 -11
- package/src/services/module-loading/module-loading-types.js +1 -0
- package/src/services/module-loading/page-module-import.service.d.ts +11 -13
- package/src/services/module-loading/page-module-import.service.js +222 -184
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +24 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +51 -0
- package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
- package/src/services/module-loading/route-module-build-cache.js +3 -0
- package/src/services/module-loading/route-module-build-cache.store.d.ts +57 -0
- package/src/services/module-loading/route-module-build-cache.store.js +202 -0
- package/src/services/module-loading/route-module-build-manifest.d.ts +57 -0
- package/src/services/module-loading/route-module-build-manifest.js +60 -0
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
- package/src/services/module-loading/route-module-dependency-hasher.js +148 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
- package/src/services/module-loading/server-module-transpiler.service.js +65 -62
- package/src/services/module-loading/source-module-support.js +15 -7
- package/src/services/runtime-state/dev-graph.service.js +165 -157
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
- package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +156 -95
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.d.ts +7 -0
- package/src/services/validation/validate-standard-schema.js +14 -0
- package/src/static-site-generator/README.md +41 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +36 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +42 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +10 -0
- package/src/static-site-generator/static-build-invalidation.js +37 -0
- package/src/static-site-generator/static-export-context.d.ts +30 -0
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.d.ts +43 -25
- package/src/static-site-generator/static-site-generator.js +536 -294
- package/src/types/internal-types.d.ts +59 -13
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +310 -95
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +30 -0
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +22 -5
- package/src/utils/html.js +1 -4
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.d.ts +2 -0
- package/src/utils/parse-cli-args.js +73 -59
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +42 -0
- package/src/utils/path-utils.module.js +8 -11
- package/src/utils/resolve-entry-file.js +70 -38
- package/src/utils/resolve-work-dir.js +23 -27
- package/src/utils/runtime.js +24 -33
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +60 -53
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +54 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +17 -0
- package/src/watchers/project-watcher.d.ts +29 -6
- package/src/watchers/project-watcher.js +402 -257
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/api-response.js +0 -96
- package/src/adapters/shared/application-adapter.js +0 -90
- package/src/adapters/shared/define-api-handler.d.ts +0 -25
- package/src/adapters/shared/define-api-handler.js +0 -15
- package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
- package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
- package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
- package/src/adapters/shared/fs-server-response-factory.js +0 -81
- package/src/adapters/shared/fs-server-response-matcher.js +0 -186
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/hmr-html-response.js +0 -33
- package/src/adapters/shared/render-context.js +0 -93
- package/src/adapters/shared/runtime-app-bootstrap.js +0 -46
- package/src/adapters/shared/runtime-host.js +0 -0
- package/src/adapters/shared/server-adapter.js +0 -436
- package/src/adapters/shared/server-route-handler.js +0 -111
- package/src/adapters/shared/server-static-builder.js +0 -162
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -59
- package/src/adapters/shared/shared-hmr-manager.js +0 -241
- package/src/adapters/shared/static-preview-host.js +0 -0
- package/src/build/browser-runtime-manifest.js +0 -61
- package/src/build/browser-runtime-plugin-helpers.js +0 -14
- package/src/build/browser-runtime-plugin.js +0 -173
- package/src/build/build-manifest.d.ts +0 -33
- package/src/build/build-manifest.js +0 -49
- package/src/build/build-types.js +0 -0
- package/src/build/rolldown-adapter-helpers.js +0 -265
- package/src/build/rolldown-build-adapter.js +0 -65
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -166
- package/src/build/rolldown-plugin-bridge.js +0 -199
- package/src/build/runtime-build-executor.d.ts +0 -21
- package/src/build/runtime-build-executor.js +0 -19
- package/src/build/runtime-build-output-normalizer.d.ts +0 -3
- package/src/build/runtime-build-output-normalizer.js +0 -111
- package/src/build/serialized-build-executor.js +0 -63
- package/src/build/server-side-css-shim-plugin.js +0 -35
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -43
- package/src/route-renderer/orchestration/component-render-context.js +0 -147
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
- package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -233
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
- package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
- package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
- package/src/route-renderer/orchestration/render-output.utils.js +0 -171
- package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -577
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
- /package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Window scroll behavior during client-side navigations.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Updates window scroll position after a navigation commit.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Hash navigations always scroll to the target element and ignore `scrollBehavior`.
|
|
10
|
+
* Fragment targets are resolved by element id (`#section` → `getElementById('section')`).
|
|
11
|
+
*/
|
|
12
|
+
export function manageWindowScroll(newUrl, previousUrl, options) {
|
|
13
|
+
const { scrollBehavior, smoothScroll } = options;
|
|
14
|
+
if (newUrl.hash) {
|
|
15
|
+
const target = document.getElementById(newUrl.hash.slice(1));
|
|
16
|
+
target?.scrollIntoView({ behavior: smoothScroll ? 'smooth' : 'instant' });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const behavior = smoothScroll ? 'smooth' : 'instant';
|
|
20
|
+
switch (scrollBehavior) {
|
|
21
|
+
case 'preserve':
|
|
22
|
+
break;
|
|
23
|
+
case 'auto':
|
|
24
|
+
if (newUrl.pathname !== previousUrl.pathname) {
|
|
25
|
+
window.scrollTo({ top: 0, left: 0, behavior });
|
|
26
|
+
}
|
|
27
|
+
break;
|
|
28
|
+
case 'top':
|
|
29
|
+
default:
|
|
30
|
+
window.scrollTo({ top: 0, left: 0, behavior });
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { manageWindowScroll } from './scroll.js';
|
|
3
|
+
const options = { scrollBehavior: 'top', smoothScroll: false };
|
|
4
|
+
describe('manageWindowScroll', () => {
|
|
5
|
+
afterEach(() => {
|
|
6
|
+
history.replaceState({}, '', '/');
|
|
7
|
+
document.body.replaceChildren();
|
|
8
|
+
vi.restoreAllMocks();
|
|
9
|
+
});
|
|
10
|
+
it('scrolls to top by default', () => {
|
|
11
|
+
const scrollTo = vi.spyOn(window, 'scrollTo').mockImplementation(() => { });
|
|
12
|
+
manageWindowScroll(new URL('/next', window.location.origin), new URL('/prev', window.location.origin), options);
|
|
13
|
+
expect(scrollTo).toHaveBeenCalledWith({ top: 0, left: 0, behavior: 'instant' });
|
|
14
|
+
});
|
|
15
|
+
it('preserves scroll when scrollBehavior is preserve', () => {
|
|
16
|
+
const scrollTo = vi.spyOn(window, 'scrollTo').mockImplementation(() => { });
|
|
17
|
+
manageWindowScroll(new URL('/next', window.location.origin), new URL('/prev', window.location.origin), {
|
|
18
|
+
...options,
|
|
19
|
+
scrollBehavior: 'preserve',
|
|
20
|
+
});
|
|
21
|
+
expect(scrollTo).not.toHaveBeenCalled();
|
|
22
|
+
});
|
|
23
|
+
it('scrolls to hash target by element id', () => {
|
|
24
|
+
const section = document.createElement('section');
|
|
25
|
+
section.id = 'section';
|
|
26
|
+
section.scrollIntoView = vi.fn();
|
|
27
|
+
document.body.append(section);
|
|
28
|
+
manageWindowScroll(new URL('/page#section', window.location.origin), new URL('/page', window.location.origin), options);
|
|
29
|
+
expect(section.scrollIntoView).toHaveBeenCalledWith({ behavior: 'instant' });
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View Transition API helpers for `data-view-transition` markup and safe root defaults.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Whether a document tree contains elements that participate in named view transitions.
|
|
7
|
+
*/
|
|
8
|
+
export declare function documentHasNamedViewTransitions(doc: Document): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Whether SPA navigation should use `startViewTransition` (old or incoming page).
|
|
11
|
+
*/
|
|
12
|
+
export declare function navigationHasNamedViewTransitions(current: Document, incoming: Document): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Injects persisted CSS that opts the document out of the root view-transition group.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* Uses `data-eco-persist` so head morphing does not drop the stylesheet between navigations.
|
|
18
|
+
* Named `data-view-transition` morph / fade rules live in a separate dynamic style tag.
|
|
19
|
+
*/
|
|
20
|
+
export declare function ensureRootViewTransitionStyles(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Assigns `view-transition-name` from `data-view-transition` and injects morph styles.
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* Elements without `data-view-transition-animate="fade"` get a geometric morph:
|
|
26
|
+
* the old snapshot is hidden so cross-fade ghosting does not appear.
|
|
27
|
+
*/
|
|
28
|
+
export declare function applyViewTransitionNames(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Clears inline transition names and dynamic morph styles after a transition ends.
|
|
31
|
+
*/
|
|
32
|
+
export declare function clearViewTransitionNames(): void;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View Transition API helpers for `data-view-transition` markup and safe root defaults.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
const VIEW_TRANSITION_ATTR = 'data-view-transition';
|
|
6
|
+
const VIEW_TRANSITION_ANIMATE_ATTR = 'data-view-transition-animate';
|
|
7
|
+
const VIEW_TRANSITION_DURATION_ATTR = 'data-view-transition-duration';
|
|
8
|
+
const DYNAMIC_STYLES_ID = 'eco-vt-dynamic-styles';
|
|
9
|
+
const ROOT_STYLES_ID = 'eco-vt-root-styles';
|
|
10
|
+
/**
|
|
11
|
+
* @remarks
|
|
12
|
+
* UA default is `html { view-transition-name: root }`, which snapshots the whole
|
|
13
|
+
* document and crossfades with plus-lighter (flashes lighter on dark UIs). Routers
|
|
14
|
+
* inject this opt-out when `viewTransitions` is enabled. Named `data-view-transition`
|
|
15
|
+
* morphs still run. Full-page fades are not a supported default — use named elements
|
|
16
|
+
* or app-owned motion outside the View Transitions API.
|
|
17
|
+
*/
|
|
18
|
+
const ROOT_STYLES_CSS = `html {
|
|
19
|
+
view-transition-name: none;
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
/**
|
|
23
|
+
* Whether a document tree contains elements that participate in named view transitions.
|
|
24
|
+
*/
|
|
25
|
+
export function documentHasNamedViewTransitions(doc) {
|
|
26
|
+
return doc.querySelector(`[${VIEW_TRANSITION_ATTR}]`) !== null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Whether SPA navigation should use `startViewTransition` (old or incoming page).
|
|
30
|
+
*/
|
|
31
|
+
export function navigationHasNamedViewTransitions(current, incoming) {
|
|
32
|
+
return documentHasNamedViewTransitions(current) || documentHasNamedViewTransitions(incoming);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Injects persisted CSS that opts the document out of the root view-transition group.
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* Uses `data-eco-persist` so head morphing does not drop the stylesheet between navigations.
|
|
39
|
+
* Named `data-view-transition` morph / fade rules live in a separate dynamic style tag.
|
|
40
|
+
*/
|
|
41
|
+
export function ensureRootViewTransitionStyles() {
|
|
42
|
+
let styleEl = document.getElementById(ROOT_STYLES_ID);
|
|
43
|
+
if (!styleEl) {
|
|
44
|
+
styleEl = document.createElement('style');
|
|
45
|
+
styleEl.id = ROOT_STYLES_ID;
|
|
46
|
+
styleEl.setAttribute('data-eco-persist', '');
|
|
47
|
+
document.head.append(styleEl);
|
|
48
|
+
}
|
|
49
|
+
if (styleEl.textContent !== ROOT_STYLES_CSS) {
|
|
50
|
+
styleEl.textContent = ROOT_STYLES_CSS;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Assigns `view-transition-name` from `data-view-transition` and injects morph styles.
|
|
55
|
+
*
|
|
56
|
+
* @remarks
|
|
57
|
+
* Elements without `data-view-transition-animate="fade"` get a geometric morph:
|
|
58
|
+
* the old snapshot is hidden so cross-fade ghosting does not appear.
|
|
59
|
+
*/
|
|
60
|
+
export function applyViewTransitionNames() {
|
|
61
|
+
const elements = document.querySelectorAll(`[${VIEW_TRANSITION_ATTR}]`);
|
|
62
|
+
const morphNames = [];
|
|
63
|
+
const customDurations = [];
|
|
64
|
+
elements.forEach((el) => {
|
|
65
|
+
const name = el.getAttribute(VIEW_TRANSITION_ATTR);
|
|
66
|
+
if (!name) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
el.style.viewTransitionName = name;
|
|
70
|
+
const animate = el.getAttribute(VIEW_TRANSITION_ANIMATE_ATTR);
|
|
71
|
+
if (animate !== 'fade') {
|
|
72
|
+
morphNames.push(name);
|
|
73
|
+
}
|
|
74
|
+
const duration = el.getAttribute(VIEW_TRANSITION_DURATION_ATTR);
|
|
75
|
+
if (duration) {
|
|
76
|
+
customDurations.push({ name, duration });
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
if (morphNames.length > 0 || customDurations.length > 0) {
|
|
80
|
+
injectDynamicStyles(morphNames, customDurations);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Clears inline transition names and dynamic morph styles after a transition ends.
|
|
85
|
+
*/
|
|
86
|
+
export function clearViewTransitionNames() {
|
|
87
|
+
const elements = document.querySelectorAll(`[${VIEW_TRANSITION_ATTR}]`);
|
|
88
|
+
elements.forEach((el) => {
|
|
89
|
+
el.style.viewTransitionName = '';
|
|
90
|
+
});
|
|
91
|
+
const styleEl = document.getElementById(DYNAMIC_STYLES_ID);
|
|
92
|
+
if (styleEl) {
|
|
93
|
+
styleEl.textContent = '';
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function injectDynamicStyles(morphNames, customDurations) {
|
|
97
|
+
let styleEl = document.getElementById(DYNAMIC_STYLES_ID);
|
|
98
|
+
if (!styleEl) {
|
|
99
|
+
styleEl = document.createElement('style');
|
|
100
|
+
styleEl.id = DYNAMIC_STYLES_ID;
|
|
101
|
+
/**
|
|
102
|
+
* @remarks
|
|
103
|
+
* Head morphing must not drop this tag between navigations.
|
|
104
|
+
*/
|
|
105
|
+
styleEl.setAttribute('data-eco-persist', '');
|
|
106
|
+
document.head.append(styleEl);
|
|
107
|
+
}
|
|
108
|
+
const morphCss = morphNames
|
|
109
|
+
.map((name) => `
|
|
110
|
+
::view-transition-old(${name}) { display: none !important; }
|
|
111
|
+
::view-transition-new(${name}) { animation: none !important; opacity: 1 !important; }
|
|
112
|
+
`)
|
|
113
|
+
.join('\n');
|
|
114
|
+
const durationCss = customDurations
|
|
115
|
+
.map(({ name, duration }) => `
|
|
116
|
+
::view-transition-group(${name}) { animation-duration: ${duration} !important; }
|
|
117
|
+
`)
|
|
118
|
+
.join('\n');
|
|
119
|
+
styleEl.textContent = `${morphCss}\n${durationCss}`;
|
|
120
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { applyViewTransitionNames, clearViewTransitionNames, documentHasNamedViewTransitions, ensureRootViewTransitionStyles, navigationHasNamedViewTransitions, } from './view-transitions.js';
|
|
3
|
+
describe('documentHasNamedViewTransitions', () => {
|
|
4
|
+
afterEach(() => {
|
|
5
|
+
document.body.replaceChildren();
|
|
6
|
+
});
|
|
7
|
+
it('returns false when no markup is present', () => {
|
|
8
|
+
expect(documentHasNamedViewTransitions(document)).toBe(false);
|
|
9
|
+
});
|
|
10
|
+
it('returns true when data-view-transition is present', () => {
|
|
11
|
+
document.body.innerHTML = '<div data-view-transition="x"></div>';
|
|
12
|
+
expect(documentHasNamedViewTransitions(document)).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
it('navigation checks current or incoming document', () => {
|
|
15
|
+
const incoming = new DOMParser().parseFromString('<html><body><div data-view-transition="hero"></div></body></html>', 'text/html');
|
|
16
|
+
expect(navigationHasNamedViewTransitions(document, incoming)).toBe(true);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('ensureRootViewTransitionStyles', () => {
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
document.getElementById('eco-vt-root-styles')?.remove();
|
|
22
|
+
document.getElementById('eco-vt-dynamic-styles')?.remove();
|
|
23
|
+
document.body.replaceChildren();
|
|
24
|
+
});
|
|
25
|
+
it('opts the document out of the root view-transition group without !important', () => {
|
|
26
|
+
ensureRootViewTransitionStyles();
|
|
27
|
+
const style = document.getElementById('eco-vt-root-styles');
|
|
28
|
+
expect(style).not.toBeNull();
|
|
29
|
+
expect(style?.hasAttribute('data-eco-persist')).toBe(true);
|
|
30
|
+
expect(style?.textContent).toContain('view-transition-name: none');
|
|
31
|
+
expect(style?.textContent).not.toContain('!important');
|
|
32
|
+
expect(getComputedStyle(document.documentElement).viewTransitionName).toBe('none');
|
|
33
|
+
});
|
|
34
|
+
it('reuses a single style element', () => {
|
|
35
|
+
ensureRootViewTransitionStyles();
|
|
36
|
+
ensureRootViewTransitionStyles();
|
|
37
|
+
expect(document.querySelectorAll('#eco-vt-root-styles')).toHaveLength(1);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('applyViewTransitionNames with root styles', () => {
|
|
41
|
+
afterEach(() => {
|
|
42
|
+
document.getElementById('eco-vt-root-styles')?.remove();
|
|
43
|
+
document.getElementById('eco-vt-dynamic-styles')?.remove();
|
|
44
|
+
document.body.replaceChildren();
|
|
45
|
+
});
|
|
46
|
+
it('keeps root styles when clearing named morph styles', () => {
|
|
47
|
+
ensureRootViewTransitionStyles();
|
|
48
|
+
document.body.innerHTML = '<div data-view-transition="hero"></div>';
|
|
49
|
+
applyViewTransitionNames();
|
|
50
|
+
expect(document.getElementById('eco-vt-dynamic-styles')?.textContent).toContain('view-transition-old(hero)');
|
|
51
|
+
expect(document.getElementById('eco-vt-root-styles')?.textContent).toContain('view-transition-name: none');
|
|
52
|
+
clearViewTransitionNames();
|
|
53
|
+
expect(document.getElementById('eco-vt-dynamic-styles')?.textContent).toBe('');
|
|
54
|
+
expect(document.getElementById('eco-vt-root-styles')?.textContent).toContain('view-transition-name: none');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
5
|
import { type BuildOwnership } from '../build/build-adapter.js';
|
|
6
|
-
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
6
|
+
import type { EcoBuildPlugin } from '../build/contracts/build-types.js';
|
|
7
7
|
import type { EcoPagesAppConfig, RobotsPreference } from '../types/internal-types.js';
|
|
8
8
|
import type { AnyIntegrationPlugin } from '../plugins/integration-plugin.js';
|
|
9
9
|
import type { Processor } from '../plugins/processor.js';
|
|
10
10
|
import type { EcoSourceTransform } from '../plugins/source-transform.js';
|
|
11
|
-
import type { PageMetadataProps } from '../types/public-types.js';
|
|
11
|
+
import type { PageMetadataProps, SitemapConfig } from '../types/public-types.js';
|
|
12
12
|
import type { CacheConfig } from '../services/cache/cache.types.js';
|
|
13
13
|
export declare const CONFIG_BUILDER_ERRORS: {
|
|
14
14
|
readonly DUPLICATE_INTEGRATION_NAMES: "Integrations names must be unique";
|
|
@@ -16,7 +16,7 @@ export declare const CONFIG_BUILDER_ERRORS: {
|
|
|
16
16
|
readonly MIXED_JSX_ENGINES: "Both kitajs and react integrations are enabled. Use per-file JSX import source/pragma consistently (e.g. `/** @jsxImportSource react */` for React files and `/** @jsxImportSource @kitajs/html */` for Kita files).";
|
|
17
17
|
readonly duplicateProcessorName: (name: string) => string;
|
|
18
18
|
readonly duplicateLoaderName: (name: string) => string;
|
|
19
|
-
readonly duplicateSemanticTemplate: (kind: "html" | "404", matches: string[]) => string;
|
|
19
|
+
readonly duplicateSemanticTemplate: (kind: "html" | "404" | "500", matches: string[]) => string;
|
|
20
20
|
readonly incompatibleRuntimeCapability: (kind: "integration" | "processor", name: string, runtime: RuntimeKind, reason: string) => string;
|
|
21
21
|
readonly unsupportedRuntimeVersion: (kind: "integration" | "processor", name: string, runtime: RuntimeKind, current: string, min: string) => string;
|
|
22
22
|
readonly invalidRuntimeVersion: (kind: "integration" | "processor", name: string, version: string) => string;
|
|
@@ -70,12 +70,7 @@ export declare class ConfigBuilder {
|
|
|
70
70
|
*
|
|
71
71
|
* - `'rolldown'` (default): Ecopages runs builds through
|
|
72
72
|
* {@link RolldownBuildAdapter}, creating a new `rolldown()` instance
|
|
73
|
-
* per build.
|
|
74
|
-
* - `'rolldown-dev'`: Ecopages runs builds through
|
|
75
|
-
* {@link RolldownDevBuildAdapter}, which wraps Rolldown's experimental
|
|
76
|
-
* `DevEngine` and reuses the cached module graph, resolver, and
|
|
77
|
-
* transform cache across rebuilds. Best for HMR and watch mode where
|
|
78
|
-
* the same entrypoints are rebuilt repeatedly.
|
|
73
|
+
* per build.
|
|
79
74
|
* - `'vite-host'`: a host runtime owns the build. Ecopages exposes a
|
|
80
75
|
* {@link ViteHostBuildAdapter} boundary marker that throws on direct
|
|
81
76
|
* use. Select this only for host-driven compatibility flows where
|
|
@@ -143,6 +138,24 @@ export declare class ConfigBuilder {
|
|
|
143
138
|
setRobotsTxt(robotsTxt: {
|
|
144
139
|
preferences: RobotsPreference;
|
|
145
140
|
}): this;
|
|
141
|
+
/**
|
|
142
|
+
* Sets automatic sitemap.xml generation during static export.
|
|
143
|
+
*
|
|
144
|
+
* @remarks
|
|
145
|
+
* Merged over `{ enabled: false, fileName: 'sitemap.xml', extraUrls: [], exclude: [] }`.
|
|
146
|
+
* Existing apps stay unchanged until `enabled: true` is set. Page-level
|
|
147
|
+
* `metadata.robots.index: false` and metadata resolution failures are handled
|
|
148
|
+
* during static generation (not by this config merge).
|
|
149
|
+
*/
|
|
150
|
+
setSitemap(sitemap: SitemapConfig): this;
|
|
151
|
+
/**
|
|
152
|
+
* Configures the in-browser development toolbar shown during watch mode.
|
|
153
|
+
*
|
|
154
|
+
* @remarks
|
|
155
|
+
* Requires `package` to point at a browser bootstrap module installed in the app.
|
|
156
|
+
* Prefer {@link defineDevTool} for config authoring.
|
|
157
|
+
*/
|
|
158
|
+
setDevToolbar(devToolbar: NonNullable<EcoPagesAppConfig['devToolbar']>): this;
|
|
146
159
|
/**
|
|
147
160
|
* Sets the integration plugins to use.
|
|
148
161
|
* These plugins provide additional functionality to the application.
|
|
@@ -185,6 +198,20 @@ export declare class ConfigBuilder {
|
|
|
185
198
|
* @returns The ConfigBuilder instance for method chaining
|
|
186
199
|
*/
|
|
187
200
|
setAdditionalWatchPaths(additionalWatchPaths: string[]): this;
|
|
201
|
+
/**
|
|
202
|
+
* Sets static paths to SSR-prewarm in development.
|
|
203
|
+
*
|
|
204
|
+
* @param devPrewarmPaths - Absolute URL pathnames such as `/` or `/docs`.
|
|
205
|
+
* @returns The ConfigBuilder instance for method chaining.
|
|
206
|
+
*/
|
|
207
|
+
setDevPrewarmPaths(devPrewarmPaths: string[]): this;
|
|
208
|
+
/**
|
|
209
|
+
* Sets static paths to SSR-prewarm before the development server reports ready.
|
|
210
|
+
*
|
|
211
|
+
* @param devPrewarmBeforeReadyPaths - Critical absolute URL pathnames such as `/`.
|
|
212
|
+
* @returns The ConfigBuilder instance for method chaining.
|
|
213
|
+
*/
|
|
214
|
+
setDevPrewarmBeforeReadyPaths(devPrewarmBeforeReadyPaths: string[]): this;
|
|
188
215
|
/**
|
|
189
216
|
* Sets the processors to use for the application.
|
|
190
217
|
* This replaces any existing processors.
|
|
@@ -250,7 +277,10 @@ export declare class ConfigBuilder {
|
|
|
250
277
|
private compareVersions;
|
|
251
278
|
/**
|
|
252
279
|
* Initializes default loaders that are required for EcoPages to function.
|
|
253
|
-
*
|
|
280
|
+
*
|
|
281
|
+
* @remarks
|
|
282
|
+
* Component identity attribution is a source transform so browser, HMR, and
|
|
283
|
+
* server module paths share one component-identity attribution mechanism.
|
|
254
284
|
*/
|
|
255
285
|
private initializeDefaultLoaders;
|
|
256
286
|
private reviewBaseUrl;
|