@ecopages/core 0.2.0-alpha.5 → 0.2.0-alpha.50
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 -62
- package/src/adapters/bun/hmr-manager.js +30 -194
- 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 -48
- package/src/adapters/node/node-hmr-manager.js +31 -203
- 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 +175 -3
- package/src/build/build-adapter.js +625 -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 -75
- 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 +40 -42
- package/src/hmr/strategies/js-hmr-strategy.js +24 -43
- 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 +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/{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 +120 -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 +38 -0
- package/src/services/module-loading/node-bootstrap-plugin.js +215 -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 -31
- 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 +11 -7
- package/src/watchers/project-watcher.js +69 -75
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +6 -5
- package/CHANGELOG.md +0 -94
- 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 -276
- 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 -271
- 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 -133
- package/src/build/build-types.ts +0 -83
- package/src/build/esbuild-build-adapter.ts +0 -511
- 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 -327
- 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 -1255
- 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 -40
- package/src/watchers/project-watcher.ts +0 -364
- /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,28 +1,44 @@
|
|
|
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";
|
|
1
4
|
import { appLogger } from "../../global/app-logger.js";
|
|
2
5
|
import { HttpError } from "../../errors/http-error.js";
|
|
3
6
|
import { createRequire } from "../../utils/locals-utils.js";
|
|
4
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";
|
|
5
12
|
import { SharedServerAdapter } from "../shared/server-adapter.js";
|
|
6
13
|
import { ApiResponseBuilder } from "../shared/api-response.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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";
|
|
12
24
|
class BunServerAdapter extends SharedServerAdapter {
|
|
13
25
|
apiHandlers;
|
|
14
26
|
staticRoutes;
|
|
15
27
|
errorHandler;
|
|
16
28
|
bridge;
|
|
17
|
-
lifecycle;
|
|
18
29
|
hmrManager;
|
|
19
30
|
initializationPromise = null;
|
|
20
31
|
fullyInitialized = false;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
+
*/
|
|
26
42
|
constructor({
|
|
27
43
|
appConfig,
|
|
28
44
|
runtimeOrigin,
|
|
@@ -31,35 +47,35 @@ class BunServerAdapter extends SharedServerAdapter {
|
|
|
31
47
|
staticRoutes,
|
|
32
48
|
errorHandler,
|
|
33
49
|
options,
|
|
34
|
-
lifecycle,
|
|
35
|
-
staticBuilderFactory,
|
|
36
|
-
routeHandlerFactory,
|
|
37
50
|
hmrManager,
|
|
38
|
-
bridge
|
|
51
|
+
bridge,
|
|
52
|
+
previewHost
|
|
39
53
|
}) {
|
|
40
54
|
super({ appConfig, runtimeOrigin, serveOptions, options });
|
|
41
55
|
this.apiHandlers = apiHandlers || [];
|
|
42
56
|
this.staticRoutes = staticRoutes || [];
|
|
43
57
|
this.errorHandler = errorHandler;
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.hmrManagerFactory = hmrManager;
|
|
48
|
-
this.bridgeFactory = bridge;
|
|
58
|
+
this.bridge = bridge;
|
|
59
|
+
this.hmrManager = hmrManager;
|
|
60
|
+
this.previewHost = previewHost;
|
|
49
61
|
}
|
|
50
62
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
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.
|
|
53
69
|
*/
|
|
54
70
|
shouldInjectHmrScript() {
|
|
55
|
-
return this.options?.watch === true
|
|
71
|
+
return shouldInjectHmrHtmlResponse(this.options?.watch === true, this.hmrManager);
|
|
56
72
|
}
|
|
57
73
|
/**
|
|
58
|
-
*
|
|
74
|
+
* Delegates the HTML-response test to the shared response helper used by both
|
|
75
|
+
* adapters.
|
|
59
76
|
*/
|
|
60
77
|
isHtmlResponse(response) {
|
|
61
|
-
|
|
62
|
-
return contentType !== null && contentType.startsWith("text/html");
|
|
78
|
+
return isHtmlResponse(response);
|
|
63
79
|
}
|
|
64
80
|
/**
|
|
65
81
|
* Injects HMR script into HTML responses in development mode.
|
|
@@ -67,72 +83,109 @@ class BunServerAdapter extends SharedServerAdapter {
|
|
|
67
83
|
*/
|
|
68
84
|
async maybeInjectHmrScript(response) {
|
|
69
85
|
if (this.shouldInjectHmrScript() && this.isHtmlResponse(response)) {
|
|
70
|
-
|
|
71
|
-
const hmrScript = `<script type="module">import '/_hmr_runtime.js';<\/script>`;
|
|
72
|
-
const updatedHtml = html.replace(/<\/html>/i, `${hmrScript}</html>`);
|
|
73
|
-
const headers = new Headers(response.headers);
|
|
74
|
-
headers.delete("Content-Length");
|
|
75
|
-
return new Response(updatedHtml, {
|
|
76
|
-
status: response.status,
|
|
77
|
-
statusText: response.statusText,
|
|
78
|
-
headers
|
|
79
|
-
});
|
|
86
|
+
return injectHmrRuntimeIntoHtmlResponse(response);
|
|
80
87
|
}
|
|
81
88
|
return response;
|
|
82
89
|
}
|
|
83
90
|
/**
|
|
84
|
-
* Initializes the server adapter's core components.
|
|
85
|
-
* Delegates to ServerLifecycle for setup.
|
|
91
|
+
* Initializes the server adapter's core runtime components.
|
|
86
92
|
*/
|
|
87
93
|
async initialize() {
|
|
88
|
-
this.
|
|
89
|
-
|
|
90
|
-
this.lifecycle = this.lifecycleFactory ?? new ServerLifecycle({
|
|
91
|
-
appConfig: this.appConfig,
|
|
92
|
-
runtimeOrigin: this.runtimeOrigin,
|
|
93
|
-
hmrManager: this.hmrManager,
|
|
94
|
-
bridge: this.bridge
|
|
94
|
+
installAppRuntimeBuildExecutor(this.appConfig, {
|
|
95
|
+
development: this.options?.watch === true
|
|
95
96
|
});
|
|
96
|
-
this.staticSiteGenerator =
|
|
97
|
+
this.staticSiteGenerator = new StaticSiteGenerator({ appConfig: this.appConfig });
|
|
98
|
+
await this.hmrManager.buildRuntime();
|
|
99
|
+
this.prepareRuntimePublicDir();
|
|
97
100
|
const staticBuilderOptions = {
|
|
98
101
|
appConfig: this.appConfig,
|
|
99
102
|
staticSiteGenerator: this.staticSiteGenerator,
|
|
100
|
-
serveOptions: this.serveOptions
|
|
103
|
+
serveOptions: this.serveOptions,
|
|
104
|
+
apiHandlers: this.apiHandlers
|
|
101
105
|
};
|
|
102
|
-
this.staticBuilder =
|
|
103
|
-
await this.
|
|
106
|
+
this.staticBuilder = new ServerStaticBuilder(staticBuilderOptions);
|
|
107
|
+
await this.initializeRuntimePlugins({ watch: this.options?.watch });
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Copies the source `public` directory into the runtime output and ensures the
|
|
111
|
+
* HMR assets directory exists before any runtime bundles are emitted.
|
|
112
|
+
*/
|
|
113
|
+
prepareRuntimePublicDir() {
|
|
114
|
+
const srcPublicDir = path.join(this.appConfig.rootDir, this.appConfig.srcDir, this.appConfig.publicDir);
|
|
115
|
+
if (fileSystem.exists(srcPublicDir)) {
|
|
116
|
+
fileSystem.copyDir(srcPublicDir, path.join(this.appConfig.rootDir, this.appConfig.distDir));
|
|
117
|
+
}
|
|
118
|
+
fileSystem.ensureDir(path.join(this.appConfig.absolutePaths.distDir, RESOLVED_ASSETS_DIR));
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Registers runtime plugins and propagates the final HMR manager into each
|
|
122
|
+
* integration.
|
|
123
|
+
*
|
|
124
|
+
* @remarks
|
|
125
|
+
* This is where Bun's runtime-plugin registration path meets the integration
|
|
126
|
+
* lifecycle. A failure here leaves the runtime partially bootstrapped, so the
|
|
127
|
+
* method logs the underlying error and rethrows instead of trying to limp on.
|
|
128
|
+
*/
|
|
129
|
+
async initializeRuntimePlugins(options) {
|
|
130
|
+
try {
|
|
131
|
+
this.hmrManager.setEnabled(Boolean(options?.watch));
|
|
132
|
+
await setupAppRuntimePlugins({
|
|
133
|
+
appConfig: this.appConfig,
|
|
134
|
+
runtimeOrigin: this.runtimeOrigin,
|
|
135
|
+
hmrManager: this.hmrManager,
|
|
136
|
+
onRuntimePlugin: (plugin) => {
|
|
137
|
+
Bun.plugin(plugin);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
const browserBuildPlugins = getAppBrowserBuildPlugins(this.appConfig);
|
|
141
|
+
this.hmrManager.setPlugins(browserBuildPlugins);
|
|
142
|
+
for (const integration of this.appConfig.integrations) {
|
|
143
|
+
integration.setHmrManager(this.hmrManager);
|
|
144
|
+
}
|
|
145
|
+
} catch (error) {
|
|
146
|
+
appLogger.error(`Failed to initialize plugins: ${error instanceof Error ? error.message : String(error)}`);
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
104
149
|
}
|
|
105
150
|
/**
|
|
106
|
-
*
|
|
151
|
+
* Rebuilds the shared routing state and hot-reloads the live Bun server when a
|
|
152
|
+
* watched route file changes.
|
|
107
153
|
*/
|
|
108
154
|
async refreshRouterRoutes() {
|
|
109
|
-
if (this.serverInstance
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
155
|
+
if (!this.serverInstance || typeof this.serverInstance.reload !== "function") {
|
|
156
|
+
appLogger.error("Server instance is not available for reloading");
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
await this.createSharedWatchRefreshCallback({
|
|
160
|
+
staticRoutes: this.staticRoutes,
|
|
161
|
+
hmrManager: this.hmrManager,
|
|
162
|
+
onRoutesReady: () => {
|
|
113
163
|
const options = this.getServerOptions({ enableHmr: true });
|
|
114
164
|
this.serverInstance.reload(options);
|
|
115
165
|
appLogger.debug("Server routes updated with dynamic routes");
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
166
|
+
},
|
|
167
|
+
onError: (error) => {
|
|
168
|
+
this.hmrManager.broadcast({ type: "error", message: error.message });
|
|
169
|
+
appLogger.error("Failed to refresh router routes:", error);
|
|
121
170
|
}
|
|
122
|
-
}
|
|
123
|
-
appLogger.error("Server instance is not available for reloading");
|
|
124
|
-
}
|
|
171
|
+
})();
|
|
125
172
|
}
|
|
126
173
|
async watch() {
|
|
127
|
-
|
|
128
|
-
|
|
174
|
+
const watcher = new ProjectWatcher({
|
|
175
|
+
config: this.appConfig,
|
|
176
|
+
refreshRouterRoutesCallback: this.refreshRouterRoutes.bind(this),
|
|
177
|
+
hmrManager: this.hmrManager,
|
|
178
|
+
bridge: this.bridge
|
|
129
179
|
});
|
|
180
|
+
await watcher.createWatcherSubscription();
|
|
130
181
|
}
|
|
131
182
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
183
|
+
* Builds the `Bun.serve()` options for the current adapter state.
|
|
184
|
+
*
|
|
185
|
+
* @remarks
|
|
186
|
+
* The HMR-enabled variant wraps the base fetch handler so one Bun server can
|
|
187
|
+
* serve normal requests, accept HMR websocket upgrades, and expose the HMR
|
|
188
|
+
* runtime asset without splitting responsibility across separate listeners.
|
|
136
189
|
*/
|
|
137
190
|
getServerOptions({ enableHmr = false } = {}) {
|
|
138
191
|
appLogger.debug(`[BunServerAdapter] getServerOptions called with enableHmr: ${enableHmr}`);
|
|
@@ -188,8 +241,12 @@ class BunServerAdapter extends SharedServerAdapter {
|
|
|
188
241
|
return void 0;
|
|
189
242
|
}
|
|
190
243
|
/**
|
|
191
|
-
*
|
|
192
|
-
*
|
|
244
|
+
* Composes the base Bun server settings that all runtime modes build from.
|
|
245
|
+
*
|
|
246
|
+
* @remarks
|
|
247
|
+
* This method centralizes the Bun-specific error boundary. It preserves the
|
|
248
|
+
* shared route pipeline while still allowing adapter-level custom error-handler
|
|
249
|
+
* execution and `HttpError` passthrough.
|
|
193
250
|
*/
|
|
194
251
|
buildServerSettings() {
|
|
195
252
|
const serverOptions = { ...this.serveOptions };
|
|
@@ -246,14 +303,34 @@ class BunServerAdapter extends SharedServerAdapter {
|
|
|
246
303
|
*/
|
|
247
304
|
async buildStatic(options) {
|
|
248
305
|
if (!this.fullyInitialized) {
|
|
249
|
-
await this.
|
|
250
|
-
|
|
306
|
+
await this.initializeSharedRouteHandling({
|
|
307
|
+
staticRoutes: this.staticRoutes,
|
|
308
|
+
hmrManager: this.hmrManager
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
const buildRuntimeOrigin = this.serverInstance ? `http://${this.serverInstance.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${this.serverInstance.port || DEFAULT_ECOPAGES_PORT}` : void 0;
|
|
312
|
+
await this.staticBuilder.build(
|
|
313
|
+
{ ...options, preview: false, baseUrl: buildRuntimeOrigin },
|
|
314
|
+
{
|
|
315
|
+
router: this.router,
|
|
316
|
+
routeRendererFactory: this.routeRendererFactory,
|
|
317
|
+
staticRoutes: this.staticRoutes
|
|
318
|
+
}
|
|
319
|
+
);
|
|
320
|
+
if (!options?.preview) {
|
|
321
|
+
return;
|
|
251
322
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
323
|
+
const previewHostname = this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME;
|
|
324
|
+
const previewPort = Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT);
|
|
325
|
+
const activePreviewPort = await this.previewHost.start({
|
|
326
|
+
appConfig: this.appConfig,
|
|
327
|
+
hostname: String(previewHostname),
|
|
328
|
+
port: previewPort
|
|
256
329
|
});
|
|
330
|
+
if (activePreviewPort) {
|
|
331
|
+
appLogger.info(`Preview running at http://${previewHostname}:${activePreviewPort}`);
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
257
334
|
}
|
|
258
335
|
/**
|
|
259
336
|
* Initializes the server with dynamic routes after server creation.
|
|
@@ -273,13 +350,20 @@ class BunServerAdapter extends SharedServerAdapter {
|
|
|
273
350
|
return this.initializationPromise;
|
|
274
351
|
}
|
|
275
352
|
/**
|
|
276
|
-
* Performs
|
|
353
|
+
* Performs the one-time post-bind initialization path for Bun servers.
|
|
354
|
+
*
|
|
355
|
+
* @remarks
|
|
356
|
+
* This is intentionally split from `initialize()` because shared route handling
|
|
357
|
+
* and file watching need the live server instance to exist before Bun can
|
|
358
|
+
* reload updated route handlers in place.
|
|
277
359
|
*/
|
|
278
360
|
async _performInitialization(server) {
|
|
279
361
|
this.serverInstance = server;
|
|
280
362
|
appLogger.debug("Completing server initialization with dynamic routes");
|
|
281
|
-
await this.
|
|
282
|
-
|
|
363
|
+
await this.initializeSharedRouteHandling({
|
|
364
|
+
staticRoutes: this.staticRoutes,
|
|
365
|
+
hmrManager: this.hmrManager
|
|
366
|
+
});
|
|
283
367
|
this.fullyInitialized = true;
|
|
284
368
|
if (this.options?.watch) await this.watch();
|
|
285
369
|
if (server && typeof server.reload === "function") {
|
|
@@ -342,23 +426,16 @@ class BunServerAdapter extends SharedServerAdapter {
|
|
|
342
426
|
}
|
|
343
427
|
}
|
|
344
428
|
async function createBunServerAdapter(params) {
|
|
345
|
-
const runtimeOrigin = params.runtimeOrigin ??
|
|
429
|
+
const runtimeOrigin = params.runtimeOrigin ?? resolveServeRuntimeOrigin(params.serveOptions);
|
|
346
430
|
const bridge = params.bridge ?? new ClientBridge();
|
|
347
431
|
const hmrManager = params.hmrManager ?? new HmrManager({ appConfig: params.appConfig, bridge });
|
|
348
|
-
const
|
|
349
|
-
appConfig: params.appConfig,
|
|
350
|
-
runtimeOrigin,
|
|
351
|
-
hmrManager,
|
|
352
|
-
bridge
|
|
353
|
-
});
|
|
432
|
+
const previewHost = params.previewHost ?? new BunStaticPreviewHost();
|
|
354
433
|
const adapter = new BunServerAdapter({
|
|
355
434
|
...params,
|
|
356
435
|
runtimeOrigin,
|
|
357
436
|
bridge,
|
|
358
437
|
hmrManager,
|
|
359
|
-
|
|
360
|
-
staticBuilderFactory: params.staticBuilderFactory ?? ((opts) => new ServerStaticBuilder(opts)),
|
|
361
|
-
routeHandlerFactory: params.routeHandlerFactory ?? ((p) => new ServerRouteHandler(p))
|
|
438
|
+
previewHost
|
|
362
439
|
});
|
|
363
440
|
return adapter.createAdapter();
|
|
364
441
|
}
|
|
@@ -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
|
+
};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import { SharedApplicationAdapter } from './
|
|
5
|
-
export
|
|
6
|
-
|
|
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>;
|
|
7
10
|
export declare function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp>;
|
|
8
11
|
export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, unknown, Request> {
|
|
9
12
|
private readonly appOptions;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { AbstractApplicationAdapter } from "./
|
|
2
|
-
import { SharedApplicationAdapter } from "./
|
|
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";
|
|
3
5
|
async function createRuntimeApp(options) {
|
|
4
6
|
const bun = globalThis.Bun;
|
|
5
7
|
if (bun) {
|
|
6
|
-
const { createApp: createBunApp } = await import("./adapters/bun/create-app.js");
|
|
7
8
|
return await createBunApp(options);
|
|
8
9
|
}
|
|
9
|
-
const { createNodeApp } = await import("./adapters/node/create-app.js");
|
|
10
10
|
return await createNodeApp(options);
|
|
11
11
|
}
|
|
12
12
|
async function createApp(options) {
|
package/src/adapters/index.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
export { EcopagesApp, createApp } from './
|
|
2
|
-
export { defineApiHandler, defineGroupHandler } from './
|
|
3
|
-
export { NodeServerAdapter, createNodeServerAdapter } from './node/server-adapter.js';
|
|
4
|
-
export { EcopagesApp as NodeAdapterEcopagesApp, createNodeApp } from './node/create-app.js';
|
|
5
|
-
export type { NodeServerAdapterParams, NodeServerAdapterResult } from './node/server-adapter.js';
|
|
6
|
-
export type { EcopagesAppOptions as NodeEcopagesAppOptions } from './node/create-app.js';
|
|
1
|
+
export { EcopagesApp, createApp } from './create-app.js';
|
|
2
|
+
export { defineApiHandler, defineGroupHandler, type GroupHandler } from './shared/define-api-handler.js';
|
package/src/adapters/index.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { EcopagesApp, createApp } from "./
|
|
2
|
-
import { defineApiHandler, defineGroupHandler } from "./
|
|
3
|
-
import { NodeServerAdapter, createNodeServerAdapter } from "./node/server-adapter.js";
|
|
4
|
-
import { EcopagesApp as EcopagesApp2, createNodeApp } from "./node/create-app.js";
|
|
1
|
+
import { EcopagesApp, createApp } from "./create-app.js";
|
|
2
|
+
import { defineApiHandler, defineGroupHandler } from "./shared/define-api-handler.js";
|
|
5
3
|
export {
|
|
6
4
|
EcopagesApp,
|
|
7
|
-
EcopagesApp2 as NodeAdapterEcopagesApp,
|
|
8
|
-
NodeServerAdapter,
|
|
9
5
|
createApp,
|
|
10
|
-
createNodeApp,
|
|
11
|
-
createNodeServerAdapter,
|
|
12
6
|
defineApiHandler,
|
|
13
7
|
defineGroupHandler
|
|
14
8
|
};
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import { type Server as NodeServerInstance } from 'node:http';
|
|
2
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
3
|
-
import { type ApplicationAdapterOptions } from '../abstract/application-adapter.js';
|
|
4
1
|
import { SharedApplicationAdapter } from '../shared/application-adapter.js';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
|
|
2
|
+
import type { RuntimeHost } from '../shared/runtime-host.js';
|
|
3
|
+
import type { EcopagesAppOptions } from '../create-app.js';
|
|
4
|
+
import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
|
|
5
|
+
import type { NodeServerInstance } from './server-adapter.js';
|
|
6
|
+
export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
|
|
11
7
|
serverAdapter: NodeServerAdapterResult | undefined;
|
|
12
8
|
private server;
|
|
13
9
|
private runtimeOrigin;
|
|
10
|
+
private readonly runtimeHost;
|
|
11
|
+
constructor(options: EcopagesAppOptions, dependencies: {
|
|
12
|
+
runtimeHost: RuntimeHost<NodeServerInstance, {
|
|
13
|
+
port?: number;
|
|
14
|
+
hostname?: string;
|
|
15
|
+
}>;
|
|
16
|
+
});
|
|
17
|
+
protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
|
|
14
18
|
stop(force?: boolean): Promise<void>;
|
|
15
19
|
protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
|
|
16
20
|
start(): Promise<NodeServerInstance | void>;
|
|
17
|
-
private createWebRequest;
|
|
18
|
-
private sendNodeResponse;
|
|
19
21
|
fetch(request: Request): Promise<Response>;
|
|
20
22
|
}
|
|
21
|
-
export declare function createNodeApp(options: EcopagesAppOptions): Promise<
|
|
23
|
+
export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
24
|
+
export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|