@ecopages/core 0.2.0-beta.9 → 0.2.0-rc.1
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 +44 -14
- package/package.json +368 -57
- 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 +5 -7
- 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 +48 -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 +25 -355
- package/src/build/build-adapter.js +258 -265
- 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 +472 -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} +7 -2
- package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
- package/src/build/{rolldown-source-transform-pass.d.ts → rolldown/rolldown-source-transform-pass.d.ts} +1 -1
- package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +227 -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 +40 -20
- package/src/config/config-builder.js +645 -610
- 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 +4 -2
- 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 +28 -15
- 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 +79 -12
- package/src/plugins/processor.js +188 -136
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.d.ts +1 -1
- package/src/plugins/source-transform.js +109 -79
- 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 +32 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +52 -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 +39 -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 +53 -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 -31
- package/src/services/assets/browser-bundle.service.js +54 -49
- 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 -310
- 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 -211
- package/src/build/rolldown-source-transform-pass.js +0 -58
- 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,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves shared Rolldown options for a build profile.
|
|
3
|
+
*/
|
|
4
|
+
export function resolveBuildProfileOptions(profile, appConfig, overrides = {}) {
|
|
5
|
+
const root = appConfig.rootDir;
|
|
6
|
+
switch (profile) {
|
|
7
|
+
case 'server-entry':
|
|
8
|
+
return {
|
|
9
|
+
root,
|
|
10
|
+
target: 'node',
|
|
11
|
+
format: 'esm',
|
|
12
|
+
sourcemap: 'none',
|
|
13
|
+
minify: false,
|
|
14
|
+
externalPackages: true,
|
|
15
|
+
...overrides,
|
|
16
|
+
};
|
|
17
|
+
case 'route-module':
|
|
18
|
+
return {
|
|
19
|
+
root,
|
|
20
|
+
target: 'es2022',
|
|
21
|
+
format: 'esm',
|
|
22
|
+
sourcemap: 'none',
|
|
23
|
+
minify: false,
|
|
24
|
+
externalPackages: true,
|
|
25
|
+
...overrides,
|
|
26
|
+
};
|
|
27
|
+
case 'browser-hmr':
|
|
28
|
+
return {
|
|
29
|
+
root,
|
|
30
|
+
target: 'browser',
|
|
31
|
+
format: 'esm',
|
|
32
|
+
sourcemap: 'none',
|
|
33
|
+
minify: false,
|
|
34
|
+
...overrides,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BuildOptions } from '../contracts/build-contracts.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical identity for one complete {@link BuildOptions} request.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Semantically unordered collections (`external`, `define` keys, array entrypoints)
|
|
7
|
+
* are sorted. Plugin, `conditions`, and source-transform order is preserved because
|
|
8
|
+
* Rolldown hook and `conditionNames` precedence depend on it.
|
|
9
|
+
*
|
|
10
|
+
* Deprecated / ignored adapter fields (`splitting`, `bundle`, `outbase`) still
|
|
11
|
+
* participate in the key so requests that differ only on those fields do not
|
|
12
|
+
* coalesce. Empty `conditions` / `define` / `external` normalize to the same
|
|
13
|
+
* sentinel as `undefined`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createBuildRequestIdentity(options: BuildOptions): string;
|
|
16
|
+
/** @deprecated Use {@link createBuildRequestIdentity}. */
|
|
17
|
+
export declare const createBuildOptionsDedupeKey: typeof createBuildRequestIdentity;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { createJsxCacheKey, createPluginCacheKey, createSourceTransformCacheKey } from '../cache/cache-keys.js';
|
|
3
|
+
function normalizeEntrypoints(entrypoints) {
|
|
4
|
+
if (Array.isArray(entrypoints)) {
|
|
5
|
+
return entrypoints
|
|
6
|
+
.map((entrypoint) => path.resolve(entrypoint))
|
|
7
|
+
.sort()
|
|
8
|
+
.join('|');
|
|
9
|
+
}
|
|
10
|
+
return Object.entries(entrypoints)
|
|
11
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
12
|
+
.map(([key, value]) => `${key}:${path.resolve(value)}`)
|
|
13
|
+
.join('|');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Preserves list order for collections where Rolldown precedence depends on position.
|
|
17
|
+
*/
|
|
18
|
+
function normalizeOrderedStringList(values, label) {
|
|
19
|
+
if (!values || values.length === 0) {
|
|
20
|
+
return `${label}:default`;
|
|
21
|
+
}
|
|
22
|
+
return `${label}:${values.join(',')}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sorts unordered sets so equivalent membership produces one identity.
|
|
26
|
+
*/
|
|
27
|
+
function normalizeUnorderedStringList(values, label) {
|
|
28
|
+
if (!values || values.length === 0) {
|
|
29
|
+
return `${label}:default`;
|
|
30
|
+
}
|
|
31
|
+
return `${label}:${[...values].sort().join(',')}`;
|
|
32
|
+
}
|
|
33
|
+
function normalizeDefine(define) {
|
|
34
|
+
if (!define || Object.keys(define).length === 0) {
|
|
35
|
+
return 'define:default';
|
|
36
|
+
}
|
|
37
|
+
return `define:${Object.entries(define)
|
|
38
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
39
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
40
|
+
.join(',')}`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Canonical identity for one complete {@link BuildOptions} request.
|
|
44
|
+
*
|
|
45
|
+
* @remarks
|
|
46
|
+
* Semantically unordered collections (`external`, `define` keys, array entrypoints)
|
|
47
|
+
* are sorted. Plugin, `conditions`, and source-transform order is preserved because
|
|
48
|
+
* Rolldown hook and `conditionNames` precedence depend on it.
|
|
49
|
+
*
|
|
50
|
+
* Deprecated / ignored adapter fields (`splitting`, `bundle`, `outbase`) still
|
|
51
|
+
* participate in the key so requests that differ only on those fields do not
|
|
52
|
+
* coalesce. Empty `conditions` / `define` / `external` normalize to the same
|
|
53
|
+
* sentinel as `undefined`.
|
|
54
|
+
*/
|
|
55
|
+
export function createBuildRequestIdentity(options) {
|
|
56
|
+
return [
|
|
57
|
+
normalizeEntrypoints(options.entrypoints),
|
|
58
|
+
options.root ? path.resolve(options.root) : 'root:default',
|
|
59
|
+
options.outdir ? path.resolve(options.outdir) : 'outdir:default',
|
|
60
|
+
options.outbase ? path.resolve(options.outbase) : 'outbase:default',
|
|
61
|
+
options.splitting ?? 'splitting:default',
|
|
62
|
+
options.bundle ?? 'bundle:default',
|
|
63
|
+
options.externalPackages ?? 'externalPackages:default',
|
|
64
|
+
options.target ?? 'target:default',
|
|
65
|
+
options.format ?? 'format:default',
|
|
66
|
+
options.sourcemap ?? 'sourcemap:default',
|
|
67
|
+
options.minify ?? 'minify:default',
|
|
68
|
+
options.treeshaking ?? 'treeshaking:default',
|
|
69
|
+
options.naming ?? 'naming:default',
|
|
70
|
+
normalizeOrderedStringList(options.conditions, 'conditions'),
|
|
71
|
+
normalizeDefine(options.define),
|
|
72
|
+
normalizeUnorderedStringList(options.external, 'external'),
|
|
73
|
+
createJsxCacheKey(options.jsx),
|
|
74
|
+
createPluginCacheKey(options.plugins),
|
|
75
|
+
createSourceTransformCacheKey(options.sourceTransforms),
|
|
76
|
+
].join('::');
|
|
77
|
+
}
|
|
78
|
+
/** @deprecated Use {@link createBuildRequestIdentity}. */
|
|
79
|
+
export const createBuildOptionsDedupeKey = createBuildRequestIdentity;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
import type { EcoBuildPlugin } from '../contracts/build-types.js';
|
|
3
|
+
import type { BuildOptions, BuildTranspileProfile } from '../contracts/build-contracts.js';
|
|
4
|
+
import type { BuildProfile } from './build-runtime.js';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves app-owned server plugins plus JSX ownership for one config.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Always goes through {@link getAppServerBuildPlugins} so sealed-manifest and
|
|
10
|
+
* source-transform apps share one plugin list with the alias resolver. Used by
|
|
11
|
+
* both request assembly and unified-graph cache keys.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveServerAppBuildPlugins(appConfig: EcoPagesAppConfig): EcoBuildPlugin[];
|
|
14
|
+
/**
|
|
15
|
+
* Merges caller plugins with app-owned manifest plugins.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* App-manifest plugins cannot be silently replaced by same-name caller plugins.
|
|
19
|
+
* Unique caller plugins are prepended so first-wins Rolldown hooks (for example
|
|
20
|
+
* React vendor/alias rewrites) still run before general app loaders. Use
|
|
21
|
+
* `excludeAppBuildPlugins` on browser requests to omit app-owned plugins.
|
|
22
|
+
*/
|
|
23
|
+
export declare function mergeCallerBuildPlugins(appPlugins: EcoBuildPlugin[], callerPlugins?: EcoBuildPlugin[]): EcoBuildPlugin[];
|
|
24
|
+
export type ServerBuildRequestInput = Partial<BuildOptions> & {
|
|
25
|
+
entrypoints: BuildOptions['entrypoints'];
|
|
26
|
+
profile?: Extract<BuildProfile, 'server-entry' | 'route-module'>;
|
|
27
|
+
};
|
|
28
|
+
export type BrowserBuildRequestInput = Partial<BuildOptions> & {
|
|
29
|
+
entrypoints: BuildOptions['entrypoints'];
|
|
30
|
+
profile: BuildTranspileProfile;
|
|
31
|
+
excludeAppBuildPlugins?: string[];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Assembles a complete server-oriented {@link BuildOptions} before scheduling.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* Defaults `profile` to `'route-module'`. Plugins are
|
|
38
|
+
* {@link resolveServerAppBuildPlugins} plus unique caller contributions via
|
|
39
|
+
* {@link mergeCallerBuildPlugins}. Source transforms are applied on every
|
|
40
|
+
* compilation target, so server module loading shares browser attribution.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createServerBuildRequest(appConfig: EcoPagesAppConfig, input: ServerBuildRequestInput): BuildOptions;
|
|
43
|
+
/**
|
|
44
|
+
* Assembles a complete browser-oriented {@link BuildOptions} before scheduling.
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* Applies {@link resolveBuildProfileOptions} for `'browser-hmr'` (browser target
|
|
48
|
+
* defaults), then overlays {@link getAppTranspileOptions} for the given
|
|
49
|
+
* {@link BuildTranspileProfile}. That profile selects transpile settings only;
|
|
50
|
+
* the {@link BuildRuntime} executor slot is chosen later by the caller
|
|
51
|
+
* (typically {@link BrowserBundleService}).
|
|
52
|
+
*
|
|
53
|
+
* Always attaches {@link getAppSourceTransforms}. App browser plugins come from
|
|
54
|
+
* {@link getAppBrowserBuildPlugins} (includes JSX ownership); use
|
|
55
|
+
* `excludeAppBuildPlugins` to omit app-owned names. Caller plugins cannot
|
|
56
|
+
* replace app-manifest names ({@link mergeCallerBuildPlugins}).
|
|
57
|
+
*/
|
|
58
|
+
export declare function createBrowserBuildRequest(appConfig: EcoPagesAppConfig, input: BrowserBuildRequestInput): BuildOptions;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { getAppBrowserBuildPlugins, getAppServerBuildPlugins, getAppTranspileOptions } from '../build-adapter.js';
|
|
2
|
+
import { resolveBuildProfileOptions } from './build-profile-options.js';
|
|
3
|
+
import { getJsxOwnershipPlugins } from '../browser/jsx-ownership-plugins.js';
|
|
4
|
+
import { getAppSourceTransforms } from '../../plugins/source-transform.js';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves app-owned server plugins plus JSX ownership for one config.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Always goes through {@link getAppServerBuildPlugins} so sealed-manifest and
|
|
10
|
+
* source-transform apps share one plugin list with the alias resolver. Used by
|
|
11
|
+
* both request assembly and unified-graph cache keys.
|
|
12
|
+
*/
|
|
13
|
+
export function resolveServerAppBuildPlugins(appConfig) {
|
|
14
|
+
return [...getAppServerBuildPlugins(appConfig), ...getJsxOwnershipPlugins(appConfig)];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Merges caller plugins with app-owned manifest plugins.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* App-manifest plugins cannot be silently replaced by same-name caller plugins.
|
|
21
|
+
* Unique caller plugins are prepended so first-wins Rolldown hooks (for example
|
|
22
|
+
* React vendor/alias rewrites) still run before general app loaders. Use
|
|
23
|
+
* `excludeAppBuildPlugins` on browser requests to omit app-owned plugins.
|
|
24
|
+
*/
|
|
25
|
+
export function mergeCallerBuildPlugins(appPlugins, callerPlugins) {
|
|
26
|
+
if (!callerPlugins || callerPlugins.length === 0) {
|
|
27
|
+
return appPlugins;
|
|
28
|
+
}
|
|
29
|
+
const appByName = new Map(appPlugins.map((plugin) => [plugin.name, plugin]));
|
|
30
|
+
const uniqueCallerPlugins = callerPlugins.filter((plugin) => !appByName.has(plugin.name));
|
|
31
|
+
return [...uniqueCallerPlugins, ...appPlugins];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Assembles a complete server-oriented {@link BuildOptions} before scheduling.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* Defaults `profile` to `'route-module'`. Plugins are
|
|
38
|
+
* {@link resolveServerAppBuildPlugins} plus unique caller contributions via
|
|
39
|
+
* {@link mergeCallerBuildPlugins}. Source transforms are applied on every
|
|
40
|
+
* compilation target, so server module loading shares browser attribution.
|
|
41
|
+
*/
|
|
42
|
+
export function createServerBuildRequest(appConfig, input) {
|
|
43
|
+
const profile = input.profile ?? 'route-module';
|
|
44
|
+
const plugins = mergeCallerBuildPlugins(resolveServerAppBuildPlugins(appConfig), input.plugins);
|
|
45
|
+
const { plugins: _callerPlugins, profile: _profile, ...overrides } = input;
|
|
46
|
+
return {
|
|
47
|
+
...resolveBuildProfileOptions(profile, appConfig, overrides),
|
|
48
|
+
...overrides,
|
|
49
|
+
entrypoints: input.entrypoints,
|
|
50
|
+
...(plugins.length > 0 ? { plugins } : {}),
|
|
51
|
+
sourceTransforms: getAppSourceTransforms(appConfig),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Assembles a complete browser-oriented {@link BuildOptions} before scheduling.
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* Applies {@link resolveBuildProfileOptions} for `'browser-hmr'` (browser target
|
|
59
|
+
* defaults), then overlays {@link getAppTranspileOptions} for the given
|
|
60
|
+
* {@link BuildTranspileProfile}. That profile selects transpile settings only;
|
|
61
|
+
* the {@link BuildRuntime} executor slot is chosen later by the caller
|
|
62
|
+
* (typically {@link BrowserBundleService}).
|
|
63
|
+
*
|
|
64
|
+
* Always attaches {@link getAppSourceTransforms}. App browser plugins come from
|
|
65
|
+
* {@link getAppBrowserBuildPlugins} (includes JSX ownership); use
|
|
66
|
+
* `excludeAppBuildPlugins` to omit app-owned names. Caller plugins cannot
|
|
67
|
+
* replace app-manifest names ({@link mergeCallerBuildPlugins}).
|
|
68
|
+
*/
|
|
69
|
+
export function createBrowserBuildRequest(appConfig, input) {
|
|
70
|
+
const { profile, excludeAppBuildPlugins, plugins: callerPlugins, ...overrides } = input;
|
|
71
|
+
const appBrowserPlugins = getAppBrowserBuildPlugins(appConfig);
|
|
72
|
+
const filteredAppBrowserPlugins = excludeAppBuildPlugins && excludeAppBuildPlugins.length > 0
|
|
73
|
+
? appBrowserPlugins.filter((plugin) => !excludeAppBuildPlugins.includes(plugin.name))
|
|
74
|
+
: appBrowserPlugins;
|
|
75
|
+
const plugins = mergeCallerBuildPlugins(filteredAppBrowserPlugins, callerPlugins);
|
|
76
|
+
return {
|
|
77
|
+
...resolveBuildProfileOptions('browser-hmr', appConfig, overrides),
|
|
78
|
+
...getAppTranspileOptions(appConfig, profile),
|
|
79
|
+
...overrides,
|
|
80
|
+
entrypoints: input.entrypoints,
|
|
81
|
+
plugins,
|
|
82
|
+
sourceTransforms: getAppSourceTransforms(appConfig),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
import { type BuildExecutor } from '../build-adapter.js';
|
|
3
|
+
export type BuildProfile = 'server-entry' | 'route-module' | 'browser-hmr';
|
|
4
|
+
export interface BuildRuntime {
|
|
5
|
+
getProfile(profile: BuildProfile): BuildExecutor;
|
|
6
|
+
dispose(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare function getBuildRuntime(appConfig: EcoPagesAppConfig): BuildRuntime | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the installed build runtime, installing it when missing.
|
|
11
|
+
*/
|
|
12
|
+
export declare function requireBuildRuntime(appConfig: EcoPagesAppConfig): BuildRuntime;
|
|
13
|
+
/**
|
|
14
|
+
* Installs profile-based build executors for one app instance.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* For Rolldown ownership, server-entry stays serialized single-flight while
|
|
18
|
+
* route-module and browser-HMR run in parallel one-shot builds. Vite-host
|
|
19
|
+
* profiles wrap a boundary marker and reject framework-owned build attempts.
|
|
20
|
+
* Profiles do not inject app plugins — assemble complete
|
|
21
|
+
* {@link BuildOptions} with {@link createServerBuildRequest} /
|
|
22
|
+
* {@link createBrowserBuildRequest} (or {@link BrowserBundleService}) first.
|
|
23
|
+
*/
|
|
24
|
+
export declare function installBuildRuntime(appConfig: EcoPagesAppConfig): BuildRuntime;
|
|
25
|
+
/**
|
|
26
|
+
* No-op retained for server teardown call sites.
|
|
27
|
+
*/
|
|
28
|
+
export declare function disposeAppBuildRuntime(appConfig: EcoPagesAppConfig): Promise<void>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { availableParallelism } from 'node:os';
|
|
2
|
+
import { getAppBuildAdapter } from '../build-adapter.js';
|
|
3
|
+
import { ParallelBuildExecutor } from './parallel-build-executor.js';
|
|
4
|
+
import { DedupingBuildExecutor } from './deduping-build-executor.js';
|
|
5
|
+
import { SerializedBuildExecutor } from './serialized-build-executor.js';
|
|
6
|
+
function resolveParallelismLimit() {
|
|
7
|
+
return Math.max(1, availableParallelism() - 1);
|
|
8
|
+
}
|
|
9
|
+
function patchAppRuntime(appConfig, patch) {
|
|
10
|
+
appConfig.runtime = {
|
|
11
|
+
...(appConfig.runtime ?? {}),
|
|
12
|
+
...patch,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
class AppBuildRuntime {
|
|
16
|
+
serverEntryExecutor;
|
|
17
|
+
routeModuleExecutor;
|
|
18
|
+
hmrExecutor;
|
|
19
|
+
constructor(appConfig) {
|
|
20
|
+
const adapter = getAppBuildAdapter(appConfig);
|
|
21
|
+
const limit = resolveParallelismLimit();
|
|
22
|
+
this.serverEntryExecutor = new SerializedBuildExecutor(adapter);
|
|
23
|
+
this.routeModuleExecutor = new DedupingBuildExecutor(new ParallelBuildExecutor(adapter, limit));
|
|
24
|
+
this.hmrExecutor = new DedupingBuildExecutor(new ParallelBuildExecutor(adapter, Math.min(3, limit)));
|
|
25
|
+
}
|
|
26
|
+
getProfile(profile) {
|
|
27
|
+
switch (profile) {
|
|
28
|
+
case 'server-entry':
|
|
29
|
+
return this.serverEntryExecutor;
|
|
30
|
+
case 'route-module':
|
|
31
|
+
return this.routeModuleExecutor;
|
|
32
|
+
case 'browser-hmr':
|
|
33
|
+
return this.hmrExecutor;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* No-op for profile teardown.
|
|
38
|
+
*
|
|
39
|
+
* @remarks
|
|
40
|
+
* Rolldown-owned profiles use one-shot builds, and Vite-host profiles only
|
|
41
|
+
* wrap a boundary marker. Neither owns a long-lived engine to close.
|
|
42
|
+
*/
|
|
43
|
+
async dispose() { }
|
|
44
|
+
}
|
|
45
|
+
export function getBuildRuntime(appConfig) {
|
|
46
|
+
return appConfig.runtime?.buildRuntime;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns the installed build runtime, installing it when missing.
|
|
50
|
+
*/
|
|
51
|
+
export function requireBuildRuntime(appConfig) {
|
|
52
|
+
return getBuildRuntime(appConfig) ?? installBuildRuntime(appConfig);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Installs profile-based build executors for one app instance.
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* For Rolldown ownership, server-entry stays serialized single-flight while
|
|
59
|
+
* route-module and browser-HMR run in parallel one-shot builds. Vite-host
|
|
60
|
+
* profiles wrap a boundary marker and reject framework-owned build attempts.
|
|
61
|
+
* Profiles do not inject app plugins — assemble complete
|
|
62
|
+
* {@link BuildOptions} with {@link createServerBuildRequest} /
|
|
63
|
+
* {@link createBrowserBuildRequest} (or {@link BrowserBundleService}) first.
|
|
64
|
+
*/
|
|
65
|
+
export function installBuildRuntime(appConfig) {
|
|
66
|
+
const buildRuntime = new AppBuildRuntime(appConfig);
|
|
67
|
+
patchAppRuntime(appConfig, { buildRuntime });
|
|
68
|
+
return buildRuntime;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* No-op retained for server teardown call sites.
|
|
72
|
+
*/
|
|
73
|
+
export async function disposeAppBuildRuntime(appConfig) {
|
|
74
|
+
await getBuildRuntime(appConfig)?.dispose();
|
|
75
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BuildExecutor, BuildOptions, BuildResult } from '../build-adapter.js';
|
|
2
|
+
export { createBuildRequestIdentity, createBuildOptionsDedupeKey } from './build-request-identity.js';
|
|
3
|
+
/**
|
|
4
|
+
* In-flight build coalescing wrapper.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* `ParallelBuildExecutor` allows concurrent builds but does not dedupe identical
|
|
8
|
+
* options. Multiple callers (route import, browser bundles, HMR) can hit the
|
|
9
|
+
* same Rolldown request before disk or import caches warm. This wrapper shares
|
|
10
|
+
* one inner `build()` promise per dedupe key until it settles.
|
|
11
|
+
*
|
|
12
|
+
* Wrap route-module and browser-hmr profiles only; server-entry stays serialized.
|
|
13
|
+
*/
|
|
14
|
+
export declare class DedupingBuildExecutor implements BuildExecutor {
|
|
15
|
+
private readonly inner;
|
|
16
|
+
private readonly inFlight;
|
|
17
|
+
constructor(inner: BuildExecutor);
|
|
18
|
+
build(options: BuildOptions): Promise<BuildResult>;
|
|
19
|
+
unwrap(): BuildExecutor;
|
|
20
|
+
getInFlightCountForTests(): number;
|
|
21
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createBuildRequestIdentity } from './build-request-identity.js';
|
|
2
|
+
export { createBuildRequestIdentity, createBuildOptionsDedupeKey } from './build-request-identity.js';
|
|
3
|
+
/**
|
|
4
|
+
* In-flight build coalescing wrapper.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* `ParallelBuildExecutor` allows concurrent builds but does not dedupe identical
|
|
8
|
+
* options. Multiple callers (route import, browser bundles, HMR) can hit the
|
|
9
|
+
* same Rolldown request before disk or import caches warm. This wrapper shares
|
|
10
|
+
* one inner `build()` promise per dedupe key until it settles.
|
|
11
|
+
*
|
|
12
|
+
* Wrap route-module and browser-hmr profiles only; server-entry stays serialized.
|
|
13
|
+
*/
|
|
14
|
+
export class DedupingBuildExecutor {
|
|
15
|
+
inner;
|
|
16
|
+
inFlight = new Map();
|
|
17
|
+
constructor(inner) {
|
|
18
|
+
this.inner = inner;
|
|
19
|
+
}
|
|
20
|
+
build(options) {
|
|
21
|
+
const key = createBuildRequestIdentity(options);
|
|
22
|
+
const existing = this.inFlight.get(key);
|
|
23
|
+
if (existing) {
|
|
24
|
+
return existing;
|
|
25
|
+
}
|
|
26
|
+
const buildPromise = this.inner.build(options).finally(() => {
|
|
27
|
+
if (this.inFlight.get(key) === buildPromise) {
|
|
28
|
+
this.inFlight.delete(key);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
this.inFlight.set(key, buildPromise);
|
|
32
|
+
return buildPromise;
|
|
33
|
+
}
|
|
34
|
+
unwrap() {
|
|
35
|
+
return this.inner;
|
|
36
|
+
}
|
|
37
|
+
getInFlightCountForTests() {
|
|
38
|
+
return this.inFlight.size;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Concurrency-limited build executor wrapper.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Runs up to `limit` builds concurrently. Use for independent route-module
|
|
6
|
+
* and HMR browser builds where FIFO serialization is unnecessary.
|
|
7
|
+
*/
|
|
8
|
+
export class ParallelBuildExecutor {
|
|
9
|
+
inner;
|
|
10
|
+
limit;
|
|
11
|
+
activeCount = 0;
|
|
12
|
+
queue = [];
|
|
13
|
+
constructor(inner, limit) {
|
|
14
|
+
this.inner = inner;
|
|
15
|
+
this.limit = Math.max(1, limit);
|
|
16
|
+
}
|
|
17
|
+
build(options) {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
this.queue.push({
|
|
20
|
+
operation: () => this.inner.build(options),
|
|
21
|
+
resolve,
|
|
22
|
+
reject,
|
|
23
|
+
});
|
|
24
|
+
this.drainQueue();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
drainQueue() {
|
|
28
|
+
while (this.activeCount < this.limit && this.queue.length > 0) {
|
|
29
|
+
const next = this.queue.shift();
|
|
30
|
+
if (!next) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.activeCount += 1;
|
|
34
|
+
void next
|
|
35
|
+
.operation()
|
|
36
|
+
.then((result) => {
|
|
37
|
+
next.resolve(result);
|
|
38
|
+
})
|
|
39
|
+
.catch((error) => {
|
|
40
|
+
next.reject(error);
|
|
41
|
+
})
|
|
42
|
+
.finally(() => {
|
|
43
|
+
this.activeCount -= 1;
|
|
44
|
+
this.drainQueue();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
unwrap() {
|
|
49
|
+
return this.inner;
|
|
50
|
+
}
|
|
51
|
+
getConcurrencyLimitForTests() {
|
|
52
|
+
return this.limit;
|
|
53
|
+
}
|
|
54
|
+
getActiveCountForTests() {
|
|
55
|
+
return this.activeCount;
|
|
56
|
+
}
|
|
57
|
+
getQueuedCountForTests() {
|
|
58
|
+
return this.queue.length;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FIFO-serialized build executor wrapper.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Wraps any `BuildExecutor` and ensures that no two builds run
|
|
6
|
+
* concurrently. The next build waits for the previous one to finish
|
|
7
|
+
* (success or failure) before starting.
|
|
8
|
+
*
|
|
9
|
+
* This is a bundler-agnostic primitive. It is unaware of bundler
|
|
10
|
+
* lifecycle events and exists purely to enforce one build at a time.
|
|
11
|
+
* Use it from the dev watch pipeline, the static preview path, or any
|
|
12
|
+
* caller that issues builds concurrently.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* FIFO-serialized wrapper around a {@link BuildExecutor}.
|
|
16
|
+
*
|
|
17
|
+
* Every `build()` call enqueues onto the wrapper's internal queue. A
|
|
18
|
+
* build only starts after the previous build's promise has settled.
|
|
19
|
+
*/
|
|
20
|
+
export class SerializedBuildExecutor {
|
|
21
|
+
inner;
|
|
22
|
+
tail = Promise.resolve();
|
|
23
|
+
constructor(inner) {
|
|
24
|
+
this.inner = inner;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Run a build through the serialized queue. The returned promise
|
|
28
|
+
* resolves with the inner executor's `BuildResult`. A rejected
|
|
29
|
+
* inner build does not block the queue — the next caller can
|
|
30
|
+
* proceed.
|
|
31
|
+
*/
|
|
32
|
+
build(options) {
|
|
33
|
+
return this.run(() => this.inner.build(options));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Run an arbitrary async operation through the serialized queue.
|
|
37
|
+
*
|
|
38
|
+
* Use this when the work is not a `build()` call against a wrapped
|
|
39
|
+
* executor (e.g. when composing with a coordinator that needs to
|
|
40
|
+
* inject recovery around the inner call). The returned promise
|
|
41
|
+
* resolves with the operation's result. A rejected operation does
|
|
42
|
+
* not block the queue.
|
|
43
|
+
*/
|
|
44
|
+
run(operation) {
|
|
45
|
+
const next = this.tail.catch(() => undefined).then(() => operation());
|
|
46
|
+
this.tail = next.catch(() => undefined);
|
|
47
|
+
return next;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Returns the wrapped executor. Tests use this to assert the
|
|
51
|
+
* delegation chain.
|
|
52
|
+
*/
|
|
53
|
+
unwrap() {
|
|
54
|
+
return this.inner;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Reset the queue to an empty state. Tests use this to recover
|
|
58
|
+
* from a poisoned tail.
|
|
59
|
+
*/
|
|
60
|
+
resetForTests() {
|
|
61
|
+
this.tail = Promise.resolve();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Overrides the internal queue tail for fault-recovery tests. The
|
|
65
|
+
* supplied promise is awaited before the next enqueued operation
|
|
66
|
+
* starts.
|
|
67
|
+
*/
|
|
68
|
+
setBuildQueueForTests(queue) {
|
|
69
|
+
this.tail = queue;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Returns the current internal queue tail for fault-recovery
|
|
73
|
+
* tests. Tests await this to assert that recovery has cleared a
|
|
74
|
+
* wedged queue.
|
|
75
|
+
*/
|
|
76
|
+
getBuildQueueForTests() {
|
|
77
|
+
return this.tail;
|
|
78
|
+
}
|
|
79
|
+
}
|
package/src/cache/index.d.ts
CHANGED
|
@@ -3,4 +3,5 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module @ecopages/core/cache
|
|
5
5
|
*/
|
|
6
|
-
export { ModuleParseCache, moduleParseCache, cachedParseSync, type ModuleParseOptions } from './module-parse-cache.js';
|
|
6
|
+
export { ModuleParseCache, moduleParseCache, cachedParseSync, parseModuleSource, parserLanguageForFile, type ModuleParseOptions, type ParserLanguage, } from './module-parse-cache.js';
|
|
7
|
+
export { recordModuleTransformProfile } from './module-transform-profiler.js';
|
package/src/cache/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Public cache exports for the bundler plugin chain.
|
|
3
|
+
*
|
|
4
|
+
* @module @ecopages/core/cache
|
|
5
|
+
*/
|
|
6
|
+
export { ModuleParseCache, moduleParseCache, cachedParseSync, parseModuleSource, parserLanguageForFile, } from './module-parse-cache.js';
|
|
7
|
+
export { recordModuleTransformProfile } from './module-transform-profiler.js';
|
|
@@ -22,6 +22,11 @@ export type ModuleParseOptions = ParserOptions & {
|
|
|
22
22
|
*/
|
|
23
23
|
lang?: ParserOptions['lang'];
|
|
24
24
|
};
|
|
25
|
+
export type ParserLanguage = 'js' | 'jsx' | 'ts' | 'tsx';
|
|
26
|
+
/** Resolves the Oxc dialect for a source module from its file extension. */
|
|
27
|
+
export declare function parserLanguageForFile(filePath: string): ParserLanguage;
|
|
28
|
+
/** Parses an ECMAScript module with the shared, normalized cache contract. */
|
|
29
|
+
export declare function parseModuleSource(filePath: string, source: string, options?: ModuleParseOptions): ParseResult;
|
|
25
30
|
/**
|
|
26
31
|
* LRU-bounded module parse cache.
|
|
27
32
|
*
|