@ecopages/core 0.2.0-beta.3 → 0.2.0-beta.31
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 +38 -9
- package/package.json +241 -30
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +123 -6
- package/src/adapters/abstract/application-adapter.js +151 -1
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +149 -0
- package/src/adapters/abstract/server-adapter.d.ts +16 -2
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
- package/src/adapters/abstract/ws-pattern-matcher.js +30 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +96 -0
- package/src/adapters/bun/client-bridge.d.ts +1 -0
- package/src/adapters/bun/client-bridge.js +3 -0
- package/src/adapters/bun/create-app.d.ts +9 -6
- package/src/adapters/bun/create-app.js +76 -45
- package/src/adapters/bun/hmr-manager.d.ts +1 -1
- package/src/adapters/bun/hmr-manager.js +1 -1
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +25 -2
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +1 -1
- package/src/adapters/bun/server-adapter.d.ts +92 -41
- package/src/adapters/bun/server-adapter.js +256 -117
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- package/src/adapters/bun/static-preview-host.js +25 -20
- package/src/adapters/create-app.d.ts +13 -11
- package/src/adapters/create-app.js +2 -51
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +26 -4
- package/src/adapters/node/create-app.d.ts +8 -3
- package/src/adapters/node/create-app.js +61 -13
- package/src/adapters/node/node-client-bridge.d.ts +1 -0
- package/src/adapters/node/node-client-bridge.js +3 -0
- package/src/adapters/node/node-hmr-manager.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.js +1 -1
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +1 -1
- package/src/adapters/node/server-adapter-dependencies.js +4 -0
- package/src/adapters/node/server-adapter.d.ts +64 -23
- package/src/adapters/node/server-adapter.js +169 -142
- package/src/adapters/node/static-content-server.d.ts +1 -0
- package/src/adapters/node/static-content-server.js +10 -2
- package/src/adapters/node/static-preview-host.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +27 -12
- package/src/adapters/shared/{hmr-entrypoint-registrar.d.ts → hmr/hmr-entrypoint-registrar.d.ts} +31 -30
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +106 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/{hmr-html-response.js → hmr/hmr-html-response.js} +4 -1
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +101 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +432 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +129 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/{api-response.js → http/api-response.js} +6 -23
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +23 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +63 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/{explicit-static-route-matcher.js → http/explicit-static-route-matcher.js} +3 -38
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/{file-route-middleware-pipeline.js → http/file-route-middleware-pipeline.js} +10 -22
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/{fs-server-response-factory.js → http/fs-server-response-factory.js} +22 -2
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/{fs-server-response-matcher.js → http/fs-server-response-matcher.js} +109 -27
- 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/{application-adapter.js → runtime/application-adapter.js} +1 -1
- package/src/adapters/shared/runtime/copy-runtime-public-dir.d.ts +6 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +24 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +196 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/{render-context.js → runtime/render-context.js} +8 -17
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -3
- package/src/adapters/shared/{runtime-app-bootstrap.js → runtime/runtime-app-bootstrap.js} +4 -7
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +46 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +57 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +23 -49
- package/src/adapters/shared/runtime/server-adapter.js +226 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/{server-route-handler.js → runtime/server-route-handler.js} +5 -43
- 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 +191 -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 +100 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +55 -0
- package/src/build/README.md +140 -31
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +124 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
- package/src/build/{browser-runtime-plugin.js → browser/browser-runtime-plugin.js} +1 -1
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +41 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +6 -0
- package/src/build/build-adapter.d.ts +29 -334
- package/src/build/build-adapter.js +32 -133
- package/src/build/cache/build-input-fingerprint.d.ts +28 -0
- package/src/build/cache/build-input-fingerprint.js +31 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +6 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +63 -0
- package/src/build/cache/dev-browser-script-cache.d.ts +34 -0
- package/src/build/cache/dev-browser-script-cache.js +90 -0
- package/src/build/cache/pages-unified-graph-build.d.ts +31 -0
- package/src/build/cache/pages-unified-graph-build.js +198 -0
- package/src/build/cache/production-build-cache.d.ts +20 -0
- package/src/build/cache/production-build-cache.js +63 -0
- package/src/build/cache/server-entry-build-cache.d.ts +43 -0
- package/src/build/cache/server-entry-build-cache.js +165 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/{build-manifest.js → contracts/build-manifest.js} +2 -2
- package/src/build/contracts/build-types.js +0 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +23 -9
- package/src/build/{rolldown-adapter-helpers.js → rolldown/rolldown-adapter-helpers.js} +99 -13
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/{rolldown-build-adapter.js → rolldown/rolldown-build-adapter.js} +3 -3
- package/src/build/rolldown/rolldown-build-invocation-metrics.d.ts +12 -0
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +43 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
- package/src/build/{rolldown-plugin-bridge.js → rolldown/rolldown-plugin-bridge.js} +21 -6
- package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown/rolldown-source-transform-pass.js +61 -0
- package/src/build/rolldown/runtime-build-output-normalizer.d.ts +10 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +201 -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 +54 -0
- package/src/build/runtime/build-request-policy.d.ts +59 -0
- package/src/build/runtime/build-request-policy.js +46 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +65 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +34 -0
- package/src/build/runtime/parallel-build-executor.d.ts +21 -0
- package/src/build/runtime/parallel-build-executor.js +52 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +41 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +23 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +65 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +12 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +73 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +25 -0
- package/src/client/scroll.test.browser.js +37 -0
- package/src/client/view-transitions.d.ts +16 -0
- package/src/client/view-transitions.js +63 -0
- package/src/config/config-builder.d.ts +25 -10
- package/src/config/config-builder.js +53 -11
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +2 -1
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +15 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +6 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +15 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +7 -0
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +6 -0
- package/src/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +33 -0
- package/src/diagnostics/startup-trace.d.ts +72 -0
- package/src/diagnostics/startup-trace.js +253 -0
- package/src/eco/README.md +11 -0
- package/src/eco/eco-declared-component.d.ts +14 -0
- package/src/eco/eco-declared-component.js +16 -0
- package/src/eco/eco.browser.js +5 -6
- package/src/eco/eco.js +7 -8
- package/src/eco/eco.types.d.ts +14 -3
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -1
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +59 -0
- package/src/env.d.ts +2 -0
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +7 -1
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/hmr/client/hmr-runtime.js +7 -4
- package/src/hmr/hmr-entrypoint-output.d.ts +49 -0
- package/src/hmr/hmr-entrypoint-output.js +60 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +17 -0
- package/src/hmr/hmr-strategy.d.ts +15 -0
- package/src/hmr/hmr-strategy.js +19 -0
- package/src/hmr/strategies/js-hmr-strategy.d.ts +3 -5
- package/src/hmr/strategies/js-hmr-strategy.js +72 -19
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +29 -0
- package/src/index.d.ts +2 -1
- package/src/index.js +28 -2
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -6
- package/src/integrations/ghtml/ghtml-renderer.js +2 -51
- package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
- package/src/integrations/ghtml/ghtml.plugin.js +7 -14
- package/src/plugins/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +38 -51
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +19 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +1 -1
- package/src/plugins/eco-component-meta-plugin.js +5 -8
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +4 -6
- package/src/plugins/integration-plugin.d.ts +43 -14
- package/src/plugins/integration-plugin.js +18 -5
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +26 -0
- package/src/plugins/processor.d.ts +61 -12
- package/src/plugins/processor.js +24 -5
- package/src/plugins/source-transform.d.ts +32 -1
- package/src/plugins/source-transform.js +23 -1
- package/src/plugins/tsconfig-import-resolver.d.ts +18 -0
- package/src/plugins/tsconfig-import-resolver.js +159 -0
- package/src/route-renderer/GRAPH.md +26 -32
- package/src/route-renderer/README.md +38 -31
- 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 +148 -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 +31 -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/{component-render-context.js → foreign-child/component-render-context.js} +4 -2
- 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/{render-output.utils.js → foreign-child/foreign-child-output.utils.js} +35 -26
- 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-subtree-execution.service.js → foreign-child/foreign-subtree-execution.service.js} +170 -37
- 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 +35 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +24 -143
- package/src/route-renderer/orchestration/integration-renderer.js +163 -402
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +177 -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 +143 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +96 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +7 -2
- package/src/route-renderer/orchestration/{ownership-validation.service.js → ownership-graph/ownership-validation.service.js} +30 -3
- 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 +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.d.ts +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +7 -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 +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +106 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +436 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +31 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +229 -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/route-pipeline/integration-route-render-adapter.d.ts +31 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +25 -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 +27 -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 +36 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +20 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +24 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +25 -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 +33 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +13 -53
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +162 -0
- package/src/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
- package/src/route-renderer/orchestration/string-markup-renderer.js +55 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +5 -2
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +6 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +7 -2
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +4 -0
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +10 -0
- package/src/router/client/link-intent.test.browser.js +12 -1
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +101 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +92 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +12 -2
- 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 +3 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +6 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +44 -5
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- 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 +1 -0
- 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 +78 -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 +28 -13
- 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 +7 -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 +38 -12
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +2 -0
- 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 +17 -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 +18 -0
- 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 +2 -15
- 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 +73 -68
- 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 +18 -15
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +17 -3
- 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 +2 -31
- 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 +2 -30
- 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 +43 -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 +17 -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 +5 -10
- package/src/services/assets/browser-bundle.service.d.ts +28 -30
- package/src/services/assets/browser-bundle.service.js +28 -19
- package/src/services/html/html-transformer.service.d.ts +1 -1
- package/src/services/html/html-transformer.service.js +5 -5
- package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
- package/src/services/invalidation/development-invalidation.service.js +64 -11
- package/src/services/module-loading/README.md +49 -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 +3 -21
- package/src/services/module-loading/page-module-import.service.d.ts +6 -2
- package/src/services/module-loading/page-module-import.service.js +110 -47
- 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 +37 -0
- package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
- package/src/services/module-loading/route-module-build-cache.js +38 -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 +207 -0
- package/src/services/module-loading/route-module-build-manifest.d.ts +54 -0
- package/src/services/module-loading/route-module-build-manifest.js +85 -0
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
- package/src/services/module-loading/route-module-dependency-hasher.js +122 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -1
- package/src/services/module-loading/server-module-transpiler.service.js +1 -1
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +12 -13
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- 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 +28 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +22 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +31 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +33 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +10 -0
- package/src/static-site-generator/static-build-invalidation.js +59 -0
- package/src/static-site-generator/static-export-context.d.ts +30 -0
- package/src/static-site-generator/static-export-context.js +0 -0
- package/src/static-site-generator/static-site-generator.d.ts +43 -25
- package/src/static-site-generator/static-site-generator.js +381 -106
- package/src/types/internal-types.d.ts +39 -13
- package/src/types/public-types.d.ts +289 -52
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +26 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +5 -1
- package/src/utils/parse-cli-args.d.ts +2 -0
- package/src/utils/parse-cli-args.js +6 -0
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +27 -0
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +5 -6
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +48 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +16 -0
- package/src/watchers/project-watcher.d.ts +29 -6
- package/src/watchers/project-watcher.js +146 -34
- package/src/watchers/project-watcher.test-helpers.js +5 -5
- 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/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/server-adapter.js +0 -436
- 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/build/build-manifest.d.ts +0 -33
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -166
- 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/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -43
- 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/ownership-planning.service.d.ts +0 -24
- package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
- 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/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/{explicit-static-render-preparation.js → http/explicit-static-render-preparation.js} +0 -0
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/adapters/shared/{runtime-host.js → runtime/runtime-host.js} +0 -0
- /package/src/adapters/shared/{static-preview-host.js → 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-manifest.js → browser/browser-runtime-manifest.js} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.js → browser/browser-runtime-plugin-helpers.js} +0 -0
- /package/src/build/{build-types.js → contracts/build-contracts.js} +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
- /package/src/build/{server-side-css-shim-plugin.js → rolldown/server-side-css-shim-plugin.js} +0 -0
- /package/src/build/{serialized-build-executor.js → runtime/serialized-build-executor.js} +0 -0
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → client/navigation-scripts/navigation-scripts.test.browser.d.ts} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → client/scroll.test.browser.d.ts} +0 -0
- /package/src/route-renderer/orchestration/{processed-asset-dedupe.js → page-browser-graph/processed-asset-dedupe.js} +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const VIEW_TRANSITION_ATTR = "data-view-transition";
|
|
2
|
+
const VIEW_TRANSITION_ANIMATE_ATTR = "data-view-transition-animate";
|
|
3
|
+
const VIEW_TRANSITION_DURATION_ATTR = "data-view-transition-duration";
|
|
4
|
+
const DYNAMIC_STYLES_ID = "eco-vt-dynamic-styles";
|
|
5
|
+
function applyViewTransitionNames() {
|
|
6
|
+
const elements = document.querySelectorAll(`[${VIEW_TRANSITION_ATTR}]`);
|
|
7
|
+
const morphNames = [];
|
|
8
|
+
const customDurations = [];
|
|
9
|
+
elements.forEach((el) => {
|
|
10
|
+
const name = el.getAttribute(VIEW_TRANSITION_ATTR);
|
|
11
|
+
if (!name) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
el.style.viewTransitionName = name;
|
|
15
|
+
const animate = el.getAttribute(VIEW_TRANSITION_ANIMATE_ATTR);
|
|
16
|
+
if (animate !== "fade") {
|
|
17
|
+
morphNames.push(name);
|
|
18
|
+
}
|
|
19
|
+
const duration = el.getAttribute(VIEW_TRANSITION_DURATION_ATTR);
|
|
20
|
+
if (duration) {
|
|
21
|
+
customDurations.push({ name, duration });
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
if (morphNames.length > 0 || customDurations.length > 0) {
|
|
25
|
+
injectDynamicStyles(morphNames, customDurations);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function clearViewTransitionNames() {
|
|
29
|
+
const elements = document.querySelectorAll(`[${VIEW_TRANSITION_ATTR}]`);
|
|
30
|
+
elements.forEach((el) => {
|
|
31
|
+
el.style.viewTransitionName = "";
|
|
32
|
+
});
|
|
33
|
+
const styleEl = document.getElementById(DYNAMIC_STYLES_ID);
|
|
34
|
+
if (styleEl) {
|
|
35
|
+
styleEl.textContent = "";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function injectDynamicStyles(morphNames, customDurations) {
|
|
39
|
+
let styleEl = document.getElementById(DYNAMIC_STYLES_ID);
|
|
40
|
+
if (!styleEl) {
|
|
41
|
+
styleEl = document.createElement("style");
|
|
42
|
+
styleEl.id = DYNAMIC_STYLES_ID;
|
|
43
|
+
styleEl.setAttribute("data-eco-persist", "");
|
|
44
|
+
document.head.append(styleEl);
|
|
45
|
+
}
|
|
46
|
+
const morphCss = morphNames.map(
|
|
47
|
+
(name) => `
|
|
48
|
+
::view-transition-old(${name}) { display: none !important; }
|
|
49
|
+
::view-transition-new(${name}) { animation: none !important; opacity: 1 !important; }
|
|
50
|
+
`
|
|
51
|
+
).join("\n");
|
|
52
|
+
const durationCss = customDurations.map(
|
|
53
|
+
({ name, duration }) => `
|
|
54
|
+
::view-transition-group(${name}) { animation-duration: ${duration} !important; }
|
|
55
|
+
`
|
|
56
|
+
).join("\n");
|
|
57
|
+
styleEl.textContent = `${morphCss}
|
|
58
|
+
${durationCss}`;
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
applyViewTransitionNames,
|
|
62
|
+
clearViewTransitionNames
|
|
63
|
+
};
|
|
@@ -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,16 @@ 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;
|
|
146
151
|
/**
|
|
147
152
|
* Sets the integration plugins to use.
|
|
148
153
|
* These plugins provide additional functionality to the application.
|
|
@@ -250,7 +255,17 @@ export declare class ConfigBuilder {
|
|
|
250
255
|
private compareVersions;
|
|
251
256
|
/**
|
|
252
257
|
* Initializes default loaders that are required for EcoPages to function.
|
|
253
|
-
*
|
|
258
|
+
*
|
|
259
|
+
* @remarks
|
|
260
|
+
* `eco-component-meta` is registered twice on purpose:
|
|
261
|
+
*
|
|
262
|
+
* - `sourceTransforms` is the canonical browser/HMR path. The Rolldown bridge
|
|
263
|
+
* runs these after first-wins `onLoad` plugins rewrite module source.
|
|
264
|
+
* - `loaders` keeps the same transform available to server-oriented builds
|
|
265
|
+
* that still use competing `onLoad` handlers directly.
|
|
266
|
+
*
|
|
267
|
+
* Browser builds exclude the loader copy in {@link getAppBrowserBuildPlugins}
|
|
268
|
+
* when the transform name is already present in `sourceTransforms`.
|
|
254
269
|
*/
|
|
255
270
|
private initializeDefaultLoaders;
|
|
256
271
|
private reviewBaseUrl;
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
collectConfiguredAppBuildManifestContributions,
|
|
10
10
|
createBuildAdapter,
|
|
11
11
|
setAppBuildAdapter,
|
|
12
|
-
setAppBuildExecutor,
|
|
13
12
|
updateAppBuildManifest
|
|
14
13
|
} from "../build/build-adapter.js";
|
|
15
14
|
import { GHTML_PLUGIN_NAME } from "../integrations/ghtml/ghtml.constants.js";
|
|
@@ -54,6 +53,12 @@ class ConfigBuilder {
|
|
|
54
53
|
"*": []
|
|
55
54
|
}
|
|
56
55
|
},
|
|
56
|
+
sitemap: {
|
|
57
|
+
enabled: false,
|
|
58
|
+
fileName: "sitemap.xml",
|
|
59
|
+
extraUrls: [],
|
|
60
|
+
exclude: []
|
|
61
|
+
},
|
|
57
62
|
integrations: [],
|
|
58
63
|
integrationsDependencies: [],
|
|
59
64
|
distDir: DEFAULT_ECOPAGES_DIST_DIR,
|
|
@@ -75,7 +80,8 @@ class ConfigBuilder {
|
|
|
75
80
|
publicDir: "",
|
|
76
81
|
srcDir: "",
|
|
77
82
|
htmlTemplatePath: "",
|
|
78
|
-
error404TemplatePath: ""
|
|
83
|
+
error404TemplatePath: "",
|
|
84
|
+
error500TemplatePath: ""
|
|
79
85
|
},
|
|
80
86
|
processors: /* @__PURE__ */ new Map(),
|
|
81
87
|
loaders: /* @__PURE__ */ new Map(),
|
|
@@ -112,12 +118,7 @@ class ConfigBuilder {
|
|
|
112
118
|
*
|
|
113
119
|
* - `'rolldown'` (default): Ecopages runs builds through
|
|
114
120
|
* {@link RolldownBuildAdapter}, creating a new `rolldown()` instance
|
|
115
|
-
* per build.
|
|
116
|
-
* - `'rolldown-dev'`: Ecopages runs builds through
|
|
117
|
-
* {@link RolldownDevBuildAdapter}, which wraps Rolldown's experimental
|
|
118
|
-
* `DevEngine` and reuses the cached module graph, resolver, and
|
|
119
|
-
* transform cache across rebuilds. Best for HMR and watch mode where
|
|
120
|
-
* the same entrypoints are rebuilt repeatedly.
|
|
121
|
+
* per build.
|
|
121
122
|
* - `'vite-host'`: a host runtime owns the build. Ecopages exposes a
|
|
122
123
|
* {@link ViteHostBuildAdapter} boundary marker that throws on direct
|
|
123
124
|
* use. Select this only for host-driven compatibility flows where
|
|
@@ -207,6 +208,31 @@ class ConfigBuilder {
|
|
|
207
208
|
this.config.robotsTxt = robotsTxt;
|
|
208
209
|
return this;
|
|
209
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Sets automatic sitemap.xml generation during static export.
|
|
213
|
+
*
|
|
214
|
+
* @remarks
|
|
215
|
+
* Merged over `{ enabled: false, fileName: 'sitemap.xml', extraUrls: [], exclude: [] }`.
|
|
216
|
+
* Existing apps stay unchanged until `enabled: true` is set. Page-level
|
|
217
|
+
* `metadata.robots.index: false` and metadata resolution failures are handled
|
|
218
|
+
* during static generation (not by this config merge).
|
|
219
|
+
*/
|
|
220
|
+
setSitemap(sitemap) {
|
|
221
|
+
const defaults = {
|
|
222
|
+
enabled: false,
|
|
223
|
+
fileName: "sitemap.xml",
|
|
224
|
+
extraUrls: [],
|
|
225
|
+
exclude: []
|
|
226
|
+
};
|
|
227
|
+
this.config.sitemap = {
|
|
228
|
+
...defaults,
|
|
229
|
+
...this.config.sitemap,
|
|
230
|
+
...sitemap,
|
|
231
|
+
extraUrls: sitemap.extraUrls ?? this.config.sitemap.extraUrls ?? defaults.extraUrls,
|
|
232
|
+
exclude: sitemap.exclude ?? this.config.sitemap.exclude ?? defaults.exclude
|
|
233
|
+
};
|
|
234
|
+
return this;
|
|
235
|
+
}
|
|
210
236
|
/**
|
|
211
237
|
* Sets the integration plugins to use.
|
|
212
238
|
* These plugins provide additional functionality to the application.
|
|
@@ -387,11 +413,18 @@ class ConfigBuilder {
|
|
|
387
413
|
error404TemplatePath: this.resolveSemanticTemplatePath({
|
|
388
414
|
dirPath: absolutePagesDir,
|
|
389
415
|
basename: "404"
|
|
416
|
+
}),
|
|
417
|
+
error500TemplatePath: this.resolveSemanticTemplatePath({
|
|
418
|
+
dirPath: absolutePagesDir,
|
|
419
|
+
basename: "500"
|
|
390
420
|
})
|
|
391
421
|
};
|
|
392
422
|
return this;
|
|
393
423
|
}
|
|
394
|
-
resolveSemanticTemplatePath({
|
|
424
|
+
resolveSemanticTemplatePath({
|
|
425
|
+
dirPath,
|
|
426
|
+
basename
|
|
427
|
+
}) {
|
|
395
428
|
const extensions = this.config.templatesExt.length > 0 ? this.config.templatesExt : [".ghtml.ts"];
|
|
396
429
|
const matches = extensions.map((extension) => path.join(dirPath, `${basename}${extension}`)).filter((candidate) => fileSystem.exists(candidate));
|
|
397
430
|
invariant(matches.length <= 1, CONFIG_BUILDER_ERRORS.duplicateSemanticTemplate(basename, matches));
|
|
@@ -547,7 +580,17 @@ class ConfigBuilder {
|
|
|
547
580
|
}
|
|
548
581
|
/**
|
|
549
582
|
* Initializes default loaders that are required for EcoPages to function.
|
|
550
|
-
*
|
|
583
|
+
*
|
|
584
|
+
* @remarks
|
|
585
|
+
* `eco-component-meta` is registered twice on purpose:
|
|
586
|
+
*
|
|
587
|
+
* - `sourceTransforms` is the canonical browser/HMR path. The Rolldown bridge
|
|
588
|
+
* runs these after first-wins `onLoad` plugins rewrite module source.
|
|
589
|
+
* - `loaders` keeps the same transform available to server-oriented builds
|
|
590
|
+
* that still use competing `onLoad` handlers directly.
|
|
591
|
+
*
|
|
592
|
+
* Browser builds exclude the loader copy in {@link getAppBrowserBuildPlugins}
|
|
593
|
+
* when the transform name is already present in `sourceTransforms`.
|
|
551
594
|
*/
|
|
552
595
|
async initializeDefaultLoaders() {
|
|
553
596
|
const componentMetaTransform = createEcoComponentMetaTransform({ config: this.config });
|
|
@@ -593,7 +636,6 @@ class ConfigBuilder {
|
|
|
593
636
|
updateAppBuildManifest(this.config, await collectConfiguredAppBuildManifestContributions(this.config));
|
|
594
637
|
setAppServerInvalidationState(this.config, new CounterServerInvalidationState());
|
|
595
638
|
setAppEntrypointDependencyGraph(this.config, new NoopEntrypointDependencyGraph());
|
|
596
|
-
setAppBuildExecutor(this.config, buildAdapter);
|
|
597
639
|
return this.config;
|
|
598
640
|
}
|
|
599
641
|
}
|
package/src/config/constants.js
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/public-types.js';
|
|
2
|
+
import type { IClientBridge } from '../types/public-types.js';
|
|
3
|
+
export declare function setAppDevClientBridge(appConfig: EcoPagesAppConfig, bridge: IClientBridge): void;
|
|
4
|
+
export declare function getAppDevClientBridge(appConfig: EcoPagesAppConfig): IClientBridge | undefined;
|
|
5
|
+
export declare function clearAppDevClientBridge(appConfig: EcoPagesAppConfig): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const appDevClientBridges = /* @__PURE__ */ new WeakMap();
|
|
2
|
+
function setAppDevClientBridge(appConfig, bridge) {
|
|
3
|
+
appDevClientBridges.set(appConfig, bridge);
|
|
4
|
+
}
|
|
5
|
+
function getAppDevClientBridge(appConfig) {
|
|
6
|
+
return appDevClientBridges.get(appConfig);
|
|
7
|
+
}
|
|
8
|
+
function clearAppDevClientBridge(appConfig) {
|
|
9
|
+
appDevClientBridges.delete(appConfig);
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
clearAppDevClientBridge,
|
|
13
|
+
getAppDevClientBridge,
|
|
14
|
+
setAppDevClientBridge
|
|
15
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ApplicationRuntimeOptions } from '../adapters/abstract/application-adapter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns whether the host dev server owns all browser dev-client bootstrap.
|
|
4
|
+
*
|
|
5
|
+
* When true, core must not inject the HMR runtime or signal full-page reloads.
|
|
6
|
+
*/
|
|
7
|
+
export declare function hostOwnsDevClient(runtime?: ApplicationRuntimeOptions): boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-app registry for the shared HMR manager used by host-owned dev clients.
|
|
3
|
+
*/
|
|
4
|
+
import type { EcoPagesAppConfig } from '../types/public-types.js';
|
|
5
|
+
import type { IHmrManager } from '../types/public-types.js';
|
|
6
|
+
export declare function setAppHmrManager(appConfig: EcoPagesAppConfig, hmrManager: IHmrManager): void;
|
|
7
|
+
export declare function getAppHmrManager(appConfig: EcoPagesAppConfig): IHmrManager | undefined;
|
|
8
|
+
export declare function clearAppHmrManager(appConfig: EcoPagesAppConfig): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const appHmrManagers = /* @__PURE__ */ new WeakMap();
|
|
2
|
+
function setAppHmrManager(appConfig, hmrManager) {
|
|
3
|
+
appHmrManagers.set(appConfig, hmrManager);
|
|
4
|
+
}
|
|
5
|
+
function getAppHmrManager(appConfig) {
|
|
6
|
+
return appHmrManagers.get(appConfig);
|
|
7
|
+
}
|
|
8
|
+
function clearAppHmrManager(appConfig) {
|
|
9
|
+
appHmrManagers.delete(appConfig);
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
clearAppHmrManager,
|
|
13
|
+
getAppHmrManager,
|
|
14
|
+
setAppHmrManager
|
|
15
|
+
};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { EcoPagesAppConfig } from '../types/public-types.js';
|
|
2
2
|
import { type DevelopmentInvalidationPlan } from '../services/invalidation/development-invalidation.service.js';
|
|
3
|
+
import type { ClientBridgeEvent } from '../types/public-types.js';
|
|
3
4
|
export type HostRuntimeModuleLoader = (id: string) => Promise<unknown>;
|
|
4
5
|
export interface DevelopmentHostRuntime {
|
|
5
6
|
registerHostModuleLoader(loader: HostRuntimeModuleLoader): void;
|
|
6
7
|
planFileChange(filePath: string): DevelopmentInvalidationPlan;
|
|
7
8
|
invalidateServerModules(changedFiles?: string[]): void;
|
|
8
9
|
resetRuntimeState(changedFiles?: string[]): void;
|
|
10
|
+
broadcastClientEvent(event: ClientBridgeEvent): void;
|
|
11
|
+
isServerRenderedTemplatePlan(plan: DevelopmentInvalidationPlan): boolean;
|
|
9
12
|
}
|
|
10
13
|
export declare function createDevelopmentHostRuntime(appConfig: EcoPagesAppConfig): DevelopmentHostRuntime;
|
package/src/dev/host-runtime.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DevelopmentInvalidationService
|
|
3
3
|
} from "../services/invalidation/development-invalidation.service.js";
|
|
4
|
+
import { getAppDevClientBridge } from "./client-bridge-registry.js";
|
|
4
5
|
import { setHostModuleLoader } from "../services/module-loading/host-module-loader-registry.js";
|
|
5
6
|
function createDevelopmentHostRuntime(appConfig) {
|
|
6
7
|
const invalidationService = new DevelopmentInvalidationService(appConfig);
|
|
@@ -16,6 +17,12 @@ function createDevelopmentHostRuntime(appConfig) {
|
|
|
16
17
|
},
|
|
17
18
|
resetRuntimeState(changedFiles) {
|
|
18
19
|
invalidationService.resetRuntimeState(changedFiles);
|
|
20
|
+
},
|
|
21
|
+
broadcastClientEvent(event) {
|
|
22
|
+
getAppDevClientBridge(appConfig)?.broadcast(event);
|
|
23
|
+
},
|
|
24
|
+
isServerRenderedTemplatePlan(plan) {
|
|
25
|
+
return plan.category === "include-source" || plan.category === "explicit-server-view";
|
|
19
26
|
}
|
|
20
27
|
};
|
|
21
28
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BuildResult } from '../build/build-adapter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Per-request browser build dedupe cache.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* `DedupingBuildExecutor` only coalesces concurrent identical builds. Asset
|
|
7
|
+
* processing can call the same logical bundle several times in one request
|
|
8
|
+
* (page graph, HMR, content scripts) after the first build settles. This cache
|
|
9
|
+
* reuses the settled result until the request scope ends.
|
|
10
|
+
*/
|
|
11
|
+
declare class RequestBuildDedupe {
|
|
12
|
+
private readonly storage;
|
|
13
|
+
run<T>(fn: () => Promise<T>): Promise<T>;
|
|
14
|
+
dedupeBuild(key: string, build: () => Promise<BuildResult>): Promise<BuildResult>;
|
|
15
|
+
getCachedCountForTests(): number;
|
|
16
|
+
}
|
|
17
|
+
export declare const requestBuildDedupe: RequestBuildDedupe;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
class RequestBuildDedupe {
|
|
3
|
+
storage = new AsyncLocalStorage();
|
|
4
|
+
run(fn) {
|
|
5
|
+
if (this.storage.getStore()) {
|
|
6
|
+
return fn();
|
|
7
|
+
}
|
|
8
|
+
return this.storage.run(/* @__PURE__ */ new Map(), fn);
|
|
9
|
+
}
|
|
10
|
+
dedupeBuild(key, build) {
|
|
11
|
+
const store = this.storage.getStore();
|
|
12
|
+
if (!store) {
|
|
13
|
+
return build();
|
|
14
|
+
}
|
|
15
|
+
const existing = store.get(key);
|
|
16
|
+
if (existing) {
|
|
17
|
+
return existing;
|
|
18
|
+
}
|
|
19
|
+
const buildPromise = build().catch((error) => {
|
|
20
|
+
store.delete(key);
|
|
21
|
+
throw error;
|
|
22
|
+
});
|
|
23
|
+
store.set(key, buildPromise);
|
|
24
|
+
return buildPromise;
|
|
25
|
+
}
|
|
26
|
+
getCachedCountForTests() {
|
|
27
|
+
return this.storage.getStore()?.size ?? 0;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const requestBuildDedupe = new RequestBuildDedupe();
|
|
31
|
+
export {
|
|
32
|
+
requestBuildDedupe
|
|
33
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export type StartupTracePhase = 'config-ready' | 'setupAppRuntimePlugins' | 'route-registry' | 'server-listen' | 'first-byte' | 'first-page-browser-graph' | 'first-request-ssr' | 'client-transfer' | 'client-hydration';
|
|
2
|
+
type PhaseRecord = {
|
|
3
|
+
durationMs: number;
|
|
4
|
+
wallMs: number;
|
|
5
|
+
};
|
|
6
|
+
export type StartupTraceReport = {
|
|
7
|
+
generatedAt: string;
|
|
8
|
+
runtime: string;
|
|
9
|
+
platform: string;
|
|
10
|
+
phases: Partial<Record<StartupTracePhase, PhaseRecord>>;
|
|
11
|
+
firstRequest?: {
|
|
12
|
+
path: string;
|
|
13
|
+
bundleCount: number;
|
|
14
|
+
clientBundleBytes: number;
|
|
15
|
+
graphBuildCount: number;
|
|
16
|
+
wallMs: number;
|
|
17
|
+
};
|
|
18
|
+
client?: {
|
|
19
|
+
requestCount: number;
|
|
20
|
+
transferredBytes: number;
|
|
21
|
+
hmrConnected: boolean;
|
|
22
|
+
hydrationReadyMs: number | null;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
declare class StartupTrace {
|
|
26
|
+
private readonly phaseNesting;
|
|
27
|
+
private readonly phases;
|
|
28
|
+
private firstRequestPending;
|
|
29
|
+
private firstRequestPath;
|
|
30
|
+
private firstRequestBundleCount;
|
|
31
|
+
private firstRequestClientBytes;
|
|
32
|
+
private firstRequestGraphBuildCount;
|
|
33
|
+
private summaryEmitted;
|
|
34
|
+
private firstPageBrowserGraphEmitted;
|
|
35
|
+
private clientRequestCount;
|
|
36
|
+
private clientTransferredBytes;
|
|
37
|
+
private hmrConnected;
|
|
38
|
+
private hydrationReadyMs;
|
|
39
|
+
isEnabled(): boolean;
|
|
40
|
+
markPhaseStart(phase: StartupTracePhase): void;
|
|
41
|
+
markPhaseEnd(phase: StartupTracePhase): void;
|
|
42
|
+
markConfigReady(): void;
|
|
43
|
+
markServerListening(): void;
|
|
44
|
+
beginServerListen(): void;
|
|
45
|
+
markFirstByte(): void;
|
|
46
|
+
beginFirstByte(): void;
|
|
47
|
+
markFirstPageBrowserGraphReady(graphBuildCount?: number): void;
|
|
48
|
+
recordBrowserBundle(outputs: Array<{
|
|
49
|
+
path: string;
|
|
50
|
+
}>): void;
|
|
51
|
+
recordClientTransfer(requestCount: number, transferredBytes: number): void;
|
|
52
|
+
beginClientTransfer(): void;
|
|
53
|
+
recordClientHydration(durationMs: number): void;
|
|
54
|
+
beginClientHydration(): void;
|
|
55
|
+
recordHmrConnected(): void;
|
|
56
|
+
traceFirstRequest<T>(request: Request, handler: () => Promise<T>): Promise<T>;
|
|
57
|
+
private emitFirstRequestSummary;
|
|
58
|
+
private writeJsonReport;
|
|
59
|
+
createReport(): StartupTraceReport;
|
|
60
|
+
/** Resets mutable trace state for unit tests. */
|
|
61
|
+
resetForTests(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Resets only the first-request bundle counters.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* Used by tests that need to re-measure first-request browser bundle work
|
|
67
|
+
* without clearing earlier startup phase records.
|
|
68
|
+
*/
|
|
69
|
+
resetFirstRequestCounters(): void;
|
|
70
|
+
}
|
|
71
|
+
export declare const startupTrace: StartupTrace;
|
|
72
|
+
export {};
|