@ecopages/core 0.2.0-beta.8 → 0.2.0-rc.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 +42 -13
- package/package.json +361 -58
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +57 -5
- package/src/adapters/abstract/application-adapter.js +261 -203
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +147 -0
- package/src/adapters/abstract/server-adapter.d.ts +13 -2
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +2 -50
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -57
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.d.ts +4 -6
- package/src/adapters/bun/create-app.js +169 -154
- package/src/adapters/bun/hmr-manager.d.ts +2 -3
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -8
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +34 -53
- package/src/adapters/bun/server-adapter.js +557 -637
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- package/src/adapters/bun/static-preview-host.js +43 -41
- package/src/adapters/create-app.d.ts +1 -12
- package/src/adapters/create-app.js +11 -72
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +2 -8
- package/src/adapters/node/create-app.d.ts +4 -3
- package/src/adapters/node/create-app.js +123 -98
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.js +62 -64
- package/src/adapters/node/node-hmr-manager.d.ts +2 -3
- package/src/adapters/node/node-hmr-manager.js +58 -48
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -17
- package/src/adapters/node/server-adapter.d.ts +28 -8
- package/src/adapters/node/server-adapter.js +349 -302
- package/src/adapters/node/static-content-server.js +172 -186
- package/src/adapters/node/static-preview-host.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +88 -64
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +132 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/http/api-response.js +79 -0
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +26 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +49 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/http/fs-server-response-matcher.js +260 -0
- package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
- package/src/adapters/shared/http/run-middleware-chain.js +17 -0
- package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
- package/src/adapters/shared/runtime/application-adapter.js +75 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +226 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/runtime/render-context.js +99 -0
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -2
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
- package/src/adapters/shared/runtime/server-adapter.js +301 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/runtime/server-route-handler.js +77 -0
- package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +26 -31
- package/src/adapters/shared/runtime/server-static-builder.js +172 -0
- package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
- package/src/adapters/shared/{node-http-websocket-upgrades.d.ts → ws/node-http-websocket-upgrades.d.ts} +1 -1
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
- package/src/build/README.md +165 -45
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +145 -0
- package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +4 -0
- package/src/build/browser/browser-runtime-manifest.js +65 -0
- package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +3 -5
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +12 -13
- package/src/build/browser/browser-runtime-plugin.js +218 -0
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +55 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +4 -0
- package/src/build/build-adapter.d.ts +29 -340
- package/src/build/build-adapter.js +258 -260
- package/src/build/{build-input-fingerprint.d.ts → cache/build-input-fingerprint.d.ts} +3 -3
- package/src/build/cache/build-input-fingerprint.js +33 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +4 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +71 -0
- package/src/build/{pages-unified-graph-build.d.ts → cache/pages-unified-graph-build.d.ts} +1 -1
- package/src/build/cache/pages-unified-graph-build.js +199 -0
- package/src/build/cache/production-build-cache.d.ts +21 -0
- package/src/build/cache/production-build-cache.js +56 -0
- package/src/build/{server-entry-build-cache.d.ts → cache/server-entry-build-cache.d.ts} +3 -4
- package/src/build/cache/server-entry-build-cache.js +153 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/contracts/build-manifest.js +64 -0
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/contracts/content-virtual-modules.d.ts +12 -0
- package/src/build/contracts/content-virtual-modules.js +29 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
- package/src/build/rolldown/rolldown-adapter-helpers.js +463 -0
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/rolldown/rolldown-build-adapter.js +57 -0
- package/src/build/{rolldown-build-invocation-metrics.d.ts → rolldown/rolldown-build-invocation-metrics.d.ts} +1 -1
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
- package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
- package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
- package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
- package/src/build/runtime/build-profile-options.d.ts +7 -0
- package/src/build/runtime/build-profile-options.js +37 -0
- package/src/build/runtime/build-request-identity.d.ts +17 -0
- package/src/build/runtime/build-request-identity.js +79 -0
- package/src/build/runtime/build-request-policy.d.ts +58 -0
- package/src/build/runtime/build-request-policy.js +84 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +75 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +40 -0
- package/src/build/{parallel-build-executor.d.ts → runtime/parallel-build-executor.d.ts} +1 -1
- package/src/build/runtime/parallel-build-executor.js +60 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- package/src/build/runtime/serialized-build-executor.js +79 -0
- package/src/cache/index.d.ts +2 -1
- package/src/cache/index.js +7 -6
- package/src/cache/module-parse-cache.d.ts +5 -0
- package/src/cache/module-parse-cache.js +122 -67
- package/src/cache/module-transform-profiler.d.ts +8 -0
- package/src/cache/module-transform-profiler.js +8 -0
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +49 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +3 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +16 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +90 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +33 -0
- package/src/client/scroll.test.browser.d.ts +1 -0
- package/src/client/scroll.test.browser.js +31 -0
- package/src/client/view-transitions.d.ts +32 -0
- package/src/client/view-transitions.js +120 -0
- package/src/client/view-transitions.test.browser.d.ts +1 -0
- package/src/client/view-transitions.test.browser.js +56 -0
- package/src/config/README.md +1 -1
- package/src/config/config-builder.d.ts +42 -12
- package/src/config/config-builder.js +645 -600
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +44 -23
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +10 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +8 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +10 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +25 -23
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +3 -0
- package/src/dev/sc-server.js +106 -103
- package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
- package/src/dev/transform-server/dev-transform-bundler.js +79 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.js +127 -0
- package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
- package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
- package/src/dev/transform-server/dev-transform-server.js +191 -0
- package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-url.js +58 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +166 -0
- package/src/dev/transform-server/index.d.ts +6 -0
- package/src/dev/transform-server/index.js +4 -0
- package/src/dev/transform-server/types.d.ts +15 -0
- package/src/dev/transform-server/types.js +1 -0
- package/src/dev-toolbar/README.md +52 -0
- package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
- package/src/dev-toolbar/define-dev-tool.js +9 -0
- package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
- package/src/dev-toolbar/dev-toolbar-config.js +19 -0
- package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
- package/src/dev-toolbar/dev-toolbar-host.js +117 -0
- package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
- package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
- package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
- package/src/dev-toolbar/dev-toolbar-package.js +78 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
- package/src/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +39 -0
- package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
- package/src/diagnostics/request-pipeline-metrics.js +121 -0
- package/src/diagnostics/startup-trace.d.ts +81 -0
- package/src/diagnostics/startup-trace.js +281 -0
- package/src/eco/README.md +17 -0
- package/src/eco/component-identity.d.ts +13 -0
- package/src/eco/component-identity.js +18 -0
- package/src/eco/eco-declared-component.d.ts +15 -0
- package/src/eco/eco-declared-component.js +23 -0
- package/src/eco/eco.browser.js +63 -70
- package/src/eco/eco.js +163 -97
- package/src/eco/eco.types.d.ts +47 -8
- package/src/eco/eco.types.js +5 -0
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -10
- package/src/eco/global-injector-map.js +55 -41
- package/src/eco/lazy-injector-map.js +90 -60
- package/src/eco/module-dependencies.js +52 -44
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +69 -0
- package/src/env.d.ts +2 -0
- package/src/errors/http-error.d.ts +8 -0
- package/src/errors/http-error.js +66 -49
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -6
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +21 -0
- package/src/hmr/client/hmr-runtime.js +119 -110
- package/src/hmr/client/module-update.d.ts +13 -0
- package/src/hmr/client/module-update.js +39 -0
- package/src/hmr/hmr-asset-paths.d.ts +14 -0
- package/src/hmr/hmr-asset-paths.js +22 -0
- package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
- package/src/hmr/hmr-entrypoint-output.js +34 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +14 -0
- package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
- package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
- package/src/hmr/hmr-runtime-paths.d.ts +10 -0
- package/src/hmr/hmr-runtime-paths.js +13 -0
- package/src/hmr/hmr-strategy.d.ts +9 -0
- package/src/hmr/hmr-strategy.js +113 -42
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
- package/src/hmr/strategies/js-hmr-strategy.js +107 -167
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
- package/src/index.browser.d.ts +1 -0
- package/src/index.browser.js +2 -4
- package/src/index.d.ts +4 -1
- package/src/index.js +7 -21
- package/src/islands/README.md +25 -0
- package/src/islands/island-host.d.ts +37 -0
- package/src/islands/island-host.js +55 -0
- package/src/plugins/README.md +2 -1
- package/src/plugins/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +35 -62
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +20 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
- package/src/plugins/eco-component-meta-plugin.js +123 -162
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +49 -37
- package/src/plugins/integration-plugin.d.ts +24 -6
- package/src/plugins/integration-plugin.js +212 -195
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +21 -0
- package/src/plugins/package-specifier.d.ts +12 -0
- package/src/plugins/package-specifier.js +33 -0
- package/src/plugins/processor.d.ts +66 -12
- package/src/plugins/processor.js +168 -137
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.d.ts +32 -1
- package/src/plugins/source-transform.js +112 -60
- package/src/plugins/tsconfig-import-resolver.d.ts +37 -0
- package/src/plugins/tsconfig-import-resolver.js +262 -0
- package/src/route-renderer/GRAPH.md +24 -30
- package/src/route-renderer/README.md +52 -32
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
- package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
- package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +20 -7
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +195 -0
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +37 -153
- package/src/route-renderer/orchestration/integration-renderer.js +803 -1008
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +248 -0
- package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
- package/src/{integrations/ghtml/ghtml-renderer.d.ts → route-renderer/orchestration/string-markup-renderer.d.ts} +8 -10
- package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
- package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
- package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
- package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
- package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
- package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
- package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
- package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
- package/src/route-renderer/page-loading/page-module-loader.js +136 -124
- package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
- package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/README.md +31 -0
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +56 -30
- package/src/router/client/link-intent.test.browser.js +50 -39
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +122 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +82 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +235 -211
- package/src/router/client/navigation-lifecycle.d.ts +55 -0
- package/src/router/client/navigation-lifecycle.js +50 -0
- package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
- package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
- package/src/router/server/route-registry.js +237 -242
- package/src/services/README.md +5 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +12 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +335 -268
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -58
- package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +8 -6
- package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
- package/src/services/assets/asset-processing-service/page-package.js +70 -72
- package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
- package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
- 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 +8 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
- package/src/services/assets/browser-bundle.service.d.ts +27 -30
- package/src/services/assets/browser-bundle.service.js +54 -46
- package/src/services/assets/browser-runtime-asset-generation.d.ts +17 -0
- package/src/services/assets/browser-runtime-asset-generation.js +28 -0
- package/src/services/cache/cache.types.d.ts +4 -2
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
- package/src/services/cache/html-page-cache-dependency-index.js +88 -0
- package/src/services/cache/index.d.ts +2 -0
- package/src/services/cache/index.js +8 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.d.ts +31 -1
- package/src/services/cache/page-cache-service.js +237 -150
- package/src/services/cache/page-request-cache-coordinator.service.d.ts +2 -1
- package/src/services/cache/page-request-cache-coordinator.service.js +112 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.d.ts +15 -1
- package/src/services/invalidation/development-invalidation.service.js +241 -204
- package/src/services/module-loading/README.md +9 -6
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +104 -106
- package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
- package/src/services/module-loading/collection-server-module-build.service.js +83 -0
- package/src/services/module-loading/host-module-loader-registry.js +6 -11
- package/src/services/module-loading/module-loading-types.js +1 -0
- package/src/services/module-loading/page-module-import.service.d.ts +7 -12
- package/src/services/module-loading/page-module-import.service.js +232 -206
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +2 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +59 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.d.ts +10 -0
- package/src/services/module-loading/route-module-build-cache.store.js +213 -196
- package/src/services/module-loading/route-module-build-manifest.d.ts +10 -14
- package/src/services/module-loading/route-module-build-manifest.js +54 -118
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +2 -2
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -109
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
- package/src/services/module-loading/server-module-transpiler.service.js +65 -62
- package/src/services/module-loading/source-module-support.js +15 -7
- package/src/services/runtime-state/dev-graph.service.js +165 -157
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
- package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +156 -95
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.d.ts +7 -0
- package/src/services/validation/validate-standard-schema.js +14 -0
- package/src/static-site-generator/README.md +10 -2
- package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +36 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +42 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +2 -2
- package/src/static-site-generator/static-build-invalidation.js +33 -74
- package/src/static-site-generator/static-export-context.d.ts +9 -1
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.d.ts +27 -6
- package/src/static-site-generator/static-site-generator.js +528 -389
- package/src/types/internal-types.d.ts +55 -17
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +236 -95
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +30 -0
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +22 -5
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.d.ts +1 -0
- package/src/utils/parse-cli-args.js +73 -62
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +42 -0
- package/src/utils/path-utils.module.js +8 -11
- package/src/utils/resolve-entry-file.js +70 -38
- package/src/utils/resolve-work-dir.js +23 -27
- package/src/utils/runtime.js +24 -33
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +60 -53
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +54 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +17 -0
- package/src/watchers/project-watcher.d.ts +21 -6
- package/src/watchers/project-watcher.js +402 -277
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/api-response.js +0 -96
- package/src/adapters/shared/application-adapter.js +0 -90
- package/src/adapters/shared/bun-user-websocket-lifecycle.js +0 -102
- package/src/adapters/shared/copy-runtime-public-dir.js +0 -24
- package/src/adapters/shared/define-api-handler.d.ts +0 -25
- package/src/adapters/shared/define-api-handler.js +0 -15
- package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
- package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
- package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
- package/src/adapters/shared/fs-server-response-factory.js +0 -81
- package/src/adapters/shared/fs-server-response-matcher.js +0 -186
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/hmr-html-response.js +0 -33
- package/src/adapters/shared/node-http-websocket-upgrades.js +0 -125
- package/src/adapters/shared/render-context.js +0 -93
- package/src/adapters/shared/runtime-app-bootstrap.js +0 -41
- package/src/adapters/shared/runtime-host.js +0 -0
- package/src/adapters/shared/server-adapter.js +0 -436
- package/src/adapters/shared/server-route-handler.js +0 -111
- package/src/adapters/shared/server-static-builder.js +0 -202
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -61
- package/src/adapters/shared/shared-hmr-manager.js +0 -273
- package/src/adapters/shared/static-preview-host.js +0 -0
- package/src/adapters/shared/websocket-lifecycle.d.ts +0 -3
- package/src/adapters/shared/websocket-lifecycle.js +0 -19
- package/src/build/browser-runtime-manifest.js +0 -61
- package/src/build/browser-runtime-plugin-helpers.js +0 -14
- package/src/build/browser-runtime-plugin.js +0 -173
- package/src/build/build-input-fingerprint.js +0 -31
- package/src/build/build-manifest.d.ts +0 -33
- package/src/build/build-manifest.js +0 -49
- package/src/build/build-types.js +0 -0
- package/src/build/jsx-ownership-plugins.d.ts +0 -10
- package/src/build/jsx-ownership-plugins.js +0 -17
- package/src/build/pages-unified-graph-build.js +0 -208
- package/src/build/parallel-build-executor.js +0 -52
- package/src/build/rolldown-adapter-helpers.js +0 -309
- package/src/build/rolldown-build-adapter.js +0 -67
- package/src/build/rolldown-build-invocation-metrics.js +0 -43
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -182
- package/src/build/rolldown-plugin-bridge.js +0 -199
- package/src/build/runtime-build-executor.d.ts +0 -15
- package/src/build/runtime-build-executor.js +0 -43
- package/src/build/runtime-build-output-normalizer.js +0 -203
- package/src/build/serialized-build-executor.js +0 -63
- package/src/build/server-entry-build-cache.js +0 -169
- package/src/build/server-side-css-shim-plugin.js +0 -35
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -54
- package/src/integrations/ghtml/ghtml-renderer.js +0 -57
- package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
- package/src/integrations/ghtml/ghtml.constants.js +0 -4
- package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
- package/src/integrations/ghtml/ghtml.plugin.js +0 -20
- package/src/route-renderer/orchestration/component-render-context.js +0 -147
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
- package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -231
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
- package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
- package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
- package/src/route-renderer/orchestration/render-output.utils.js +0 -175
- package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- package/src/utils/html.d.ts +0 -1
- package/src/utils/html.js +0 -4
- /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
- /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMR strategy for server-rendered include templates and explicit server views.
|
|
3
|
+
*
|
|
4
|
+
* These files affect SSR output (head, layout shell, explicit views) but are not
|
|
5
|
+
* client HMR entrypoints. Broadcast a layout-update so the active navigation
|
|
6
|
+
* runtime can refresh the current page without a full document reload.
|
|
7
|
+
*/
|
|
8
|
+
import { HmrStrategy, type HmrAction } from '../hmr-strategy.js';
|
|
9
|
+
import type { DevelopmentInvalidationService } from '../../services/invalidation/development-invalidation.service.js';
|
|
10
|
+
export declare class ServerRenderedTemplateHmrStrategy extends HmrStrategy {
|
|
11
|
+
private readonly invalidationService;
|
|
12
|
+
readonly type: 100;
|
|
13
|
+
readonly priorityOffset = 50;
|
|
14
|
+
constructor(invalidationService: DevelopmentInvalidationService);
|
|
15
|
+
matches(filePath: string): boolean;
|
|
16
|
+
process(filePath: string): Promise<HmrAction>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMR strategy for server-rendered include templates and explicit server views.
|
|
3
|
+
*
|
|
4
|
+
* These files affect SSR output (head, layout shell, explicit views) but are not
|
|
5
|
+
* client HMR entrypoints. Broadcast a layout-update so the active navigation
|
|
6
|
+
* runtime can refresh the current page without a full document reload.
|
|
7
|
+
*/
|
|
8
|
+
import { HmrStrategy, HmrStrategyType } from '../hmr-strategy.js';
|
|
9
|
+
/** Outranks integration-owned strategies that may also match shared dependencies. */
|
|
10
|
+
const SERVER_RENDERED_TEMPLATE_PRIORITY_OFFSET = 50;
|
|
11
|
+
export class ServerRenderedTemplateHmrStrategy extends HmrStrategy {
|
|
12
|
+
invalidationService;
|
|
13
|
+
type = HmrStrategyType.INTEGRATION;
|
|
14
|
+
priorityOffset = SERVER_RENDERED_TEMPLATE_PRIORITY_OFFSET;
|
|
15
|
+
constructor(invalidationService) {
|
|
16
|
+
super();
|
|
17
|
+
this.invalidationService = invalidationService;
|
|
18
|
+
}
|
|
19
|
+
matches(filePath) {
|
|
20
|
+
return (this.invalidationService.isIncludeSourceFile(filePath) ||
|
|
21
|
+
this.invalidationService.isExplicitServerViewFile(filePath));
|
|
22
|
+
}
|
|
23
|
+
async process(filePath) {
|
|
24
|
+
return {
|
|
25
|
+
type: 'broadcast',
|
|
26
|
+
events: [
|
|
27
|
+
{
|
|
28
|
+
type: 'layout-update',
|
|
29
|
+
path: filePath,
|
|
30
|
+
timestamp: Date.now(),
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/index.browser.d.ts
CHANGED
package/src/index.browser.js
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
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 { defineApiHandler, defineGroupHandler, type GroupHandler } from './adapters/shared/define-api-handler.js';
|
|
4
|
+
export { defineApiHandler, defineGroupHandler, defineGet, definePost, definePut, defineDelete, definePatch, defineOptions, defineHead, json, html, redirect, type GroupHandler, } from './adapters/shared/http/define-api-handler.js';
|
|
5
5
|
export { createEcoBuildPluginFromSourceTransform, createVitePluginsFromAppSourceTransforms, getAppSourceTransforms, createVitePluginFromSourceTransform, normalizeTransformId, type EcoSourceTransform, type EcoSourceTransformResult, type EcoViteCompatiblePlugin, } from './plugins/source-transform.js';
|
|
6
6
|
export { createEcoComponentMetaTransform } from './plugins/eco-component-meta-plugin.js';
|
|
7
|
+
export { bindComponentIdentity, getComponentIdentity, type ComponentIdentity } from './eco/component-identity.js';
|
|
8
|
+
export { SchemaError, validateStandardSchema } from './services/validation/validate-standard-schema.js';
|
|
9
|
+
export { buildIslandHostAttributes, ECO_ISLAND_HOST_ATTRIBUTE, ECO_ISLAND_INTEGRATION_ATTRIBUTE, finalizeIslandComponentRender, isIslandHostElement, mergeIslandHostAttributes, } from './islands/island-host.js';
|
package/src/index.js
CHANGED
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
normalizeTransformId
|
|
9
|
-
} from "./plugins/source-transform.js";
|
|
10
|
-
import { createEcoComponentMetaTransform } from "./plugins/eco-component-meta-plugin.js";
|
|
11
|
-
export {
|
|
12
|
-
createEcoBuildPluginFromSourceTransform,
|
|
13
|
-
createEcoComponentMetaTransform,
|
|
14
|
-
createVitePluginFromSourceTransform,
|
|
15
|
-
createVitePluginsFromAppSourceTransforms,
|
|
16
|
-
defineApiHandler,
|
|
17
|
-
defineGroupHandler,
|
|
18
|
-
eco,
|
|
19
|
-
getAppSourceTransforms,
|
|
20
|
-
normalizeTransformId
|
|
21
|
-
};
|
|
1
|
+
export { eco } from './eco/eco.js';
|
|
2
|
+
export { defineApiHandler, defineGroupHandler, defineGet, definePost, definePut, defineDelete, definePatch, defineOptions, defineHead, json, html, redirect, } from './adapters/shared/http/define-api-handler.js';
|
|
3
|
+
export { createEcoBuildPluginFromSourceTransform, createVitePluginsFromAppSourceTransforms, getAppSourceTransforms, createVitePluginFromSourceTransform, normalizeTransformId, } from './plugins/source-transform.js';
|
|
4
|
+
export { createEcoComponentMetaTransform } from './plugins/eco-component-meta-plugin.js';
|
|
5
|
+
export { bindComponentIdentity, getComponentIdentity } from './eco/component-identity.js';
|
|
6
|
+
export { SchemaError, validateStandardSchema } from './services/validation/validate-standard-schema.js';
|
|
7
|
+
export { buildIslandHostAttributes, ECO_ISLAND_HOST_ATTRIBUTE, ECO_ISLAND_INTEGRATION_ATTRIBUTE, finalizeIslandComponentRender, isIslandHostElement, mergeIslandHostAttributes, } from './islands/island-host.js';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Island host contract
|
|
2
|
+
|
|
3
|
+
Hydratable component instances stamp a small, integration-agnostic attribute set on their SSR root so devtools (and future runtime features) can discover islands without integration-specific selectors.
|
|
4
|
+
|
|
5
|
+
## Attributes
|
|
6
|
+
|
|
7
|
+
| Attribute | Purpose |
|
|
8
|
+
| ----------------------------- | ---------------------------------------------------- |
|
|
9
|
+
| `data-eco-island` | Marks the element as an interactive island host |
|
|
10
|
+
| `data-eco-island-integration` | Owning integration (`react`, `lit`, `kitajs`, …) |
|
|
11
|
+
| `data-eco-component-id` | Stable instance id from the render pipeline |
|
|
12
|
+
| `data-eco-component-key` | Optional module key used by client hydration (React) |
|
|
13
|
+
| `data-eco-props` | Optional base64 JSON props snapshot for hydration |
|
|
14
|
+
|
|
15
|
+
React may still replace the SSR host with `<eco-island>` after hydration; the marker is applied at SSR time on the component root.
|
|
16
|
+
|
|
17
|
+
## Where stamping happens
|
|
18
|
+
|
|
19
|
+
`finalizeIslandComponentRender()` in `island-host.ts` is called from integration renderers when:
|
|
20
|
+
|
|
21
|
+
1. `integrationContext.componentInstanceId` is present
|
|
22
|
+
2. The render result can attach attributes to a single root element
|
|
23
|
+
3. The render emits at least one client `script` asset
|
|
24
|
+
|
|
25
|
+
Integrations with custom island metadata (for example React's component key) should build on `buildIslandHostAttributes()` rather than inventing per-demo selectors.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const ECO_ISLAND_HOST_ATTRIBUTE = "data-eco-island";
|
|
2
|
+
export declare const ECO_ISLAND_INTEGRATION_ATTRIBUTE = "data-eco-island-integration";
|
|
3
|
+
export declare const ECO_ISLAND_COMPONENT_ID_ATTRIBUTE = "data-eco-component-id";
|
|
4
|
+
export declare const ECO_ISLAND_COMPONENT_KEY_ATTRIBUTE = "data-eco-component-key";
|
|
5
|
+
export declare const ECO_ISLAND_PROPS_ATTRIBUTE = "data-eco-props";
|
|
6
|
+
export type IslandHostAttributesInput = {
|
|
7
|
+
integrationName: string;
|
|
8
|
+
componentInstanceId: string;
|
|
9
|
+
componentKey?: string;
|
|
10
|
+
props?: Record<string, unknown>;
|
|
11
|
+
existing?: Record<string, string>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* @remarks Presence marker for hydratable component hosts, similar in spirit to Astro's `astro-island`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function mergeIslandHostAttributes(input: {
|
|
17
|
+
integrationName: string;
|
|
18
|
+
componentInstanceId: string;
|
|
19
|
+
existing?: Record<string, string>;
|
|
20
|
+
}): Record<string, string>;
|
|
21
|
+
export declare function buildIslandHostAttributes(input: IslandHostAttributesInput): Record<string, string>;
|
|
22
|
+
export declare function isIslandHostElement(element: Element): boolean;
|
|
23
|
+
export declare function componentRenderHasIslandBootstrap(assets: Array<{
|
|
24
|
+
kind: string;
|
|
25
|
+
}> | undefined): boolean;
|
|
26
|
+
export declare function finalizeIslandComponentRender<T extends {
|
|
27
|
+
canAttachAttributes: boolean;
|
|
28
|
+
integrationName: string;
|
|
29
|
+
rootAttributes?: Record<string, string>;
|
|
30
|
+
assets?: Array<{
|
|
31
|
+
kind: string;
|
|
32
|
+
}>;
|
|
33
|
+
}>(input: {
|
|
34
|
+
integrationContext?: {
|
|
35
|
+
componentInstanceId?: string;
|
|
36
|
+
};
|
|
37
|
+
}, result: T): T;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export const ECO_ISLAND_HOST_ATTRIBUTE = 'data-eco-island';
|
|
2
|
+
export const ECO_ISLAND_INTEGRATION_ATTRIBUTE = 'data-eco-island-integration';
|
|
3
|
+
export const ECO_ISLAND_COMPONENT_ID_ATTRIBUTE = 'data-eco-component-id';
|
|
4
|
+
export const ECO_ISLAND_COMPONENT_KEY_ATTRIBUTE = 'data-eco-component-key';
|
|
5
|
+
export const ECO_ISLAND_PROPS_ATTRIBUTE = 'data-eco-props';
|
|
6
|
+
/**
|
|
7
|
+
* @remarks Presence marker for hydratable component hosts, similar in spirit to Astro's `astro-island`.
|
|
8
|
+
*/
|
|
9
|
+
export function mergeIslandHostAttributes(input) {
|
|
10
|
+
return {
|
|
11
|
+
...input.existing,
|
|
12
|
+
[ECO_ISLAND_HOST_ATTRIBUTE]: '',
|
|
13
|
+
[ECO_ISLAND_COMPONENT_ID_ATTRIBUTE]: input.existing?.[ECO_ISLAND_COMPONENT_ID_ATTRIBUTE] ?? input.componentInstanceId,
|
|
14
|
+
[ECO_ISLAND_INTEGRATION_ATTRIBUTE]: input.integrationName,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function buildIslandHostAttributes(input) {
|
|
18
|
+
const attributes = mergeIslandHostAttributes(input);
|
|
19
|
+
if (input.componentKey) {
|
|
20
|
+
attributes[ECO_ISLAND_COMPONENT_KEY_ATTRIBUTE] = input.componentKey;
|
|
21
|
+
}
|
|
22
|
+
if (input.props !== undefined) {
|
|
23
|
+
attributes[ECO_ISLAND_PROPS_ATTRIBUTE] = btoa(JSON.stringify(input.props));
|
|
24
|
+
}
|
|
25
|
+
return attributes;
|
|
26
|
+
}
|
|
27
|
+
export function isIslandHostElement(element) {
|
|
28
|
+
if (element.hasAttribute(ECO_ISLAND_HOST_ATTRIBUTE)) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
if (element.hasAttribute(ECO_ISLAND_COMPONENT_KEY_ATTRIBUTE)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
if (element.tagName.toLowerCase() === 'eco-island') {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return element.hasAttribute(ECO_ISLAND_COMPONENT_ID_ATTRIBUTE) && element.hasAttribute(ECO_ISLAND_PROPS_ATTRIBUTE);
|
|
38
|
+
}
|
|
39
|
+
export function componentRenderHasIslandBootstrap(assets) {
|
|
40
|
+
return (assets ?? []).some((asset) => asset.kind === 'script');
|
|
41
|
+
}
|
|
42
|
+
export function finalizeIslandComponentRender(input, result) {
|
|
43
|
+
const componentInstanceId = input.integrationContext?.componentInstanceId;
|
|
44
|
+
if (!componentInstanceId || !result.canAttachAttributes || !componentRenderHasIslandBootstrap(result.assets)) {
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
...result,
|
|
49
|
+
rootAttributes: mergeIslandHostAttributes({
|
|
50
|
+
integrationName: result.integrationName,
|
|
51
|
+
componentInstanceId,
|
|
52
|
+
existing: result.rootAttributes,
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
}
|
package/src/plugins/README.md
CHANGED
|
@@ -19,13 +19,14 @@ These contracts are responsible for:
|
|
|
19
19
|
- `processor.ts`: asset-transformation contract for processors
|
|
20
20
|
- `runtime-capability.ts`: runtime compatibility declaration types
|
|
21
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`:
|
|
22
|
+
- `eco-component-meta-plugin.ts`: component-identity attribution transform that uses a lexical `eco.` gate, then an Oxc `CallExpression` rewrite
|
|
23
23
|
|
|
24
24
|
## Ownership Rules
|
|
25
25
|
|
|
26
26
|
- Integrations own rendering semantics, hydration behavior, and integration-specific HMR strategy.
|
|
27
27
|
- Processors own asset semantics, cache ownership, and processor-specific watch behavior.
|
|
28
28
|
- Core owns lifecycle ordering, startup orchestration, and manifest assembly.
|
|
29
|
+
- The transform wraps native `eco.page()`, `eco.component()`, `eco.layout()`, and `eco.html()` factory options with `bindComponentIdentity()`. Factories retain the resulting `options.identity` on `config`, and runtime consumers read it through `getComponentIdentity()`. Browser, HMR, and server builds use the same source transform, so ownership and dependency diagnostics retain stable file attribution without a loader duplicate.
|
|
29
30
|
|
|
30
31
|
## Lifecycle Summary
|
|
31
32
|
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Per-plugin cache for
|
|
2
|
+
* Per-plugin cache for tsconfig path alias resolution.
|
|
3
3
|
*
|
|
4
4
|
* @remarks
|
|
5
|
-
* The `ecopages-alias-resolver` plugin resolves project aliases
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* the resolved path is a barrel) a `readFileSync` to detect
|
|
9
|
-
* `export * from './...'` forwarding.
|
|
5
|
+
* The `ecopages-alias-resolver` plugin resolves project path aliases to
|
|
6
|
+
* concrete file paths using the app's tsconfig `paths`. Each resolution goes
|
|
7
|
+
* through oxc-resolver and may read barrel re-export targets.
|
|
10
8
|
*
|
|
11
|
-
* This cache memoizes the result keyed by `(
|
|
9
|
+
* This cache memoizes the result keyed by `(projectRoot, specifier)`. It is
|
|
12
10
|
* process-local and not currently invalidated by the file watcher —
|
|
13
|
-
*
|
|
14
|
-
* process.
|
|
11
|
+
* project contents are assumed to be stable for the lifetime of the process.
|
|
15
12
|
*/
|
|
16
13
|
export declare class AliasResolverCache {
|
|
17
14
|
private readonly entries;
|
|
@@ -1,106 +1,123 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Per-plugin cache for tsconfig path alias resolution.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* The `ecopages-alias-resolver` plugin resolves project path aliases to
|
|
6
|
+
* concrete file paths using the app's tsconfig `paths`. Each resolution goes
|
|
7
|
+
* through oxc-resolver and may read barrel re-export targets.
|
|
8
|
+
*
|
|
9
|
+
* This cache memoizes the result keyed by `(projectRoot, specifier)`. It is
|
|
10
|
+
* process-local and not currently invalidated by the file watcher —
|
|
11
|
+
* project contents are assumed to be stable for the lifetime of the process.
|
|
12
|
+
*/
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
const DEFAULT_MAX_ENTRIES = 2_000;
|
|
15
|
+
export class AliasResolverCache {
|
|
16
|
+
entries = new Map();
|
|
17
|
+
maxEntries;
|
|
18
|
+
hits = 0;
|
|
19
|
+
misses = 0;
|
|
20
|
+
constructor(maxEntries = DEFAULT_MAX_ENTRIES) {
|
|
21
|
+
if (maxEntries <= 0) {
|
|
22
|
+
throw new Error(`AliasResolverCache: maxEntries must be > 0, got ${maxEntries}`);
|
|
23
|
+
}
|
|
24
|
+
this.maxEntries = maxEntries;
|
|
11
25
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Look up a previously-computed resolution for `(srcDir, specifier)`.
|
|
28
|
+
*
|
|
29
|
+
* Returns `{ hit: true, resolved }` on cache hit (resolved may be
|
|
30
|
+
* `undefined` for an unresolvable specifier), or `{ hit: false }` on
|
|
31
|
+
* miss. The caller is responsible for re-running the resolver and
|
|
32
|
+
* calling `set` to store the new entry.
|
|
33
|
+
*/
|
|
34
|
+
get(srcDir, specifier) {
|
|
35
|
+
const key = makeKey(srcDir, specifier);
|
|
36
|
+
const existing = this.entries.get(key);
|
|
37
|
+
if (existing) {
|
|
38
|
+
this.hits += 1;
|
|
39
|
+
// Refresh LRU position.
|
|
40
|
+
this.entries.delete(key);
|
|
41
|
+
this.entries.set(key, existing);
|
|
42
|
+
return { hit: true, resolved: existing.resolved };
|
|
43
|
+
}
|
|
44
|
+
this.misses += 1;
|
|
45
|
+
return { hit: false };
|
|
30
46
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.entries.delete(oldestKey);
|
|
48
|
-
}
|
|
47
|
+
/**
|
|
48
|
+
* Store a resolution result.
|
|
49
|
+
*
|
|
50
|
+
* Pass `undefined` for `resolved` to memoize the negative case
|
|
51
|
+
* (specifier did not resolve) and avoid repeating the FS walk on
|
|
52
|
+
* every `@/...` import.
|
|
53
|
+
*/
|
|
54
|
+
set(srcDir, specifier, resolved) {
|
|
55
|
+
const key = makeKey(srcDir, specifier);
|
|
56
|
+
this.entries.set(key, { srcDir, resolved });
|
|
57
|
+
if (this.entries.size > this.maxEntries) {
|
|
58
|
+
const oldestKey = this.entries.keys().next().value;
|
|
59
|
+
if (oldestKey !== undefined) {
|
|
60
|
+
this.entries.delete(oldestKey);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
49
63
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Drop all entries whose `srcDir` is under `rootDir`. Use this from
|
|
66
|
+
* the file watcher when files are added or removed under the app's
|
|
67
|
+
* source tree.
|
|
68
|
+
*
|
|
69
|
+
* Path comparison is path-aware (handles both POSIX `/` and
|
|
70
|
+
* Windows `\` separators) via `path.relative` so cached entries
|
|
71
|
+
* normalized on one platform still match the watcher's `rootDir`
|
|
72
|
+
* on another. Without this, a Windows build that sees
|
|
73
|
+
* `entry.srcDir === 'C:\app\src'` would miss
|
|
74
|
+
* `entry.srcDir.startsWith('C:/app/src/')` and leave stale entries.
|
|
75
|
+
*/
|
|
76
|
+
invalidateUnder(rootDir) {
|
|
77
|
+
const normalizedRoot = path.resolve(rootDir);
|
|
78
|
+
let removed = 0;
|
|
79
|
+
for (const [key, entry] of this.entries) {
|
|
80
|
+
if (isUnderDirectory(path.resolve(entry.srcDir), normalizedRoot)) {
|
|
81
|
+
this.entries.delete(key);
|
|
82
|
+
removed += 1;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return removed;
|
|
86
|
+
}
|
|
87
|
+
/** Clear all entries. */
|
|
88
|
+
clear() {
|
|
89
|
+
this.entries.clear();
|
|
90
|
+
this.hits = 0;
|
|
91
|
+
this.misses = 0;
|
|
92
|
+
}
|
|
93
|
+
/** Current cache size. */
|
|
94
|
+
get size() {
|
|
95
|
+
return this.entries.size;
|
|
96
|
+
}
|
|
97
|
+
/** Hit/miss counters for observability. */
|
|
98
|
+
stats() {
|
|
99
|
+
const total = this.hits + this.misses;
|
|
100
|
+
return {
|
|
101
|
+
hits: this.hits,
|
|
102
|
+
misses: this.misses,
|
|
103
|
+
size: this.entries.size,
|
|
104
|
+
hitRate: total === 0 ? 0 : this.hits / total,
|
|
105
|
+
};
|
|
71
106
|
}
|
|
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
107
|
}
|
|
95
108
|
function makeKey(srcDir, specifier) {
|
|
96
|
-
|
|
109
|
+
return `${srcDir} ${specifier}`;
|
|
97
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Returns true if `candidate` is the same as `parent` or a descendant
|
|
113
|
+
* of it. Uses `path.relative` so the comparison is path-aware and
|
|
114
|
+
* works across POSIX and Windows separators.
|
|
115
|
+
*/
|
|
98
116
|
function isUnderDirectory(candidate, parent) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
117
|
+
if (candidate === parent)
|
|
118
|
+
return true;
|
|
119
|
+
const rel = path.relative(parent, candidate);
|
|
120
|
+
if (!rel || rel.startsWith('..') || path.isAbsolute(rel))
|
|
121
|
+
return false;
|
|
122
|
+
return true;
|
|
103
123
|
}
|
|
104
|
-
export {
|
|
105
|
-
AliasResolverCache
|
|
106
|
-
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
1
|
+
import type { EcoBuildPlugin } from '../build/contracts/build-types.js';
|
|
2
2
|
import { AliasResolverCache } from './alias-resolver-cache.js';
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function createAliasResolverPlugin(srcDir: string, options?: {
|
|
3
|
+
export declare function createAliasResolverPlugin(projectRoot: string, options?: {
|
|
5
4
|
cache?: AliasResolverCache;
|
|
6
5
|
}): EcoBuildPlugin;
|
|
6
|
+
export { isBarePackageImportSpecifier, matchesTsconfigPathPrefix, loadTsconfigPathPrefixes, resolveProjectImportPath, resolveProjectModulePath, } from './tsconfig-import-resolver.js';
|
|
@@ -1,65 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function findResolvablePath(candidate) {
|
|
6
|
-
if (path.extname(candidate)) {
|
|
7
|
-
if (existsSync(candidate)) {
|
|
8
|
-
return candidate;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
for (const extension of RESOLVABLE_EXTENSIONS) {
|
|
12
|
-
const fileCandidate = `${candidate}${extension}`;
|
|
13
|
-
if (existsSync(fileCandidate)) {
|
|
14
|
-
return fileCandidate;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
for (const extension of RESOLVABLE_EXTENSIONS) {
|
|
18
|
-
const indexCandidate = path.join(candidate, `index${extension}`);
|
|
19
|
-
if (existsSync(indexCandidate)) {
|
|
20
|
-
return indexCandidate;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return void 0;
|
|
1
|
+
import { AliasResolverCache } from './alias-resolver-cache.js';
|
|
2
|
+
import { loadTsconfigPathPrefixes, resolveProjectImportPath } from './tsconfig-import-resolver.js';
|
|
3
|
+
function escapeRegExp(value) {
|
|
4
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
24
5
|
}
|
|
25
|
-
function
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
const source = readFileSync(resolvedPath, "utf8").trim();
|
|
30
|
-
const match = source.match(/^export\s+\*\s+from\s+['"]([^'"]+)['"]\s*;?$/);
|
|
31
|
-
if (!match?.[1]?.startsWith(".")) {
|
|
32
|
-
return resolvedPath;
|
|
33
|
-
}
|
|
34
|
-
const target = findResolvablePath(path.resolve(path.dirname(resolvedPath), match[1]));
|
|
35
|
-
return target ?? resolvedPath;
|
|
36
|
-
}
|
|
37
|
-
function resolveAppSourceAliasPath(srcDir, specifier) {
|
|
38
|
-
if (!specifier.startsWith("@/")) {
|
|
39
|
-
return void 0;
|
|
40
|
-
}
|
|
41
|
-
const candidate = path.join(srcDir, specifier.slice(2));
|
|
42
|
-
const resolved = findResolvablePath(candidate);
|
|
43
|
-
return resolved ? resolveAliasedBarrelTarget(resolved) : void 0;
|
|
44
|
-
}
|
|
45
|
-
function createAliasResolverPlugin(srcDir, options) {
|
|
46
|
-
const cache = options?.cache ?? new AliasResolverCache();
|
|
47
|
-
return {
|
|
48
|
-
name: "ecopages-alias-resolver",
|
|
49
|
-
setup(build) {
|
|
50
|
-
build.onResolve({ filter: /^@\// }, (args) => {
|
|
51
|
-
const cached = cache.get(srcDir, args.path);
|
|
52
|
-
if (cached.hit) {
|
|
53
|
-
return cached.resolved ? { path: cached.resolved } : {};
|
|
54
|
-
}
|
|
55
|
-
const resolved = resolveAppSourceAliasPath(srcDir, args.path);
|
|
56
|
-
cache.set(srcDir, args.path, resolved);
|
|
57
|
-
return resolved ? { path: resolved } : {};
|
|
58
|
-
});
|
|
6
|
+
function buildPathPrefixFilter(prefix) {
|
|
7
|
+
if (prefix.endsWith('/')) {
|
|
8
|
+
return new RegExp(`^${escapeRegExp(prefix)}`);
|
|
59
9
|
}
|
|
60
|
-
|
|
10
|
+
return new RegExp(`^${escapeRegExp(prefix)}(?:/|$)`);
|
|
11
|
+
}
|
|
12
|
+
export function createAliasResolverPlugin(projectRoot, options) {
|
|
13
|
+
const cache = options?.cache ?? new AliasResolverCache();
|
|
14
|
+
const pathPrefixes = loadTsconfigPathPrefixes(projectRoot);
|
|
15
|
+
return {
|
|
16
|
+
name: 'ecopages-alias-resolver',
|
|
17
|
+
setup(build) {
|
|
18
|
+
if (pathPrefixes.length === 0) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
for (const prefix of pathPrefixes) {
|
|
22
|
+
build.onResolve({ filter: buildPathPrefixFilter(prefix) }, (args) => {
|
|
23
|
+
if (!args.importer) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const cached = cache.get(projectRoot, args.path);
|
|
27
|
+
if (cached.hit) {
|
|
28
|
+
return cached.resolved ? { path: cached.resolved } : undefined;
|
|
29
|
+
}
|
|
30
|
+
const resolved = resolveProjectImportPath(projectRoot, args.importer, args.path);
|
|
31
|
+
cache.set(projectRoot, args.path, resolved);
|
|
32
|
+
return resolved ? { path: resolved } : undefined;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
};
|
|
61
37
|
}
|
|
62
|
-
export {
|
|
63
|
-
createAliasResolverPlugin,
|
|
64
|
-
resolveAppSourceAliasPath
|
|
65
|
-
};
|
|
38
|
+
export { isBarePackageImportSpecifier, matchesTsconfigPathPrefix, loadTsconfigPathPrefixes, resolveProjectImportPath, resolveProjectModulePath, } from './tsconfig-import-resolver.js';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
2
|
+
import type { AssetProcessingService } from '../services/assets/asset-processing-service/asset-processing.service.js';
|
|
3
|
+
import type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
4
|
+
import type { EcoPagesElement } from '../types/public-types.js';
|
|
5
|
+
import type { IntegrationRenderer } from '../route-renderer/orchestration/integration-renderer.js';
|
|
6
|
+
import { IntegrationPlugin, type IntegrationPluginConfig } from './integration-plugin.js';
|
|
7
|
+
type RendererClass<C> = new (options: {
|
|
8
|
+
appConfig: EcoPagesAppConfig;
|
|
9
|
+
assetProcessingService: AssetProcessingService;
|
|
10
|
+
resolvedIntegrationDependencies: ProcessedAsset[];
|
|
11
|
+
rendererModules?: unknown;
|
|
12
|
+
runtimeOrigin: string;
|
|
13
|
+
}) => IntegrationRenderer<C>;
|
|
14
|
+
export interface DefineIntegrationDefinition<C = EcoPagesElement> extends IntegrationPluginConfig {
|
|
15
|
+
renderer: RendererClass<C>;
|
|
16
|
+
}
|
|
17
|
+
export interface DefinedIntegration<C = EcoPagesElement> {
|
|
18
|
+
(options?: Omit<IntegrationPluginConfig, 'name'>): IntegrationPlugin<C>;
|
|
19
|
+
Plugin: new (options?: Omit<IntegrationPluginConfig, 'name'>) => IntegrationPlugin<C>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates a typed integration plugin factory for integrations that only need
|
|
23
|
+
* declarative config and a renderer class.
|
|
24
|
+
*/
|
|
25
|
+
export declare function defineIntegration<C = EcoPagesElement>(definition: DefineIntegrationDefinition<C>): DefinedIntegration<C>;
|
|
26
|
+
export {};
|