@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,17 +1,47 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
DEFAULT_ECOPAGES_DIST_DIR,
|
|
4
|
+
DEFAULT_ECOPAGES_HOSTNAME,
|
|
5
|
+
DEFAULT_ECOPAGES_PORT,
|
|
6
|
+
DEFAULT_ECOPAGES_WORK_DIR
|
|
7
|
+
} from "../config/constants.js";
|
|
8
|
+
import {
|
|
9
|
+
collectConfiguredAppBuildManifestContributions,
|
|
10
|
+
createBuildAdapter,
|
|
11
|
+
getAppServerBuildPlugins,
|
|
12
|
+
setAppBuildAdapter,
|
|
13
|
+
setAppBuildExecutor,
|
|
14
|
+
updateAppBuildManifest
|
|
15
|
+
} from "../build/build-adapter.js";
|
|
16
|
+
import { createAppBuildExecutor } from "../build/dev-build-coordinator.js";
|
|
17
|
+
import { GHTML_PLUGIN_NAME } from "../integrations/ghtml/ghtml.constants.js";
|
|
18
|
+
import { ghtmlPlugin } from "../integrations/ghtml/ghtml.plugin.js";
|
|
4
19
|
import { createEcoComponentMetaPlugin } from "../plugins/eco-component-meta-plugin.js";
|
|
20
|
+
import { createEcoComponentMetaTransform } from "../plugins/eco-component-meta-plugin.js";
|
|
21
|
+
import {
|
|
22
|
+
NoopEntrypointDependencyGraph,
|
|
23
|
+
setAppEntrypointDependencyGraph
|
|
24
|
+
} from "../services/runtime-state/entrypoint-dependency-graph.service.js";
|
|
25
|
+
import {
|
|
26
|
+
CounterServerInvalidationState,
|
|
27
|
+
setAppServerInvalidationState
|
|
28
|
+
} from "../services/runtime-state/server-invalidation-state.service.js";
|
|
5
29
|
import { invariant } from "../utils/invariant.js";
|
|
6
30
|
import { appLogger } from "../global/app-logger.js";
|
|
31
|
+
import { fileSystem } from "@ecopages/file-system";
|
|
7
32
|
const CONFIG_BUILDER_ERRORS = {
|
|
8
33
|
DUPLICATE_INTEGRATION_NAMES: "Integrations names must be unique",
|
|
9
34
|
DUPLICATE_INTEGRATION_EXTENSIONS: "Integrations extensions must be unique",
|
|
10
35
|
MIXED_JSX_ENGINES: "Both kitajs and react integrations are enabled. Use per-file JSX import source/pragma consistently (e.g. `/** @jsxImportSource react */` for React files and `/** @jsxImportSource @kitajs/html */` for Kita files).",
|
|
11
36
|
duplicateProcessorName: (name) => `Processor with name "${name}" already exists`,
|
|
12
|
-
duplicateLoaderName: (name) => `Loader with name "${name}" already exists
|
|
37
|
+
duplicateLoaderName: (name) => `Loader with name "${name}" already exists`,
|
|
38
|
+
duplicateSemanticTemplate: (kind, matches) => `Multiple ${kind} templates found: ${matches.join(", ")}`,
|
|
39
|
+
incompatibleRuntimeCapability: (kind, name, runtime, reason) => `Cannot enable ${kind} "${name}" on ${runtime}: ${reason}`,
|
|
40
|
+
unsupportedRuntimeVersion: (kind, name, runtime, current, min) => `Cannot enable ${kind} "${name}" on ${runtime} ${current}: requires runtime version ${min} or newer`,
|
|
41
|
+
invalidRuntimeVersion: (kind, name, version) => `Cannot validate ${kind} "${name}" runtimeCapability.minRuntimeVersion "${version}" because it is not a dot-separated numeric version`
|
|
13
42
|
};
|
|
14
43
|
class ConfigBuilder {
|
|
44
|
+
buildOwnership = "bun-native";
|
|
15
45
|
config = {
|
|
16
46
|
baseUrl: "",
|
|
17
47
|
rootDir: ".",
|
|
@@ -21,12 +51,6 @@ class ConfigBuilder {
|
|
|
21
51
|
componentsDir: "components",
|
|
22
52
|
layoutsDir: "layouts",
|
|
23
53
|
publicDir: "public",
|
|
24
|
-
includesTemplates: {
|
|
25
|
-
head: "head.ghtml.ts",
|
|
26
|
-
html: "html.ghtml.ts",
|
|
27
|
-
seo: "seo.ghtml.ts"
|
|
28
|
-
},
|
|
29
|
-
error404Template: "404.ghtml.ts",
|
|
30
54
|
robotsTxt: {
|
|
31
55
|
preferences: {
|
|
32
56
|
"*": []
|
|
@@ -34,7 +58,7 @@ class ConfigBuilder {
|
|
|
34
58
|
},
|
|
35
59
|
integrations: [],
|
|
36
60
|
integrationsDependencies: [],
|
|
37
|
-
distDir:
|
|
61
|
+
distDir: DEFAULT_ECOPAGES_DIST_DIR,
|
|
38
62
|
defaultMetadata: {
|
|
39
63
|
title: "Ecopages",
|
|
40
64
|
description: "This is a static site generated with Ecopages"
|
|
@@ -45,6 +69,7 @@ class ConfigBuilder {
|
|
|
45
69
|
config: "",
|
|
46
70
|
componentsDir: "",
|
|
47
71
|
distDir: "",
|
|
72
|
+
workDir: "",
|
|
48
73
|
includesDir: "",
|
|
49
74
|
layoutsDir: "",
|
|
50
75
|
pagesDir: "",
|
|
@@ -55,7 +80,9 @@ class ConfigBuilder {
|
|
|
55
80
|
error404TemplatePath: ""
|
|
56
81
|
},
|
|
57
82
|
processors: /* @__PURE__ */ new Map(),
|
|
58
|
-
loaders: /* @__PURE__ */ new Map()
|
|
83
|
+
loaders: /* @__PURE__ */ new Map(),
|
|
84
|
+
sourceTransforms: /* @__PURE__ */ new Map(),
|
|
85
|
+
workDir: DEFAULT_ECOPAGES_WORK_DIR
|
|
59
86
|
};
|
|
60
87
|
/**
|
|
61
88
|
* Sets the base URL for the application.
|
|
@@ -79,6 +106,18 @@ class ConfigBuilder {
|
|
|
79
106
|
this.config.rootDir = rootDir;
|
|
80
107
|
return this;
|
|
81
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Sets which runtime path owns build execution for the finalized app config.
|
|
111
|
+
*
|
|
112
|
+
* @remarks
|
|
113
|
+
* Bun-native remains the default. Vite-host ownership should be selected only
|
|
114
|
+
* for host-driven compatibility flows where core must not silently fall back to
|
|
115
|
+
* Bun build execution.
|
|
116
|
+
*/
|
|
117
|
+
setBuildOwnership(buildOwnership) {
|
|
118
|
+
this.buildOwnership = buildOwnership;
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
82
121
|
/**
|
|
83
122
|
* Sets the source directory relative to the root directory.
|
|
84
123
|
* This directory contains all the source files for the application.
|
|
@@ -145,27 +184,6 @@ class ConfigBuilder {
|
|
|
145
184
|
this.config.publicDir = publicDir;
|
|
146
185
|
return this;
|
|
147
186
|
}
|
|
148
|
-
/**
|
|
149
|
-
* Sets the templates used for includes.
|
|
150
|
-
* These templates are used to build the HTML structure of pages.
|
|
151
|
-
*
|
|
152
|
-
* @param includesTemplates - An object containing the template file names
|
|
153
|
-
* @returns The ConfigBuilder instance for method chaining
|
|
154
|
-
*/
|
|
155
|
-
setIncludesTemplates(includesTemplates) {
|
|
156
|
-
this.config.includesTemplates = includesTemplates;
|
|
157
|
-
return this;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Sets the template file for the 404 error page.
|
|
161
|
-
*
|
|
162
|
-
* @param error404Template - The file name of the 404 error template (default: '404.ghtml.ts')
|
|
163
|
-
* @returns The ConfigBuilder instance for method chaining
|
|
164
|
-
*/
|
|
165
|
-
setError404Template(error404Template) {
|
|
166
|
-
this.config.error404Template = error404Template;
|
|
167
|
-
return this;
|
|
168
|
-
}
|
|
169
187
|
/**
|
|
170
188
|
* Sets the robots.txt configuration.
|
|
171
189
|
* This determines which paths are allowed/disallowed for search engines.
|
|
@@ -191,13 +209,28 @@ class ConfigBuilder {
|
|
|
191
209
|
/**
|
|
192
210
|
* Sets the output directory for the built application.
|
|
193
211
|
*
|
|
194
|
-
* @param distDir - The distribution directory name (default: '
|
|
212
|
+
* @param distDir - The distribution directory name (default: 'dist')
|
|
195
213
|
* @returns The ConfigBuilder instance for method chaining
|
|
196
214
|
*/
|
|
197
215
|
setDistDir(distDir) {
|
|
198
216
|
this.config.distDir = distDir;
|
|
199
217
|
return this;
|
|
200
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Sets the internal work directory for runtime-only artifacts.
|
|
221
|
+
*
|
|
222
|
+
* @remarks
|
|
223
|
+
* Use this when deployable output should stay clean while Ecopages still
|
|
224
|
+
* needs a separate workspace for server transpilation caches, runtime
|
|
225
|
+
* manifests, and other internal build products.
|
|
226
|
+
*
|
|
227
|
+
* @param workDir - The internal work directory name
|
|
228
|
+
* @returns The ConfigBuilder instance for method chaining
|
|
229
|
+
*/
|
|
230
|
+
setWorkDir(workDir) {
|
|
231
|
+
this.config.workDir = workDir;
|
|
232
|
+
return this;
|
|
233
|
+
}
|
|
201
234
|
/**
|
|
202
235
|
* Sets the default metadata for pages.
|
|
203
236
|
* This is used when a page doesn't specify its own metadata.
|
|
@@ -264,6 +297,17 @@ class ConfigBuilder {
|
|
|
264
297
|
}
|
|
265
298
|
return this;
|
|
266
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* Sets the source transforms to use for transform-first bundlers such as Vite.
|
|
302
|
+
* This replaces any existing source transforms.
|
|
303
|
+
*/
|
|
304
|
+
setSourceTransforms(sourceTransforms) {
|
|
305
|
+
this.config.sourceTransforms.clear();
|
|
306
|
+
for (const sourceTransform of sourceTransforms) {
|
|
307
|
+
this.addSourceTransform(sourceTransform.name, sourceTransform);
|
|
308
|
+
}
|
|
309
|
+
return this;
|
|
310
|
+
}
|
|
267
311
|
/**
|
|
268
312
|
* Adds a loader to the application.
|
|
269
313
|
*
|
|
@@ -279,6 +323,18 @@ class ConfigBuilder {
|
|
|
279
323
|
this.config.loaders.set(name, loader);
|
|
280
324
|
return this;
|
|
281
325
|
}
|
|
326
|
+
/**
|
|
327
|
+
* Adds a source transform to the application.
|
|
328
|
+
*
|
|
329
|
+
* @throws Error if a source transform with the same name already exists.
|
|
330
|
+
*/
|
|
331
|
+
addSourceTransform(name, sourceTransform) {
|
|
332
|
+
if (this.config.sourceTransforms.has(name)) {
|
|
333
|
+
throw new Error(CONFIG_BUILDER_ERRORS.duplicateLoaderName(name));
|
|
334
|
+
}
|
|
335
|
+
this.config.sourceTransforms.set(name, sourceTransform);
|
|
336
|
+
return this;
|
|
337
|
+
}
|
|
282
338
|
/**
|
|
283
339
|
* Sets the cache configuration for ISR and page caching.
|
|
284
340
|
*
|
|
@@ -294,35 +350,44 @@ class ConfigBuilder {
|
|
|
294
350
|
return this;
|
|
295
351
|
}
|
|
296
352
|
createAbsolutePaths(config) {
|
|
297
|
-
const {
|
|
298
|
-
srcDir,
|
|
299
|
-
componentsDir,
|
|
300
|
-
includesDir,
|
|
301
|
-
layoutsDir,
|
|
302
|
-
pagesDir,
|
|
303
|
-
publicDir,
|
|
304
|
-
distDir,
|
|
305
|
-
includesTemplates,
|
|
306
|
-
error404Template
|
|
307
|
-
} = config;
|
|
353
|
+
const { srcDir, componentsDir, includesDir, layoutsDir, pagesDir, publicDir, distDir, workDir } = config;
|
|
308
354
|
const projectDir = config.rootDir;
|
|
309
355
|
const absoluteSrcDir = path.resolve(projectDir, srcDir);
|
|
310
356
|
const absoluteDistDir = path.resolve(projectDir, distDir);
|
|
357
|
+
const absoluteWorkDir = path.resolve(projectDir, workDir);
|
|
358
|
+
const absoluteIncludesDir = path.join(absoluteSrcDir, includesDir);
|
|
359
|
+
const absolutePagesDir = path.join(absoluteSrcDir, pagesDir);
|
|
311
360
|
this.config.absolutePaths = {
|
|
312
361
|
config: path.join(projectDir, "eco.config.ts"),
|
|
313
362
|
projectDir,
|
|
314
363
|
srcDir: absoluteSrcDir,
|
|
315
364
|
distDir: absoluteDistDir,
|
|
365
|
+
workDir: absoluteWorkDir,
|
|
316
366
|
componentsDir: path.join(absoluteSrcDir, componentsDir),
|
|
317
|
-
includesDir:
|
|
367
|
+
includesDir: absoluteIncludesDir,
|
|
318
368
|
layoutsDir: path.join(absoluteSrcDir, layoutsDir),
|
|
319
|
-
pagesDir:
|
|
369
|
+
pagesDir: absolutePagesDir,
|
|
320
370
|
publicDir: path.join(absoluteSrcDir, publicDir),
|
|
321
|
-
htmlTemplatePath:
|
|
322
|
-
|
|
371
|
+
htmlTemplatePath: this.resolveSemanticTemplatePath({
|
|
372
|
+
dirPath: absoluteIncludesDir,
|
|
373
|
+
basename: "html"
|
|
374
|
+
}),
|
|
375
|
+
error404TemplatePath: this.resolveSemanticTemplatePath({
|
|
376
|
+
dirPath: absolutePagesDir,
|
|
377
|
+
basename: "404"
|
|
378
|
+
})
|
|
323
379
|
};
|
|
324
380
|
return this;
|
|
325
381
|
}
|
|
382
|
+
resolveSemanticTemplatePath({ dirPath, basename }) {
|
|
383
|
+
const extensions = this.config.templatesExt.length > 0 ? this.config.templatesExt : [".ghtml.ts"];
|
|
384
|
+
const matches = extensions.map((extension) => path.join(dirPath, `${basename}${extension}`)).filter((candidate) => fileSystem.exists(candidate));
|
|
385
|
+
invariant(matches.length <= 1, CONFIG_BUILDER_ERRORS.duplicateSemanticTemplate(basename, matches));
|
|
386
|
+
if (matches.length === 1) {
|
|
387
|
+
return matches[0];
|
|
388
|
+
}
|
|
389
|
+
return path.join(dirPath, `${basename}${extensions[0]}`);
|
|
390
|
+
}
|
|
326
391
|
createIntegrationTemplatesExt(integrations) {
|
|
327
392
|
const integrationName = integrations.map((integration) => integration.name);
|
|
328
393
|
const uniqueName = new Set(integrationName);
|
|
@@ -330,7 +395,7 @@ class ConfigBuilder {
|
|
|
330
395
|
const hasKitaJs = uniqueName.has("kitajs");
|
|
331
396
|
const hasReact = uniqueName.has("react");
|
|
332
397
|
if (hasKitaJs && hasReact) {
|
|
333
|
-
appLogger.
|
|
398
|
+
appLogger.debug(CONFIG_BUILDER_ERRORS.MIXED_JSX_ENGINES);
|
|
334
399
|
}
|
|
335
400
|
const integrationsExtensions = integrations.flatMap((integration) => integration.extensions);
|
|
336
401
|
const uniqueExtensions = new Set(integrationsExtensions);
|
|
@@ -345,11 +410,138 @@ class ConfigBuilder {
|
|
|
345
410
|
processor.setContext(this.config);
|
|
346
411
|
}
|
|
347
412
|
}
|
|
413
|
+
validateRuntimeCapabilities() {
|
|
414
|
+
const runtimeEnvironment = this.detectRuntimeEnvironment();
|
|
415
|
+
const contributors = [
|
|
416
|
+
...this.config.integrations.map((integration) => ({
|
|
417
|
+
kind: "integration",
|
|
418
|
+
name: integration.name,
|
|
419
|
+
runtimeCapability: integration.runtimeCapability
|
|
420
|
+
})),
|
|
421
|
+
...Array.from(this.config.processors.values(), (processor) => ({
|
|
422
|
+
kind: "processor",
|
|
423
|
+
name: processor.name,
|
|
424
|
+
runtimeCapability: processor.runtimeCapability
|
|
425
|
+
}))
|
|
426
|
+
];
|
|
427
|
+
for (const contributor of contributors) {
|
|
428
|
+
this.validateRuntimeCapability(contributor, runtimeEnvironment);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
validateRuntimeCapability(contributor, environment) {
|
|
432
|
+
const declaration = contributor.runtimeCapability;
|
|
433
|
+
if (!declaration) {
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
for (const tag of declaration.tags) {
|
|
437
|
+
if (environment.supportedTags.has(tag)) {
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
throw new Error(
|
|
441
|
+
CONFIG_BUILDER_ERRORS.incompatibleRuntimeCapability(
|
|
442
|
+
contributor.kind,
|
|
443
|
+
contributor.name,
|
|
444
|
+
environment.runtime,
|
|
445
|
+
this.describeUnsupportedRuntimeTag(tag)
|
|
446
|
+
)
|
|
447
|
+
);
|
|
448
|
+
}
|
|
449
|
+
if (!declaration.minRuntimeVersion) {
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
const minVersion = this.parseVersion(declaration.minRuntimeVersion);
|
|
453
|
+
if (!minVersion) {
|
|
454
|
+
throw new Error(
|
|
455
|
+
CONFIG_BUILDER_ERRORS.invalidRuntimeVersion(
|
|
456
|
+
contributor.kind,
|
|
457
|
+
contributor.name,
|
|
458
|
+
declaration.minRuntimeVersion
|
|
459
|
+
)
|
|
460
|
+
);
|
|
461
|
+
}
|
|
462
|
+
const currentVersion = this.parseVersion(environment.version);
|
|
463
|
+
if (!currentVersion) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
if (this.compareVersions(currentVersion, minVersion) >= 0) {
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
throw new Error(
|
|
470
|
+
CONFIG_BUILDER_ERRORS.unsupportedRuntimeVersion(
|
|
471
|
+
contributor.kind,
|
|
472
|
+
contributor.name,
|
|
473
|
+
environment.runtime,
|
|
474
|
+
environment.version,
|
|
475
|
+
declaration.minRuntimeVersion
|
|
476
|
+
)
|
|
477
|
+
);
|
|
478
|
+
}
|
|
479
|
+
detectRuntimeEnvironment() {
|
|
480
|
+
const bunVersion = this.getBunVersion();
|
|
481
|
+
if (bunVersion) {
|
|
482
|
+
return {
|
|
483
|
+
runtime: "bun",
|
|
484
|
+
version: bunVersion,
|
|
485
|
+
supportedTags: /* @__PURE__ */ new Set([
|
|
486
|
+
"bun-only",
|
|
487
|
+
"node-compatible",
|
|
488
|
+
"requires-native-bun-api",
|
|
489
|
+
"requires-node-builtins"
|
|
490
|
+
])
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
return {
|
|
494
|
+
runtime: "node",
|
|
495
|
+
version: process.versions.node,
|
|
496
|
+
supportedTags: /* @__PURE__ */ new Set(["node-compatible", "requires-node-builtins"])
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
getBunVersion() {
|
|
500
|
+
const bun = globalThis;
|
|
501
|
+
return typeof bun.Bun?.version === "string" ? bun.Bun.version : void 0;
|
|
502
|
+
}
|
|
503
|
+
describeUnsupportedRuntimeTag(tag) {
|
|
504
|
+
switch (tag) {
|
|
505
|
+
case "bun-only":
|
|
506
|
+
return "it is Bun-only";
|
|
507
|
+
case "requires-native-bun-api":
|
|
508
|
+
return "it requires the native Bun API";
|
|
509
|
+
case "requires-node-builtins":
|
|
510
|
+
return "it requires Node builtins";
|
|
511
|
+
case "node-compatible":
|
|
512
|
+
return "it requires a Node-compatible runtime";
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
parseVersion(version) {
|
|
516
|
+
const normalized = version.trim().replace(/^v/i, "");
|
|
517
|
+
if (!/^\d+(?:\.\d+)*$/.test(normalized)) {
|
|
518
|
+
return void 0;
|
|
519
|
+
}
|
|
520
|
+
return normalized.split(".").map((segment) => Number(segment));
|
|
521
|
+
}
|
|
522
|
+
compareVersions(left, right) {
|
|
523
|
+
const maxLength = Math.max(left.length, right.length);
|
|
524
|
+
for (let index = 0; index < maxLength; index += 1) {
|
|
525
|
+
const leftValue = left[index] ?? 0;
|
|
526
|
+
const rightValue = right[index] ?? 0;
|
|
527
|
+
if (leftValue > rightValue) {
|
|
528
|
+
return 1;
|
|
529
|
+
}
|
|
530
|
+
if (leftValue < rightValue) {
|
|
531
|
+
return -1;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
return 0;
|
|
535
|
+
}
|
|
348
536
|
/**
|
|
349
537
|
* Initializes default loaders that are required for EcoPages to function.
|
|
350
538
|
* This includes the eco-component-meta-plugin which auto-injects __eco metadata into component configs.
|
|
351
539
|
*/
|
|
352
540
|
async initializeDefaultLoaders() {
|
|
541
|
+
const componentMetaTransform = createEcoComponentMetaTransform({ config: this.config });
|
|
542
|
+
if (!this.config.sourceTransforms.has(componentMetaTransform.name)) {
|
|
543
|
+
this.config.sourceTransforms.set(componentMetaTransform.name, componentMetaTransform);
|
|
544
|
+
}
|
|
353
545
|
const componentMetaPlugin = createEcoComponentMetaPlugin({ config: this.config });
|
|
354
546
|
if (!this.config.loaders.has(componentMetaPlugin.name)) {
|
|
355
547
|
this.config.loaders.set(componentMetaPlugin.name, componentMetaPlugin);
|
|
@@ -379,10 +571,24 @@ class ConfigBuilder {
|
|
|
379
571
|
if (!this.config.integrations.some((integration) => integration.name === GHTML_PLUGIN_NAME)) {
|
|
380
572
|
this.config.integrations.push(ghtmlPlugin());
|
|
381
573
|
}
|
|
382
|
-
this.createAbsolutePaths(this.config);
|
|
383
574
|
this.createIntegrationTemplatesExt(this.config.integrations);
|
|
575
|
+
this.createAbsolutePaths(this.config);
|
|
384
576
|
await this.initializeDefaultLoaders();
|
|
385
577
|
this.initializeProcessors();
|
|
578
|
+
this.validateRuntimeCapabilities();
|
|
579
|
+
const buildAdapter = createBuildAdapter({ ownership: this.buildOwnership });
|
|
580
|
+
setAppBuildAdapter(this.config, buildAdapter);
|
|
581
|
+
updateAppBuildManifest(this.config, await collectConfiguredAppBuildManifestContributions(this.config));
|
|
582
|
+
setAppServerInvalidationState(this.config, new CounterServerInvalidationState());
|
|
583
|
+
setAppEntrypointDependencyGraph(this.config, new NoopEntrypointDependencyGraph());
|
|
584
|
+
setAppBuildExecutor(
|
|
585
|
+
this.config,
|
|
586
|
+
createAppBuildExecutor({
|
|
587
|
+
development: false,
|
|
588
|
+
adapter: buildAdapter,
|
|
589
|
+
getPlugins: () => getAppServerBuildPlugins(this.config)
|
|
590
|
+
})
|
|
591
|
+
);
|
|
386
592
|
return this.config;
|
|
387
593
|
}
|
|
388
594
|
}
|
|
@@ -30,3 +30,16 @@ export declare const GENERATED_BASE_PATHS: {
|
|
|
30
30
|
};
|
|
31
31
|
export declare const DEFAULT_ECOPAGES_PORT = 3000;
|
|
32
32
|
export declare const DEFAULT_ECOPAGES_HOSTNAME = "localhost";
|
|
33
|
+
/**
|
|
34
|
+
* Default directory used for deployable output.
|
|
35
|
+
*/
|
|
36
|
+
export declare const DEFAULT_ECOPAGES_DIST_DIR = "dist";
|
|
37
|
+
/**
|
|
38
|
+
* Default internal working directory used for runtime-only artifacts.
|
|
39
|
+
*
|
|
40
|
+
* @remarks
|
|
41
|
+
* This directory is a local tool workspace and is not intended for deployment.
|
|
42
|
+
* It owns transpiled server modules, runtime manifests, and processor caches
|
|
43
|
+
* so the export directory can remain a clean deployable tree.
|
|
44
|
+
*/
|
|
45
|
+
export declare const DEFAULT_ECOPAGES_WORK_DIR = ".eco";
|
|
@@ -10,9 +10,13 @@ const GENERATED_BASE_PATHS = {
|
|
|
10
10
|
};
|
|
11
11
|
const DEFAULT_ECOPAGES_PORT = 3e3;
|
|
12
12
|
const DEFAULT_ECOPAGES_HOSTNAME = "localhost";
|
|
13
|
+
const DEFAULT_ECOPAGES_DIST_DIR = "dist";
|
|
14
|
+
const DEFAULT_ECOPAGES_WORK_DIR = ".eco";
|
|
13
15
|
export {
|
|
16
|
+
DEFAULT_ECOPAGES_DIST_DIR,
|
|
14
17
|
DEFAULT_ECOPAGES_HOSTNAME,
|
|
15
18
|
DEFAULT_ECOPAGES_PORT,
|
|
19
|
+
DEFAULT_ECOPAGES_WORK_DIR,
|
|
16
20
|
GENERATED_BASE_PATHS,
|
|
17
21
|
IS_BUN,
|
|
18
22
|
RESOLVED_ASSETS_DIR,
|
package/src/declarations.d.ts
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig } from './internal-types';
|
|
1
|
+
import type { EcoPagesAppConfig } from './types/internal-types';
|
|
2
|
+
import type { EcoNavigationRuntime } from './router/client/navigation-coordinator';
|
|
2
3
|
|
|
3
4
|
type HMRHandler = (url: string) => Promise<void>;
|
|
4
|
-
|
|
5
|
-
type
|
|
5
|
+
type CleanupPageRootFunction = () => void;
|
|
6
|
+
type EcoPageRoot = { render: (node: unknown) => void; unmount: () => void };
|
|
7
|
+
type EcoPageData = {
|
|
8
|
+
module: string;
|
|
9
|
+
props: Record<string, unknown>;
|
|
10
|
+
};
|
|
11
|
+
type EcoPagesWindowRuntime = {
|
|
12
|
+
hmrHandlers?: Record<string, HMRHandler>;
|
|
13
|
+
navigation?: EcoNavigationRuntime;
|
|
14
|
+
react?: {
|
|
15
|
+
cleanupPageRoot?: CleanupPageRootFunction;
|
|
16
|
+
pageRoot?: EcoPageRoot | null;
|
|
17
|
+
};
|
|
18
|
+
page?: EcoPageData;
|
|
19
|
+
};
|
|
6
20
|
|
|
7
21
|
declare global {
|
|
8
|
-
var ecoConfig: EcoPagesAppConfig;
|
|
9
|
-
|
|
10
22
|
interface Window {
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
/** Function to reload the current page, used for layout updates */
|
|
14
|
-
__ecopages_reload_current_page__?: ReloadPageFunction;
|
|
15
|
-
/** Page data registry - contains module path and props for current page */
|
|
16
|
-
__ECO_PAGE__?: {
|
|
17
|
-
module: string;
|
|
18
|
-
props: Record<string, unknown>;
|
|
19
|
-
};
|
|
23
|
+
/** Shared Ecopages browser runtime state */
|
|
24
|
+
__ECO_PAGES__?: EcoPagesWindowRuntime;
|
|
20
25
|
}
|
|
21
26
|
}
|
|
22
27
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/public-types.js';
|
|
2
|
+
import { type DevelopmentInvalidationPlan } from '../services/invalidation/development-invalidation.service.js';
|
|
3
|
+
export type HostRuntimeModuleLoader = (id: string) => Promise<unknown>;
|
|
4
|
+
export interface DevelopmentHostRuntime {
|
|
5
|
+
registerHostModuleLoader(loader: HostRuntimeModuleLoader): void;
|
|
6
|
+
planFileChange(filePath: string): DevelopmentInvalidationPlan;
|
|
7
|
+
invalidateServerModules(changedFiles?: string[]): void;
|
|
8
|
+
resetRuntimeState(changedFiles?: string[]): void;
|
|
9
|
+
}
|
|
10
|
+
export declare function createDevelopmentHostRuntime(appConfig: EcoPagesAppConfig): DevelopmentHostRuntime;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DevelopmentInvalidationService
|
|
3
|
+
} from "../services/invalidation/development-invalidation.service.js";
|
|
4
|
+
import { setHostModuleLoader } from "../services/module-loading/host-module-loader-registry.js";
|
|
5
|
+
function createDevelopmentHostRuntime(appConfig) {
|
|
6
|
+
const invalidationService = new DevelopmentInvalidationService(appConfig);
|
|
7
|
+
return {
|
|
8
|
+
registerHostModuleLoader(loader) {
|
|
9
|
+
setHostModuleLoader(loader);
|
|
10
|
+
},
|
|
11
|
+
planFileChange(filePath) {
|
|
12
|
+
return invalidationService.planFileChange(filePath);
|
|
13
|
+
},
|
|
14
|
+
invalidateServerModules(changedFiles) {
|
|
15
|
+
invalidationService.invalidateServerModules(changedFiles);
|
|
16
|
+
},
|
|
17
|
+
resetRuntimeState(changedFiles) {
|
|
18
|
+
invalidationService.resetRuntimeState(changedFiles);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
createDevelopmentHostRuntime
|
|
24
|
+
};
|
package/src/dev/sc-server.d.ts
CHANGED
package/src/dev/sc-server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { extname, join } from "node:path";
|
|
2
|
-
import { STATUS_MESSAGE } from "../constants.js";
|
|
2
|
+
import { STATUS_MESSAGE } from "../config/constants.js";
|
|
3
3
|
import { fileSystem } from "@ecopages/file-system";
|
|
4
4
|
import { ServerUtils } from "../utils/server-utils.module.js";
|
|
5
5
|
import { getRequiredBunRuntime } from "../utils/runtime.js";
|