@overkill-dev/run 0.0.46 → 0.0.48
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/engine/async-leak-diagnostics.d.ts +9 -2
- package/engine/async-leak-diagnostics.d.ts.map +1 -1
- package/engine/async-leak-diagnostics.js +6 -4
- package/engine/async-leak-diagnostics.js.map +1 -1
- package/engine/case-execution.d.ts.map +1 -1
- package/engine/case-execution.js +5 -3
- package/engine/case-execution.js.map +1 -1
- package/engine/execution-async-leak-policy.d.ts.map +1 -1
- package/engine/execution-async-leak-policy.js +16 -3
- package/engine/execution-async-leak-policy.js.map +1 -1
- package/engine/execution-options.d.ts +2 -1
- package/engine/execution-options.d.ts.map +1 -1
- package/engine/execution-resource-budget-breach.d.ts +17 -0
- package/engine/execution-resource-budget-breach.d.ts.map +1 -0
- package/engine/execution-resource-budget-breach.js +30 -0
- package/engine/execution-resource-budget-breach.js.map +1 -0
- package/engine/execution-resource-budget-tracking.js.map +1 -1
- package/engine/execution-resource-tracked-cases.js.map +1 -1
- package/engine/execution-result.js +3 -3
- package/engine/execution-result.js.map +1 -1
- package/engine/execution-supervision.d.ts +1 -6
- package/engine/execution-supervision.d.ts.map +1 -1
- package/engine/execution-supervision.js +25 -39
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +11 -40
- package/engine/execution.js.map +1 -1
- package/engine/identity.d.ts +18 -0
- package/engine/identity.d.ts.map +1 -1
- package/engine/identity.js +44 -0
- package/engine/identity.js.map +1 -1
- package/engine/reporter-dispatcher.d.ts.map +1 -1
- package/engine/reporter-dispatcher.js +1 -0
- package/engine/reporter-dispatcher.js.map +1 -1
- package/engine/reporter-event-queue.js +32 -0
- package/engine/reporter-event-queue.js.map +1 -1
- package/engine/reporter.d.ts +4 -1
- package/engine/reporter.d.ts.map +1 -1
- package/engine/reporter.js.map +1 -1
- package/engine/run-result.d.ts +4 -2
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js +2 -1
- package/engine/run-result.js.map +1 -1
- package/engine/test-body-resource-attachment.d.ts +13 -1
- package/engine/test-body-resource-attachment.d.ts.map +1 -1
- package/engine/test-body-resource-attachment.js +43 -17
- package/engine/test-body-resource-attachment.js.map +1 -1
- package/engine/test-plan.d.ts +2 -1
- package/engine/test-plan.d.ts.map +1 -1
- package/engine/test-plan.js +9 -5
- package/engine/test-plan.js.map +1 -1
- package/package.json +4 -3
- package/packages/engine/engine.entry-point.d.ts +2 -2
- package/packages/engine/engine.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.d.ts +2 -1
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/readme.md +5 -1
- package/resources/resource-definition-shape.d.ts +53 -0
- package/resources/resource-definition-shape.d.ts.map +1 -0
- package/resources/resources.d.ts +38 -74
- package/resources/resources.d.ts.map +1 -1
- package/resources/resources.js +2 -0
- package/resources/resources.js.map +1 -1
- package/resources/runtime-definition.d.ts +23 -0
- package/resources/runtime-definition.d.ts.map +1 -0
- package/resources/runtime-definition.js +1 -0
- package/resources/runtime-definition.js.map +1 -0
- package/resources/runtime-matrix-definition.d.ts +39 -0
- package/resources/runtime-matrix-definition.d.ts.map +1 -0
- package/resources/runtime-matrix-definition.js +2 -0
- package/resources/runtime-matrix-definition.js.map +1 -0
- package/run/capability-policy-snapshots.d.ts +33 -0
- package/run/capability-policy-snapshots.d.ts.map +1 -0
- package/run/capability-policy-snapshots.js +88 -0
- package/run/capability-policy-snapshots.js.map +1 -0
- package/run/capability-policy.js +21 -97
- package/run/capability-policy.js.map +1 -1
- package/run/collected-run-plan.js +12 -6
- package/run/collected-run-plan.js.map +1 -1
- package/run/node-host-readers.js +1 -1
- package/run/node-host-readers.js.map +1 -1
- package/run/resource-lifecycle-composition.d.ts +6 -5
- package/run/resource-lifecycle-composition.d.ts.map +1 -1
- package/run/resource-lifecycle-composition.js +99 -11
- package/run/resource-lifecycle-composition.js.map +1 -1
- package/run/resource-lifecycle.js +7 -7
- package/run/resource-lifecycle.js.map +1 -1
- package/run/run-collected-resolution.js +6 -0
- package/run/run-collected-resolution.js.map +1 -1
- package/run/run-config-schema.d.ts +3 -0
- package/run/run-config-schema.d.ts.map +1 -1
- package/run/run-config-schema.js +5 -0
- package/run/run-config-schema.js.map +1 -1
- package/run/run-config.d.ts.map +1 -1
- package/run/run-config.js +8 -0
- package/run/run-config.js.map +1 -1
- package/run/run-errors.d.ts.map +1 -1
- package/run/run-errors.js +1 -0
- package/run/run-errors.js.map +1 -1
- package/run/run-facts.js +8 -4
- package/run/run-facts.js.map +1 -1
- package/run/run-orchestrator-dependencies.d.ts +1 -1
- package/run/run-orchestrator-dependencies.d.ts.map +1 -1
- package/run/run-support.js +1 -0
- package/run/run-support.js.map +1 -1
- package/run/run-test-plan.js +3 -2
- package/run/run-test-plan.js.map +1 -1
- package/run/run-types.d.ts +7 -14
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js.map +1 -1
- package/run/runtime-matrix-expansion.js +114 -0
- package/run/runtime-matrix-expansion.js.map +1 -0
- package/run/supervised-child-process.d.ts +1 -1
- package/run/supervised-child-process.d.ts.map +1 -1
- package/run/supervised-child.js +13 -11
- package/run/supervised-child.js.map +1 -1
- package/run/supervised-protocol.js +9 -0
- package/run/supervised-protocol.js.map +1 -1
- package/run/supervised-run-resource-policy.js +14 -1
- package/run/supervised-run-resource-policy.js.map +1 -1
- package/run/supervised-run-runtime.js +30 -15
- package/run/supervised-run-runtime.js.map +1 -1
- package/run/supervised-run-state.d.ts +2 -1
- package/run/supervised-run-state.d.ts.map +1 -1
- package/run/supervised-run-state.js +9 -2
- package/run/supervised-run-state.js.map +1 -1
- package/run/supervised-run.js +6 -2
- package/run/supervised-run.js.map +1 -1
- package/run/work-unit-identity.js +61 -0
- package/run/work-unit-identity.js.map +1 -0
- package/run/work-unit-planning.js +53 -82
- package/run/work-unit-planning.js.map +1 -1
- package/run/work-unit-resource-constraints.js +7 -4
- package/run/work-unit-resource-constraints.js.map +1 -1
- package/run/worker-pool-collection.js +1 -0
- package/run/worker-pool-collection.js.map +1 -1
- package/run/worker-pool-execution.js +5 -4
- package/run/worker-pool-execution.js.map +1 -1
- package/run/worker-pool-lanes.js +45 -76
- package/run/worker-pool-lanes.js.map +1 -1
- package/run/worker-pool-lifecycle-lanes.js +169 -0
- package/run/worker-pool-lifecycle-lanes.js.map +1 -0
- package/run/worker-pool-results.js +3 -3
- package/run/worker-pool-results.js.map +1 -1
- package/run/worker-pool-worker-plan.js +8 -12
- package/run/worker-pool-worker-plan.js.map +1 -1
- package/sbom.cdx.json +14 -14
- package/run/capability-policy.d.ts +0 -47
- package/run/capability-policy.d.ts.map +0 -1
package/run/worker-pool-lanes.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { invalidRequest } from "./run-errors.js";
|
|
2
|
+
import { caseCountPlacementLoad, freshWorkerLifecycle, lifecycleCount, lifecycleLaneCounts, selectedCaseCount, reuseWorkerLifecycle, workerLifecycles } from "./worker-pool-lifecycle-lanes.js";
|
|
2
3
|
const maximumWorkerCount = 8;
|
|
3
4
|
const mixedLifecycleCount = 2;
|
|
4
|
-
const freshWorkerLifecycle = 'fresh-worker-per-unit';
|
|
5
|
-
const reuseWorkerLifecycle = 'reuse';
|
|
6
|
-
const workerLifecycles = [reuseWorkerLifecycle, freshWorkerLifecycle];
|
|
7
5
|
function defaultWorkerCount(availableParallelism, unitCount) {
|
|
8
6
|
if (!Number.isSafeInteger(availableParallelism) || availableParallelism <= 0) {
|
|
9
7
|
invalidRequest('Available parallelism must be a positive safe integer.');
|
|
@@ -13,22 +11,10 @@ function defaultWorkerCount(availableParallelism, unitCount) {
|
|
|
13
11
|
}
|
|
14
12
|
return Math.min(Math.max(availableParallelism - 1, 1), maximumWorkerCount, unitCount);
|
|
15
13
|
}
|
|
16
|
-
function lifecycleCount(units, workerLifecycle) {
|
|
17
|
-
return units
|
|
18
|
-
.filter(function hasWorkerLifecycle(unit) {
|
|
19
|
-
return unit.workerLifecycle === workerLifecycle;
|
|
20
|
-
})
|
|
21
|
-
.length;
|
|
22
|
-
}
|
|
23
14
|
function hasMixedLifecycles(units) {
|
|
24
15
|
return lifecycleCount(units, freshWorkerLifecycle) > 0 &&
|
|
25
16
|
lifecycleCount(units, reuseWorkerLifecycle) > 0;
|
|
26
17
|
}
|
|
27
|
-
function firstUnitWorkerLifecycle(units) {
|
|
28
|
-
return units.reduce(function keepFirstLifecycle(firstLifecycle, unit, index) {
|
|
29
|
-
return index === 0 ? unit.workerLifecycle : firstLifecycle;
|
|
30
|
-
}, reuseWorkerLifecycle);
|
|
31
|
-
}
|
|
32
18
|
function workerCount(input) {
|
|
33
19
|
const baseWorkerCount = defaultWorkerCount(input.availableParallelism, input.units.length);
|
|
34
20
|
return hasMixedLifecycles(input.units)
|
|
@@ -52,55 +38,8 @@ export function workerPoolLanes(input) {
|
|
|
52
38
|
return placementLane(index);
|
|
53
39
|
});
|
|
54
40
|
}
|
|
55
|
-
function
|
|
56
|
-
const
|
|
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);
|
|
41
|
+
function lanesByLifecycle(lanes, units, assignmentPolicy) {
|
|
42
|
+
const counts = lifecycleLaneCounts(units, lanes.length, assignmentPolicy);
|
|
104
43
|
let nextLaneIndex = 0;
|
|
105
44
|
return new Map(workerLifecycles.map(function toLifecycleLanes(workerLifecycle) {
|
|
106
45
|
const laneCount = counts.get(workerLifecycle) ?? 0;
|
|
@@ -173,13 +112,13 @@ function chooseLane(unit, lanes, state) {
|
|
|
173
112
|
}
|
|
174
113
|
return lane;
|
|
175
114
|
}
|
|
176
|
-
function createLanePlacementState() {
|
|
115
|
+
function createLanePlacementState(unitLoad) {
|
|
177
116
|
const faultDomainLanes = new Map();
|
|
178
117
|
const fixedLaneByKey = new Map();
|
|
179
118
|
const laneLoads = new Map();
|
|
180
119
|
const preferredLaneByAffinity = new Map();
|
|
181
120
|
function rememberLaneChoice(unit, lane) {
|
|
182
|
-
laneLoads.set(lane.id, laneLoad(lane, laneLoads) + unit
|
|
121
|
+
laneLoads.set(lane.id, laneLoad(lane, laneLoads) + unitLoad(unit));
|
|
183
122
|
for (const key of [...unit.resourceConstraints.singleWorkerKeys, ...unit.resourceConstraints.serialKeys]) {
|
|
184
123
|
fixedLaneByKey.set(key, lane.id);
|
|
185
124
|
}
|
|
@@ -215,23 +154,53 @@ function requiresResourceAwareLane(unit) {
|
|
|
215
154
|
unit.resourceConstraints.capacityWeight !== 1 ||
|
|
216
155
|
unit.resourceConstraints.faultDomains.length > 0;
|
|
217
156
|
}
|
|
218
|
-
function selectedLaneForUnit(
|
|
219
|
-
const fixedLane = placementState.firstFixedLane(unit, lanes);
|
|
157
|
+
function selectedLaneForUnit(input) {
|
|
158
|
+
const fixedLane = input.placementState.firstFixedLane(input.unit, input.lanes);
|
|
220
159
|
if (fixedLane !== null) {
|
|
221
160
|
return fixedLane;
|
|
222
161
|
}
|
|
223
|
-
return requiresResourceAwareLane(unit)
|
|
224
|
-
? placementState.chooseLane(unit, lanes)
|
|
225
|
-
: assignedLane(lanes, nextIndex);
|
|
162
|
+
return input.assignmentPolicy === 'case-count-balanced' || requiresResourceAwareLane(input.unit)
|
|
163
|
+
? input.placementState.chooseLane(input.unit, input.lanes)
|
|
164
|
+
: assignedLane(input.lanes, input.nextIndex);
|
|
165
|
+
}
|
|
166
|
+
function orderedUnitsForAssignment(units, assignmentPolicy) {
|
|
167
|
+
if (assignmentPolicy === 'stable') {
|
|
168
|
+
return units;
|
|
169
|
+
}
|
|
170
|
+
return units
|
|
171
|
+
.map(function toIndexedUnit(unit, index) {
|
|
172
|
+
return { index, unit };
|
|
173
|
+
})
|
|
174
|
+
.toSorted(function compareSelectedCaseCount(left, right) {
|
|
175
|
+
const caseCountDifference = selectedCaseCount(right.unit) - selectedCaseCount(left.unit);
|
|
176
|
+
return caseCountDifference === 0 ? left.index - right.index : caseCountDifference;
|
|
177
|
+
})
|
|
178
|
+
.map(function toUnit(indexedUnit) {
|
|
179
|
+
return indexedUnit.unit;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function assignmentUnitLoad(assignmentPolicy) {
|
|
183
|
+
return assignmentPolicy === 'case-count-balanced'
|
|
184
|
+
? caseCountPlacementLoad
|
|
185
|
+
: function stablePlacementLoad(unit) {
|
|
186
|
+
return unit.resourceConstraints.capacityWeight;
|
|
187
|
+
};
|
|
226
188
|
}
|
|
227
|
-
export function workerPoolPlacementAssignments(units, lanes) {
|
|
228
|
-
const lifecycleLanes = lanesByLifecycle(lanes, units);
|
|
189
|
+
export function workerPoolPlacementAssignments(units, lanes, assignmentPolicy) {
|
|
190
|
+
const lifecycleLanes = lanesByLifecycle(lanes, units, assignmentPolicy);
|
|
229
191
|
const lifecycleIndexes = new Map();
|
|
230
|
-
const placementState = createLanePlacementState();
|
|
231
|
-
|
|
192
|
+
const placementState = createLanePlacementState(assignmentUnitLoad(assignmentPolicy));
|
|
193
|
+
const assignmentUnits = orderedUnitsForAssignment(units, assignmentPolicy);
|
|
194
|
+
return assignmentUnits.map(function toAssignment(unit) {
|
|
232
195
|
const lanesForUnit = lifecycleLanes.get(unit.workerLifecycle) ?? [];
|
|
233
196
|
const nextIndex = lifecycleIndexes.get(unit.workerLifecycle) ?? 0;
|
|
234
|
-
const lane = selectedLaneForUnit(
|
|
197
|
+
const lane = selectedLaneForUnit({
|
|
198
|
+
assignmentPolicy,
|
|
199
|
+
lanes: lanesForUnit,
|
|
200
|
+
nextIndex,
|
|
201
|
+
placementState,
|
|
202
|
+
unit
|
|
203
|
+
});
|
|
235
204
|
lifecycleIndexes.set(unit.workerLifecycle, nextIndex + 1);
|
|
236
205
|
placementState.rememberLaneChoice(unit, lane);
|
|
237
206
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool-lanes.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-lanes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-pool-lanes.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-lanes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { emptyWorkUnitResourceConstraints } from "./run-types.js";
|
|
2
|
+
const mixedLifecycleCount = 2;
|
|
3
|
+
export const freshWorkerLifecycle = 'fresh-worker-per-unit';
|
|
4
|
+
export const reuseWorkerLifecycle = 'reuse';
|
|
5
|
+
export const workerLifecycles = [reuseWorkerLifecycle, freshWorkerLifecycle];
|
|
6
|
+
export function lifecycleCount(units, workerLifecycle) {
|
|
7
|
+
return units
|
|
8
|
+
.filter(function hasWorkerLifecycle(unit) {
|
|
9
|
+
return unit.workerLifecycle === workerLifecycle;
|
|
10
|
+
})
|
|
11
|
+
.length;
|
|
12
|
+
}
|
|
13
|
+
export function selectedCaseCount(unit) {
|
|
14
|
+
return unit.work.length;
|
|
15
|
+
}
|
|
16
|
+
export function caseCountPlacementLoad(unit) {
|
|
17
|
+
return selectedCaseCount(unit) +
|
|
18
|
+
unit.resourceConstraints.capacityWeight -
|
|
19
|
+
emptyWorkUnitResourceConstraints.capacityWeight;
|
|
20
|
+
}
|
|
21
|
+
function lifecycleLoad(units, workerLifecycle, unitLoad) {
|
|
22
|
+
return units
|
|
23
|
+
.filter(function hasWorkerLifecycle(unit) {
|
|
24
|
+
return unit.workerLifecycle === workerLifecycle;
|
|
25
|
+
})
|
|
26
|
+
.reduce(function sumUnitLoad(total, unit) {
|
|
27
|
+
return total + unitLoad(unit);
|
|
28
|
+
}, 0);
|
|
29
|
+
}
|
|
30
|
+
function firstUnitWorkerLifecycle(units) {
|
|
31
|
+
return units.reduce(function keepFirstLifecycle(firstLifecycle, unit, index) {
|
|
32
|
+
return index === 0 ? unit.workerLifecycle : firstLifecycle;
|
|
33
|
+
}, reuseWorkerLifecycle);
|
|
34
|
+
}
|
|
35
|
+
function proportionalExtraLaneLifecycle(units, remainingLanes, tiedLifecycle) {
|
|
36
|
+
const freshUnits = lifecycleCount(units, freshWorkerLifecycle);
|
|
37
|
+
const reuseUnits = lifecycleCount(units, reuseWorkerLifecycle);
|
|
38
|
+
const totalUnits = freshUnits + reuseUnits;
|
|
39
|
+
const freshRemainder = remainingLanes * freshUnits / totalUnits % 1;
|
|
40
|
+
const reuseRemainder = remainingLanes * reuseUnits / totalUnits % 1;
|
|
41
|
+
if (freshRemainder !== reuseRemainder) {
|
|
42
|
+
return freshRemainder > reuseRemainder ? freshWorkerLifecycle : reuseWorkerLifecycle;
|
|
43
|
+
}
|
|
44
|
+
return tiedLifecycle;
|
|
45
|
+
}
|
|
46
|
+
function mixedLifecycleBaseLaneCounts(units, totalLaneCount) {
|
|
47
|
+
const freshUnits = lifecycleCount(units, freshWorkerLifecycle);
|
|
48
|
+
const reuseUnits = lifecycleCount(units, reuseWorkerLifecycle);
|
|
49
|
+
const remainingLanes = totalLaneCount - mixedLifecycleCount;
|
|
50
|
+
const unitCount = freshUnits + reuseUnits;
|
|
51
|
+
return {
|
|
52
|
+
freshLanes: 1 + Math.floor(remainingLanes * freshUnits / unitCount),
|
|
53
|
+
remainingLanes,
|
|
54
|
+
reuseLanes: 1 + Math.floor(remainingLanes * reuseUnits / unitCount)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function mixedLifecycleLaneCounts(units, totalLaneCount) {
|
|
58
|
+
let { freshLanes, remainingLanes, reuseLanes } = mixedLifecycleBaseLaneCounts(units, totalLaneCount);
|
|
59
|
+
if (freshLanes + reuseLanes < totalLaneCount) {
|
|
60
|
+
const targetLifecycle = proportionalExtraLaneLifecycle(units, remainingLanes, firstUnitWorkerLifecycle(units));
|
|
61
|
+
if (targetLifecycle === freshWorkerLifecycle) {
|
|
62
|
+
freshLanes += 1;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
reuseLanes += 1;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return new Map([
|
|
69
|
+
[freshWorkerLifecycle, freshLanes],
|
|
70
|
+
[reuseWorkerLifecycle, reuseLanes]
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
function stableLifecycleLaneCounts(units, totalLaneCount) {
|
|
74
|
+
if (lifecycleCount(units, freshWorkerLifecycle) === 0) {
|
|
75
|
+
return new Map([[reuseWorkerLifecycle, totalLaneCount]]);
|
|
76
|
+
}
|
|
77
|
+
if (lifecycleCount(units, reuseWorkerLifecycle) === 0) {
|
|
78
|
+
return new Map([[freshWorkerLifecycle, totalLaneCount]]);
|
|
79
|
+
}
|
|
80
|
+
return mixedLifecycleLaneCounts(units, totalLaneCount);
|
|
81
|
+
}
|
|
82
|
+
function caseCountBalancedLifecycleLaneAllocation(units, freshUnits, reuseUnits) {
|
|
83
|
+
return {
|
|
84
|
+
freshLoad: lifecycleLoad(units, freshWorkerLifecycle, caseCountPlacementLoad),
|
|
85
|
+
freshUnitCount: freshUnits,
|
|
86
|
+
reuseLoad: lifecycleLoad(units, reuseWorkerLifecycle, caseCountPlacementLoad),
|
|
87
|
+
reuseUnitCount: reuseUnits,
|
|
88
|
+
tiedLifecycle: firstUnitWorkerLifecycle(units)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function initialLifecycleLanes() {
|
|
92
|
+
return {
|
|
93
|
+
freshLaneCount: 1,
|
|
94
|
+
reuseLaneCount: 1
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function lifecycleLaneCount(lanes, workerLifecycle) {
|
|
98
|
+
return workerLifecycle === freshWorkerLifecycle ? lanes.freshLaneCount : lanes.reuseLaneCount;
|
|
99
|
+
}
|
|
100
|
+
function lifecycleUnitCount(allocation, workerLifecycle) {
|
|
101
|
+
return workerLifecycle === freshWorkerLifecycle ? allocation.freshUnitCount : allocation.reuseUnitCount;
|
|
102
|
+
}
|
|
103
|
+
function lifecyclePlacementLoad(allocation, workerLifecycle) {
|
|
104
|
+
return workerLifecycle === freshWorkerLifecycle ? allocation.freshLoad : allocation.reuseLoad;
|
|
105
|
+
}
|
|
106
|
+
function assignedLifecycleLaneCount(lanes) {
|
|
107
|
+
return lanes.freshLaneCount + lanes.reuseLaneCount;
|
|
108
|
+
}
|
|
109
|
+
function lifecycleHasUnitCapacity(allocation, lanes, workerLifecycle) {
|
|
110
|
+
return lifecycleLaneCount(lanes, workerLifecycle) < lifecycleUnitCount(allocation, workerLifecycle);
|
|
111
|
+
}
|
|
112
|
+
function lifecycleAverageLoad(allocation, lanes, workerLifecycle) {
|
|
113
|
+
return lifecyclePlacementLoad(allocation, workerLifecycle) / lifecycleLaneCount(lanes, workerLifecycle);
|
|
114
|
+
}
|
|
115
|
+
function compareTiedLifecycle(allocation, left) {
|
|
116
|
+
return left === allocation.tiedLifecycle ? -1 : 1;
|
|
117
|
+
}
|
|
118
|
+
function compareLifecycleCandidate(allocation, lanes, left, right) {
|
|
119
|
+
const loadDifference = lifecycleAverageLoad(allocation, lanes, right) -
|
|
120
|
+
lifecycleAverageLoad(allocation, lanes, left);
|
|
121
|
+
return loadDifference === 0 ? compareTiedLifecycle(allocation, left) : loadDifference;
|
|
122
|
+
}
|
|
123
|
+
function nextLifecycleWithCapacity(allocation, lanes) {
|
|
124
|
+
return workerLifecycles
|
|
125
|
+
.filter(function hasUnitCapacity(workerLifecycle) {
|
|
126
|
+
return lifecycleHasUnitCapacity(allocation, lanes, workerLifecycle);
|
|
127
|
+
})
|
|
128
|
+
.toSorted(function compareLifecycleLoad(left, right) {
|
|
129
|
+
return compareLifecycleCandidate(allocation, lanes, left, right);
|
|
130
|
+
})[0] ?? null;
|
|
131
|
+
}
|
|
132
|
+
function lifecycleWithAdditionalLane(lanes, workerLifecycle) {
|
|
133
|
+
return workerLifecycle === freshWorkerLifecycle
|
|
134
|
+
? { ...lanes, freshLaneCount: lanes.freshLaneCount + 1 }
|
|
135
|
+
: { ...lanes, reuseLaneCount: lanes.reuseLaneCount + 1 };
|
|
136
|
+
}
|
|
137
|
+
function allocateCaseCountBalancedLifecycleLanes(allocation, totalLaneCount) {
|
|
138
|
+
let lanes = initialLifecycleLanes();
|
|
139
|
+
while (assignedLifecycleLaneCount(lanes) < totalLaneCount) {
|
|
140
|
+
const target = nextLifecycleWithCapacity(allocation, lanes);
|
|
141
|
+
if (target === null) {
|
|
142
|
+
return lanes;
|
|
143
|
+
}
|
|
144
|
+
lanes = lifecycleWithAdditionalLane(lanes, target);
|
|
145
|
+
}
|
|
146
|
+
return lanes;
|
|
147
|
+
}
|
|
148
|
+
function caseCountBalancedLifecycleLaneCounts(units, totalLaneCount) {
|
|
149
|
+
const freshUnits = lifecycleCount(units, freshWorkerLifecycle);
|
|
150
|
+
const reuseUnits = lifecycleCount(units, reuseWorkerLifecycle);
|
|
151
|
+
if (freshUnits === 0) {
|
|
152
|
+
return new Map([[reuseWorkerLifecycle, totalLaneCount]]);
|
|
153
|
+
}
|
|
154
|
+
if (reuseUnits === 0) {
|
|
155
|
+
return new Map([[freshWorkerLifecycle, totalLaneCount]]);
|
|
156
|
+
}
|
|
157
|
+
const allocation = caseCountBalancedLifecycleLaneAllocation(units, freshUnits, reuseUnits);
|
|
158
|
+
const lanes = allocateCaseCountBalancedLifecycleLanes(allocation, totalLaneCount);
|
|
159
|
+
return new Map([
|
|
160
|
+
[freshWorkerLifecycle, lanes.freshLaneCount],
|
|
161
|
+
[reuseWorkerLifecycle, lanes.reuseLaneCount]
|
|
162
|
+
]);
|
|
163
|
+
}
|
|
164
|
+
export function lifecycleLaneCounts(units, totalLaneCount, assignmentPolicy) {
|
|
165
|
+
return assignmentPolicy === 'case-count-balanced'
|
|
166
|
+
? caseCountBalancedLifecycleLaneCounts(units, totalLaneCount)
|
|
167
|
+
: stableLifecycleLaneCounts(units, totalLaneCount);
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=worker-pool-lifecycle-lanes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pool-lifecycle-lanes.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-lifecycle-lanes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { workIdentityKey } from "../engine/identity.js";
|
|
2
2
|
import { collectedRunCaseEntries, createRunResultFromCollectedPlan } from "./collected-run-plan.js";
|
|
3
3
|
import { createReporterDelivery } from "./supervised-run-runtime.js";
|
|
4
4
|
import { workerPoolCollectedPlan } from "./worker-pool-runtime.js";
|
|
@@ -26,10 +26,10 @@ function allTaskErrors(runtime, completedTaskRuns) {
|
|
|
26
26
|
}
|
|
27
27
|
function orderedPerTest(collectedPlan, perTest) {
|
|
28
28
|
const results = new Map(perTest.map(function toEntry(result) {
|
|
29
|
-
return [
|
|
29
|
+
return [workIdentityKey(result.workId), result];
|
|
30
30
|
}));
|
|
31
31
|
return collectedRunCaseEntries(collectedPlan).flatMap(function toResult(entry) {
|
|
32
|
-
const result = results.get(
|
|
32
|
+
const result = results.get(workIdentityKey(entry.workId));
|
|
33
33
|
return result === undefined ? [] : [result];
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool-results.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,OAAO,EACH,uBAAuB,EACvB,gCAAgC,EACnC,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAIrE,OAAO,EACH,uBAAuB,EAG1B,MAAM,0BAA0B,CAAC;AAElC,SAAS,aAAa,CAAC,OAA6B;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,OAAO;QACvE,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,gBAAgB,CAAC,iBAA+C;IACrE,OAAO,iBAAiB,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,OAAO;QACzD,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAClB,OAA6B,EAC7B,iBAA+C;IAE/C,OAAO;QACH,GAAG,OAAO,CAAC,sBAAsB;QACjC,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE;QAClC,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC,OAAO;YAClD,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxC,CAAC,CAAC;QACF,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC,MAAM;YACnD,OAAO,MAAM,CAAC,YAAY,CAAC;QAC/B,CAAC,CAAC;KACL,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CACnB,aAA+B,EAC/B,OAAiC;IAEjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM;QACvD,OAAO,CAAE,eAAe,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"worker-pool-results.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-results.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { workIdentityKey } from "../engine/identity.js";
|
|
2
2
|
import { collectedRunPlanFromTestPlan, 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";
|
|
@@ -28,28 +28,24 @@ export function sendCollectedPlan(collectedPlan) {
|
|
|
28
28
|
runnerErrors: collectedPlan.runnerErrors
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
export function
|
|
31
|
+
export function selectedAssignedWork(testPlan, assignedWork) {
|
|
32
32
|
const casesByIdentity = new Map(testPlan.cases.map(function toCaseEntry(testCase) {
|
|
33
|
-
return [
|
|
33
|
+
return [workIdentityKey(testCase.workId), testCase];
|
|
34
34
|
}));
|
|
35
|
-
const cases =
|
|
36
|
-
const matchedCase = casesByIdentity.get(
|
|
35
|
+
const cases = assignedWork.flatMap(function toAssignedCase(work) {
|
|
36
|
+
const matchedCase = casesByIdentity.get(workIdentityKey(work));
|
|
37
37
|
return matchedCase === undefined ? [] : [matchedCase];
|
|
38
38
|
});
|
|
39
39
|
const firstCase = cases[0];
|
|
40
|
-
if (firstCase === undefined || cases.length !==
|
|
41
|
-
throw new Error('Worker-pool test plan did not match assigned
|
|
40
|
+
if (firstCase === undefined || cases.length !== assignedWork.length) {
|
|
41
|
+
throw new Error('Worker-pool test plan did not match assigned work identities.');
|
|
42
42
|
}
|
|
43
43
|
return {
|
|
44
44
|
...testPlan,
|
|
45
45
|
cases: [firstCase, ...cases.slice(1)]
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
return selectedAssignedCases(testPlan, assignedWork.map(function toCaseId(work) {
|
|
50
|
-
return work.case;
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
48
|
+
|
|
53
49
|
export function createEmptyAssignmentResult(testPlan, wallClock, startedAtMilliseconds) {
|
|
54
50
|
return {
|
|
55
51
|
result: createRunResultFromCollectedPlan(collectedRunPlanFromTestPlan(testPlan), [], [], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool-worker-plan.js","sourceRoot":"","sources":["../../../../source/run/worker-pool-worker-plan.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
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"}
|
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.
|
|
20
|
-
"bom-ref": "pkg:npm/@overkill-dev/run@0.0.
|
|
21
|
-
"purl": "pkg:npm/@overkill-dev/run@0.0.
|
|
19
|
+
"version": "0.0.48",
|
|
20
|
+
"bom-ref": "pkg:npm/@overkill-dev/run@0.0.48",
|
|
21
|
+
"purl": "pkg:npm/@overkill-dev/run@0.0.48"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"components": [
|
|
@@ -116,15 +116,15 @@
|
|
|
116
116
|
{
|
|
117
117
|
"type": "library",
|
|
118
118
|
"name": "tinypool",
|
|
119
|
-
"version": "2.
|
|
120
|
-
"bom-ref": "pkg:npm/tinypool@2.
|
|
119
|
+
"version": "2.2.0",
|
|
120
|
+
"bom-ref": "pkg:npm/tinypool@2.2.0",
|
|
121
121
|
"scope": "required",
|
|
122
122
|
"licenses": [
|
|
123
123
|
{
|
|
124
124
|
"expression": "MIT"
|
|
125
125
|
}
|
|
126
126
|
],
|
|
127
|
-
"purl": "pkg:npm/tinypool@2.
|
|
127
|
+
"purl": "pkg:npm/tinypool@2.2.0"
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
"type": "library",
|
|
@@ -142,15 +142,15 @@
|
|
|
142
142
|
{
|
|
143
143
|
"type": "library",
|
|
144
144
|
"name": "zod",
|
|
145
|
-
"version": "4.6.
|
|
146
|
-
"bom-ref": "pkg:npm/zod@4.6.
|
|
145
|
+
"version": "4.6.5",
|
|
146
|
+
"bom-ref": "pkg:npm/zod@4.6.5",
|
|
147
147
|
"scope": "required",
|
|
148
148
|
"licenses": [
|
|
149
149
|
{
|
|
150
150
|
"expression": "MIT"
|
|
151
151
|
}
|
|
152
152
|
],
|
|
153
|
-
"purl": "pkg:npm/zod@4.6.
|
|
153
|
+
"purl": "pkg:npm/zod@4.6.5"
|
|
154
154
|
}
|
|
155
155
|
],
|
|
156
156
|
"dependencies": [
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
"ref": "pkg:npm/@enormora/wall-clock@0.0.3"
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
|
-
"ref": "pkg:npm/@overkill-dev/run@0.0.
|
|
161
|
+
"ref": "pkg:npm/@overkill-dev/run@0.0.48",
|
|
162
162
|
"dependsOn": [
|
|
163
163
|
"pkg:npm/@enormora/wall-clock@0.0.3",
|
|
164
164
|
"pkg:npm/@schema-hub/zod-error-formatter@0.0.16",
|
|
@@ -167,9 +167,9 @@
|
|
|
167
167
|
"pkg:npm/figures@6.1.0",
|
|
168
168
|
"pkg:npm/pure-rand@8.4.2",
|
|
169
169
|
"pkg:npm/string-width@8.2.2",
|
|
170
|
-
"pkg:npm/tinypool@2.
|
|
170
|
+
"pkg:npm/tinypool@2.2.0",
|
|
171
171
|
"pkg:npm/yoctocolors@2.2.0",
|
|
172
|
-
"pkg:npm/zod@4.6.
|
|
172
|
+
"pkg:npm/zod@4.6.5"
|
|
173
173
|
]
|
|
174
174
|
},
|
|
175
175
|
{
|
|
@@ -191,13 +191,13 @@
|
|
|
191
191
|
"ref": "pkg:npm/string-width@8.2.2"
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
|
-
"ref": "pkg:npm/tinypool@2.
|
|
194
|
+
"ref": "pkg:npm/tinypool@2.2.0"
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
"ref": "pkg:npm/yoctocolors@2.2.0"
|
|
198
198
|
},
|
|
199
199
|
{
|
|
200
|
-
"ref": "pkg:npm/zod@4.6.
|
|
200
|
+
"ref": "pkg:npm/zod@4.6.5"
|
|
201
201
|
}
|
|
202
202
|
]
|
|
203
203
|
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { TestRuntimePolicy } from '../engine/case-execution.ts';
|
|
2
|
-
export type RuntimeCapabilityPolicy = TestRuntimePolicy & {
|
|
3
|
-
readonly recordViolation: (capability: RuntimePolicyCapability, message: string, strictness: RuntimePolicyStrictness) => void;
|
|
4
|
-
};
|
|
5
|
-
export type RuntimeCapabilityPolicyEnvironment = Readonly<Record<string, string | undefined>>;
|
|
6
|
-
declare const runtimePolicyCapabilities: {
|
|
7
|
-
readonly childProcess: "child-process";
|
|
8
|
-
readonly console: "console";
|
|
9
|
-
readonly cryptoRandom: "crypto-random";
|
|
10
|
-
readonly dynamicModuleLoad: "dynamic-module-load";
|
|
11
|
-
readonly fileRead: "fs-read";
|
|
12
|
-
readonly fileWrite: "fs-write";
|
|
13
|
-
readonly inspector: "inspector";
|
|
14
|
-
readonly network: "net";
|
|
15
|
-
readonly openSslStore: "openssl-store";
|
|
16
|
-
readonly processEnvironment: "process-env";
|
|
17
|
-
readonly processExecute: "process-execute";
|
|
18
|
-
readonly rawStderr: "raw-stderr";
|
|
19
|
-
readonly rawStdout: "raw-stdout";
|
|
20
|
-
readonly timer: "timer";
|
|
21
|
-
readonly wasi: "wasi";
|
|
22
|
-
readonly webLocks: "web-locks";
|
|
23
|
-
readonly worker: "worker";
|
|
24
|
-
};
|
|
25
|
-
type RuntimePolicyCapability = typeof runtimePolicyCapabilities[keyof typeof runtimePolicyCapabilities];
|
|
26
|
-
type RuntimePolicyStrictness = 'blocked' | 'observed';
|
|
27
|
-
type CapabilityPolicyOptions = {
|
|
28
|
-
readonly dependencies: RuntimeCapabilityPolicyDependencies;
|
|
29
|
-
readonly observedStderr: boolean;
|
|
30
|
-
readonly observedStdout: boolean;
|
|
31
|
-
};
|
|
32
|
-
export type WebStorageLike = {
|
|
33
|
-
readonly length: number;
|
|
34
|
-
readonly getItem: (key: string) => string | null;
|
|
35
|
-
readonly key: (index: number) => string | null;
|
|
36
|
-
};
|
|
37
|
-
export type RuntimeCapabilityPolicyDependencies = {
|
|
38
|
-
readonly installIpcRestriction: (record: (message: string) => void) => () => void;
|
|
39
|
-
readonly installProcessExecutionRestriction: (record: (message: string) => void) => () => void;
|
|
40
|
-
readonly readEnvironment: () => RuntimeCapabilityPolicyEnvironment;
|
|
41
|
-
readonly readStorage: (name: 'localStorage' | 'sessionStorage') => WebStorageLike | null;
|
|
42
|
-
};
|
|
43
|
-
export declare function isRuntimeCapabilityPolicyEnvironment(value: unknown): value is RuntimeCapabilityPolicyEnvironment;
|
|
44
|
-
export declare function isWebStorageLike(value: unknown): value is WebStorageLike;
|
|
45
|
-
export declare function createRuntimeCapabilityPolicy(options: CapabilityPolicyOptions): RuntimeCapabilityPolicy;
|
|
46
|
-
export {};
|
|
47
|
-
//# sourceMappingURL=capability-policy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capability-policy.d.ts","sourceRoot":"","sources":["../../../../source/run/capability-policy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACtD,QAAQ,CAAC,eAAe,EAAE,CACtB,UAAU,EAAE,uBAAuB,EACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,uBAAuB,KAClC,IAAI,CAAC;CACb,CAAC;AACF,MAAM,MAAM,kCAAkC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE9F,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;CAkBrB,CAAC;AAEX,KAAK,uBAAuB,GAAG,OAAO,yBAAyB,CAAC,MAAM,OAAO,yBAAyB,CAAC,CAAC;AAGxG,KAAK,uBAAuB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,KAAK,uBAAuB,GAAG;IAC3B,QAAQ,CAAC,YAAY,EAAE,mCAAmC,CAAC;IAC3D,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACpC,CAAC;AAiBF,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAClF,QAAQ,CAAC,kCAAkC,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAC/F,QAAQ,CAAC,eAAe,EAAE,MAAM,kCAAkC,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,KAAK,cAAc,GAAG,IAAI,CAAC;CAC5F,CAAC;AA6GF,wBAAgB,oCAAoC,CAChD,KAAK,EAAE,OAAO,GACf,KAAK,IAAI,kCAAkC,CAM7C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAYxE;AAoSD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,uBAAuB,GAAG,uBAAuB,CAoFvG"}
|