@overkill-dev/run 0.0.9 → 0.0.11
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/engine.d.ts +27 -0
- package/engine/engine.d.ts.map +1 -0
- package/engine/engine.js +40 -0
- package/engine/engine.js.map +1 -0
- package/engine/execution-result.js +77 -0
- package/engine/execution-result.js.map +1 -0
- package/engine/execution.d.ts +2 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +23 -76
- package/engine/execution.js.map +1 -1
- package/engine/identity.d.ts +1 -1
- package/engine/identity.d.ts.map +1 -1
- package/engine/identity.js +16 -1
- package/engine/identity.js.map +1 -1
- package/engine/run-if-main.d.ts +28 -0
- package/engine/run-if-main.d.ts.map +1 -0
- package/engine/run-if-main.js +46 -0
- package/engine/run-if-main.js.map +1 -0
- package/engine/run-result.d.ts +22 -0
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/engine/test-node.d.ts +1 -0
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js +137 -0
- package/engine/test-node.js.map +1 -0
- package/engine/test-plan.d.ts +11 -1
- package/engine/test-plan.d.ts.map +1 -1
- package/engine/test-plan.js +174 -0
- package/engine/test-plan.js.map +1 -0
- package/package.json +6 -2
- package/packages/engine/engine.entry-point.js +67 -0
- package/packages/engine/engine.entry-point.js.map +1 -0
- package/packages/run/command-line.entry-point.d.ts +1 -1
- package/packages/run/command-line.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.d.ts +4 -2
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/packages/run/run.entry-point.js +2 -1
- package/packages/run/run.entry-point.js.map +1 -1
- package/readme.md +23 -5
- package/run/command-line-command.d.ts +1 -3
- package/run/command-line-command.d.ts.map +1 -1
- package/run/command-line-command.js +4 -1
- package/run/command-line-command.js.map +1 -1
- package/run/command-line-runner.d.ts +1 -1
- package/run/command-line-runner.d.ts.map +1 -1
- package/run/command-line-runner.js +5 -3
- package/run/command-line-runner.js.map +1 -1
- package/run/command-line-unimplemented-commands.js +1 -1
- package/run/command-line-unimplemented-commands.js.map +1 -1
- package/run/default-run-engine.js +14 -0
- package/run/default-run-engine.js.map +1 -0
- package/run/resource-usage.d.ts +15 -0
- package/run/resource-usage.d.ts.map +1 -0
- package/run/resource-usage.js +107 -0
- package/run/resource-usage.js.map +1 -0
- package/run/run-config.d.ts +30 -5
- package/run/run-config.d.ts.map +1 -1
- package/run/run-config.js +62 -1
- package/run/run-config.js.map +1 -1
- package/run/run-discovery.js +75 -0
- package/run/run-discovery.js.map +1 -0
- package/run/run-errors.d.ts +16 -0
- package/run/run-errors.d.ts.map +1 -0
- package/run/run-errors.js +37 -0
- package/run/run-errors.js.map +1 -0
- package/run/run-orchestrator.d.ts +3 -0
- package/run/run-orchestrator.d.ts.map +1 -0
- package/run/run-orchestrator.js +43 -0
- package/run/run-orchestrator.js.map +1 -0
- package/run/run-test-modules.js +53 -0
- package/run/run-test-modules.js.map +1 -0
- package/run/run.d.ts +35 -13
- package/run/run.d.ts.map +1 -1
- package/run/run.js +200 -66
- package/run/run.js.map +1 -1
- package/sbom.cdx.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { orchestrator } from "./run.js";
|
|
1
|
+
import { orchestrator } from "./run-orchestrator.js";
|
|
2
2
|
import { loadRunConfig } from "./run-config.js";
|
|
3
3
|
import { createCommandLineErrorResultFromUnknown, formatFallbackDiagnostics, readExitCodeFromRunResult } from "./command-line-command.js";
|
|
4
4
|
import { createCommandLineCommandNamespace } from "./command-line-command-namespace.js";
|
|
@@ -24,6 +24,7 @@ async function createCommandLineConfig(loadedConfig, dependencies) {
|
|
|
24
24
|
return {
|
|
25
25
|
loader: loadedConfig.loader,
|
|
26
26
|
outputRenderer: loadedConfig.outputRenderer,
|
|
27
|
+
profiles: loadedConfig.profiles,
|
|
27
28
|
reporters: await loadCommandLineReporters(loadedConfig, dependencies),
|
|
28
29
|
runtimeStateDir: loadedConfig.runtimeStateDir
|
|
29
30
|
};
|
|
@@ -31,8 +32,9 @@ async function createCommandLineConfig(loadedConfig, dependencies) {
|
|
|
31
32
|
async function createCommandFromRequest(request, loadedConfig, dependencies) {
|
|
32
33
|
return {
|
|
33
34
|
config: await createCommandLineConfig(loadedConfig, dependencies),
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
cwd: request.cwd,
|
|
36
|
+
engine: null,
|
|
37
|
+
request: request.request
|
|
36
38
|
};
|
|
37
39
|
}
|
|
38
40
|
async function runTestsWithLoadedConfig(request, dependencies, loadedConfig) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-line-runner.js","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command-line-runner.js","sourceRoot":"","sources":["../../../../source/run/command-line-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RunResolutionError } from "./run.js";
|
|
1
|
+
import { RunResolutionError } from "./run-errors.js";
|
|
2
2
|
import { createCommandLineErrorResultFromUnknown } from "./command-line-command.js";
|
|
3
3
|
function createUnimplementedCommandResult(command, context) {
|
|
4
4
|
const argumentSuffix = context.arguments.length === 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-line-unimplemented-commands.js","sourceRoot":"","sources":["../../../../source/run/command-line-unimplemented-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"command-line-unimplemented-commands.js","sourceRoot":"","sources":["../../../../source/run/command-line-unimplemented-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACH,uCAAuC,EAM1C,MAAM,2BAA2B,CAAC;AAEnC,SAAS,gCAAgC,CACrC,OAAe,EACf,OAAkC;IAElC,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QACjD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,SAAS,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;IAE/D,OAAO,uCAAuC,CAC1C,IAAI,kBAAkB,CAClB,YAAY,OAAO,IAAI,cAAc,0BAA0B,EAC/D,SAAS,EACT,qBAAqB,CACxB,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACtD,OAAO,KAAK,UAAU,uBAAuB,CAAC,OAAO;QACjD,OAAO,gCAAgC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC;AACN,CAAC;AAED,SAAS,mCAAmC,CAAC,SAAiB;IAC1D,OAAO;QACH,KAAK,EAAE,0BAA0B,CAAC,GAAG,SAAS,QAAQ,CAAC;QACvD,SAAS,EAAE,0BAA0B,CAAC,GAAG,SAAS,YAAY,CAAC;QAC/D,IAAI,EAAE,0BAA0B,CAAC,GAAG,SAAS,OAAO,CAAC;QACrD,IAAI,EAAE,0BAA0B,CAAC,GAAG,SAAS,OAAO,CAAC;QACrD,MAAM,EAAE,0BAA0B,CAAC,GAAG,SAAS,SAAS,CAAC;KAC5D,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC;IACnD,OAAO,mCAAmC,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC;IACpD,OAAO;QACH,QAAQ,EAAE,mCAAmC,CAAC,gBAAgB,CAAC;QAC/D,cAAc,EAAE,0BAA0B,CAAC,YAAY,CAAC;QACxD,aAAa,EAAE,0BAA0B,CAAC,WAAW,CAAC;KACzD,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as publicEngine from "../packages/engine/engine.entry-point.js";
|
|
2
|
+
export const defaultRunEngine = {
|
|
3
|
+
createRoot: publicEngine.createRoot,
|
|
4
|
+
createSuite: publicEngine.createSuite,
|
|
5
|
+
createTable: publicEngine.createTable,
|
|
6
|
+
createTestCase: publicEngine.createTestCase,
|
|
7
|
+
createTestPlan: publicEngine.createTestPlan,
|
|
8
|
+
createTestPlanFromTestFiles: publicEngine.createTestPlanFromTestFiles,
|
|
9
|
+
execute: publicEngine.execute,
|
|
10
|
+
formatCaseId: publicEngine.formatCaseId,
|
|
11
|
+
ownsTestNode: publicEngine.ownsTestNode,
|
|
12
|
+
runIfMain: publicEngine.runIfMain
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=default-run-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-run-engine.js","sourceRoot":"","sources":["../../../../source/run/default-run-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,0CAA0C,CAAC;AAGzE,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACpC,UAAU,EAAE,YAAY,CAAC,UAAU;IACnC,WAAW,EAAE,YAAY,CAAC,WAAW;IACrC,WAAW,EAAE,YAAY,CAAC,WAAW;IACrC,cAAc,EAAE,YAAY,CAAC,cAAc;IAC3C,cAAc,EAAE,YAAY,CAAC,cAAc;IAC3C,2BAA2B,EAAE,YAAY,CAAC,2BAA2B;IACrE,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,YAAY,EAAE,YAAY,CAAC,YAAY;IACvC,YAAY,EAAE,YAAY,CAAC,YAAY;IACvC,SAAS,EAAE,YAAY,CAAC,SAAS;CACpC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WallClock } from '@enormora/wall-clock';
|
|
2
|
+
import type { RunResourceUsageTracker } from '../engine/run-result.ts';
|
|
3
|
+
type ResourceUsageTrackerDependencies = {
|
|
4
|
+
readonly readActiveResourceTypes: () => readonly string[];
|
|
5
|
+
readonly readJavaScriptEngineHeapBytes: () => number;
|
|
6
|
+
readonly readResidentSetBytes: () => number;
|
|
7
|
+
readonly wallClock: WallClock;
|
|
8
|
+
};
|
|
9
|
+
export type ResourceUsageTrackerOptions = {
|
|
10
|
+
readonly samplingIntervalMilliseconds: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function createResourceUsageTracker(dependencies: ResourceUsageTrackerDependencies, options: ResourceUsageTrackerOptions): RunResourceUsageTracker;
|
|
13
|
+
export declare function createNodeResourceUsageTracker(wallClock: WallClock, options: ResourceUsageTrackerOptions): RunResourceUsageTracker;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=resource-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-usage.d.ts","sourceRoot":"","sources":["../../../../source/run/resource-usage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAGR,uBAAuB,EAC1B,MAAM,yBAAyB,CAAC;AAUjC,KAAK,gCAAgC,GAAG;IACpC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAC1D,QAAQ,CAAC,6BAA6B,EAAE,MAAM,MAAM,CAAC;IACrD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,MAAM,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACtC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;CACjD,CAAC;AAgGF,wBAAgB,0BAA0B,CACtC,YAAY,EAAE,gCAAgC,EAC9C,OAAO,EAAE,2BAA2B,GACrC,uBAAuB,CAiCzB;AAED,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,2BAA2B,GACrC,uBAAuB,CAazB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { getHeapStatistics } from 'node:v8';
|
|
2
|
+
const millisecondsPerSecond = 1000;
|
|
3
|
+
function sortedUnique(values) {
|
|
4
|
+
return Array.from(new Set(values)).toSorted(function compareText(firstValue, secondValue) {
|
|
5
|
+
return firstValue.localeCompare(secondValue);
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
function readResourceUsageSample(dependencies) {
|
|
9
|
+
return {
|
|
10
|
+
capturedAtMilliseconds: dependencies.wallClock.currentTimestampInMilliseconds,
|
|
11
|
+
javaScriptEngineHeapBytes: dependencies.readJavaScriptEngineHeapBytes(),
|
|
12
|
+
residentSetBytes: dependencies.readResidentSetBytes()
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function readResourceUsageSnapshot(dependencies) {
|
|
16
|
+
const sample = readResourceUsageSample(dependencies);
|
|
17
|
+
const activeResourceTypes = dependencies.readActiveResourceTypes();
|
|
18
|
+
return {
|
|
19
|
+
activeResourceCount: activeResourceTypes.length,
|
|
20
|
+
activeResourceTypes: sortedUnique(activeResourceTypes),
|
|
21
|
+
capturedAtMilliseconds: sample.capturedAtMilliseconds,
|
|
22
|
+
javaScriptEngineHeapBytes: sample.javaScriptEngineHeapBytes,
|
|
23
|
+
residentSetBytes: sample.residentSetBytes
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function maximumSampleValue(samples, readValue) {
|
|
27
|
+
return Math.max(...samples.map(readValue));
|
|
28
|
+
}
|
|
29
|
+
function residentSetGrowthBytesPerSecond(previousSample, nextSample) {
|
|
30
|
+
const elapsedMilliseconds = nextSample.capturedAtMilliseconds - previousSample.capturedAtMilliseconds;
|
|
31
|
+
if (elapsedMilliseconds <= 0) {
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
const residentSetGrowthBytes = nextSample.residentSetBytes - previousSample.residentSetBytes;
|
|
35
|
+
return Math.max(0, residentSetGrowthBytes * millisecondsPerSecond / elapsedMilliseconds);
|
|
36
|
+
}
|
|
37
|
+
function peakResidentSetGrowthBytesPerSecond(samples) {
|
|
38
|
+
let peakGrowthBytesPerSecond = 0;
|
|
39
|
+
for (let sampleIndex = 1; sampleIndex < samples.length; sampleIndex += 1) {
|
|
40
|
+
const previousSample = samples[sampleIndex - 1];
|
|
41
|
+
const nextSample = samples[sampleIndex];
|
|
42
|
+
if (previousSample !== undefined && nextSample !== undefined) {
|
|
43
|
+
peakGrowthBytesPerSecond = Math.max(peakGrowthBytesPerSecond, residentSetGrowthBytesPerSecond(previousSample, nextSample));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return peakGrowthBytesPerSecond;
|
|
47
|
+
}
|
|
48
|
+
function createResourceUsage(start, end, samples) {
|
|
49
|
+
return {
|
|
50
|
+
activeResourceTypes: sortedUnique([...start.activeResourceTypes, ...end.activeResourceTypes]),
|
|
51
|
+
end,
|
|
52
|
+
peakActiveResourceCount: Math.max(start.activeResourceCount, end.activeResourceCount),
|
|
53
|
+
peakJavaScriptEngineHeapBytes: maximumSampleValue(samples, function readJavaScriptEngineHeapBytes(sample) {
|
|
54
|
+
return sample.javaScriptEngineHeapBytes;
|
|
55
|
+
}),
|
|
56
|
+
peakResidentSetBytes: maximumSampleValue(samples, function readResidentSetBytes(sample) {
|
|
57
|
+
return sample.residentSetBytes;
|
|
58
|
+
}),
|
|
59
|
+
peakResidentSetGrowthBytesPerSecond: peakResidentSetGrowthBytesPerSecond(samples),
|
|
60
|
+
sampleCount: samples.length,
|
|
61
|
+
start
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function createResourceUsageTracker(dependencies, options) {
|
|
65
|
+
let intervalIdentifier = null;
|
|
66
|
+
let samples = [];
|
|
67
|
+
let startSnapshot = null;
|
|
68
|
+
return {
|
|
69
|
+
finish() {
|
|
70
|
+
if (startSnapshot === null) {
|
|
71
|
+
throw new Error('Resource usage tracking must start before it can finish.');
|
|
72
|
+
}
|
|
73
|
+
if (intervalIdentifier !== null) {
|
|
74
|
+
dependencies.wallClock.clearInterval(intervalIdentifier);
|
|
75
|
+
intervalIdentifier = null;
|
|
76
|
+
}
|
|
77
|
+
const endSnapshot = readResourceUsageSnapshot(dependencies);
|
|
78
|
+
samples = [...samples, endSnapshot];
|
|
79
|
+
return createResourceUsage(startSnapshot, endSnapshot, samples);
|
|
80
|
+
},
|
|
81
|
+
start() {
|
|
82
|
+
if (startSnapshot !== null) {
|
|
83
|
+
throw new Error('Resource usage tracking already started.');
|
|
84
|
+
}
|
|
85
|
+
startSnapshot = readResourceUsageSnapshot(dependencies);
|
|
86
|
+
samples = [startSnapshot];
|
|
87
|
+
intervalIdentifier = dependencies.wallClock.setInterval(function collectResourceUsageSample() {
|
|
88
|
+
samples = [...samples, readResourceUsageSample(dependencies)];
|
|
89
|
+
}, options.samplingIntervalMilliseconds);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function createNodeResourceUsageTracker(wallClock, options) {
|
|
94
|
+
return createResourceUsageTracker({
|
|
95
|
+
readActiveResourceTypes() {
|
|
96
|
+
return process.getActiveResourcesInfo();
|
|
97
|
+
},
|
|
98
|
+
readJavaScriptEngineHeapBytes() {
|
|
99
|
+
return getHeapStatistics().used_heap_size;
|
|
100
|
+
},
|
|
101
|
+
readResidentSetBytes() {
|
|
102
|
+
return process.memoryUsage.rss();
|
|
103
|
+
},
|
|
104
|
+
wallClock
|
|
105
|
+
}, options);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=resource-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-usage.js","sourceRoot":"","sources":["../../../../source/run/resource-usage.ts"],"names":[],"mappings":"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"}
|
package/run/run-config.d.ts
CHANGED
|
@@ -1,20 +1,44 @@
|
|
|
1
1
|
import type { NonEmptyReadonlyArray } from '../assertion-protocol/assertion-node-shape.ts';
|
|
2
2
|
import { type OutputRenderer } from '../engine/reporter-output.ts';
|
|
3
3
|
import type { Reporter } from '../engine/reporter.ts';
|
|
4
|
-
import type { RunLoaderConfig } from './run.ts';
|
|
4
|
+
import type { RunLoaderConfig, RunProfilesConfig } from './run.ts';
|
|
5
5
|
export type RunProjectConfig = {
|
|
6
|
-
readonly loader?: RunLoaderConfig;
|
|
7
|
-
readonly outputRenderer?: OutputRenderer;
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
6
|
+
readonly loader?: RunLoaderConfig | undefined;
|
|
7
|
+
readonly outputRenderer?: OutputRenderer | undefined;
|
|
8
|
+
readonly profiles?: RunProjectProfilesConfig | undefined;
|
|
9
|
+
readonly reporters?: NonEmptyReadonlyArray<Reporter> | undefined;
|
|
10
|
+
readonly runtimeStateDir?: string | undefined;
|
|
10
11
|
};
|
|
11
12
|
export type LoadedRunConfig = {
|
|
12
13
|
readonly configPath: string | null;
|
|
13
14
|
readonly loader: RunLoaderConfig;
|
|
14
15
|
readonly outputRenderer: OutputRenderer;
|
|
16
|
+
readonly profiles: RunProfilesConfig;
|
|
15
17
|
readonly reporters: NonEmptyReadonlyArray<Reporter> | null;
|
|
16
18
|
readonly runtimeStateDir: string;
|
|
17
19
|
};
|
|
20
|
+
export type RunProjectResourceBudgets = {
|
|
21
|
+
readonly activeResourceCount?: number | null | undefined;
|
|
22
|
+
readonly javaScriptEngineHeapBytes?: number | null | undefined;
|
|
23
|
+
readonly residentSetBytes?: number | null | undefined;
|
|
24
|
+
readonly residentSetGrowthBytesPerSecond?: number | null | undefined;
|
|
25
|
+
};
|
|
26
|
+
export type RunProjectMeasuredMicrotestProfileConfig = {
|
|
27
|
+
readonly measureResourceUsage: true;
|
|
28
|
+
readonly resourceBudgets?: RunProjectResourceBudgets | undefined;
|
|
29
|
+
readonly resourceUsageSamplingIntervalMilliseconds?: number | undefined;
|
|
30
|
+
};
|
|
31
|
+
export type RunProjectUnmeasuredMicrotestProfileConfig = {
|
|
32
|
+
readonly measureResourceUsage?: false | undefined;
|
|
33
|
+
};
|
|
34
|
+
type RunProjectMicrotestProfileConfigVariants = readonly [
|
|
35
|
+
RunProjectMeasuredMicrotestProfileConfig,
|
|
36
|
+
RunProjectUnmeasuredMicrotestProfileConfig
|
|
37
|
+
];
|
|
38
|
+
export type RunProjectMicrotestProfileConfig = RunProjectMicrotestProfileConfigVariants[number];
|
|
39
|
+
export type RunProjectProfilesConfig = {
|
|
40
|
+
readonly microtest?: RunProjectMicrotestProfileConfig | undefined;
|
|
41
|
+
};
|
|
18
42
|
export type RunConfigLoadRequest = {
|
|
19
43
|
readonly configPath: string | null;
|
|
20
44
|
readonly cwd: string;
|
|
@@ -24,4 +48,5 @@ export declare class RunConfigError extends Error {
|
|
|
24
48
|
}
|
|
25
49
|
export declare function defineConfig(config: RunProjectConfig): RunProjectConfig;
|
|
26
50
|
export declare function loadRunConfig(request: RunConfigLoadRequest): Promise<LoadedRunConfig>;
|
|
51
|
+
export {};
|
|
27
52
|
//# sourceMappingURL=run-config.d.ts.map
|
package/run/run-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-config.d.ts","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"run-config.d.ts","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EACR,eAAe,EACf,iBAAiB,EAGpB,MAAM,UAAU,CAAC;AAKlB,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,+BAA+B,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAAG;IACnD,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,yCAAyC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG;IACrD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CACrD,CAAC;AAEF,KAAK,wCAAwC,GAAG,SAAS;IACrD,wCAAwC;IACxC,0CAA0C;CAC7C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,wCAAwC,CAAC,MAAM,CAAC,CAAC;AAEhG,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,gCAAgC,GAAG,SAAS,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,cAAe,SAAQ,KAAK;gBAClB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC;CAIvE;AAqFD,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAiID,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAW3F"}
|
package/run/run-config.js
CHANGED
|
@@ -13,6 +13,7 @@ import { parse } from '@schema-hub/zod-error-formatter';
|
|
|
13
13
|
import { z } from 'zod/v4';
|
|
14
14
|
import { createPlainOutputRenderer } from "../engine/reporter-output.js";
|
|
15
15
|
const defaultConfigFileNames = ['overkill.config.ts', 'overkill.config.js'];
|
|
16
|
+
const defaultResourceUsageSamplingIntervalMilliseconds = 100;
|
|
16
17
|
export class RunConfigError extends Error {
|
|
17
18
|
constructor(message, options) {
|
|
18
19
|
super(message, options);
|
|
@@ -23,6 +24,16 @@ const defaultLoader = {
|
|
|
23
24
|
sourceMaps: false,
|
|
24
25
|
stripMode: 'strip-only'
|
|
25
26
|
};
|
|
27
|
+
const defaultResourceUsagePolicy = {
|
|
28
|
+
measureResourceUsage: false,
|
|
29
|
+
resourceBudgets: {
|
|
30
|
+
activeResourceCount: null,
|
|
31
|
+
javaScriptEngineHeapBytes: null,
|
|
32
|
+
residentSetBytes: null,
|
|
33
|
+
residentSetGrowthBytesPerSecond: null
|
|
34
|
+
},
|
|
35
|
+
resourceUsageSamplingIntervalMilliseconds: defaultResourceUsageSamplingIntervalMilliseconds
|
|
36
|
+
};
|
|
26
37
|
const reporterSchema = z.custom(function isReporter(value) {
|
|
27
38
|
return typeof value === 'object' && value !== null &&
|
|
28
39
|
Object.hasOwn(value, 'kind') &&
|
|
@@ -37,11 +48,33 @@ const outputRendererSchema = z.custom(function isOutputRenderer(value) {
|
|
|
37
48
|
});
|
|
38
49
|
const loaderSchema = z.strictObject({
|
|
39
50
|
sourceMaps: z.boolean(),
|
|
40
|
-
stripMode: z.
|
|
51
|
+
stripMode: z.literal('strip-only')
|
|
52
|
+
});
|
|
53
|
+
const positiveSafeIntegerSchema = z.number().refine(function isPositiveSafeInteger(value) {
|
|
54
|
+
return Number.isSafeInteger(value) && value > 0;
|
|
55
|
+
}, 'must be a positive safe integer');
|
|
56
|
+
const resourceBudgetsSchema = z.strictObject({
|
|
57
|
+
activeResourceCount: z.optional(z.nullable(positiveSafeIntegerSchema)),
|
|
58
|
+
javaScriptEngineHeapBytes: z.optional(z.nullable(positiveSafeIntegerSchema)),
|
|
59
|
+
residentSetBytes: z.optional(z.nullable(positiveSafeIntegerSchema)),
|
|
60
|
+
residentSetGrowthBytesPerSecond: z.optional(z.nullable(positiveSafeIntegerSchema))
|
|
61
|
+
});
|
|
62
|
+
const measuredMicrotestProfileSchema = z.strictObject({
|
|
63
|
+
measureResourceUsage: z.literal(true),
|
|
64
|
+
resourceBudgets: z.optional(resourceBudgetsSchema),
|
|
65
|
+
resourceUsageSamplingIntervalMilliseconds: z.optional(positiveSafeIntegerSchema)
|
|
66
|
+
});
|
|
67
|
+
const unmeasuredMicrotestProfileSchema = z.strictObject({
|
|
68
|
+
measureResourceUsage: z.optional(z.literal(false))
|
|
69
|
+
});
|
|
70
|
+
const microtestProfileSchema = z.union([measuredMicrotestProfileSchema, unmeasuredMicrotestProfileSchema]);
|
|
71
|
+
const profilesSchema = z.strictObject({
|
|
72
|
+
microtest: z.optional(microtestProfileSchema)
|
|
41
73
|
});
|
|
42
74
|
const projectConfigSchema = z.strictObject({
|
|
43
75
|
loader: z.optional(loaderSchema),
|
|
44
76
|
outputRenderer: z.optional(outputRendererSchema),
|
|
77
|
+
profiles: z.optional(profilesSchema),
|
|
45
78
|
reporters: z.optional(z.array(reporterSchema).min(1)),
|
|
46
79
|
runtimeStateDir: z.optional(z.string().min(1))
|
|
47
80
|
});
|
|
@@ -99,11 +132,39 @@ function normalizeReporters(reporters) {
|
|
|
99
132
|
}
|
|
100
133
|
return [firstReporter, ...remainingReporters];
|
|
101
134
|
}
|
|
135
|
+
function normalizeBudgetValue(value) {
|
|
136
|
+
return value ?? null;
|
|
137
|
+
}
|
|
138
|
+
function normalizeResourceBudgets(resourceBudgets) {
|
|
139
|
+
return {
|
|
140
|
+
activeResourceCount: normalizeBudgetValue(resourceBudgets?.activeResourceCount),
|
|
141
|
+
javaScriptEngineHeapBytes: normalizeBudgetValue(resourceBudgets?.javaScriptEngineHeapBytes),
|
|
142
|
+
residentSetBytes: normalizeBudgetValue(resourceBudgets?.residentSetBytes),
|
|
143
|
+
residentSetGrowthBytesPerSecond: normalizeBudgetValue(resourceBudgets?.residentSetGrowthBytesPerSecond)
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function normalizeMicrotestProfile(profile) {
|
|
147
|
+
if (profile?.measureResourceUsage !== true) {
|
|
148
|
+
return defaultResourceUsagePolicy;
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
measureResourceUsage: true,
|
|
152
|
+
resourceBudgets: normalizeResourceBudgets(profile.resourceBudgets),
|
|
153
|
+
resourceUsageSamplingIntervalMilliseconds: profile.resourceUsageSamplingIntervalMilliseconds ??
|
|
154
|
+
defaultResourceUsageSamplingIntervalMilliseconds
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function normalizeProfiles(profiles) {
|
|
158
|
+
return {
|
|
159
|
+
microtest: normalizeMicrotestProfile(profiles?.microtest)
|
|
160
|
+
};
|
|
161
|
+
}
|
|
102
162
|
function normalizeConfig(parsedConfig, configPath) {
|
|
103
163
|
return {
|
|
104
164
|
configPath,
|
|
105
165
|
loader: parsedConfig.loader ?? defaultLoader,
|
|
106
166
|
outputRenderer: parsedConfig.outputRenderer ?? createPlainOutputRenderer(),
|
|
167
|
+
profiles: normalizeProfiles(parsedConfig.profiles),
|
|
107
168
|
reporters: normalizeReporters(parsedConfig.reporters),
|
|
108
169
|
runtimeStateDir: parsedConfig.runtimeStateDir ?? '.overkill'
|
|
109
170
|
};
|
package/run/run-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-config.js","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,yBAAyB,EAAuB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"run-config.js","sourceRoot":"","sources":["../../../../source/run/run-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { realpath, stat } from 'node:fs/promises';
|
|
2
|
+
import { isAbsolute, relative, resolve } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { invalidRequest, noTestsCollected } from "./run-errors.js";
|
|
5
|
+
function toFileIdentity(path) {
|
|
6
|
+
return path.replaceAll('\\', '/');
|
|
7
|
+
}
|
|
8
|
+
function isOutsideCwd(relativePath) {
|
|
9
|
+
return relativePath === '..' || relativePath.startsWith('../') || isAbsolute(relativePath);
|
|
10
|
+
}
|
|
11
|
+
async function readRealCwd(cwd) {
|
|
12
|
+
try {
|
|
13
|
+
return await realpath(cwd);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return invalidRequest(`Run cwd does not exist: ${cwd}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function readRealFilePath(cwd, requestedPath) {
|
|
20
|
+
if (requestedPath.trim().length === 0) {
|
|
21
|
+
invalidRequest('Run path must not be empty.');
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
return await realpath(resolve(cwd, requestedPath));
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return invalidRequest(`Run path does not exist: ${requestedPath}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function assertRealFile(realPath, requestedPath) {
|
|
31
|
+
const fileStat = await stat(realPath);
|
|
32
|
+
if (!fileStat.isFile()) {
|
|
33
|
+
invalidRequest(`Run path must be a file: ${requestedPath}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function createDiscoveredRunFile(realCwd, realPath, requestedPath) {
|
|
37
|
+
const relativePath = relative(realCwd, realPath);
|
|
38
|
+
if (isOutsideCwd(relativePath)) {
|
|
39
|
+
invalidRequest(`Run path must stay inside cwd: ${requestedPath}`);
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
file: toFileIdentity(relativePath),
|
|
43
|
+
href: pathToFileURL(realPath).href,
|
|
44
|
+
path: realPath
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function assertNonEmptyDiscoveredFiles(files) {
|
|
48
|
+
if (files.length === 0) {
|
|
49
|
+
noTestsCollected('No explicit run paths were provided.');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async function discoverRunFile(realCwd, requestedPath) {
|
|
53
|
+
const realPath = await readRealFilePath(realCwd, requestedPath);
|
|
54
|
+
await assertRealFile(realPath, requestedPath);
|
|
55
|
+
return createDiscoveredRunFile(realCwd, realPath, requestedPath);
|
|
56
|
+
}
|
|
57
|
+
function assertUniqueRunFile(file, seenPaths) {
|
|
58
|
+
if (seenPaths.has(file.path)) {
|
|
59
|
+
invalidRequest(`Run path must not be duplicated: ${file.file}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export async function discoverRunFiles(request) {
|
|
63
|
+
const realCwd = await readRealCwd(request.cwd);
|
|
64
|
+
const files = await Promise.all(request.paths.map(async function discoverPath(requestedPath) {
|
|
65
|
+
return await discoverRunFile(realCwd, requestedPath);
|
|
66
|
+
}));
|
|
67
|
+
const seenPaths = new Set();
|
|
68
|
+
for (const file of files) {
|
|
69
|
+
assertUniqueRunFile(file, seenPaths);
|
|
70
|
+
seenPaths.add(file.path);
|
|
71
|
+
}
|
|
72
|
+
assertNonEmptyDiscoveredFiles(files);
|
|
73
|
+
return files;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=run-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-discovery.js","sourceRoot":"","sources":["../../../../source/run/run-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { RunnerError } from '../engine/run-result.ts';
|
|
2
|
+
export type RunResolutionErrorCode = 'invalid-request' | 'no-tests-collected' | 'unsupported-request';
|
|
3
|
+
export declare class RunResolutionError extends Error {
|
|
4
|
+
private readonly errorCode;
|
|
5
|
+
constructor(message: string, options: Readonly<ErrorOptions> | undefined, code: RunResolutionErrorCode);
|
|
6
|
+
code(): RunResolutionErrorCode;
|
|
7
|
+
}
|
|
8
|
+
export declare class RunCollectionError extends Error {
|
|
9
|
+
private readonly errorSubtype;
|
|
10
|
+
constructor(message: string, options: Readonly<ErrorOptions>, subtype: RunnerError['subtype']);
|
|
11
|
+
runnerError(): RunnerError;
|
|
12
|
+
}
|
|
13
|
+
export declare function unsupportedRequest(message: string): never;
|
|
14
|
+
export declare function invalidRequest(message: string): never;
|
|
15
|
+
export declare function noTestsCollected(message: string): never;
|
|
16
|
+
//# sourceMappingURL=run-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-errors.d.ts","sourceRoot":"","sources":["../../../../source/run/run-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AAEtG,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;gBAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,sBAAsB;IAMtG,IAAI,IAAI,sBAAsB;CAGxC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;gBAEnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC;IAM7F,WAAW,IAAI,WAAW;CAQpC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAEzD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAErD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAEvD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class RunResolutionError extends Error {
|
|
2
|
+
errorCode;
|
|
3
|
+
constructor(message, options, code) {
|
|
4
|
+
super(message, options);
|
|
5
|
+
this.name = 'RunResolutionError';
|
|
6
|
+
this.errorCode = code;
|
|
7
|
+
}
|
|
8
|
+
code() {
|
|
9
|
+
return this.errorCode;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class RunCollectionError extends Error {
|
|
13
|
+
errorSubtype;
|
|
14
|
+
constructor(message, options, subtype) {
|
|
15
|
+
super(message, options);
|
|
16
|
+
this.name = 'RunCollectionError';
|
|
17
|
+
this.errorSubtype = subtype;
|
|
18
|
+
}
|
|
19
|
+
runnerError() {
|
|
20
|
+
return {
|
|
21
|
+
attributedTo: null,
|
|
22
|
+
cause: this.cause,
|
|
23
|
+
message: this.message,
|
|
24
|
+
subtype: this.errorSubtype
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function unsupportedRequest(message) {
|
|
29
|
+
throw new RunResolutionError(message, undefined, 'unsupported-request');
|
|
30
|
+
}
|
|
31
|
+
export function invalidRequest(message) {
|
|
32
|
+
throw new RunResolutionError(message, undefined, 'invalid-request');
|
|
33
|
+
}
|
|
34
|
+
export function noTestsCollected(message) {
|
|
35
|
+
throw new RunResolutionError(message, undefined, 'no-tests-collected');
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=run-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-errors.js","sourceRoot":"","sources":["../../../../source/run/run-errors.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACxB,SAAS,CAAyB;IAEnD,YAAmB,OAAe,EAAE,OAA2C,EAAE,IAA4B;QACzG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEM,IAAI;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CACJ;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACxB,YAAY,CAAyB;IAEtD,YAAmB,OAAe,EAAE,OAA+B,EAAE,OAA+B;QAChG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAChC,CAAC;IAEM,WAAW;QACd,OAAO;YACH,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,YAAY;SAC7B,CAAC;IACN,CAAC;CACJ;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAC9C,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC1C,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC5C,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-orchestrator.d.ts","sourceRoot":"","sources":["../../../../source/run/run-orchestrator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAiBvE,eAAO,MAAM,YAAY,EAAE,eAwBzB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { createWallClock } from '@enormora/wall-clock';
|
|
3
|
+
import { createExecute } from "../engine/execution.js";
|
|
4
|
+
import { createReporterDispatcher } from "../engine/reporter-dispatcher.js";
|
|
5
|
+
import { defaultRunEngine } from "./default-run-engine.js";
|
|
6
|
+
import { createNodeResourceUsageTracker } from "./resource-usage.js";
|
|
7
|
+
import { createRunOrchestrator } from "./run.js";
|
|
8
|
+
const seedByteLength = 8;
|
|
9
|
+
const defaultWallClock = createWallClock();
|
|
10
|
+
function createDefaultSeed() {
|
|
11
|
+
return randomBytes(seedByteLength).readBigUInt64BE();
|
|
12
|
+
}
|
|
13
|
+
function writeStdoutLine(line) {
|
|
14
|
+
process.stdout.write(`${line}\n`);
|
|
15
|
+
}
|
|
16
|
+
function writeStderrLine(line) {
|
|
17
|
+
process.stderr.write(`${line}\n`);
|
|
18
|
+
}
|
|
19
|
+
export const orchestrator = createRunOrchestrator({
|
|
20
|
+
createSeed: createDefaultSeed,
|
|
21
|
+
createResourceUsageTracker(options) {
|
|
22
|
+
return createNodeResourceUsageTracker(defaultWallClock, options);
|
|
23
|
+
},
|
|
24
|
+
defaultEngine: defaultRunEngine,
|
|
25
|
+
execute: createExecute({
|
|
26
|
+
reporterDispatcher: createReporterDispatcher({
|
|
27
|
+
stderr: { writeLine: writeStderrLine },
|
|
28
|
+
stdout: { writeLine: writeStdoutLine },
|
|
29
|
+
wallClock: defaultWallClock
|
|
30
|
+
}),
|
|
31
|
+
wallClock: defaultWallClock
|
|
32
|
+
}),
|
|
33
|
+
node: {
|
|
34
|
+
arch: process.arch,
|
|
35
|
+
platform: process.platform,
|
|
36
|
+
version: process.versions.node
|
|
37
|
+
},
|
|
38
|
+
readStartedAt() {
|
|
39
|
+
const startedAt = new Date(defaultWallClock.currentTimestampInMilliseconds);
|
|
40
|
+
return startedAt.toISOString();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=run-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-orchestrator.js","sourceRoot":"","sources":["../../../../source/run/run-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAwB,MAAM,UAAU,CAAC;AAEvE,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,gBAAgB,GAAG,eAAe,EAAE,CAAC;AAE3C,SAAS,iBAAiB;IACtB,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC,eAAe,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAoB,qBAAqB,CAAC;IAC/D,UAAU,EAAE,iBAAiB;IAC7B,0BAA0B,CAAC,OAAO;QAC9B,OAAO,8BAA8B,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,aAAa,EAAE,gBAAgB;IAC/B,OAAO,EAAE,aAAa,CAAC;QACnB,kBAAkB,EAAE,wBAAwB,CAAC;YACzC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;YACtC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;YACtC,SAAS,EAAE,gBAAgB;SAC9B,CAAC;QACF,SAAS,EAAE,gBAAgB;KAC9B,CAAC;IACF,IAAI,EAAE;QACF,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;KACjC;IACD,aAAa;QACT,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC;QAE5E,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;CACJ,CAAC,CAAC"}
|