@ecopages/core 0.2.0-alpha.4 → 0.2.0-alpha.40
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 +84 -110
- package/src/adapters/README.md +39 -0
- package/src/adapters/abstract/application-adapter.d.ts +28 -2
- package/src/adapters/abstract/application-adapter.js +14 -2
- package/src/adapters/abstract/router-adapter.d.ts +1 -1
- package/src/adapters/abstract/server-adapter.d.ts +2 -2
- package/src/adapters/bun/client-bridge.d.ts +1 -1
- package/src/adapters/bun/create-app.d.ts +12 -12
- package/src/adapters/bun/create-app.js +64 -41
- package/src/adapters/bun/hmr-manager.d.ts +30 -68
- package/src/adapters/bun/hmr-manager.js +30 -212
- package/src/adapters/bun/index.d.ts +2 -3
- package/src/adapters/bun/index.js +3 -3
- package/src/adapters/bun/runtime-host.d.ts +52 -0
- package/src/adapters/bun/runtime-host.js +56 -0
- package/src/adapters/bun/server-adapter.d.ts +93 -32
- package/src/adapters/bun/server-adapter.js +166 -89
- package/src/adapters/bun/static-preview-host.d.ts +28 -0
- package/src/adapters/bun/static-preview-host.js +45 -0
- package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
- package/src/{create-app.js → adapters/create-app.js} +4 -4
- package/src/adapters/index.d.ts +2 -6
- package/src/adapters/index.js +2 -8
- package/src/adapters/node/create-app.d.ts +15 -12
- package/src/adapters/node/create-app.js +34 -85
- package/src/adapters/node/http-request-bridge.d.ts +57 -0
- package/src/adapters/node/http-request-bridge.js +118 -0
- package/src/adapters/node/node-client-bridge.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.d.ts +38 -49
- package/src/adapters/node/node-hmr-manager.js +31 -219
- package/src/adapters/node/runtime-host.d.ts +57 -0
- package/src/adapters/node/runtime-host.js +92 -0
- package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
- package/src/adapters/node/server-adapter-dependencies.js +18 -0
- package/src/adapters/node/server-adapter.d.ts +20 -72
- package/src/adapters/node/server-adapter.js +99 -203
- package/src/adapters/node/static-content-server.d.ts +37 -1
- package/src/adapters/node/static-content-server.js +29 -1
- package/src/adapters/node/static-preview-host.d.ts +55 -0
- package/src/adapters/node/static-preview-host.js +68 -0
- package/src/adapters/shared/application-adapter.d.ts +1 -1
- package/src/{define-api-handler.d.ts → adapters/shared/define-api-handler.d.ts} +1 -1
- package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
- package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
- package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
- package/src/adapters/shared/explicit-static-route-matcher.js +14 -13
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
- package/src/adapters/shared/file-route-middleware-pipeline.js +3 -11
- package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
- package/src/adapters/shared/fs-server-response-factory.js +11 -27
- package/src/adapters/shared/fs-server-response-matcher.d.ts +20 -16
- package/src/adapters/shared/fs-server-response-matcher.js +76 -45
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
- package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
- package/src/adapters/shared/hmr-html-response.d.ts +22 -0
- package/src/adapters/shared/hmr-html-response.js +33 -0
- package/src/adapters/shared/render-context.d.ts +5 -3
- package/src/adapters/shared/render-context.js +27 -3
- package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
- package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
- package/src/adapters/shared/runtime-host.d.ts +12 -0
- package/src/adapters/shared/server-adapter.d.ts +33 -12
- package/src/adapters/shared/server-adapter.js +215 -132
- package/src/adapters/shared/server-route-handler.d.ts +5 -5
- package/src/adapters/shared/server-route-handler.js +7 -16
- package/src/adapters/shared/server-static-builder.d.ts +41 -8
- package/src/adapters/shared/server-static-builder.js +65 -11
- package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
- package/src/adapters/shared/shared-hmr-manager.js +239 -0
- package/src/adapters/shared/static-preview-host.d.ts +10 -0
- package/src/build/README.md +107 -0
- package/src/build/build-adapter.d.ts +176 -3
- package/src/build/build-adapter.js +619 -16
- package/src/build/build-manifest.d.ts +27 -0
- package/src/build/build-manifest.js +30 -0
- package/src/build/dev-build-coordinator.d.ts +72 -0
- package/src/build/dev-build-coordinator.js +154 -0
- package/src/build/esbuild-build-adapter.d.ts +16 -6
- package/src/build/esbuild-build-adapter.js +202 -74
- package/src/build/runtime-build-executor.d.ts +14 -0
- package/src/build/runtime-build-executor.js +22 -0
- package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
- package/src/build/runtime-specifier-alias-plugin.js +35 -0
- package/src/build/runtime-specifier-aliases.d.ts +5 -0
- package/src/build/runtime-specifier-aliases.js +95 -0
- package/src/config/README.md +36 -0
- package/src/config/config-builder.d.ts +54 -29
- package/src/config/config-builder.js +256 -50
- package/src/{constants.d.ts → config/constants.d.ts} +13 -0
- package/src/{constants.js → config/constants.js} +4 -0
- package/src/declarations.d.ts +19 -14
- package/src/dev/host-runtime.d.ts +10 -0
- package/src/dev/host-runtime.js +24 -0
- package/src/dev/sc-server.d.ts +1 -1
- package/src/dev/sc-server.js +1 -1
- package/src/eco/README.md +70 -16
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.js +63 -54
- package/src/eco/eco.types.d.ts +69 -6
- package/src/eco/eco.utils.d.ts +1 -40
- package/src/eco/eco.utils.js +5 -35
- package/src/eco/global-injector-map.d.ts +3 -3
- package/src/eco/global-injector-map.js +2 -2
- package/src/eco/lazy-injector-map.d.ts +2 -2
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -1
- package/src/hmr/README.md +26 -0
- package/src/hmr/client/hmr-runtime.d.ts +1 -6
- package/src/hmr/client/hmr-runtime.js +38 -7
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
- package/src/hmr/hmr.postcss.test.e2e.js +31 -0
- package/src/hmr/hmr.test.e2e.js +26 -33
- package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
- package/src/hmr/strategies/default-hmr-strategy.js +1 -1
- package/src/hmr/strategies/js-hmr-strategy.d.ts +46 -48
- package/src/hmr/strategies/js-hmr-strategy.js +60 -75
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +4 -3
- package/src/index.js +16 -5
- package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
- package/src/integrations/ghtml/ghtml-renderer.js +27 -30
- package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
- package/src/integrations/ghtml/ghtml.constants.js +4 -0
- package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
- package/src/integrations/ghtml/ghtml.plugin.js +3 -4
- package/src/plugins/README.md +35 -0
- package/src/plugins/alias-resolver-plugin.d.ts +1 -0
- package/src/plugins/alias-resolver-plugin.js +27 -5
- package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
- package/src/plugins/eco-component-meta-plugin.js +42 -24
- package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
- package/src/plugins/foreign-jsx-override-plugin.js +41 -0
- package/src/plugins/integration-plugin.d.ts +147 -29
- package/src/plugins/integration-plugin.js +103 -14
- package/src/plugins/processor.d.ts +17 -2
- package/src/plugins/processor.js +22 -3
- package/src/plugins/runtime-capability.d.ts +9 -0
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +83 -325
- package/src/route-renderer/README.md +73 -90
- package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
- package/src/route-renderer/orchestration/component-render-context.js +147 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
- package/src/route-renderer/orchestration/integration-renderer.js +986 -0
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
- package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
- package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
- package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
- package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
- package/src/route-renderer/orchestration/render-output.utils.js +171 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +134 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.js +437 -0
- package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
- package/src/route-renderer/orchestration/template-serialization.js +45 -0
- package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
- package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
- package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
- package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
- package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
- package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
- package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
- package/src/route-renderer/route-renderer.d.ts +57 -14
- package/src/route-renderer/route-renderer.js +30 -18
- package/src/router/README.md +94 -0
- package/src/router/client/link-intent.d.ts +53 -0
- package/src/router/client/link-intent.js +34 -0
- package/src/router/client/link-intent.test.browser.d.ts +1 -0
- package/src/router/client/link-intent.test.browser.js +43 -0
- package/src/router/client/navigation-coordinator.d.ts +169 -0
- package/src/router/client/navigation-coordinator.js +215 -0
- package/src/router/server/route-registry.d.ts +78 -0
- package/src/router/server/route-registry.js +262 -0
- package/src/services/README.md +28 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
- package/src/services/assets/asset-processing-service/assets.types.js +0 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
- package/src/services/assets/asset-processing-service/index.d.ts +6 -0
- package/src/services/assets/asset-processing-service/index.js +6 -0
- package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
- package/src/services/assets/asset-processing-service/page-package.js +80 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
- package/src/services/assets/asset-processing-service/processors/index.js +5 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +3 -2
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +119 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
- package/src/services/assets/browser-bundle.service.d.ts +73 -0
- package/src/services/assets/browser-bundle.service.js +41 -0
- package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
- package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
- package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
- package/src/services/html/html-rewriter-provider.service.js +68 -0
- package/src/services/html/html-transformer.service.d.ts +96 -0
- package/src/services/html/html-transformer.service.js +287 -0
- package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
- package/src/services/invalidation/development-invalidation.service.js +190 -0
- package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
- package/src/services/module-loading/app-module-loader.service.js +0 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
- package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
- package/src/services/module-loading/host-module-loader-registry.js +15 -0
- package/src/services/module-loading/module-loading-types.d.ts +2 -0
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
- package/src/services/module-loading/node-bootstrap-plugin.js +297 -0
- package/src/services/module-loading/page-module-import.service.d.ts +95 -0
- package/src/services/module-loading/page-module-import.service.js +191 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
- package/src/services/module-loading/server-module-transpiler.service.js +64 -0
- package/src/services/module-loading/source-module-support.d.ts +5 -0
- package/src/services/module-loading/source-module-support.js +8 -0
- package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
- package/src/services/runtime-state/dev-graph.service.js +162 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
- package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
- package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
- package/src/static-site-generator/README.md +26 -0
- package/src/static-site-generator/static-site-generator.d.ts +67 -20
- package/src/static-site-generator/static-site-generator.js +182 -138
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
- package/src/types/internal-types.js +0 -0
- package/src/{public-types.d.ts → types/public-types.d.ts} +239 -35
- package/src/types/public-types.js +0 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/locals-utils.d.ts +1 -1
- package/src/utils/parse-cli-args.d.ts +4 -1
- package/src/utils/parse-cli-args.js +16 -1
- package/src/utils/resolve-work-dir.d.ts +11 -0
- package/src/utils/resolve-work-dir.js +31 -0
- package/src/watchers/project-watcher.d.ts +40 -29
- package/src/watchers/project-watcher.js +126 -116
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +6 -6
- package/CHANGELOG.md +0 -91
- package/src/adapters/abstract/application-adapter.ts +0 -337
- package/src/adapters/abstract/router-adapter.ts +0 -30
- package/src/adapters/abstract/server-adapter.ts +0 -79
- package/src/adapters/bun/client-bridge.ts +0 -62
- package/src/adapters/bun/create-app.ts +0 -189
- package/src/adapters/bun/define-api-handler.d.ts +0 -61
- package/src/adapters/bun/define-api-handler.ts +0 -114
- package/src/adapters/bun/hmr-manager.ts +0 -296
- package/src/adapters/bun/index.ts +0 -3
- package/src/adapters/bun/server-adapter.ts +0 -492
- package/src/adapters/bun/server-lifecycle.d.ts +0 -52
- package/src/adapters/bun/server-lifecycle.js +0 -120
- package/src/adapters/bun/server-lifecycle.ts +0 -154
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -4
- package/src/adapters/node/index.js +0 -8
- package/src/adapters/node/index.ts +0 -9
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -289
- package/src/adapters/node/server-adapter.ts +0 -561
- package/src/adapters/node/static-content-server.ts +0 -203
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
- package/src/adapters/shared/render-context.ts +0 -105
- package/src/adapters/shared/server-adapter.ts +0 -442
- package/src/adapters/shared/server-route-handler.ts +0 -166
- package/src/adapters/shared/server-static-builder.ts +0 -82
- package/src/build/build-adapter.ts +0 -132
- package/src/build/build-types.ts +0 -83
- package/src/build/esbuild-build-adapter.ts +0 -510
- package/src/config/config-builder.ts +0 -474
- package/src/constants.ts +0 -39
- package/src/create-app.ts +0 -87
- package/src/define-api-handler.js +0 -15
- package/src/define-api-handler.ts +0 -66
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/component-render-context.d.ts +0 -105
- package/src/eco/component-render-context.js +0 -77
- package/src/eco/component-render-context.ts +0 -202
- package/src/eco/eco.ts +0 -221
- package/src/eco/eco.types.ts +0 -202
- package/src/eco/eco.utils.ts +0 -89
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -2
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/hmr/client/hmr-runtime.ts +0 -121
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.test.e2e.ts +0 -75
- package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -5
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -212
- package/src/plugins/alias-resolver-plugin.ts +0 -45
- package/src/plugins/eco-component-meta-plugin.ts +0 -474
- package/src/plugins/integration-plugin.ts +0 -184
- package/src/plugins/processor.ts +0 -220
- package/src/public-types.ts +0 -1260
- package/src/route-renderer/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph.js +0 -72
- package/src/route-renderer/component-graph.ts +0 -159
- package/src/route-renderer/component-marker.d.ts +0 -52
- package/src/route-renderer/component-marker.js +0 -46
- package/src/route-renderer/component-marker.ts +0 -117
- package/src/route-renderer/dependency-resolver.js +0 -428
- package/src/route-renderer/dependency-resolver.ts +0 -596
- package/src/route-renderer/html-post-processing.service.d.ts +0 -40
- package/src/route-renderer/html-post-processing.service.js +0 -86
- package/src/route-renderer/html-post-processing.service.ts +0 -103
- package/src/route-renderer/integration-renderer.d.ts +0 -339
- package/src/route-renderer/integration-renderer.js +0 -526
- package/src/route-renderer/integration-renderer.ts +0 -696
- package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
- package/src/route-renderer/marker-graph-resolver.js +0 -93
- package/src/route-renderer/marker-graph-resolver.ts +0 -153
- package/src/route-renderer/page-module-loader.d.ts +0 -61
- package/src/route-renderer/page-module-loader.ts +0 -153
- package/src/route-renderer/render-execution.service.d.ts +0 -69
- package/src/route-renderer/render-execution.service.js +0 -91
- package/src/route-renderer/render-execution.service.ts +0 -158
- package/src/route-renderer/render-preparation.service.d.ts +0 -112
- package/src/route-renderer/render-preparation.service.js +0 -243
- package/src/route-renderer/render-preparation.service.ts +0 -358
- package/src/route-renderer/route-renderer.ts +0 -80
- package/src/router/fs-router-scanner.d.ts +0 -41
- package/src/router/fs-router-scanner.js +0 -155
- package/src/router/fs-router-scanner.ts +0 -217
- package/src/router/fs-router.d.ts +0 -26
- package/src/router/fs-router.js +0 -100
- package/src/router/fs-router.ts +0 -122
- package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
- package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
- package/src/services/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/asset-processing-service/assets.types.ts +0 -112
- package/src/services/asset-processing-service/index.d.ts +0 -3
- package/src/services/asset-processing-service/index.js +0 -3
- package/src/services/asset-processing-service/index.ts +0 -3
- package/src/services/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
- package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
- package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
- package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
- package/src/services/asset-processing-service/processors/index.d.ts +0 -5
- package/src/services/asset-processing-service/processors/index.js +0 -5
- package/src/services/asset-processing-service/processors/index.ts +0 -5
- package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
- package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
- package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
- package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
- package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
- package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/html-transformer.service.d.ts +0 -50
- package/src/services/html-transformer.service.js +0 -163
- package/src/services/html-transformer.service.ts +0 -217
- package/src/services/page-module-import.service.d.ts +0 -37
- package/src/services/page-module-import.service.js +0 -88
- package/src/services/page-module-import.service.ts +0 -129
- package/src/services/page-request-cache-coordinator.service.ts +0 -128
- package/src/services/schema-validation-service.ts +0 -204
- package/src/services/validation/standard-schema.types.ts +0 -68
- package/src/static-site-generator/static-site-generator.ts +0 -359
- package/src/utils/css.d.ts +0 -1
- package/src/utils/css.js +0 -7
- package/src/utils/css.ts +0 -5
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html.ts +0 -1
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.ts +0 -83
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/runtime.ts +0 -44
- package/src/utils/server-utils.module.ts +0 -67
- package/src/watchers/project-watcher.test-helpers.ts +0 -41
- package/src/watchers/project-watcher.ts +0 -344
- /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
- /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
- /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
- /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
- /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream';
|
|
2
|
-
import type { ApiResponseBuilder } from '
|
|
3
|
-
import type {
|
|
4
|
-
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';
|
|
5
7
|
import type { EcoPagesAppConfig } from './internal-types.js';
|
|
6
|
-
import type { HmrStrategy } from '
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
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';
|
|
9
12
|
import type { InteractionEventsString as ScriptsInjectorInteractionEventsString } from '@ecopages/scripts-injector/types';
|
|
10
|
-
export type {
|
|
11
|
-
|
|
12
|
-
export type {
|
|
13
|
+
export type { EcoPagesAppConfig } from './internal-types.js';
|
|
14
|
+
export type { EcoPageComponent } from '../eco/eco.types.js';
|
|
15
|
+
export type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
16
|
+
import type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput } from '../services/validation/standard-schema.types.js';
|
|
17
|
+
export type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, ForeignChildRuntime, };
|
|
13
18
|
export type InteractionEventsString = ScriptsInjectorInteractionEventsString;
|
|
14
19
|
export type DependencyLazyTrigger = {
|
|
15
20
|
'on:idle': true;
|
|
@@ -82,17 +87,13 @@ export interface CacheInvalidator {
|
|
|
82
87
|
}
|
|
83
88
|
/**
|
|
84
89
|
* Context interface for HMR strategies.
|
|
85
|
-
* Provides access to watched files, specifier mappings, and build configuration.
|
|
90
|
+
* Provides access to watched files, registered bare-specifier mappings, and build configuration.
|
|
86
91
|
*/
|
|
87
92
|
export interface DefaultHmrContext {
|
|
88
93
|
/**
|
|
89
94
|
* Map of registered entrypoints to their output URLs.
|
|
90
95
|
*/
|
|
91
96
|
getWatchedFiles(): Map<string, string>;
|
|
92
|
-
/**
|
|
93
|
-
* Map of bare specifiers to vendor URLs for import resolution.
|
|
94
|
-
*/
|
|
95
|
-
getSpecifierMap(): Map<string, string>;
|
|
96
97
|
/**
|
|
97
98
|
* Directory where HMR bundles are written.
|
|
98
99
|
*/
|
|
@@ -115,6 +116,18 @@ export interface DefaultHmrContext {
|
|
|
115
116
|
* Used by plugins to identify page files for transformation.
|
|
116
117
|
*/
|
|
117
118
|
getPagesDir(): string;
|
|
119
|
+
/**
|
|
120
|
+
* Build executor owned by the active app/runtime.
|
|
121
|
+
*/
|
|
122
|
+
getBuildExecutor(): BuildExecutor;
|
|
123
|
+
/**
|
|
124
|
+
* Browser bundler owned by the active app/runtime.
|
|
125
|
+
*/
|
|
126
|
+
getBrowserBundleService(): BrowserBundleExecutor;
|
|
127
|
+
/**
|
|
128
|
+
* Server-side module loader owned by the active app/runtime.
|
|
129
|
+
*/
|
|
130
|
+
importServerModule<T = unknown>(filePath: string | URL): Promise<T>;
|
|
118
131
|
}
|
|
119
132
|
/**
|
|
120
133
|
* Represents an event broadcast to connected clients via the ClientBridge.
|
|
@@ -155,13 +168,22 @@ export interface IClientBridge {
|
|
|
155
168
|
*/
|
|
156
169
|
export interface IHmrManager {
|
|
157
170
|
/**
|
|
158
|
-
* Registers
|
|
171
|
+
* Registers an integration-owned client entrypoint to be built and watched.
|
|
172
|
+
*
|
|
173
|
+
* @remarks
|
|
174
|
+
* This path is strict: the owning integration must emit the expected `_hmr`
|
|
175
|
+
* bundle. Missing output is treated as a development pipeline failure.
|
|
159
176
|
*/
|
|
160
177
|
registerEntrypoint(entrypointPath: string): Promise<string>;
|
|
161
178
|
/**
|
|
162
|
-
* Registers
|
|
179
|
+
* Registers a generic script asset entrypoint to be built and watched.
|
|
180
|
+
*
|
|
181
|
+
* @remarks
|
|
182
|
+
* This path exists for non-page script assets that are not owned by a
|
|
183
|
+
* framework integration. Unlike `registerEntrypoint()`, it may use the generic
|
|
184
|
+
* script bundling path.
|
|
163
185
|
*/
|
|
164
|
-
|
|
186
|
+
registerScriptEntrypoint(entrypointPath: string): Promise<string>;
|
|
165
187
|
/**
|
|
166
188
|
* Registers a custom HMR strategy.
|
|
167
189
|
*/
|
|
@@ -178,10 +200,6 @@ export interface IHmrManager {
|
|
|
178
200
|
* Returns whether HMR is enabled.
|
|
179
201
|
*/
|
|
180
202
|
isEnabled(): boolean;
|
|
181
|
-
/**
|
|
182
|
-
* Returns true when a changed file matches a non-fallback HMR strategy.
|
|
183
|
-
*/
|
|
184
|
-
canHandleFileChange(path: string): boolean;
|
|
185
203
|
/**
|
|
186
204
|
* Broadcasts an HMR event to connected clients.
|
|
187
205
|
*/
|
|
@@ -194,10 +212,6 @@ export interface IHmrManager {
|
|
|
194
212
|
* Gets the map of watched files.
|
|
195
213
|
*/
|
|
196
214
|
getWatchedFiles(): Map<string, string>;
|
|
197
|
-
/**
|
|
198
|
-
* Gets the specifier map.
|
|
199
|
-
*/
|
|
200
|
-
getSpecifierMap(): Map<string, string>;
|
|
201
215
|
/**
|
|
202
216
|
* Gets the HMR dist directory.
|
|
203
217
|
*/
|
|
@@ -231,6 +245,21 @@ export type EcoComponentDependencies = {
|
|
|
231
245
|
components?: EcoComponent[];
|
|
232
246
|
};
|
|
233
247
|
export type EcoPagesElement = string | Promise<string>;
|
|
248
|
+
/**
|
|
249
|
+
* Serializable child payloads accepted by cross-integration deferred rendering.
|
|
250
|
+
*
|
|
251
|
+
* This models the broad value shapes that EcoPages already flattens when a
|
|
252
|
+
* foreign component boundary serializes its children for another integration.
|
|
253
|
+
* It is intentionally transport-oriented rather than framework-native, so it
|
|
254
|
+
* can be shared across Kita, Lit, React, and Ecopages JSX authoring surfaces
|
|
255
|
+
* without coupling core types to any one renderer.
|
|
256
|
+
*/
|
|
257
|
+
export type EcoChildren = string | Promise<string> | number | bigint | boolean | null | undefined | readonly EcoChildren[] | {
|
|
258
|
+
strings: readonly string[];
|
|
259
|
+
values?: readonly EcoChildren[];
|
|
260
|
+
} | {
|
|
261
|
+
[key: string]: EcoChildren;
|
|
262
|
+
};
|
|
234
263
|
/**
|
|
235
264
|
* Represents the input configuration for EcoPages.
|
|
236
265
|
*/
|
|
@@ -284,7 +313,7 @@ export type EcoComponentConfig = {
|
|
|
284
313
|
* MyPage.config = { layout: Layout };
|
|
285
314
|
* ```
|
|
286
315
|
*/
|
|
287
|
-
layout?:
|
|
316
|
+
layout?: EcoPageLayoutComponent<any>;
|
|
288
317
|
dependencies?: EcoComponentDependencies;
|
|
289
318
|
/**
|
|
290
319
|
* Internal: Resolved lazy scripts grouped by trigger.
|
|
@@ -393,15 +422,36 @@ export interface PageHeadProps<T = EcoPagesElement> {
|
|
|
393
422
|
dependencies?: EcoComponentDependencies;
|
|
394
423
|
children?: T;
|
|
395
424
|
}
|
|
425
|
+
/**
|
|
426
|
+
* Represents the props for a route layout.
|
|
427
|
+
*/
|
|
428
|
+
export interface LayoutProps<T = EcoPagesElement> extends Partial<RequestPageContext> {
|
|
429
|
+
children: T;
|
|
430
|
+
}
|
|
396
431
|
/**
|
|
397
432
|
* Represents the props for the HTML template of a page.
|
|
398
433
|
*/
|
|
399
|
-
export interface HtmlTemplateProps extends PageHeadProps {
|
|
400
|
-
children:
|
|
434
|
+
export interface HtmlTemplateProps<T = EcoPagesElement> extends PageHeadProps<T> {
|
|
435
|
+
children: T;
|
|
401
436
|
language?: string;
|
|
402
|
-
headContent?:
|
|
437
|
+
headContent?: T;
|
|
403
438
|
pageProps: Record<string, unknown>;
|
|
404
439
|
}
|
|
440
|
+
/**
|
|
441
|
+
* Layout components accepted by pages.
|
|
442
|
+
*
|
|
443
|
+
* This preserves compatibility with existing `eco.component()` layouts while
|
|
444
|
+
* also supporting semantic `eco.layout()` declarations.
|
|
445
|
+
*/
|
|
446
|
+
export type EcoPageLayoutComponent<T = EcoPagesElement> = EcoLayoutComponent<T> | EcoComponent<any, T>;
|
|
447
|
+
/**
|
|
448
|
+
* Represents a layout component created with eco.layout().
|
|
449
|
+
*/
|
|
450
|
+
export type EcoLayoutComponent<T = EcoPagesElement> = EcoComponent<LayoutProps<T>, T>;
|
|
451
|
+
/**
|
|
452
|
+
* Represents an HTML shell component created with eco.html().
|
|
453
|
+
*/
|
|
454
|
+
export type EcoHtmlComponent<T = EcoPagesElement> = EcoComponent<HtmlTemplateProps, T>;
|
|
405
455
|
/**
|
|
406
456
|
* Represents the props for the error 404 template.
|
|
407
457
|
*/
|
|
@@ -602,21 +652,144 @@ type StylesheetContentIntegrationPluginDependencies = {
|
|
|
602
652
|
export type IntegrationRendererRenderOptions<C = EcoPagesElement> = RouteRendererOptions & {
|
|
603
653
|
props?: Record<string, unknown>;
|
|
604
654
|
metadata: PageMetadataProps;
|
|
605
|
-
HtmlTemplate:
|
|
655
|
+
HtmlTemplate: EcoHtmlComponent<C>;
|
|
606
656
|
Page: EcoComponent<PageProps, C>;
|
|
607
|
-
Layout?:
|
|
657
|
+
Layout?: EcoPageLayoutComponent<any>;
|
|
608
658
|
dependencies?: EcoComponentDependencies;
|
|
609
659
|
resolvedDependencies: ProcessedAsset[];
|
|
660
|
+
pagePackage?: PagePackageResult;
|
|
610
661
|
componentRender?: ComponentRenderResult;
|
|
611
662
|
pageProps?: Record<string, unknown>;
|
|
612
663
|
cacheStrategy?: CacheStrategy;
|
|
613
664
|
pageLocals?: RequestLocals;
|
|
665
|
+
ownershipPlan?: OwnershipPlan;
|
|
614
666
|
};
|
|
615
|
-
|
|
667
|
+
/**
|
|
668
|
+
* Structured page asset package produced after dependency resolution.
|
|
669
|
+
*
|
|
670
|
+
* `assets` retains the full processed asset list, while the remaining fields
|
|
671
|
+
* split that list into the subsets used during final HTML injection and
|
|
672
|
+
* renderer-owned follow-up work.
|
|
673
|
+
*/
|
|
674
|
+
export interface PagePackageResult {
|
|
675
|
+
/**
|
|
676
|
+
* Full processed asset list before any page-level partitioning.
|
|
677
|
+
*/
|
|
678
|
+
assets: ProcessedAsset[];
|
|
679
|
+
/**
|
|
680
|
+
* Optional structured Page Browser Graph carried through route preparation.
|
|
681
|
+
*/
|
|
682
|
+
pageBrowserGraph?: PageBrowserGraphResult;
|
|
683
|
+
/**
|
|
684
|
+
* Assets that should still be injected into the final HTML document.
|
|
685
|
+
*/
|
|
686
|
+
htmlAssets: ProcessedAsset[];
|
|
687
|
+
/**
|
|
688
|
+
* Primary page-owned browser entry when one was identified during packaging.
|
|
689
|
+
*/
|
|
690
|
+
pageScript?: ProcessedAsset;
|
|
691
|
+
/**
|
|
692
|
+
* Primary page-owned stylesheet when one was identified during packaging.
|
|
693
|
+
*/
|
|
694
|
+
pageStylesheet?: ProcessedAsset;
|
|
695
|
+
/**
|
|
696
|
+
* Inline assets that remain embedded directly in the document.
|
|
697
|
+
*/
|
|
698
|
+
inlineAssets: ProcessedAsset[];
|
|
699
|
+
/**
|
|
700
|
+
* Assets kept outside the main page package so callers can manage them explicitly.
|
|
701
|
+
*/
|
|
702
|
+
separateAssets: ProcessedAsset[];
|
|
703
|
+
/**
|
|
704
|
+
* Browser chunks needed after initial page bootstrap, including eager lazy-entry bundles.
|
|
705
|
+
*/
|
|
706
|
+
dynamicChunks: ProcessedAsset[];
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* Page-scoped browser output planned before final HTML packaging.
|
|
710
|
+
*
|
|
711
|
+
* This shape keeps page-browser ownership explicit without forcing downstream
|
|
712
|
+
* HTML packaging to understand how integrations discovered the graph. Entry
|
|
713
|
+
* assets represent the initial page bootstrap outputs, while chunk assets stay
|
|
714
|
+
* separate so callers can preserve lazy/shared chunk identity until the point
|
|
715
|
+
* they intentionally flatten for page packaging.
|
|
716
|
+
*/
|
|
717
|
+
export interface PageBrowserGraphResult {
|
|
718
|
+
/**
|
|
719
|
+
* Processed assets needed for the initial page browser bootstrap.
|
|
720
|
+
*/
|
|
721
|
+
entryAssets: ProcessedAsset[];
|
|
722
|
+
/**
|
|
723
|
+
* Processed browser chunks referenced after the initial page bootstrap.
|
|
724
|
+
*/
|
|
725
|
+
chunkAssets: ProcessedAsset[];
|
|
726
|
+
}
|
|
727
|
+
export type PageBrowserGraphContributionContext = {
|
|
728
|
+
file: string;
|
|
729
|
+
pageModule: EcoPageFile;
|
|
730
|
+
};
|
|
731
|
+
export interface PageBrowserGraphContribution {
|
|
732
|
+
dependencies?: AssetDefinition[];
|
|
733
|
+
assets?: ProcessedAsset[];
|
|
734
|
+
}
|
|
735
|
+
export type OwnershipValidationErrorCode = 'UNKNOWN_INTEGRATION_OWNER' | 'MISSING_COMPONENT_METADATA';
|
|
736
|
+
export interface OwnershipValidationError {
|
|
737
|
+
code: OwnershipValidationErrorCode;
|
|
738
|
+
message: string;
|
|
739
|
+
componentId?: string;
|
|
740
|
+
componentFile?: string;
|
|
741
|
+
integrationName?: string;
|
|
742
|
+
}
|
|
743
|
+
export type OwnershipPlanNodeSource = 'route' | 'page' | 'layout' | 'html-template' | 'dependency';
|
|
744
|
+
export interface IntegrationOwnership {
|
|
745
|
+
integrationName: string;
|
|
746
|
+
componentId: string;
|
|
747
|
+
componentFile?: string;
|
|
748
|
+
isPageEntry: boolean;
|
|
749
|
+
isForeignToParent: boolean;
|
|
750
|
+
}
|
|
751
|
+
export interface OwnershipPlanNode {
|
|
752
|
+
id: string;
|
|
753
|
+
source: OwnershipPlanNodeSource;
|
|
754
|
+
ownership: IntegrationOwnership;
|
|
755
|
+
children: OwnershipPlanNode[];
|
|
756
|
+
declaredDependenciesValid: boolean;
|
|
757
|
+
}
|
|
758
|
+
export interface OwnershipPlan {
|
|
759
|
+
root: OwnershipPlanNode;
|
|
760
|
+
rendererNames: string[];
|
|
761
|
+
foreignEdgeCount: number;
|
|
762
|
+
hasValidationErrors: boolean;
|
|
763
|
+
validationErrors: OwnershipValidationError[];
|
|
764
|
+
}
|
|
765
|
+
export type ForeignSubtreeAttachmentPolicy = {
|
|
766
|
+
kind: 'none';
|
|
767
|
+
} | {
|
|
768
|
+
kind: 'first-element';
|
|
769
|
+
};
|
|
770
|
+
export interface ForeignSubtreeRenderPayload {
|
|
771
|
+
html: string;
|
|
772
|
+
assets: ProcessedAsset[];
|
|
773
|
+
rootTag?: string;
|
|
774
|
+
rootAttributes?: Record<string, string>;
|
|
775
|
+
attachmentPolicy: ForeignSubtreeAttachmentPolicy;
|
|
776
|
+
integrationName: string;
|
|
777
|
+
}
|
|
778
|
+
/**
|
|
779
|
+
* Shared execution-scoped context threaded through foreign-child renders.
|
|
780
|
+
*
|
|
781
|
+
* Integrations can extend this with renderer-local runtime keys, but the cache
|
|
782
|
+
* and optional component instance identity are shared across all renderers.
|
|
783
|
+
*/
|
|
784
|
+
export interface BaseIntegrationContext {
|
|
785
|
+
rendererCache?: Map<string, unknown>;
|
|
786
|
+
componentInstanceId?: string;
|
|
787
|
+
}
|
|
788
|
+
export interface ComponentRenderInput<TIntegrationContext extends BaseIntegrationContext = BaseIntegrationContext> {
|
|
616
789
|
component: EcoComponent;
|
|
617
790
|
props: Record<string, unknown>;
|
|
618
|
-
children?:
|
|
619
|
-
integrationContext?:
|
|
791
|
+
children?: unknown;
|
|
792
|
+
integrationContext?: TIntegrationContext;
|
|
620
793
|
}
|
|
621
794
|
export interface ComponentRenderResult {
|
|
622
795
|
html: string;
|
|
@@ -667,13 +840,31 @@ export interface ResponseOptions {
|
|
|
667
840
|
* Provides methods to render eco.page views and return formatted responses.
|
|
668
841
|
*/
|
|
669
842
|
export interface RenderContext {
|
|
843
|
+
/**
|
|
844
|
+
* Import a server-executed module through the active Ecopages module loader.
|
|
845
|
+
*
|
|
846
|
+
* This applies the runtime's cache-busting and source-transpilation rules so
|
|
847
|
+
* request-time lazy imports participate in development invalidation.
|
|
848
|
+
*
|
|
849
|
+
* @param filePath - Absolute filesystem path or file URL for the server module
|
|
850
|
+
*/
|
|
851
|
+
importServerModule<T = unknown>(filePath: string | URL): Promise<T>;
|
|
852
|
+
/**
|
|
853
|
+
* Import a server module through the active Ecopages module loader and render
|
|
854
|
+
* its default-exported eco.page view.
|
|
855
|
+
*
|
|
856
|
+
* @param filePath - Absolute filesystem path or file URL for the server module
|
|
857
|
+
* @param props - Props to pass to the default-exported view
|
|
858
|
+
* @param options - Optional status code and headers
|
|
859
|
+
*/
|
|
860
|
+
renderServerModule<P = Record<string, unknown>>(filePath: string | URL, props?: P, options?: RenderOptions): Promise<Response>;
|
|
670
861
|
/**
|
|
671
862
|
* Render an eco.page view with full layout and includes.
|
|
672
863
|
* @param view - The eco.page component to render
|
|
673
864
|
* @param props - Props to pass to the view
|
|
674
865
|
* @param options - Optional status code and headers
|
|
675
866
|
*/
|
|
676
|
-
render<P = Record<string, unknown>>(view: EcoComponent<P>, props
|
|
867
|
+
render<P = Record<string, unknown>>(view: EcoComponent<P>, props?: P, options?: RenderOptions): Promise<Response>;
|
|
677
868
|
/**
|
|
678
869
|
* Render an eco.page view without layout (for partials/fragments).
|
|
679
870
|
* @param view - The eco.page component to render
|
|
@@ -857,6 +1048,15 @@ export interface ApiHandlerContext<TRequest extends Request = Request, TServer =
|
|
|
857
1048
|
*/
|
|
858
1049
|
headers?: unknown;
|
|
859
1050
|
}
|
|
1051
|
+
/**
|
|
1052
|
+
* Context available to file-route page middleware.
|
|
1053
|
+
*
|
|
1054
|
+
* Page middleware can mutate locals, short-circuit the request, and use the
|
|
1055
|
+
* response helpers, but final document rendering stays owned by the page route
|
|
1056
|
+
* execution path.
|
|
1057
|
+
*/
|
|
1058
|
+
export interface FileRouteMiddlewareContext<TRequest extends Request = Request, TServer = any> extends Omit<ApiHandlerContext<TRequest, TServer>, 'render' | 'renderPartial' | 'importServerModule' | 'renderServerModule'> {
|
|
1059
|
+
}
|
|
860
1060
|
/**
|
|
861
1061
|
* Next function for middleware chain.
|
|
862
1062
|
* Call to continue to the next middleware or final handler.
|
|
@@ -892,6 +1092,10 @@ export type MiddlewareNext = () => Promise<Response>;
|
|
|
892
1092
|
* ```
|
|
893
1093
|
*/
|
|
894
1094
|
export type Middleware<TRequest extends Request = Request, TServer = any, TContext extends ApiHandlerContext<TRequest, TServer> = ApiHandlerContext<TRequest, TServer>> = (context: TContext, next: MiddlewareNext) => Promise<Response> | Response;
|
|
1095
|
+
/**
|
|
1096
|
+
* Middleware contract for file-based page routes.
|
|
1097
|
+
*/
|
|
1098
|
+
export type FileRouteMiddleware<TRequest extends Request = Request, TServer = any, TContext extends FileRouteMiddlewareContext<TRequest, TServer> = FileRouteMiddlewareContext<TRequest, TServer>> = (context: TContext, next: MiddlewareNext) => Promise<Response> | Response;
|
|
895
1099
|
/**
|
|
896
1100
|
* Helper type for defining middleware with extended context.
|
|
897
1101
|
* 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,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type InternalPathConfig = {
|
|
2
|
+
rootDir?: string;
|
|
3
|
+
workDir?: string;
|
|
4
|
+
absolutePaths?: {
|
|
5
|
+
workDir?: string;
|
|
6
|
+
distDir?: string;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export declare function resolveInternalWorkDir(appConfig: InternalPathConfig): string;
|
|
10
|
+
export declare function resolveInternalExecutionDir(appConfig: InternalPathConfig): string;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { DEFAULT_ECOPAGES_WORK_DIR } from "../config/constants.js";
|
|
3
|
+
function isInsideNodeModules(directory) {
|
|
4
|
+
return path.normalize(directory).split(path.sep).includes("node_modules");
|
|
5
|
+
}
|
|
6
|
+
function resolveInternalWorkDir(appConfig) {
|
|
7
|
+
if (appConfig.absolutePaths?.workDir) {
|
|
8
|
+
return appConfig.absolutePaths.workDir;
|
|
9
|
+
}
|
|
10
|
+
if (appConfig.rootDir) {
|
|
11
|
+
return path.join(appConfig.rootDir, appConfig.workDir ?? DEFAULT_ECOPAGES_WORK_DIR);
|
|
12
|
+
}
|
|
13
|
+
if (appConfig.workDir) {
|
|
14
|
+
return appConfig.workDir;
|
|
15
|
+
}
|
|
16
|
+
return DEFAULT_ECOPAGES_WORK_DIR;
|
|
17
|
+
}
|
|
18
|
+
function resolveInternalExecutionDir(appConfig) {
|
|
19
|
+
const workDir = resolveInternalWorkDir(appConfig);
|
|
20
|
+
if (!isInsideNodeModules(workDir)) {
|
|
21
|
+
return workDir;
|
|
22
|
+
}
|
|
23
|
+
if (appConfig.rootDir) {
|
|
24
|
+
return path.join(appConfig.rootDir, DEFAULT_ECOPAGES_WORK_DIR);
|
|
25
|
+
}
|
|
26
|
+
return DEFAULT_ECOPAGES_WORK_DIR;
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
resolveInternalExecutionDir,
|
|
30
|
+
resolveInternalWorkDir
|
|
31
|
+
};
|
|
@@ -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
|
}
|
|
@@ -42,8 +42,10 @@ export declare class ProjectWatcher {
|
|
|
42
42
|
private refreshRouterRoutesCallback;
|
|
43
43
|
private hmrManager;
|
|
44
44
|
private bridge;
|
|
45
|
+
private readonly invalidationService;
|
|
45
46
|
private watcher;
|
|
46
47
|
private lastHandledChange;
|
|
48
|
+
private changeQueue;
|
|
47
49
|
constructor({ config, refreshRouterRoutesCallback, hmrManager, bridge }: ProjectWatcherConfig);
|
|
48
50
|
/**
|
|
49
51
|
* Uncaches modules in the source directory to ensure fresh imports.
|
|
@@ -51,24 +53,45 @@ export declare class ProjectWatcher {
|
|
|
51
53
|
* @private
|
|
52
54
|
*/
|
|
53
55
|
private uncacheModules;
|
|
56
|
+
private isRouteSourceFile;
|
|
57
|
+
private isIncludeSourceFile;
|
|
54
58
|
/**
|
|
55
59
|
* Handles public directory file changes by copying only the changed file.
|
|
56
60
|
* @param filePath - Absolute path of the changed file
|
|
57
61
|
*/
|
|
58
62
|
private handlePublicDirFileChange;
|
|
63
|
+
/**
|
|
64
|
+
* Serializes file change handling so that concurrent chokidar events are
|
|
65
|
+
* processed one at a time, preventing overlapping builds and race conditions.
|
|
66
|
+
*/
|
|
67
|
+
private enqueueChange;
|
|
59
68
|
/**
|
|
60
69
|
* Handles file changes by uncaching modules, refreshing routes, and delegating appropriately.
|
|
61
|
-
* Follows
|
|
62
|
-
* 0. Public directory match?
|
|
63
|
-
* 1. additionalWatchPaths match?
|
|
64
|
-
* 2.
|
|
65
|
-
* 3.
|
|
70
|
+
* Follows 5-rule priority:
|
|
71
|
+
* 0. Public directory match? -> copy file and reload
|
|
72
|
+
* 1. additionalWatchPaths match? -> reload
|
|
73
|
+
* 2. Include template source? -> reload after processor notifications
|
|
74
|
+
* 3. Processor-owned asset? -> processor already handled it via notification, skip HMR
|
|
75
|
+
* 4. Otherwise -> HMR strategies
|
|
76
|
+
*
|
|
77
|
+
* Processors that watch a file extension as a dependency (e.g. PostCSS watching
|
|
78
|
+
* .tsx for Tailwind class scanning) are always notified first, but do not
|
|
79
|
+
* prevent the file from flowing through the normal HMR strategy pipeline.
|
|
66
80
|
*
|
|
67
81
|
* Duplicate identical watcher events for the same file are coalesced within a
|
|
68
82
|
* short window before any of the priority rules run.
|
|
69
83
|
* @param rawPath - Path of the changed file
|
|
84
|
+
* @param event - The type of file system event
|
|
70
85
|
*/
|
|
71
86
|
private handleFileChange;
|
|
87
|
+
/**
|
|
88
|
+
* Notifies all processors whose watch config matches the given file extension.
|
|
89
|
+
* This is called before checking processor ownership so that dependency-only
|
|
90
|
+
* processors (e.g. PostCSS watching .tsx for class scanning) receive their
|
|
91
|
+
* notifications regardless of whether they own the file.
|
|
92
|
+
*/
|
|
93
|
+
private notifyProcessors;
|
|
94
|
+
private getProcessorHandler;
|
|
72
95
|
/**
|
|
73
96
|
* Checks if a file is in the public directory.
|
|
74
97
|
*/
|
|
@@ -77,14 +100,10 @@ export declare class ProjectWatcher {
|
|
|
77
100
|
* Checks if file path matches any additionalWatchPaths patterns.
|
|
78
101
|
*/
|
|
79
102
|
private matchesAdditionalWatchPaths;
|
|
80
|
-
/**
|
|
81
|
-
* Checks whether a file is watched by any processor, even if that processor
|
|
82
|
-
* does not own the file as a primary asset.
|
|
83
|
-
*/
|
|
84
|
-
private isWatchedByProcessor;
|
|
85
103
|
/**
|
|
86
104
|
* Checks if a file is handled by a processor.
|
|
87
|
-
* Processors that declare
|
|
105
|
+
* Processors that declare asset capabilities own those file types.
|
|
106
|
+
* Processors without capabilities fall back to checking watch extensions.
|
|
88
107
|
*/
|
|
89
108
|
private isHandledByProcessor;
|
|
90
109
|
/**
|
|
@@ -93,30 +112,22 @@ export declare class ProjectWatcher {
|
|
|
93
112
|
*
|
|
94
113
|
* @param {string} path - Path of the changed directory
|
|
95
114
|
*/
|
|
96
|
-
triggerRouterRefresh(
|
|
115
|
+
triggerRouterRefresh(changedPath: string): Promise<void>;
|
|
97
116
|
/**
|
|
98
117
|
* Handles and logs errors that occur during file watching.
|
|
99
118
|
*
|
|
100
119
|
* @param {unknown} error - The error to handle
|
|
101
120
|
*/
|
|
102
121
|
handleError(error: unknown): void;
|
|
103
|
-
/**
|
|
104
|
-
* Processes file changes for specific file extensions.
|
|
105
|
-
* Used by processors to handle their specific file types.
|
|
106
|
-
*
|
|
107
|
-
* @private
|
|
108
|
-
* @param {string} path - Path of the changed file
|
|
109
|
-
* @param {string[]} extensions - File extensions to process
|
|
110
|
-
* @param {(ctx: ProcessorWatchContext) => void} handler - Handler function for the file change
|
|
111
|
-
*/
|
|
112
|
-
private shouldProcess;
|
|
113
122
|
/**
|
|
114
123
|
* Creates and configures the file system watcher.
|
|
115
124
|
* This sets up:
|
|
116
|
-
* 1.
|
|
117
|
-
* 2.
|
|
118
|
-
* 3.
|
|
119
|
-
*
|
|
125
|
+
* 1. Page file watching
|
|
126
|
+
* 2. Directory watching
|
|
127
|
+
* 3. Error handling
|
|
128
|
+
*
|
|
129
|
+
* Processor notifications are dispatched inside handleFileChange, ensuring
|
|
130
|
+
* a single unified event pipeline with no parallel chokidar bindings.
|
|
120
131
|
*
|
|
121
132
|
* Uses chokidar's built-in debouncing through `awaitWriteFinish` to handle
|
|
122
133
|
* rapid file changes efficiently.
|