@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
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AbstractApplicationAdapter } from "./abstract/application-adapter.js";
|
|
2
|
-
import { SharedApplicationAdapter } from "./shared/application-adapter.js";
|
|
3
2
|
import { createApp as createBunApp } from "./bun/create-app.js";
|
|
4
3
|
import { createNodeApp } from "./node/create-app.js";
|
|
5
4
|
async function createRuntimeApp(options) {
|
|
5
|
+
const adapter = options.adapter ?? "auto";
|
|
6
6
|
const bun = globalThis.Bun;
|
|
7
|
-
if (bun) {
|
|
7
|
+
if (adapter === "bun" || adapter === "auto" && bun) {
|
|
8
8
|
return await createBunApp(options);
|
|
9
9
|
}
|
|
10
10
|
return await createNodeApp(options);
|
|
@@ -12,55 +12,6 @@ async function createRuntimeApp(options) {
|
|
|
12
12
|
async function createApp(options) {
|
|
13
13
|
return createRuntimeApp(options);
|
|
14
14
|
}
|
|
15
|
-
class EcopagesApp extends SharedApplicationAdapter {
|
|
16
|
-
appOptions;
|
|
17
|
-
runtimeApp = null;
|
|
18
|
-
runtimeAppPromise = null;
|
|
19
|
-
constructor(options) {
|
|
20
|
-
super(options);
|
|
21
|
-
this.appOptions = options;
|
|
22
|
-
}
|
|
23
|
-
async getRuntimeApp() {
|
|
24
|
-
if (this.runtimeApp) {
|
|
25
|
-
return this.runtimeApp;
|
|
26
|
-
}
|
|
27
|
-
if (!this.runtimeAppPromise) {
|
|
28
|
-
this.runtimeAppPromise = createRuntimeApp({
|
|
29
|
-
...this.appOptions,
|
|
30
|
-
clearOutput: false
|
|
31
|
-
}).then((app) => {
|
|
32
|
-
for (const handler of this.apiHandlers) {
|
|
33
|
-
app.add(handler);
|
|
34
|
-
}
|
|
35
|
-
for (const route of this.staticRoutes) {
|
|
36
|
-
app.static(route.path, route.loader);
|
|
37
|
-
}
|
|
38
|
-
if (this.errorHandler) {
|
|
39
|
-
app.onError(this.errorHandler);
|
|
40
|
-
}
|
|
41
|
-
this.runtimeApp = app;
|
|
42
|
-
return app;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return this.runtimeAppPromise;
|
|
46
|
-
}
|
|
47
|
-
async initializeServerAdapter() {
|
|
48
|
-
return this.getRuntimeApp();
|
|
49
|
-
}
|
|
50
|
-
async start() {
|
|
51
|
-
const runtimeApp = await this.getRuntimeApp();
|
|
52
|
-
return runtimeApp.start();
|
|
53
|
-
}
|
|
54
|
-
async fetch(request) {
|
|
55
|
-
const runtimeApp = await this.getRuntimeApp();
|
|
56
|
-
const candidate = runtimeApp;
|
|
57
|
-
if (!candidate.fetch) {
|
|
58
|
-
throw new Error("The selected runtime adapter does not expose fetch()");
|
|
59
|
-
}
|
|
60
|
-
return candidate.fetch(request);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
15
|
export {
|
|
64
|
-
EcopagesApp,
|
|
65
16
|
createApp
|
|
66
17
|
};
|
package/src/adapters/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { defineApiHandler, defineGroupHandler, type GroupHandler } from './shared/define-api-handler.js';
|
|
1
|
+
export { createApp } from './create-app.js';
|
|
2
|
+
export { defineApiHandler, defineGroupHandler, defineGet, definePost, definePut, defineDelete, definePatch, defineOptions, defineHead, json, html, redirect, type GroupHandler, } from './shared/http/define-api-handler.js';
|
package/src/adapters/index.js
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createApp } from "./create-app.js";
|
|
2
|
+
import {
|
|
3
|
+
defineApiHandler,
|
|
4
|
+
defineGroupHandler,
|
|
5
|
+
defineGet,
|
|
6
|
+
definePost,
|
|
7
|
+
definePut,
|
|
8
|
+
defineDelete,
|
|
9
|
+
definePatch,
|
|
10
|
+
defineOptions,
|
|
11
|
+
defineHead,
|
|
12
|
+
json,
|
|
13
|
+
html,
|
|
14
|
+
redirect
|
|
15
|
+
} from "./shared/http/define-api-handler.js";
|
|
3
16
|
export {
|
|
4
|
-
EcopagesApp,
|
|
5
17
|
createApp,
|
|
6
18
|
defineApiHandler,
|
|
7
|
-
|
|
19
|
+
defineDelete,
|
|
20
|
+
defineGet,
|
|
21
|
+
defineGroupHandler,
|
|
22
|
+
defineHead,
|
|
23
|
+
defineOptions,
|
|
24
|
+
definePatch,
|
|
25
|
+
definePost,
|
|
26
|
+
definePut,
|
|
27
|
+
html,
|
|
28
|
+
json,
|
|
29
|
+
redirect
|
|
8
30
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SharedApplicationAdapter } from '../shared/application-adapter.js';
|
|
2
|
-
import type { RuntimeHost } from '../shared/runtime-host.js';
|
|
1
|
+
import { SharedApplicationAdapter } from '../shared/runtime/application-adapter.js';
|
|
2
|
+
import type { RuntimeHost } from '../shared/runtime/runtime-host.js';
|
|
3
3
|
import type { EcopagesAppOptions } from '../create-app.js';
|
|
4
4
|
import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
|
|
5
5
|
import type { NodeServerInstance } from './server-adapter.js';
|
|
@@ -7,6 +7,7 @@ export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAp
|
|
|
7
7
|
serverAdapter: NodeServerAdapterResult | undefined;
|
|
8
8
|
private server;
|
|
9
9
|
private runtimeOrigin;
|
|
10
|
+
private stopped;
|
|
10
11
|
private readonly runtimeHost;
|
|
11
12
|
constructor(options: EcopagesAppOptions, dependencies: {
|
|
12
13
|
runtimeHost: RuntimeHost<NodeServerInstance, {
|
|
@@ -16,9 +17,13 @@ export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAp
|
|
|
16
17
|
});
|
|
17
18
|
protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
|
|
18
19
|
stop(force?: boolean): Promise<void>;
|
|
20
|
+
protected resolveAppRoutes(): Promise<import("../../index.browser.js").EcopagesRouteInfo[]>;
|
|
19
21
|
protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
|
|
20
|
-
|
|
22
|
+
protected bootServer(): Promise<NodeServerInstance | void>;
|
|
21
23
|
fetch(request: Request): Promise<Response>;
|
|
24
|
+
attachWebSocketUpgrades(httpServer: import('node:http').Server, options?: {
|
|
25
|
+
passthroughUnmatched?: boolean;
|
|
26
|
+
}): Promise<void>;
|
|
22
27
|
}
|
|
23
28
|
export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
24
29
|
export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
@@ -1,28 +1,44 @@
|
|
|
1
1
|
import { appLogger } from "../../global/app-logger.js";
|
|
2
|
-
import { SharedApplicationAdapter } from "../shared/application-adapter.js";
|
|
3
|
-
import { resolveRuntimeBinding } from "../shared/runtime-app-bootstrap.js";
|
|
2
|
+
import { SharedApplicationAdapter } from "../shared/runtime/application-adapter.js";
|
|
3
|
+
import { resolveRuntimeBinding, resolveStaticRuntimeMode } from "../shared/runtime/runtime-app-bootstrap.js";
|
|
4
4
|
import { createNodeServerAdapter } from "./server-adapter.js";
|
|
5
5
|
import { NodeHttpRequestBridge } from "./http-request-bridge.js";
|
|
6
6
|
import { NodeRuntimeHost } from "./runtime-host.js";
|
|
7
|
+
import { hostOwnsDevClient } from "../../dev/dev-client-ownership.js";
|
|
8
|
+
import { startupTrace } from "../../diagnostics/startup-trace.js";
|
|
9
|
+
import { resolveAppStartRoutes } from "../../utils/ecopages-route-info.js";
|
|
7
10
|
class NodeEcopagesApp extends SharedApplicationAdapter {
|
|
8
11
|
serverAdapter;
|
|
9
12
|
server = null;
|
|
10
13
|
runtimeOrigin = "";
|
|
14
|
+
stopped = false;
|
|
11
15
|
runtimeHost;
|
|
12
16
|
constructor(options, dependencies) {
|
|
13
|
-
super(options);
|
|
17
|
+
super(options, "Node");
|
|
14
18
|
this.runtimeHost = dependencies.runtimeHost;
|
|
15
19
|
}
|
|
16
20
|
createServerAdapter(params) {
|
|
17
21
|
return createNodeServerAdapter(params);
|
|
18
22
|
}
|
|
19
23
|
async stop(force = true) {
|
|
20
|
-
if (
|
|
24
|
+
if (this.stopped) {
|
|
21
25
|
return;
|
|
22
26
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
if (this.server) {
|
|
28
|
+
const activeServer = this.server;
|
|
29
|
+
this.server = null;
|
|
30
|
+
await this.runtimeHost.stop(activeServer, { force });
|
|
31
|
+
}
|
|
32
|
+
if (this.serverAdapter) {
|
|
33
|
+
await this.serverAdapter.dispose();
|
|
34
|
+
}
|
|
35
|
+
this.stopped = true;
|
|
36
|
+
}
|
|
37
|
+
async resolveAppRoutes() {
|
|
38
|
+
return resolveAppStartRoutes({
|
|
39
|
+
listStaticGenerationRoutes: this.serverAdapter?.listStaticGenerationRoutes,
|
|
40
|
+
runtimeOrigin: this.appConfig.baseUrl
|
|
41
|
+
});
|
|
26
42
|
}
|
|
27
43
|
async initializeServerAdapter() {
|
|
28
44
|
const binding = resolveRuntimeBinding({
|
|
@@ -36,29 +52,50 @@ class NodeEcopagesApp extends SharedApplicationAdapter {
|
|
|
36
52
|
apiHandlers: this.apiHandlers,
|
|
37
53
|
staticRoutes: this.staticRoutes,
|
|
38
54
|
errorHandler: this.errorHandler,
|
|
55
|
+
websocketHandlers: this.websocketHandlers.size > 0 ? this.websocketHandlers : void 0,
|
|
39
56
|
options: { watch: binding.watch },
|
|
40
|
-
serveOptions: binding.serveOptions
|
|
57
|
+
serveOptions: binding.serveOptions,
|
|
58
|
+
hostOwnsDevClient: hostOwnsDevClient(this.runtimeOptions),
|
|
59
|
+
deferRuntimeAssetSetup: resolveStaticRuntimeMode({
|
|
60
|
+
appConfig: this.appConfig,
|
|
61
|
+
cliArgs: this.cliArgs
|
|
62
|
+
}).canBuildWithoutRuntimeServer,
|
|
63
|
+
allowPortFallback: binding.allowPortFallback
|
|
41
64
|
});
|
|
42
65
|
}
|
|
43
|
-
async
|
|
66
|
+
async bootServer() {
|
|
67
|
+
if (this.stopped) {
|
|
68
|
+
this.serverAdapter = void 0;
|
|
69
|
+
this.stopped = false;
|
|
70
|
+
}
|
|
44
71
|
if (!this.serverAdapter) {
|
|
45
72
|
this.serverAdapter = await this.initializeServerAdapter();
|
|
46
73
|
}
|
|
47
74
|
if (this.server) {
|
|
48
75
|
return this.server;
|
|
49
76
|
}
|
|
50
|
-
const { build, preview } = this.cliArgs;
|
|
77
|
+
const { build, preview, force, serveOnly } = this.cliArgs;
|
|
78
|
+
if (preview && serveOnly) {
|
|
79
|
+
const previewOrigin = await this.serverAdapter.servePreviewOnly();
|
|
80
|
+
if (previewOrigin) {
|
|
81
|
+
await this.notifyListening(previewOrigin);
|
|
82
|
+
}
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
51
85
|
if (build || preview) {
|
|
52
86
|
appLogger.debugTime("Building static pages");
|
|
53
|
-
await this.serverAdapter.buildStatic({ preview });
|
|
54
|
-
await this.stop(true);
|
|
87
|
+
const previewOrigin = await this.serverAdapter.buildStatic({ preview, force });
|
|
55
88
|
appLogger.debugTimeEnd("Building static pages");
|
|
89
|
+
if (preview && previewOrigin) {
|
|
90
|
+
await this.notifyListening(previewOrigin);
|
|
91
|
+
}
|
|
56
92
|
if (build) {
|
|
57
93
|
process.exit(0);
|
|
58
94
|
}
|
|
59
95
|
return;
|
|
60
96
|
}
|
|
61
97
|
const serveOptions = this.serverAdapter.getServerOptions();
|
|
98
|
+
startupTrace.beginServerListen();
|
|
62
99
|
this.server = await this.runtimeHost.start({
|
|
63
100
|
serveOptions,
|
|
64
101
|
handleRequest: async (request) => await this.serverAdapter.handleRequest(request),
|
|
@@ -67,7 +104,7 @@ class NodeEcopagesApp extends SharedApplicationAdapter {
|
|
|
67
104
|
});
|
|
68
105
|
this.runtimeOrigin = this.runtimeHost.getOrigin(this.server, serveOptions);
|
|
69
106
|
await this.serverAdapter.completeInitialization(this.server);
|
|
70
|
-
|
|
107
|
+
await this.notifyListening(this.runtimeOrigin);
|
|
71
108
|
return this.server;
|
|
72
109
|
}
|
|
73
110
|
async fetch(request) {
|
|
@@ -76,6 +113,17 @@ class NodeEcopagesApp extends SharedApplicationAdapter {
|
|
|
76
113
|
}
|
|
77
114
|
return this.serverAdapter.handleRequest(request);
|
|
78
115
|
}
|
|
116
|
+
async attachWebSocketUpgrades(httpServer, options) {
|
|
117
|
+
if (!this.serverAdapter) {
|
|
118
|
+
this.serverAdapter = await this.initializeServerAdapter();
|
|
119
|
+
}
|
|
120
|
+
if (!this.server) {
|
|
121
|
+
this.server = httpServer;
|
|
122
|
+
await this.serverAdapter.completeInitialization(httpServer);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this.serverAdapter.attachUserWebSocketUpgrades(httpServer, options);
|
|
126
|
+
}
|
|
79
127
|
}
|
|
80
128
|
async function createNodeApp(options) {
|
|
81
129
|
return new NodeEcopagesApp(options, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EcoPagesAppConfig, IClientBridge } from '../../types/internal-types.js';
|
|
2
2
|
import { InMemoryEntrypointDependencyGraph, type EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
|
|
3
|
-
import { SharedHmrManager } from '../shared/shared-hmr-manager.js';
|
|
3
|
+
import { SharedHmrManager } from '../shared/hmr/shared-hmr-manager.js';
|
|
4
4
|
export interface NodeHmrManagerParams {
|
|
5
5
|
appConfig: EcoPagesAppConfig;
|
|
6
6
|
bridge: IClientBridge;
|
|
@@ -2,7 +2,7 @@ import { appLogger } from "../../global/app-logger.js";
|
|
|
2
2
|
import {
|
|
3
3
|
InMemoryEntrypointDependencyGraph
|
|
4
4
|
} from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
|
|
5
|
-
import { SharedHmrManager } from "../shared/shared-hmr-manager.js";
|
|
5
|
+
import { SharedHmrManager } from "../shared/hmr/shared-hmr-manager.js";
|
|
6
6
|
class NodeHmrManager extends SharedHmrManager {
|
|
7
7
|
/**
|
|
8
8
|
* Creates the Node HMR manager over the shared coordination pipeline.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createServer, type Server as NodeServerInstance } from 'node:http';
|
|
2
|
-
import type { RuntimeHost, RuntimeHostStartOptions } from '../shared/runtime-host.js';
|
|
2
|
+
import type { RuntimeHost, RuntimeHostStartOptions } from '../shared/runtime/runtime-host.js';
|
|
3
3
|
import { NodeHttpRequestBridge } from './http-request-bridge.js';
|
|
4
4
|
type NodeServerFactory = typeof createServer;
|
|
5
5
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
|
|
3
3
|
import { appLogger } from "../../global/app-logger.js";
|
|
4
|
-
import { resolveServeRuntimeOrigin } from "../shared/runtime-app-bootstrap.js";
|
|
4
|
+
import { resolveServeRuntimeOrigin } from "../shared/runtime/runtime-app-bootstrap.js";
|
|
5
5
|
import { isNodeClientAbortError, NodeHttpRequestBridge } from "./http-request-bridge.js";
|
|
6
6
|
class NodeRuntimeHost {
|
|
7
7
|
/**
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { WebSocketServer } from "ws";
|
|
2
|
+
import { setAppDevClientBridge } from "../../dev/client-bridge-registry.js";
|
|
3
|
+
import { setAppHmrManager } from "../../dev/hmr-manager-registry.js";
|
|
2
4
|
import { NodeClientBridge } from "./node-client-bridge.js";
|
|
3
5
|
import { NodeHmrManager } from "./node-hmr-manager.js";
|
|
4
6
|
class DefaultNodeServerDevRuntimeFactory {
|
|
@@ -6,6 +8,8 @@ class DefaultNodeServerDevRuntimeFactory {
|
|
|
6
8
|
const websocketServer = new WebSocketServer({ noServer: true });
|
|
7
9
|
const bridge = new NodeClientBridge();
|
|
8
10
|
const hmrManager = new NodeHmrManager({ appConfig: options.appConfig, bridge });
|
|
11
|
+
setAppDevClientBridge(options.appConfig, bridge);
|
|
12
|
+
setAppHmrManager(options.appConfig, hmrManager);
|
|
9
13
|
return {
|
|
10
14
|
websocketServer,
|
|
11
15
|
bridge,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type Server as NodeHttpServer } from 'node:http';
|
|
2
2
|
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
3
|
-
import type { ApiHandler, ErrorHandler, StaticRoute } from '../../types/public-types.js';
|
|
4
|
-
import { SharedServerAdapter } from '../shared/server-adapter.js';
|
|
3
|
+
import type { ApiHandler, ErrorHandler, StaticRoute, EcopagesWebSocketHandler } from '../../types/public-types.js';
|
|
4
|
+
import { SharedServerAdapter } from '../shared/runtime/server-adapter.js';
|
|
5
5
|
import type { ServerAdapterResult } from '../abstract/server-adapter.js';
|
|
6
6
|
import { NodeHttpRequestBridge } from './http-request-bridge.js';
|
|
7
|
-
import type { StaticPreviewHost } from '../shared/static-preview-host.js';
|
|
7
|
+
import type { StaticPreviewHost } from '../shared/runtime/static-preview-host.js';
|
|
8
8
|
import { type NodeServerDevRuntimeFactory } from './server-adapter-dependencies.js';
|
|
9
9
|
export type NodeServerInstance = NodeHttpServer;
|
|
10
10
|
export type NodeServeAdapterServerOptions = {
|
|
@@ -19,9 +19,14 @@ export interface NodeServerAdapterParams {
|
|
|
19
19
|
apiHandlers?: ApiHandler[];
|
|
20
20
|
staticRoutes?: StaticRoute[];
|
|
21
21
|
errorHandler?: ErrorHandler;
|
|
22
|
+
websocketHandlers?: Map<string, EcopagesWebSocketHandler<any, any>>;
|
|
23
|
+
delegateBrowserReloadToHost?: boolean;
|
|
24
|
+
hostOwnsDevClient?: boolean;
|
|
22
25
|
options?: {
|
|
23
26
|
watch?: boolean;
|
|
24
27
|
};
|
|
28
|
+
deferRuntimeAssetSetup?: boolean;
|
|
29
|
+
allowPortFallback?: boolean;
|
|
25
30
|
previewHost?: StaticPreviewHost;
|
|
26
31
|
requestBridge?: NodeHttpRequestBridge;
|
|
27
32
|
devRuntimeFactory?: NodeServerDevRuntimeFactory;
|
|
@@ -29,6 +34,10 @@ export interface NodeServerAdapterParams {
|
|
|
29
34
|
export interface NodeServerAdapterResult extends ServerAdapterResult {
|
|
30
35
|
completeInitialization: (server: NodeServerInstance) => Promise<void>;
|
|
31
36
|
handleRequest: (request: Request) => Promise<Response>;
|
|
37
|
+
attachUserWebSocketUpgrades: (server: NodeServerInstance, options?: {
|
|
38
|
+
passthroughUnmatched?: boolean;
|
|
39
|
+
}) => void;
|
|
40
|
+
dispose: () => Promise<void>;
|
|
32
41
|
}
|
|
33
42
|
/**
|
|
34
43
|
* Node.js HTTP server adapter for the Ecopages runtime.
|
|
@@ -58,13 +67,46 @@ export declare class NodeServerAdapter extends SharedServerAdapter<NodeServerAda
|
|
|
58
67
|
private errorHandler?;
|
|
59
68
|
private bridge;
|
|
60
69
|
private hmrManager;
|
|
70
|
+
private projectWatcher;
|
|
71
|
+
private adapterDisposed;
|
|
72
|
+
private readonly deferRuntimeAssetSetup;
|
|
73
|
+
private readonly allowPortFallback;
|
|
61
74
|
private readonly previewHost;
|
|
62
75
|
private readonly requestBridge;
|
|
63
76
|
private readonly devRuntimeFactory;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Reference to the application-level WebSocket handlers map.
|
|
79
|
+
*
|
|
80
|
+
* @remarks
|
|
81
|
+
* This is a reference to the map owned by `AbstractApplicationAdapter`,
|
|
82
|
+
* passed in via the constructor. The Node adapter reads from it to wire
|
|
83
|
+
* WebSocket upgrades for user-registered patterns.
|
|
84
|
+
*/
|
|
85
|
+
protected websocketHandlers: Map<string, EcopagesWebSocketHandler<any, any>>;
|
|
86
|
+
/**
|
|
87
|
+
* Wires user WebSocket routes onto a foreign Node HTTP server.
|
|
88
|
+
*
|
|
89
|
+
* Host integrations such as the Vite plugin call this so `app.websocket()`
|
|
90
|
+
* handlers work while HTTP is still served by the host dev server.
|
|
91
|
+
*/
|
|
92
|
+
attachUserWebSocketUpgrades(server: NodeServerInstance, options?: {
|
|
93
|
+
passthroughUnmatched?: boolean;
|
|
94
|
+
}): void;
|
|
95
|
+
private wireUserWebSocketUpgrades;
|
|
96
|
+
/**
|
|
97
|
+
* @remarks
|
|
98
|
+
* `previewHost`, `requestBridge`, and `devRuntimeFactory` are optional on the
|
|
99
|
+
* public {@link NodeServerAdapterParams} so factory callers can omit them, but
|
|
100
|
+
* they are mandatory by the time the concrete adapter is constructed —
|
|
101
|
+
* {@link createNodeServerAdapter} fills in Node-specific defaults first. The
|
|
102
|
+
* constructor signature makes that invariant explicit instead of relying on
|
|
103
|
+
* non-null assertions.
|
|
104
|
+
*/
|
|
105
|
+
constructor(options: NodeServerAdapterParams & {
|
|
106
|
+
previewHost: StaticPreviewHost;
|
|
107
|
+
requestBridge: NodeHttpRequestBridge;
|
|
108
|
+
devRuntimeFactory: NodeServerDevRuntimeFactory;
|
|
109
|
+
});
|
|
68
110
|
/**
|
|
69
111
|
* Prepares the adapter for use.
|
|
70
112
|
*
|
|
@@ -79,27 +121,26 @@ export declare class NodeServerAdapter extends SharedServerAdapter<NodeServerAda
|
|
|
79
121
|
* processors during their `setup()` calls.
|
|
80
122
|
*/
|
|
81
123
|
initialize(): Promise<void>;
|
|
82
|
-
private prepareRuntimePublicDir;
|
|
83
124
|
getServerOptions(): NodeServeAdapterServerOptions;
|
|
84
125
|
buildStatic(options?: {
|
|
85
126
|
preview?: boolean;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
private getListeningServerOrigin;
|
|
127
|
+
force?: boolean;
|
|
128
|
+
}): Promise<string | undefined>;
|
|
89
129
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* `closeAllConnections()` is called *before* `close()` because `server.close()`
|
|
93
|
-
* only stops accepting new connections — it waits for existing keep-alive
|
|
94
|
-
* connections to finish naturally, which can stall the build indefinitely.
|
|
95
|
-
* `closeAllConnections()` force-closes any lingering sockets immediately so
|
|
96
|
-
* the `close()` callback fires promptly.
|
|
97
|
-
*
|
|
98
|
-
* The `NodeClientBridge` heartbeat is also destroyed here so its `setInterval`
|
|
99
|
-
* does not prevent the Node.js process from exiting cleanly after the build.
|
|
130
|
+
* Serves an existing static export without running SSG. Used by e2e preview
|
|
131
|
+
* launchers after a shared prewarm build.
|
|
100
132
|
*/
|
|
101
|
-
|
|
133
|
+
servePreviewOnly(): Promise<string | undefined>;
|
|
134
|
+
private startPreviewServer;
|
|
102
135
|
createAdapter(): Promise<NodeServerAdapterResult>;
|
|
136
|
+
/**
|
|
137
|
+
* Releases dev-time resources owned by the adapter.
|
|
138
|
+
*
|
|
139
|
+
* @remarks
|
|
140
|
+
* Safe to call multiple times. Does not stop the bound HTTP server — callers
|
|
141
|
+
* should shut down transport through the runtime host before disposing.
|
|
142
|
+
*/
|
|
143
|
+
dispose(): Promise<void>;
|
|
103
144
|
/**
|
|
104
145
|
* Handles a single incoming Web `Request` and returns a Web `Response`.
|
|
105
146
|
*
|
|
@@ -123,7 +164,7 @@ export declare class NodeServerAdapter extends SharedServerAdapter<NodeServerAda
|
|
|
123
164
|
* - Shared watcher bootstrapping listens for route-level file changes and
|
|
124
165
|
* refreshes the router and response handlers when pages are added or removed.
|
|
125
166
|
*
|
|
126
|
-
* WebSocket upgrade requests that do not
|
|
167
|
+
* WebSocket upgrade requests that do not match a known path are rejected with an
|
|
127
168
|
* immediate socket destroy to prevent unhandled upgrade leaks.
|
|
128
169
|
*/
|
|
129
170
|
completeInitialization(server: NodeServerInstance): Promise<void>;
|