@ecopages/core 0.2.0-alpha.54 → 0.2.0-alpha.55
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/package.json +196 -91
- package/src/adapters/abstract/application-adapter.d.ts +194 -0
- package/src/adapters/abstract/application-adapter.js +121 -0
- package/src/adapters/abstract/router-adapter.d.ts +26 -0
- package/src/adapters/abstract/router-adapter.js +5 -0
- package/src/adapters/abstract/server-adapter.d.ts +69 -0
- package/src/adapters/abstract/server-adapter.js +15 -0
- package/src/adapters/bun/client-bridge.d.ts +34 -0
- package/src/adapters/bun/client-bridge.js +48 -0
- package/src/adapters/bun/create-app.d.ts +60 -0
- package/src/adapters/bun/create-app.js +140 -0
- package/src/adapters/bun/hmr-manager.d.ts +47 -0
- package/src/adapters/bun/hmr-manager.js +58 -0
- package/src/adapters/bun/index.d.ts +2 -0
- package/src/adapters/bun/index.js +8 -0
- 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 +223 -0
- package/src/adapters/bun/server-adapter.js +450 -0
- package/src/adapters/bun/static-preview-host.d.ts +28 -0
- package/src/adapters/bun/static-preview-host.js +45 -0
- package/src/adapters/create-app.d.ts +20 -0
- package/src/adapters/create-app.js +66 -0
- package/src/adapters/index.d.ts +2 -0
- package/src/adapters/index.js +8 -0
- package/src/adapters/node/create-app.d.ts +24 -0
- package/src/adapters/node/create-app.js +92 -0
- 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 +26 -0
- package/src/adapters/node/node-client-bridge.js +66 -0
- package/src/adapters/node/node-hmr-manager.d.ts +52 -0
- package/src/adapters/node/node-hmr-manager.js +49 -0
- 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 +138 -0
- package/src/adapters/node/server-adapter.js +313 -0
- package/src/adapters/node/static-content-server.d.ts +60 -0
- package/src/adapters/node/static-content-server.js +194 -0
- 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/api-response.d.ts +52 -0
- package/src/adapters/shared/api-response.js +96 -0
- package/src/adapters/shared/application-adapter.d.ts +18 -0
- package/src/adapters/shared/application-adapter.js +90 -0
- package/src/adapters/shared/define-api-handler.d.ts +25 -0
- package/src/adapters/shared/define-api-handler.js +15 -0
- 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 +41 -0
- package/src/adapters/shared/explicit-static-route-matcher.js +101 -0
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +62 -0
- package/src/adapters/shared/file-route-middleware-pipeline.js +90 -0
- package/src/adapters/shared/fs-server-response-factory.d.ts +23 -0
- package/src/adapters/shared/fs-server-response-factory.js +81 -0
- package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
- package/src/adapters/shared/fs-server-response-matcher.js +186 -0
- 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 +16 -0
- package/src/adapters/shared/render-context.js +93 -0
- 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/runtime-host.js +0 -0
- package/src/adapters/shared/server-adapter.d.ts +108 -0
- package/src/adapters/shared/server-adapter.js +436 -0
- package/src/adapters/shared/server-route-handler.d.ts +89 -0
- package/src/adapters/shared/server-route-handler.js +111 -0
- package/src/adapters/shared/server-static-builder.d.ts +71 -0
- package/src/adapters/shared/server-static-builder.js +100 -0
- 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/adapters/shared/static-preview-host.js +0 -0
- 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.ts → browser-runtime-plugin-helpers.d.ts} +2 -13
- 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 +172 -0
- package/src/build/build-adapter.d.ts +504 -0
- package/src/build/build-adapter.js +240 -0
- package/src/build/build-manifest.d.ts +33 -0
- package/src/build/build-manifest.js +49 -0
- package/src/build/build-types.d.ts +57 -0
- package/src/build/build-types.js +0 -0
- package/src/build/rolldown-build-adapter.d.ts +32 -0
- package/src/build/rolldown-build-adapter.js +260 -0
- package/src/build/rolldown-plugin-bridge.d.ts +50 -0
- package/src/build/rolldown-plugin-bridge.js +194 -0
- package/src/build/{runtime-build-executor.ts → runtime-build-executor.d.ts} +3 -19
- package/src/build/runtime-build-executor.js +19 -0
- 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.ts → index.d.ts} +1 -1
- 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/config-builder.d.ts +252 -0
- package/src/config/config-builder.js +589 -0
- package/src/config/{constants.ts → constants.d.ts} +13 -22
- package/src/config/constants.js +25 -0
- package/src/dev/host-runtime.d.ts +10 -0
- package/src/dev/host-runtime.js +24 -0
- package/src/dev/sc-server.d.ts +30 -0
- package/src/dev/sc-server.js +111 -0
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.d.ts +9 -0
- package/src/eco/eco.js +119 -0
- package/src/eco/eco.types.d.ts +230 -0
- package/src/eco/eco.types.js +0 -0
- package/src/eco/eco.utils.d.ts +1 -0
- package/src/eco/eco.utils.js +10 -0
- package/src/eco/global-injector-map.d.ts +16 -0
- package/src/eco/global-injector-map.js +80 -0
- package/src/eco/lazy-injector-map.d.ts +8 -0
- package/src/eco/lazy-injector-map.js +70 -0
- package/src/eco/module-dependencies.d.ts +18 -0
- package/src/eco/module-dependencies.js +49 -0
- package/src/errors/http-error.d.ts +31 -0
- package/src/errors/http-error.js +50 -0
- package/src/errors/index.d.ts +3 -0
- package/src/errors/index.js +6 -0
- package/src/errors/locals-access-error.d.ts +4 -0
- package/src/errors/locals-access-error.js +9 -0
- package/src/global/app-logger.d.ts +2 -0
- package/src/global/app-logger.js +6 -0
- package/src/hmr/client/hmr-runtime.d.ts +5 -0
- package/src/hmr/client/hmr-runtime.js +117 -0
- package/src/hmr/hmr-strategy.d.ts +162 -0
- package/src/hmr/hmr-strategy.js +44 -0
- 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.d.ts +1 -0
- package/src/hmr/hmr.test.e2e.js +43 -0
- package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
- package/src/hmr/strategies/default-hmr-strategy.js +34 -0
- package/src/hmr/strategies/js-hmr-strategy.d.ts +134 -0
- package/src/hmr/strategies/js-hmr-strategy.js +173 -0
- package/src/index.browser.d.ts +3 -0
- package/src/index.browser.js +4 -0
- package/src/index.d.ts +6 -0
- package/src/index.js +21 -0
- package/src/integrations/ghtml/ghtml-renderer.d.ts +16 -0
- package/src/integrations/ghtml/ghtml-renderer.js +57 -0
- 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 +16 -0
- package/src/integrations/ghtml/ghtml.plugin.js +20 -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 +6 -0
- package/src/plugins/alias-resolver-plugin.js +65 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
- package/src/plugins/eco-component-meta-plugin.js +175 -0
- 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 +230 -0
- package/src/plugins/integration-plugin.js +201 -0
- package/src/plugins/processor.d.ts +97 -0
- package/src/plugins/processor.js +141 -0
- package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
- package/src/plugins/runtime-capability.js +0 -0
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- 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 +991 -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 +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 +35 -0
- 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-loading/page-module-loader.js +127 -0
- package/src/route-renderer/route-renderer.d.ts +69 -0
- package/src/route-renderer/route-renderer.js +80 -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/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/assets/asset-processing-service/asset-processing.service.js +285 -0
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
- package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
- package/src/services/assets/asset-processing-service/assets.types.d.ts +103 -0
- 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 +57 -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/assets/asset-processing-service/{processor.interface.ts → processor.interface.d.ts} +5 -10
- package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
- 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/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +97 -0
- 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/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +69 -0
- 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/cache/cache.types.d.ts +107 -0
- package/src/services/cache/cache.types.js +0 -0
- package/src/services/cache/index.d.ts +7 -0
- package/src/services/cache/index.js +7 -0
- package/src/services/cache/memory-cache-store.d.ts +42 -0
- package/src/services/cache/memory-cache-store.js +98 -0
- package/src/services/cache/page-cache-service.d.ts +70 -0
- package/src/services/cache/page-cache-service.js +152 -0
- package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
- package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
- 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 +130 -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.ts → module-loading-types.d.ts} +0 -1
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/page-module-import.service.d.ts +95 -0
- package/src/services/module-loading/page-module-import.service.js +193 -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/validation/schema-validation-service.d.ts +122 -0
- package/src/services/validation/schema-validation-service.js +101 -0
- package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
- package/src/services/validation/standard-schema.types.js +0 -0
- package/src/static-site-generator/static-site-generator.d.ts +104 -0
- package/src/static-site-generator/static-site-generator.js +316 -0
- package/src/types/internal-types.d.ts +232 -0
- package/src/types/internal-types.js +0 -0
- package/src/types/public-types.d.ts +1307 -0
- package/src/types/public-types.js +0 -0
- package/src/utils/deep-merge.d.ts +14 -0
- package/src/utils/deep-merge.js +32 -0
- package/src/utils/hash.d.ts +1 -0
- package/src/utils/hash.js +7 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/html.js +4 -0
- package/src/utils/invariant.d.ts +5 -0
- package/src/utils/invariant.js +11 -0
- package/src/utils/locals-utils.d.ts +15 -0
- package/src/utils/locals-utils.js +24 -0
- package/src/utils/parse-cli-args.d.ts +27 -0
- package/src/utils/parse-cli-args.js +62 -0
- package/src/utils/path-utils.module.d.ts +5 -0
- package/src/utils/path-utils.module.js +14 -0
- package/src/utils/resolve-work-dir.d.ts +11 -0
- package/src/utils/resolve-work-dir.js +31 -0
- package/src/utils/runtime.d.ts +11 -0
- package/src/utils/runtime.js +40 -0
- package/src/utils/server-utils.module.d.ts +19 -0
- package/src/utils/server-utils.module.js +56 -0
- package/src/watchers/project-watcher.d.ts +136 -0
- package/src/watchers/project-watcher.js +275 -0
- package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
- package/src/watchers/project-watcher.test-helpers.js +52 -0
- package/src/adapters/abstract/application-adapter.test.ts +0 -218
- package/src/adapters/abstract/application-adapter.ts +0 -379
- 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 -214
- package/src/adapters/bun/hmr-manager.test.ts +0 -265
- package/src/adapters/bun/hmr-manager.ts +0 -88
- package/src/adapters/bun/index.ts +0 -2
- package/src/adapters/bun/runtime-host.ts +0 -76
- package/src/adapters/bun/server-adapter.ts +0 -605
- package/src/adapters/bun/static-preview-host.ts +0 -70
- package/src/adapters/create-app.test.ts +0 -10
- package/src/adapters/create-app.ts +0 -91
- package/src/adapters/index.ts +0 -2
- package/src/adapters/node/create-app.test.ts +0 -76
- package/src/adapters/node/create-app.ts +0 -116
- package/src/adapters/node/http-request-bridge.test.ts +0 -146
- package/src/adapters/node/http-request-bridge.ts +0 -176
- package/src/adapters/node/node-client-bridge.test.ts +0 -198
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.test.ts +0 -374
- package/src/adapters/node/node-hmr-manager.ts +0 -72
- package/src/adapters/node/runtime-host.test.ts +0 -49
- package/src/adapters/node/runtime-host.ts +0 -113
- package/src/adapters/node/server-adapter-dependencies.ts +0 -28
- package/src/adapters/node/server-adapter.test.ts +0 -84
- package/src/adapters/node/server-adapter.ts +0 -423
- package/src/adapters/node/static-content-server.test.ts +0 -60
- package/src/adapters/node/static-content-server.ts +0 -239
- package/src/adapters/node/static-preview-host.test.ts +0 -89
- package/src/adapters/node/static-preview-host.ts +0 -101
- package/src/adapters/shared/api-response.test.ts +0 -97
- 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-render-preparation.ts +0 -58
- package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -131
- package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -85
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -118
- package/src/adapters/shared/fs-server-response-factory.test.ts +0 -176
- package/src/adapters/shared/fs-server-response-factory.ts +0 -96
- package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -311
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -240
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
- package/src/adapters/shared/hmr-html-response.ts +0 -54
- package/src/adapters/shared/hmr-manager.contract.test.ts +0 -228
- package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -229
- package/src/adapters/shared/render-context.test.ts +0 -244
- package/src/adapters/shared/render-context.ts +0 -161
- package/src/adapters/shared/runtime-app-bootstrap.test.ts +0 -96
- package/src/adapters/shared/runtime-app-bootstrap.ts +0 -72
- package/src/adapters/shared/runtime-host.ts +0 -11
- package/src/adapters/shared/server-adapter.test.ts +0 -130
- package/src/adapters/shared/server-adapter.ts +0 -571
- package/src/adapters/shared/server-route-handler.test.ts +0 -112
- package/src/adapters/shared/server-route-handler.ts +0 -153
- package/src/adapters/shared/server-static-builder.test.ts +0 -338
- package/src/adapters/shared/server-static-builder.ts +0 -170
- package/src/adapters/shared/shared-hmr-manager.ts +0 -298
- package/src/adapters/shared/static-preview-host.ts +0 -12
- package/src/build/browser-runtime-manifest.test.ts +0 -121
- package/src/build/browser-runtime-manifest.ts +0 -105
- package/src/build/browser-runtime-plugin-helpers.test.ts +0 -49
- package/src/build/browser-runtime-plugin.test.ts +0 -256
- package/src/build/browser-runtime-plugin.ts +0 -306
- package/src/build/build-adapter.test.ts +0 -463
- package/src/build/build-adapter.ts +0 -788
- package/src/build/build-manifest.ts +0 -79
- package/src/build/build-types.ts +0 -83
- package/src/build/rolldown-build-adapter.test.ts +0 -352
- package/src/build/rolldown-build-adapter.ts +0 -363
- package/src/build/rolldown-plugin-bridge.test.ts +0 -256
- package/src/build/rolldown-plugin-bridge.ts +0 -309
- package/src/build/runtime-build-executor.test.ts +0 -130
- package/src/build/runtime-build-output-normalizer.ts +0 -137
- package/src/build/serialized-build-executor.test.ts +0 -96
- package/src/build/serialized-build-executor.ts +0 -90
- package/src/build/server-side-css-shim-plugin.ts +0 -77
- package/src/cache/module-parse-cache.test.ts +0 -73
- package/src/cache/module-parse-cache.ts +0 -137
- package/src/config/config-builder.test.ts +0 -456
- package/src/config/config-builder.ts +0 -728
- package/src/config/config-builder.typecheck.test.ts +0 -96
- package/src/dev/host-runtime.ts +0 -34
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/eco.browser.test.ts +0 -43
- package/src/eco/eco.browser.ts +0 -137
- package/src/eco/eco.test.ts +0 -781
- package/src/eco/eco.ts +0 -262
- package/src/eco/eco.types.ts +0 -293
- package/src/eco/eco.utils.test.ts +0 -219
- package/src/eco/eco.utils.ts +0 -5
- package/src/eco/global-injector-map.test.ts +0 -42
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.test.ts +0 -66
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.test.ts +0 -30
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.test.ts +0 -134
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -3
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/global/utils.test.ts +0 -12
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
- package/src/hmr/client/hmr-runtime.ts +0 -162
- package/src/hmr/hmr-strategy.test.ts +0 -124
- package/src/hmr/hmr-strategy.ts +0 -177
- 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.test.ts +0 -344
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -307
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -15
- package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -87
- package/src/integrations/ghtml/ghtml.constants.ts +0 -1
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
- package/src/plugins/alias-resolver-cache.test.ts +0 -110
- package/src/plugins/alias-resolver-cache.ts +0 -145
- package/src/plugins/alias-resolver-plugin.test.ts +0 -41
- package/src/plugins/alias-resolver-plugin.ts +0 -75
- package/src/plugins/eco-component-meta-plugin.test.ts +0 -421
- package/src/plugins/eco-component-meta-plugin.ts +0 -518
- package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
- package/src/plugins/foreign-jsx-override-plugin.ts +0 -76
- package/src/plugins/integration-plugin.test.ts +0 -151
- package/src/plugins/integration-plugin.ts +0 -344
- package/src/plugins/processor.test.ts +0 -148
- package/src/plugins/processor.ts +0 -257
- package/src/plugins/source-transform.test.ts +0 -82
- package/src/plugins/source-transform.ts +0 -123
- package/src/route-renderer/orchestration/component-render-context.ts +0 -338
- package/src/route-renderer/orchestration/declared-ownership-graph.ts +0 -62
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.ts +0 -431
- package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2251
- package/src/route-renderer/orchestration/integration-renderer.ts +0 -1384
- package/src/route-renderer/orchestration/ownership-planning.service.ts +0 -97
- package/src/route-renderer/orchestration/ownership-validation.service.ts +0 -76
- package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -29
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.test.ts +0 -435
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.ts +0 -310
- package/src/route-renderer/orchestration/render-output.utils.ts +0 -310
- package/src/route-renderer/orchestration/route-render-orchestrator.prepare-render-options.test.ts +0 -1365
- package/src/route-renderer/orchestration/route-render-orchestrator.test.ts +0 -267
- package/src/route-renderer/orchestration/route-render-orchestrator.ts +0 -879
- package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
- package/src/route-renderer/orchestration/template-serialization.ts +0 -117
- package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -202
- package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -153
- package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -761
- package/src/route-renderer/page-loading/dependency-resolver.ts +0 -144
- package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
- package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
- package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
- package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
- package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
- package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -244
- package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
- package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
- package/src/route-renderer/route-renderer.ts +0 -133
- 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.test.ts +0 -237
- package/src/router/client/navigation-coordinator.ts +0 -453
- package/src/router/server/route-registry.test.ts +0 -176
- package/src/router/server/route-registry.ts +0 -382
- package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
- package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -473
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -344
- package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
- package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/assets/asset-processing-service/assets.types.ts +0 -128
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -98
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
- package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
- package/src/services/assets/asset-processing-service/index.ts +0 -6
- package/src/services/assets/asset-processing-service/page-package.test.ts +0 -135
- package/src/services/assets/asset-processing-service/page-package.ts +0 -103
- package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -173
- package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -188
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -138
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -116
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -270
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -145
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -72
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -83
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
- package/src/services/assets/browser-bundle.service.test.ts +0 -66
- package/src/services/assets/browser-bundle.service.ts +0 -109
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.test.ts +0 -225
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.test.ts +0 -175
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
- package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
- package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
- package/src/services/html/html-rewriter-provider.service.ts +0 -105
- package/src/services/html/html-transformer.service.test.ts +0 -544
- package/src/services/html/html-transformer.service.ts +0 -369
- package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
- package/src/services/invalidation/development-invalidation.service.ts +0 -262
- package/src/services/module-loading/app-module-loader.service.ts +0 -9
- package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -297
- package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -168
- package/src/services/module-loading/host-module-loader-registry.ts +0 -15
- package/src/services/module-loading/page-module-import.service.test.ts +0 -652
- package/src/services/module-loading/page-module-import.service.ts +0 -302
- package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -242
- package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
- package/src/services/module-loading/source-module-support.ts +0 -19
- 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/server-invalidation-state.service.ts +0 -68
- package/src/services/validation/schema-validation-service.test.ts +0 -223
- package/src/services/validation/schema-validation-service.ts +0 -204
- package/src/static-site-generator/static-site-generator.test.ts +0 -408
- package/src/static-site-generator/static-site-generator.ts +0 -445
- package/src/types/internal-types.ts +0 -243
- package/src/types/public-types.ts +0 -1508
- package/src/utils/deep-merge.test.ts +0 -114
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html-escaping.ts +0 -9
- package/src/utils/invariant.test.ts +0 -22
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.test.ts +0 -69
- package/src/utils/parse-cli-args.ts +0 -105
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/path-utils.test.ts +0 -15
- 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/utils/server-utils.test.ts +0 -38
- package/src/watchers/project-watcher.integration.test.ts +0 -337
- package/src/watchers/project-watcher.test-helpers.ts +0 -42
- package/src/watchers/project-watcher.test.ts +0 -768
- package/src/watchers/project-watcher.ts +0 -357
- /package/src/utils/{html.ts → html.d.ts} +0 -0
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
|
|
3
|
+
import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
|
|
4
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
5
|
+
import { HttpError } from "../../errors/http-error.js";
|
|
6
|
+
import { createRequire } from "../../utils/locals-utils.js";
|
|
7
|
+
import { fileSystem } from "@ecopages/file-system";
|
|
8
|
+
import { getAppBrowserBuildPlugins, setupAppRuntimePlugins } from "../../build/build-adapter.js";
|
|
9
|
+
import { installAppRuntimeBuildExecutor } from "../../build/runtime-build-executor.js";
|
|
10
|
+
import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator.js";
|
|
11
|
+
import { ProjectWatcher } from "../../watchers/project-watcher.js";
|
|
12
|
+
import { SharedServerAdapter } from "../shared/server-adapter.js";
|
|
13
|
+
import { ApiResponseBuilder } from "../shared/api-response.js";
|
|
14
|
+
import { ServerStaticBuilder } from "../shared/server-static-builder.js";
|
|
15
|
+
import {
|
|
16
|
+
injectHmrRuntimeIntoHtmlResponse,
|
|
17
|
+
isHtmlResponse,
|
|
18
|
+
shouldInjectHmrHtmlResponse
|
|
19
|
+
} from "../shared/hmr-html-response.js";
|
|
20
|
+
import { resolveServeRuntimeOrigin } from "../shared/runtime-app-bootstrap.js";
|
|
21
|
+
import { ClientBridge } from "./client-bridge.js";
|
|
22
|
+
import { HmrManager } from "./hmr-manager.js";
|
|
23
|
+
import { BunStaticPreviewHost } from "./static-preview-host.js";
|
|
24
|
+
class BunServerAdapter extends SharedServerAdapter {
|
|
25
|
+
apiHandlers;
|
|
26
|
+
staticRoutes;
|
|
27
|
+
errorHandler;
|
|
28
|
+
bridge;
|
|
29
|
+
hmrManager;
|
|
30
|
+
initializationPromise = null;
|
|
31
|
+
fullyInitialized = false;
|
|
32
|
+
previewHost;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a Bun server adapter with already-resolved runtime collaborators.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* The public params interface keeps `hmrManager`, `bridge`, and `previewHost`
|
|
38
|
+
* optional so factory callers can omit them. By the time the concrete adapter
|
|
39
|
+
* is constructed, those collaborators are mandatory because the adapter cannot
|
|
40
|
+
* initialize Bun HMR or preview flows without them.
|
|
41
|
+
*/
|
|
42
|
+
constructor({
|
|
43
|
+
appConfig,
|
|
44
|
+
runtimeOrigin,
|
|
45
|
+
serveOptions,
|
|
46
|
+
apiHandlers,
|
|
47
|
+
staticRoutes,
|
|
48
|
+
errorHandler,
|
|
49
|
+
options,
|
|
50
|
+
hmrManager,
|
|
51
|
+
bridge,
|
|
52
|
+
previewHost
|
|
53
|
+
}) {
|
|
54
|
+
super({ appConfig, runtimeOrigin, serveOptions, options });
|
|
55
|
+
this.apiHandlers = apiHandlers || [];
|
|
56
|
+
this.staticRoutes = staticRoutes || [];
|
|
57
|
+
this.errorHandler = errorHandler;
|
|
58
|
+
this.bridge = bridge;
|
|
59
|
+
this.hmrManager = hmrManager;
|
|
60
|
+
this.previewHost = previewHost;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Returns whether adapter-level HTML responses still need HMR runtime injection.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* Filesystem-routed pages are wrapped later in the shared route layer. This
|
|
67
|
+
* adapter-level check exists for explicit API handlers that return HTML and
|
|
68
|
+
* would otherwise bypass the route wrapper entirely.
|
|
69
|
+
*/
|
|
70
|
+
shouldInjectHmrScript() {
|
|
71
|
+
return shouldInjectHmrHtmlResponse(this.options?.watch === true, this.hmrManager);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Delegates the HTML-response test to the shared response helper used by both
|
|
75
|
+
* adapters.
|
|
76
|
+
*/
|
|
77
|
+
isHtmlResponse(response) {
|
|
78
|
+
return isHtmlResponse(response);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Injects HMR script into HTML responses in development mode.
|
|
82
|
+
* Ensures explicit API handlers that return HTML get auto-reload capability.
|
|
83
|
+
*/
|
|
84
|
+
async maybeInjectHmrScript(response) {
|
|
85
|
+
if (this.shouldInjectHmrScript() && this.isHtmlResponse(response)) {
|
|
86
|
+
return injectHmrRuntimeIntoHtmlResponse(response);
|
|
87
|
+
}
|
|
88
|
+
return response;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Initializes the server adapter's core runtime components.
|
|
92
|
+
*/
|
|
93
|
+
async initialize() {
|
|
94
|
+
installAppRuntimeBuildExecutor(this.appConfig);
|
|
95
|
+
this.staticSiteGenerator = new StaticSiteGenerator({ appConfig: this.appConfig });
|
|
96
|
+
await this.hmrManager.buildRuntime();
|
|
97
|
+
this.prepareRuntimePublicDir();
|
|
98
|
+
const staticBuilderOptions = {
|
|
99
|
+
appConfig: this.appConfig,
|
|
100
|
+
staticSiteGenerator: this.staticSiteGenerator,
|
|
101
|
+
serveOptions: this.serveOptions,
|
|
102
|
+
apiHandlers: this.apiHandlers
|
|
103
|
+
};
|
|
104
|
+
this.staticBuilder = new ServerStaticBuilder(staticBuilderOptions);
|
|
105
|
+
await this.initializeRuntimePlugins({ watch: this.options?.watch });
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Copies the source `public` directory into the runtime output and ensures the
|
|
109
|
+
* HMR assets directory exists before any runtime bundles are emitted.
|
|
110
|
+
*/
|
|
111
|
+
prepareRuntimePublicDir() {
|
|
112
|
+
const srcPublicDir = path.join(this.appConfig.rootDir, this.appConfig.srcDir, this.appConfig.publicDir);
|
|
113
|
+
if (fileSystem.exists(srcPublicDir)) {
|
|
114
|
+
fileSystem.copyDir(srcPublicDir, path.join(this.appConfig.rootDir, this.appConfig.distDir));
|
|
115
|
+
}
|
|
116
|
+
fileSystem.ensureDir(path.join(this.appConfig.absolutePaths.distDir, RESOLVED_ASSETS_DIR));
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Registers runtime plugins and propagates the final HMR manager into each
|
|
120
|
+
* integration.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* This is where Bun's runtime-plugin registration path meets the integration
|
|
124
|
+
* lifecycle. A failure here leaves the runtime partially bootstrapped, so the
|
|
125
|
+
* method logs the underlying error and rethrows instead of trying to limp on.
|
|
126
|
+
*/
|
|
127
|
+
async initializeRuntimePlugins(options) {
|
|
128
|
+
try {
|
|
129
|
+
this.hmrManager.setEnabled(Boolean(options?.watch));
|
|
130
|
+
await setupAppRuntimePlugins({
|
|
131
|
+
appConfig: this.appConfig,
|
|
132
|
+
runtimeOrigin: this.runtimeOrigin,
|
|
133
|
+
hmrManager: this.hmrManager,
|
|
134
|
+
onRuntimePlugin: (plugin) => {
|
|
135
|
+
Bun.plugin(plugin);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
const browserBuildPlugins = getAppBrowserBuildPlugins(this.appConfig);
|
|
139
|
+
this.hmrManager.setPlugins(browserBuildPlugins);
|
|
140
|
+
for (const integration of this.appConfig.integrations) {
|
|
141
|
+
integration.setHmrManager(this.hmrManager);
|
|
142
|
+
}
|
|
143
|
+
} catch (error) {
|
|
144
|
+
appLogger.error(`Failed to initialize plugins: ${error instanceof Error ? error.message : String(error)}`);
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Rebuilds the shared routing state and hot-reloads the live Bun server when a
|
|
150
|
+
* watched route file changes.
|
|
151
|
+
*/
|
|
152
|
+
async refreshRouterRoutes() {
|
|
153
|
+
if (!this.serverInstance || typeof this.serverInstance.reload !== "function") {
|
|
154
|
+
appLogger.error("Server instance is not available for reloading");
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
await this.createSharedWatchRefreshCallback({
|
|
158
|
+
staticRoutes: this.staticRoutes,
|
|
159
|
+
hmrManager: this.hmrManager,
|
|
160
|
+
onRoutesReady: () => {
|
|
161
|
+
const options = this.getServerOptions({ enableHmr: true });
|
|
162
|
+
this.serverInstance.reload(options);
|
|
163
|
+
appLogger.debug("Server routes updated with dynamic routes");
|
|
164
|
+
},
|
|
165
|
+
onError: (error) => {
|
|
166
|
+
this.hmrManager.broadcast({ type: "error", message: error.message });
|
|
167
|
+
appLogger.error("Failed to refresh router routes:", error);
|
|
168
|
+
}
|
|
169
|
+
})();
|
|
170
|
+
}
|
|
171
|
+
async watch() {
|
|
172
|
+
const watcher = new ProjectWatcher({
|
|
173
|
+
config: this.appConfig,
|
|
174
|
+
refreshRouterRoutesCallback: this.refreshRouterRoutes.bind(this),
|
|
175
|
+
hmrManager: this.hmrManager,
|
|
176
|
+
bridge: this.bridge
|
|
177
|
+
});
|
|
178
|
+
await watcher.createWatcherSubscription();
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Builds the `Bun.serve()` options for the current adapter state.
|
|
182
|
+
*
|
|
183
|
+
* @remarks
|
|
184
|
+
* The HMR-enabled variant wraps the base fetch handler so one Bun server can
|
|
185
|
+
* serve normal requests, accept HMR websocket upgrades, and expose the HMR
|
|
186
|
+
* runtime asset without splitting responsibility across separate listeners.
|
|
187
|
+
*/
|
|
188
|
+
getServerOptions({ enableHmr = false } = {}) {
|
|
189
|
+
appLogger.debug(`[BunServerAdapter] getServerOptions called with enableHmr: ${enableHmr}`);
|
|
190
|
+
const serverOptions = this.buildServerSettings();
|
|
191
|
+
if (enableHmr) {
|
|
192
|
+
const originalFetch = serverOptions.fetch;
|
|
193
|
+
const hmrHandler = this.hmrManager.getWebSocketHandler();
|
|
194
|
+
const hmrManager = this.hmrManager;
|
|
195
|
+
serverOptions.development = true;
|
|
196
|
+
serverOptions.websocket = hmrHandler;
|
|
197
|
+
serverOptions.fetch = async function(request, _server) {
|
|
198
|
+
const url = new URL(request.url);
|
|
199
|
+
appLogger.debug(`[HMR] Request: ${url.pathname}`);
|
|
200
|
+
if (url.pathname === "/_hmr") {
|
|
201
|
+
const success = this.upgrade(request, {
|
|
202
|
+
data: void 0
|
|
203
|
+
});
|
|
204
|
+
if (success) return;
|
|
205
|
+
return new Response("WebSocket upgrade failed", { status: 400 });
|
|
206
|
+
}
|
|
207
|
+
if (url.pathname === "/_hmr_runtime.js") {
|
|
208
|
+
appLogger.debug(`[HMR] Serving runtime from ${hmrManager.getRuntimePath()}`);
|
|
209
|
+
return new Response(fileSystem.readFileAsBuffer(hmrManager.getRuntimePath()), {
|
|
210
|
+
headers: { "Content-Type": "application/javascript" }
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
let response;
|
|
214
|
+
if (originalFetch) {
|
|
215
|
+
const res = await originalFetch.call(this, request, this);
|
|
216
|
+
response = res instanceof Response ? res : new Response("Not Found", { status: 404 });
|
|
217
|
+
} else {
|
|
218
|
+
response = new Response("Not Found", { status: 404 });
|
|
219
|
+
}
|
|
220
|
+
return response;
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return serverOptions;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Helper method to retrieve and parse the request body.
|
|
227
|
+
* Handles JSON and plain text content types.
|
|
228
|
+
* For FormData (multipart/form-data, x-www-form-urlencoded), use ctx.request.formData() directly.
|
|
229
|
+
* Returns undefined for unsupported content types.
|
|
230
|
+
*/
|
|
231
|
+
async retrieveBodyFromRequest(request) {
|
|
232
|
+
const contentType = request.headers.get("Content-Type") || "";
|
|
233
|
+
if (contentType.includes("application/json")) {
|
|
234
|
+
return await request.json();
|
|
235
|
+
}
|
|
236
|
+
if (contentType.includes("text/plain")) {
|
|
237
|
+
return await request.text();
|
|
238
|
+
}
|
|
239
|
+
return void 0;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Composes the base Bun server settings that all runtime modes build from.
|
|
243
|
+
*
|
|
244
|
+
* @remarks
|
|
245
|
+
* This method centralizes the Bun-specific error boundary. It preserves the
|
|
246
|
+
* shared route pipeline while still allowing adapter-level custom error-handler
|
|
247
|
+
* execution and `HttpError` passthrough.
|
|
248
|
+
*/
|
|
249
|
+
buildServerSettings() {
|
|
250
|
+
const serverOptions = { ...this.serveOptions };
|
|
251
|
+
const handleNoMatch = this.handleNoMatch.bind(this);
|
|
252
|
+
const waitForInit = this.waitForInitialization.bind(this);
|
|
253
|
+
const handleReq = this.handleRequest.bind(this);
|
|
254
|
+
const errorHandler = this.errorHandler;
|
|
255
|
+
const getCacheService = () => this.getCacheService();
|
|
256
|
+
const getRenderContext = () => this.getRenderContext();
|
|
257
|
+
appLogger.debug(`[BunServerAdapter] Building server settings`);
|
|
258
|
+
const finalOptions = {
|
|
259
|
+
...serverOptions,
|
|
260
|
+
async fetch(request, _server) {
|
|
261
|
+
try {
|
|
262
|
+
await waitForInit();
|
|
263
|
+
return await handleReq(request);
|
|
264
|
+
} catch (error) {
|
|
265
|
+
if (error instanceof Response) return error;
|
|
266
|
+
if (errorHandler) {
|
|
267
|
+
try {
|
|
268
|
+
const locals = {};
|
|
269
|
+
const context = {
|
|
270
|
+
request,
|
|
271
|
+
params: {},
|
|
272
|
+
response: new ApiResponseBuilder(),
|
|
273
|
+
server: _server,
|
|
274
|
+
locals,
|
|
275
|
+
require: createRequire(() => locals),
|
|
276
|
+
services: {
|
|
277
|
+
cache: getCacheService()
|
|
278
|
+
},
|
|
279
|
+
...getRenderContext()
|
|
280
|
+
};
|
|
281
|
+
return await errorHandler(error, context);
|
|
282
|
+
} catch (handlerError) {
|
|
283
|
+
appLogger.error(`[ecopages] Error in custom error handler: ${handlerError}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (error instanceof HttpError) return error.toResponse();
|
|
287
|
+
appLogger.error(`[ecopages] Error handling request: ${error}`);
|
|
288
|
+
return new Response("Internal Server Error", { status: 500 });
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
error(error) {
|
|
292
|
+
appLogger.error(`[ecopages] Error handling request: ${error}`);
|
|
293
|
+
return handleNoMatch(new Request("http://localhost"));
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
return finalOptions;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Generates a static build of the site for deployment.
|
|
300
|
+
* @param options.preview - If true, starts a preview server after build
|
|
301
|
+
*/
|
|
302
|
+
async buildStatic(options) {
|
|
303
|
+
if (!this.fullyInitialized) {
|
|
304
|
+
await this.initializeSharedRouteHandling({
|
|
305
|
+
staticRoutes: this.staticRoutes,
|
|
306
|
+
hmrManager: this.hmrManager
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
const buildRuntimeOrigin = this.serverInstance ? `http://${this.serverInstance.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${this.serverInstance.port || DEFAULT_ECOPAGES_PORT}` : void 0;
|
|
310
|
+
await this.staticBuilder.build(
|
|
311
|
+
{ ...options, preview: false, baseUrl: buildRuntimeOrigin },
|
|
312
|
+
{
|
|
313
|
+
router: this.router,
|
|
314
|
+
routeRendererFactory: this.routeRendererFactory,
|
|
315
|
+
staticRoutes: this.staticRoutes
|
|
316
|
+
}
|
|
317
|
+
);
|
|
318
|
+
if (!options?.preview) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
const previewHostname = this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME;
|
|
322
|
+
const previewPort = Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT);
|
|
323
|
+
const activePreviewPort = await this.previewHost.start({
|
|
324
|
+
appConfig: this.appConfig,
|
|
325
|
+
hostname: String(previewHostname),
|
|
326
|
+
port: previewPort
|
|
327
|
+
});
|
|
328
|
+
if (activePreviewPort) {
|
|
329
|
+
appLogger.info(`Preview running at http://${previewHostname}:${activePreviewPort}`);
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Initializes the server with dynamic routes after server creation.
|
|
335
|
+
* Must be called before handling any requests.
|
|
336
|
+
* @param server - The Bun server instance
|
|
337
|
+
*/
|
|
338
|
+
async completeInitialization(server) {
|
|
339
|
+
if (this.fullyInitialized) {
|
|
340
|
+
if (server && !this.serverInstance) {
|
|
341
|
+
this.serverInstance = server;
|
|
342
|
+
}
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
if (!this.initializationPromise) {
|
|
346
|
+
this.initializationPromise = this._performInitialization(server ?? null);
|
|
347
|
+
}
|
|
348
|
+
return this.initializationPromise;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Performs the one-time post-bind initialization path for Bun servers.
|
|
352
|
+
*
|
|
353
|
+
* @remarks
|
|
354
|
+
* This is intentionally split from `initialize()` because shared route handling
|
|
355
|
+
* and file watching need the live server instance to exist before Bun can
|
|
356
|
+
* reload updated route handlers in place.
|
|
357
|
+
*/
|
|
358
|
+
async _performInitialization(server) {
|
|
359
|
+
this.serverInstance = server;
|
|
360
|
+
appLogger.debug("Completing server initialization with dynamic routes");
|
|
361
|
+
await this.initializeSharedRouteHandling({
|
|
362
|
+
staticRoutes: this.staticRoutes,
|
|
363
|
+
hmrManager: this.hmrManager
|
|
364
|
+
});
|
|
365
|
+
this.fullyInitialized = true;
|
|
366
|
+
if (this.options?.watch) await this.watch();
|
|
367
|
+
if (server && typeof server.reload === "function") {
|
|
368
|
+
const updatedOptions = this.getServerOptions(this.options?.watch ? { enableHmr: true } : void 0);
|
|
369
|
+
server.reload(updatedOptions);
|
|
370
|
+
appLogger.debug("Server routes updated with dynamic routes");
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Creates and initializes the Bun server adapter.
|
|
375
|
+
* @returns Configured adapter with server methods
|
|
376
|
+
*/
|
|
377
|
+
async createAdapter() {
|
|
378
|
+
await this.initialize();
|
|
379
|
+
return {
|
|
380
|
+
getServerOptions: this.getServerOptions.bind(this),
|
|
381
|
+
buildStatic: this.buildStatic.bind(this),
|
|
382
|
+
completeInitialization: this.completeInitialization.bind(this),
|
|
383
|
+
handleRequest: this.handleRequest.bind(this)
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Handles HTTP requests by passing them securely to the shared core router adapter.
|
|
388
|
+
*
|
|
389
|
+
* @remarks
|
|
390
|
+
* Filesystem page responses are wrapped by `ServerRouteHandler`. This
|
|
391
|
+
* adapter-level pass only covers HTML returned by explicit API handlers,
|
|
392
|
+
* which bypass that route-layer wrapper and would otherwise miss the
|
|
393
|
+
* dev HMR runtime — so the HMR script injection happens here, after
|
|
394
|
+
* the shared handler runs.
|
|
395
|
+
*/
|
|
396
|
+
async handleRequest(request) {
|
|
397
|
+
const response = await this.handleSharedRequest(request, {
|
|
398
|
+
apiHandlers: this.apiHandlers,
|
|
399
|
+
errorHandler: this.errorHandler,
|
|
400
|
+
serverInstance: this.serverInstance,
|
|
401
|
+
hmrManager: this.hmrManager
|
|
402
|
+
});
|
|
403
|
+
return await this.maybeInjectHmrScript(response);
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Ensures server initialization completes before request handling.
|
|
407
|
+
* Prevents race conditions during startup.
|
|
408
|
+
*/
|
|
409
|
+
async waitForInitialization() {
|
|
410
|
+
if (this.fullyInitialized) {
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (this.initializationPromise) {
|
|
414
|
+
return this.initializationPromise;
|
|
415
|
+
}
|
|
416
|
+
throw new Error("Server not initialized. Call completeInitialization() first.");
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Handles HTTP requests from the router adapter.
|
|
420
|
+
*/
|
|
421
|
+
async handleResponse(request) {
|
|
422
|
+
await this.waitForInitialization();
|
|
423
|
+
return this.routeHandler.handleResponse(request);
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Handles requests that do not match any routes.
|
|
427
|
+
*/
|
|
428
|
+
async handleNoMatch(request) {
|
|
429
|
+
await this.waitForInitialization();
|
|
430
|
+
return this.routeHandler.handleNoMatch(request);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
async function createBunServerAdapter(params) {
|
|
434
|
+
const runtimeOrigin = params.runtimeOrigin ?? resolveServeRuntimeOrigin(params.serveOptions);
|
|
435
|
+
const bridge = params.bridge ?? new ClientBridge();
|
|
436
|
+
const hmrManager = params.hmrManager ?? new HmrManager({ appConfig: params.appConfig, bridge });
|
|
437
|
+
const previewHost = params.previewHost ?? new BunStaticPreviewHost();
|
|
438
|
+
const adapter = new BunServerAdapter({
|
|
439
|
+
...params,
|
|
440
|
+
runtimeOrigin,
|
|
441
|
+
bridge,
|
|
442
|
+
hmrManager,
|
|
443
|
+
previewHost
|
|
444
|
+
});
|
|
445
|
+
return adapter.createAdapter();
|
|
446
|
+
}
|
|
447
|
+
export {
|
|
448
|
+
BunServerAdapter,
|
|
449
|
+
createBunServerAdapter
|
|
450
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
import type { StaticPreviewHost, StaticPreviewHostStartOptions } from '../shared/static-preview-host.js';
|
|
3
|
+
type BunStaticPreviewServer = {
|
|
4
|
+
server: {
|
|
5
|
+
port?: number;
|
|
6
|
+
} | null;
|
|
7
|
+
stop(): void;
|
|
8
|
+
};
|
|
9
|
+
type BunStaticPreviewServerFactory = {
|
|
10
|
+
createServer(args: {
|
|
11
|
+
appConfig: EcoPagesAppConfig;
|
|
12
|
+
options: {
|
|
13
|
+
port: number;
|
|
14
|
+
};
|
|
15
|
+
}): BunStaticPreviewServer;
|
|
16
|
+
};
|
|
17
|
+
type BunStaticPreviewLogger = {
|
|
18
|
+
error(message: string): unknown;
|
|
19
|
+
};
|
|
20
|
+
export declare class BunStaticPreviewHost implements StaticPreviewHost {
|
|
21
|
+
private readonly previewServerFactory;
|
|
22
|
+
private readonly logger;
|
|
23
|
+
private previewServer;
|
|
24
|
+
constructor(previewServerFactory?: BunStaticPreviewServerFactory, logger?: BunStaticPreviewLogger);
|
|
25
|
+
start(options: StaticPreviewHostStartOptions): Promise<number | null>;
|
|
26
|
+
stop(): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { StaticContentServer } from "../../dev/sc-server.js";
|
|
2
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
3
|
+
class BunStaticPreviewHost {
|
|
4
|
+
constructor(previewServerFactory = StaticContentServer, logger = appLogger) {
|
|
5
|
+
this.previewServerFactory = previewServerFactory;
|
|
6
|
+
this.logger = logger;
|
|
7
|
+
}
|
|
8
|
+
previewServerFactory;
|
|
9
|
+
logger;
|
|
10
|
+
previewServer = null;
|
|
11
|
+
async start(options) {
|
|
12
|
+
await this.stop();
|
|
13
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
14
|
+
for (let attempt = 0; attempt < 20; attempt += 1) {
|
|
15
|
+
try {
|
|
16
|
+
this.previewServer = this.previewServerFactory.createServer({
|
|
17
|
+
appConfig: options.appConfig,
|
|
18
|
+
options: { port: options.port }
|
|
19
|
+
});
|
|
20
|
+
const previewPort = this.previewServer.server?.port;
|
|
21
|
+
if (previewPort) {
|
|
22
|
+
return previewPort;
|
|
23
|
+
}
|
|
24
|
+
break;
|
|
25
|
+
} catch (error) {
|
|
26
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
27
|
+
const errorCode = typeof error === "object" && error !== null && "code" in error ? String(error.code) : void 0;
|
|
28
|
+
const isPortReleaseRace = errorCode === "EADDRINUSE" || errorMessage.includes("EADDRINUSE");
|
|
29
|
+
if (!isPortReleaseRace || attempt === 19) {
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
this.logger.error("Failed to start preview server");
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
async stop() {
|
|
39
|
+
this.previewServer?.stop();
|
|
40
|
+
this.previewServer = null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
BunStaticPreviewHost
|
|
45
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
2
|
+
import { AbstractApplicationAdapter } from './abstract/application-adapter.js';
|
|
3
|
+
import type { ApplicationAdapterOptions } from './abstract/application-adapter.js';
|
|
4
|
+
import { SharedApplicationAdapter } from './shared/application-adapter.js';
|
|
5
|
+
export interface EcopagesAppOptions extends ApplicationAdapterOptions {
|
|
6
|
+
appConfig: EcoPagesAppConfig;
|
|
7
|
+
serverOptions?: Record<string, any>;
|
|
8
|
+
}
|
|
9
|
+
export type UniversalEcopagesApp = AbstractApplicationAdapter<EcopagesAppOptions, unknown, Request>;
|
|
10
|
+
export declare function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp>;
|
|
11
|
+
export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, unknown, Request> {
|
|
12
|
+
private readonly appOptions;
|
|
13
|
+
private runtimeApp;
|
|
14
|
+
private runtimeAppPromise;
|
|
15
|
+
constructor(options: EcopagesAppOptions);
|
|
16
|
+
private getRuntimeApp;
|
|
17
|
+
protected initializeServerAdapter(): Promise<UniversalEcopagesApp>;
|
|
18
|
+
start(): Promise<unknown>;
|
|
19
|
+
fetch(request: Request): Promise<Response>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { AbstractApplicationAdapter } from "./abstract/application-adapter.js";
|
|
2
|
+
import { SharedApplicationAdapter } from "./shared/application-adapter.js";
|
|
3
|
+
import { createApp as createBunApp } from "./bun/create-app.js";
|
|
4
|
+
import { createNodeApp } from "./node/create-app.js";
|
|
5
|
+
async function createRuntimeApp(options) {
|
|
6
|
+
const bun = globalThis.Bun;
|
|
7
|
+
if (bun) {
|
|
8
|
+
return await createBunApp(options);
|
|
9
|
+
}
|
|
10
|
+
return await createNodeApp(options);
|
|
11
|
+
}
|
|
12
|
+
async function createApp(options) {
|
|
13
|
+
return createRuntimeApp(options);
|
|
14
|
+
}
|
|
15
|
+
class EcopagesApp extends SharedApplicationAdapter {
|
|
16
|
+
appOptions;
|
|
17
|
+
runtimeApp = null;
|
|
18
|
+
runtimeAppPromise = null;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
super(options);
|
|
21
|
+
this.appOptions = options;
|
|
22
|
+
}
|
|
23
|
+
async getRuntimeApp() {
|
|
24
|
+
if (this.runtimeApp) {
|
|
25
|
+
return this.runtimeApp;
|
|
26
|
+
}
|
|
27
|
+
if (!this.runtimeAppPromise) {
|
|
28
|
+
this.runtimeAppPromise = createRuntimeApp({
|
|
29
|
+
...this.appOptions,
|
|
30
|
+
clearOutput: false
|
|
31
|
+
}).then((app) => {
|
|
32
|
+
for (const handler of this.apiHandlers) {
|
|
33
|
+
app.add(handler);
|
|
34
|
+
}
|
|
35
|
+
for (const route of this.staticRoutes) {
|
|
36
|
+
app.static(route.path, route.loader);
|
|
37
|
+
}
|
|
38
|
+
if (this.errorHandler) {
|
|
39
|
+
app.onError(this.errorHandler);
|
|
40
|
+
}
|
|
41
|
+
this.runtimeApp = app;
|
|
42
|
+
return app;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return this.runtimeAppPromise;
|
|
46
|
+
}
|
|
47
|
+
async initializeServerAdapter() {
|
|
48
|
+
return this.getRuntimeApp();
|
|
49
|
+
}
|
|
50
|
+
async start() {
|
|
51
|
+
const runtimeApp = await this.getRuntimeApp();
|
|
52
|
+
return runtimeApp.start();
|
|
53
|
+
}
|
|
54
|
+
async fetch(request) {
|
|
55
|
+
const runtimeApp = await this.getRuntimeApp();
|
|
56
|
+
const candidate = runtimeApp;
|
|
57
|
+
if (!candidate.fetch) {
|
|
58
|
+
throw new Error("The selected runtime adapter does not expose fetch()");
|
|
59
|
+
}
|
|
60
|
+
return candidate.fetch(request);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
EcopagesApp,
|
|
65
|
+
createApp
|
|
66
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SharedApplicationAdapter } from '../shared/application-adapter.js';
|
|
2
|
+
import type { RuntimeHost } from '../shared/runtime-host.js';
|
|
3
|
+
import type { EcopagesAppOptions } from '../create-app.js';
|
|
4
|
+
import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
|
|
5
|
+
import type { NodeServerInstance } from './server-adapter.js';
|
|
6
|
+
export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
|
|
7
|
+
serverAdapter: NodeServerAdapterResult | undefined;
|
|
8
|
+
private server;
|
|
9
|
+
private runtimeOrigin;
|
|
10
|
+
private readonly runtimeHost;
|
|
11
|
+
constructor(options: EcopagesAppOptions, dependencies: {
|
|
12
|
+
runtimeHost: RuntimeHost<NodeServerInstance, {
|
|
13
|
+
port?: number;
|
|
14
|
+
hostname?: string;
|
|
15
|
+
}>;
|
|
16
|
+
});
|
|
17
|
+
protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
|
|
18
|
+
stop(force?: boolean): Promise<void>;
|
|
19
|
+
protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
|
|
20
|
+
start(): Promise<NodeServerInstance | void>;
|
|
21
|
+
fetch(request: Request): Promise<Response>;
|
|
22
|
+
}
|
|
23
|
+
export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
24
|
+
export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|