@ecopages/core 0.2.0-alpha.9 → 0.2.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -28
- package/package.json +94 -116
- package/src/adapters/README.md +2 -2
- package/src/adapters/abstract/application-adapter.d.ts +28 -2
- package/src/adapters/abstract/application-adapter.js +14 -2
- package/src/adapters/abstract/router-adapter.d.ts +1 -1
- package/src/adapters/abstract/server-adapter.d.ts +2 -2
- package/src/adapters/bun/client-bridge.d.ts +1 -1
- package/src/adapters/bun/create-app.d.ts +12 -12
- package/src/adapters/bun/create-app.js +64 -41
- package/src/adapters/bun/hmr-manager.d.ts +19 -115
- package/src/adapters/bun/hmr-manager.js +25 -301
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -2
- package/src/adapters/bun/runtime-host.d.ts +52 -0
- package/src/adapters/bun/runtime-host.js +56 -0
- package/src/adapters/bun/server-adapter.d.ts +100 -32
- package/src/adapters/bun/server-adapter.js +142 -65
- package/src/adapters/bun/static-preview-host.d.ts +28 -0
- package/src/adapters/bun/static-preview-host.js +45 -0
- package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
- package/src/{create-app.js → adapters/create-app.js} +4 -4
- package/src/adapters/index.d.ts +1 -5
- package/src/adapters/index.js +1 -7
- package/src/adapters/node/create-app.d.ts +15 -12
- package/src/adapters/node/create-app.js +34 -85
- package/src/adapters/node/http-request-bridge.d.ts +57 -0
- package/src/adapters/node/http-request-bridge.js +118 -0
- package/src/adapters/node/node-client-bridge.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.d.ts +22 -103
- package/src/adapters/node/node-hmr-manager.js +26 -289
- package/src/adapters/node/runtime-host.d.ts +57 -0
- package/src/adapters/node/runtime-host.js +92 -0
- package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
- package/src/adapters/node/server-adapter-dependencies.js +18 -0
- package/src/adapters/node/server-adapter.d.ts +19 -42
- package/src/adapters/node/server-adapter.js +94 -139
- package/src/adapters/node/static-content-server.d.ts +1 -1
- package/src/adapters/node/static-content-server.js +1 -1
- package/src/adapters/node/static-preview-host.d.ts +55 -0
- package/src/adapters/node/static-preview-host.js +68 -0
- package/src/adapters/shared/application-adapter.d.ts +1 -1
- package/src/adapters/shared/define-api-handler.d.ts +1 -1
- package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
- package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
- package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
- package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
- package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
- package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
- package/src/adapters/shared/fs-server-response-factory.js +11 -27
- package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
- package/src/adapters/shared/fs-server-response-matcher.js +72 -46
- package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
- package/src/adapters/shared/hmr-html-response.d.ts +1 -1
- package/src/adapters/shared/hmr-html-response.js +4 -3
- package/src/adapters/shared/render-context.d.ts +5 -3
- package/src/adapters/shared/render-context.js +24 -1
- package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
- package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
- package/src/adapters/shared/runtime-host.d.ts +12 -0
- package/src/adapters/shared/server-adapter.d.ts +22 -11
- package/src/adapters/shared/server-adapter.js +183 -133
- package/src/adapters/shared/server-route-handler.d.ts +5 -5
- package/src/adapters/shared/server-route-handler.js +4 -4
- package/src/adapters/shared/server-static-builder.d.ts +8 -7
- package/src/adapters/shared/server-static-builder.js +6 -5
- package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
- package/src/adapters/shared/shared-hmr-manager.js +241 -0
- package/src/adapters/shared/static-preview-host.d.ts +10 -0
- package/src/build/README.md +57 -67
- package/src/build/browser-runtime-manifest.d.ts +31 -0
- package/src/build/browser-runtime-manifest.js +61 -0
- package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
- package/src/build/browser-runtime-plugin-helpers.js +14 -0
- package/src/build/browser-runtime-plugin.d.ts +78 -0
- package/src/build/browser-runtime-plugin.js +173 -0
- package/src/build/build-adapter.d.ts +384 -63
- package/src/build/build-adapter.js +129 -54
- package/src/build/build-manifest.d.ts +6 -0
- package/src/build/build-manifest.js +21 -2
- package/src/build/build-types.d.ts +2 -2
- package/src/build/rolldown-adapter-helpers.d.ts +58 -0
- package/src/build/rolldown-adapter-helpers.js +265 -0
- package/src/build/rolldown-build-adapter.d.ts +28 -0
- package/src/build/rolldown-build-adapter.js +65 -0
- package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
- package/src/build/rolldown-dev-build-adapter.js +166 -0
- package/src/build/rolldown-plugin-bridge.d.ts +59 -0
- package/src/build/rolldown-plugin-bridge.js +199 -0
- package/src/build/runtime-build-executor.d.ts +15 -7
- package/src/build/runtime-build-executor.js +8 -9
- package/src/build/runtime-build-output-normalizer.d.ts +3 -0
- package/src/build/runtime-build-output-normalizer.js +111 -0
- package/src/build/serialized-build-executor.d.ts +64 -0
- package/src/build/serialized-build-executor.js +63 -0
- package/src/build/server-side-css-shim-plugin.d.ts +41 -0
- package/src/build/server-side-css-shim-plugin.js +35 -0
- package/src/cache/index.d.ts +6 -0
- package/src/cache/index.js +6 -0
- package/src/cache/module-parse-cache.d.ts +65 -0
- package/src/cache/module-parse-cache.js +75 -0
- package/src/config/README.md +5 -2
- package/src/config/config-builder.d.ts +41 -13
- package/src/config/config-builder.js +62 -24
- package/src/declarations.d.ts +1 -1
- package/src/dev/host-runtime.d.ts +10 -0
- package/src/dev/host-runtime.js +24 -0
- package/src/dev/sc-server.d.ts +1 -1
- package/src/dev/sc-server.js +1 -1
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.js +50 -45
- package/src/eco/eco.types.d.ts +60 -8
- package/src/eco/eco.utils.d.ts +1 -40
- package/src/eco/eco.utils.js +5 -35
- package/src/eco/global-injector-map.d.ts +3 -3
- package/src/eco/global-injector-map.js +2 -2
- package/src/eco/lazy-injector-map.d.ts +2 -2
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -1
- package/src/hmr/client/hmr-runtime.js +9 -1
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
- package/src/hmr/strategies/default-hmr-strategy.js +1 -1
- package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
- package/src/hmr/strategies/js-hmr-strategy.js +5 -10
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +3 -2
- package/src/index.js +15 -4
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
- package/src/integrations/ghtml/ghtml-renderer.js +24 -29
- package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
- package/src/integrations/ghtml/ghtml.constants.js +4 -0
- package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
- package/src/integrations/ghtml/ghtml.plugin.js +3 -4
- package/src/plugins/README.md +1 -0
- package/src/plugins/alias-resolver-cache.d.ts +68 -0
- package/src/plugins/alias-resolver-cache.js +106 -0
- package/src/plugins/alias-resolver-plugin.d.ts +5 -1
- package/src/plugins/alias-resolver-plugin.js +19 -7
- package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
- package/src/plugins/eco-component-meta-plugin.js +43 -25
- package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
- package/src/plugins/foreign-jsx-override-plugin.js +41 -0
- package/src/plugins/integration-plugin.d.ts +136 -42
- package/src/plugins/integration-plugin.js +99 -31
- package/src/plugins/processor.d.ts +4 -2
- package/src/plugins/processor.js +8 -3
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +80 -318
- package/src/route-renderer/README.md +74 -78
- package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
- package/src/route-renderer/orchestration/component-render-context.js +147 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
- package/src/route-renderer/orchestration/integration-renderer.js +660 -258
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
- package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
- package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
- package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
- package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
- package/src/route-renderer/orchestration/render-output.utils.js +171 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
- package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
- package/src/route-renderer/orchestration/template-serialization.js +45 -0
- package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
- package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
- package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
- package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
- package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
- package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
- package/src/route-renderer/page-loading/page-module-loader.js +8 -5
- package/src/route-renderer/route-renderer.d.ts +31 -23
- package/src/route-renderer/route-renderer.js +17 -24
- package/src/router/README.md +76 -8
- package/src/router/client/navigation-coordinator.d.ts +20 -0
- package/src/router/client/navigation-coordinator.js +2 -2
- package/src/router/server/route-registry.d.ts +78 -0
- package/src/router/server/route-registry.js +262 -0
- package/src/services/README.md +1 -2
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
- package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
- package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
- package/src/services/assets/asset-processing-service/index.d.ts +6 -5
- package/src/services/assets/asset-processing-service/index.js +6 -5
- package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
- package/src/services/assets/asset-processing-service/page-package.js +80 -0
- package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
- package/src/services/assets/browser-bundle.service.d.ts +44 -3
- package/src/services/assets/browser-bundle.service.js +15 -7
- package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
- package/src/services/html/html-rewriter-provider.service.js +4 -1
- package/src/services/html/html-transformer.service.d.ts +22 -3
- package/src/services/html/html-transformer.service.js +101 -35
- package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
- package/src/services/invalidation/development-invalidation.service.js +1 -0
- package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
- package/src/services/module-loading/app-module-loader.service.js +0 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
- package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
- package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
- package/src/services/module-loading/host-module-loader-registry.js +15 -0
- package/src/services/module-loading/module-loading-types.d.ts +2 -0
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/page-module-import.service.d.ts +32 -8
- package/src/services/module-loading/page-module-import.service.js +83 -22
- package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
- package/src/services/module-loading/server-module-transpiler.service.js +5 -2
- package/src/services/module-loading/source-module-support.d.ts +5 -0
- package/src/services/module-loading/source-module-support.js +8 -0
- package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
- package/src/services/runtime-state/dev-graph.service.js +10 -10
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
- package/src/static-site-generator/static-site-generator.d.ts +23 -28
- package/src/static-site-generator/static-site-generator.js +119 -156
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
- package/src/types/internal-types.js +0 -0
- package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
- package/src/types/public-types.js +0 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/locals-utils.d.ts +1 -1
- package/src/utils/parse-cli-args.d.ts +4 -1
- package/src/utils/parse-cli-args.js +16 -1
- package/src/utils/resolve-work-dir.js +1 -1
- package/src/watchers/project-watcher.d.ts +4 -4
- package/src/watchers/project-watcher.js +35 -41
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +5 -5
- package/CHANGELOG.md +0 -31
- package/src/adapters/abstract/application-adapter.ts +0 -337
- package/src/adapters/abstract/router-adapter.ts +0 -30
- package/src/adapters/abstract/server-adapter.ts +0 -79
- package/src/adapters/bun/client-bridge.ts +0 -62
- package/src/adapters/bun/create-app.ts +0 -189
- package/src/adapters/bun/hmr-manager.ts +0 -409
- package/src/adapters/bun/index.ts +0 -2
- package/src/adapters/bun/server-adapter.ts +0 -499
- package/src/adapters/bun/server-lifecycle.d.ts +0 -63
- package/src/adapters/bun/server-lifecycle.js +0 -92
- package/src/adapters/bun/server-lifecycle.ts +0 -124
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
- package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
- package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -6
- package/src/adapters/node/index.js +0 -11
- package/src/adapters/node/index.ts +0 -16
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -381
- package/src/adapters/node/runtime-adapter.d.ts +0 -46
- package/src/adapters/node/runtime-adapter.js +0 -306
- package/src/adapters/node/runtime-adapter.ts +0 -439
- package/src/adapters/node/server-adapter.ts +0 -488
- package/src/adapters/node/static-content-server.ts +0 -239
- package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
- package/src/adapters/node/write-runtime-manifest.js +0 -12
- package/src/adapters/node/write-runtime-manifest.ts +0 -38
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/define-api-handler.ts +0 -66
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
- package/src/adapters/shared/hmr-html-response.ts +0 -52
- package/src/adapters/shared/render-context.ts +0 -120
- package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
- package/src/adapters/shared/runtime-bootstrap.js +0 -43
- package/src/adapters/shared/runtime-bootstrap.ts +0 -79
- package/src/adapters/shared/server-adapter.ts +0 -489
- package/src/adapters/shared/server-route-handler.ts +0 -153
- package/src/adapters/shared/server-static-builder.ts +0 -166
- package/src/build/build-adapter.ts +0 -361
- package/src/build/build-manifest.ts +0 -54
- package/src/build/build-types.ts +0 -83
- package/src/build/dev-build-coordinator.d.ts +0 -74
- package/src/build/dev-build-coordinator.js +0 -161
- package/src/build/dev-build-coordinator.ts +0 -221
- package/src/build/esbuild-build-adapter.d.ts +0 -72
- package/src/build/esbuild-build-adapter.js +0 -422
- package/src/build/esbuild-build-adapter.ts +0 -559
- package/src/build/runtime-build-executor.ts +0 -34
- package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
- package/src/build/runtime-specifier-alias-plugin.js +0 -31
- package/src/build/runtime-specifier-alias-plugin.ts +0 -58
- package/src/config/config-builder.ts +0 -706
- package/src/constants.ts +0 -54
- package/src/create-app.ts +0 -87
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/component-render-context.d.ts +0 -105
- package/src/eco/component-render-context.js +0 -87
- package/src/eco/component-render-context.ts +0 -224
- package/src/eco/eco.ts +0 -242
- package/src/eco/eco.types.ts +0 -221
- package/src/eco/eco.utils.ts +0 -89
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -2
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/hmr/client/hmr-runtime.ts +0 -152
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
- package/src/hmr/hmr.test.e2e.ts +0 -66
- package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -5
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -232
- package/src/plugins/alias-resolver-plugin.ts +0 -63
- package/src/plugins/eco-component-meta-plugin.ts +0 -481
- package/src/plugins/integration-plugin.ts +0 -226
- package/src/plugins/processor.ts +0 -240
- package/src/plugins/runtime-capability.ts +0 -14
- package/src/public-types.ts +0 -1317
- package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph/component-graph.js +0 -72
- package/src/route-renderer/component-graph/component-graph.ts +0 -159
- package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
- package/src/route-renderer/component-graph/component-marker.js +0 -46
- package/src/route-renderer/component-graph/component-marker.ts +0 -117
- package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
- package/src/route-renderer/component-graph/component-reference.js +0 -19
- package/src/route-renderer/component-graph/component-reference.ts +0 -29
- package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
- package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
- package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
- package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
- package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
- package/src/route-renderer/orchestration/render-execution.service.js +0 -121
- package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
- package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
- package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
- package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
- package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
- package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
- package/src/route-renderer/route-renderer.ts +0 -115
- package/src/router/client/link-intent.test.browser.ts +0 -51
- package/src/router/client/link-intent.ts +0 -92
- package/src/router/client/navigation-coordinator.ts +0 -433
- package/src/router/server/fs-router-scanner.d.ts +0 -41
- package/src/router/server/fs-router-scanner.js +0 -156
- package/src/router/server/fs-router-scanner.ts +0 -219
- package/src/router/server/fs-router.d.ts +0 -26
- package/src/router/server/fs-router.js +0 -100
- package/src/router/server/fs-router.ts +0 -122
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
- package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
- package/src/services/assets/asset-processing-service/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
- package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
- package/src/services/assets/browser-bundle.service.ts +0 -53
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
- package/src/services/html/html-rewriter-provider.service.ts +0 -103
- package/src/services/html/html-transformer.service.ts +0 -279
- package/src/services/invalidation/development-invalidation.service.ts +0 -261
- package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
- package/src/services/module-loading/page-module-import.service.ts +0 -200
- package/src/services/module-loading/server-loader.service.d.ts +0 -96
- package/src/services/module-loading/server-loader.service.js +0 -32
- package/src/services/module-loading/server-loader.service.ts +0 -130
- package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
- package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
- package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
- package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
- package/src/services/runtime-state/dev-graph.service.ts +0 -217
- package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
- package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
- package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
- package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
- package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
- package/src/services/validation/schema-validation-service.ts +0 -204
- package/src/services/validation/standard-schema.types.ts +0 -68
- package/src/static-site-generator/static-site-generator.ts +0 -462
- package/src/utils/css.d.ts +0 -1
- package/src/utils/css.js +0 -7
- package/src/utils/css.ts +0 -5
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html.ts +0 -1
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.ts +0 -83
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/resolve-work-dir.ts +0 -45
- package/src/utils/runtime.ts +0 -44
- package/src/utils/server-utils.module.ts +0 -67
- package/src/watchers/project-watcher.test-helpers.ts +0 -41
- package/src/watchers/project-watcher.ts +0 -363
- /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
- /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
- /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
- /package/src/{constants.js → config/constants.js} +0 -0
package/src/errors/index.d.ts
CHANGED
package/src/errors/index.js
CHANGED
|
@@ -33,7 +33,7 @@ import { getEcoNavigationRuntime } from "../../router/client/navigation-coordina
|
|
|
33
33
|
break;
|
|
34
34
|
case "layout-update": {
|
|
35
35
|
await waitForNavigationToSettle(navigationRuntime);
|
|
36
|
-
if (await navigationRuntime.reloadCurrentPage({ clearCache: true })) {
|
|
36
|
+
if (await navigationRuntime.reloadCurrentPage({ clearCache: true, moduleUrl: getActiveHmrModuleUrl() })) {
|
|
37
37
|
} else {
|
|
38
38
|
location.reload();
|
|
39
39
|
}
|
|
@@ -71,6 +71,14 @@ import { getEcoNavigationRuntime } from "../../router/client/navigation-coordina
|
|
|
71
71
|
console.error("[ecopages] Failed to apply HMR update:", e);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
+
function getActiveHmrModuleUrl() {
|
|
75
|
+
const pageModule = window.__ECO_PAGES__?.page?.module;
|
|
76
|
+
if (pageModule && pageModule.includes("/assets/_hmr/")) {
|
|
77
|
+
return pageModule.split("?")[0];
|
|
78
|
+
}
|
|
79
|
+
const handlerPaths = Object.keys(window.__ECO_PAGES__?.hmrHandlers ?? {});
|
|
80
|
+
return handlerPaths[handlerPaths.length - 1];
|
|
81
|
+
}
|
|
74
82
|
async function waitForNavigationToSettle(navigationRuntime) {
|
|
75
83
|
if (!navigationRuntime.hasPendingNavigationTransaction()) {
|
|
76
84
|
return;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientBridgeEvent } from '../public-types';
|
|
1
|
+
import type { ClientBridgeEvent } from '../types/public-types.js';
|
|
2
2
|
/**
|
|
3
3
|
* HMR Strategy Pattern
|
|
4
4
|
*
|
|
@@ -18,11 +18,13 @@ import type { ClientBridgeEvent } from '../public-types';
|
|
|
18
18
|
* async process(filePath: string): Promise<HmrAction> {
|
|
19
19
|
* return {
|
|
20
20
|
* type: 'broadcast',
|
|
21
|
-
* events: [{ type: 'update', path: filePath, timestamp: Date.now() }]
|
|
21
|
+
* events: [{ type: 'update', path: filePath, timestamp: Date.now() }],
|
|
22
22
|
* };
|
|
23
23
|
* }
|
|
24
24
|
* }
|
|
25
|
-
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
26
28
|
* Defines the category of an HMR strategy, which determines its execution priority.
|
|
27
29
|
* Strategies are evaluated in descending order: INTEGRATION → ASSET → SCRIPT → FALLBACK.
|
|
28
30
|
*
|
|
@@ -30,28 +32,29 @@ import type { ClientBridgeEvent } from '../public-types';
|
|
|
30
32
|
* The numeric values represent base priorities. Strategies can fine-tune their priority
|
|
31
33
|
* using the `priorityOffset` property.
|
|
32
34
|
*/
|
|
33
|
-
export declare
|
|
35
|
+
export declare const HmrStrategyType: {
|
|
34
36
|
/**
|
|
35
37
|
* Integration-specific strategies (React, Lit, etc.)
|
|
36
38
|
* Highest priority to allow framework-specific HMR handling.
|
|
37
39
|
*/
|
|
38
|
-
INTEGRATION
|
|
40
|
+
readonly INTEGRATION: 100;
|
|
39
41
|
/**
|
|
40
42
|
* Asset processing strategies (CSS, images, etc.)
|
|
41
43
|
* High priority for specialized asset handling.
|
|
42
44
|
*/
|
|
43
|
-
ASSET
|
|
45
|
+
readonly ASSET: 50;
|
|
44
46
|
/**
|
|
45
47
|
* Generic script bundling strategies (JS/TS)
|
|
46
48
|
* Medium priority for standard script processing.
|
|
47
49
|
*/
|
|
48
|
-
SCRIPT
|
|
50
|
+
readonly SCRIPT: 25;
|
|
49
51
|
/**
|
|
50
52
|
* Fallback strategy for unhandled file types.
|
|
51
53
|
* Lowest priority, triggers full page reload.
|
|
52
54
|
*/
|
|
53
|
-
FALLBACK
|
|
54
|
-
}
|
|
55
|
+
readonly FALLBACK: 0;
|
|
56
|
+
};
|
|
57
|
+
export type HmrStrategyType = (typeof HmrStrategyType)[keyof typeof HmrStrategyType];
|
|
55
58
|
/**
|
|
56
59
|
* Represents an action to be taken after processing a file change.
|
|
57
60
|
*/
|
|
@@ -62,7 +65,7 @@ export interface HmrAction {
|
|
|
62
65
|
type: 'broadcast' | 'none';
|
|
63
66
|
/**
|
|
64
67
|
* The HMR events to broadcast, if type is 'broadcast'.
|
|
65
|
-
*
|
|
68
|
+
* Multiple events may be broadcast in one action.
|
|
66
69
|
*/
|
|
67
70
|
events?: ClientBridgeEvent[];
|
|
68
71
|
}
|
|
@@ -74,8 +77,8 @@ export interface HmrAction {
|
|
|
74
77
|
* whether they match the changed file path.
|
|
75
78
|
*
|
|
76
79
|
* @remarks
|
|
77
|
-
* Strategies
|
|
78
|
-
* produce the same result when processed by the same strategy.
|
|
80
|
+
* Strategies are expected to be stateless and idempotent. The same file change
|
|
81
|
+
* should produce the same result when processed by the same strategy.
|
|
79
82
|
*
|
|
80
83
|
* @example
|
|
81
84
|
* ```typescript
|
|
@@ -120,7 +123,7 @@ export declare abstract class HmrStrategy {
|
|
|
120
123
|
* Determines if this strategy can handle the given file path.
|
|
121
124
|
*
|
|
122
125
|
* @param filePath - Absolute path to the changed file
|
|
123
|
-
* @returns
|
|
126
|
+
* @returns `true` when this strategy should process the file
|
|
124
127
|
*
|
|
125
128
|
* @example
|
|
126
129
|
* ```typescript
|
package/src/hmr/hmr-strategy.js
CHANGED
|
@@ -1,10 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
const HmrStrategyType = {
|
|
2
|
+
/**
|
|
3
|
+
* Integration-specific strategies (React, Lit, etc.)
|
|
4
|
+
* Highest priority to allow framework-specific HMR handling.
|
|
5
|
+
*/
|
|
6
|
+
INTEGRATION: 100,
|
|
7
|
+
/**
|
|
8
|
+
* Asset processing strategies (CSS, images, etc.)
|
|
9
|
+
* High priority for specialized asset handling.
|
|
10
|
+
*/
|
|
11
|
+
ASSET: 50,
|
|
12
|
+
/**
|
|
13
|
+
* Generic script bundling strategies (JS/TS)
|
|
14
|
+
* Medium priority for standard script processing.
|
|
15
|
+
*/
|
|
16
|
+
SCRIPT: 25,
|
|
17
|
+
/**
|
|
18
|
+
* Fallback strategy for unhandled file types.
|
|
19
|
+
* Lowest priority, triggers full page reload.
|
|
20
|
+
*/
|
|
21
|
+
FALLBACK: 0
|
|
22
|
+
};
|
|
8
23
|
class HmrStrategy {
|
|
9
24
|
/**
|
|
10
25
|
* Optional offset to fine-tune priority within the same category.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
import { HmrStrategy,
|
|
9
|
+
import { HmrStrategy, type HmrAction } from '../hmr-strategy.js';
|
|
10
10
|
/**
|
|
11
11
|
* Default fallback strategy for unhandled file types.
|
|
12
12
|
*
|
|
@@ -25,7 +25,7 @@ import { HmrStrategy, HmrStrategyType, type HmrAction } from '../hmr-strategy';
|
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
27
|
export declare class DefaultHmrStrategy extends HmrStrategy {
|
|
28
|
-
readonly type
|
|
28
|
+
readonly type: 0;
|
|
29
29
|
/**
|
|
30
30
|
* Matches all file paths.
|
|
31
31
|
*
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
-
import { HmrStrategy,
|
|
10
|
+
import { HmrStrategy, type HmrAction } from '../hmr-strategy.js';
|
|
11
11
|
import type { EcoBuildPlugin } from '../../build/build-types.js';
|
|
12
12
|
import type { BrowserBundleExecutor } from '../../services/assets/browser-bundle.service.js';
|
|
13
13
|
import type { EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
|
|
@@ -20,10 +20,6 @@ export interface JsHmrContext {
|
|
|
20
20
|
* Map of registered entrypoints to their output URLs.
|
|
21
21
|
*/
|
|
22
22
|
getWatchedFiles(): Map<string, string>;
|
|
23
|
-
/**
|
|
24
|
-
* Map of bare specifiers to vendor URLs for import resolution.
|
|
25
|
-
*/
|
|
26
|
-
getSpecifierMap(): Map<string, string>;
|
|
27
23
|
getEntrypointDependencyGraph(): EntrypointDependencyGraph;
|
|
28
24
|
/**
|
|
29
25
|
* Directory where HMR bundles are written.
|
|
@@ -85,7 +81,6 @@ export interface JsHmrContext {
|
|
|
85
81
|
* ```typescript
|
|
86
82
|
* const context = {
|
|
87
83
|
* getWatchedFiles: () => watchedFilesMap,
|
|
88
|
-
* getSpecifierMap: () => specifierMap,
|
|
89
84
|
* getDistDir: () => '/path/to/dist/_hmr',
|
|
90
85
|
* getPlugins: () => [],
|
|
91
86
|
* getSrcDir: () => '/path/to/src'
|
|
@@ -94,7 +89,7 @@ export interface JsHmrContext {
|
|
|
94
89
|
* ```
|
|
95
90
|
*/
|
|
96
91
|
export declare class JsHmrStrategy extends HmrStrategy {
|
|
97
|
-
readonly type
|
|
92
|
+
readonly type: 25;
|
|
98
93
|
private context;
|
|
99
94
|
constructor(context: JsHmrContext);
|
|
100
95
|
/**
|
|
@@ -116,13 +111,13 @@ export declare class JsHmrStrategy extends HmrStrategy {
|
|
|
116
111
|
* @remarks
|
|
117
112
|
* If runtime-specific dependency graph hooks are unavailable, this strategy
|
|
118
113
|
* falls back to rebuilding all watched entrypoints.
|
|
119
|
-
* When multiple entrypoints are impacted they are bundled in a single
|
|
114
|
+
* When multiple entrypoints are impacted they are bundled in a single
|
|
120
115
|
* invocation to share AST parsing and chunk deduplication.
|
|
121
116
|
* @returns Action to broadcast update events
|
|
122
117
|
*/
|
|
123
118
|
process(filePath: string): Promise<HmrAction>;
|
|
124
119
|
/**
|
|
125
|
-
* Bundles one or more entrypoints in a single
|
|
120
|
+
* Bundles one or more entrypoints in a single build invocation.
|
|
126
121
|
* Uses the source directory as the output base so that the directory structure
|
|
127
122
|
* is preserved under the HMR dist folder.
|
|
128
123
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
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";
|
|
3
|
+
import { HmrStrategy, HmrStrategyType } from "../hmr-strategy.js";
|
|
4
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
5
5
|
class JsHmrStrategy extends HmrStrategy {
|
|
6
6
|
type = HmrStrategyType.SCRIPT;
|
|
7
7
|
context;
|
|
@@ -23,8 +23,7 @@ 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
|
|
27
|
-
const isIntegrationTemplate = isRouteTemplate && this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
|
|
26
|
+
const isIntegrationTemplate = this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
|
|
28
27
|
if (watchedFiles.size === 0) {
|
|
29
28
|
return false;
|
|
30
29
|
}
|
|
@@ -37,10 +36,6 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
37
36
|
if (watchedFiles.has(filePath)) {
|
|
38
37
|
return true;
|
|
39
38
|
}
|
|
40
|
-
const entrypointDependencyGraph = this.context.getEntrypointDependencyGraph();
|
|
41
|
-
if (entrypointDependencyGraph.supportsSelectiveInvalidation()) {
|
|
42
|
-
return entrypointDependencyGraph.getDependencyEntrypoints(filePath).size > 0;
|
|
43
|
-
}
|
|
44
39
|
return true;
|
|
45
40
|
}
|
|
46
41
|
/**
|
|
@@ -51,7 +46,7 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
51
46
|
* @remarks
|
|
52
47
|
* If runtime-specific dependency graph hooks are unavailable, this strategy
|
|
53
48
|
* falls back to rebuilding all watched entrypoints.
|
|
54
|
-
* When multiple entrypoints are impacted they are bundled in a single
|
|
49
|
+
* When multiple entrypoints are impacted they are bundled in a single
|
|
55
50
|
* invocation to share AST parsing and chunk deduplication.
|
|
56
51
|
* @returns Action to broadcast update events
|
|
57
52
|
*/
|
|
@@ -119,7 +114,7 @@ class JsHmrStrategy extends HmrStrategy {
|
|
|
119
114
|
return { type: "none" };
|
|
120
115
|
}
|
|
121
116
|
/**
|
|
122
|
-
* Bundles one or more entrypoints in a single
|
|
117
|
+
* Bundles one or more entrypoints in a single build invocation.
|
|
123
118
|
* Uses the source directory as the output base so that the directory structure
|
|
124
119
|
* is preserved under the HMR dist folder.
|
|
125
120
|
*/
|
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 { EcopagesApp, createApp, type EcopagesAppOptions } from './create-app.js';
|
|
5
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 { EcopagesApp, createApp } from "./create-app.js";
|
|
3
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,7 +2,7 @@
|
|
|
2
2
|
* This module contains the ghtml renderer
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
|
-
import type { EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../public-types.js';
|
|
5
|
+
import type { ComponentRenderInput, ComponentRenderResult, EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../types/public-types.js';
|
|
6
6
|
import { IntegrationRenderer, type RenderToResponseContext } from '../../route-renderer/orchestration/integration-renderer.js';
|
|
7
7
|
/**
|
|
8
8
|
* A renderer for the ghtml integration.
|
|
@@ -10,6 +10,7 @@ import { IntegrationRenderer, type RenderToResponseContext } from '../../route-r
|
|
|
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,9 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
IntegrationRenderer
|
|
3
3
|
} from "../../route-renderer/orchestration/integration-renderer.js";
|
|
4
|
-
import { GHTML_PLUGIN_NAME } from "./ghtml.
|
|
4
|
+
import { GHTML_PLUGIN_NAME } from "./ghtml.constants.js";
|
|
5
5
|
class GhtmlRenderer extends IntegrationRenderer {
|
|
6
6
|
name = GHTML_PLUGIN_NAME;
|
|
7
|
+
async renderComponent(input) {
|
|
8
|
+
return this.renderStringComponentWithQueuedForeignSubtrees(
|
|
9
|
+
input,
|
|
10
|
+
input.component
|
|
11
|
+
);
|
|
12
|
+
}
|
|
7
13
|
async render({
|
|
8
14
|
params,
|
|
9
15
|
query,
|
|
@@ -16,42 +22,31 @@ class GhtmlRenderer extends IntegrationRenderer {
|
|
|
16
22
|
HtmlTemplate
|
|
17
23
|
}) {
|
|
18
24
|
try {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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,
|
|
22
35
|
metadata,
|
|
23
|
-
|
|
24
|
-
pageProps: props || {}
|
|
36
|
+
pageProps: props ?? {}
|
|
25
37
|
});
|
|
26
|
-
return this.DOC_TYPE + body;
|
|
27
38
|
} catch (error) {
|
|
28
39
|
throw this.createRenderError("Error rendering page", error);
|
|
29
40
|
}
|
|
30
41
|
}
|
|
31
42
|
async renderToResponse(view, props, ctx) {
|
|
32
43
|
try {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
} else {
|
|
40
|
-
const children = Layout ? await Layout({ children: pageContent }) : pageContent;
|
|
41
|
-
const HtmlTemplate = await this.getHtmlTemplate();
|
|
42
|
-
const metadata = view.metadata ? await view.metadata({
|
|
43
|
-
params: {},
|
|
44
|
-
query: {},
|
|
45
|
-
props,
|
|
46
|
-
appConfig: this.appConfig
|
|
47
|
-
}) : this.appConfig.defaultMetadata;
|
|
48
|
-
body = this.DOC_TYPE + await HtmlTemplate({
|
|
49
|
-
metadata,
|
|
50
|
-
children,
|
|
51
|
-
pageProps: props
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
return this.createHtmlResponse(body, ctx);
|
|
44
|
+
return await this.renderViewWithDocumentShell({
|
|
45
|
+
view,
|
|
46
|
+
props,
|
|
47
|
+
ctx,
|
|
48
|
+
layout: view.config?.layout
|
|
49
|
+
});
|
|
55
50
|
} catch (error) {
|
|
56
51
|
throw this.createRenderError("Error rendering view", error);
|
|
57
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
|
};
|
package/src/plugins/README.md
CHANGED
|
@@ -18,6 +18,7 @@ These contracts are responsible for:
|
|
|
18
18
|
- `integration-plugin.ts`: framework-semantics contract for render integrations
|
|
19
19
|
- `processor.ts`: asset-transformation contract for processors
|
|
20
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
|
|
21
22
|
- `eco-component-meta-plugin.ts`: shared metadata transform used by core loading/build paths
|
|
22
23
|
|
|
23
24
|
## Ownership Rules
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-plugin cache for `@/...` alias resolution.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* The `ecopages-alias-resolver` plugin resolves project aliases like
|
|
6
|
+
* `@/components/Button` to concrete file paths under the app's `srcDir`.
|
|
7
|
+
* Each resolution can trigger up to 22 `existsSync` calls and (when
|
|
8
|
+
* the resolved path is a barrel) a `readFileSync` to detect
|
|
9
|
+
* `export * from './...'` forwarding.
|
|
10
|
+
*
|
|
11
|
+
* This cache memoizes the result keyed by `(srcDir, specifier)`. It is
|
|
12
|
+
* process-local and not currently invalidated by the file watcher —
|
|
13
|
+
* `srcDir` contents are assumed to be stable for the lifetime of the
|
|
14
|
+
* process.
|
|
15
|
+
*/
|
|
16
|
+
export declare class AliasResolverCache {
|
|
17
|
+
private readonly entries;
|
|
18
|
+
private readonly maxEntries;
|
|
19
|
+
private hits;
|
|
20
|
+
private misses;
|
|
21
|
+
constructor(maxEntries?: number);
|
|
22
|
+
/**
|
|
23
|
+
* Look up a previously-computed resolution for `(srcDir, specifier)`.
|
|
24
|
+
*
|
|
25
|
+
* Returns `{ hit: true, resolved }` on cache hit (resolved may be
|
|
26
|
+
* `undefined` for an unresolvable specifier), or `{ hit: false }` on
|
|
27
|
+
* miss. The caller is responsible for re-running the resolver and
|
|
28
|
+
* calling `set` to store the new entry.
|
|
29
|
+
*/
|
|
30
|
+
get(srcDir: string, specifier: string): {
|
|
31
|
+
hit: true;
|
|
32
|
+
resolved: string | undefined;
|
|
33
|
+
} | {
|
|
34
|
+
hit: false;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Store a resolution result.
|
|
38
|
+
*
|
|
39
|
+
* Pass `undefined` for `resolved` to memoize the negative case
|
|
40
|
+
* (specifier did not resolve) and avoid repeating the FS walk on
|
|
41
|
+
* every `@/...` import.
|
|
42
|
+
*/
|
|
43
|
+
set(srcDir: string, specifier: string, resolved: string | undefined): void;
|
|
44
|
+
/**
|
|
45
|
+
* Drop all entries whose `srcDir` is under `rootDir`. Use this from
|
|
46
|
+
* the file watcher when files are added or removed under the app's
|
|
47
|
+
* source tree.
|
|
48
|
+
*
|
|
49
|
+
* Path comparison is path-aware (handles both POSIX `/` and
|
|
50
|
+
* Windows `\` separators) via `path.relative` so cached entries
|
|
51
|
+
* normalized on one platform still match the watcher's `rootDir`
|
|
52
|
+
* on another. Without this, a Windows build that sees
|
|
53
|
+
* `entry.srcDir === 'C:\app\src'` would miss
|
|
54
|
+
* `entry.srcDir.startsWith('C:/app/src/')` and leave stale entries.
|
|
55
|
+
*/
|
|
56
|
+
invalidateUnder(rootDir: string): number;
|
|
57
|
+
/** Clear all entries. */
|
|
58
|
+
clear(): void;
|
|
59
|
+
/** Current cache size. */
|
|
60
|
+
get size(): number;
|
|
61
|
+
/** Hit/miss counters for observability. */
|
|
62
|
+
stats(): {
|
|
63
|
+
hits: number;
|
|
64
|
+
misses: number;
|
|
65
|
+
size: number;
|
|
66
|
+
hitRate: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
const DEFAULT_MAX_ENTRIES = 2e3;
|
|
3
|
+
class AliasResolverCache {
|
|
4
|
+
entries = /* @__PURE__ */ new Map();
|
|
5
|
+
maxEntries;
|
|
6
|
+
hits = 0;
|
|
7
|
+
misses = 0;
|
|
8
|
+
constructor(maxEntries = DEFAULT_MAX_ENTRIES) {
|
|
9
|
+
if (maxEntries <= 0) {
|
|
10
|
+
throw new Error(`AliasResolverCache: maxEntries must be > 0, got ${maxEntries}`);
|
|
11
|
+
}
|
|
12
|
+
this.maxEntries = maxEntries;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Look up a previously-computed resolution for `(srcDir, specifier)`.
|
|
16
|
+
*
|
|
17
|
+
* Returns `{ hit: true, resolved }` on cache hit (resolved may be
|
|
18
|
+
* `undefined` for an unresolvable specifier), or `{ hit: false }` on
|
|
19
|
+
* miss. The caller is responsible for re-running the resolver and
|
|
20
|
+
* calling `set` to store the new entry.
|
|
21
|
+
*/
|
|
22
|
+
get(srcDir, specifier) {
|
|
23
|
+
const key = makeKey(srcDir, specifier);
|
|
24
|
+
const existing = this.entries.get(key);
|
|
25
|
+
if (existing) {
|
|
26
|
+
this.hits += 1;
|
|
27
|
+
this.entries.delete(key);
|
|
28
|
+
this.entries.set(key, existing);
|
|
29
|
+
return { hit: true, resolved: existing.resolved };
|
|
30
|
+
}
|
|
31
|
+
this.misses += 1;
|
|
32
|
+
return { hit: false };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Store a resolution result.
|
|
36
|
+
*
|
|
37
|
+
* Pass `undefined` for `resolved` to memoize the negative case
|
|
38
|
+
* (specifier did not resolve) and avoid repeating the FS walk on
|
|
39
|
+
* every `@/...` import.
|
|
40
|
+
*/
|
|
41
|
+
set(srcDir, specifier, resolved) {
|
|
42
|
+
const key = makeKey(srcDir, specifier);
|
|
43
|
+
this.entries.set(key, { srcDir, resolved });
|
|
44
|
+
if (this.entries.size > this.maxEntries) {
|
|
45
|
+
const oldestKey = this.entries.keys().next().value;
|
|
46
|
+
if (oldestKey !== void 0) {
|
|
47
|
+
this.entries.delete(oldestKey);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Drop all entries whose `srcDir` is under `rootDir`. Use this from
|
|
53
|
+
* the file watcher when files are added or removed under the app's
|
|
54
|
+
* source tree.
|
|
55
|
+
*
|
|
56
|
+
* Path comparison is path-aware (handles both POSIX `/` and
|
|
57
|
+
* Windows `\` separators) via `path.relative` so cached entries
|
|
58
|
+
* normalized on one platform still match the watcher's `rootDir`
|
|
59
|
+
* on another. Without this, a Windows build that sees
|
|
60
|
+
* `entry.srcDir === 'C:\app\src'` would miss
|
|
61
|
+
* `entry.srcDir.startsWith('C:/app/src/')` and leave stale entries.
|
|
62
|
+
*/
|
|
63
|
+
invalidateUnder(rootDir) {
|
|
64
|
+
const normalizedRoot = path.resolve(rootDir);
|
|
65
|
+
let removed = 0;
|
|
66
|
+
for (const [key, entry] of this.entries) {
|
|
67
|
+
if (isUnderDirectory(path.resolve(entry.srcDir), normalizedRoot)) {
|
|
68
|
+
this.entries.delete(key);
|
|
69
|
+
removed += 1;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return removed;
|
|
73
|
+
}
|
|
74
|
+
/** Clear all entries. */
|
|
75
|
+
clear() {
|
|
76
|
+
this.entries.clear();
|
|
77
|
+
this.hits = 0;
|
|
78
|
+
this.misses = 0;
|
|
79
|
+
}
|
|
80
|
+
/** Current cache size. */
|
|
81
|
+
get size() {
|
|
82
|
+
return this.entries.size;
|
|
83
|
+
}
|
|
84
|
+
/** Hit/miss counters for observability. */
|
|
85
|
+
stats() {
|
|
86
|
+
const total = this.hits + this.misses;
|
|
87
|
+
return {
|
|
88
|
+
hits: this.hits,
|
|
89
|
+
misses: this.misses,
|
|
90
|
+
size: this.entries.size,
|
|
91
|
+
hitRate: total === 0 ? 0 : this.hits / total
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function makeKey(srcDir, specifier) {
|
|
96
|
+
return `${srcDir} ${specifier}`;
|
|
97
|
+
}
|
|
98
|
+
function isUnderDirectory(candidate, parent) {
|
|
99
|
+
if (candidate === parent) return true;
|
|
100
|
+
const rel = path.relative(parent, candidate);
|
|
101
|
+
if (!rel || rel.startsWith("..") || path.isAbsolute(rel)) return false;
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
export {
|
|
105
|
+
AliasResolverCache
|
|
106
|
+
};
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
2
|
-
|
|
2
|
+
import { AliasResolverCache } from './alias-resolver-cache.js';
|
|
3
|
+
export declare function resolveAppSourceAliasPath(srcDir: string, specifier: string): string | undefined;
|
|
4
|
+
export declare function createAliasResolverPlugin(srcDir: string, options?: {
|
|
5
|
+
cache?: AliasResolverCache;
|
|
6
|
+
}): EcoBuildPlugin;
|