@ecopages/core 0.2.0-alpha.9 → 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
|
@@ -1,149 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { RESOLVED_ASSETS_DIR } from "../../constants";
|
|
4
|
-
import { getAppBuildExecutor } from "../../build/build-adapter.js";
|
|
5
|
-
import { fileSystem } from "@ecopages/file-system";
|
|
6
|
-
import { HmrStrategyType } from "../../hmr/hmr-strategy";
|
|
7
|
-
import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy";
|
|
8
|
-
import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy";
|
|
9
|
-
import { appLogger } from "../../global/app-logger";
|
|
10
|
-
import { HmrEntrypointRegistrar } from "../shared/hmr-entrypoint-registrar.js";
|
|
11
|
-
import { BrowserBundleService } from "../../services/assets/browser-bundle.service.js";
|
|
12
|
-
import { getAppServerModuleTranspiler } from "../../services/module-loading/app-server-module-transpiler.service";
|
|
1
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
13
2
|
import {
|
|
14
|
-
|
|
15
|
-
NoopEntrypointDependencyGraph,
|
|
16
|
-
setAppEntrypointDependencyGraph
|
|
3
|
+
InMemoryEntrypointDependencyGraph
|
|
17
4
|
} from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
class HmrManager {
|
|
21
|
-
static entrypointRegistrationTimeoutMs = 4e3;
|
|
22
|
-
appConfig;
|
|
23
|
-
bridge;
|
|
24
|
-
/** Keep track of watchers */
|
|
25
|
-
watchers = /* @__PURE__ */ new Map();
|
|
26
|
-
/** entrypoint -> output path */
|
|
27
|
-
watchedFiles = /* @__PURE__ */ new Map();
|
|
28
|
-
entrypointRegistrations = /* @__PURE__ */ new Map();
|
|
29
|
-
distDir;
|
|
30
|
-
plugins = [];
|
|
31
|
-
enabled = true;
|
|
32
|
-
strategies = [];
|
|
33
|
-
entrypointRegistrar;
|
|
34
|
-
browserBundleService;
|
|
35
|
-
entrypointDependencyGraph;
|
|
36
|
-
runtimeSpecifierRegistry;
|
|
37
|
-
serverModuleTranspiler;
|
|
5
|
+
import { SharedHmrManager } from "../shared/shared-hmr-manager.js";
|
|
6
|
+
class HmrManager extends SharedHmrManager {
|
|
38
7
|
wsHandler;
|
|
39
|
-
constructor({ appConfig, bridge }) {
|
|
40
|
-
this.appConfig = appConfig;
|
|
41
|
-
this.bridge = bridge;
|
|
42
|
-
this.distDir = path.join(resolveInternalWorkDir(this.appConfig), RESOLVED_ASSETS_DIR, "_hmr");
|
|
43
|
-
this.entrypointRegistrar = new HmrEntrypointRegistrar({
|
|
44
|
-
srcDir: this.appConfig.absolutePaths.srcDir,
|
|
45
|
-
distDir: this.distDir,
|
|
46
|
-
entrypointRegistrations: this.entrypointRegistrations,
|
|
47
|
-
watchedFiles: this.watchedFiles,
|
|
48
|
-
clearFailedRegistration: (entrypointPath) => this.clearFailedEntrypointRegistration(entrypointPath),
|
|
49
|
-
registrationTimeoutMs: HmrManager.entrypointRegistrationTimeoutMs
|
|
50
|
-
});
|
|
51
|
-
this.browserBundleService = new BrowserBundleService(appConfig);
|
|
52
|
-
const existingEntrypointDependencyGraph = getAppEntrypointDependencyGraph(appConfig);
|
|
53
|
-
this.entrypointDependencyGraph = existingEntrypointDependencyGraph instanceof NoopEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new NoopEntrypointDependencyGraph();
|
|
54
|
-
setAppEntrypointDependencyGraph(this.appConfig, this.entrypointDependencyGraph);
|
|
55
|
-
this.runtimeSpecifierRegistry = getAppRuntimeSpecifierRegistry(this.appConfig);
|
|
56
|
-
this.serverModuleTranspiler = getAppServerModuleTranspiler(this.appConfig);
|
|
57
|
-
this.cleanDistDir();
|
|
58
|
-
this.initializeStrategies();
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Ensures the HMR output directory exists.
|
|
62
|
-
*
|
|
63
|
-
* This must not remove the directory because multiple app processes
|
|
64
|
-
* can share the same dist path during e2e runs.
|
|
65
|
-
*/
|
|
66
|
-
cleanDistDir() {
|
|
67
|
-
fileSystem.ensureDir(this.distDir);
|
|
68
|
-
}
|
|
69
8
|
/**
|
|
70
|
-
*
|
|
9
|
+
* Creates the Bun HMR manager around the shared HMR orchestration pipeline.
|
|
71
10
|
*
|
|
72
11
|
* @remarks
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
12
|
+
* Bun delegates route watching, rebuild dispatch, and runtime bundle
|
|
13
|
+
* generation to `SharedHmrManager`. The Bun subclass only supplies the
|
|
14
|
+
* transport-specific dependency graph policy and websocket hook surface.
|
|
76
15
|
*/
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (strategy.type !== HmrStrategyType.INTEGRATION || strategy.priority <= HmrStrategyType.SCRIPT) {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
try {
|
|
83
|
-
return strategy.matches(entrypointPath);
|
|
84
|
-
} catch (error) {
|
|
85
|
-
appLogger.error(error);
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Initializes core HMR strategies.
|
|
92
|
-
* Strategies are evaluated in priority order (highest first).
|
|
93
|
-
*/
|
|
94
|
-
initializeStrategies() {
|
|
95
|
-
const jsContext = {
|
|
96
|
-
getWatchedFiles: () => this.watchedFiles,
|
|
97
|
-
getSpecifierMap: () => this.runtimeSpecifierRegistry.getAll(),
|
|
98
|
-
getDistDir: () => this.distDir,
|
|
99
|
-
getPlugins: () => this.plugins,
|
|
100
|
-
getSrcDir: () => this.appConfig.absolutePaths.srcDir,
|
|
101
|
-
getPagesDir: () => this.appConfig.absolutePaths.pagesDir,
|
|
102
|
-
getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
|
|
103
|
-
getTemplateExtensions: () => this.appConfig.templatesExt,
|
|
104
|
-
getBrowserBundleService: () => this.browserBundleService,
|
|
105
|
-
getEntrypointDependencyGraph: () => this.entrypointDependencyGraph,
|
|
106
|
-
shouldProcessEntrypoint: (entrypointPath) => this.shouldJsStrategyProcessEntrypoint(entrypointPath)
|
|
107
|
-
};
|
|
108
|
-
this.strategies = [new JsHmrStrategy(jsContext), new DefaultHmrStrategy()];
|
|
16
|
+
constructor({ appConfig, bridge }) {
|
|
17
|
+
super({ appConfig, bridge });
|
|
109
18
|
}
|
|
110
19
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* @param strategy - The HMR strategy to register
|
|
20
|
+
* Reuses the shared in-memory dependency graph when possible and otherwise
|
|
21
|
+
* creates the Bun-compatible default graph implementation.
|
|
114
22
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
setPlugins(plugins) {
|
|
119
|
-
this.plugins = [...plugins];
|
|
120
|
-
}
|
|
121
|
-
setEnabled(enabled) {
|
|
122
|
-
this.enabled = enabled;
|
|
123
|
-
}
|
|
124
|
-
isEnabled() {
|
|
125
|
-
return this.enabled;
|
|
23
|
+
createEntrypointDependencyGraph(existingEntrypointDependencyGraph) {
|
|
24
|
+
return existingEntrypointDependencyGraph instanceof InMemoryEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new InMemoryEntrypointDependencyGraph();
|
|
126
25
|
}
|
|
127
26
|
/**
|
|
128
|
-
*
|
|
27
|
+
* Returns the Bun websocket hooks that attach and detach live HMR subscribers.
|
|
129
28
|
*
|
|
130
29
|
* @remarks
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
30
|
+
* `SharedHmrManager` stores the bridge behind the transport-agnostic
|
|
31
|
+
* `IClientBridge` contract because most HMR coordination only needs broadcast
|
|
32
|
+
* behavior. Bun connection lifecycle wiring is the point where that abstraction
|
|
33
|
+
* intentionally narrows back to the concrete Bun bridge so websocket instances
|
|
34
|
+
* can be tracked directly.
|
|
135
35
|
*/
|
|
136
|
-
registerSpecifierMap(map) {
|
|
137
|
-
this.runtimeSpecifierRegistry.register(map);
|
|
138
|
-
}
|
|
139
36
|
getWebSocketHandler() {
|
|
37
|
+
const bridge = this.bridge;
|
|
140
38
|
const open = (ws) => {
|
|
141
|
-
|
|
142
|
-
appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${
|
|
39
|
+
bridge.subscribe(ws);
|
|
40
|
+
appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${bridge.subscriberCount}`);
|
|
143
41
|
};
|
|
144
42
|
const close = (ws) => {
|
|
145
|
-
|
|
146
|
-
appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${
|
|
43
|
+
bridge.unsubscribe(ws);
|
|
44
|
+
appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${bridge.subscriberCount}`);
|
|
147
45
|
};
|
|
148
46
|
this.wsHandler = { open, close };
|
|
149
47
|
return {
|
|
@@ -154,180 +52,6 @@ class HmrManager {
|
|
|
154
52
|
}
|
|
155
53
|
};
|
|
156
54
|
}
|
|
157
|
-
/**
|
|
158
|
-
* Builds the client-side HMR runtime script.
|
|
159
|
-
*/
|
|
160
|
-
async buildRuntime() {
|
|
161
|
-
const runtimeSource = path.resolve(import.meta.dirname, "../../hmr/client/hmr-runtime.js");
|
|
162
|
-
const result = await this.browserBundleService.bundle({
|
|
163
|
-
profile: "hmr-runtime",
|
|
164
|
-
entrypoints: [runtimeSource],
|
|
165
|
-
outdir: this.distDir,
|
|
166
|
-
naming: "_hmr_runtime.js",
|
|
167
|
-
minify: false,
|
|
168
|
-
plugins: this.plugins
|
|
169
|
-
});
|
|
170
|
-
if (!result.success) {
|
|
171
|
-
appLogger.error("[HMR] Failed to build runtime script:", result.logs);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
getRuntimePath() {
|
|
175
|
-
return path.join(this.distDir, "_hmr_runtime.js");
|
|
176
|
-
}
|
|
177
|
-
broadcast(event) {
|
|
178
|
-
appLogger.debug(
|
|
179
|
-
`[HMR] Broadcasting ${event.type} event, path=${event.path || "all"}, subscribers=${this.bridge.subscriberCount}`
|
|
180
|
-
);
|
|
181
|
-
this.bridge.broadcast(event);
|
|
182
|
-
}
|
|
183
|
-
async handleFileChange(filePath, options = {}) {
|
|
184
|
-
const sorted = [...this.strategies].sort((a, b) => b.priority - a.priority);
|
|
185
|
-
const strategy = sorted.find((s) => {
|
|
186
|
-
try {
|
|
187
|
-
return s.matches(filePath);
|
|
188
|
-
} catch (err) {
|
|
189
|
-
appLogger.error(err);
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
if (!strategy) {
|
|
194
|
-
appLogger.warn(`[HMR] No strategy found for ${filePath}`);
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
appLogger.debug(`[HmrManager] Selected strategy: ${strategy.constructor.name}`);
|
|
198
|
-
const action = await strategy.process(filePath);
|
|
199
|
-
const shouldBroadcast = options.broadcast ?? true;
|
|
200
|
-
if (shouldBroadcast && action.type === "broadcast") {
|
|
201
|
-
if (action.events) {
|
|
202
|
-
for (const event of action.events) {
|
|
203
|
-
this.broadcast(event);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
getOutputUrl(entrypointPath) {
|
|
209
|
-
return this.watchedFiles.get(entrypointPath);
|
|
210
|
-
}
|
|
211
|
-
getWatchedFiles() {
|
|
212
|
-
return this.watchedFiles;
|
|
213
|
-
}
|
|
214
|
-
getSpecifierMap() {
|
|
215
|
-
return this.runtimeSpecifierRegistry.getAll();
|
|
216
|
-
}
|
|
217
|
-
getDistDir() {
|
|
218
|
-
return this.distDir;
|
|
219
|
-
}
|
|
220
|
-
getPlugins() {
|
|
221
|
-
return this.plugins;
|
|
222
|
-
}
|
|
223
|
-
getDefaultContext() {
|
|
224
|
-
return {
|
|
225
|
-
getWatchedFiles: () => this.watchedFiles,
|
|
226
|
-
getSpecifierMap: () => this.runtimeSpecifierRegistry.getAll(),
|
|
227
|
-
getDistDir: () => this.distDir,
|
|
228
|
-
getPlugins: () => this.plugins,
|
|
229
|
-
getSrcDir: () => this.appConfig.absolutePaths.srcDir,
|
|
230
|
-
getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
|
|
231
|
-
getPagesDir: () => this.appConfig.absolutePaths.pagesDir,
|
|
232
|
-
getBuildExecutor: () => getAppBuildExecutor(this.appConfig),
|
|
233
|
-
getBrowserBundleService: () => this.browserBundleService,
|
|
234
|
-
importServerModule: async (filePath) => await this.serverModuleTranspiler.importModule({
|
|
235
|
-
filePath,
|
|
236
|
-
outdir: path.join(resolveInternalExecutionDir(this.appConfig), ".server-modules"),
|
|
237
|
-
externalPackages: true
|
|
238
|
-
})
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
clearFailedEntrypointRegistration(entrypointPath) {
|
|
242
|
-
this.watchedFiles.delete(entrypointPath);
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Registers one integration-owned page entrypoint.
|
|
246
|
-
*
|
|
247
|
-
* @remarks
|
|
248
|
-
* Concurrent callers share one in-flight registration. The registration is
|
|
249
|
-
* cleared from the dedupe map when it settles so later callers cannot inherit a
|
|
250
|
-
* stale promise.
|
|
251
|
-
*/
|
|
252
|
-
async registerEntrypoint(entrypointPath) {
|
|
253
|
-
return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
|
|
254
|
-
emit: async (normalizedEntrypoint, outputPath) => await this.emitStrictEntrypoint(normalizedEntrypoint, outputPath),
|
|
255
|
-
getMissingOutputError: (normalizedEntrypoint, outputPath) => new Error(
|
|
256
|
-
`[HMR] Integration failed to emit entrypoint ${normalizedEntrypoint} to ${outputPath}. Page entrypoints must be produced by their owning integration.`
|
|
257
|
-
)
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Registers one generic script entrypoint.
|
|
262
|
-
*
|
|
263
|
-
* @remarks
|
|
264
|
-
* This explicit path keeps the page-entrypoint contract strict while still
|
|
265
|
-
* allowing generic script assets to use the fallback build path.
|
|
266
|
-
*/
|
|
267
|
-
async registerScriptEntrypoint(entrypointPath) {
|
|
268
|
-
return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
|
|
269
|
-
emit: async (normalizedEntrypoint, outputPath) => await this.emitScriptEntrypoint(normalizedEntrypoint, outputPath),
|
|
270
|
-
getMissingOutputError: (normalizedEntrypoint) => new Error(`[HMR] Failed to register script entrypoint: ${normalizedEntrypoint}`)
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Performs strict integration-owned registration for one normalized path.
|
|
275
|
-
*
|
|
276
|
-
* @remarks
|
|
277
|
-
* The manager reserves the output URL, removes any stale emitted file, runs
|
|
278
|
-
* strategy processing without broadcasting, and then verifies that the owning
|
|
279
|
-
* integration emitted the expected file.
|
|
280
|
-
*/
|
|
281
|
-
async emitStrictEntrypoint(entrypointPath, _outputPath) {
|
|
282
|
-
await this.handleFileChange(entrypointPath, { broadcast: false });
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Performs registration for a generic script asset.
|
|
286
|
-
*
|
|
287
|
-
* @remarks
|
|
288
|
-
* Strategies get the first chance to emit output. If no output exists after
|
|
289
|
-
* that pass, Bun falls back to the generic browser build for this explicit
|
|
290
|
-
* script-only path.
|
|
291
|
-
*/
|
|
292
|
-
async emitScriptEntrypoint(entrypointPath, outputPath) {
|
|
293
|
-
const naming = path.relative(this.distDir, outputPath).split(path.sep).join("/");
|
|
294
|
-
await this.handleFileChange(entrypointPath, { broadcast: false });
|
|
295
|
-
if (!fileSystem.exists(outputPath)) {
|
|
296
|
-
const buildResult = await this.browserBundleService.bundle({
|
|
297
|
-
profile: "hmr-entrypoint",
|
|
298
|
-
entrypoints: [entrypointPath],
|
|
299
|
-
outdir: this.distDir,
|
|
300
|
-
naming,
|
|
301
|
-
minify: false,
|
|
302
|
-
plugins: this.plugins
|
|
303
|
-
});
|
|
304
|
-
if (!buildResult.success) {
|
|
305
|
-
appLogger.error(
|
|
306
|
-
`[HMR] Generic script entrypoint build failed for ${entrypointPath}:`,
|
|
307
|
-
buildResult.logs
|
|
308
|
-
);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Stops active watchers and releases retained registration state.
|
|
314
|
-
*
|
|
315
|
-
* @remarks
|
|
316
|
-
* Emitted `_hmr` files remain on disk because parallel app processes may share
|
|
317
|
-
* the same dist directory. The in-memory indexes are cleared so stale
|
|
318
|
-
* entrypoints and specifier maps cannot leak through a reused manager object.
|
|
319
|
-
*/
|
|
320
|
-
stop() {
|
|
321
|
-
this.entrypointRegistrations.clear();
|
|
322
|
-
for (const watcher of this.watchers.values()) {
|
|
323
|
-
watcher.close();
|
|
324
|
-
}
|
|
325
|
-
this.watchers.clear();
|
|
326
|
-
this.watchedFiles.clear();
|
|
327
|
-
this.runtimeSpecifierRegistry.clear();
|
|
328
|
-
this.entrypointDependencyGraph.reset();
|
|
329
|
-
this.plugins = [];
|
|
330
|
-
}
|
|
331
55
|
}
|
|
332
56
|
export {
|
|
333
57
|
HmrManager
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { BunEcopagesApp, createApp } from './create-app.js';
|
|
2
2
|
export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BunEcopagesApp, createApp } from "./create-app.js";
|
|
2
2
|
import { defineApiHandler, defineGroupHandler } from "../shared/define-api-handler.js";
|
|
3
3
|
export {
|
|
4
|
-
|
|
4
|
+
BunEcopagesApp,
|
|
5
5
|
createApp,
|
|
6
6
|
defineApiHandler,
|
|
7
7
|
defineGroupHandler
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Server } from 'bun';
|
|
2
|
+
import type { RuntimeHost, RuntimeHostStartOptions } from '../shared/runtime-host.js';
|
|
3
|
+
type BunRuntimeProvider = {
|
|
4
|
+
serve(options: Bun.Serve.Options<unknown>): Server<unknown>;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Bun runtime host that adapts the shared runtime lifecycle contract onto
|
|
8
|
+
* `Bun.serve()`.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* The injected runtime provider exists so tests and non-Bun call sites can
|
|
12
|
+
* construct the host without assuming `globalThis.Bun` is present. The provider
|
|
13
|
+
* returns `null` instead of `undefined` to keep that absence explicit at the
|
|
14
|
+
* host boundary.
|
|
15
|
+
*/
|
|
16
|
+
export declare class BunRuntimeHost<WebSocketData = undefined> implements RuntimeHost<Server<WebSocketData>, Bun.Serve.Options<WebSocketData>> {
|
|
17
|
+
private readonly runtimeProvider;
|
|
18
|
+
/**
|
|
19
|
+
* Creates a Bun runtime host with an injectable runtime lookup.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* Production code uses the default `getBunRuntime()` lookup. Tests may inject a
|
|
23
|
+
* fake provider that either supplies a `serve()` implementation or returns
|
|
24
|
+
* `null` to verify the runtime-required failure path.
|
|
25
|
+
*/
|
|
26
|
+
constructor(runtimeProvider?: () => BunRuntimeProvider | null);
|
|
27
|
+
/**
|
|
28
|
+
* Starts the Bun server using the already-composed serve options from the
|
|
29
|
+
* shared application bootstrap.
|
|
30
|
+
*/
|
|
31
|
+
start(options: RuntimeHostStartOptions<Bun.Serve.Options<WebSocketData>>): Promise<Server<WebSocketData>>;
|
|
32
|
+
/**
|
|
33
|
+
* Stops the active Bun server immediately.
|
|
34
|
+
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* The shared runtime-host contract accepts optional stop options, but Bun's
|
|
37
|
+
* server API already models the shutdown behavior directly. This host always
|
|
38
|
+
* uses Bun's forceful stop path so preview and embedded runtime shutdowns do
|
|
39
|
+
* not linger on open connections.
|
|
40
|
+
*/
|
|
41
|
+
stop(server: Server<WebSocketData>): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Resolves the externally reported runtime origin from the active server.
|
|
44
|
+
*
|
|
45
|
+
* @remarks
|
|
46
|
+
* Bun may finalize the hostname or port differently from the requested serve
|
|
47
|
+
* options. This method prefers the live server binding and only falls back to
|
|
48
|
+
* the requested options when Bun leaves a field unset.
|
|
49
|
+
*/
|
|
50
|
+
getOrigin(server: Server<WebSocketData>, fallbackServeOptions: Bun.Serve.Options<WebSocketData>): string;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getBunRuntime } from "../../utils/runtime.js";
|
|
2
|
+
import { resolveServeRuntimeOrigin } from "../shared/runtime-app-bootstrap.js";
|
|
3
|
+
class BunRuntimeHost {
|
|
4
|
+
/**
|
|
5
|
+
* Creates a Bun runtime host with an injectable runtime lookup.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Production code uses the default `getBunRuntime()` lookup. Tests may inject a
|
|
9
|
+
* fake provider that either supplies a `serve()` implementation or returns
|
|
10
|
+
* `null` to verify the runtime-required failure path.
|
|
11
|
+
*/
|
|
12
|
+
constructor(runtimeProvider = () => getBunRuntime() ?? null) {
|
|
13
|
+
this.runtimeProvider = runtimeProvider;
|
|
14
|
+
}
|
|
15
|
+
runtimeProvider;
|
|
16
|
+
/**
|
|
17
|
+
* Starts the Bun server using the already-composed serve options from the
|
|
18
|
+
* shared application bootstrap.
|
|
19
|
+
*/
|
|
20
|
+
async start(options) {
|
|
21
|
+
const bun = this.runtimeProvider();
|
|
22
|
+
if (!bun) {
|
|
23
|
+
throw new Error("Bun runtime is required for the Bun adapter");
|
|
24
|
+
}
|
|
25
|
+
return bun.serve(options.serveOptions);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Stops the active Bun server immediately.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* The shared runtime-host contract accepts optional stop options, but Bun's
|
|
32
|
+
* server API already models the shutdown behavior directly. This host always
|
|
33
|
+
* uses Bun's forceful stop path so preview and embedded runtime shutdowns do
|
|
34
|
+
* not linger on open connections.
|
|
35
|
+
*/
|
|
36
|
+
async stop(server) {
|
|
37
|
+
server.stop(true);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolves the externally reported runtime origin from the active server.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* Bun may finalize the hostname or port differently from the requested serve
|
|
44
|
+
* options. This method prefers the live server binding and only falls back to
|
|
45
|
+
* the requested options when Bun leaves a field unset.
|
|
46
|
+
*/
|
|
47
|
+
getOrigin(server, fallbackServeOptions) {
|
|
48
|
+
return resolveServeRuntimeOrigin({
|
|
49
|
+
hostname: server.hostname ?? fallbackServeOptions.hostname,
|
|
50
|
+
port: server.port ?? fallbackServeOptions.port
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
BunRuntimeHost
|
|
56
|
+
};
|