@overkill-dev/run 0.0.42 → 0.0.44

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.
Files changed (136) hide show
  1. package/assertion-protocol/source-location-forwarding.d.ts +4 -0
  2. package/assertion-protocol/source-location-forwarding.d.ts.map +1 -0
  3. package/engine/case-execution.d.ts +1 -0
  4. package/engine/case-execution.d.ts.map +1 -1
  5. package/engine/case-execution.js +112 -27
  6. package/engine/case-execution.js.map +1 -1
  7. package/engine/execution-async-leak-policy.d.ts.map +1 -1
  8. package/engine/execution-async-leak-policy.js +1 -0
  9. package/engine/execution-async-leak-policy.js.map +1 -1
  10. package/engine/execution-supervision.d.ts +1 -0
  11. package/engine/execution-supervision.d.ts.map +1 -1
  12. package/engine/execution-supervision.js +8 -1
  13. package/engine/execution-supervision.js.map +1 -1
  14. package/engine/execution.d.ts.map +1 -1
  15. package/engine/execution.js +37 -4
  16. package/engine/execution.js.map +1 -1
  17. package/engine/run-result.d.ts +11 -0
  18. package/engine/run-result.d.ts.map +1 -1
  19. package/engine/run-result.js +32 -0
  20. package/engine/run-result.js.map +1 -1
  21. package/engine/test-body-resource-attachment.d.ts.map +1 -1
  22. package/engine/test-body-resource-attachment.js +34 -0
  23. package/engine/test-body-resource-attachment.js.map +1 -1
  24. package/package.json +5 -3
  25. package/packages/engine/engine.entry-point.d.ts +54 -0
  26. package/packages/engine/engine.entry-point.d.ts.map +1 -0
  27. package/packages/engine/engine.entry-point.js +1 -0
  28. package/packages/engine/engine.entry-point.js.map +1 -1
  29. package/packages/run/command-line.entry-point.d.ts.map +1 -1
  30. package/packages/run/command-line.entry-point.js +3 -2
  31. package/packages/run/command-line.entry-point.js.map +1 -1
  32. package/packages/run/run.entry-point.d.ts +1 -1
  33. package/packages/run/run.entry-point.d.ts.map +1 -1
  34. package/readme.md +17 -8
  35. package/run/child-process-protocol.js +30 -0
  36. package/run/child-process-protocol.js.map +1 -0
  37. package/run/child-process-roles.js +13 -0
  38. package/run/child-process-roles.js.map +1 -0
  39. package/run/child-process.entry-point.js +15 -0
  40. package/run/child-process.entry-point.js.map +1 -0
  41. package/run/current-process-run-orchestrator.d.ts +1 -0
  42. package/run/current-process-run-orchestrator.d.ts.map +1 -1
  43. package/run/current-process-run-orchestrator.js +1 -0
  44. package/run/current-process-run-orchestrator.js.map +1 -1
  45. package/run/node-command-line-runner.d.ts +2 -0
  46. package/run/node-command-line-runner.d.ts.map +1 -1
  47. package/run/node-command-line-runner.js +2 -1
  48. package/run/node-command-line-runner.js.map +1 -1
  49. package/run/node-worker-pool-factory.js +13 -0
  50. package/run/node-worker-pool-factory.js.map +1 -0
  51. package/run/resource-usage.d.ts +3 -1
  52. package/run/resource-usage.d.ts.map +1 -1
  53. package/run/resource-usage.js +2 -2
  54. package/run/resource-usage.js.map +1 -1
  55. package/run/run-collected-resolution.js +7 -4
  56. package/run/run-collected-resolution.js.map +1 -1
  57. package/run/run-config-schema.d.ts +27 -195
  58. package/run/run-config-schema.d.ts.map +1 -1
  59. package/run/run-config-schema.js +27 -2
  60. package/run/run-config-schema.js.map +1 -1
  61. package/run/run-config.d.ts +29 -14
  62. package/run/run-config.d.ts.map +1 -1
  63. package/run/run-config.js +7 -10
  64. package/run/run-config.js.map +1 -1
  65. package/run/run-facts.js +2 -0
  66. package/run/run-facts.js.map +1 -1
  67. package/run/run-host-process.js +86 -0
  68. package/run/run-host-process.js.map +1 -0
  69. package/run/run-if-main.d.ts.map +1 -1
  70. package/run/run-if-main.js +2 -1
  71. package/run/run-if-main.js.map +1 -1
  72. package/run/run-input-resolution.js +0 -12
  73. package/run/run-input-resolution.js.map +1 -1
  74. package/run/run-isolated-command.js +7 -1
  75. package/run/run-isolated-command.js.map +1 -1
  76. package/run/run-local-resolution.js +3 -4
  77. package/run/run-local-resolution.js.map +1 -1
  78. package/run/run-orchestrator-dependencies.d.ts +19 -6
  79. package/run/run-orchestrator-dependencies.d.ts.map +1 -1
  80. package/run/run-orchestrator.d.ts +2 -1
  81. package/run/run-orchestrator.d.ts.map +1 -1
  82. package/run/run-orchestrator.entry-point.d.ts +1 -0
  83. package/run/run-orchestrator.entry-point.d.ts.map +1 -1
  84. package/run/run-orchestrator.entry-point.js +47 -40
  85. package/run/run-orchestrator.entry-point.js.map +1 -1
  86. package/run/run-orchestrator.js +5 -2
  87. package/run/run-orchestrator.js.map +1 -1
  88. package/run/run-selection.js +44 -0
  89. package/run/run-selection.js.map +1 -1
  90. package/run/run-support.js +15 -1
  91. package/run/run-support.js.map +1 -1
  92. package/run/run-types.d.ts +36 -1
  93. package/run/run-types.d.ts.map +1 -1
  94. package/run/run-types.js.map +1 -1
  95. package/run/run-validation.js +4 -0
  96. package/run/run-validation.js.map +1 -1
  97. package/run/supervised-child-process.d.ts +3 -3
  98. package/run/supervised-child-process.d.ts.map +1 -1
  99. package/run/supervised-child-process.js +4 -4
  100. package/run/supervised-child-process.js.map +1 -1
  101. package/run/supervised-child.entry-point.js +14 -7
  102. package/run/supervised-child.entry-point.js.map +1 -1
  103. package/run/supervised-protocol.js +9 -0
  104. package/run/supervised-protocol.js.map +1 -0
  105. package/run/supervised-run-runtime.js +8 -4
  106. package/run/supervised-run-runtime.js.map +1 -1
  107. package/run/supervised-run.js +17 -6
  108. package/run/supervised-run.js.map +1 -1
  109. package/run/tinypool-node-compatibility.js.map +1 -1
  110. package/run/work-distribution-config.js +42 -12
  111. package/run/work-distribution-config.js.map +1 -1
  112. package/run/work-unit-planning.js +184 -67
  113. package/run/work-unit-planning.js.map +1 -1
  114. package/run/worker-pool-collection.js +18 -6
  115. package/run/worker-pool-collection.js.map +1 -1
  116. package/run/worker-pool-execution.js +13 -4
  117. package/run/worker-pool-execution.js.map +1 -1
  118. package/run/worker-pool-host-process.js +328 -0
  119. package/run/worker-pool-host-process.js.map +1 -0
  120. package/run/worker-pool-host-protocol.js +50 -0
  121. package/run/worker-pool-host-protocol.js.map +1 -0
  122. package/run/worker-pool-host.entry-point.js +164 -0
  123. package/run/worker-pool-host.entry-point.js.map +1 -0
  124. package/run/worker-pool-lanes.js +132 -0
  125. package/run/worker-pool-lanes.js.map +1 -0
  126. package/run/worker-pool-run.js +36 -9
  127. package/run/worker-pool-run.js.map +1 -1
  128. package/run/worker-pool-runtime.js +273 -19
  129. package/run/worker-pool-runtime.js.map +1 -1
  130. package/run/worker-pool-worker-plan.js +7 -4
  131. package/run/worker-pool-worker-plan.js.map +1 -1
  132. package/sbom.cdx.json +4 -4
  133. package/run/supervised-child-process.entry-point.js +0 -6
  134. package/run/supervised-child-process.entry-point.js.map +0 -1
  135. package/run/supervised-protocol.d.ts +0 -49
  136. package/run/supervised-protocol.d.ts.map +0 -1
@@ -0,0 +1,164 @@
1
+ import { MessageChannel as NodeMessageChannel } from 'node:worker_threads';
2
+ import { createWallClock } from '@enormora/wall-clock';
3
+ import { childProcessEnvelope, envelopeMessage } from "./child-process-protocol.js";
4
+ import { createNodeResourceUsageTracker } from "./resource-usage.js";
5
+ import { createTinypoolWorkerPool, workerPoolEntryPoint } from "./worker-pool-runtime.js";
6
+ import { serializeError, serializeWorkerPoolMessage, workerPoolHostCorrelationId } from "./worker-pool-host-protocol.js";
7
+ const sendMessage = process.send?.bind(process);
8
+ function createStoredValue(initialValue) {
9
+ let currentValue = initialValue;
10
+ return {
11
+ read() {
12
+ return currentValue;
13
+ },
14
+ write(value) {
15
+ currentValue = value;
16
+ }
17
+ };
18
+ }
19
+ function createActiveHostTasks() {
20
+ const tasks = new Map();
21
+ return {
22
+ delete(taskId) {
23
+ return tasks.delete(taskId);
24
+ },
25
+ get(taskId) {
26
+ return tasks.get(taskId);
27
+ },
28
+ set(taskId, task) {
29
+ tasks.set(taskId, task);
30
+ }
31
+ };
32
+ }
33
+ const state = {
34
+ activeTasks: createActiveHostTasks(),
35
+ commandHandling: createStoredValue(null),
36
+ pool: createStoredValue(null),
37
+ resourceUsageTracker: createStoredValue(null)
38
+ };
39
+ function send(message) {
40
+ sendMessage?.(childProcessEnvelope(workerPoolHostCorrelationId, message));
41
+ }
42
+ function portTransferList(port) {
43
+ return [port];
44
+ }
45
+ function configuredPool(hostState) {
46
+ const pool = hostState.pool.read();
47
+ if (pool === null) {
48
+ throw new Error('Hosted worker pool was not configured.');
49
+ }
50
+ return pool;
51
+ }
52
+ function configure(command) {
53
+ state.pool.write(createTinypoolWorkerPool({
54
+ ...command.options,
55
+ filename: workerPoolEntryPoint
56
+ }));
57
+ send({ kind: 'configured' });
58
+ }
59
+ function forwardTaskMessage(taskId, message) {
60
+ send({
61
+ kind: 'task-message',
62
+ message: serializeWorkerPoolMessage(message),
63
+ taskId
64
+ });
65
+ }
66
+ function taskWithHostPort(command) {
67
+ const { port1, port2 } = new NodeMessageChannel();
68
+ const controller = new AbortController();
69
+ state.activeTasks.set(command.taskId, { controller, port: port2 });
70
+ port2.on('message', function receiveTaskMessage(message) {
71
+ forwardTaskMessage(command.taskId, message);
72
+ });
73
+ return {
74
+ controller,
75
+ port1,
76
+ task: {
77
+ ...command.task,
78
+ port: port1
79
+ }
80
+ };
81
+ }
82
+ async function runTask(command) {
83
+ const task = taskWithHostPort(command);
84
+ try {
85
+ send({
86
+ kind: 'task-result',
87
+ result: await configuredPool(state).run(task.task, {
88
+ name: 'runTask',
89
+ signal: task.controller.signal,
90
+ transferList: portTransferList(task.port1)
91
+ }),
92
+ taskId: command.taskId
93
+ });
94
+ }
95
+ catch (error) {
96
+ send({
97
+ error: serializeError(error),
98
+ kind: 'task-error',
99
+ taskId: command.taskId
100
+ });
101
+ }
102
+ finally {
103
+ task.port1.close();
104
+ state.activeTasks.get(command.taskId)?.port.close();
105
+ state.activeTasks.delete(command.taskId);
106
+ }
107
+ }
108
+ function abortTask(command) {
109
+ state.activeTasks.get(command.taskId)?.controller.abort();
110
+ }
111
+ function startResourceTracking(command) {
112
+ state.resourceUsageTracker.write(createNodeResourceUsageTracker(createWallClock(), {
113
+ samplingIntervalMilliseconds: command.samplingIntervalMilliseconds
114
+ }));
115
+ state.resourceUsageTracker.read()?.start(function sendSample(sample) {
116
+ send({ kind: 'resource-sample', sample });
117
+ });
118
+ }
119
+ function finishResourceTracking() {
120
+ const resourceUsageTracker = state.resourceUsageTracker.read();
121
+ if (resourceUsageTracker === null) {
122
+ return;
123
+ }
124
+ send({
125
+ kind: 'resource-usage',
126
+ resourceUsage: resourceUsageTracker.finish()
127
+ });
128
+ state.resourceUsageTracker.write(null);
129
+ }
130
+ async function destroy() {
131
+ const poolToDestroy = state.pool.read();
132
+ state.pool.write(null);
133
+ finishResourceTracking();
134
+ await poolToDestroy?.destroy();
135
+ send({ kind: 'destroyed' });
136
+ process.disconnect?.();
137
+ }
138
+ function handleCommand(command) {
139
+ if (command.kind === 'configure') {
140
+ configure(command);
141
+ }
142
+ else if (command.kind === 'run-task') {
143
+ state.commandHandling.write(runTask(command));
144
+ }
145
+ else if (command.kind === 'abort-task') {
146
+ abortTask(command);
147
+ }
148
+ else if (command.kind === 'start-resource-tracking') {
149
+ startResourceTracking(command);
150
+ }
151
+ else if (command.kind === 'finish-resource-tracking') {
152
+ finishResourceTracking();
153
+ }
154
+ else {
155
+ state.commandHandling.write(destroy());
156
+ }
157
+ }
158
+ process.on('message', function receiveHostCommand(message) {
159
+ const command = envelopeMessage(message, workerPoolHostCorrelationId);
160
+ if (command !== null) {
161
+ handleCommand(command);
162
+ }
163
+ });
164
+ //# sourceMappingURL=worker-pool-host.entry-point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-pool-host.entry-point.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-host.entry-point.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import { invalidRequest } from "./run-errors.js";
2
+ const maximumWorkerCount = 8;
3
+ const mixedLifecycleCount = 2;
4
+ const freshWorkerLifecycle = 'fresh-worker-per-unit';
5
+ const reuseWorkerLifecycle = 'reuse';
6
+ const workerLifecycles = [reuseWorkerLifecycle, freshWorkerLifecycle];
7
+ function defaultWorkerCount(availableParallelism, unitCount) {
8
+ if (!Number.isSafeInteger(availableParallelism) || availableParallelism <= 0) {
9
+ invalidRequest('Available parallelism must be a positive safe integer.');
10
+ }
11
+ if (unitCount === 0) {
12
+ return 0;
13
+ }
14
+ return Math.min(Math.max(availableParallelism - 1, 1), maximumWorkerCount, unitCount);
15
+ }
16
+ function lifecycleCount(units, workerLifecycle) {
17
+ return units
18
+ .filter(function hasWorkerLifecycle(unit) {
19
+ return unit.workerLifecycle === workerLifecycle;
20
+ })
21
+ .length;
22
+ }
23
+ function hasMixedLifecycles(units) {
24
+ return lifecycleCount(units, freshWorkerLifecycle) > 0 &&
25
+ lifecycleCount(units, reuseWorkerLifecycle) > 0;
26
+ }
27
+ function firstUnitWorkerLifecycle(units) {
28
+ return units.reduce(function keepFirstLifecycle(firstLifecycle, unit, index) {
29
+ return index === 0 ? unit.workerLifecycle : firstLifecycle;
30
+ }, reuseWorkerLifecycle);
31
+ }
32
+ function workerCount(input) {
33
+ const baseWorkerCount = defaultWorkerCount(input.availableParallelism, input.units.length);
34
+ return hasMixedLifecycles(input.units)
35
+ ? Math.max(baseWorkerCount, mixedLifecycleCount)
36
+ : baseWorkerCount;
37
+ }
38
+ function placementLane(index) {
39
+ const id = `worker-${index + 1}`;
40
+ return {
41
+ executor: {
42
+ capabilities: [],
43
+ capacity: 1,
44
+ id,
45
+ kind: 'local-worker'
46
+ },
47
+ id
48
+ };
49
+ }
50
+ export function workerPoolLanes(input) {
51
+ return Array.from({ length: workerCount(input) }, function toLane(_value, index) {
52
+ return placementLane(index);
53
+ });
54
+ }
55
+ function proportionalExtraLaneLifecycle(units, remainingLanes, tiedLifecycle) {
56
+ const freshUnits = lifecycleCount(units, freshWorkerLifecycle);
57
+ const reuseUnits = lifecycleCount(units, reuseWorkerLifecycle);
58
+ const totalUnits = freshUnits + reuseUnits;
59
+ const freshRemainder = remainingLanes * freshUnits / totalUnits % 1;
60
+ const reuseRemainder = remainingLanes * reuseUnits / totalUnits % 1;
61
+ if (freshRemainder !== reuseRemainder) {
62
+ return freshRemainder > reuseRemainder ? freshWorkerLifecycle : reuseWorkerLifecycle;
63
+ }
64
+ return tiedLifecycle;
65
+ }
66
+ function mixedLifecycleBaseLaneCounts(units, totalLaneCount) {
67
+ const freshUnits = lifecycleCount(units, freshWorkerLifecycle);
68
+ const reuseUnits = lifecycleCount(units, reuseWorkerLifecycle);
69
+ const remainingLanes = totalLaneCount - mixedLifecycleCount;
70
+ const unitCount = freshUnits + reuseUnits;
71
+ return {
72
+ freshLanes: 1 + Math.floor(remainingLanes * freshUnits / unitCount),
73
+ remainingLanes,
74
+ reuseLanes: 1 + Math.floor(remainingLanes * reuseUnits / unitCount)
75
+ };
76
+ }
77
+ function mixedLifecycleLaneCounts(units, totalLaneCount) {
78
+ let { freshLanes, remainingLanes, reuseLanes } = mixedLifecycleBaseLaneCounts(units, totalLaneCount);
79
+ if (freshLanes + reuseLanes < totalLaneCount) {
80
+ const targetLifecycle = proportionalExtraLaneLifecycle(units, remainingLanes, firstUnitWorkerLifecycle(units));
81
+ if (targetLifecycle === freshWorkerLifecycle) {
82
+ freshLanes += 1;
83
+ }
84
+ else {
85
+ reuseLanes += 1;
86
+ }
87
+ }
88
+ return new Map([
89
+ [freshWorkerLifecycle, freshLanes],
90
+ [reuseWorkerLifecycle, reuseLanes]
91
+ ]);
92
+ }
93
+ function lifecycleLaneCounts(units, totalLaneCount) {
94
+ if (lifecycleCount(units, freshWorkerLifecycle) === 0) {
95
+ return new Map([[reuseWorkerLifecycle, totalLaneCount]]);
96
+ }
97
+ if (lifecycleCount(units, reuseWorkerLifecycle) === 0) {
98
+ return new Map([[freshWorkerLifecycle, totalLaneCount]]);
99
+ }
100
+ return mixedLifecycleLaneCounts(units, totalLaneCount);
101
+ }
102
+ function lanesByLifecycle(lanes, units) {
103
+ const counts = lifecycleLaneCounts(units, lanes.length);
104
+ let nextLaneIndex = 0;
105
+ return new Map(workerLifecycles.map(function toLifecycleLanes(workerLifecycle) {
106
+ const laneCount = counts.get(workerLifecycle) ?? 0;
107
+ const lifecycleLanes = lanes.slice(nextLaneIndex, nextLaneIndex + laneCount);
108
+ nextLaneIndex += laneCount;
109
+ return [workerLifecycle, lifecycleLanes];
110
+ }));
111
+ }
112
+ function assignedLane(lanes, unitIndex) {
113
+ const lane = lanes[unitIndex % lanes.length];
114
+ if (lane === undefined) {
115
+ throw new Error('Worker-pool placement requires at least one lane.');
116
+ }
117
+ return lane;
118
+ }
119
+ export function workerPoolPlacementAssignments(units, lanes) {
120
+ const lifecycleLanes = lanesByLifecycle(lanes, units);
121
+ const lifecycleIndexes = new Map();
122
+ return units.map(function toAssignment(unit) {
123
+ const lanesForUnit = lifecycleLanes.get(unit.workerLifecycle) ?? [];
124
+ const nextIndex = lifecycleIndexes.get(unit.workerLifecycle) ?? 0;
125
+ lifecycleIndexes.set(unit.workerLifecycle, nextIndex + 1);
126
+ return {
127
+ lane: assignedLane(lanesForUnit, nextIndex).id,
128
+ unit: unit.id
129
+ };
130
+ });
131
+ }
132
+ //# sourceMappingURL=worker-pool-lanes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-pool-lanes.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-lanes.ts"],"names":[],"mappings":"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"}
@@ -6,20 +6,34 @@ import { createWorkerPoolRuntime, workerPoolPlacementPlan } from "./worker-pool-
6
6
  export async function collectWorkerPoolRun(command, dependencies) {
7
7
  return await collectInWorkerPool(command, dependencies, createSupervisedRunState());
8
8
  }
9
- async function executeWorkerPoolRunWithState(resolvedRun, dependencies, collectionRunState) {
9
+ async function releaseRuntimePool(runtime) {
10
+ runtime.pool.setHostOutputSink?.(null);
11
+ if (runtime.destroyPool) {
12
+ await runtime.pool.destroy();
13
+ }
14
+ }
15
+ async function finishExecution(runtime, resolvedRun, startedAtMilliseconds) {
16
+ await reportRunStart(runtime, startedAtMilliseconds);
17
+ await startPoolResourceTracking(runtime);
18
+ return await finishWorkerPoolRun(runtime, await executeWorkerPoolUnits(runtime, workerPoolPlacementPlan(resolvedRun), startedAtMilliseconds), startedAtMilliseconds);
19
+ }
20
+ async function executeWorkerPoolRunWithState(resolvedRun, dependencies, collectionRunState, createdPool = null) {
10
21
  if (workerPoolPlacementPlan(resolvedRun).units.length === 0) {
11
22
  return await createEmptyWorkerPoolResult(resolvedRun, dependencies, collectionRunState);
12
23
  }
13
- const runtime = await createWorkerPoolRuntime(resolvedRun, dependencies, resolvedRun.collectionRunnerErrors, collectionRunState);
24
+ const runtime = await createWorkerPoolRuntime({
25
+ collectionRunnerErrors: resolvedRun.collectionRunnerErrors,
26
+ createdPool,
27
+ dependencies,
28
+ resolvedRun,
29
+ runState: collectionRunState
30
+ });
14
31
  const startedAtMilliseconds = dependencies.wallClock.currentTimestampInMilliseconds;
15
32
  try {
16
- await reportRunStart(runtime, startedAtMilliseconds);
17
- startPoolResourceTracking(runtime);
18
- const completedTaskRuns = await executeWorkerPoolUnits(runtime, workerPoolPlacementPlan(resolvedRun), startedAtMilliseconds);
19
- return await finishWorkerPoolRun(runtime, completedTaskRuns, startedAtMilliseconds);
33
+ return await finishExecution(runtime, resolvedRun, startedAtMilliseconds);
20
34
  }
21
35
  finally {
22
- await runtime.pool.destroy();
36
+ await releaseRuntimePool(runtime);
23
37
  }
24
38
  }
25
39
  export async function executeWorkerPoolRun(resolvedRun, dependencies) {
@@ -27,7 +41,20 @@ export async function executeWorkerPoolRun(resolvedRun, dependencies) {
27
41
  }
28
42
  export async function runWorkerPoolCommand(command, dependencies, createResolvedRun) {
29
43
  const collectionRunState = createSupervisedRunState();
30
- const collection = await collectInWorkerPool(command, dependencies, collectionRunState);
31
- return await executeWorkerPoolRunWithState(createResolvedRun(collection), dependencies, collectionRunState);
44
+ const pool = command.hostProcess.kind === 'child'
45
+ ? dependencies.createWorkerPool({
46
+ cwd: command.cwd,
47
+ hostProcess: command.hostProcess,
48
+ workerCount: dependencies.availableParallelism,
49
+ workerLifecycle: command.workerLifecycle
50
+ })
51
+ : null;
52
+ try {
53
+ const collection = await collectInWorkerPool(command, dependencies, collectionRunState, pool);
54
+ return await executeWorkerPoolRunWithState(createResolvedRun(collection), dependencies, collectionRunState, pool);
55
+ }
56
+ finally {
57
+ await pool?.destroy();
58
+ }
32
59
  }
33
60
  //# sourceMappingURL=worker-pool-run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool-run.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-run.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,wBAAwB,EAE3B,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACH,sBAAsB,EACtB,cAAc,EACd,yBAAyB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACH,2BAA2B,EAC3B,mBAAmB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EAE1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,OAA0B,EAC1B,YAAyC;IAEzC,OAAO,MAAM,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,6BAA6B,CACxC,WAAwB,EACxB,YAAyC,EACzC,kBAAsC;IAEtC,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,MAAM,2BAA2B,CAAC,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,uBAAuB,CACzC,WAAW,EACX,YAAY,EACZ,WAAW,CAAC,sBAAsB,EAClC,kBAAkB,CACrB,CAAC;IACF,MAAM,qBAAqB,GAAG,YAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC;IAEpF,IAAI,CAAC;QACD,MAAM,cAAc,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACrD,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAClD,OAAO,EACP,uBAAuB,CAAC,WAAW,CAAC,EACpC,qBAAqB,CACxB,CAAC;QAEF,OAAO,MAAM,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IACxF,CAAC;YAAS,CAAC;QACP,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,WAAwB,EACxB,YAAyC;IAEzC,OAAO,MAAM,6BAA6B,CAAC,WAAW,EAAE,YAAY,EAAE,wBAAwB,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,OAA0B,EAC1B,YAAyC,EACzC,iBAA0E;IAE1E,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAExF,OAAO,MAAM,6BAA6B,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAChH,CAAC"}
1
+ {"version":3,"file":"worker-pool-run.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-run.ts"],"names":[],"mappings":"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"}