@ecopages/core 0.2.0-alpha.4 → 0.2.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +268 -14
- package/package.json +92 -110
- package/src/adapters/README.md +39 -0
- package/src/adapters/abstract/application-adapter.d.ts +28 -2
- package/src/adapters/abstract/application-adapter.js +14 -2
- package/src/adapters/abstract/router-adapter.d.ts +1 -1
- package/src/adapters/abstract/server-adapter.d.ts +2 -2
- package/src/adapters/bun/client-bridge.d.ts +1 -1
- package/src/adapters/bun/create-app.d.ts +12 -12
- package/src/adapters/bun/create-app.js +64 -41
- package/src/adapters/bun/hmr-manager.d.ts +30 -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 +240 -0
- package/src/adapters/shared/static-preview-host.d.ts +10 -0
- package/src/build/README.md +107 -0
- package/src/build/build-adapter.d.ts +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 +442 -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,14 +1,14 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { fileSystem } from "@ecopages/file-system";
|
|
3
|
-
import { HmrStrategy, HmrStrategyType } from "../hmr-strategy";
|
|
4
|
-
import { appLogger } from "../../global/app-logger";
|
|
5
|
-
import { defaultBuildAdapter } from "../../build/build-adapter.js";
|
|
3
|
+
import { HmrStrategy, HmrStrategyType } from "../hmr-strategy.js";
|
|
4
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
6
5
|
class JsHmrStrategy extends HmrStrategy {
|
|
6
|
+
type = HmrStrategyType.SCRIPT;
|
|
7
|
+
context;
|
|
7
8
|
constructor(context) {
|
|
8
9
|
super();
|
|
9
10
|
this.context = context;
|
|
10
11
|
}
|
|
11
|
-
type = HmrStrategyType.SCRIPT;
|
|
12
12
|
/**
|
|
13
13
|
* Determines if the file is a JS/TS file that could affect registered entrypoints.
|
|
14
14
|
*
|
|
@@ -23,18 +23,19 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
23
23
|
const watchedFiles = this.context.getWatchedFiles();
|
|
24
24
|
const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
|
|
25
25
|
const isInSrc = filePath.startsWith(this.context.getSrcDir());
|
|
26
|
+
const isIntegrationTemplate = this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
|
|
26
27
|
if (watchedFiles.size === 0) {
|
|
27
28
|
return false;
|
|
28
29
|
}
|
|
29
30
|
if (!isJsTs || !isInSrc) {
|
|
30
31
|
return false;
|
|
31
32
|
}
|
|
33
|
+
if (isIntegrationTemplate) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
32
36
|
if (watchedFiles.has(filePath)) {
|
|
33
37
|
return true;
|
|
34
38
|
}
|
|
35
|
-
if (this.context.getDependencyEntrypoints) {
|
|
36
|
-
return this.context.getDependencyEntrypoints(filePath).size > 0;
|
|
37
|
-
}
|
|
38
39
|
return true;
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
@@ -45,6 +46,8 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
45
46
|
* @remarks
|
|
46
47
|
* If runtime-specific dependency graph hooks are unavailable, this strategy
|
|
47
48
|
* falls back to rebuilding all watched entrypoints.
|
|
49
|
+
* When multiple entrypoints are impacted they are bundled in a single esbuild
|
|
50
|
+
* invocation to share AST parsing and chunk deduplication.
|
|
48
51
|
* @returns Action to broadcast update events
|
|
49
52
|
*/
|
|
50
53
|
async process(filePath) {
|
|
@@ -54,24 +57,37 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
54
57
|
appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
|
|
55
58
|
return { type: "none" };
|
|
56
59
|
}
|
|
57
|
-
const
|
|
58
|
-
let reloadRequired = false;
|
|
59
|
-
const dependencyHits = this.context.getDependencyEntrypoints?.(filePath) ?? /* @__PURE__ */ new Set();
|
|
60
|
+
const dependencyHits = this.context.getEntrypointDependencyGraph().getDependencyEntrypoints(filePath);
|
|
60
61
|
const hasDependencyHit = dependencyHits.size > 0;
|
|
61
62
|
const impactedEntrypoints = hasDependencyHit ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint)) : Array.from(watchedFiles.keys());
|
|
63
|
+
const buildableEntrypoints = impactedEntrypoints.filter(
|
|
64
|
+
(entrypoint) => this.context.shouldProcessEntrypoint?.(entrypoint) ?? true
|
|
65
|
+
);
|
|
62
66
|
if (!hasDependencyHit) {
|
|
63
67
|
appLogger.debug("[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints");
|
|
64
68
|
}
|
|
65
|
-
|
|
69
|
+
if (buildableEntrypoints.length === 0) {
|
|
70
|
+
return { type: "none" };
|
|
71
|
+
}
|
|
72
|
+
const buildResult = await this.bundleEntrypoints(buildableEntrypoints);
|
|
73
|
+
if (!buildResult.success) {
|
|
74
|
+
return { type: "none" };
|
|
75
|
+
}
|
|
76
|
+
const updates = [];
|
|
77
|
+
let reloadRequired = false;
|
|
78
|
+
for (const entrypoint of buildableEntrypoints) {
|
|
66
79
|
const outputUrl = watchedFiles.get(entrypoint);
|
|
67
|
-
if (!outputUrl)
|
|
68
|
-
|
|
80
|
+
if (!outputUrl) continue;
|
|
81
|
+
if (buildResult.dependencies) {
|
|
82
|
+
const entrypointDeps = buildResult.dependencies.get(path.resolve(entrypoint)) ?? [];
|
|
83
|
+
this.context.getEntrypointDependencyGraph().setEntrypointDependencies(entrypoint, entrypointDeps);
|
|
69
84
|
}
|
|
70
|
-
const
|
|
85
|
+
const srcDir = this.context.getSrcDir();
|
|
86
|
+
const relativePath = path.relative(srcDir, entrypoint);
|
|
87
|
+
const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, ".js");
|
|
88
|
+
const outputPath = path.join(this.context.getDistDir(), relativePathJs);
|
|
89
|
+
const result = await this.processOutput(outputPath, outputUrl);
|
|
71
90
|
if (result.success) {
|
|
72
|
-
if (result.dependencies && this.context.setEntrypointDependencies) {
|
|
73
|
-
this.context.setEntrypointDependencies(entrypoint, result.dependencies);
|
|
74
|
-
}
|
|
75
91
|
updates.push(outputUrl);
|
|
76
92
|
if (result.requiresReload) {
|
|
77
93
|
reloadRequired = true;
|
|
@@ -83,18 +99,14 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
83
99
|
appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
|
|
84
100
|
return {
|
|
85
101
|
type: "broadcast",
|
|
86
|
-
events: [
|
|
87
|
-
{
|
|
88
|
-
type: "reload"
|
|
89
|
-
}
|
|
90
|
-
]
|
|
102
|
+
events: [{ type: "reload" }]
|
|
91
103
|
};
|
|
92
104
|
}
|
|
93
105
|
return {
|
|
94
106
|
type: "broadcast",
|
|
95
|
-
events: updates.map((
|
|
107
|
+
events: updates.map((p) => ({
|
|
96
108
|
type: "update",
|
|
97
|
-
path:
|
|
109
|
+
path: p,
|
|
98
110
|
timestamp: Date.now()
|
|
99
111
|
}))
|
|
100
112
|
};
|
|
@@ -102,44 +114,40 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
102
114
|
return { type: "none" };
|
|
103
115
|
}
|
|
104
116
|
/**
|
|
105
|
-
* Bundles
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* @param outputUrl - URL path for the bundled file
|
|
109
|
-
* @returns True if bundling was successful
|
|
117
|
+
* Bundles one or more entrypoints in a single esbuild invocation.
|
|
118
|
+
* Uses the source directory as the output base so that the directory structure
|
|
119
|
+
* is preserved under the HMR dist folder.
|
|
110
120
|
*/
|
|
111
|
-
async
|
|
121
|
+
async bundleEntrypoints(entrypoints) {
|
|
112
122
|
try {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const outputPath = path.join(this.context.getDistDir(), relativePathJs);
|
|
117
|
-
const result = await defaultBuildAdapter.build({
|
|
118
|
-
entrypoints: [entrypointPath],
|
|
123
|
+
const result = await this.context.getBrowserBundleService().bundle({
|
|
124
|
+
profile: "hmr-entrypoint",
|
|
125
|
+
entrypoints,
|
|
119
126
|
outdir: this.context.getDistDir(),
|
|
120
|
-
|
|
121
|
-
|
|
127
|
+
outbase: this.context.getSrcDir(),
|
|
128
|
+
naming: "[dir]/[name]",
|
|
122
129
|
plugins: this.context.getPlugins(),
|
|
123
|
-
minify: false
|
|
124
|
-
external: ["react", "react-dom"]
|
|
130
|
+
minify: false
|
|
125
131
|
});
|
|
126
132
|
if (!result.success) {
|
|
127
|
-
appLogger.error(
|
|
128
|
-
return { success: false
|
|
133
|
+
appLogger.error("[JsHmrStrategy] Batched build failed:", result.logs);
|
|
134
|
+
return { success: false };
|
|
129
135
|
}
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
+
const dependencies = /* @__PURE__ */ new Map();
|
|
137
|
+
if (result.dependencyGraph?.entrypoints) {
|
|
138
|
+
for (const [entrypoint, deps] of Object.entries(result.dependencyGraph.entrypoints)) {
|
|
139
|
+
dependencies.set(path.resolve(entrypoint), deps);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return { success: true, dependencies };
|
|
136
143
|
} catch (error) {
|
|
137
|
-
appLogger.error(
|
|
138
|
-
return { success: false
|
|
144
|
+
appLogger.error("[JsHmrStrategy] Error in batched build:", error);
|
|
145
|
+
return { success: false };
|
|
139
146
|
}
|
|
140
147
|
}
|
|
141
148
|
/**
|
|
142
|
-
* Processes bundled output
|
|
149
|
+
* Processes bundled output and determines whether the browser can hot-accept
|
|
150
|
+
* the update or must fall back to a full reload.
|
|
143
151
|
*
|
|
144
152
|
* @param filepath - Path to the bundled output file
|
|
145
153
|
* @param url - URL path for the bundled file
|
|
@@ -147,12 +155,10 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
147
155
|
*/
|
|
148
156
|
async processOutput(filepath, url) {
|
|
149
157
|
try {
|
|
150
|
-
|
|
158
|
+
const code = await fileSystem.readFile(filepath);
|
|
151
159
|
if (code.includes("/* [ecopages] hmr */")) {
|
|
152
160
|
return { success: true, requiresReload: !code.includes("import.meta.hot.accept") };
|
|
153
161
|
}
|
|
154
|
-
code = this.replaceBareSpecifiers(code);
|
|
155
|
-
await fileSystem.writeAsync(filepath, code);
|
|
156
162
|
appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
|
|
157
163
|
const hasHmrAccept = code.includes("import.meta.hot.accept");
|
|
158
164
|
return { success: true, requiresReload: !hasHmrAccept };
|
|
@@ -161,27 +167,6 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
161
167
|
return { success: false, requiresReload: false };
|
|
162
168
|
}
|
|
163
169
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Replaces bare specifiers with vendor URLs.
|
|
166
|
-
*
|
|
167
|
-
* Handles both static imports and dynamic imports.
|
|
168
|
-
*
|
|
169
|
-
* @param code - The bundled code to transform
|
|
170
|
-
* @returns The transformed code with vendor URLs
|
|
171
|
-
*/
|
|
172
|
-
replaceBareSpecifiers(code) {
|
|
173
|
-
const specifierMap = this.context.getSpecifierMap();
|
|
174
|
-
if (specifierMap.size === 0) {
|
|
175
|
-
return code;
|
|
176
|
-
}
|
|
177
|
-
let result = code;
|
|
178
|
-
for (const [bareSpec, vendorUrl] of specifierMap.entries()) {
|
|
179
|
-
const escaped = bareSpec.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
180
|
-
result = result.replace(new RegExp(`from\\s*["']${escaped}["']`, "g"), `from "${vendorUrl}"`);
|
|
181
|
-
result = result.replace(new RegExp(`import\\(["']${escaped}["']\\)`, "g"), `import("${vendorUrl}")`);
|
|
182
|
-
}
|
|
183
|
-
return result;
|
|
184
|
-
}
|
|
185
170
|
}
|
|
186
171
|
export {
|
|
187
172
|
JsHmrStrategy
|
package/src/index.browser.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
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
|
-
export { eco } from './eco/eco.js';
|
|
3
|
+
export { eco } from './eco/eco.browser.js';
|
package/src/index.browser.js
CHANGED
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,13 +21,32 @@ 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
|
+
}
|
|
36
|
+
function resolveAppSourceAliasPath(srcDir, specifier) {
|
|
37
|
+
if (!specifier.startsWith("@/")) {
|
|
38
|
+
return void 0;
|
|
39
|
+
}
|
|
40
|
+
const candidate = path.join(srcDir, specifier.slice(2));
|
|
41
|
+
const resolved = findResolvablePath(candidate);
|
|
42
|
+
return resolved ? resolveAliasedBarrelTarget(resolved) : void 0;
|
|
43
|
+
}
|
|
22
44
|
function createAliasResolverPlugin(srcDir) {
|
|
23
45
|
return {
|
|
24
46
|
name: "ecopages-alias-resolver",
|
|
25
47
|
setup(build) {
|
|
26
48
|
build.onResolve({ filter: /^@\// }, (args) => {
|
|
27
|
-
const
|
|
28
|
-
const resolved = findResolvablePath(candidate);
|
|
49
|
+
const resolved = resolveAppSourceAliasPath(srcDir, args.path);
|
|
29
50
|
if (resolved) {
|
|
30
51
|
return { path: resolved };
|
|
31
52
|
}
|
|
@@ -35,5 +56,6 @@ function createAliasResolverPlugin(srcDir) {
|
|
|
35
56
|
};
|
|
36
57
|
}
|
|
37
58
|
export {
|
|
38
|
-
createAliasResolverPlugin
|
|
59
|
+
createAliasResolverPlugin,
|
|
60
|
+
resolveAppSourceAliasPath
|
|
39
61
|
};
|
|
@@ -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
|
*
|