@overkill-dev/run 0.0.50 → 0.0.52

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 (107) hide show
  1. package/engine/execution-result.js +3 -2
  2. package/engine/execution-result.js.map +1 -1
  3. package/engine/execution.d.ts.map +1 -1
  4. package/engine/execution.js +1 -0
  5. package/engine/execution.js.map +1 -1
  6. package/engine/run-result.d.ts +3 -0
  7. package/engine/run-result.d.ts.map +1 -1
  8. package/engine/run-result.js +6 -0
  9. package/engine/run-result.js.map +1 -1
  10. package/package.json +4 -1
  11. package/packages/engine/engine.entry-point.d.ts +1 -1
  12. package/packages/engine/engine.entry-point.d.ts.map +1 -1
  13. package/packages/engine/engine.entry-point.js.map +1 -1
  14. package/packages/run/run.entry-point.d.ts +2 -1
  15. package/packages/run/run.entry-point.d.ts.map +1 -1
  16. package/readme.md +13 -3
  17. package/run/collected-run-plan.js +22 -2
  18. package/run/collected-run-plan.js.map +1 -1
  19. package/run/command-line-command.d.ts +1 -0
  20. package/run/command-line-command.d.ts.map +1 -1
  21. package/run/command-line-command.js +1 -1
  22. package/run/command-line-command.js.map +1 -1
  23. package/run/command-line-runner.js +1 -1
  24. package/run/command-line-runner.js.map +1 -1
  25. package/run/placement-trace.d.ts +44 -0
  26. package/run/placement-trace.d.ts.map +1 -0
  27. package/run/placement-trace.js +4 -0
  28. package/run/placement-trace.js.map +1 -0
  29. package/run/run-collected-planning.js +60 -0
  30. package/run/run-collected-planning.js.map +1 -0
  31. package/run/run-collected-resolution.js +10 -57
  32. package/run/run-collected-resolution.js.map +1 -1
  33. package/run/run-collection-error-result.js +1 -0
  34. package/run/run-collection-error-result.js.map +1 -1
  35. package/run/run-config-schema.d.ts +3 -0
  36. package/run/run-config-schema.d.ts.map +1 -1
  37. package/run/run-config-schema.js +5 -0
  38. package/run/run-config-schema.js.map +1 -1
  39. package/run/run-config.d.ts.map +1 -1
  40. package/run/run-config.js +4 -0
  41. package/run/run-config.js.map +1 -1
  42. package/run/run-empty-shard.js +44 -0
  43. package/run/run-empty-shard.js.map +1 -0
  44. package/run/run-errors.d.ts +0 -1
  45. package/run/run-errors.d.ts.map +1 -1
  46. package/run/run-errors.js +0 -3
  47. package/run/run-errors.js.map +1 -1
  48. package/run/run-facts.js +4 -1
  49. package/run/run-facts.js.map +1 -1
  50. package/run/run-if-main-facts.js +2 -1
  51. package/run/run-if-main-facts.js.map +1 -1
  52. package/run/run-in-process-execution.js +15 -0
  53. package/run/run-in-process-execution.js.map +1 -0
  54. package/run/run-isolated-process.js +157 -0
  55. package/run/run-isolated-process.js.map +1 -0
  56. package/run/run-list-renderer.js +4 -1
  57. package/run/run-list-renderer.js.map +1 -1
  58. package/run/run-local-execution.js +37 -0
  59. package/run/run-local-execution.js.map +1 -0
  60. package/run/run-local-resolution.js +49 -5
  61. package/run/run-local-resolution.js.map +1 -1
  62. package/run/run-local-sharding.js +15 -0
  63. package/run/run-local-sharding.js.map +1 -0
  64. package/run/run-shard-hash-algorithm.js +2 -0
  65. package/run/run-shard-hash-algorithm.js.map +1 -0
  66. package/run/run-sharding.js +93 -0
  67. package/run/run-sharding.js.map +1 -0
  68. package/run/run-support.js +1 -0
  69. package/run/run-support.js.map +1 -1
  70. package/run/run-types.d.ts +8 -31
  71. package/run/run-types.d.ts.map +1 -1
  72. package/run/run-types.js.map +1 -1
  73. package/run/run-validation.js +9 -3
  74. package/run/run-validation.js.map +1 -1
  75. package/run/run.js +10 -185
  76. package/run/run.js.map +1 -1
  77. package/run/supervised-child.js +1 -0
  78. package/run/supervised-child.js.map +1 -1
  79. package/run/supervised-run-runtime.js +14 -5
  80. package/run/supervised-run-runtime.js.map +1 -1
  81. package/run/supervised-run.js +1 -1
  82. package/run/supervised-run.js.map +1 -1
  83. package/run/work-unit-planning.js +24 -9
  84. package/run/work-unit-planning.js.map +1 -1
  85. package/run/worker-pool-dispatch-state.js +59 -0
  86. package/run/worker-pool-dispatch-state.js.map +1 -0
  87. package/run/worker-pool-execution.js +50 -132
  88. package/run/worker-pool-execution.js.map +1 -1
  89. package/run/worker-pool-host-process.js +1 -0
  90. package/run/worker-pool-host-process.js.map +1 -1
  91. package/run/worker-pool-host-protocol.js.map +1 -1
  92. package/run/worker-pool-pending-splitting.js +83 -0
  93. package/run/worker-pool-pending-splitting.js.map +1 -0
  94. package/run/worker-pool-placement-planning.js.map +1 -1
  95. package/run/worker-pool-resource-tracking.js +81 -0
  96. package/run/worker-pool-resource-tracking.js.map +1 -0
  97. package/run/worker-pool-results.js +28 -1
  98. package/run/worker-pool-results.js.map +1 -1
  99. package/run/worker-pool-run.js +3 -2
  100. package/run/worker-pool-run.js.map +1 -1
  101. package/run/worker-pool-runtime.js +38 -41
  102. package/run/worker-pool-runtime.js.map +1 -1
  103. package/run/worker-pool-work-dispatcher.js +382 -0
  104. package/run/worker-pool-work-dispatcher.js.map +1 -0
  105. package/run/worker-pool-worker-plan.js +3 -2
  106. package/run/worker-pool-worker-plan.js.map +1 -1
  107. package/sbom.cdx.json +21 -4
@@ -0,0 +1,382 @@
1
+ import { workIdentityKey } from "../engine/identity.js";
2
+ import { traceUnitKey } from "./placement-trace.js";
3
+ import { createChangeWaiters, createLeaseCounter, createWorkUnitQueue } from "./worker-pool-dispatch-state.js";
4
+ import { compareQueuePriority, fixedQueueItem, originalQueueItem, queuedWorkCanSplit, requeuedPriority, splitQueuedWorkUnit } from "./worker-pool-pending-splitting.js";
5
+ const medianDivisor = 2;
6
+ function workUnitIdKey(unit) {
7
+ return JSON.stringify(unit);
8
+ }
9
+ function unitKey(unit) {
10
+ return workUnitIdKey(unit.id);
11
+ }
12
+ function unitByKey(units) {
13
+ return new Map(units.map(function toEntry(unit) {
14
+ return [JSON.stringify(unit.id), unit];
15
+ }));
16
+ }
17
+ function uniqueText(values) {
18
+ return Array.from(new Set(values));
19
+ }
20
+ function hardConstraintKeys(unit) {
21
+ return Array.from(new Set([
22
+ ...unit.resourceConstraints.serialKeys,
23
+ ...unit.resourceConstraints.singleWorkerKeys
24
+ ]));
25
+ }
26
+ function faultReservationKey(faultDomain, lane) {
27
+ return JSON.stringify([faultDomain, lane.id]);
28
+ }
29
+ function knownUnit(units, unitId) {
30
+ const unit = units.get(JSON.stringify(unitId));
31
+ if (unit === undefined) {
32
+ throw new Error('Placement assignment referenced an unknown work unit.');
33
+ }
34
+ return unit;
35
+ }
36
+ function unitsAssignedToLane(plan, lane) {
37
+ const units = unitByKey(plan.units);
38
+ return plan.assignments.flatMap(function toUnit(assignment) {
39
+ if (assignment.lane !== lane.id) {
40
+ return [];
41
+ }
42
+ return [knownUnit(units, assignment.unit)];
43
+ });
44
+ }
45
+ function createDynamicReservations() {
46
+ const hardLaneByKey = new Map();
47
+ const reservedFaultCounts = new Map();
48
+ const retainedLaneByTraceUnit = new Map();
49
+ return {
50
+ bindHardLane(key, lane) {
51
+ hardLaneByKey.set(key, lane.id);
52
+ },
53
+ boundHardLane(key) {
54
+ return hardLaneByKey.get(key);
55
+ },
56
+ decrementFault(faultDomain, lane) {
57
+ const key = faultReservationKey(faultDomain, lane);
58
+ const count = reservedFaultCounts.get(key) ?? 0;
59
+ if (count <= 1) {
60
+ reservedFaultCounts.delete(key);
61
+ return;
62
+ }
63
+ reservedFaultCounts.set(key, count - 1);
64
+ },
65
+ hardKeyIsBound(key) {
66
+ return hardLaneByKey.has(key);
67
+ },
68
+ incrementFault(faultDomain, lane) {
69
+ const key = faultReservationKey(faultDomain, lane);
70
+ reservedFaultCounts.set(key, (reservedFaultCounts.get(key) ?? 0) + 1);
71
+ },
72
+ releaseHardLane(key, lane) {
73
+ if (hardLaneByKey.get(key) === lane.id) {
74
+ hardLaneByKey.delete(key);
75
+ }
76
+ },
77
+ reservedFaultCount(faultDomain, lane) {
78
+ return reservedFaultCounts.get(faultReservationKey(faultDomain, lane)) ?? 0;
79
+ },
80
+ retainedLane(traceUnit) {
81
+ return retainedLaneByTraceUnit.get(traceUnitKey(traceUnit));
82
+ },
83
+ retainUnit(traceUnit, lane) {
84
+ retainedLaneByTraceUnit.set(traceUnitKey(traceUnit), lane.id);
85
+ }
86
+ };
87
+ }
88
+ function createStaticDispatcher(plan) {
89
+ const queues = new Map(plan.lanes.map(function toLaneQueue(lane) {
90
+ return [lane.id, createWorkUnitQueue(unitsAssignedToLane(plan, lane))];
91
+ }));
92
+ const assignedLaneByUnit = new Map(plan.assignments.map(function toAssignmentEntry(assignment) {
93
+ return [JSON.stringify(assignment.unit), assignment.lane];
94
+ }));
95
+ return {
96
+ blocked() {
97
+ return false;
98
+ },
99
+ clear() {
100
+ for (const queue of queues.values()) {
101
+ queue.clear();
102
+ }
103
+ },
104
+ finish() {
105
+ return undefined;
106
+ },
107
+ pull(lane) {
108
+ const unit = queues.get(lane.id)?.takeFirst() ?? null;
109
+ return unit === null
110
+ ? null
111
+ : { lane, reservation: { faultDomains: [], hardKeys: [] }, traceUnit: unit.id, unit };
112
+ },
113
+ requeue(requeuedUnit) {
114
+ const lane = assignedLaneByUnit.get(unitKey(requeuedUnit.unit));
115
+ if (lane === undefined) {
116
+ throw new Error('Static worker-pool dispatch cannot requeue an unassigned work unit.');
117
+ }
118
+ queues.get(lane)?.push(requeuedUnit.unit);
119
+ },
120
+ async waitForChange() {
121
+ return undefined;
122
+ }
123
+ };
124
+ }
125
+ function median(values) {
126
+ const sorted = values.toSorted(function compareNumber(left, right) {
127
+ return left - right;
128
+ });
129
+ const middle = Math.floor(sorted.length / medianDivisor);
130
+ const value = sorted[middle];
131
+ if (value === undefined) {
132
+ return 0;
133
+ }
134
+ return sorted.length % medianDivisor === 1
135
+ ? value
136
+ : ((sorted[middle - 1] ?? value) + value) / medianDivisor;
137
+ }
138
+ function caseCountLoad(unit) {
139
+ return unit.work.length + unit.resourceConstraints.capacityWeight - 1;
140
+ }
141
+ function durationHistoryUnitLoad(samples) {
142
+ const fallbackDuration = median(samples.map(function toDuration(sample) {
143
+ return sample.durationMilliseconds;
144
+ }));
145
+ const durationByWorkKey = new Map(samples.map(function toEntry(sample) {
146
+ return [workIdentityKey(sample.work), sample.durationMilliseconds];
147
+ }));
148
+ return function unitDuration(unit) {
149
+ return unit.work.reduce(function sumDuration(total, work) {
150
+ return total + (durationByWorkKey.get(workIdentityKey(work)) ?? fallbackDuration);
151
+ }, 0) * unit.resourceConstraints.capacityWeight;
152
+ };
153
+ }
154
+ function durationHistoryLoad(runtime) {
155
+ const { durationHistory, execution } = runtime.resolvedRun.facts;
156
+ if (execution.processModel !== 'worker-pool' || execution.assignmentPolicy !== 'duration-history-balanced') {
157
+ return null;
158
+ }
159
+ if (durationHistory === null || durationHistory.samples.length === 0) {
160
+ return null;
161
+ }
162
+ return durationHistoryUnitLoad(durationHistory.samples);
163
+ }
164
+ function runtimeUnitLoad(runtime) {
165
+ return durationHistoryLoad(runtime) ?? caseCountLoad;
166
+ }
167
+ function laneLifecycles(plan) {
168
+ const lifecycles = new Map();
169
+ const units = unitByKey(plan.units);
170
+ for (const assignment of plan.assignments) {
171
+ const unit = knownUnit(units, assignment.unit);
172
+ const existing = lifecycles.get(assignment.lane);
173
+ if (existing !== undefined && existing !== unit.workerLifecycle) {
174
+ throw new Error('Placement lane cannot mix worker lifecycle policies.');
175
+ }
176
+ lifecycles.set(assignment.lane, unit.workerLifecycle);
177
+ }
178
+ return lifecycles;
179
+ }
180
+ function createFaultQuotaLedger(plan) {
181
+ const quotas = new Map();
182
+ const lanes = new Map(plan.lanes.map(function toLaneEntry(lane) {
183
+ return [lane.id, lane];
184
+ }));
185
+ return {
186
+ quotas() {
187
+ return quotas;
188
+ },
189
+ record(unit, laneId) {
190
+ const lane = lanes.get(laneId);
191
+ if (lane === undefined) {
192
+ throw new Error('Placement assignment referenced an unknown lane.');
193
+ }
194
+ for (const faultDomain of uniqueText(unit.resourceConstraints.faultDomains)) {
195
+ const key = faultReservationKey(faultDomain, lane);
196
+ quotas.set(key, (quotas.get(key) ?? 0) + 1);
197
+ }
198
+ }
199
+ };
200
+ }
201
+ function faultQuotas(plan) {
202
+ const ledger = createFaultQuotaLedger(plan);
203
+ const units = unitByKey(plan.units);
204
+ for (const assignment of plan.assignments) {
205
+ ledger.record(knownUnit(units, assignment.unit), assignment.lane);
206
+ }
207
+ return ledger.quotas();
208
+ }
209
+ function createDynamicDispatchState(runtime, plan) {
210
+ const units = unitByKey(plan.units);
211
+ const pendingUnits = plan.assignments.map(function toUnit(assignment, index) {
212
+ return originalQueueItem(knownUnit(units, assignment.unit), index);
213
+ });
214
+ return {
215
+ activeLeases: createLeaseCounter(),
216
+ lanes: plan.lanes,
217
+ lifecycleByLane: laneLifecycles(plan),
218
+ pendingUnits: createWorkUnitQueue(pendingUnits),
219
+ quotas: faultQuotas(plan),
220
+ reservations: createDynamicReservations(),
221
+ runtime,
222
+ unitLoad: runtimeUnitLoad(runtime),
223
+ waiters: createChangeWaiters()
224
+ };
225
+ }
226
+ function laneMatchesLifecycle(state, item, lane) {
227
+ return state.lifecycleByLane.get(lane.id) === item.unit.workerLifecycle;
228
+ }
229
+ function laneMatchesRetainedReservation(state, item, lane) {
230
+ const retainedLane = state.reservations.retainedLane(item.traceUnit);
231
+ return retainedLane === undefined || retainedLane === lane.id;
232
+ }
233
+ function laneMatchesHardKeys(state, item, lane) {
234
+ return hardConstraintKeys(item.unit).every(function keyMatchesLane(key) {
235
+ const boundLane = state.reservations.boundHardLane(key);
236
+ return boundLane === undefined || boundLane === lane.id;
237
+ });
238
+ }
239
+ function laneHasFaultCapacity(state, item, lane) {
240
+ if (state.reservations.retainedLane(item.traceUnit) === lane.id) {
241
+ return true;
242
+ }
243
+ return uniqueText(item.unit.resourceConstraints.faultDomains).every(function domainHasCapacity(faultDomain) {
244
+ const key = faultReservationKey(faultDomain, lane);
245
+ return state.reservations.reservedFaultCount(faultDomain, lane) < (state.quotas.get(key) ?? 0);
246
+ });
247
+ }
248
+ function laneCanLease(state, item, lane) {
249
+ return laneMatchesRetainedReservation(state, item, lane) &&
250
+ laneMatchesLifecycle(state, item, lane) &&
251
+ laneMatchesHardKeys(state, item, lane) &&
252
+ laneHasFaultCapacity(state, item, lane);
253
+ }
254
+ function comparePriority(state, left, right) {
255
+ const loadDifference = state.unitLoad(right.unit) - state.unitLoad(left.unit);
256
+ if (loadDifference !== 0) {
257
+ return loadDifference;
258
+ }
259
+ return compareQueuePriority(left.priority, right.priority);
260
+ }
261
+ function freshReservation(state, unit, lane) {
262
+ const hardKeys = hardConstraintKeys(unit).filter(function bindHardKey(key) {
263
+ if (state.reservations.hardKeyIsBound(key)) {
264
+ return false;
265
+ }
266
+ state.reservations.bindHardLane(key, lane);
267
+ return true;
268
+ });
269
+ const faultDomains = uniqueText(unit.resourceConstraints.faultDomains);
270
+ for (const faultDomain of faultDomains) {
271
+ state.reservations.incrementFault(faultDomain, lane);
272
+ }
273
+ return { faultDomains, hardKeys };
274
+ }
275
+ function reserve(state, item, lane) {
276
+ if (state.reservations.retainedLane(item.traceUnit) === lane.id) {
277
+ return { faultDomains: [], hardKeys: [] };
278
+ }
279
+ return freshReservation(state, item.unit, lane);
280
+ }
281
+ function release(state, lease) {
282
+ for (const hardKey of lease.reservation.hardKeys) {
283
+ state.reservations.releaseHardLane(hardKey, lease.lane);
284
+ }
285
+ for (const faultDomain of lease.reservation.faultDomains) {
286
+ state.reservations.decrementFault(faultDomain, lease.lane);
287
+ }
288
+ }
289
+ function blocked(state, lane) {
290
+ return state.activeLeases.active() > 0 && state.pendingUnits.all().some(function hasBlockedUnit(item) {
291
+ return laneMatchesRetainedReservation(state, item, lane) && laneMatchesLifecycle(state, item, lane);
292
+ });
293
+ }
294
+ function compatibleLaneCount(state, item) {
295
+ return state
296
+ .lanes
297
+ .filter(function canLeaseParent(lane) {
298
+ return laneCanLease(state, item, lane);
299
+ })
300
+ .length;
301
+ }
302
+ function splitEligibility(state, item) {
303
+ return {
304
+ compatibleLaneCount: compatibleLaneCount(state, item),
305
+ hardConstraintCount: hardConstraintKeys(item.unit).length
306
+ };
307
+ }
308
+ function splitPendingUnit(state, item) {
309
+ const split = splitQueuedWorkUnit(state.runtime, item);
310
+ state.pendingUnits.remove(item);
311
+ state.pendingUnits.pushMany(split.children);
312
+ state.runtime.recordPlacementTraceEntry(split.traceEntry);
313
+ }
314
+ function selectPendingUnit(state, lane) {
315
+ return state
316
+ .pendingUnits
317
+ .all()
318
+ .filter(function isEligible(candidate) {
319
+ return laneCanLease(state, candidate, lane);
320
+ })
321
+ .toSorted(function compareUnits(left, right) {
322
+ return comparePriority(state, left, right);
323
+ })[0];
324
+ }
325
+ function leasePendingUnit(state, lane, item) {
326
+ state.pendingUnits.remove(item);
327
+ state.activeLeases.increment();
328
+ return {
329
+ lane,
330
+ reservation: reserve(state, item, lane),
331
+ traceUnit: item.traceUnit,
332
+ unit: item.unit
333
+ };
334
+ }
335
+ function pull(state, lane) {
336
+ let item = selectPendingUnit(state, lane);
337
+ while (item !== undefined && queuedWorkCanSplit(item, splitEligibility(state, item))) {
338
+ splitPendingUnit(state, item);
339
+ item = selectPendingUnit(state, lane);
340
+ }
341
+ return item === undefined ? null : leasePendingUnit(state, lane, item);
342
+ }
343
+ function createDynamicDispatcher(runtime, plan) {
344
+ const state = createDynamicDispatchState(runtime, plan);
345
+ return {
346
+ blocked(lane) {
347
+ return blocked(state, lane);
348
+ },
349
+ clear() {
350
+ state.pendingUnits.clear();
351
+ state.waiters.notify();
352
+ },
353
+ finish(lease, keepReservation) {
354
+ state.activeLeases.decrement();
355
+ if (keepReservation) {
356
+ state.reservations.retainUnit(lease.traceUnit, lease.lane);
357
+ }
358
+ else {
359
+ release(state, lease);
360
+ }
361
+ state.waiters.notify();
362
+ },
363
+ pull(lane) {
364
+ return pull(state, lane);
365
+ },
366
+ requeue(requeuedUnit) {
367
+ state.pendingUnits.push(fixedQueueItem(requeuedUnit.unit, requeuedUnit.traceUnit, requeuedPriority()));
368
+ state.waiters.notify();
369
+ },
370
+ async waitForChange() {
371
+ await state.waiters.wait();
372
+ }
373
+ };
374
+ }
375
+ export function createWorkDispatcher(runtime, plan) {
376
+ const { execution } = runtime.resolvedRun.facts;
377
+ if (execution.processModel !== 'worker-pool' || execution.dispatchPolicy === 'static-assignment') {
378
+ return createStaticDispatcher(plan);
379
+ }
380
+ return createDynamicDispatcher(runtime, plan);
381
+ }
382
+ //# sourceMappingURL=worker-pool-work-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-pool-work-dispatcher.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-work-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { workIdentityKey } from "../engine/identity.js";
2
- import { collectedRunPlanFromTestPlan, createRunResultFromCollectedPlan } from "./collected-run-plan.js";
2
+ import { collectedRunPlanFromTestPlan, collectedRunPlanFromTestPlanCases, createRunResultFromCollectedPlan } from "./collected-run-plan.js";
3
3
  import { defaultRunEngine } from "./default-run-engine.js";
4
4
  import { loadRunEngineModule, loadRunTestModules, runDiscovery } from "./node-run-dependencies.entry-point.js";
5
5
  import { createRunTestPlan } from "./run-test-plan.js";
@@ -48,7 +48,8 @@ export function selectedAssignedWork(testPlan, assignedWork) {
48
48
 
49
49
  export function createEmptyAssignmentResult(testPlan, wallClock, startedAtMilliseconds) {
50
50
  return {
51
- result: createRunResultFromCollectedPlan(collectedRunPlanFromTestPlan(testPlan), [], [], {
51
+ result: createRunResultFromCollectedPlan(collectedRunPlanFromTestPlanCases(testPlan, []), [], [], {
52
+ planStatus: 'empty-selection',
52
53
  resourceUsage: null,
53
54
  startedAtMs: startedAtMilliseconds,
54
55
  wallClock
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool-worker-plan.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-worker-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,eAAe,EAA4B,MAAM,uBAAuB,CAAC;AAGvG,OAAO,EACH,4BAA4B,EAC5B,gCAAgC,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAcvD,KAAK,UAAU,cAAc,CAAC,OAA0B;IACpD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAA0B;IAC9D,OAAO,MAAM,iBAAiB,CAAC;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,MAAM,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC;QACrC,kBAAkB;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;KACjC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA0B;IAC5D,OAAO;QACH,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC;KACpD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,aAA0C;IACxE,OAAO;QACH,aAAa,EAAE,4BAA4B,CAAC,aAAa,CAAC,QAAQ,CAAC;QACnE,YAAY,EAAE,aAAa,CAAC,YAAY;KAC3C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,YAA0B;IAC/E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,QAAQ;QAC5E,OAAO,CAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAE,CAAC;IAC1D,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,cAAc,CAAC,IAAI;QAC3D,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/D,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,WAAW,CAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACH,GAAG,QAAQ;QACX,KAAK,EAAE,CAAE,SAAS,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE;KAC1C,CAAC;AACN,CAAC;;MAMK,UAAU,2BAA2B,CACvC,QAAkB,EAClB,SAA6C,EAC7C,qBAA6B;IAE7B,OAAO;QACH,MAAM,EAAE,gCAAgC,CACpC,4BAA4B,CAAC,QAAQ,CAAC,EACtC,EAAE,EACF,EAAE,EACF;YACI,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,qBAAqB;YAClC,SAAS;SACZ,CACJ;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"worker-pool-worker-plan.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-worker-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,eAAe,EAA4B,MAAM,uBAAuB,CAAC;AAGvG,OAAO,EACH,4BAA4B,EAC5B,iCAAiC,EACjC,gCAAgC,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAcvD,KAAK,UAAU,cAAc,CAAC,OAA0B;IACpD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAA0B;IAC9D,OAAO,MAAM,iBAAiB,CAAC;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,MAAM,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC;QACrC,kBAAkB;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;KACjC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA0B;IAC5D,OAAO;QACH,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,MAAM,wBAAwB,CAAC,OAAO,CAAC;KACpD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,aAA0C;IACxE,OAAO;QACH,aAAa,EAAE,4BAA4B,CAAC,aAAa,CAAC,QAAQ,CAAC;QACnE,YAAY,EAAE,aAAa,CAAC,YAAY;KAC3C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,YAA0B;IAC/E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,QAAQ;QAC5E,OAAO,CAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAE,CAAC;IAC1D,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,cAAc,CAAC,IAAI;QAC3D,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/D,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,WAAW,CAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACH,GAAG,QAAQ;QACX,KAAK,EAAE,CAAE,SAAS,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE;KAC1C,CAAC;AACN,CAAC;;MAMK,UAAU,2BAA2B,CACvC,QAAkB,EAClB,SAA6C,EAC7C,qBAA6B;IAE7B,OAAO;QACH,MAAM,EAAE,gCAAgC,CACpC,iCAAiC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAC/C,EAAE,EACF,EAAE,EACF;YACI,UAAU,EAAE,iBAAiB;YAC7B,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,qBAAqB;YAClC,SAAS;SACZ,CACJ;KACJ,CAAC;AACN,CAAC"}
package/sbom.cdx.json CHANGED
@@ -16,9 +16,9 @@
16
16
  "component": {
17
17
  "type": "library",
18
18
  "name": "@overkill-dev/run",
19
- "version": "0.0.50",
20
- "bom-ref": "pkg:npm/@overkill-dev/run@0.0.50",
21
- "purl": "pkg:npm/@overkill-dev/run@0.0.50"
19
+ "version": "0.0.52",
20
+ "bom-ref": "pkg:npm/@overkill-dev/run@0.0.52",
21
+ "purl": "pkg:npm/@overkill-dev/run@0.0.52"
22
22
  }
23
23
  },
24
24
  "components": [
@@ -87,6 +87,19 @@
87
87
  ],
88
88
  "purl": "pkg:npm/figures@6.1.0"
89
89
  },
90
+ {
91
+ "type": "library",
92
+ "name": "hash-wasm",
93
+ "version": "4.12.0",
94
+ "bom-ref": "pkg:npm/hash-wasm@4.12.0",
95
+ "scope": "required",
96
+ "licenses": [
97
+ {
98
+ "expression": "MIT"
99
+ }
100
+ ],
101
+ "purl": "pkg:npm/hash-wasm@4.12.0"
102
+ },
90
103
  {
91
104
  "type": "library",
92
105
  "name": "pure-rand",
@@ -158,13 +171,14 @@
158
171
  "ref": "pkg:npm/@enormora/wall-clock@0.0.3"
159
172
  },
160
173
  {
161
- "ref": "pkg:npm/@overkill-dev/run@0.0.50",
174
+ "ref": "pkg:npm/@overkill-dev/run@0.0.52",
162
175
  "dependsOn": [
163
176
  "pkg:npm/@enormora/wall-clock@0.0.3",
164
177
  "pkg:npm/@schema-hub/zod-error-formatter@0.0.16",
165
178
  "pkg:npm/ansi-escapes@7.3.0",
166
179
  "pkg:npm/diff@9.0.0",
167
180
  "pkg:npm/figures@6.1.0",
181
+ "pkg:npm/hash-wasm@4.12.0",
168
182
  "pkg:npm/pure-rand@8.4.2",
169
183
  "pkg:npm/string-width@8.2.2",
170
184
  "pkg:npm/tinypool@2.2.0",
@@ -184,6 +198,9 @@
184
198
  {
185
199
  "ref": "pkg:npm/figures@6.1.0"
186
200
  },
201
+ {
202
+ "ref": "pkg:npm/hash-wasm@4.12.0"
203
+ },
187
204
  {
188
205
  "ref": "pkg:npm/pure-rand@8.4.2"
189
206
  },