@ecopages/core 0.2.0-alpha.4 → 0.2.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +268 -14
- package/package.json +92 -110
- package/src/adapters/README.md +39 -0
- 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 +30 -68
- package/src/adapters/bun/hmr-manager.js +30 -212
- package/src/adapters/bun/index.d.ts +2 -3
- package/src/adapters/bun/index.js +3 -3
- 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 +93 -32
- package/src/adapters/bun/server-adapter.js +166 -89
- 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 +2 -6
- package/src/adapters/index.js +2 -8
- 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 +38 -49
- package/src/adapters/node/node-hmr-manager.js +31 -219
- 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 +20 -72
- package/src/adapters/node/server-adapter.js +99 -203
- package/src/adapters/node/static-content-server.d.ts +37 -1
- package/src/adapters/node/static-content-server.js +29 -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/{define-api-handler.d.ts → 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 -13
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
- package/src/adapters/shared/file-route-middleware-pipeline.js +3 -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 +20 -16
- package/src/adapters/shared/fs-server-response-matcher.js +76 -45
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
- package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
- package/src/adapters/shared/hmr-html-response.d.ts +22 -0
- package/src/adapters/shared/hmr-html-response.js +33 -0
- package/src/adapters/shared/render-context.d.ts +5 -3
- package/src/adapters/shared/render-context.js +27 -3
- 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 +33 -12
- package/src/adapters/shared/server-adapter.js +215 -132
- package/src/adapters/shared/server-route-handler.d.ts +5 -5
- package/src/adapters/shared/server-route-handler.js +7 -16
- package/src/adapters/shared/server-static-builder.d.ts +41 -8
- package/src/adapters/shared/server-static-builder.js +65 -11
- package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
- package/src/adapters/shared/shared-hmr-manager.js +240 -0
- package/src/adapters/shared/static-preview-host.d.ts +10 -0
- package/src/build/README.md +107 -0
- package/src/build/build-adapter.d.ts +176 -3
- package/src/build/build-adapter.js +619 -16
- package/src/build/build-manifest.d.ts +27 -0
- package/src/build/build-manifest.js +30 -0
- package/src/build/dev-build-coordinator.d.ts +72 -0
- package/src/build/dev-build-coordinator.js +154 -0
- package/src/build/esbuild-build-adapter.d.ts +16 -6
- package/src/build/esbuild-build-adapter.js +202 -74
- package/src/build/runtime-build-executor.d.ts +14 -0
- package/src/build/runtime-build-executor.js +22 -0
- package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
- package/src/build/runtime-specifier-alias-plugin.js +35 -0
- package/src/build/runtime-specifier-aliases.d.ts +5 -0
- package/src/build/runtime-specifier-aliases.js +95 -0
- package/src/config/README.md +36 -0
- package/src/config/config-builder.d.ts +54 -29
- package/src/config/config-builder.js +256 -50
- package/src/{constants.d.ts → config/constants.d.ts} +13 -0
- package/src/{constants.js → config/constants.js} +4 -0
- package/src/declarations.d.ts +19 -14
- 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/README.md +70 -16
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.js +63 -54
- package/src/eco/eco.types.d.ts +69 -6
- 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/README.md +26 -0
- package/src/hmr/client/hmr-runtime.d.ts +1 -6
- package/src/hmr/client/hmr-runtime.js +38 -7
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
- package/src/hmr/hmr.postcss.test.e2e.js +31 -0
- package/src/hmr/hmr.test.e2e.js +26 -33
- 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 +46 -48
- package/src/hmr/strategies/js-hmr-strategy.js +60 -75
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +4 -3
- package/src/index.js +16 -5
- package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
- package/src/integrations/ghtml/ghtml-renderer.js +27 -30
- 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 +35 -0
- package/src/plugins/alias-resolver-plugin.d.ts +1 -0
- package/src/plugins/alias-resolver-plugin.js +27 -5
- package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
- package/src/plugins/eco-component-meta-plugin.js +42 -24
- 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 +147 -29
- package/src/plugins/integration-plugin.js +103 -14
- package/src/plugins/processor.d.ts +17 -2
- package/src/plugins/processor.js +22 -3
- package/src/plugins/runtime-capability.d.ts +9 -0
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +83 -325
- package/src/route-renderer/README.md +73 -90
- 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 +534 -0
- package/src/route-renderer/orchestration/integration-renderer.js +986 -0
- 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 +134 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.js +442 -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/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
- package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
- 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 +90 -0
- package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
- package/src/route-renderer/route-renderer.d.ts +57 -14
- package/src/route-renderer/route-renderer.js +30 -18
- package/src/router/README.md +94 -0
- package/src/router/client/link-intent.d.ts +53 -0
- package/src/router/client/link-intent.js +34 -0
- package/src/router/client/link-intent.test.browser.d.ts +1 -0
- package/src/router/client/link-intent.test.browser.js +43 -0
- package/src/router/client/navigation-coordinator.d.ts +169 -0
- package/src/router/client/navigation-coordinator.js +215 -0
- package/src/router/server/route-registry.d.ts +78 -0
- package/src/router/server/route-registry.js +262 -0
- package/src/services/README.md +28 -0
- 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 +103 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
- package/src/services/assets/asset-processing-service/assets.types.js +0 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -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 -0
- package/src/services/assets/asset-processing-service/index.js +6 -0
- 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/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
- package/src/services/assets/asset-processing-service/processors/index.js +5 -0
- package/src/services/{asset-processing-service → 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 +119 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
- package/src/services/{asset-processing-service → 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 +59 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
- 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 +73 -0
- package/src/services/assets/browser-bundle.service.js +41 -0
- package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
- package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
- package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
- package/src/services/html/html-rewriter-provider.service.js +68 -0
- package/src/services/html/html-transformer.service.d.ts +96 -0
- package/src/services/html/html-transformer.service.js +287 -0
- package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
- package/src/services/invalidation/development-invalidation.service.js +190 -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 +24 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
- 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/node-bootstrap-plugin.d.ts +42 -0
- package/src/services/module-loading/node-bootstrap-plugin.js +297 -0
- package/src/services/module-loading/page-module-import.service.d.ts +95 -0
- package/src/services/module-loading/page-module-import.service.js +191 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
- package/src/services/module-loading/server-module-transpiler.service.js +64 -0
- 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 +118 -0
- package/src/services/runtime-state/dev-graph.service.js +162 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
- package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
- package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
- package/src/static-site-generator/README.md +26 -0
- package/src/static-site-generator/static-site-generator.d.ts +67 -20
- package/src/static-site-generator/static-site-generator.js +182 -138
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
- package/src/types/internal-types.js +0 -0
- package/src/{public-types.d.ts → types/public-types.d.ts} +239 -35
- 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.d.ts +11 -0
- package/src/utils/resolve-work-dir.js +31 -0
- package/src/watchers/project-watcher.d.ts +40 -29
- package/src/watchers/project-watcher.js +126 -116
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +6 -6
- package/CHANGELOG.md +0 -91
- 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/define-api-handler.d.ts +0 -61
- package/src/adapters/bun/define-api-handler.ts +0 -114
- package/src/adapters/bun/hmr-manager.ts +0 -296
- package/src/adapters/bun/index.ts +0 -3
- package/src/adapters/bun/server-adapter.ts +0 -492
- package/src/adapters/bun/server-lifecycle.d.ts +0 -52
- package/src/adapters/bun/server-lifecycle.js +0 -120
- package/src/adapters/bun/server-lifecycle.ts +0 -154
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -4
- package/src/adapters/node/index.js +0 -8
- package/src/adapters/node/index.ts +0 -9
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -289
- package/src/adapters/node/server-adapter.ts +0 -561
- package/src/adapters/node/static-content-server.ts +0 -203
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
- package/src/adapters/shared/render-context.ts +0 -105
- package/src/adapters/shared/server-adapter.ts +0 -442
- package/src/adapters/shared/server-route-handler.ts +0 -166
- package/src/adapters/shared/server-static-builder.ts +0 -82
- package/src/build/build-adapter.ts +0 -132
- package/src/build/build-types.ts +0 -83
- package/src/build/esbuild-build-adapter.ts +0 -510
- package/src/config/config-builder.ts +0 -474
- package/src/constants.ts +0 -39
- package/src/create-app.ts +0 -87
- package/src/define-api-handler.js +0 -15
- package/src/define-api-handler.ts +0 -66
- 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 -77
- package/src/eco/component-render-context.ts +0 -202
- package/src/eco/eco.ts +0 -221
- package/src/eco/eco.types.ts +0 -202
- 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 -121
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.test.e2e.ts +0 -75
- 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 -93
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -212
- package/src/plugins/alias-resolver-plugin.ts +0 -45
- package/src/plugins/eco-component-meta-plugin.ts +0 -474
- package/src/plugins/integration-plugin.ts +0 -184
- package/src/plugins/processor.ts +0 -220
- package/src/public-types.ts +0 -1260
- package/src/route-renderer/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph.js +0 -72
- package/src/route-renderer/component-graph.ts +0 -159
- package/src/route-renderer/component-marker.d.ts +0 -52
- package/src/route-renderer/component-marker.js +0 -46
- package/src/route-renderer/component-marker.ts +0 -117
- package/src/route-renderer/dependency-resolver.js +0 -428
- package/src/route-renderer/dependency-resolver.ts +0 -596
- package/src/route-renderer/html-post-processing.service.d.ts +0 -40
- package/src/route-renderer/html-post-processing.service.js +0 -86
- package/src/route-renderer/html-post-processing.service.ts +0 -103
- package/src/route-renderer/integration-renderer.d.ts +0 -339
- package/src/route-renderer/integration-renderer.js +0 -526
- package/src/route-renderer/integration-renderer.ts +0 -696
- package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
- package/src/route-renderer/marker-graph-resolver.js +0 -93
- package/src/route-renderer/marker-graph-resolver.ts +0 -153
- package/src/route-renderer/page-module-loader.d.ts +0 -61
- package/src/route-renderer/page-module-loader.ts +0 -153
- package/src/route-renderer/render-execution.service.d.ts +0 -69
- package/src/route-renderer/render-execution.service.js +0 -91
- package/src/route-renderer/render-execution.service.ts +0 -158
- package/src/route-renderer/render-preparation.service.d.ts +0 -112
- package/src/route-renderer/render-preparation.service.js +0 -243
- package/src/route-renderer/render-preparation.service.ts +0 -358
- package/src/route-renderer/route-renderer.ts +0 -80
- package/src/router/fs-router-scanner.d.ts +0 -41
- package/src/router/fs-router-scanner.js +0 -155
- package/src/router/fs-router-scanner.ts +0 -217
- package/src/router/fs-router.d.ts +0 -26
- package/src/router/fs-router.js +0 -100
- package/src/router/fs-router.ts +0 -122
- package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
- package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
- package/src/services/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/asset-processing-service/assets.types.ts +0 -112
- package/src/services/asset-processing-service/index.d.ts +0 -3
- package/src/services/asset-processing-service/index.js +0 -3
- package/src/services/asset-processing-service/index.ts +0 -3
- package/src/services/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
- package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
- package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
- package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
- package/src/services/asset-processing-service/processors/index.d.ts +0 -5
- package/src/services/asset-processing-service/processors/index.js +0 -5
- package/src/services/asset-processing-service/processors/index.ts +0 -5
- package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
- package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
- package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
- package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
- package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
- package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
- 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/html-transformer.service.d.ts +0 -50
- package/src/services/html-transformer.service.js +0 -163
- package/src/services/html-transformer.service.ts +0 -217
- package/src/services/page-module-import.service.d.ts +0 -37
- package/src/services/page-module-import.service.js +0 -88
- package/src/services/page-module-import.service.ts +0 -129
- package/src/services/page-request-cache-coordinator.service.ts +0 -128
- package/src/services/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 -359
- 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/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 -344
- /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
- /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/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
- /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
|
@@ -1,91 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
|
|
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
|
-
class HmrManager {
|
|
11
|
-
appConfig;
|
|
12
|
-
bridge;
|
|
13
|
-
/** Keep track of watchers */
|
|
14
|
-
watchers = /* @__PURE__ */ new Map();
|
|
15
|
-
/** entrypoint -> output path */
|
|
16
|
-
watchedFiles = /* @__PURE__ */ new Map();
|
|
17
|
-
/** bare specifier -> runtime URL (e.g., 'react' -> '/assets/vendors/react.js') */
|
|
18
|
-
specifierMap = /* @__PURE__ */ new Map();
|
|
19
|
-
distDir;
|
|
20
|
-
plugins = [];
|
|
21
|
-
enabled = true;
|
|
22
|
-
strategies = [];
|
|
1
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
2
|
+
import {
|
|
3
|
+
InMemoryEntrypointDependencyGraph
|
|
4
|
+
} from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
|
|
5
|
+
import { SharedHmrManager } from "../shared/shared-hmr-manager.js";
|
|
6
|
+
class HmrManager extends SharedHmrManager {
|
|
23
7
|
wsHandler;
|
|
24
|
-
constructor({ appConfig, bridge }) {
|
|
25
|
-
this.appConfig = appConfig;
|
|
26
|
-
this.bridge = bridge;
|
|
27
|
-
this.distDir = path.join(this.appConfig.absolutePaths.distDir, RESOLVED_ASSETS_DIR, "_hmr");
|
|
28
|
-
this.cleanDistDir();
|
|
29
|
-
this.initializeStrategies();
|
|
30
|
-
}
|
|
31
8
|
/**
|
|
32
|
-
*
|
|
9
|
+
* Creates the Bun HMR manager around the shared HMR orchestration pipeline.
|
|
33
10
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
fileSystem.ensureDir(this.distDir);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Initializes core HMR strategies.
|
|
42
|
-
* Strategies are evaluated in priority order (highest first).
|
|
11
|
+
* @remarks
|
|
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.
|
|
43
15
|
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
getWatchedFiles: () => this.watchedFiles,
|
|
47
|
-
getSpecifierMap: () => this.specifierMap,
|
|
48
|
-
getDistDir: () => this.distDir,
|
|
49
|
-
getPlugins: () => this.plugins,
|
|
50
|
-
getSrcDir: () => this.appConfig.absolutePaths.srcDir
|
|
51
|
-
};
|
|
52
|
-
this.strategies = [new JsHmrStrategy(jsContext), new DefaultHmrStrategy()];
|
|
16
|
+
constructor({ appConfig, bridge }) {
|
|
17
|
+
super({ appConfig, bridge });
|
|
53
18
|
}
|
|
54
19
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* @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.
|
|
58
22
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
setPlugins(plugins) {
|
|
63
|
-
this.plugins = [...plugins];
|
|
64
|
-
}
|
|
65
|
-
setEnabled(enabled) {
|
|
66
|
-
this.enabled = enabled;
|
|
67
|
-
}
|
|
68
|
-
isEnabled() {
|
|
69
|
-
return this.enabled;
|
|
23
|
+
createEntrypointDependencyGraph(existingEntrypointDependencyGraph) {
|
|
24
|
+
return existingEntrypointDependencyGraph instanceof InMemoryEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new InMemoryEntrypointDependencyGraph();
|
|
70
25
|
}
|
|
71
26
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* @
|
|
27
|
+
* Returns the Bun websocket hooks that attach and detach live HMR subscribers.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
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.
|
|
75
35
|
*/
|
|
76
|
-
registerSpecifierMap(map) {
|
|
77
|
-
for (const [specifier, url] of Object.entries(map)) {
|
|
78
|
-
this.specifierMap.set(specifier, url);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
36
|
getWebSocketHandler() {
|
|
37
|
+
const bridge = this.bridge;
|
|
82
38
|
const open = (ws) => {
|
|
83
|
-
|
|
84
|
-
appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${
|
|
39
|
+
bridge.subscribe(ws);
|
|
40
|
+
appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${bridge.subscriberCount}`);
|
|
85
41
|
};
|
|
86
42
|
const close = (ws) => {
|
|
87
|
-
|
|
88
|
-
appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${
|
|
43
|
+
bridge.unsubscribe(ws);
|
|
44
|
+
appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${bridge.subscriberCount}`);
|
|
89
45
|
};
|
|
90
46
|
this.wsHandler = { open, close };
|
|
91
47
|
return {
|
|
@@ -96,144 +52,6 @@ class HmrManager {
|
|
|
96
52
|
}
|
|
97
53
|
};
|
|
98
54
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Builds the client-side HMR runtime script.
|
|
101
|
-
*/
|
|
102
|
-
async buildRuntime() {
|
|
103
|
-
const runtimeSource = path.resolve(import.meta.dirname, "../../hmr/client/hmr-runtime.js");
|
|
104
|
-
const result = await defaultBuildAdapter.build({
|
|
105
|
-
entrypoints: [runtimeSource],
|
|
106
|
-
outdir: this.distDir,
|
|
107
|
-
naming: "_hmr_runtime.js",
|
|
108
|
-
minify: false,
|
|
109
|
-
...defaultBuildAdapter.getTranspileOptions("hmr-runtime"),
|
|
110
|
-
plugins: this.plugins
|
|
111
|
-
});
|
|
112
|
-
if (!result.success) {
|
|
113
|
-
appLogger.error("[HMR] Failed to build runtime script:", result.logs);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
getRuntimePath() {
|
|
117
|
-
return path.join(this.distDir, "_hmr_runtime.js");
|
|
118
|
-
}
|
|
119
|
-
broadcast(event) {
|
|
120
|
-
appLogger.debug(
|
|
121
|
-
`[HMR] Broadcasting ${event.type} event, path=${event.path || "all"}, subscribers=${this.bridge.subscriberCount}`
|
|
122
|
-
);
|
|
123
|
-
this.bridge.broadcast(event);
|
|
124
|
-
}
|
|
125
|
-
canHandleFileChange(filePath) {
|
|
126
|
-
const sorted = [...this.strategies].sort((a, b) => b.priority - a.priority);
|
|
127
|
-
const strategy = sorted.find((candidate) => {
|
|
128
|
-
try {
|
|
129
|
-
return candidate.matches(filePath);
|
|
130
|
-
} catch (err) {
|
|
131
|
-
appLogger.error(`[HmrManager] Error checking match for ${candidate.constructor.name}:`, err);
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
return strategy !== void 0 && strategy.type !== HmrStrategyType.FALLBACK;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Handles file changes using registered HMR strategies.
|
|
139
|
-
* Strategies are evaluated in priority order until one matches.
|
|
140
|
-
* @param filePath - Absolute path to the changed file
|
|
141
|
-
*/
|
|
142
|
-
async handleFileChange(filePath) {
|
|
143
|
-
const sorted = [...this.strategies].sort((a, b) => b.priority - a.priority);
|
|
144
|
-
const strategy = sorted.find((s) => {
|
|
145
|
-
try {
|
|
146
|
-
return s.matches(filePath);
|
|
147
|
-
} catch (err) {
|
|
148
|
-
appLogger.error(`[HmrManager] Error checking match for ${s.constructor.name}:`, err);
|
|
149
|
-
return false;
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
if (!strategy) {
|
|
153
|
-
appLogger.warn(`[HMR] No strategy found for ${filePath}`);
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
appLogger.debug(`[HmrManager] Selected strategy: ${strategy.constructor.name}`);
|
|
157
|
-
const action = await strategy.process(filePath);
|
|
158
|
-
if (action.type === "broadcast") {
|
|
159
|
-
if (action.events) {
|
|
160
|
-
for (const event of action.events) {
|
|
161
|
-
this.broadcast(event);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Registers a client entrypoint to be built and watched by Bun.
|
|
168
|
-
*/
|
|
169
|
-
getOutputUrl(entrypointPath) {
|
|
170
|
-
return this.watchedFiles.get(entrypointPath);
|
|
171
|
-
}
|
|
172
|
-
getWatchedFiles() {
|
|
173
|
-
return this.watchedFiles;
|
|
174
|
-
}
|
|
175
|
-
getSpecifierMap() {
|
|
176
|
-
return this.specifierMap;
|
|
177
|
-
}
|
|
178
|
-
getDistDir() {
|
|
179
|
-
return this.distDir;
|
|
180
|
-
}
|
|
181
|
-
getPlugins() {
|
|
182
|
-
return this.plugins;
|
|
183
|
-
}
|
|
184
|
-
getDefaultContext() {
|
|
185
|
-
return {
|
|
186
|
-
getWatchedFiles: () => this.watchedFiles,
|
|
187
|
-
getSpecifierMap: () => this.specifierMap,
|
|
188
|
-
getDistDir: () => this.distDir,
|
|
189
|
-
getPlugins: () => this.plugins,
|
|
190
|
-
getSrcDir: () => this.appConfig.absolutePaths.srcDir,
|
|
191
|
-
getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
|
|
192
|
-
getPagesDir: () => this.appConfig.absolutePaths.pagesDir
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
async registerEntrypoint(entrypointPath) {
|
|
196
|
-
if (this.watchedFiles.has(entrypointPath)) {
|
|
197
|
-
return this.watchedFiles.get(entrypointPath);
|
|
198
|
-
}
|
|
199
|
-
const srcDir = this.appConfig.absolutePaths.srcDir;
|
|
200
|
-
const relativePath = path.relative(srcDir, entrypointPath);
|
|
201
|
-
const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, ".js");
|
|
202
|
-
const encodedPathJs = this.encodeDynamicSegments(relativePathJs);
|
|
203
|
-
const urlPath = encodedPathJs.split(path.sep).join("/");
|
|
204
|
-
const outputUrl = `/${path.join(RESOLVED_ASSETS_DIR, "_hmr", urlPath)}`;
|
|
205
|
-
const outputPath = path.join(this.distDir, urlPath);
|
|
206
|
-
this.watchedFiles.set(entrypointPath, outputUrl);
|
|
207
|
-
await this.handleFileChange(entrypointPath);
|
|
208
|
-
if (!fileSystem.exists(outputPath)) {
|
|
209
|
-
const fallback = await defaultBuildAdapter.build({
|
|
210
|
-
entrypoints: [entrypointPath],
|
|
211
|
-
outdir: this.distDir,
|
|
212
|
-
naming: encodedPathJs,
|
|
213
|
-
minify: false,
|
|
214
|
-
external: Array.from(this.specifierMap.keys()),
|
|
215
|
-
...defaultBuildAdapter.getTranspileOptions("hmr-entrypoint"),
|
|
216
|
-
plugins: this.plugins
|
|
217
|
-
});
|
|
218
|
-
if (!fallback.success) {
|
|
219
|
-
appLogger.error(`[HMR] Fallback build failed for ${entrypointPath}:`, fallback.logs);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
return outputUrl;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Encodes dynamic route segments (brackets) in file paths.
|
|
226
|
-
* Converts `[slug]` to `_slug_` to avoid filesystem/URL issues.
|
|
227
|
-
*/
|
|
228
|
-
encodeDynamicSegments(filepath) {
|
|
229
|
-
return filepath.replace(/\[([^\]]+)\]/g, "_$1_");
|
|
230
|
-
}
|
|
231
|
-
stop() {
|
|
232
|
-
for (const watcher of this.watchers.values()) {
|
|
233
|
-
watcher.close();
|
|
234
|
-
}
|
|
235
|
-
this.watchers.clear();
|
|
236
|
-
}
|
|
237
55
|
}
|
|
238
56
|
export {
|
|
239
57
|
HmrManager
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { defineApiHandler, defineGroupHandler } from '
|
|
3
|
-
export type { GroupHandler } from './define-api-handler.js';
|
|
1
|
+
export { BunEcopagesApp, createApp } from './create-app.js';
|
|
2
|
+
export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { defineApiHandler, defineGroupHandler } from "
|
|
1
|
+
import { BunEcopagesApp, createApp } from "./create-app.js";
|
|
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
|
+
};
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import type { Server, WebSocketHandler } from 'bun';
|
|
2
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
3
|
-
import type { ApiHandler, ErrorHandler, StaticRoute } from '../../public-types.js';
|
|
2
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
3
|
+
import type { ApiHandler, ErrorHandler, StaticRoute } from '../../types/public-types.js';
|
|
4
4
|
import { SharedServerAdapter } from '../shared/server-adapter.js';
|
|
5
5
|
import type { ServerAdapterResult } from '../abstract/server-adapter.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { HmrManager } from './hmr-manager';
|
|
10
|
-
import { ServerLifecycle } from './server-lifecycle.js';
|
|
6
|
+
import type { StaticPreviewHost } from '../shared/static-preview-host.js';
|
|
7
|
+
import { ClientBridge } from './client-bridge.js';
|
|
8
|
+
import { HmrManager } from './hmr-manager.js';
|
|
11
9
|
type BunServerInstance = Server<unknown>;
|
|
12
10
|
type BunNativeServeOptions = Bun.Serve.Options<unknown>;
|
|
13
11
|
export type BunServerRoutes = Bun.Serve.Routes<unknown, string>;
|
|
@@ -18,6 +16,15 @@ export type BunServeOptions = Omit<BunNativeServeOptions, 'fetch'> & {
|
|
|
18
16
|
fetch?: (this: BunServerInstance, request: Request, server: BunServerInstance) => Promise<void | Response>;
|
|
19
17
|
websocket?: WebSocketHandler<unknown>;
|
|
20
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Construction parameters for the Bun server adapter.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* Callers normally provide only the app-facing fields such as routes, handlers,
|
|
24
|
+
* and `serveOptions`. The transport collaborators remain optional here because
|
|
25
|
+
* `createBunServerAdapter()` fills in Bun-specific defaults before the concrete
|
|
26
|
+
* adapter instance is created.
|
|
27
|
+
*/
|
|
21
28
|
export interface BunServerAdapterParams {
|
|
22
29
|
appConfig: EcoPagesAppConfig;
|
|
23
30
|
runtimeOrigin: string;
|
|
@@ -28,11 +35,9 @@ export interface BunServerAdapterParams {
|
|
|
28
35
|
options?: {
|
|
29
36
|
watch?: boolean;
|
|
30
37
|
};
|
|
31
|
-
lifecycle?: ServerLifecycle;
|
|
32
|
-
staticBuilderFactory?: (params: ServerStaticBuilderParams) => ServerStaticBuilder;
|
|
33
|
-
routeHandlerFactory?: (params: ServerRouteHandlerParams) => ServerRouteHandler;
|
|
34
38
|
hmrManager?: HmrManager;
|
|
35
39
|
bridge?: ClientBridge;
|
|
40
|
+
previewHost?: StaticPreviewHost;
|
|
36
41
|
}
|
|
37
42
|
export interface BunServerAdapterResult extends ServerAdapterResult {
|
|
38
43
|
getServerOptions: (options?: {
|
|
@@ -44,6 +49,16 @@ export interface BunServerAdapterResult extends ServerAdapterResult {
|
|
|
44
49
|
completeInitialization: (server?: BunServerInstance | null) => Promise<void>;
|
|
45
50
|
handleRequest: (request: Request) => Promise<Response>;
|
|
46
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Bun transport adapter that wires shared Ecopages request handling onto a live
|
|
54
|
+
* `Bun.serve()` runtime.
|
|
55
|
+
*
|
|
56
|
+
* @remarks
|
|
57
|
+
* The adapter owns Bun-specific concerns that do not exist in the shared server
|
|
58
|
+
* abstraction: websocket-backed HMR transport, runtime plugin registration, and
|
|
59
|
+
* preview-host startup for static builds. Routing, rendering, and response
|
|
60
|
+
* composition still delegate to the shared server adapter base.
|
|
61
|
+
*/
|
|
47
62
|
export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapterParams, BunServerAdapterResult> {
|
|
48
63
|
appConfig: EcoPagesAppConfig;
|
|
49
64
|
options: BunServerAdapterParams['options'];
|
|
@@ -52,24 +67,37 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
|
|
|
52
67
|
protected staticRoutes: StaticRoute[];
|
|
53
68
|
protected errorHandler?: ErrorHandler;
|
|
54
69
|
private bridge;
|
|
55
|
-
private lifecycle;
|
|
56
70
|
hmrManager: HmrManager;
|
|
57
71
|
private initializationPromise;
|
|
58
72
|
private fullyInitialized;
|
|
59
73
|
serverInstance: BunServerInstance | null;
|
|
60
|
-
private readonly
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
*
|
|
68
|
-
*
|
|
74
|
+
private readonly previewHost;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a Bun server adapter with already-resolved runtime collaborators.
|
|
77
|
+
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* The public params interface keeps `hmrManager`, `bridge`, and `previewHost`
|
|
80
|
+
* optional so factory callers can omit them. By the time the concrete adapter
|
|
81
|
+
* is constructed, those collaborators are mandatory because the adapter cannot
|
|
82
|
+
* initialize Bun HMR or preview flows without them.
|
|
83
|
+
*/
|
|
84
|
+
constructor({ appConfig, runtimeOrigin, serveOptions, apiHandlers, staticRoutes, errorHandler, options, hmrManager, bridge, previewHost, }: BunServerAdapterParams & {
|
|
85
|
+
hmrManager: HmrManager;
|
|
86
|
+
bridge: ClientBridge;
|
|
87
|
+
previewHost: StaticPreviewHost;
|
|
88
|
+
});
|
|
89
|
+
/**
|
|
90
|
+
* Returns whether adapter-level HTML responses still need HMR runtime injection.
|
|
91
|
+
*
|
|
92
|
+
* @remarks
|
|
93
|
+
* Filesystem-routed pages are wrapped later in the shared route layer. This
|
|
94
|
+
* adapter-level check exists for explicit API handlers that return HTML and
|
|
95
|
+
* would otherwise bypass the route wrapper entirely.
|
|
69
96
|
*/
|
|
70
97
|
private shouldInjectHmrScript;
|
|
71
98
|
/**
|
|
72
|
-
*
|
|
99
|
+
* Delegates the HTML-response test to the shared response helper used by both
|
|
100
|
+
* adapters.
|
|
73
101
|
*/
|
|
74
102
|
private isHtmlResponse;
|
|
75
103
|
/**
|
|
@@ -78,20 +106,37 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
|
|
|
78
106
|
*/
|
|
79
107
|
private maybeInjectHmrScript;
|
|
80
108
|
/**
|
|
81
|
-
* Initializes the server adapter's core components.
|
|
82
|
-
* Delegates to ServerLifecycle for setup.
|
|
109
|
+
* Initializes the server adapter's core runtime components.
|
|
83
110
|
*/
|
|
84
111
|
initialize(): Promise<void>;
|
|
85
112
|
/**
|
|
86
|
-
*
|
|
113
|
+
* Copies the source `public` directory into the runtime output and ensures the
|
|
114
|
+
* HMR assets directory exists before any runtime bundles are emitted.
|
|
115
|
+
*/
|
|
116
|
+
private prepareRuntimePublicDir;
|
|
117
|
+
/**
|
|
118
|
+
* Registers runtime plugins and propagates the final HMR manager into each
|
|
119
|
+
* integration.
|
|
120
|
+
*
|
|
121
|
+
* @remarks
|
|
122
|
+
* This is where Bun's runtime-plugin registration path meets the integration
|
|
123
|
+
* lifecycle. A failure here leaves the runtime partially bootstrapped, so the
|
|
124
|
+
* method logs the underlying error and rethrows instead of trying to limp on.
|
|
125
|
+
*/
|
|
126
|
+
private initializeRuntimePlugins;
|
|
127
|
+
/**
|
|
128
|
+
* Rebuilds the shared routing state and hot-reloads the live Bun server when a
|
|
129
|
+
* watched route file changes.
|
|
87
130
|
*/
|
|
88
131
|
private refreshRouterRoutes;
|
|
89
132
|
private watch;
|
|
90
133
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
134
|
+
* Builds the `Bun.serve()` options for the current adapter state.
|
|
135
|
+
*
|
|
136
|
+
* @remarks
|
|
137
|
+
* The HMR-enabled variant wraps the base fetch handler so one Bun server can
|
|
138
|
+
* serve normal requests, accept HMR websocket upgrades, and expose the HMR
|
|
139
|
+
* runtime asset without splitting responsibility across separate listeners.
|
|
95
140
|
*/
|
|
96
141
|
getServerOptions({ enableHmr }?: {
|
|
97
142
|
enableHmr?: boolean | undefined;
|
|
@@ -104,8 +149,12 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
|
|
|
104
149
|
*/
|
|
105
150
|
private retrieveBodyFromRequest;
|
|
106
151
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
152
|
+
* Composes the base Bun server settings that all runtime modes build from.
|
|
153
|
+
*
|
|
154
|
+
* @remarks
|
|
155
|
+
* This method centralizes the Bun-specific error boundary. It preserves the
|
|
156
|
+
* shared route pipeline while still allowing adapter-level custom error-handler
|
|
157
|
+
* execution and `HttpError` passthrough.
|
|
109
158
|
*/
|
|
110
159
|
private buildServerSettings;
|
|
111
160
|
/**
|
|
@@ -122,7 +171,12 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
|
|
|
122
171
|
*/
|
|
123
172
|
completeInitialization(server?: BunServerInstance | null): Promise<void>;
|
|
124
173
|
/**
|
|
125
|
-
* Performs
|
|
174
|
+
* Performs the one-time post-bind initialization path for Bun servers.
|
|
175
|
+
*
|
|
176
|
+
* @remarks
|
|
177
|
+
* This is intentionally split from `initialize()` because shared route handling
|
|
178
|
+
* and file watching need the live server instance to exist before Bun can
|
|
179
|
+
* reload updated route handlers in place.
|
|
126
180
|
*/
|
|
127
181
|
private _performInitialization;
|
|
128
182
|
/**
|
|
@@ -149,7 +203,14 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
|
|
|
149
203
|
private handleNoMatch;
|
|
150
204
|
}
|
|
151
205
|
/**
|
|
152
|
-
*
|
|
206
|
+
* Creates the Bun server adapter and fills in the runtime-specific collaborators
|
|
207
|
+
* that Bun callers usually leave implicit.
|
|
208
|
+
*
|
|
209
|
+
* @remarks
|
|
210
|
+
* This is the canonical entry point for Bun server-adapter construction. It
|
|
211
|
+
* guarantees that the concrete adapter receives a Bun websocket bridge, HMR
|
|
212
|
+
* manager, and preview host even though those dependencies are optional on the
|
|
213
|
+
* public params type.
|
|
153
214
|
*/
|
|
154
215
|
export declare function createBunServerAdapter(params: BunServerAdapterParams): Promise<BunServerAdapterResult>;
|
|
155
216
|
export {};
|