@ecopages/core 0.2.0-beta.31 → 0.2.0-beta.32
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 +1 -0
- package/package.json +82 -3
- package/src/adapters/abstract/application-adapter.d.ts +0 -8
- package/src/adapters/abstract/application-adapter.js +252 -261
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.js +132 -134
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -26
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +83 -86
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.js +171 -161
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.js +2 -31
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +0 -1
- package/src/adapters/bun/server-adapter.js +561 -561
- package/src/adapters/bun/static-preview-host.js +43 -46
- package/src/adapters/create-app.js +11 -14
- package/src/adapters/index.js +2 -30
- package/src/adapters/node/create-app.js +123 -129
- 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.js +58 -48
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -21
- package/src/adapters/node/server-adapter.d.ts +0 -1
- package/src/adapters/node/server-adapter.js +347 -326
- package/src/adapters/node/static-content-server.js +172 -191
- package/src/adapters/node/static-preview-host.js +87 -78
- 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/hmr-html-response.js +46 -32
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +29 -38
- package/src/adapters/shared/hmr/shared-hmr-manager.js +439 -425
- package/src/adapters/shared/http/api-request-pipeline.js +122 -119
- package/src/adapters/shared/http/api-response.js +77 -77
- package/src/adapters/shared/http/create-body-response.js +22 -19
- package/src/adapters/shared/http/define-api-handler.js +41 -55
- package/src/adapters/shared/http/explicit-static-render-preparation.js +26 -23
- package/src/adapters/shared/http/explicit-static-route-matcher.js +55 -62
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +81 -75
- package/src/adapters/shared/http/fs-server-response-factory.js +101 -96
- package/src/adapters/shared/http/fs-server-response-matcher.js +239 -257
- package/src/adapters/shared/http/run-middleware-chain.js +15 -15
- package/src/adapters/shared/runtime/application-adapter.js +72 -87
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +25 -22
- package/src/adapters/shared/runtime/port-manager.js +207 -177
- package/src/adapters/shared/runtime/render-context.js +94 -79
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +33 -38
- package/src/adapters/shared/runtime/runtime-host.js +1 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +2 -3
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +65 -51
- package/src/adapters/shared/runtime/server-adapter.d.ts +1 -0
- package/src/adapters/shared/runtime/server-adapter.js +233 -217
- package/src/adapters/shared/runtime/server-route-handler.js +74 -70
- package/src/adapters/shared/runtime/server-static-builder.js +165 -184
- package/src/adapters/shared/runtime/static-preview-host.js +1 -0
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +97 -88
- package/src/adapters/shared/ws/websocket-lifecycle.js +57 -50
- package/src/build/README.md +52 -1
- package/src/build/app-build-manifest-runtime.js +129 -108
- package/src/build/browser/browser-runtime-manifest.js +47 -50
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -12
- package/src/build/browser/browser-runtime-plugin.js +206 -160
- package/src/build/browser/jsx-ownership-plugins.js +51 -37
- package/src/build/browser/lit-static-render-worker-context.js +3 -5
- package/src/build/build-adapter.js +276 -139
- package/src/build/cache/build-input-fingerprint.js +28 -26
- package/src/build/cache/cache-constants.js +4 -6
- package/src/build/cache/cache-keys.js +64 -56
- package/src/build/cache/pages-unified-graph-build.js +179 -178
- package/src/build/cache/production-build-cache.js +47 -54
- package/src/build/cache/server-entry-build-cache.js +134 -146
- package/src/build/contracts/build-contracts.d.ts +4 -4
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.js +58 -43
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/rolldown/rolldown-adapter-helpers.d.ts +9 -0
- package/src/build/rolldown/rolldown-adapter-helpers.js +405 -298
- package/src/build/rolldown/rolldown-build-adapter.js +53 -61
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +31 -35
- package/src/build/rolldown/rolldown-plugin-bridge.js +264 -194
- package/src/build/rolldown/rolldown-source-transform-pass.js +59 -50
- package/src/build/rolldown/runtime-build-output-normalizer.js +227 -175
- package/src/build/rolldown/server-side-css-shim-plugin.js +54 -31
- package/src/build/runtime/build-profile-options.js +36 -36
- package/src/build/runtime/build-request-identity.js +70 -45
- package/src/build/runtime/build-request-policy.js +80 -42
- package/src/build/runtime/build-runtime.js +64 -54
- package/src/build/runtime/deduping-build-executor.js +38 -32
- package/src/build/runtime/parallel-build-executor.js +58 -50
- package/src/build/runtime/serialized-build-executor.js +78 -62
- package/src/cache/index.js +6 -6
- package/src/cache/module-parse-cache.js +99 -68
- package/src/client/navigation-scripts/classification.js +45 -37
- package/src/client/navigation-scripts/index.js +3 -23
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +58 -62
- package/src/client/navigation-scripts/registry.js +15 -11
- package/src/client/navigation-scripts/rerun-queue.js +81 -64
- package/src/client/scroll.js +32 -24
- package/src/client/scroll.test.browser.js +27 -33
- package/src/client/view-transitions.js +68 -55
- package/src/config/config-builder.d.ts +8 -0
- package/src/config/config-builder.js +637 -642
- package/src/config/constants.js +44 -24
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.js +7 -12
- package/src/dev/dev-client-ownership.js +7 -5
- package/src/dev/hmr-manager-registry.js +7 -12
- package/src/dev/host-runtime.js +25 -30
- package/src/dev/runtime-server-started-message.js +2 -5
- 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 +110 -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 +27 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +145 -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 +51 -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.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +31 -0
- package/src/dev-toolbar/dev-toolbar-package.js +72 -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.js +34 -28
- package/src/diagnostics/startup-trace.d.ts +10 -1
- package/src/diagnostics/startup-trace.js +269 -241
- package/src/eco/README.md +6 -0
- package/src/eco/eco-declared-component.js +19 -14
- package/src/eco/eco.browser.js +56 -69
- package/src/eco/eco.js +156 -96
- package/src/eco/eco.types.js +5 -0
- 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.js +59 -49
- package/src/errors/http-error.js +50 -49
- package/src/errors/index.js +3 -12
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.js +15 -15
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +10 -0
- package/src/hmr/client/hmr-runtime.js +117 -113
- 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 +11 -39
- package/src/hmr/hmr-entrypoint-output.js +28 -54
- package/src/hmr/hmr-file-change-prep.js +13 -16
- 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 +5 -11
- package/src/hmr/hmr-strategy.js +113 -61
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -95
- package/src/hmr/strategies/js-hmr-strategy.js +104 -217
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +33 -27
- package/src/index.browser.js +1 -4
- package/src/index.d.ts +1 -0
- package/src/index.js +6 -47
- package/src/integrations/ghtml/ghtml-renderer.js +12 -7
- package/src/integrations/ghtml/ghtml.constants.js +1 -4
- package/src/integrations/ghtml/ghtml.plugin.js +9 -12
- 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/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.js +33 -47
- package/src/plugins/define-integration.js +18 -17
- package/src/plugins/eco-component-meta-plugin.js +387 -145
- package/src/plugins/foreign-jsx-override-plugin.js +49 -35
- package/src/plugins/integration-plugin.js +212 -203
- package/src/plugins/jsx-import-source.utils.js +16 -21
- package/src/plugins/processor.js +159 -149
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.js +109 -79
- package/src/plugins/tsconfig-import-resolver.d.ts +17 -0
- package/src/plugins/tsconfig-import-resolver.js +218 -142
- package/src/route-renderer/README.md +12 -1
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +143 -136
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +33 -27
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +173 -126
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +165 -154
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +329 -341
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +33 -32
- package/src/route-renderer/orchestration/integration-renderer.d.ts +1 -0
- package/src/route-renderer/orchestration/integration-renderer.js +731 -750
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +168 -172
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +119 -131
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +82 -91
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +82 -76
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +29 -31
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +10 -6
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +31 -28
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +3 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +430 -413
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +191 -212
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +20 -24
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +24 -24
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +22 -24
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +41 -34
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +5 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +42 -22
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +50 -48
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +29 -32
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +150 -156
- package/src/route-renderer/orchestration/string-markup-renderer.js +48 -51
- package/src/route-renderer/page-loading/component-dependency-collection.js +120 -124
- 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.js +68 -54
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +46 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +38 -31
- 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.js +130 -124
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/client/link-intent.js +55 -39
- package/src/router/client/link-intent.test.browser.js +49 -49
- package/src/router/client/link-navigation-policy.js +114 -93
- package/src/router/client/link-navigation-policy.test.browser.js +70 -80
- package/src/router/client/navigation-coordinator.js +235 -211
- package/src/router/server/route-registry.js +237 -242
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -53
- package/src/services/assets/asset-processing-service/asset-processing.service.js +287 -303
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- 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.js +106 -69
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -53
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +4 -6
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +79 -80
- package/src/services/assets/asset-processing-service/index.js +8 -8
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +22 -16
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +21 -17
- 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.js +102 -117
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +110 -115
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -97
- 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.js +27 -29
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +34 -40
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +36 -35
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +14 -16
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -39
- package/src/services/assets/browser-bundle.service.js +52 -47
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/index.js +6 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.js +156 -145
- package/src/services/cache/page-request-cache-coordinator.service.js +102 -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.js +252 -241
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +107 -101
- 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.js +235 -243
- package/src/services/module-loading/route-module-build-cache-registry.js +47 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.js +195 -200
- package/src/services/module-loading/route-module-build-manifest.js +61 -74
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -110
- package/src/services/module-loading/server-module-transpiler.service.js +68 -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.js +157 -95
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.js +13 -13
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +35 -19
- package/src/static-site-generator/sitemap-routes.js +33 -28
- package/src/static-site-generator/sitemap.js +38 -29
- package/src/static-site-generator/static-build-invalidation.js +34 -56
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.js +517 -553
- package/src/types/internal-types.d.ts +19 -3
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +16 -46
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.js +27 -23
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.js +21 -8
- package/src/utils/html.js +1 -4
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.js +73 -65
- package/src/utils/path-pattern.js +38 -23
- 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.js +60 -52
- package/src/utils/static-file-extensions.js +52 -46
- package/src/watchers/project-watcher-ignore.js +16 -15
- package/src/watchers/project-watcher.js +385 -366
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.d.ts +0 -56
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +0 -106
- package/src/build/cache/dev-browser-script-cache.d.ts +0 -34
- package/src/build/cache/dev-browser-script-cache.js +0 -90
|
@@ -1,54 +1,79 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import { createJsxCacheKey, createPluginCacheKey, createSourceTransformCacheKey } from
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { createJsxCacheKey, createPluginCacheKey, createSourceTransformCacheKey } from '../cache/cache-keys.js';
|
|
3
3
|
function normalizeEntrypoints(entrypoints) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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('|');
|
|
8
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Preserves list order for collections where Rolldown precedence depends on position.
|
|
17
|
+
*/
|
|
9
18
|
function normalizeOrderedStringList(values, label) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
19
|
+
if (!values || values.length === 0) {
|
|
20
|
+
return `${label}:default`;
|
|
21
|
+
}
|
|
22
|
+
return `${label}:${values.join(',')}`;
|
|
14
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Sorts unordered sets so equivalent membership produces one identity.
|
|
26
|
+
*/
|
|
15
27
|
function normalizeUnorderedStringList(values, label) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
if (!values || values.length === 0) {
|
|
29
|
+
return `${label}:default`;
|
|
30
|
+
}
|
|
31
|
+
return `${label}:${[...values].sort().join(',')}`;
|
|
20
32
|
}
|
|
21
33
|
function normalizeDefine(define) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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(',')}`;
|
|
26
41
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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('::');
|
|
49
77
|
}
|
|
50
|
-
|
|
51
|
-
export
|
|
52
|
-
createBuildOptionsDedupeKey,
|
|
53
|
-
createBuildRequestIdentity
|
|
54
|
-
};
|
|
78
|
+
/** @deprecated Use {@link createBuildRequestIdentity}. */
|
|
79
|
+
export const createBuildOptionsDedupeKey = createBuildRequestIdentity;
|
|
@@ -1,46 +1,84 @@
|
|
|
1
|
-
import { getAppBrowserBuildPlugins, getAppServerBuildPlugins, getAppTranspileOptions } from
|
|
2
|
-
import { resolveBuildProfileOptions } from
|
|
3
|
-
import { getJsxOwnershipPlugins } from
|
|
4
|
-
import { getAppSourceTransforms } from
|
|
5
|
-
|
|
6
|
-
|
|
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
|
+
* loader-fallback 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)];
|
|
7
15
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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];
|
|
15
32
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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}. Does not attach `sourceTransforms` — unlike
|
|
40
|
+
* {@link createBrowserBuildRequest}. Pass the returned options into
|
|
41
|
+
* {@link BuildRuntime.getProfile}; the runtime no longer injects plugins.
|
|
42
|
+
*/
|
|
43
|
+
export function createServerBuildRequest(appConfig, input) {
|
|
44
|
+
const profile = input.profile ?? 'route-module';
|
|
45
|
+
const plugins = mergeCallerBuildPlugins(resolveServerAppBuildPlugins(appConfig), input.plugins);
|
|
46
|
+
const { plugins: _callerPlugins, profile: _profile, ...overrides } = input;
|
|
47
|
+
return {
|
|
48
|
+
...resolveBuildProfileOptions(profile, appConfig, overrides),
|
|
49
|
+
...overrides,
|
|
50
|
+
entrypoints: input.entrypoints,
|
|
51
|
+
...(plugins.length > 0 ? { plugins } : {}),
|
|
52
|
+
};
|
|
26
53
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
+
};
|
|
40
84
|
}
|
|
41
|
-
export {
|
|
42
|
-
createBrowserBuildRequest,
|
|
43
|
-
createServerBuildRequest,
|
|
44
|
-
mergeCallerBuildPlugins,
|
|
45
|
-
resolveServerAppBuildPlugins
|
|
46
|
-
};
|
|
@@ -1,65 +1,75 @@
|
|
|
1
|
-
import { availableParallelism } from
|
|
2
|
-
import { getAppBuildAdapter } from
|
|
3
|
-
import { ParallelBuildExecutor } from
|
|
4
|
-
import { DedupingBuildExecutor } from
|
|
5
|
-
import { SerializedBuildExecutor } from
|
|
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
6
|
function resolveParallelismLimit() {
|
|
7
|
-
|
|
7
|
+
return Math.max(1, availableParallelism() - 1);
|
|
8
8
|
}
|
|
9
9
|
function patchAppRuntime(appConfig, patch) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
appConfig.runtime = {
|
|
11
|
+
...(appConfig.runtime ?? {}),
|
|
12
|
+
...patch,
|
|
13
|
+
};
|
|
14
14
|
}
|
|
15
15
|
class AppBuildRuntime {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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;
|
|
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)));
|
|
34
25
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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() { }
|
|
45
44
|
}
|
|
46
|
-
function getBuildRuntime(appConfig) {
|
|
47
|
-
|
|
45
|
+
export function getBuildRuntime(appConfig) {
|
|
46
|
+
return appConfig.runtime?.buildRuntime;
|
|
48
47
|
}
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Returns the installed build runtime, installing it when missing.
|
|
50
|
+
*/
|
|
51
|
+
export function requireBuildRuntime(appConfig) {
|
|
52
|
+
return getBuildRuntime(appConfig) ?? installBuildRuntime(appConfig);
|
|
51
53
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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;
|
|
56
69
|
}
|
|
57
|
-
|
|
58
|
-
|
|
70
|
+
/**
|
|
71
|
+
* No-op retained for server teardown call sites.
|
|
72
|
+
*/
|
|
73
|
+
export async function disposeAppBuildRuntime(appConfig) {
|
|
74
|
+
await getBuildRuntime(appConfig)?.dispose();
|
|
59
75
|
}
|
|
60
|
-
export {
|
|
61
|
-
disposeAppBuildRuntime,
|
|
62
|
-
getBuildRuntime,
|
|
63
|
-
installBuildRuntime,
|
|
64
|
-
requireBuildRuntime
|
|
65
|
-
};
|
|
@@ -1,34 +1,40 @@
|
|
|
1
|
-
import { createBuildRequestIdentity } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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;
|
|
14
39
|
}
|
|
15
|
-
const buildPromise = this.inner.build(options).finally(() => {
|
|
16
|
-
if (this.inFlight.get(key) === buildPromise) {
|
|
17
|
-
this.inFlight.delete(key);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
this.inFlight.set(key, buildPromise);
|
|
21
|
-
return buildPromise;
|
|
22
|
-
}
|
|
23
|
-
unwrap() {
|
|
24
|
-
return this.inner;
|
|
25
|
-
}
|
|
26
|
-
getInFlightCountForTests() {
|
|
27
|
-
return this.inFlight.size;
|
|
28
|
-
}
|
|
29
40
|
}
|
|
30
|
-
export {
|
|
31
|
-
DedupingBuildExecutor,
|
|
32
|
-
createBuildOptionsDedupeKey,
|
|
33
|
-
createBuildRequestIdentity2 as createBuildRequestIdentity
|
|
34
|
-
};
|
|
@@ -1,52 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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;
|
|
35
59
|
}
|
|
36
|
-
}
|
|
37
|
-
unwrap() {
|
|
38
|
-
return this.inner;
|
|
39
|
-
}
|
|
40
|
-
getConcurrencyLimitForTests() {
|
|
41
|
-
return this.limit;
|
|
42
|
-
}
|
|
43
|
-
getActiveCountForTests() {
|
|
44
|
-
return this.activeCount;
|
|
45
|
-
}
|
|
46
|
-
getQueuedCountForTests() {
|
|
47
|
-
return this.queue.length;
|
|
48
|
-
}
|
|
49
60
|
}
|
|
50
|
-
export {
|
|
51
|
-
ParallelBuildExecutor
|
|
52
|
-
};
|