@ecopages/core 0.2.0-alpha.8 → 0.2.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -28
- package/package.json +94 -116
- package/src/adapters/README.md +2 -2
- package/src/adapters/abstract/application-adapter.d.ts +28 -2
- package/src/adapters/abstract/application-adapter.js +14 -2
- package/src/adapters/abstract/router-adapter.d.ts +1 -1
- package/src/adapters/abstract/server-adapter.d.ts +2 -2
- package/src/adapters/bun/client-bridge.d.ts +1 -1
- package/src/adapters/bun/create-app.d.ts +12 -12
- package/src/adapters/bun/create-app.js +64 -41
- package/src/adapters/bun/hmr-manager.d.ts +19 -115
- package/src/adapters/bun/hmr-manager.js +25 -301
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -2
- package/src/adapters/bun/runtime-host.d.ts +52 -0
- package/src/adapters/bun/runtime-host.js +56 -0
- package/src/adapters/bun/server-adapter.d.ts +100 -32
- package/src/adapters/bun/server-adapter.js +142 -65
- package/src/adapters/bun/static-preview-host.d.ts +28 -0
- package/src/adapters/bun/static-preview-host.js +45 -0
- package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
- package/src/{create-app.js → adapters/create-app.js} +4 -4
- package/src/adapters/index.d.ts +1 -5
- package/src/adapters/index.js +1 -7
- package/src/adapters/node/create-app.d.ts +15 -12
- package/src/adapters/node/create-app.js +34 -85
- package/src/adapters/node/http-request-bridge.d.ts +57 -0
- package/src/adapters/node/http-request-bridge.js +118 -0
- package/src/adapters/node/node-client-bridge.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.d.ts +22 -103
- package/src/adapters/node/node-hmr-manager.js +26 -289
- package/src/adapters/node/runtime-host.d.ts +57 -0
- package/src/adapters/node/runtime-host.js +92 -0
- package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
- package/src/adapters/node/server-adapter-dependencies.js +18 -0
- package/src/adapters/node/server-adapter.d.ts +19 -42
- package/src/adapters/node/server-adapter.js +94 -139
- package/src/adapters/node/static-content-server.d.ts +1 -1
- package/src/adapters/node/static-content-server.js +1 -1
- package/src/adapters/node/static-preview-host.d.ts +55 -0
- package/src/adapters/node/static-preview-host.js +68 -0
- package/src/adapters/shared/application-adapter.d.ts +1 -1
- package/src/adapters/shared/define-api-handler.d.ts +1 -1
- package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
- package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
- package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
- package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
- package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
- package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
- package/src/adapters/shared/fs-server-response-factory.js +11 -27
- package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
- package/src/adapters/shared/fs-server-response-matcher.js +72 -46
- package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
- package/src/adapters/shared/hmr-html-response.d.ts +1 -1
- package/src/adapters/shared/hmr-html-response.js +4 -3
- package/src/adapters/shared/render-context.d.ts +5 -3
- package/src/adapters/shared/render-context.js +24 -1
- package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
- package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
- package/src/adapters/shared/runtime-host.d.ts +12 -0
- package/src/adapters/shared/server-adapter.d.ts +22 -11
- package/src/adapters/shared/server-adapter.js +183 -133
- package/src/adapters/shared/server-route-handler.d.ts +5 -5
- package/src/adapters/shared/server-route-handler.js +4 -4
- package/src/adapters/shared/server-static-builder.d.ts +8 -7
- package/src/adapters/shared/server-static-builder.js +6 -5
- package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
- package/src/adapters/shared/shared-hmr-manager.js +241 -0
- package/src/adapters/shared/static-preview-host.d.ts +10 -0
- package/src/build/README.md +57 -67
- package/src/build/browser-runtime-manifest.d.ts +31 -0
- package/src/build/browser-runtime-manifest.js +61 -0
- package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
- package/src/build/browser-runtime-plugin-helpers.js +14 -0
- package/src/build/browser-runtime-plugin.d.ts +78 -0
- package/src/build/browser-runtime-plugin.js +173 -0
- package/src/build/build-adapter.d.ts +384 -63
- package/src/build/build-adapter.js +129 -54
- package/src/build/build-manifest.d.ts +6 -0
- package/src/build/build-manifest.js +21 -2
- package/src/build/build-types.d.ts +2 -2
- package/src/build/rolldown-adapter-helpers.d.ts +58 -0
- package/src/build/rolldown-adapter-helpers.js +265 -0
- package/src/build/rolldown-build-adapter.d.ts +28 -0
- package/src/build/rolldown-build-adapter.js +65 -0
- package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
- package/src/build/rolldown-dev-build-adapter.js +166 -0
- package/src/build/rolldown-plugin-bridge.d.ts +59 -0
- package/src/build/rolldown-plugin-bridge.js +199 -0
- package/src/build/runtime-build-executor.d.ts +15 -7
- package/src/build/runtime-build-executor.js +8 -9
- package/src/build/runtime-build-output-normalizer.d.ts +3 -0
- package/src/build/runtime-build-output-normalizer.js +111 -0
- package/src/build/serialized-build-executor.d.ts +64 -0
- package/src/build/serialized-build-executor.js +63 -0
- package/src/build/server-side-css-shim-plugin.d.ts +41 -0
- package/src/build/server-side-css-shim-plugin.js +35 -0
- package/src/cache/index.d.ts +6 -0
- package/src/cache/index.js +6 -0
- package/src/cache/module-parse-cache.d.ts +65 -0
- package/src/cache/module-parse-cache.js +75 -0
- package/src/config/README.md +5 -2
- package/src/config/config-builder.d.ts +41 -13
- package/src/config/config-builder.js +62 -24
- package/src/declarations.d.ts +1 -1
- package/src/dev/host-runtime.d.ts +10 -0
- package/src/dev/host-runtime.js +24 -0
- package/src/dev/sc-server.d.ts +1 -1
- package/src/dev/sc-server.js +1 -1
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.js +50 -45
- package/src/eco/eco.types.d.ts +60 -8
- package/src/eco/eco.utils.d.ts +1 -40
- package/src/eco/eco.utils.js +5 -35
- package/src/eco/global-injector-map.d.ts +3 -3
- package/src/eco/global-injector-map.js +2 -2
- package/src/eco/lazy-injector-map.d.ts +2 -2
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -1
- package/src/hmr/client/hmr-runtime.js +9 -1
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
- package/src/hmr/strategies/default-hmr-strategy.js +1 -1
- package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
- package/src/hmr/strategies/js-hmr-strategy.js +5 -10
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +3 -2
- package/src/index.js +15 -4
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
- package/src/integrations/ghtml/ghtml-renderer.js +24 -29
- package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
- package/src/integrations/ghtml/ghtml.constants.js +4 -0
- package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
- package/src/integrations/ghtml/ghtml.plugin.js +3 -4
- package/src/plugins/README.md +1 -0
- package/src/plugins/alias-resolver-cache.d.ts +68 -0
- package/src/plugins/alias-resolver-cache.js +106 -0
- package/src/plugins/alias-resolver-plugin.d.ts +5 -1
- package/src/plugins/alias-resolver-plugin.js +19 -7
- package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
- package/src/plugins/eco-component-meta-plugin.js +43 -25
- package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
- package/src/plugins/foreign-jsx-override-plugin.js +41 -0
- package/src/plugins/integration-plugin.d.ts +136 -42
- package/src/plugins/integration-plugin.js +99 -31
- package/src/plugins/processor.d.ts +4 -2
- package/src/plugins/processor.js +8 -3
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +80 -318
- package/src/route-renderer/README.md +74 -78
- package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
- package/src/route-renderer/orchestration/component-render-context.js +147 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
- package/src/route-renderer/orchestration/integration-renderer.js +660 -258
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
- package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
- package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
- package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
- package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
- package/src/route-renderer/orchestration/render-output.utils.js +171 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
- package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
- package/src/route-renderer/orchestration/template-serialization.js +45 -0
- package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
- package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
- package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
- package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
- package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
- package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
- package/src/route-renderer/page-loading/page-module-loader.js +8 -5
- package/src/route-renderer/route-renderer.d.ts +31 -23
- package/src/route-renderer/route-renderer.js +17 -24
- package/src/router/README.md +76 -8
- package/src/router/client/navigation-coordinator.d.ts +20 -0
- package/src/router/client/navigation-coordinator.js +2 -2
- package/src/router/server/route-registry.d.ts +78 -0
- package/src/router/server/route-registry.js +262 -0
- package/src/services/README.md +1 -2
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
- package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
- package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
- package/src/services/assets/asset-processing-service/index.d.ts +6 -5
- package/src/services/assets/asset-processing-service/index.js +6 -5
- package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
- package/src/services/assets/asset-processing-service/page-package.js +80 -0
- package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
- package/src/services/assets/browser-bundle.service.d.ts +44 -3
- package/src/services/assets/browser-bundle.service.js +15 -7
- package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
- package/src/services/html/html-rewriter-provider.service.js +4 -1
- package/src/services/html/html-transformer.service.d.ts +22 -3
- package/src/services/html/html-transformer.service.js +101 -35
- package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
- package/src/services/invalidation/development-invalidation.service.js +1 -0
- package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
- package/src/services/module-loading/app-module-loader.service.js +0 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
- package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
- package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
- package/src/services/module-loading/host-module-loader-registry.js +15 -0
- package/src/services/module-loading/module-loading-types.d.ts +2 -0
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/page-module-import.service.d.ts +32 -8
- package/src/services/module-loading/page-module-import.service.js +83 -22
- package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
- package/src/services/module-loading/server-module-transpiler.service.js +5 -2
- package/src/services/module-loading/source-module-support.d.ts +5 -0
- package/src/services/module-loading/source-module-support.js +8 -0
- package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
- package/src/services/runtime-state/dev-graph.service.js +10 -10
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
- package/src/static-site-generator/static-site-generator.d.ts +23 -28
- package/src/static-site-generator/static-site-generator.js +119 -156
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
- package/src/types/internal-types.js +0 -0
- package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
- package/src/types/public-types.js +0 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/locals-utils.d.ts +1 -1
- package/src/utils/parse-cli-args.d.ts +4 -1
- package/src/utils/parse-cli-args.js +16 -1
- package/src/utils/resolve-work-dir.js +1 -1
- package/src/watchers/project-watcher.d.ts +4 -4
- package/src/watchers/project-watcher.js +35 -41
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +5 -5
- package/CHANGELOG.md +0 -31
- package/src/adapters/abstract/application-adapter.ts +0 -337
- package/src/adapters/abstract/router-adapter.ts +0 -30
- package/src/adapters/abstract/server-adapter.ts +0 -79
- package/src/adapters/bun/client-bridge.ts +0 -62
- package/src/adapters/bun/create-app.ts +0 -189
- package/src/adapters/bun/hmr-manager.ts +0 -409
- package/src/adapters/bun/index.ts +0 -2
- package/src/adapters/bun/server-adapter.ts +0 -499
- package/src/adapters/bun/server-lifecycle.d.ts +0 -63
- package/src/adapters/bun/server-lifecycle.js +0 -92
- package/src/adapters/bun/server-lifecycle.ts +0 -124
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
- package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
- package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -6
- package/src/adapters/node/index.js +0 -11
- package/src/adapters/node/index.ts +0 -16
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -381
- package/src/adapters/node/runtime-adapter.d.ts +0 -46
- package/src/adapters/node/runtime-adapter.js +0 -306
- package/src/adapters/node/runtime-adapter.ts +0 -439
- package/src/adapters/node/server-adapter.ts +0 -488
- package/src/adapters/node/static-content-server.ts +0 -239
- package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
- package/src/adapters/node/write-runtime-manifest.js +0 -12
- package/src/adapters/node/write-runtime-manifest.ts +0 -38
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/define-api-handler.ts +0 -66
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
- package/src/adapters/shared/hmr-html-response.ts +0 -52
- package/src/adapters/shared/render-context.ts +0 -120
- package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
- package/src/adapters/shared/runtime-bootstrap.js +0 -43
- package/src/adapters/shared/runtime-bootstrap.ts +0 -79
- package/src/adapters/shared/server-adapter.ts +0 -489
- package/src/adapters/shared/server-route-handler.ts +0 -153
- package/src/adapters/shared/server-static-builder.ts +0 -166
- package/src/build/build-adapter.ts +0 -361
- package/src/build/build-manifest.ts +0 -54
- package/src/build/build-types.ts +0 -83
- package/src/build/dev-build-coordinator.d.ts +0 -74
- package/src/build/dev-build-coordinator.js +0 -161
- package/src/build/dev-build-coordinator.ts +0 -221
- package/src/build/esbuild-build-adapter.d.ts +0 -72
- package/src/build/esbuild-build-adapter.js +0 -422
- package/src/build/esbuild-build-adapter.ts +0 -559
- package/src/build/runtime-build-executor.ts +0 -34
- package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
- package/src/build/runtime-specifier-alias-plugin.js +0 -31
- package/src/build/runtime-specifier-alias-plugin.ts +0 -58
- package/src/config/config-builder.ts +0 -706
- package/src/constants.ts +0 -54
- package/src/create-app.ts +0 -87
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/component-render-context.d.ts +0 -105
- package/src/eco/component-render-context.js +0 -87
- package/src/eco/component-render-context.ts +0 -224
- package/src/eco/eco.ts +0 -242
- package/src/eco/eco.types.ts +0 -221
- package/src/eco/eco.utils.ts +0 -89
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -2
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/hmr/client/hmr-runtime.ts +0 -152
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
- package/src/hmr/hmr.test.e2e.ts +0 -66
- package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -5
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -232
- package/src/plugins/alias-resolver-plugin.ts +0 -63
- package/src/plugins/eco-component-meta-plugin.ts +0 -481
- package/src/plugins/integration-plugin.ts +0 -226
- package/src/plugins/processor.ts +0 -240
- package/src/plugins/runtime-capability.ts +0 -14
- package/src/public-types.ts +0 -1317
- package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph/component-graph.js +0 -72
- package/src/route-renderer/component-graph/component-graph.ts +0 -159
- package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
- package/src/route-renderer/component-graph/component-marker.js +0 -46
- package/src/route-renderer/component-graph/component-marker.ts +0 -117
- package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
- package/src/route-renderer/component-graph/component-reference.js +0 -19
- package/src/route-renderer/component-graph/component-reference.ts +0 -29
- package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
- package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
- package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
- package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
- package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
- package/src/route-renderer/orchestration/render-execution.service.js +0 -121
- package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
- package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
- package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
- package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
- package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
- package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
- package/src/route-renderer/route-renderer.ts +0 -115
- package/src/router/client/link-intent.test.browser.ts +0 -51
- package/src/router/client/link-intent.ts +0 -92
- package/src/router/client/navigation-coordinator.ts +0 -433
- package/src/router/server/fs-router-scanner.d.ts +0 -41
- package/src/router/server/fs-router-scanner.js +0 -156
- package/src/router/server/fs-router-scanner.ts +0 -219
- package/src/router/server/fs-router.d.ts +0 -26
- package/src/router/server/fs-router.js +0 -100
- package/src/router/server/fs-router.ts +0 -122
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
- package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
- package/src/services/assets/asset-processing-service/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
- package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
- package/src/services/assets/browser-bundle.service.ts +0 -53
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
- package/src/services/html/html-rewriter-provider.service.ts +0 -103
- package/src/services/html/html-transformer.service.ts +0 -279
- package/src/services/invalidation/development-invalidation.service.ts +0 -261
- package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
- package/src/services/module-loading/page-module-import.service.ts +0 -200
- package/src/services/module-loading/server-loader.service.d.ts +0 -96
- package/src/services/module-loading/server-loader.service.js +0 -32
- package/src/services/module-loading/server-loader.service.ts +0 -130
- package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
- package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
- package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
- package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
- package/src/services/runtime-state/dev-graph.service.ts +0 -217
- package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
- package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
- package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
- package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
- package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
- package/src/services/validation/schema-validation-service.ts +0 -204
- package/src/services/validation/standard-schema.types.ts +0 -68
- package/src/static-site-generator/static-site-generator.ts +0 -462
- package/src/utils/css.d.ts +0 -1
- package/src/utils/css.js +0 -7
- package/src/utils/css.ts +0 -5
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html.ts +0 -1
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.ts +0 -83
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/resolve-work-dir.ts +0 -45
- package/src/utils/runtime.ts +0 -44
- package/src/utils/server-utils.module.ts +0 -67
- package/src/watchers/project-watcher.test-helpers.ts +0 -41
- package/src/watchers/project-watcher.ts +0 -363
- /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
- /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
- /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
- /package/src/{constants.js → config/constants.js} +0 -0
package/src/adapters/index.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { EcopagesApp, createApp } from "./
|
|
1
|
+
import { EcopagesApp, createApp } from "./create-app.js";
|
|
2
2
|
import { defineApiHandler, defineGroupHandler } from "./shared/define-api-handler.js";
|
|
3
|
-
import { NodeServerAdapter, createNodeServerAdapter } from "./node/server-adapter.js";
|
|
4
|
-
import { EcopagesApp as EcopagesApp2, createNodeApp } from "./node/create-app.js";
|
|
5
3
|
export {
|
|
6
4
|
EcopagesApp,
|
|
7
|
-
EcopagesApp2 as NodeAdapterEcopagesApp,
|
|
8
|
-
NodeServerAdapter,
|
|
9
5
|
createApp,
|
|
10
|
-
createNodeApp,
|
|
11
|
-
createNodeServerAdapter,
|
|
12
6
|
defineApiHandler,
|
|
13
7
|
defineGroupHandler
|
|
14
8
|
};
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import { type Server as NodeServerInstance } from 'node:http';
|
|
2
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
3
|
-
import { type ApplicationAdapterOptions } from '../abstract/application-adapter.js';
|
|
4
1
|
import { SharedApplicationAdapter } from '../shared/application-adapter.js';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
|
|
2
|
+
import type { RuntimeHost } from '../shared/runtime-host.js';
|
|
3
|
+
import type { EcopagesAppOptions } from '../create-app.js';
|
|
4
|
+
import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
|
|
5
|
+
import type { NodeServerInstance } from './server-adapter.js';
|
|
6
|
+
export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
|
|
11
7
|
serverAdapter: NodeServerAdapterResult | undefined;
|
|
12
8
|
private server;
|
|
13
9
|
private runtimeOrigin;
|
|
10
|
+
private readonly runtimeHost;
|
|
11
|
+
constructor(options: EcopagesAppOptions, dependencies: {
|
|
12
|
+
runtimeHost: RuntimeHost<NodeServerInstance, {
|
|
13
|
+
port?: number;
|
|
14
|
+
hostname?: string;
|
|
15
|
+
}>;
|
|
16
|
+
});
|
|
17
|
+
protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
|
|
14
18
|
stop(force?: boolean): Promise<void>;
|
|
15
19
|
protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
|
|
16
20
|
start(): Promise<NodeServerInstance | void>;
|
|
17
|
-
private createWebRequest;
|
|
18
|
-
private sendNodeResponse;
|
|
19
21
|
fetch(request: Request): Promise<Response>;
|
|
20
22
|
}
|
|
21
|
-
export declare function createNodeApp(options: EcopagesAppOptions): Promise<
|
|
23
|
+
export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
24
|
+
export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
@@ -1,53 +1,43 @@
|
|
|
1
|
-
import { createServer } from "node:http";
|
|
2
|
-
import { Readable } from "node:stream";
|
|
3
|
-
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../constants.js";
|
|
4
1
|
import { appLogger } from "../../global/app-logger.js";
|
|
5
|
-
import {} from "../abstract/application-adapter.js";
|
|
6
2
|
import { SharedApplicationAdapter } from "../shared/application-adapter.js";
|
|
3
|
+
import { resolveRuntimeBinding } from "../shared/runtime-app-bootstrap.js";
|
|
7
4
|
import { createNodeServerAdapter } from "./server-adapter.js";
|
|
8
|
-
|
|
5
|
+
import { NodeHttpRequestBridge } from "./http-request-bridge.js";
|
|
6
|
+
import { NodeRuntimeHost } from "./runtime-host.js";
|
|
7
|
+
class NodeEcopagesApp extends SharedApplicationAdapter {
|
|
9
8
|
serverAdapter;
|
|
10
9
|
server = null;
|
|
11
10
|
runtimeOrigin = "";
|
|
11
|
+
runtimeHost;
|
|
12
|
+
constructor(options, dependencies) {
|
|
13
|
+
super(options);
|
|
14
|
+
this.runtimeHost = dependencies.runtimeHost;
|
|
15
|
+
}
|
|
16
|
+
createServerAdapter(params) {
|
|
17
|
+
return createNodeServerAdapter(params);
|
|
18
|
+
}
|
|
12
19
|
async stop(force = true) {
|
|
13
20
|
if (!this.server) {
|
|
14
21
|
return;
|
|
15
22
|
}
|
|
16
23
|
const activeServer = this.server;
|
|
17
24
|
this.server = null;
|
|
18
|
-
await
|
|
19
|
-
activeServer.close((error) => {
|
|
20
|
-
if (error) {
|
|
21
|
-
reject(error);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
resolve();
|
|
25
|
-
});
|
|
26
|
-
if (force) {
|
|
27
|
-
activeServer.closeAllConnections();
|
|
28
|
-
}
|
|
29
|
-
});
|
|
25
|
+
await this.runtimeHost.stop(activeServer, { force });
|
|
30
26
|
}
|
|
31
27
|
async initializeServerAdapter() {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.runtimeOrigin = `http://${preferredHostname}:${preferredPort}`;
|
|
39
|
-
return createNodeServerAdapter({
|
|
28
|
+
const binding = resolveRuntimeBinding({
|
|
29
|
+
cliArgs: this.cliArgs,
|
|
30
|
+
serverOptions: this.serverOptions
|
|
31
|
+
});
|
|
32
|
+
this.runtimeOrigin = binding.runtimeOrigin;
|
|
33
|
+
return this.createServerAdapter({
|
|
40
34
|
runtimeOrigin: this.runtimeOrigin,
|
|
41
35
|
appConfig: this.appConfig,
|
|
42
36
|
apiHandlers: this.apiHandlers,
|
|
43
37
|
staticRoutes: this.staticRoutes,
|
|
44
38
|
errorHandler: this.errorHandler,
|
|
45
|
-
options: { watch:
|
|
46
|
-
serveOptions:
|
|
47
|
-
port: preferredPort,
|
|
48
|
-
hostname: preferredHostname,
|
|
49
|
-
...this.serverOptions
|
|
50
|
-
}
|
|
39
|
+
options: { watch: binding.watch },
|
|
40
|
+
serveOptions: binding.serveOptions
|
|
51
41
|
});
|
|
52
42
|
}
|
|
53
43
|
async start() {
|
|
@@ -69,64 +59,17 @@ class EcopagesApp extends SharedApplicationAdapter {
|
|
|
69
59
|
return;
|
|
70
60
|
}
|
|
71
61
|
const serveOptions = this.serverAdapter.getServerOptions();
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
try {
|
|
77
|
-
const webRequest = this.createWebRequest(req);
|
|
78
|
-
const response = await this.serverAdapter.handleRequest(webRequest);
|
|
79
|
-
await this.sendNodeResponse(res, response);
|
|
80
|
-
} catch (error) {
|
|
81
|
-
appLogger.error("Node server adapter request failed", error);
|
|
82
|
-
res.statusCode = 500;
|
|
83
|
-
res.end("Internal Server Error");
|
|
62
|
+
this.server = await this.runtimeHost.start({
|
|
63
|
+
serveOptions,
|
|
64
|
+
handleRequest: async (request) => await this.serverAdapter.handleRequest(request),
|
|
65
|
+
onError: async () => {
|
|
84
66
|
}
|
|
85
67
|
});
|
|
86
|
-
|
|
87
|
-
this.server.listen(port, hostname, () => resolve());
|
|
88
|
-
});
|
|
68
|
+
this.runtimeOrigin = this.runtimeHost.getOrigin(this.server, serveOptions);
|
|
89
69
|
await this.serverAdapter.completeInitialization(this.server);
|
|
90
70
|
appLogger.info(`Node server running at ${this.runtimeOrigin}`);
|
|
91
71
|
return this.server;
|
|
92
72
|
}
|
|
93
|
-
createWebRequest(req) {
|
|
94
|
-
const url = new URL(req.url ?? "/", this.runtimeOrigin);
|
|
95
|
-
const headers = new Headers();
|
|
96
|
-
for (const [key, value] of Object.entries(req.headers)) {
|
|
97
|
-
if (Array.isArray(value)) {
|
|
98
|
-
for (const item of value) {
|
|
99
|
-
headers.append(key, item);
|
|
100
|
-
}
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
if (value !== void 0) {
|
|
104
|
-
headers.set(key, value);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const method = (req.method ?? "GET").toUpperCase();
|
|
108
|
-
const requestInit = {
|
|
109
|
-
method,
|
|
110
|
-
headers
|
|
111
|
-
};
|
|
112
|
-
if (method !== "GET" && method !== "HEAD") {
|
|
113
|
-
requestInit.body = Readable.toWeb(req);
|
|
114
|
-
requestInit.duplex = "half";
|
|
115
|
-
}
|
|
116
|
-
return new Request(url, requestInit);
|
|
117
|
-
}
|
|
118
|
-
async sendNodeResponse(res, response) {
|
|
119
|
-
res.statusCode = response.status;
|
|
120
|
-
response.headers.forEach((value, key) => {
|
|
121
|
-
res.setHeader(key, value);
|
|
122
|
-
});
|
|
123
|
-
if (!response.body) {
|
|
124
|
-
res.end();
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const body = Buffer.from(await response.arrayBuffer());
|
|
128
|
-
res.end(body);
|
|
129
|
-
}
|
|
130
73
|
async fetch(request) {
|
|
131
74
|
if (!this.serverAdapter) {
|
|
132
75
|
this.serverAdapter = await this.initializeServerAdapter();
|
|
@@ -135,9 +78,15 @@ class EcopagesApp extends SharedApplicationAdapter {
|
|
|
135
78
|
}
|
|
136
79
|
}
|
|
137
80
|
async function createNodeApp(options) {
|
|
138
|
-
return new
|
|
81
|
+
return new NodeEcopagesApp(options, {
|
|
82
|
+
runtimeHost: new NodeRuntimeHost(new NodeHttpRequestBridge())
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async function createApp(options) {
|
|
86
|
+
return createNodeApp(options);
|
|
139
87
|
}
|
|
140
88
|
export {
|
|
141
|
-
|
|
89
|
+
NodeEcopagesApp,
|
|
90
|
+
createApp,
|
|
142
91
|
createNodeApp
|
|
143
92
|
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
/**
|
|
3
|
+
* Signals that the remote client closed the HTTP exchange before the Node
|
|
4
|
+
* adapter finished reading or writing the body.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* This error represents a transport-level disconnect, not an application
|
|
8
|
+
* failure. Higher layers may safely suppress logging for this error when the
|
|
9
|
+
* client socket is already gone and no meaningful response can still be sent.
|
|
10
|
+
*/
|
|
11
|
+
export declare class NodeClientAbortError extends Error {
|
|
12
|
+
/**
|
|
13
|
+
* Creates the canonical Node transport abort error used across request-body
|
|
14
|
+
* reads and response-body writes.
|
|
15
|
+
*/
|
|
16
|
+
constructor();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Type guard for the canonical client-abort error used by the Node adapter.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* Runtime hosts use this guard before logging so only explicitly classified
|
|
23
|
+
* client disconnects are muted. All other failures continue through the normal
|
|
24
|
+
* error-reporting path.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isNodeClientAbortError(error: unknown): error is NodeClientAbortError;
|
|
27
|
+
/**
|
|
28
|
+
* Bridges Node's `IncomingMessage` / `ServerResponse` pair to the Web
|
|
29
|
+
* `Request` / `Response` contract used by the shared routing pipeline.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* This class is the Node transport boundary. It owns the translation of request
|
|
33
|
+
* headers and bodies into Web primitives and the reverse translation of Web
|
|
34
|
+
* responses back onto Node streams, including client-abort normalization.
|
|
35
|
+
*/
|
|
36
|
+
export declare class NodeHttpRequestBridge {
|
|
37
|
+
/**
|
|
38
|
+
* Converts one incoming Node request into the Web `Request` shape consumed by
|
|
39
|
+
* the shared server adapter.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* Non-GET/HEAD requests retain streaming semantics via a `ReadableStream` so
|
|
43
|
+
* large request bodies do not need to be buffered before route handling begins.
|
|
44
|
+
*/
|
|
45
|
+
createWebRequest(req: IncomingMessage, runtimeOrigin: string): Request;
|
|
46
|
+
/**
|
|
47
|
+
* Sends a Web `Response` through Node's `ServerResponse` without buffering the
|
|
48
|
+
* full body in memory first.
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* Streaming responses matter for large payloads and long-lived transports such
|
|
52
|
+
* as server-sent events. The bridge therefore forwards the `ReadableStream`
|
|
53
|
+
* directly into the Node writable response instead of materializing an
|
|
54
|
+
* intermediate `ArrayBuffer`.
|
|
55
|
+
*/
|
|
56
|
+
sendNodeResponse(res: ServerResponse, response: Response): Promise<void>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
import { pipeline } from "node:stream/promises";
|
|
3
|
+
class NodeClientAbortError extends Error {
|
|
4
|
+
/**
|
|
5
|
+
* Creates the canonical Node transport abort error used across request-body
|
|
6
|
+
* reads and response-body writes.
|
|
7
|
+
*/
|
|
8
|
+
constructor() {
|
|
9
|
+
super("Client closed the request");
|
|
10
|
+
this.name = "ClientAbortError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function isNodeClientDisconnectCode(code) {
|
|
14
|
+
return [
|
|
15
|
+
"ECONNRESET",
|
|
16
|
+
"EPIPE",
|
|
17
|
+
"ERR_STREAM_DESTROYED",
|
|
18
|
+
"ERR_STREAM_PREMATURE_CLOSE",
|
|
19
|
+
"ERR_STREAM_UNABLE_TO_PIPE"
|
|
20
|
+
].includes(code ?? "");
|
|
21
|
+
}
|
|
22
|
+
function isNodeClientAbortError(error) {
|
|
23
|
+
return error instanceof NodeClientAbortError;
|
|
24
|
+
}
|
|
25
|
+
function toNodeClientAbortError(error) {
|
|
26
|
+
if (error instanceof NodeClientAbortError) {
|
|
27
|
+
return error;
|
|
28
|
+
}
|
|
29
|
+
if (typeof error === "object" && error !== null && "code" in error) {
|
|
30
|
+
const code = typeof error.code === "string" ? error.code : void 0;
|
|
31
|
+
if (isNodeClientDisconnectCode(code)) {
|
|
32
|
+
return new NodeClientAbortError();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
class NodeHttpRequestBridge {
|
|
38
|
+
/**
|
|
39
|
+
* Converts one incoming Node request into the Web `Request` shape consumed by
|
|
40
|
+
* the shared server adapter.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* Non-GET/HEAD requests retain streaming semantics via a `ReadableStream` so
|
|
44
|
+
* large request bodies do not need to be buffered before route handling begins.
|
|
45
|
+
*/
|
|
46
|
+
createWebRequest(req, runtimeOrigin) {
|
|
47
|
+
const url = new URL(req.url ?? "/", runtimeOrigin);
|
|
48
|
+
const headers = new Headers();
|
|
49
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
50
|
+
if (Array.isArray(value)) {
|
|
51
|
+
for (const item of value) {
|
|
52
|
+
headers.append(key, item);
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (value !== void 0) {
|
|
57
|
+
headers.set(key, value);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const method = (req.method ?? "GET").toUpperCase();
|
|
61
|
+
const requestInit = {
|
|
62
|
+
method,
|
|
63
|
+
headers
|
|
64
|
+
};
|
|
65
|
+
if (method !== "GET" && method !== "HEAD") {
|
|
66
|
+
const body = new ReadableStream({
|
|
67
|
+
start(controller) {
|
|
68
|
+
req.on("data", (chunk) => controller.enqueue(chunk));
|
|
69
|
+
req.once("end", () => controller.close());
|
|
70
|
+
req.once("aborted", () => {
|
|
71
|
+
controller.error(new NodeClientAbortError());
|
|
72
|
+
});
|
|
73
|
+
req.once("error", (err) => {
|
|
74
|
+
const isClientAbort = err.code === "ECONNRESET";
|
|
75
|
+
controller.error(isClientAbort ? new NodeClientAbortError() : err);
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
cancel() {
|
|
79
|
+
req.destroy();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
requestInit.body = body;
|
|
83
|
+
requestInit.duplex = "half";
|
|
84
|
+
}
|
|
85
|
+
return new Request(url, requestInit);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Sends a Web `Response` through Node's `ServerResponse` without buffering the
|
|
89
|
+
* full body in memory first.
|
|
90
|
+
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* Streaming responses matter for large payloads and long-lived transports such
|
|
93
|
+
* as server-sent events. The bridge therefore forwards the `ReadableStream`
|
|
94
|
+
* directly into the Node writable response instead of materializing an
|
|
95
|
+
* intermediate `ArrayBuffer`.
|
|
96
|
+
*/
|
|
97
|
+
async sendNodeResponse(res, response) {
|
|
98
|
+
res.statusCode = response.status;
|
|
99
|
+
response.headers.forEach((value, key) => {
|
|
100
|
+
res.setHeader(key, value);
|
|
101
|
+
});
|
|
102
|
+
if (!response.body) {
|
|
103
|
+
res.end();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const responseBody = response.body;
|
|
107
|
+
try {
|
|
108
|
+
await pipeline(Readable.fromWeb(responseBody), res);
|
|
109
|
+
} catch (error) {
|
|
110
|
+
throw toNodeClientAbortError(error) ?? error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export {
|
|
115
|
+
NodeClientAbortError,
|
|
116
|
+
NodeHttpRequestBridge,
|
|
117
|
+
isNodeClientAbortError
|
|
118
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WebSocket } from 'ws';
|
|
2
|
-
import type { ClientBridgeEvent, IClientBridge } from '../../public-types.js';
|
|
2
|
+
import type { ClientBridgeEvent, IClientBridge } from '../../types/public-types.js';
|
|
3
3
|
export declare class NodeClientBridge implements IClientBridge {
|
|
4
4
|
private subscribers;
|
|
5
5
|
private heartbeatTimer;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type
|
|
3
|
-
import {
|
|
4
|
-
import type { ClientBridgeEvent } from '../../public-types.js';
|
|
1
|
+
import type { EcoPagesAppConfig, IClientBridge } from '../../types/internal-types.js';
|
|
2
|
+
import { InMemoryEntrypointDependencyGraph, type EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
|
|
3
|
+
import { SharedHmrManager } from '../shared/shared-hmr-manager.js';
|
|
5
4
|
export interface NodeHmrManagerParams {
|
|
6
5
|
appConfig: EcoPagesAppConfig;
|
|
7
6
|
bridge: IClientBridge;
|
|
8
7
|
}
|
|
9
|
-
type HandleFileChangeOptions = {
|
|
10
|
-
broadcast?: boolean;
|
|
11
|
-
};
|
|
12
8
|
/**
|
|
13
9
|
* Node development HMR manager.
|
|
14
10
|
*
|
|
@@ -22,112 +18,35 @@ type HandleFileChangeOptions = {
|
|
|
22
18
|
* reserved for integration-owned page bundles, while generic script assets must
|
|
23
19
|
* go through `registerScriptEntrypoint()`.
|
|
24
20
|
*/
|
|
25
|
-
export declare class NodeHmrManager
|
|
26
|
-
private static readonly entrypointRegistrationTimeoutMs;
|
|
27
|
-
readonly appConfig: EcoPagesAppConfig;
|
|
28
|
-
private readonly bridge;
|
|
29
|
-
private watchers;
|
|
30
|
-
private watchedFiles;
|
|
31
|
-
private entrypointRegistrations;
|
|
32
|
-
private distDir;
|
|
33
|
-
private plugins;
|
|
34
|
-
private enabled;
|
|
35
|
-
private strategies;
|
|
36
|
-
private readonly entrypointRegistrar;
|
|
37
|
-
private readonly browserBundleService;
|
|
38
|
-
private readonly entrypointDependencyGraph;
|
|
39
|
-
private readonly runtimeSpecifierRegistry;
|
|
40
|
-
private readonly serverModuleTranspiler;
|
|
41
|
-
constructor({ appConfig, bridge }: NodeHmrManagerParams);
|
|
42
|
-
/**
|
|
43
|
-
* Ensures the HMR output directory exists.
|
|
44
|
-
*
|
|
45
|
-
* This must not remove the directory because multiple app processes
|
|
46
|
-
* can share the same dist path during e2e runs.
|
|
47
|
-
*/
|
|
48
|
-
private cleanDistDir;
|
|
21
|
+
export declare class NodeHmrManager extends SharedHmrManager {
|
|
49
22
|
/**
|
|
50
|
-
*
|
|
23
|
+
* Creates the Node HMR manager over the shared coordination pipeline.
|
|
51
24
|
*
|
|
52
25
|
* @remarks
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
26
|
+
* Unlike Bun, Node keeps websocket subscription wiring in the server adapter,
|
|
27
|
+
* so this manager only specializes the shared manager where runtime behavior
|
|
28
|
+
* actually differs: dependency-graph storage, missing-file tolerance, and how
|
|
29
|
+
* runtime bundle failures disable HMR.
|
|
56
30
|
*/
|
|
57
|
-
|
|
58
|
-
private initializeStrategies;
|
|
59
|
-
registerStrategy(strategy: HmrStrategy): void;
|
|
60
|
-
setPlugins(plugins: EcoBuildPlugin[]): void;
|
|
61
|
-
setEnabled(enabled: boolean): void;
|
|
62
|
-
isEnabled(): boolean;
|
|
63
|
-
/**
|
|
64
|
-
* Registers runtime bare-specifier mappings exposed by integrations.
|
|
65
|
-
*
|
|
66
|
-
* @remarks
|
|
67
|
-
* These mappings are consumed by framework-owned HMR strategies such as the
|
|
68
|
-
* React integration strategy when they rewrite browser bundles. The registry
|
|
69
|
-
* stays generic so the same mappings can support broader import-map-style
|
|
70
|
-
* runtime features later without moving integration semantics into core.
|
|
71
|
-
*/
|
|
72
|
-
registerSpecifierMap(map: Record<string, string>): void;
|
|
73
|
-
buildRuntime(): Promise<void>;
|
|
74
|
-
getRuntimePath(): string;
|
|
75
|
-
broadcast(event: ClientBridgeEvent): void;
|
|
76
|
-
handleFileChange(filePath: string, options?: HandleFileChangeOptions): Promise<void>;
|
|
77
|
-
getOutputUrl(entrypointPath: string): string | undefined;
|
|
78
|
-
getWatchedFiles(): Map<string, string>;
|
|
79
|
-
getSpecifierMap(): Map<string, string>;
|
|
80
|
-
getDistDir(): string;
|
|
81
|
-
getPlugins(): EcoBuildPlugin[];
|
|
82
|
-
getDefaultContext(): DefaultHmrContext;
|
|
83
|
-
private clearFailedEntrypointRegistration;
|
|
84
|
-
/**
|
|
85
|
-
* Registers one integration-owned page entrypoint.
|
|
86
|
-
*
|
|
87
|
-
* @remarks
|
|
88
|
-
* Concurrent callers share one in-flight registration. The registration is
|
|
89
|
-
* removed from the dedupe map once it resolves or fails so later requests do
|
|
90
|
-
* not inherit stale state.
|
|
91
|
-
*/
|
|
92
|
-
registerEntrypoint(entrypointPath: string): Promise<string>;
|
|
93
|
-
/**
|
|
94
|
-
* Registers one generic script entrypoint.
|
|
95
|
-
*
|
|
96
|
-
* @remarks
|
|
97
|
-
* This path is intentionally separate from page entrypoints so non-framework
|
|
98
|
-
* scripts can still use the generic build fallback without weakening the page
|
|
99
|
-
* ownership contract.
|
|
100
|
-
*/
|
|
101
|
-
registerScriptEntrypoint(entrypointPath: string): Promise<string>;
|
|
31
|
+
constructor({ appConfig, bridge }: NodeHmrManagerParams);
|
|
102
32
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* @remarks
|
|
106
|
-
* The flow is:
|
|
107
|
-
* 1. Reserve the output URL in the watched map.
|
|
108
|
-
* 2. Remove any stale emitted file from an earlier process or failed build.
|
|
109
|
-
* 3. Let the strategy chain try to emit the entrypoint without broadcasting.
|
|
110
|
-
* 4. Fail if the owning integration did not emit the expected output.
|
|
33
|
+
* Reuses the shared in-memory dependency graph when the app already has one and
|
|
34
|
+
* otherwise creates the default Node development graph.
|
|
111
35
|
*/
|
|
112
|
-
|
|
36
|
+
protected createEntrypointDependencyGraph(existingEntrypointDependencyGraph: EntrypointDependencyGraph): InMemoryEntrypointDependencyGraph;
|
|
113
37
|
/**
|
|
114
|
-
*
|
|
38
|
+
* Tells the shared HMR manager to ignore missing-file events during Node watch
|
|
39
|
+
* mode.
|
|
115
40
|
*
|
|
116
41
|
* @remarks
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
42
|
+
* Node file watching can briefly report remove-and-recreate sequences while a
|
|
43
|
+
* file is being rewritten. Treating those transient gaps as fatal would disable
|
|
44
|
+
* otherwise healthy development sessions.
|
|
120
45
|
*/
|
|
121
|
-
|
|
46
|
+
protected shouldSkipMissingFileChange(_filePath: string): boolean;
|
|
122
47
|
/**
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* @remarks
|
|
126
|
-
* The manager intentionally does not remove emitted `_hmr` files from disk
|
|
127
|
-
* because multiple app processes may share the same dist directory during test
|
|
128
|
-
* runs. It does clear in-memory indexes so old entrypoints, dependencies, and
|
|
129
|
-
* specifier maps cannot leak across a reused manager instance.
|
|
48
|
+
* Disables HMR after a runtime bundle failure so the Node dev server can keep
|
|
49
|
+
* serving requests without repeatedly emitting broken updates.
|
|
130
50
|
*/
|
|
131
|
-
|
|
51
|
+
protected onRuntimeBundleFailure(error: unknown): void;
|
|
132
52
|
}
|
|
133
|
-
export {};
|