@ecopages/core 0.2.0-alpha.3 → 0.2.0-alpha.31
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/CHANGELOG.md +66 -66
- package/README.md +268 -14
- package/package.json +72 -108
- 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 +5 -12
- package/src/adapters/bun/create-app.js +43 -7
- package/src/adapters/bun/hmr-manager.d.ts +72 -26
- package/src/adapters/bun/hmr-manager.js +153 -81
- package/src/adapters/bun/index.d.ts +2 -3
- package/src/adapters/bun/index.js +3 -3
- package/src/adapters/bun/server-adapter.d.ts +5 -5
- package/src/adapters/bun/server-adapter.js +63 -38
- package/src/adapters/bun/server-lifecycle.d.ts +28 -17
- package/src/adapters/bun/server-lifecycle.js +34 -62
- 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 +6 -9
- package/src/adapters/node/create-app.js +12 -6
- package/src/adapters/node/node-client-bridge.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.d.ts +79 -21
- package/src/adapters/node/node-hmr-manager.js +167 -114
- package/src/adapters/node/server-adapter.d.ts +7 -35
- package/src/adapters/node/server-adapter.js +55 -107
- package/src/adapters/node/static-content-server.d.ts +37 -1
- package/src/adapters/node/static-content-server.js +29 -1
- 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 +32 -0
- package/src/adapters/shared/render-context.d.ts +4 -3
- package/src/adapters/shared/render-context.js +6 -3
- package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
- package/src/adapters/shared/runtime-bootstrap.js +43 -0
- package/src/adapters/shared/server-adapter.d.ts +33 -12
- package/src/adapters/shared/server-adapter.js +208 -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/build/README.md +107 -0
- package/src/build/build-adapter.d.ts +168 -3
- package/src/build/build-adapter.js +604 -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 +15 -6
- package/src/build/esbuild-build-adapter.js +189 -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 +255 -49
- 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 +83 -0
- package/src/eco/eco.js +32 -57
- package/src/eco/eco.types.d.ts +14 -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 +64 -74
- 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.js +17 -3
- package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
- package/src/plugins/eco-component-meta-plugin.js +27 -22
- package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
- package/src/plugins/foreign-jsx-override-plugin.js +35 -0
- package/src/plugins/integration-plugin.d.ts +142 -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 +89 -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 +108 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +206 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +516 -0
- package/src/route-renderer/orchestration/integration-renderer.js +909 -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 +2 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +23 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +90 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +158 -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 +120 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.js +388 -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/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 +3 -0
- package/src/services/assets/asset-processing-service/page-package.js +74 -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/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.d.ts +3 -3
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.js +12 -7
- 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 +37 -0
- package/src/services/html/html-rewriter-provider.service.js +68 -0
- package/src/services/html/html-transformer.service.d.ts +87 -0
- package/src/services/html/html-transformer.service.js +216 -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-server-module-transpiler.service.d.ts +24 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +115 -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 +216 -0
- package/src/services/module-loading/page-module-import.service.d.ts +76 -0
- package/src/services/module-loading/page-module-import.service.js +170 -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} +201 -32
- 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/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.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/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
- package/src/hmr/client/hmr-runtime.ts +0 -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.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 → plugins/runtime-capability.js} +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.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/{public-types.js → services/module-loading/app-module-loader.service.js} +0 -0
- /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
package/src/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export type * from './public-types.js';
|
|
1
|
+
export type * from './types/public-types.js';
|
|
2
2
|
export type * from './eco/eco.types.js';
|
|
3
3
|
export { eco } from './eco/eco.js';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
4
|
+
export { defineApiHandler, defineGroupHandler, type GroupHandler } from './adapters/shared/define-api-handler.js';
|
|
5
|
+
export { createEcoBuildPluginFromSourceTransform, createVitePluginsFromAppSourceTransforms, getAppSourceTransforms, createVitePluginFromSourceTransform, normalizeTransformId, type EcoSourceTransform, type EcoSourceTransformResult, type EcoViteCompatiblePlugin, } from './plugins/source-transform.js';
|
|
6
|
+
export { createEcoComponentMetaTransform } from './plugins/eco-component-meta-plugin.js';
|
package/src/index.js
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { eco } from "./eco/eco.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { defineApiHandler, defineGroupHandler } from "./adapters/shared/define-api-handler.js";
|
|
3
|
+
import {
|
|
4
|
+
createEcoBuildPluginFromSourceTransform,
|
|
5
|
+
createVitePluginsFromAppSourceTransforms,
|
|
6
|
+
getAppSourceTransforms,
|
|
7
|
+
createVitePluginFromSourceTransform,
|
|
8
|
+
normalizeTransformId
|
|
9
|
+
} from "./plugins/source-transform.js";
|
|
10
|
+
import { createEcoComponentMetaTransform } from "./plugins/eco-component-meta-plugin.js";
|
|
4
11
|
export {
|
|
5
|
-
|
|
6
|
-
|
|
12
|
+
createEcoBuildPluginFromSourceTransform,
|
|
13
|
+
createEcoComponentMetaTransform,
|
|
14
|
+
createVitePluginFromSourceTransform,
|
|
15
|
+
createVitePluginsFromAppSourceTransforms,
|
|
7
16
|
defineApiHandler,
|
|
8
17
|
defineGroupHandler,
|
|
9
|
-
eco
|
|
18
|
+
eco,
|
|
19
|
+
getAppSourceTransforms,
|
|
20
|
+
normalizeTransformId
|
|
10
21
|
};
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
* This module contains the ghtml renderer
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
|
-
import type { EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../public-types.js';
|
|
6
|
-
import { IntegrationRenderer, type RenderToResponseContext } from '../../route-renderer/integration-renderer.js';
|
|
5
|
+
import type { ComponentRenderInput, ComponentRenderResult, EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../types/public-types.js';
|
|
6
|
+
import { IntegrationRenderer, type RenderToResponseContext } from '../../route-renderer/orchestration/integration-renderer.js';
|
|
7
7
|
/**
|
|
8
8
|
* A renderer for the ghtml integration.
|
|
9
9
|
* It renders a page using the HtmlTemplate and Page components.
|
|
10
10
|
*/
|
|
11
11
|
export declare class GhtmlRenderer extends IntegrationRenderer<EcoPagesElement> {
|
|
12
12
|
name: string;
|
|
13
|
+
renderComponent(input: ComponentRenderInput): Promise<ComponentRenderResult>;
|
|
13
14
|
render({ params, query, props, locals, pageLocals, metadata, Page, Layout, HtmlTemplate, }: IntegrationRendererRenderOptions): Promise<RouteRendererBody>;
|
|
14
15
|
renderToResponse<P = Record<string, unknown>>(view: EcoComponent<P>, props: P, ctx: RenderToResponseContext): Promise<Response>;
|
|
15
16
|
}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
IntegrationRenderer
|
|
3
|
+
} from "../../route-renderer/orchestration/integration-renderer.js";
|
|
4
|
+
import { GHTML_PLUGIN_NAME } from "./ghtml.constants.js";
|
|
3
5
|
class GhtmlRenderer extends IntegrationRenderer {
|
|
4
6
|
name = GHTML_PLUGIN_NAME;
|
|
7
|
+
async renderComponent(input) {
|
|
8
|
+
return this.renderStringComponentWithQueuedForeignSubtrees(
|
|
9
|
+
input,
|
|
10
|
+
input.component
|
|
11
|
+
);
|
|
12
|
+
}
|
|
5
13
|
async render({
|
|
6
14
|
params,
|
|
7
15
|
query,
|
|
@@ -14,42 +22,31 @@ class GhtmlRenderer extends IntegrationRenderer {
|
|
|
14
22
|
HtmlTemplate
|
|
15
23
|
}) {
|
|
16
24
|
try {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
return await this.renderPageWithDocumentShell({
|
|
26
|
+
page: {
|
|
27
|
+
component: Page,
|
|
28
|
+
props: { params, query, ...props, locals: pageLocals }
|
|
29
|
+
},
|
|
30
|
+
layout: Layout ? {
|
|
31
|
+
component: Layout,
|
|
32
|
+
props: locals ? { locals } : {}
|
|
33
|
+
} : void 0,
|
|
34
|
+
htmlTemplate: HtmlTemplate,
|
|
20
35
|
metadata,
|
|
21
|
-
|
|
22
|
-
pageProps: props || {}
|
|
36
|
+
pageProps: props ?? {}
|
|
23
37
|
});
|
|
24
|
-
return this.DOC_TYPE + body;
|
|
25
38
|
} catch (error) {
|
|
26
39
|
throw this.createRenderError("Error rendering page", error);
|
|
27
40
|
}
|
|
28
41
|
}
|
|
29
42
|
async renderToResponse(view, props, ctx) {
|
|
30
43
|
try {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
} else {
|
|
38
|
-
const children = Layout ? await Layout({ children: pageContent }) : pageContent;
|
|
39
|
-
const HtmlTemplate = await this.getHtmlTemplate();
|
|
40
|
-
const metadata = view.metadata ? await view.metadata({
|
|
41
|
-
params: {},
|
|
42
|
-
query: {},
|
|
43
|
-
props,
|
|
44
|
-
appConfig: this.appConfig
|
|
45
|
-
}) : this.appConfig.defaultMetadata;
|
|
46
|
-
body = this.DOC_TYPE + await HtmlTemplate({
|
|
47
|
-
metadata,
|
|
48
|
-
children,
|
|
49
|
-
pageProps: props
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return this.createHtmlResponse(body, ctx);
|
|
44
|
+
return await this.renderViewWithDocumentShell({
|
|
45
|
+
view,
|
|
46
|
+
props,
|
|
47
|
+
ctx,
|
|
48
|
+
layout: view.config?.layout
|
|
49
|
+
});
|
|
53
50
|
} catch (error) {
|
|
54
51
|
throw this.createRenderError("Error rendering view", error);
|
|
55
52
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GHTML_PLUGIN_NAME = "ghtml";
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { IntegrationPlugin, type IntegrationPluginConfig } from '../../plugins/integration-plugin';
|
|
2
|
-
import { GhtmlRenderer } from './ghtml-renderer';
|
|
3
|
-
/**
|
|
4
|
-
* The name of the ghtml plugin
|
|
5
|
-
*/
|
|
6
|
-
export declare const GHTML_PLUGIN_NAME = "ghtml";
|
|
1
|
+
import { IntegrationPlugin, type IntegrationPluginConfig } from '../../plugins/integration-plugin.js';
|
|
2
|
+
import { GhtmlRenderer } from './ghtml-renderer.js';
|
|
7
3
|
/**
|
|
8
4
|
* The Ghtml plugin class
|
|
9
5
|
* This plugin provides support for ghtml components in Ecopages
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IntegrationPlugin } from "../../plugins/integration-plugin";
|
|
2
|
-
import { GhtmlRenderer } from "./ghtml-renderer";
|
|
3
|
-
|
|
1
|
+
import { IntegrationPlugin } from "../../plugins/integration-plugin.js";
|
|
2
|
+
import { GhtmlRenderer } from "./ghtml-renderer.js";
|
|
3
|
+
import { GHTML_PLUGIN_NAME } from "./ghtml.constants.js";
|
|
4
4
|
class GhtmlPlugin extends IntegrationPlugin {
|
|
5
5
|
renderer = GhtmlRenderer;
|
|
6
6
|
constructor(options) {
|
|
@@ -15,7 +15,6 @@ function ghtmlPlugin(options) {
|
|
|
15
15
|
return new GhtmlPlugin(options);
|
|
16
16
|
}
|
|
17
17
|
export {
|
|
18
|
-
GHTML_PLUGIN_NAME,
|
|
19
18
|
GhtmlPlugin,
|
|
20
19
|
ghtmlPlugin
|
|
21
20
|
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Plugin Contracts
|
|
2
|
+
|
|
3
|
+
This directory contains the authoring contracts for Ecopages integrations, processors, and related plugin-facing runtime declarations.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
The plugin layer defines what packages are allowed to declare about themselves, while core retains orchestration ownership.
|
|
8
|
+
|
|
9
|
+
These contracts are responsible for:
|
|
10
|
+
|
|
11
|
+
- integration registration and lifecycle hooks
|
|
12
|
+
- processor registration and asset capability declaration
|
|
13
|
+
- runtime capability declaration and validation input
|
|
14
|
+
- shared build-plugin bridge types used by integrations and processors
|
|
15
|
+
|
|
16
|
+
## Main Files
|
|
17
|
+
|
|
18
|
+
- `integration-plugin.ts`: framework-semantics contract for render integrations
|
|
19
|
+
- `processor.ts`: asset-transformation contract for processors
|
|
20
|
+
- `runtime-capability.ts`: runtime compatibility declaration types
|
|
21
|
+
- `source-transform.ts`: bundler-neutral source-transform primitive with Ecopages adapters plus app-level Vite plugin composition helpers
|
|
22
|
+
- `eco-component-meta-plugin.ts`: shared metadata transform used by core loading/build paths
|
|
23
|
+
|
|
24
|
+
## Ownership Rules
|
|
25
|
+
|
|
26
|
+
- Integrations own rendering semantics, hydration behavior, and integration-specific HMR strategy.
|
|
27
|
+
- Processors own asset semantics, cache ownership, and processor-specific watch behavior.
|
|
28
|
+
- Core owns lifecycle ordering, startup orchestration, and manifest assembly.
|
|
29
|
+
|
|
30
|
+
## Lifecycle Summary
|
|
31
|
+
|
|
32
|
+
1. Config build validates and prepares plugin contributions.
|
|
33
|
+
2. Core seals the app-owned build manifest.
|
|
34
|
+
3. Runtime startup calls runtime-only setup hooks.
|
|
35
|
+
4. Request-time rendering and development invalidation reuse those finalized contracts.
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
const RESOLVABLE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".mdx", ".css", ".scss", ".sass", ".less"];
|
|
4
4
|
function findResolvablePath(candidate) {
|
|
5
5
|
if (path.extname(candidate)) {
|
|
6
|
-
|
|
6
|
+
if (existsSync(candidate)) {
|
|
7
|
+
return candidate;
|
|
8
|
+
}
|
|
7
9
|
}
|
|
8
10
|
for (const extension of RESOLVABLE_EXTENSIONS) {
|
|
9
11
|
const fileCandidate = `${candidate}${extension}`;
|
|
@@ -19,6 +21,18 @@ function findResolvablePath(candidate) {
|
|
|
19
21
|
}
|
|
20
22
|
return void 0;
|
|
21
23
|
}
|
|
24
|
+
function resolveAliasedBarrelTarget(resolvedPath) {
|
|
25
|
+
if (!path.basename(resolvedPath).startsWith("index.")) {
|
|
26
|
+
return resolvedPath;
|
|
27
|
+
}
|
|
28
|
+
const source = readFileSync(resolvedPath, "utf8").trim();
|
|
29
|
+
const match = source.match(/^export\s+\*\s+from\s+['"]([^'"]+)['"]\s*;?$/);
|
|
30
|
+
if (!match?.[1]?.startsWith(".")) {
|
|
31
|
+
return resolvedPath;
|
|
32
|
+
}
|
|
33
|
+
const target = findResolvablePath(path.resolve(path.dirname(resolvedPath), match[1]));
|
|
34
|
+
return target ?? resolvedPath;
|
|
35
|
+
}
|
|
22
36
|
function createAliasResolverPlugin(srcDir) {
|
|
23
37
|
return {
|
|
24
38
|
name: "ecopages-alias-resolver",
|
|
@@ -27,7 +41,7 @@ function createAliasResolverPlugin(srcDir) {
|
|
|
27
41
|
const candidate = path.join(srcDir, args.path.slice(2));
|
|
28
42
|
const resolved = findResolvablePath(candidate);
|
|
29
43
|
if (resolved) {
|
|
30
|
-
return { path: resolved };
|
|
44
|
+
return { path: resolveAliasedBarrelTarget(resolved) };
|
|
31
45
|
}
|
|
32
46
|
return {};
|
|
33
47
|
});
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
* @module eco-component-meta-plugin
|
|
27
27
|
*/
|
|
28
28
|
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
29
|
-
import type { EcoPagesAppConfig } from '../internal-types.js';
|
|
29
|
+
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
30
|
+
import { type EcoSourceTransform, type EcoViteCompatiblePlugin } from './source-transform.js';
|
|
30
31
|
/**
|
|
31
32
|
* Options for creating the eco-component-meta-plugin.
|
|
32
33
|
*/
|
|
@@ -34,6 +35,11 @@ export interface EcoComponentDirPluginOptions {
|
|
|
34
35
|
/** The EcoPages application configuration containing integration settings */
|
|
35
36
|
config: EcoPagesAppConfig;
|
|
36
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates the bundler-neutral metadata transform used by Ecopages loaders and
|
|
40
|
+
* Vite-compatible adapters.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createEcoComponentMetaTransform(options: EcoComponentDirPluginOptions): EcoSourceTransform;
|
|
37
43
|
/**
|
|
38
44
|
* Creates a build plugin that auto-injects `__eco` metadata into EcoComponent config objects.
|
|
39
45
|
*
|
|
@@ -47,6 +53,8 @@ export interface EcoComponentDirPluginOptions {
|
|
|
47
53
|
* Supported patterns:
|
|
48
54
|
* - `eco.page({ ... })` - Page component declarations
|
|
49
55
|
* - `eco.component({ ... })` - Reusable component declarations
|
|
56
|
+
* - `eco.html({ ... })` - HTML shell declarations
|
|
57
|
+
* - `eco.layout({ ... })` - Layout declarations
|
|
50
58
|
* - `Component.config = { ... }` - Config assignment pattern
|
|
51
59
|
* - `config: { ... }` - Config property in object literals
|
|
52
60
|
* - `export const config = { ... }` - Exported config declarations
|
|
@@ -63,6 +71,11 @@ export interface EcoComponentDirPluginOptions {
|
|
|
63
71
|
* ```
|
|
64
72
|
*/
|
|
65
73
|
export declare function createEcoComponentMetaPlugin(options: EcoComponentDirPluginOptions): EcoBuildPlugin;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a Vite-compatible metadata injection plugin from the shared
|
|
76
|
+
* Ecopages source-transform primitive.
|
|
77
|
+
*/
|
|
78
|
+
export declare function createEcoComponentMetaVitePlugin(options: EcoComponentDirPluginOptions): EcoViteCompatiblePlugin;
|
|
66
79
|
/**
|
|
67
80
|
* Injects `__eco` metadata into EcoComponent config objects in file content.
|
|
68
81
|
*
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
1
|
import { parseSync } from "oxc-parser";
|
|
3
|
-
import { fileSystem } from "@ecopages/file-system";
|
|
4
2
|
import { rapidhash } from "../utils/hash.js";
|
|
3
|
+
import {
|
|
4
|
+
createEcoBuildPluginFromSourceTransform,
|
|
5
|
+
createVitePluginFromSourceTransform
|
|
6
|
+
} from "./source-transform.js";
|
|
5
7
|
const REGEX_SPECIAL_CHARS = /[.*+?^${}()|[\]\\]/g;
|
|
6
8
|
const VALID_LOADER_EXTENSIONS = /* @__PURE__ */ new Set([".ts", ".tsx", ".js", ".jsx"]);
|
|
7
9
|
function hasValidLoaderExtension(ext) {
|
|
@@ -38,30 +40,31 @@ function createExtensionPattern(extensions) {
|
|
|
38
40
|
const escaped = uniqueExtensions.map((ext) => ext.replace(REGEX_SPECIAL_CHARS, "\\$&"));
|
|
39
41
|
return new RegExp(`(${escaped.join("|")})(\\?.*)?$`);
|
|
40
42
|
}
|
|
41
|
-
function
|
|
43
|
+
function createEcoComponentMetaTransform(options) {
|
|
44
|
+
const allExtensions = options.config.integrations.flatMap((integration) => integration.extensions).filter(hasValidLoaderExtension);
|
|
45
|
+
if (allExtensions.length === 0) {
|
|
46
|
+
throw new Error("[eco-component-meta-plugin] No extensions configured. At least one integration is required.");
|
|
47
|
+
}
|
|
48
|
+
const extensionPattern = createExtensionPattern(allExtensions);
|
|
49
|
+
const extensionToIntegration = buildExtensionToIntegrationMap(options.config.integrations);
|
|
42
50
|
return {
|
|
43
51
|
name: "eco-component-meta-plugin",
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
build.onLoad({ filter: extensionPattern }, (args) => {
|
|
52
|
-
const filePath = args.path.split("?")[0];
|
|
53
|
-
const contents = fileSystem.readFileSync(filePath);
|
|
54
|
-
const integration = detectIntegration(filePath, extensionToIntegration);
|
|
55
|
-
const transformedContents = injectEcoMeta(contents, filePath, integration);
|
|
56
|
-
const ext = path.extname(filePath).slice(1);
|
|
57
|
-
return {
|
|
58
|
-
contents: transformedContents,
|
|
59
|
-
loader: ext || "ts"
|
|
60
|
-
};
|
|
61
|
-
});
|
|
52
|
+
enforce: "pre",
|
|
53
|
+
filter: extensionPattern,
|
|
54
|
+
transform(code, id) {
|
|
55
|
+
const integration = detectIntegration(id, extensionToIntegration);
|
|
56
|
+
return {
|
|
57
|
+
code: injectEcoMeta(code, id, integration)
|
|
58
|
+
};
|
|
62
59
|
}
|
|
63
60
|
};
|
|
64
61
|
}
|
|
62
|
+
function createEcoComponentMetaPlugin(options) {
|
|
63
|
+
return createEcoBuildPluginFromSourceTransform(createEcoComponentMetaTransform(options));
|
|
64
|
+
}
|
|
65
|
+
function createEcoComponentMetaVitePlugin(options) {
|
|
66
|
+
return createVitePluginFromSourceTransform(createEcoComponentMetaTransform(options));
|
|
67
|
+
}
|
|
65
68
|
function findInjectionPoints(node, insertions, injection, isInsideEcoComponent = false) {
|
|
66
69
|
if (!node || typeof node !== "object") return;
|
|
67
70
|
const n = node;
|
|
@@ -70,7 +73,7 @@ function findInjectionPoints(node, insertions, injection, isInsideEcoComponent =
|
|
|
70
73
|
if (callee?.type === "MemberExpression" || callee?.type === "StaticMemberExpression") {
|
|
71
74
|
const obj = callee.object;
|
|
72
75
|
const prop = callee.property;
|
|
73
|
-
if (obj?.type === "Identifier" && obj?.name === "eco" && (prop?.name === "page" || prop?.name === "component")) {
|
|
76
|
+
if (obj?.type === "Identifier" && obj?.name === "eco" && (prop?.name === "page" || prop?.name === "component" || prop?.name === "html" || prop?.name === "layout")) {
|
|
74
77
|
const args = n.arguments;
|
|
75
78
|
const firstArg = args?.[0];
|
|
76
79
|
if (firstArg?.type === "ObjectExpression") {
|
|
@@ -152,6 +155,8 @@ function injectEcoMeta(contents, filePath, integration) {
|
|
|
152
155
|
var eco_component_meta_plugin_default = createEcoComponentMetaPlugin;
|
|
153
156
|
export {
|
|
154
157
|
createEcoComponentMetaPlugin,
|
|
158
|
+
createEcoComponentMetaTransform,
|
|
159
|
+
createEcoComponentMetaVitePlugin,
|
|
155
160
|
eco_component_meta_plugin_default as default,
|
|
156
161
|
injectEcoMeta
|
|
157
162
|
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Options for the shared foreign-JSX override build plugin.
|
|
4
|
+
*/
|
|
5
|
+
export interface ForeignJsxOverrideOptions {
|
|
6
|
+
/** JSX runtime that should own the transformed foreign files. */
|
|
7
|
+
hostJsxImportSource: string;
|
|
8
|
+
/** Extensions claimed by other JSX integrations that may appear in the host graph. */
|
|
9
|
+
foreignExtensions: string[];
|
|
10
|
+
/** Optional plugin name override for debug output. */
|
|
11
|
+
name?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Build plugin that prepends a `@jsxImportSource` pragma to foreign integration
|
|
15
|
+
* files bundled into a host integration's client graph.
|
|
16
|
+
*
|
|
17
|
+
* When a host integration (e.g. React) bundles a component file that belongs to
|
|
18
|
+
* another JSX integration (e.g. `.kita.tsx`), that file inherits the project
|
|
19
|
+
* `tsconfig` JSX runtime which produces the wrong output (HTML strings instead
|
|
20
|
+
* of framework elements). This plugin rewrites the source to explicitly target
|
|
21
|
+
* the host's JSX factory so esbuild compiles every JSX expression into the
|
|
22
|
+
* correct element creation calls.
|
|
23
|
+
*
|
|
24
|
+
* The plugin is intentionally framework-agnostic: any integration that does
|
|
25
|
+
* client-side bundling can use it by passing its own `jsxImportSource` and the
|
|
26
|
+
* set of foreign extensions collected from the app config.
|
|
27
|
+
*
|
|
28
|
+
* When no JSX-bearing foreign extensions are present, the returned plugin is a
|
|
29
|
+
* no-op so integrations can register it unconditionally.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createForeignJsxOverridePlugin(options: ForeignJsxOverrideOptions): EcoBuildPlugin;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
function createForeignJsxOverridePlugin(options) {
|
|
4
|
+
const extensions = options.foreignExtensions.filter((ext) => ext.endsWith(".tsx") || ext.endsWith(".jsx"));
|
|
5
|
+
if (extensions.length === 0) {
|
|
6
|
+
return {
|
|
7
|
+
name: options.name ?? "foreign-jsx-override",
|
|
8
|
+
setup() {
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const pragma = `/** @jsxImportSource ${options.hostJsxImportSource} */
|
|
13
|
+
`;
|
|
14
|
+
const filter = new RegExp(`(${extensions.map((e) => e.replace(".", "\\.")).join("|")})$`);
|
|
15
|
+
return {
|
|
16
|
+
name: options.name ?? "foreign-jsx-override",
|
|
17
|
+
setup(build) {
|
|
18
|
+
build.onLoad({ filter }, (args) => {
|
|
19
|
+
const source = readFileSync(args.path, "utf-8");
|
|
20
|
+
const loader = args.path.endsWith(".jsx") ? "jsx" : "tsx";
|
|
21
|
+
if (source.includes("@jsxImportSource")) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
contents: pragma + source,
|
|
26
|
+
loader,
|
|
27
|
+
resolveDir: path.dirname(args.path)
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
createForeignJsxOverridePlugin
|
|
35
|
+
};
|