@ecopages/core 0.2.0-alpha.8 → 0.2.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -28
- package/package.json +94 -116
- package/src/adapters/README.md +2 -2
- package/src/adapters/abstract/application-adapter.d.ts +28 -2
- package/src/adapters/abstract/application-adapter.js +14 -2
- package/src/adapters/abstract/router-adapter.d.ts +1 -1
- package/src/adapters/abstract/server-adapter.d.ts +2 -2
- package/src/adapters/bun/client-bridge.d.ts +1 -1
- package/src/adapters/bun/create-app.d.ts +12 -12
- package/src/adapters/bun/create-app.js +64 -41
- package/src/adapters/bun/hmr-manager.d.ts +19 -115
- package/src/adapters/bun/hmr-manager.js +25 -301
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -2
- package/src/adapters/bun/runtime-host.d.ts +52 -0
- package/src/adapters/bun/runtime-host.js +56 -0
- package/src/adapters/bun/server-adapter.d.ts +100 -32
- package/src/adapters/bun/server-adapter.js +142 -65
- package/src/adapters/bun/static-preview-host.d.ts +28 -0
- package/src/adapters/bun/static-preview-host.js +45 -0
- package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
- package/src/{create-app.js → adapters/create-app.js} +4 -4
- package/src/adapters/index.d.ts +1 -5
- package/src/adapters/index.js +1 -7
- package/src/adapters/node/create-app.d.ts +15 -12
- package/src/adapters/node/create-app.js +34 -85
- package/src/adapters/node/http-request-bridge.d.ts +57 -0
- package/src/adapters/node/http-request-bridge.js +118 -0
- package/src/adapters/node/node-client-bridge.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.d.ts +22 -103
- package/src/adapters/node/node-hmr-manager.js +26 -289
- package/src/adapters/node/runtime-host.d.ts +57 -0
- package/src/adapters/node/runtime-host.js +92 -0
- package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
- package/src/adapters/node/server-adapter-dependencies.js +18 -0
- package/src/adapters/node/server-adapter.d.ts +19 -42
- package/src/adapters/node/server-adapter.js +94 -139
- package/src/adapters/node/static-content-server.d.ts +1 -1
- package/src/adapters/node/static-content-server.js +1 -1
- package/src/adapters/node/static-preview-host.d.ts +55 -0
- package/src/adapters/node/static-preview-host.js +68 -0
- package/src/adapters/shared/application-adapter.d.ts +1 -1
- package/src/adapters/shared/define-api-handler.d.ts +1 -1
- package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
- package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
- package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
- package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
- package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
- package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
- package/src/adapters/shared/fs-server-response-factory.js +11 -27
- package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
- package/src/adapters/shared/fs-server-response-matcher.js +72 -46
- package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
- package/src/adapters/shared/hmr-html-response.d.ts +1 -1
- package/src/adapters/shared/hmr-html-response.js +4 -3
- package/src/adapters/shared/render-context.d.ts +5 -3
- package/src/adapters/shared/render-context.js +24 -1
- package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
- package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
- package/src/adapters/shared/runtime-host.d.ts +12 -0
- package/src/adapters/shared/server-adapter.d.ts +22 -11
- package/src/adapters/shared/server-adapter.js +183 -133
- package/src/adapters/shared/server-route-handler.d.ts +5 -5
- package/src/adapters/shared/server-route-handler.js +4 -4
- package/src/adapters/shared/server-static-builder.d.ts +8 -7
- package/src/adapters/shared/server-static-builder.js +6 -5
- package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
- package/src/adapters/shared/shared-hmr-manager.js +241 -0
- package/src/adapters/shared/static-preview-host.d.ts +10 -0
- package/src/build/README.md +57 -67
- package/src/build/browser-runtime-manifest.d.ts +31 -0
- package/src/build/browser-runtime-manifest.js +61 -0
- package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
- package/src/build/browser-runtime-plugin-helpers.js +14 -0
- package/src/build/browser-runtime-plugin.d.ts +78 -0
- package/src/build/browser-runtime-plugin.js +173 -0
- package/src/build/build-adapter.d.ts +384 -63
- package/src/build/build-adapter.js +129 -54
- package/src/build/build-manifest.d.ts +6 -0
- package/src/build/build-manifest.js +21 -2
- package/src/build/build-types.d.ts +2 -2
- package/src/build/rolldown-adapter-helpers.d.ts +58 -0
- package/src/build/rolldown-adapter-helpers.js +265 -0
- package/src/build/rolldown-build-adapter.d.ts +28 -0
- package/src/build/rolldown-build-adapter.js +65 -0
- package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
- package/src/build/rolldown-dev-build-adapter.js +166 -0
- package/src/build/rolldown-plugin-bridge.d.ts +59 -0
- package/src/build/rolldown-plugin-bridge.js +199 -0
- package/src/build/runtime-build-executor.d.ts +15 -7
- package/src/build/runtime-build-executor.js +8 -9
- package/src/build/runtime-build-output-normalizer.d.ts +3 -0
- package/src/build/runtime-build-output-normalizer.js +111 -0
- package/src/build/serialized-build-executor.d.ts +64 -0
- package/src/build/serialized-build-executor.js +63 -0
- package/src/build/server-side-css-shim-plugin.d.ts +41 -0
- package/src/build/server-side-css-shim-plugin.js +35 -0
- package/src/cache/index.d.ts +6 -0
- package/src/cache/index.js +6 -0
- package/src/cache/module-parse-cache.d.ts +65 -0
- package/src/cache/module-parse-cache.js +75 -0
- package/src/config/README.md +5 -2
- package/src/config/config-builder.d.ts +41 -13
- package/src/config/config-builder.js +62 -24
- package/src/declarations.d.ts +1 -1
- package/src/dev/host-runtime.d.ts +10 -0
- package/src/dev/host-runtime.js +24 -0
- package/src/dev/sc-server.d.ts +1 -1
- package/src/dev/sc-server.js +1 -1
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.js +50 -45
- package/src/eco/eco.types.d.ts +60 -8
- package/src/eco/eco.utils.d.ts +1 -40
- package/src/eco/eco.utils.js +5 -35
- package/src/eco/global-injector-map.d.ts +3 -3
- package/src/eco/global-injector-map.js +2 -2
- package/src/eco/lazy-injector-map.d.ts +2 -2
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -1
- package/src/hmr/client/hmr-runtime.js +9 -1
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
- package/src/hmr/strategies/default-hmr-strategy.js +1 -1
- package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
- package/src/hmr/strategies/js-hmr-strategy.js +5 -10
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +3 -2
- package/src/index.js +15 -4
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
- package/src/integrations/ghtml/ghtml-renderer.js +24 -29
- package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
- package/src/integrations/ghtml/ghtml.constants.js +4 -0
- package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
- package/src/integrations/ghtml/ghtml.plugin.js +3 -4
- package/src/plugins/README.md +1 -0
- package/src/plugins/alias-resolver-cache.d.ts +68 -0
- package/src/plugins/alias-resolver-cache.js +106 -0
- package/src/plugins/alias-resolver-plugin.d.ts +5 -1
- package/src/plugins/alias-resolver-plugin.js +19 -7
- package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
- package/src/plugins/eco-component-meta-plugin.js +43 -25
- package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
- package/src/plugins/foreign-jsx-override-plugin.js +41 -0
- package/src/plugins/integration-plugin.d.ts +136 -42
- package/src/plugins/integration-plugin.js +99 -31
- package/src/plugins/processor.d.ts +4 -2
- package/src/plugins/processor.js +8 -3
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +80 -318
- package/src/route-renderer/README.md +74 -78
- package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
- package/src/route-renderer/orchestration/component-render-context.js +147 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
- package/src/route-renderer/orchestration/integration-renderer.js +660 -258
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
- package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
- package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
- package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
- package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
- package/src/route-renderer/orchestration/render-output.utils.js +171 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
- package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
- package/src/route-renderer/orchestration/template-serialization.js +45 -0
- package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
- package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
- package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
- package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
- package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
- package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
- package/src/route-renderer/page-loading/page-module-loader.js +8 -5
- package/src/route-renderer/route-renderer.d.ts +31 -23
- package/src/route-renderer/route-renderer.js +17 -24
- package/src/router/README.md +76 -8
- package/src/router/client/navigation-coordinator.d.ts +20 -0
- package/src/router/client/navigation-coordinator.js +2 -2
- package/src/router/server/route-registry.d.ts +78 -0
- package/src/router/server/route-registry.js +262 -0
- package/src/services/README.md +1 -2
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
- package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
- package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
- package/src/services/assets/asset-processing-service/index.d.ts +6 -5
- package/src/services/assets/asset-processing-service/index.js +6 -5
- package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
- package/src/services/assets/asset-processing-service/page-package.js +80 -0
- package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
- package/src/services/assets/browser-bundle.service.d.ts +44 -3
- package/src/services/assets/browser-bundle.service.js +15 -7
- package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
- package/src/services/html/html-rewriter-provider.service.js +4 -1
- package/src/services/html/html-transformer.service.d.ts +22 -3
- package/src/services/html/html-transformer.service.js +101 -35
- package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
- package/src/services/invalidation/development-invalidation.service.js +1 -0
- package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
- package/src/services/module-loading/app-module-loader.service.js +0 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
- package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
- package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
- package/src/services/module-loading/host-module-loader-registry.js +15 -0
- package/src/services/module-loading/module-loading-types.d.ts +2 -0
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/page-module-import.service.d.ts +32 -8
- package/src/services/module-loading/page-module-import.service.js +83 -22
- package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
- package/src/services/module-loading/server-module-transpiler.service.js +5 -2
- package/src/services/module-loading/source-module-support.d.ts +5 -0
- package/src/services/module-loading/source-module-support.js +8 -0
- package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
- package/src/services/runtime-state/dev-graph.service.js +10 -10
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
- package/src/static-site-generator/static-site-generator.d.ts +23 -28
- package/src/static-site-generator/static-site-generator.js +119 -156
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
- package/src/types/internal-types.js +0 -0
- package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
- package/src/types/public-types.js +0 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/locals-utils.d.ts +1 -1
- package/src/utils/parse-cli-args.d.ts +4 -1
- package/src/utils/parse-cli-args.js +16 -1
- package/src/utils/resolve-work-dir.js +1 -1
- package/src/watchers/project-watcher.d.ts +4 -4
- package/src/watchers/project-watcher.js +35 -41
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +5 -5
- package/CHANGELOG.md +0 -31
- package/src/adapters/abstract/application-adapter.ts +0 -337
- package/src/adapters/abstract/router-adapter.ts +0 -30
- package/src/adapters/abstract/server-adapter.ts +0 -79
- package/src/adapters/bun/client-bridge.ts +0 -62
- package/src/adapters/bun/create-app.ts +0 -189
- package/src/adapters/bun/hmr-manager.ts +0 -409
- package/src/adapters/bun/index.ts +0 -2
- package/src/adapters/bun/server-adapter.ts +0 -499
- package/src/adapters/bun/server-lifecycle.d.ts +0 -63
- package/src/adapters/bun/server-lifecycle.js +0 -92
- package/src/adapters/bun/server-lifecycle.ts +0 -124
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
- package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
- package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -6
- package/src/adapters/node/index.js +0 -11
- package/src/adapters/node/index.ts +0 -16
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -381
- package/src/adapters/node/runtime-adapter.d.ts +0 -46
- package/src/adapters/node/runtime-adapter.js +0 -306
- package/src/adapters/node/runtime-adapter.ts +0 -439
- package/src/adapters/node/server-adapter.ts +0 -488
- package/src/adapters/node/static-content-server.ts +0 -239
- package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
- package/src/adapters/node/write-runtime-manifest.js +0 -12
- package/src/adapters/node/write-runtime-manifest.ts +0 -38
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/define-api-handler.ts +0 -66
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
- package/src/adapters/shared/hmr-html-response.ts +0 -52
- package/src/adapters/shared/render-context.ts +0 -120
- package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
- package/src/adapters/shared/runtime-bootstrap.js +0 -43
- package/src/adapters/shared/runtime-bootstrap.ts +0 -79
- package/src/adapters/shared/server-adapter.ts +0 -489
- package/src/adapters/shared/server-route-handler.ts +0 -153
- package/src/adapters/shared/server-static-builder.ts +0 -166
- package/src/build/build-adapter.ts +0 -361
- package/src/build/build-manifest.ts +0 -54
- package/src/build/build-types.ts +0 -83
- package/src/build/dev-build-coordinator.d.ts +0 -74
- package/src/build/dev-build-coordinator.js +0 -161
- package/src/build/dev-build-coordinator.ts +0 -221
- package/src/build/esbuild-build-adapter.d.ts +0 -72
- package/src/build/esbuild-build-adapter.js +0 -422
- package/src/build/esbuild-build-adapter.ts +0 -559
- package/src/build/runtime-build-executor.ts +0 -34
- package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
- package/src/build/runtime-specifier-alias-plugin.js +0 -31
- package/src/build/runtime-specifier-alias-plugin.ts +0 -58
- package/src/config/config-builder.ts +0 -706
- package/src/constants.ts +0 -54
- package/src/create-app.ts +0 -87
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/component-render-context.d.ts +0 -105
- package/src/eco/component-render-context.js +0 -87
- package/src/eco/component-render-context.ts +0 -224
- package/src/eco/eco.ts +0 -242
- package/src/eco/eco.types.ts +0 -221
- package/src/eco/eco.utils.ts +0 -89
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -2
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/hmr/client/hmr-runtime.ts +0 -152
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
- package/src/hmr/hmr.test.e2e.ts +0 -66
- package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -5
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -232
- package/src/plugins/alias-resolver-plugin.ts +0 -63
- package/src/plugins/eco-component-meta-plugin.ts +0 -481
- package/src/plugins/integration-plugin.ts +0 -226
- package/src/plugins/processor.ts +0 -240
- package/src/plugins/runtime-capability.ts +0 -14
- package/src/public-types.ts +0 -1317
- package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph/component-graph.js +0 -72
- package/src/route-renderer/component-graph/component-graph.ts +0 -159
- package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
- package/src/route-renderer/component-graph/component-marker.js +0 -46
- package/src/route-renderer/component-graph/component-marker.ts +0 -117
- package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
- package/src/route-renderer/component-graph/component-reference.js +0 -19
- package/src/route-renderer/component-graph/component-reference.ts +0 -29
- package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
- package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
- package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
- package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
- package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
- package/src/route-renderer/orchestration/render-execution.service.js +0 -121
- package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
- package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
- package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
- package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
- package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
- package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
- package/src/route-renderer/route-renderer.ts +0 -115
- package/src/router/client/link-intent.test.browser.ts +0 -51
- package/src/router/client/link-intent.ts +0 -92
- package/src/router/client/navigation-coordinator.ts +0 -433
- package/src/router/server/fs-router-scanner.d.ts +0 -41
- package/src/router/server/fs-router-scanner.js +0 -156
- package/src/router/server/fs-router-scanner.ts +0 -219
- package/src/router/server/fs-router.d.ts +0 -26
- package/src/router/server/fs-router.js +0 -100
- package/src/router/server/fs-router.ts +0 -122
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
- package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
- package/src/services/assets/asset-processing-service/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
- package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
- package/src/services/assets/browser-bundle.service.ts +0 -53
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
- package/src/services/html/html-rewriter-provider.service.ts +0 -103
- package/src/services/html/html-transformer.service.ts +0 -279
- package/src/services/invalidation/development-invalidation.service.ts +0 -261
- package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
- package/src/services/module-loading/page-module-import.service.ts +0 -200
- package/src/services/module-loading/server-loader.service.d.ts +0 -96
- package/src/services/module-loading/server-loader.service.js +0 -32
- package/src/services/module-loading/server-loader.service.ts +0 -130
- package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
- package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
- package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
- package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
- package/src/services/runtime-state/dev-graph.service.ts +0 -217
- package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
- package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
- package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
- package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
- package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
- package/src/services/validation/schema-validation-service.ts +0 -204
- package/src/services/validation/standard-schema.types.ts +0 -68
- package/src/static-site-generator/static-site-generator.ts +0 -462
- package/src/utils/css.d.ts +0 -1
- package/src/utils/css.js +0 -7
- package/src/utils/css.ts +0 -5
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html.ts +0 -1
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.ts +0 -83
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/resolve-work-dir.ts +0 -45
- package/src/utils/runtime.ts +0 -44
- package/src/utils/server-utils.module.ts +0 -67
- package/src/watchers/project-watcher.test-helpers.ts +0 -41
- package/src/watchers/project-watcher.ts +0 -363
- /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
- /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
- /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
- /package/src/{constants.js → config/constants.js} +0 -0
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream';
|
|
2
|
-
import type { ApiResponseBuilder } from '
|
|
3
|
-
import type { BuildExecutor } from '
|
|
4
|
-
import type { EcoBuildPlugin } from '
|
|
5
|
-
import type {
|
|
2
|
+
import type { ApiResponseBuilder } from '../adapters/shared/api-response.js';
|
|
3
|
+
import type { BuildExecutor } from '../build/build-adapter.js';
|
|
4
|
+
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
5
|
+
import type { ForeignChildRuntime } from '../route-renderer/orchestration/component-render-context.js';
|
|
6
|
+
import type { EcoPageComponent } from '../eco/eco.types.js';
|
|
6
7
|
import type { EcoPagesAppConfig } from './internal-types.js';
|
|
7
|
-
import type { HmrStrategy } from '
|
|
8
|
-
import type { BrowserBundleExecutor } from '
|
|
9
|
-
import type { ProcessedAsset } from '
|
|
10
|
-
import type { CacheStats, CacheStrategy } from '
|
|
8
|
+
import type { HmrStrategy } from '../hmr/hmr-strategy.js';
|
|
9
|
+
import type { BrowserBundleExecutor } from '../services/assets/browser-bundle.service.js';
|
|
10
|
+
import type { AssetDefinition, ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
11
|
+
import type { CacheStats, CacheStrategy } from '../services/cache/cache.types.js';
|
|
11
12
|
import type { InteractionEventsString as ScriptsInjectorInteractionEventsString } from '@ecopages/scripts-injector/types';
|
|
12
|
-
|
|
13
|
-
export type {
|
|
14
|
-
export type {
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
import type { EntrypointDependencyGraph } from '../services/runtime-state/entrypoint-dependency-graph.service.js';
|
|
14
|
+
export type { EcoPagesAppConfig } from './internal-types.js';
|
|
15
|
+
export type { EcoPageComponent } from '../eco/eco.types.js';
|
|
16
|
+
export type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
17
|
+
import type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput } from '../services/validation/standard-schema.types.js';
|
|
18
|
+
export type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, ForeignChildRuntime, };
|
|
17
19
|
export type InteractionEventsString = ScriptsInjectorInteractionEventsString;
|
|
18
20
|
export type DependencyLazyTrigger = {
|
|
19
21
|
'on:idle': true;
|
|
@@ -93,10 +95,6 @@ export interface DefaultHmrContext {
|
|
|
93
95
|
* Map of registered entrypoints to their output URLs.
|
|
94
96
|
*/
|
|
95
97
|
getWatchedFiles(): Map<string, string>;
|
|
96
|
-
/**
|
|
97
|
-
* Map of bare specifiers to runtime URLs for browser import resolution.
|
|
98
|
-
*/
|
|
99
|
-
getSpecifierMap(): Map<string, string>;
|
|
100
98
|
/**
|
|
101
99
|
* Directory where HMR bundles are written.
|
|
102
100
|
*/
|
|
@@ -130,7 +128,11 @@ export interface DefaultHmrContext {
|
|
|
130
128
|
/**
|
|
131
129
|
* Server-side module loader owned by the active app/runtime.
|
|
132
130
|
*/
|
|
133
|
-
importServerModule<T = unknown>(filePath: string): Promise<T>;
|
|
131
|
+
importServerModule<T = unknown>(filePath: string | URL): Promise<T>;
|
|
132
|
+
/**
|
|
133
|
+
* Entrypoint dependency graph for selective HMR invalidation.
|
|
134
|
+
*/
|
|
135
|
+
getEntrypointDependencyGraph(): EntrypointDependencyGraph;
|
|
134
136
|
}
|
|
135
137
|
/**
|
|
136
138
|
* Represents an event broadcast to connected clients via the ClientBridge.
|
|
@@ -187,15 +189,6 @@ export interface IHmrManager {
|
|
|
187
189
|
* script bundling path.
|
|
188
190
|
*/
|
|
189
191
|
registerScriptEntrypoint(entrypointPath: string): Promise<string>;
|
|
190
|
-
/**
|
|
191
|
-
* Registers mappings from bare specifiers to runtime URLs.
|
|
192
|
-
*
|
|
193
|
-
* @remarks
|
|
194
|
-
* This is the shared registration seam for integration-owned runtime alias
|
|
195
|
-
* maps. The registry may later back a broader import-map-style facility, but
|
|
196
|
-
* the mappings themselves remain integration-owned.
|
|
197
|
-
*/
|
|
198
|
-
registerSpecifierMap(map: Record<string, string>): void;
|
|
199
192
|
/**
|
|
200
193
|
* Registers a custom HMR strategy.
|
|
201
194
|
*/
|
|
@@ -224,10 +217,6 @@ export interface IHmrManager {
|
|
|
224
217
|
* Gets the map of watched files.
|
|
225
218
|
*/
|
|
226
219
|
getWatchedFiles(): Map<string, string>;
|
|
227
|
-
/**
|
|
228
|
-
* Gets the registered bare-specifier map.
|
|
229
|
-
*/
|
|
230
|
-
getSpecifierMap(): Map<string, string>;
|
|
231
220
|
/**
|
|
232
221
|
* Gets the HMR dist directory.
|
|
233
222
|
*/
|
|
@@ -261,6 +250,21 @@ export type EcoComponentDependencies = {
|
|
|
261
250
|
components?: EcoComponent[];
|
|
262
251
|
};
|
|
263
252
|
export type EcoPagesElement = string | Promise<string>;
|
|
253
|
+
/**
|
|
254
|
+
* Serializable child payloads accepted by cross-integration deferred rendering.
|
|
255
|
+
*
|
|
256
|
+
* This models the broad value shapes that EcoPages already flattens when a
|
|
257
|
+
* foreign component boundary serializes its children for another integration.
|
|
258
|
+
* It is intentionally transport-oriented rather than framework-native, so it
|
|
259
|
+
* can be shared across Kita, Lit, React, and Ecopages JSX authoring surfaces
|
|
260
|
+
* without coupling core types to any one renderer.
|
|
261
|
+
*/
|
|
262
|
+
export type EcoChildren = string | Promise<string> | number | bigint | boolean | null | undefined | readonly EcoChildren[] | {
|
|
263
|
+
strings: readonly string[];
|
|
264
|
+
values?: readonly EcoChildren[];
|
|
265
|
+
} | {
|
|
266
|
+
[key: string]: EcoChildren;
|
|
267
|
+
};
|
|
264
268
|
/**
|
|
265
269
|
* Represents the input configuration for EcoPages.
|
|
266
270
|
*/
|
|
@@ -432,10 +436,10 @@ export interface LayoutProps<T = EcoPagesElement> extends Partial<RequestPageCon
|
|
|
432
436
|
/**
|
|
433
437
|
* Represents the props for the HTML template of a page.
|
|
434
438
|
*/
|
|
435
|
-
export interface HtmlTemplateProps extends PageHeadProps {
|
|
436
|
-
children:
|
|
439
|
+
export interface HtmlTemplateProps<T = EcoPagesElement> extends PageHeadProps<T> {
|
|
440
|
+
children: T;
|
|
437
441
|
language?: string;
|
|
438
|
-
headContent?:
|
|
442
|
+
headContent?: T;
|
|
439
443
|
pageProps: Record<string, unknown>;
|
|
440
444
|
}
|
|
441
445
|
/**
|
|
@@ -658,16 +662,139 @@ export type IntegrationRendererRenderOptions<C = EcoPagesElement> = RouteRendere
|
|
|
658
662
|
Layout?: EcoPageLayoutComponent<any>;
|
|
659
663
|
dependencies?: EcoComponentDependencies;
|
|
660
664
|
resolvedDependencies: ProcessedAsset[];
|
|
665
|
+
pagePackage?: PagePackageResult;
|
|
661
666
|
componentRender?: ComponentRenderResult;
|
|
662
667
|
pageProps?: Record<string, unknown>;
|
|
663
668
|
cacheStrategy?: CacheStrategy;
|
|
664
669
|
pageLocals?: RequestLocals;
|
|
670
|
+
ownershipPlan?: OwnershipPlan;
|
|
665
671
|
};
|
|
666
|
-
|
|
672
|
+
/**
|
|
673
|
+
* Structured page asset package produced after dependency resolution.
|
|
674
|
+
*
|
|
675
|
+
* `assets` retains the full processed asset list, while the remaining fields
|
|
676
|
+
* split that list into the subsets used during final HTML injection and
|
|
677
|
+
* renderer-owned follow-up work.
|
|
678
|
+
*/
|
|
679
|
+
export interface PagePackageResult {
|
|
680
|
+
/**
|
|
681
|
+
* Full processed asset list before any page-level partitioning.
|
|
682
|
+
*/
|
|
683
|
+
assets: ProcessedAsset[];
|
|
684
|
+
/**
|
|
685
|
+
* Optional structured Page Browser Graph carried through route preparation.
|
|
686
|
+
*/
|
|
687
|
+
pageBrowserGraph?: PageBrowserGraphResult;
|
|
688
|
+
/**
|
|
689
|
+
* Assets that should still be injected into the final HTML document.
|
|
690
|
+
*/
|
|
691
|
+
htmlAssets: ProcessedAsset[];
|
|
692
|
+
/**
|
|
693
|
+
* Primary page-owned browser entry when one was identified during packaging.
|
|
694
|
+
*/
|
|
695
|
+
pageScript?: ProcessedAsset;
|
|
696
|
+
/**
|
|
697
|
+
* Primary page-owned stylesheet when one was identified during packaging.
|
|
698
|
+
*/
|
|
699
|
+
pageStylesheet?: ProcessedAsset;
|
|
700
|
+
/**
|
|
701
|
+
* Inline assets that remain embedded directly in the document.
|
|
702
|
+
*/
|
|
703
|
+
inlineAssets: ProcessedAsset[];
|
|
704
|
+
/**
|
|
705
|
+
* Assets kept outside the main page package so callers can manage them explicitly.
|
|
706
|
+
*/
|
|
707
|
+
separateAssets: ProcessedAsset[];
|
|
708
|
+
/**
|
|
709
|
+
* Browser chunks needed after initial page bootstrap, including eager lazy-entry bundles.
|
|
710
|
+
*/
|
|
711
|
+
dynamicChunks: ProcessedAsset[];
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Page-scoped browser output planned before final HTML packaging.
|
|
715
|
+
*
|
|
716
|
+
* This shape keeps page-browser ownership explicit without forcing downstream
|
|
717
|
+
* HTML packaging to understand how integrations discovered the graph. Entry
|
|
718
|
+
* assets represent the initial page bootstrap outputs, while chunk assets stay
|
|
719
|
+
* separate so callers can preserve lazy/shared chunk identity until the point
|
|
720
|
+
* they intentionally flatten for page packaging.
|
|
721
|
+
*/
|
|
722
|
+
export interface PageBrowserGraphResult {
|
|
723
|
+
/**
|
|
724
|
+
* Processed assets needed for the initial page browser bootstrap.
|
|
725
|
+
*/
|
|
726
|
+
entryAssets: ProcessedAsset[];
|
|
727
|
+
/**
|
|
728
|
+
* Processed browser chunks referenced after the initial page bootstrap.
|
|
729
|
+
*/
|
|
730
|
+
chunkAssets: ProcessedAsset[];
|
|
731
|
+
}
|
|
732
|
+
export type PageBrowserGraphContributionContext = {
|
|
733
|
+
file: string;
|
|
734
|
+
pageModule: EcoPageFile;
|
|
735
|
+
};
|
|
736
|
+
export interface PageBrowserGraphContribution {
|
|
737
|
+
dependencies?: AssetDefinition[];
|
|
738
|
+
assets?: ProcessedAsset[];
|
|
739
|
+
}
|
|
740
|
+
export type OwnershipValidationErrorCode = 'UNKNOWN_INTEGRATION_OWNER' | 'MISSING_COMPONENT_METADATA';
|
|
741
|
+
export interface OwnershipValidationError {
|
|
742
|
+
code: OwnershipValidationErrorCode;
|
|
743
|
+
message: string;
|
|
744
|
+
componentId?: string;
|
|
745
|
+
componentFile?: string;
|
|
746
|
+
integrationName?: string;
|
|
747
|
+
}
|
|
748
|
+
export type OwnershipPlanNodeSource = 'route' | 'page' | 'layout' | 'html-template' | 'dependency';
|
|
749
|
+
export interface IntegrationOwnership {
|
|
750
|
+
integrationName: string;
|
|
751
|
+
componentId: string;
|
|
752
|
+
componentFile?: string;
|
|
753
|
+
isPageEntry: boolean;
|
|
754
|
+
isForeignToParent: boolean;
|
|
755
|
+
}
|
|
756
|
+
export interface OwnershipPlanNode {
|
|
757
|
+
id: string;
|
|
758
|
+
source: OwnershipPlanNodeSource;
|
|
759
|
+
ownership: IntegrationOwnership;
|
|
760
|
+
children: OwnershipPlanNode[];
|
|
761
|
+
declaredDependenciesValid: boolean;
|
|
762
|
+
}
|
|
763
|
+
export interface OwnershipPlan {
|
|
764
|
+
root: OwnershipPlanNode;
|
|
765
|
+
rendererNames: string[];
|
|
766
|
+
foreignEdgeCount: number;
|
|
767
|
+
hasValidationErrors: boolean;
|
|
768
|
+
validationErrors: OwnershipValidationError[];
|
|
769
|
+
}
|
|
770
|
+
export type ForeignSubtreeAttachmentPolicy = {
|
|
771
|
+
kind: 'none';
|
|
772
|
+
} | {
|
|
773
|
+
kind: 'first-element';
|
|
774
|
+
};
|
|
775
|
+
export interface ForeignSubtreeRenderPayload {
|
|
776
|
+
html: string;
|
|
777
|
+
assets: ProcessedAsset[];
|
|
778
|
+
rootTag?: string;
|
|
779
|
+
rootAttributes?: Record<string, string>;
|
|
780
|
+
attachmentPolicy: ForeignSubtreeAttachmentPolicy;
|
|
781
|
+
integrationName: string;
|
|
782
|
+
}
|
|
783
|
+
/**
|
|
784
|
+
* Shared execution-scoped context threaded through foreign-child renders.
|
|
785
|
+
*
|
|
786
|
+
* Integrations can extend this with renderer-local runtime keys, but the cache
|
|
787
|
+
* and optional component instance identity are shared across all renderers.
|
|
788
|
+
*/
|
|
789
|
+
export interface BaseIntegrationContext {
|
|
790
|
+
rendererCache?: Map<string, unknown>;
|
|
791
|
+
componentInstanceId?: string;
|
|
792
|
+
}
|
|
793
|
+
export interface ComponentRenderInput<TIntegrationContext extends BaseIntegrationContext = BaseIntegrationContext> {
|
|
667
794
|
component: EcoComponent;
|
|
668
795
|
props: Record<string, unknown>;
|
|
669
|
-
children?:
|
|
670
|
-
integrationContext?:
|
|
796
|
+
children?: unknown;
|
|
797
|
+
integrationContext?: TIntegrationContext;
|
|
671
798
|
}
|
|
672
799
|
export interface ComponentRenderResult {
|
|
673
800
|
html: string;
|
|
@@ -718,6 +845,24 @@ export interface ResponseOptions {
|
|
|
718
845
|
* Provides methods to render eco.page views and return formatted responses.
|
|
719
846
|
*/
|
|
720
847
|
export interface RenderContext {
|
|
848
|
+
/**
|
|
849
|
+
* Import a server-executed module through the active Ecopages module loader.
|
|
850
|
+
*
|
|
851
|
+
* This applies the runtime's cache-busting and source-transpilation rules so
|
|
852
|
+
* request-time lazy imports participate in development invalidation.
|
|
853
|
+
*
|
|
854
|
+
* @param filePath - Absolute filesystem path or file URL for the server module
|
|
855
|
+
*/
|
|
856
|
+
importServerModule<T = unknown>(filePath: string | URL): Promise<T>;
|
|
857
|
+
/**
|
|
858
|
+
* Import a server module through the active Ecopages module loader and render
|
|
859
|
+
* its default-exported eco.page view.
|
|
860
|
+
*
|
|
861
|
+
* @param filePath - Absolute filesystem path or file URL for the server module
|
|
862
|
+
* @param props - Props to pass to the default-exported view
|
|
863
|
+
* @param options - Optional status code and headers
|
|
864
|
+
*/
|
|
865
|
+
renderServerModule<P = Record<string, unknown>>(filePath: string | URL, props?: P, options?: RenderOptions): Promise<Response>;
|
|
721
866
|
/**
|
|
722
867
|
* Render an eco.page view with full layout and includes.
|
|
723
868
|
* @param view - The eco.page component to render
|
|
@@ -908,6 +1053,15 @@ export interface ApiHandlerContext<TRequest extends Request = Request, TServer =
|
|
|
908
1053
|
*/
|
|
909
1054
|
headers?: unknown;
|
|
910
1055
|
}
|
|
1056
|
+
/**
|
|
1057
|
+
* Context available to file-route page middleware.
|
|
1058
|
+
*
|
|
1059
|
+
* Page middleware can mutate locals, short-circuit the request, and use the
|
|
1060
|
+
* response helpers, but final document rendering stays owned by the page route
|
|
1061
|
+
* execution path.
|
|
1062
|
+
*/
|
|
1063
|
+
export interface FileRouteMiddlewareContext<TRequest extends Request = Request, TServer = any> extends Omit<ApiHandlerContext<TRequest, TServer>, 'render' | 'renderPartial' | 'importServerModule' | 'renderServerModule'> {
|
|
1064
|
+
}
|
|
911
1065
|
/**
|
|
912
1066
|
* Next function for middleware chain.
|
|
913
1067
|
* Call to continue to the next middleware or final handler.
|
|
@@ -943,6 +1097,10 @@ export type MiddlewareNext = () => Promise<Response>;
|
|
|
943
1097
|
* ```
|
|
944
1098
|
*/
|
|
945
1099
|
export type Middleware<TRequest extends Request = Request, TServer = any, TContext extends ApiHandlerContext<TRequest, TServer> = ApiHandlerContext<TRequest, TServer>> = (context: TContext, next: MiddlewareNext) => Promise<Response> | Response;
|
|
1100
|
+
/**
|
|
1101
|
+
* Middleware contract for file-based page routes.
|
|
1102
|
+
*/
|
|
1103
|
+
export type FileRouteMiddleware<TRequest extends Request = Request, TServer = any, TContext extends FileRouteMiddlewareContext<TRequest, TServer> = FileRouteMiddlewareContext<TRequest, TServer>> = (context: TContext, next: MiddlewareNext) => Promise<Response> | Response;
|
|
946
1104
|
/**
|
|
947
1105
|
* Helper type for defining middleware with extended context.
|
|
948
1106
|
* Automatically infers TRequest and TServer from the provided context type.
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ApiHandlerContext } from '../public-types.js';
|
|
1
|
+
import type { ApiHandlerContext } from '../types/public-types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Creates a require function for validating and retrieving request locals.
|
|
4
4
|
* Supports both single key access and multiple keys with type safety.
|
|
@@ -17,8 +17,11 @@ export type ReturnParseCliArgs = {
|
|
|
17
17
|
hostname?: string;
|
|
18
18
|
reactFastRefresh?: boolean;
|
|
19
19
|
};
|
|
20
|
+
export type ParseCliArgsOptions = {
|
|
21
|
+
embeddedRuntime?: boolean;
|
|
22
|
+
};
|
|
20
23
|
/**
|
|
21
24
|
* Parses command line arguments for the server.
|
|
22
25
|
* It returns {@link ReturnParseCliArgs}
|
|
23
26
|
*/
|
|
24
|
-
export declare function parseCliArgs(): ReturnParseCliArgs;
|
|
27
|
+
export declare function parseCliArgs(options?: ParseCliArgsOptions): ReturnParseCliArgs;
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { parseArgs } from "node:util";
|
|
2
2
|
import { getRuntimeArgv } from "./runtime.js";
|
|
3
|
+
function getEmbeddedRuntimeCommandOptions() {
|
|
4
|
+
const isDevelopment = process.env.NODE_ENV === "development";
|
|
5
|
+
return {
|
|
6
|
+
preview: false,
|
|
7
|
+
build: false,
|
|
8
|
+
start: !isDevelopment,
|
|
9
|
+
dev: isDevelopment,
|
|
10
|
+
port: void 0,
|
|
11
|
+
hostname: void 0,
|
|
12
|
+
reactFastRefresh: void 0
|
|
13
|
+
};
|
|
14
|
+
}
|
|
3
15
|
const ECOPAGES_BIN_FILES = ["ecopages.ts", "ecopages.js", "cli.js"];
|
|
4
16
|
const ECOPAGES_AVAILABLE_COMMANDS = ["dev", "build", "start", "preview"];
|
|
5
|
-
function parseCliArgs() {
|
|
17
|
+
function parseCliArgs(options = {}) {
|
|
18
|
+
if (options.embeddedRuntime || process.env.ECOPAGES_INTERNAL_EMBEDDED_RUNTIME === "true") {
|
|
19
|
+
return getEmbeddedRuntimeCommandOptions();
|
|
20
|
+
}
|
|
6
21
|
const runtimeArgv = getRuntimeArgv();
|
|
7
22
|
const { values } = parseArgs({
|
|
8
23
|
args: runtimeArgv,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { DEFAULT_ECOPAGES_WORK_DIR } from "../constants.js";
|
|
2
|
+
import { DEFAULT_ECOPAGES_WORK_DIR } from "../config/constants.js";
|
|
3
3
|
function isInsideNodeModules(directory) {
|
|
4
4
|
return path.normalize(directory).split(path.sep).includes("node_modules");
|
|
5
5
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { type FSWatcher } from 'chokidar';
|
|
2
|
-
import type { EcoPagesAppConfig, IHmrManager, IClientBridge } from '../internal-types.js';
|
|
2
|
+
import type { EcoPagesAppConfig, IHmrManager, IClientBridge } from '../types/internal-types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration options for the ProjectWatcher
|
|
5
5
|
* @interface ProjectWatcherConfig
|
|
6
6
|
* @property {EcoPagesAppConfig} config - The application configuration
|
|
7
|
-
* @property {() => void} refreshRouterRoutesCallback - Callback to refresh router routes
|
|
7
|
+
* @property {() => Promise<void>} refreshRouterRoutesCallback - Callback to refresh router routes
|
|
8
8
|
* @property {IHmrManager} hmrManager - The HMR manager instance
|
|
9
9
|
* @property {ClientBridge} bridge - The client bridge instance
|
|
10
10
|
*/
|
|
11
11
|
export interface ProjectWatcherConfig {
|
|
12
12
|
config: EcoPagesAppConfig;
|
|
13
|
-
refreshRouterRoutesCallback: () => void
|
|
13
|
+
refreshRouterRoutesCallback: () => Promise<void>;
|
|
14
14
|
hmrManager: IHmrManager;
|
|
15
15
|
bridge: IClientBridge;
|
|
16
16
|
}
|
|
@@ -112,7 +112,7 @@ export declare class ProjectWatcher {
|
|
|
112
112
|
*
|
|
113
113
|
* @param {string} path - Path of the changed directory
|
|
114
114
|
*/
|
|
115
|
-
triggerRouterRefresh(changedPath: string): void
|
|
115
|
+
triggerRouterRefresh(changedPath: string): Promise<void>;
|
|
116
116
|
/**
|
|
117
117
|
* Handles and logs errors that occur during file watching.
|
|
118
118
|
*
|
|
@@ -115,7 +115,7 @@ class ProjectWatcher {
|
|
|
115
115
|
this.invalidationService.invalidateServerModules([filePath]);
|
|
116
116
|
}
|
|
117
117
|
if (plan.refreshRoutes) {
|
|
118
|
-
this.refreshRouterRoutesCallback();
|
|
118
|
+
await this.refreshRouterRoutesCallback();
|
|
119
119
|
}
|
|
120
120
|
if (plan.category === "additional-watch") {
|
|
121
121
|
this.bridge.reload();
|
|
@@ -196,11 +196,11 @@ class ProjectWatcher {
|
|
|
196
196
|
*
|
|
197
197
|
* @param {string} path - Path of the changed directory
|
|
198
198
|
*/
|
|
199
|
-
triggerRouterRefresh(changedPath) {
|
|
199
|
+
async triggerRouterRefresh(changedPath) {
|
|
200
200
|
const resolvedPath = path.resolve(changedPath);
|
|
201
201
|
const isPageDir = resolvedPath.startsWith(this.appConfig.absolutePaths.pagesDir) && path.extname(resolvedPath) === "";
|
|
202
202
|
if (isPageDir || this.isRouteSourceFile(resolvedPath)) {
|
|
203
|
-
this.refreshRouterRoutesCallback();
|
|
203
|
+
await this.refreshRouterRoutesCallback();
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
/**
|
|
@@ -228,45 +228,39 @@ class ProjectWatcher {
|
|
|
228
228
|
* rapid file changes efficiently.
|
|
229
229
|
*/
|
|
230
230
|
async createWatcherSubscription() {
|
|
231
|
-
if (
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
processorPaths.push(this.appConfig.absolutePaths.pagesDir);
|
|
246
|
-
}
|
|
247
|
-
if (fileSystem.exists(this.appConfig.absolutePaths.publicDir)) {
|
|
248
|
-
processorPaths.push(this.appConfig.absolutePaths.publicDir);
|
|
249
|
-
}
|
|
250
|
-
if (this.appConfig.additionalWatchPaths.length) {
|
|
251
|
-
processorPaths.push(...this.appConfig.additionalWatchPaths);
|
|
252
|
-
}
|
|
253
|
-
this.watcher = chokidar.watch(processorPaths, {
|
|
254
|
-
ignoreInitial: true,
|
|
255
|
-
ignorePermissionErrors: true,
|
|
256
|
-
awaitWriteFinish: {
|
|
257
|
-
stabilityThreshold: 50,
|
|
258
|
-
pollInterval: 50
|
|
259
|
-
}
|
|
260
|
-
});
|
|
231
|
+
if (this.watcher) {
|
|
232
|
+
return this.watcher;
|
|
233
|
+
}
|
|
234
|
+
const processorPaths = [];
|
|
235
|
+
for (const processor of this.appConfig.processors.values()) {
|
|
236
|
+
const watchConfig = processor.getWatchConfig();
|
|
237
|
+
if (!watchConfig) continue;
|
|
238
|
+
processorPaths.push(...watchConfig.paths);
|
|
239
|
+
}
|
|
240
|
+
if (fileSystem.exists(this.appConfig.absolutePaths.includesDir)) {
|
|
241
|
+
processorPaths.push(this.appConfig.absolutePaths.includesDir);
|
|
242
|
+
}
|
|
243
|
+
if (fileSystem.exists(this.appConfig.absolutePaths.srcDir)) {
|
|
244
|
+
processorPaths.push(this.appConfig.absolutePaths.srcDir);
|
|
261
245
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
246
|
+
if (fileSystem.exists(this.appConfig.absolutePaths.pagesDir)) {
|
|
247
|
+
processorPaths.push(this.appConfig.absolutePaths.pagesDir);
|
|
248
|
+
}
|
|
249
|
+
if (fileSystem.exists(this.appConfig.absolutePaths.publicDir)) {
|
|
250
|
+
processorPaths.push(this.appConfig.absolutePaths.publicDir);
|
|
251
|
+
}
|
|
252
|
+
if (this.appConfig.additionalWatchPaths.length) {
|
|
253
|
+
processorPaths.push(...this.appConfig.additionalWatchPaths);
|
|
254
|
+
}
|
|
255
|
+
this.watcher = chokidar.watch(processorPaths, {
|
|
256
|
+
ignoreInitial: true,
|
|
257
|
+
ignorePermissionErrors: true,
|
|
258
|
+
awaitWriteFinish: {
|
|
259
|
+
stabilityThreshold: 50,
|
|
260
|
+
pollInterval: 50
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
this.watcher.on("change", (p) => this.enqueueChange(() => this.handleFileChange(p, "change"))).on("add", (p) => this.enqueueChange(() => this.handleFileChange(p, "add"))).on("addDir", (p) => this.enqueueChange(() => this.triggerRouterRefresh(p))).on("unlink", (p) => this.enqueueChange(() => this.handleFileChange(p, "unlink"))).on("unlinkDir", (p) => this.enqueueChange(() => this.triggerRouterRefresh(p))).on("error", (error) => this.handleError(error));
|
|
270
264
|
for (const processor of this.appConfig.processors.values()) {
|
|
271
265
|
const watchConfig = processor.getWatchConfig();
|
|
272
266
|
if (watchConfig?.onError) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IHmrManager } from '../internal-types';
|
|
2
|
-
import type { ClientBridge } from '../adapters/bun/client-bridge';
|
|
1
|
+
import type { IHmrManager } from '../types/internal-types.js';
|
|
2
|
+
import type { ClientBridge } from '../adapters/bun/client-bridge.js';
|
|
3
3
|
export declare const createMockHmrManager: () => IHmrManager;
|
|
4
4
|
export declare const createMockBridge: () => ClientBridge;
|
|
@@ -10,23 +10,23 @@ const createMockHmrManager = () => ({
|
|
|
10
10
|
}),
|
|
11
11
|
registerEntrypoint: vi.fn(async () => ""),
|
|
12
12
|
registerScriptEntrypoint: vi.fn(async () => ""),
|
|
13
|
-
registerSpecifierMap: vi.fn(() => {
|
|
14
|
-
}),
|
|
15
13
|
registerStrategy: vi.fn(() => {
|
|
16
14
|
}),
|
|
17
15
|
isEnabled: vi.fn(() => true),
|
|
18
16
|
getOutputUrl: vi.fn(() => void 0),
|
|
19
17
|
getWatchedFiles: vi.fn(() => /* @__PURE__ */ new Map()),
|
|
20
|
-
getSpecifierMap: vi.fn(() => /* @__PURE__ */ new Map()),
|
|
21
18
|
getDistDir: vi.fn(() => ""),
|
|
22
19
|
getPlugins: vi.fn(() => []),
|
|
23
20
|
getDefaultContext: vi.fn(() => ({
|
|
24
21
|
getWatchedFiles: () => /* @__PURE__ */ new Map(),
|
|
25
|
-
getSpecifierMap: () => /* @__PURE__ */ new Map(),
|
|
26
22
|
getDistDir: () => "",
|
|
27
23
|
getPlugins: () => [],
|
|
28
24
|
getSrcDir: () => "",
|
|
29
|
-
getLayoutsDir: () => ""
|
|
25
|
+
getLayoutsDir: () => "",
|
|
26
|
+
getPagesDir: () => "",
|
|
27
|
+
getBuildExecutor: () => ({ build: vi.fn(async () => ({ success: true, logs: [], outputs: [] })) }),
|
|
28
|
+
getBrowserBundleService: () => ({ bundle: vi.fn(async () => ({ success: true, logs: [], outputs: [] })) }),
|
|
29
|
+
importServerModule: vi.fn(async () => ({}))
|
|
30
30
|
}))
|
|
31
31
|
});
|
|
32
32
|
const createMockBridge = () => ({
|
package/CHANGELOG.md
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to `@ecopages/core` are documented here.
|
|
4
|
-
|
|
5
|
-
> **Note:** Changelog tracking begins at version `0.2.0`. Changes prior to this release are not recorded here but are available in the git history.
|
|
6
|
-
|
|
7
|
-
## [UNRELEASED] — TBD
|
|
8
|
-
|
|
9
|
-
### Bug Fixes
|
|
10
|
-
|
|
11
|
-
- Fixed npm release packaging to publish rewritten internal dependency versions instead of unresolved `workspace:*` ranges.
|
|
12
|
-
|
|
13
|
-
### Features & Architecture
|
|
14
|
-
|
|
15
|
-
- **Experimental Node.js Support**: Introduced a framework-owned thin-host bootstrap and runtime manifest flow for Node.js, providing cross-runtime parity while keeping the core agnostic.
|
|
16
|
-
- **Architectural Consolidation**: Unified server-side loading, browser bundling, and HMR strategy orchestration across all runtimes using shared core services (`ServerModuleTranspiler`, `BrowserBundleService`).
|
|
17
|
-
- **Build & Asset Refinement**: Introduced an internal `.eco` work directory to isolate development artifacts from production exports, and added `eco.html()`/`eco.layout()` for semantic component definitions.
|
|
18
|
-
- **Performance & Reliability**: Refactored internal watchers and HMR dispatching to improve build stability during rapid development cycles.
|
|
19
|
-
|
|
20
|
-
### Tests & Documentation
|
|
21
|
-
|
|
22
|
-
- **Robust Regression Suite**: Added coverage for experimental Node.js paths, the new shared services, and cross-runtime file-change dispatching.
|
|
23
|
-
- **Architecture Docs**: Added focused architecture and API documentation for config, plugins, services, adapters, HMR, router, and the rendering lifecycle.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Migration Notes
|
|
28
|
-
|
|
29
|
-
- `createApp` is now the recommended entrypoint. Import it from `@ecopages/core`.
|
|
30
|
-
- `defineApiHandler` keeps the same call shape, but the handler context is now explicitly runtime-agnostic.
|
|
31
|
-
- The old explicit `renderingMode` config option has been removed and full orchestration is always active.
|