build-raptor 0.130.0 → 0.131.0
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/build-raptor.js +7259 -0
- package/index.d.ts +22 -0
- package/index.js +7231 -0
- package/package.json +13 -17
- package/dist/deps/brand/brand.d.ts +0 -5
- package/dist/deps/brand/brand.js +0 -3
- package/dist/deps/brand/index.d.ts +0 -1
- package/dist/deps/brand/index.js +0 -18
- package/dist/deps/build-failed-error/build-failed-error.d.ts +0 -14
- package/dist/deps/build-failed-error/build-failed-error.js +0 -13
- package/dist/deps/build-failed-error/index.d.ts +0 -1
- package/dist/deps/build-failed-error/index.js +0 -18
- package/dist/deps/build-raptor-api/build-raptor-api.d.ts +0 -351
- package/dist/deps/build-raptor-api/build-raptor-api.js +0 -132
- package/dist/deps/build-raptor-api/index.d.ts +0 -2
- package/dist/deps/build-raptor-api/index.js +0 -19
- package/dist/deps/build-raptor-api/step-by-step-processor.d.ts +0 -35
- package/dist/deps/build-raptor-api/step-by-step-processor.js +0 -3
- package/dist/deps/build-raptor-core/breakdown.d.ts +0 -18
- package/dist/deps/build-raptor-core/breakdown.js +0 -99
- package/dist/deps/build-raptor-core/build-raptor-config.d.ts +0 -21
- package/dist/deps/build-raptor-core/build-raptor-config.js +0 -25
- package/dist/deps/build-raptor-core/default-asset-publisher.d.ts +0 -10
- package/dist/deps/build-raptor-core/default-asset-publisher.js +0 -16
- package/dist/deps/build-raptor-core/engine-bootstrapper.d.ts +0 -50
- package/dist/deps/build-raptor-core/engine-bootstrapper.js +0 -200
- package/dist/deps/build-raptor-core/engine-event-scheme.d.ts +0 -20
- package/dist/deps/build-raptor-core/engine-event-scheme.js +0 -3
- package/dist/deps/build-raptor-core/engine.d.ts +0 -66
- package/dist/deps/build-raptor-core/engine.js +0 -285
- package/dist/deps/build-raptor-core/examplify-zod.d.ts +0 -93
- package/dist/deps/build-raptor-core/examplify-zod.js +0 -257
- package/dist/deps/build-raptor-core/execution-plan.d.ts +0 -20
- package/dist/deps/build-raptor-core/execution-plan.js +0 -66
- package/dist/deps/build-raptor-core/execution-record.d.ts +0 -17
- package/dist/deps/build-raptor-core/execution-record.js +0 -3
- package/dist/deps/build-raptor-core/execution-type.d.ts +0 -2
- package/dist/deps/build-raptor-core/execution-type.js +0 -3
- package/dist/deps/build-raptor-core/find-repo-dir.d.ts +0 -1
- package/dist/deps/build-raptor-core/find-repo-dir.js +0 -27
- package/dist/deps/build-raptor-core/fingerprint-ledger.d.ts +0 -33
- package/dist/deps/build-raptor-core/fingerprint-ledger.js +0 -164
- package/dist/deps/build-raptor-core/fingerprint.d.ts +0 -3
- package/dist/deps/build-raptor-core/fingerprint.js +0 -13
- package/dist/deps/build-raptor-core/fingerprinter.d.ts +0 -15
- package/dist/deps/build-raptor-core/fingerprinter.js +0 -122
- package/dist/deps/build-raptor-core/hasher.d.ts +0 -21
- package/dist/deps/build-raptor-core/hasher.js +0 -93
- package/dist/deps/build-raptor-core/index.d.ts +0 -9
- package/dist/deps/build-raptor-core/index.js +0 -26
- package/dist/deps/build-raptor-core/model.d.ts +0 -17
- package/dist/deps/build-raptor-core/model.js +0 -40
- package/dist/deps/build-raptor-core/nop-asset-publisher.d.ts +0 -6
- package/dist/deps/build-raptor-core/nop-asset-publisher.js +0 -12
- package/dist/deps/build-raptor-core/performance-report.d.ts +0 -5
- package/dist/deps/build-raptor-core/performance-report.js +0 -3
- package/dist/deps/build-raptor-core/phase.d.ts +0 -1
- package/dist/deps/build-raptor-core/phase.js +0 -3
- package/dist/deps/build-raptor-core/planner.d.ts +0 -12
- package/dist/deps/build-raptor-core/planner.js +0 -43
- package/dist/deps/build-raptor-core/purger.d.ts +0 -11
- package/dist/deps/build-raptor-core/purger.js +0 -65
- package/dist/deps/build-raptor-core/slot-index.d.ts +0 -6
- package/dist/deps/build-raptor-core/slot-index.js +0 -17
- package/dist/deps/build-raptor-core/step-by-step-transmitter.d.ts +0 -15
- package/dist/deps/build-raptor-core/step-by-step-transmitter.js +0 -94
- package/dist/deps/build-raptor-core/tar-stream.d.ts +0 -20
- package/dist/deps/build-raptor-core/tar-stream.js +0 -194
- package/dist/deps/build-raptor-core/task-executor.d.ts +0 -32
- package/dist/deps/build-raptor-core/task-executor.js +0 -321
- package/dist/deps/build-raptor-core/task-store-cli.d.ts +0 -1
- package/dist/deps/build-raptor-core/task-store-cli.js +0 -61
- package/dist/deps/build-raptor-core/task-store-event.d.ts +0 -17
- package/dist/deps/build-raptor-core/task-store-event.js +0 -3
- package/dist/deps/build-raptor-core/task-store.d.ts +0 -41
- package/dist/deps/build-raptor-core/task-store.js +0 -302
- package/dist/deps/build-raptor-core/task-summary.d.ts +0 -12
- package/dist/deps/build-raptor-core/task-summary.js +0 -3
- package/dist/deps/build-raptor-core/task-tracker.d.ts +0 -23
- package/dist/deps/build-raptor-core/task-tracker.js +0 -97
- package/dist/deps/build-raptor-core/task.d.ts +0 -30
- package/dist/deps/build-raptor-core/task.js +0 -90
- package/dist/deps/build-raptor-core/updatable-task-output-registry.d.ts +0 -13
- package/dist/deps/build-raptor-core/updatable-task-output-registry.js +0 -75
- package/dist/deps/build-raptor-core/validate-task-infos.d.ts +0 -3
- package/dist/deps/build-raptor-core/validate-task-infos.js +0 -53
- package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.d.ts +0 -1
- package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.js +0 -18
- package/dist/deps/build-raptor-core-testkit/driver.d.ts +0 -119
- package/dist/deps/build-raptor-core-testkit/driver.js +0 -305
- package/dist/deps/build-raptor-core-testkit/index.d.ts +0 -3
- package/dist/deps/build-raptor-core-testkit/index.js +0 -20
- package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.d.ts +0 -35
- package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.js +0 -226
- package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.d.ts +0 -27
- package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.js +0 -140
- package/dist/deps/build-raptor-jest-reporter/index.d.ts +0 -0
- package/dist/deps/build-raptor-jest-reporter/index.js +0 -33
- package/dist/deps/build-run-id/build-run-id.d.ts +0 -3
- package/dist/deps/build-run-id/build-run-id.js +0 -13
- package/dist/deps/build-run-id/index.d.ts +0 -1
- package/dist/deps/build-run-id/index.js +0 -18
- package/dist/deps/core-types/core-types.d.ts +0 -29
- package/dist/deps/core-types/core-types.js +0 -81
- package/dist/deps/core-types/index.d.ts +0 -1
- package/dist/deps/core-types/index.js +0 -18
- package/dist/deps/logger/index.d.ts +0 -1
- package/dist/deps/logger/index.js +0 -18
- package/dist/deps/logger/logger.d.ts +0 -26
- package/dist/deps/logger/logger.js +0 -152
- package/dist/deps/misc/arrays.d.ts +0 -7
- package/dist/deps/misc/arrays.js +0 -67
- package/dist/deps/misc/camelize-record.d.ts +0 -6
- package/dist/deps/misc/camelize-record.js +0 -16
- package/dist/deps/misc/clean-directory.d.ts +0 -4
- package/dist/deps/misc/clean-directory.js +0 -80
- package/dist/deps/misc/constructs.d.ts +0 -106
- package/dist/deps/misc/constructs.js +0 -131
- package/dist/deps/misc/directory-scanner.d.ts +0 -49
- package/dist/deps/misc/directory-scanner.js +0 -165
- package/dist/deps/misc/executor.d.ts +0 -39
- package/dist/deps/misc/executor.js +0 -59
- package/dist/deps/misc/file-system-storage-client.d.ts +0 -23
- package/dist/deps/misc/file-system-storage-client.js +0 -93
- package/dist/deps/misc/folderify.d.ts +0 -8
- package/dist/deps/misc/folderify.js +0 -86
- package/dist/deps/misc/graph.d.ts +0 -29
- package/dist/deps/misc/graph.js +0 -200
- package/dist/deps/misc/in-memory-storage-client.d.ts +0 -21
- package/dist/deps/misc/in-memory-storage-client.js +0 -75
- package/dist/deps/misc/index.d.ts +0 -20
- package/dist/deps/misc/index.js +0 -37
- package/dist/deps/misc/int.d.ts +0 -10
- package/dist/deps/misc/int.js +0 -29
- package/dist/deps/misc/internal/graph-executor.d.ts +0 -15
- package/dist/deps/misc/internal/graph-executor.js +0 -93
- package/dist/deps/misc/maps.d.ts +0 -29
- package/dist/deps/misc/maps.js +0 -47
- package/dist/deps/misc/misc.d.ts +0 -23
- package/dist/deps/misc/misc.js +0 -94
- package/dist/deps/misc/object-map.d.ts +0 -10
- package/dist/deps/misc/object-map.js +0 -26
- package/dist/deps/misc/promises.d.ts +0 -39
- package/dist/deps/misc/promises.js +0 -78
- package/dist/deps/misc/records.d.ts +0 -11
- package/dist/deps/misc/records.js +0 -40
- package/dist/deps/misc/slurp-dir.d.ts +0 -1
- package/dist/deps/misc/slurp-dir.js +0 -14
- package/dist/deps/misc/storage-client.d.ts +0 -12
- package/dist/deps/misc/storage-client.js +0 -3
- package/dist/deps/misc/stream-to-buffer.d.ts +0 -2
- package/dist/deps/misc/stream-to-buffer.js +0 -26
- package/dist/deps/misc/strings.d.ts +0 -12
- package/dist/deps/misc/strings.js +0 -68
- package/dist/deps/misc/typed-publisher.d.ts +0 -17
- package/dist/deps/misc/typed-publisher.js +0 -65
- package/dist/deps/repo-protocol/index.d.ts +0 -3
- package/dist/deps/repo-protocol/index.js +0 -20
- package/dist/deps/repo-protocol/repo-protocol.d.ts +0 -49
- package/dist/deps/repo-protocol/repo-protocol.js +0 -3
- package/dist/deps/repo-protocol/task-info.d.ts +0 -18
- package/dist/deps/repo-protocol/task-info.js +0 -3
- package/dist/deps/repo-protocol/test-run-summary.d.ts +0 -54
- package/dist/deps/repo-protocol/test-run-summary.js +0 -32
- package/dist/deps/repo-protocol-toolbox/generate-task-infos.d.ts +0 -5
- package/dist/deps/repo-protocol-toolbox/generate-task-infos.js +0 -26
- package/dist/deps/repo-protocol-toolbox/index.d.ts +0 -3
- package/dist/deps/repo-protocol-toolbox/index.js +0 -20
- package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.d.ts +0 -10
- package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.js +0 -90
- package/dist/deps/repo-protocol-toolbox/task-definition.d.ts +0 -14
- package/dist/deps/repo-protocol-toolbox/task-definition.js +0 -3
- package/dist/deps/reporter-output/index.d.ts +0 -1
- package/dist/deps/reporter-output/index.js +0 -18
- package/dist/deps/reporter-output/reporter-output.d.ts +0 -49
- package/dist/deps/reporter-output/reporter-output.js +0 -25
- package/dist/deps/s3-storage-client/creds.d.ts +0 -4
- package/dist/deps/s3-storage-client/creds.js +0 -3
- package/dist/deps/s3-storage-client/get-s3-storage-client-factory.d.ts +0 -3
- package/dist/deps/s3-storage-client/get-s3-storage-client-factory.js +0 -45
- package/dist/deps/s3-storage-client/index.d.ts +0 -2
- package/dist/deps/s3-storage-client/index.js +0 -19
- package/dist/deps/s3-storage-client/main.d.ts +0 -1
- package/dist/deps/s3-storage-client/main.js +0 -20
- package/dist/deps/s3-storage-client/s3-storage-client.d.ts +0 -25
- package/dist/deps/s3-storage-client/s3-storage-client.js +0 -134
- package/dist/deps/task-name/index.d.ts +0 -1
- package/dist/deps/task-name/index.js +0 -18
- package/dist/deps/task-name/task-name.d.ts +0 -17
- package/dist/deps/task-name/task-name.js +0 -44
- package/dist/deps/unit-metadata/index.d.ts +0 -1
- package/dist/deps/unit-metadata/index.js +0 -18
- package/dist/deps/unit-metadata/unit-metadata.d.ts +0 -14
- package/dist/deps/unit-metadata/unit-metadata.js +0 -32
- package/dist/deps/yarn-repo-protocol/build-task-record.d.ts +0 -61
- package/dist/deps/yarn-repo-protocol/build-task-record.js +0 -29
- package/dist/deps/yarn-repo-protocol/generate-test-run-summary.d.ts +0 -4
- package/dist/deps/yarn-repo-protocol/generate-test-run-summary.js +0 -26
- package/dist/deps/yarn-repo-protocol/index.d.ts +0 -2
- package/dist/deps/yarn-repo-protocol/index.js +0 -19
- package/dist/deps/yarn-repo-protocol/rerun-list.d.ts +0 -12
- package/dist/deps/yarn-repo-protocol/rerun-list.js +0 -6
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.d.ts +0 -24
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.js +0 -34
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.d.ts +0 -82
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.js +0 -1036
- package/dist/src/build-raptor-cli.d.ts +0 -60
- package/dist/src/build-raptor-cli.js +0 -514
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +0 -20
- package/dist/src/main.d.ts +0 -2
- package/dist/src/main.js +0 -23
- package/dist/src/register-asset-request.d.ts +0 -18
- package/dist/src/register-asset-request.js +0 -11
- package/dist/src/task-execution-visualizer.d.ts +0 -17
- package/dist/src/task-execution-visualizer.js +0 -116
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.examplifyZod = examplifyZod;
|
|
4
|
-
const misc_1 = require("misc");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
function getZodTypeName(schema) {
|
|
7
|
-
if (schema instanceof zod_1.ZodString) {
|
|
8
|
-
return 'string';
|
|
9
|
-
}
|
|
10
|
-
if (schema instanceof zod_1.ZodNumber) {
|
|
11
|
-
return 'number';
|
|
12
|
-
}
|
|
13
|
-
if (schema instanceof zod_1.ZodBoolean) {
|
|
14
|
-
return 'boolean';
|
|
15
|
-
}
|
|
16
|
-
if (schema instanceof zod_1.ZodObject) {
|
|
17
|
-
return 'object';
|
|
18
|
-
}
|
|
19
|
-
if (schema instanceof zod_1.ZodArray) {
|
|
20
|
-
return 'array';
|
|
21
|
-
}
|
|
22
|
-
if (schema instanceof zod_1.ZodUnion) {
|
|
23
|
-
return 'union';
|
|
24
|
-
}
|
|
25
|
-
return 'unknown';
|
|
26
|
-
}
|
|
27
|
-
function unwrap(schema) {
|
|
28
|
-
if (schema instanceof zod_1.ZodOptional || schema instanceof zod_1.ZodNullable) {
|
|
29
|
-
return unwrap(schema.unwrap());
|
|
30
|
-
}
|
|
31
|
-
if (schema instanceof zod_1.ZodDefault) {
|
|
32
|
-
return unwrap(schema.removeDefault());
|
|
33
|
-
}
|
|
34
|
-
return schema;
|
|
35
|
-
}
|
|
36
|
-
function getDescription(schema) {
|
|
37
|
-
if (schema.description) {
|
|
38
|
-
return schema.description;
|
|
39
|
-
}
|
|
40
|
-
if (schema instanceof zod_1.ZodOptional || schema instanceof zod_1.ZodNullable) {
|
|
41
|
-
return getDescription(schema.unwrap());
|
|
42
|
-
}
|
|
43
|
-
if (schema instanceof zod_1.ZodDefault) {
|
|
44
|
-
return getDescription(schema.removeDefault());
|
|
45
|
-
}
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
function reflect(schema) {
|
|
49
|
-
const unwrapped = unwrap(schema);
|
|
50
|
-
const typeName = getZodTypeName(unwrapped);
|
|
51
|
-
const description = getDescription(schema);
|
|
52
|
-
if (typeName === 'array') {
|
|
53
|
-
return { tag: 'array', description, defaultValue: [] };
|
|
54
|
-
}
|
|
55
|
-
if (typeName === 'boolean' || typeName === 'string' || typeName === 'number' || typeName === 'unknown') {
|
|
56
|
-
const d = schema instanceof zod_1.ZodDefault
|
|
57
|
-
? schema.parse(undefined)
|
|
58
|
-
: { boolean: false, string: '', number: 0, unknown: null }[typeName];
|
|
59
|
-
return { tag: typeName, description, defaultValue: d };
|
|
60
|
-
}
|
|
61
|
-
if (typeName === 'union') {
|
|
62
|
-
if (!(unwrapped instanceof zod_1.z.ZodUnion)) {
|
|
63
|
-
throw new Error(`type name mismatch - expected: ${typeName}, got: ${unwrapped.constructor.name}`);
|
|
64
|
-
}
|
|
65
|
-
const options = unwrapped.options;
|
|
66
|
-
if (!Array.isArray(options)) {
|
|
67
|
-
throw new Error(`type name mismatch - expected: an array, got: ${options.constructor.name}`);
|
|
68
|
-
}
|
|
69
|
-
const casted = options; // eslint-disable-line @typescript-eslint/consistent-type-assertions
|
|
70
|
-
const mapped = casted.map(at => reflect(at));
|
|
71
|
-
const d = schema instanceof zod_1.ZodDefault ? schema.parse(undefined) : mapped[0].defaultValue;
|
|
72
|
-
return { tag: 'union', description, defaultValue: d };
|
|
73
|
-
}
|
|
74
|
-
if (typeName === 'object') {
|
|
75
|
-
if (!(unwrapped instanceof zod_1.z.ZodObject)) {
|
|
76
|
-
throw new Error(`type name mismatch - expected: ${typeName}, got: ${unwrapped.constructor.name}`);
|
|
77
|
-
}
|
|
78
|
-
const obj = Object.fromEntries(Object.entries(unwrapped.shape).map(kv => {
|
|
79
|
-
const k = kv[0];
|
|
80
|
-
const v = kv[1];
|
|
81
|
-
return [k, reflect(v)]; // eslint-disable-line @typescript-eslint/consistent-type-assertions
|
|
82
|
-
}));
|
|
83
|
-
return { tag: 'object', of: obj, description, defaultValue: {} };
|
|
84
|
-
}
|
|
85
|
-
(0, misc_1.shouldNeverHappen)(typeName);
|
|
86
|
-
}
|
|
87
|
-
class Writer {
|
|
88
|
-
constructor(nesting) {
|
|
89
|
-
this.nesting = nesting;
|
|
90
|
-
this.blocks = [];
|
|
91
|
-
}
|
|
92
|
-
nest() {
|
|
93
|
-
const ret = new Writer(this.nesting + 1);
|
|
94
|
-
this.blocks.push({ tag: 'writer', writer: ret });
|
|
95
|
-
return ret;
|
|
96
|
-
}
|
|
97
|
-
writeln(...parts) {
|
|
98
|
-
this.blocks.push({ tag: 'line', nesting: this.nesting, parts, isDesc: false });
|
|
99
|
-
}
|
|
100
|
-
writeDescLine(...parts) {
|
|
101
|
-
this.blocks.push({ tag: 'line', nesting: this.nesting, parts, isDesc: true });
|
|
102
|
-
}
|
|
103
|
-
collectOutput(acc, options) {
|
|
104
|
-
for (const block of this.blocks) {
|
|
105
|
-
if (block.tag === 'writer') {
|
|
106
|
-
block.writer.collectOutput(acc, options);
|
|
107
|
-
}
|
|
108
|
-
else if (block.tag === 'line') {
|
|
109
|
-
// Skip blocks with no parts ([]). A blank (comment) line can still be produced if block.parts is ['']
|
|
110
|
-
if (block.parts.length) {
|
|
111
|
-
let content = block.parts.join('');
|
|
112
|
-
if (!content.trim()) {
|
|
113
|
-
acc.push('');
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
const addComment = block.isDesc || (options.comment && (block.nesting > 0 || options.commentAlsoOutermostBraces));
|
|
117
|
-
const col = !addComment ? 0 : block.nesting > 0 ? options.commentIndentation : 0;
|
|
118
|
-
const preContent = (addComment ? ' '.repeat(col) + '// ' : '') + ' '.repeat(Math.max(0, 2 * block.nesting - col));
|
|
119
|
-
if (!block.isDesc) {
|
|
120
|
-
acc.push(preContent + content);
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
const lineMax = 120;
|
|
124
|
-
const allowedLen = lineMax - preContent.length;
|
|
125
|
-
while (true) {
|
|
126
|
-
if (content.length < allowedLen) {
|
|
127
|
-
acc.push(preContent + content);
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
const lastSpace = content.slice(0, lineMax).lastIndexOf(' ');
|
|
131
|
-
if (lastSpace < 0) {
|
|
132
|
-
acc.push(preContent + content);
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
acc.push(preContent + content.slice(0, lastSpace));
|
|
136
|
-
content = content.slice(lastSpace).trimStart();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
(0, misc_1.shouldNeverHappen)(block);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function format(r, w, path) {
|
|
147
|
-
const trimmed = r.description?.trim();
|
|
148
|
-
if (trimmed) {
|
|
149
|
-
for (const line of trimmed.split('\n')) {
|
|
150
|
-
w.writeDescLine(line);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
const pref = path.length ? `${JSON.stringify(path.at(-1) ?? '')}: ` : ``;
|
|
154
|
-
if (r.tag === 'array' ||
|
|
155
|
-
r.tag === 'boolean' ||
|
|
156
|
-
r.tag === 'number' ||
|
|
157
|
-
r.tag === 'string' ||
|
|
158
|
-
r.tag === 'union' ||
|
|
159
|
-
r.tag === 'unknown') {
|
|
160
|
-
w.writeln(pref, JSON.stringify(r.defaultValue), path.length ? ',' : '');
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
if (r.tag === 'object') {
|
|
164
|
-
w.writeln(pref, '{');
|
|
165
|
-
const nestedWriter = w.nest();
|
|
166
|
-
let isFirst = true;
|
|
167
|
-
for (const [k, v] of Object.entries(r.of)) {
|
|
168
|
-
if (!v) {
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
if (!isFirst) {
|
|
172
|
-
nestedWriter.writeln('');
|
|
173
|
-
}
|
|
174
|
-
isFirst = false;
|
|
175
|
-
format(v, nestedWriter, [...path, k]);
|
|
176
|
-
}
|
|
177
|
-
w.writeln('}', path.length ? ',' : '');
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
(0, misc_1.shouldNeverHappen)(r.tag);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Generates a formatted example from a Zod schema with default values and descriptions.
|
|
184
|
-
*
|
|
185
|
-
* Converts any supported Zod schema into a human-readable example showing the data
|
|
186
|
-
* structure with defaults. Useful for generating annotated configuration files that
|
|
187
|
-
* serve as both documentation and a working starting point.
|
|
188
|
-
*
|
|
189
|
-
* **Note**: Output is formatted for readability and is not valid JSON (contains
|
|
190
|
-
* inline comments and trailing commas).
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* ```ts
|
|
194
|
-
* const schema = z.object({
|
|
195
|
-
* port: z.number().default(3000).describe('Server port'),
|
|
196
|
-
* host: z.string().optional()
|
|
197
|
-
* })
|
|
198
|
-
*
|
|
199
|
-
* console.log(examplifyZod(schema))
|
|
200
|
-
* // Output:
|
|
201
|
-
* {
|
|
202
|
-
* // Server port
|
|
203
|
-
* // port: 3000,
|
|
204
|
-
*
|
|
205
|
-
* // host: "",
|
|
206
|
-
* }
|
|
207
|
-
*
|
|
208
|
-
* console.log(examplifyZod(schema, { comment: false }))
|
|
209
|
-
* // Output:
|
|
210
|
-
* {
|
|
211
|
-
* // Server port
|
|
212
|
-
* port: 3000,
|
|
213
|
-
*
|
|
214
|
-
* // host: "",
|
|
215
|
-
* }
|
|
216
|
-
* ```
|
|
217
|
-
*
|
|
218
|
-
* @param input - Any Zod schema (object, primitive, array, union, etc.)
|
|
219
|
-
* @param options - Formatting options (see {@link ExamplifyZodOptions})
|
|
220
|
-
* @returns A formatted string example matching the schema structure with defaults populated
|
|
221
|
-
*
|
|
222
|
-
* @remarks
|
|
223
|
-
* ### Default Values
|
|
224
|
-
* - **Primitives**: Use type defaults: `0`, `""`, `false`
|
|
225
|
-
* - **Arrays**: Always shown as an empty array `[]`
|
|
226
|
-
* - **Objects**: Empty object `{}`
|
|
227
|
-
* - **With `.default()`**: Uses the specified default value
|
|
228
|
-
*
|
|
229
|
-
* ### Nullable/Optional Handling
|
|
230
|
-
* These modifiers are unwrapped to show the underlying type's default.
|
|
231
|
-
*
|
|
232
|
-
* ⚠️ **Order matters with `.default()`**:
|
|
233
|
-
* - `.nullable().default(5)` → uses `5`
|
|
234
|
-
* - `.default(5).nullable()` → uses type default `0` (`.nullable()` wraps after default is set)
|
|
235
|
-
*
|
|
236
|
-
* The same applies to `.optional()`.
|
|
237
|
-
*
|
|
238
|
-
* ### Unions
|
|
239
|
-
* Uses the first option's default value unless an explicit `.default()` is provided.
|
|
240
|
-
*
|
|
241
|
-
* ### Descriptions
|
|
242
|
-
* Property descriptions always appear as comments above their properties, regardless
|
|
243
|
-
* of the `comment` option. Multi-line descriptions are supported.
|
|
244
|
-
*
|
|
245
|
-
* ### Unsupported Types
|
|
246
|
-
* Unrecognized Zod types (enums, literals, records, tuples, intersections, etc.)
|
|
247
|
-
* are rendered as the string `'unknown'` with a default value of `null`.
|
|
248
|
-
*/
|
|
249
|
-
function examplifyZod(input, options = {}) {
|
|
250
|
-
const r = reflect(input);
|
|
251
|
-
const w = new Writer(0);
|
|
252
|
-
format(r, w, []);
|
|
253
|
-
const acc = [];
|
|
254
|
-
w.collectOutput(acc, { comment: true, commentAlsoOutermostBraces: false, commentIndentation: 2, ...options });
|
|
255
|
-
return acc.join('\n');
|
|
256
|
-
}
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsaWZ5LXpvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxpZnktem9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbVRBLG9DQU9DO0FBMVRELCtCQUF3QztBQUN4Qyw2QkFZWTtBQUlaLFNBQVMsY0FBYyxDQUFDLE1BQWtCO0lBQ3hDLElBQUksTUFBTSxZQUFZLGVBQVMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxlQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsSUFBSSxNQUFNLFlBQVksZ0JBQVUsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxlQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsSUFBSSxNQUFNLFlBQVksY0FBUSxFQUFFLENBQUM7UUFDL0IsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUNELElBQUksTUFBTSxZQUFZLGNBQVEsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsTUFBa0I7SUFDaEMsSUFBSSxNQUFNLFlBQVksaUJBQVcsSUFBSSxNQUFNLFlBQVksaUJBQVcsRUFBRSxDQUFDO1FBQ25FLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxnQkFBVSxFQUFFLENBQUM7UUFDakMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELFNB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
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { PathInRepo } from 'core-types';
|
|
2
|
-
import { Logger } from 'logger';
|
|
3
|
-
import { Graph } from 'misc';
|
|
4
|
-
import { TaskName } from 'task-name';
|
|
5
|
-
import { Task } from './task';
|
|
6
|
-
import { TaskOutputRegistry } from './updatable-task-output-registry';
|
|
7
|
-
export declare class ExecutionPlan {
|
|
8
|
-
readonly taskGraph: Graph<TaskName>;
|
|
9
|
-
private readonly logger;
|
|
10
|
-
private readonly registry;
|
|
11
|
-
private readonly taskByName;
|
|
12
|
-
readonly errorPropagationGraph: Graph<TaskName>;
|
|
13
|
-
constructor(taskGraph: Graph<TaskName>, tasks: Task[], logger: Logger, registry: TaskOutputRegistry);
|
|
14
|
-
getTask(taskName: TaskName): Task;
|
|
15
|
-
tasks(): Task[];
|
|
16
|
-
apply(units: string[], goals: PathInRepo[], labels: string[]): TaskName[];
|
|
17
|
-
private dropOutOfScope;
|
|
18
|
-
private computeStartingPoints;
|
|
19
|
-
toString(): string;
|
|
20
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExecutionPlan = void 0;
|
|
4
|
-
const build_failed_error_1 = require("build-failed-error");
|
|
5
|
-
const misc_1 = require("misc");
|
|
6
|
-
// TODO(imaman): rethink the name. It is not exactly a "Plan".
|
|
7
|
-
class ExecutionPlan {
|
|
8
|
-
constructor(taskGraph, tasks, logger, registry) {
|
|
9
|
-
this.taskGraph = taskGraph;
|
|
10
|
-
this.logger = logger;
|
|
11
|
-
this.registry = registry;
|
|
12
|
-
this.taskByName = new Map();
|
|
13
|
-
for (const t of tasks) {
|
|
14
|
-
this.taskByName.set(t.name, t);
|
|
15
|
-
}
|
|
16
|
-
this.errorPropagationGraph = taskGraph.copy();
|
|
17
|
-
}
|
|
18
|
-
getTask(taskName) {
|
|
19
|
-
return (0, misc_1.hardGet)(this.taskByName, taskName);
|
|
20
|
-
}
|
|
21
|
-
tasks() {
|
|
22
|
-
const taskNames = this.taskGraph.vertices();
|
|
23
|
-
return taskNames.map(tn => this.getTask(tn));
|
|
24
|
-
}
|
|
25
|
-
apply(units, goals, labels) {
|
|
26
|
-
this.logger.info(`apply(${JSON.stringify(units)}, ${JSON.stringify(goals)}, ${JSON.stringify(labels)}) called`);
|
|
27
|
-
const startingPoints = this.computeStartingPoints(units, goals, labels);
|
|
28
|
-
this.dropOutOfScope(startingPoints);
|
|
29
|
-
this.logger.info(`computed these startingPoints: ${JSON.stringify(startingPoints)}`);
|
|
30
|
-
return startingPoints;
|
|
31
|
-
}
|
|
32
|
-
dropOutOfScope(startingPoints) {
|
|
33
|
-
const inscope = new Set(this.taskGraph.traverseFrom(startingPoints, { direction: 'forward' }));
|
|
34
|
-
this.logger.info(`scope of ${startingPoints.join('; ')} is ${[...inscope].join('; ')}`);
|
|
35
|
-
for (const v of this.taskGraph.vertices()) {
|
|
36
|
-
if (!inscope.has(v)) {
|
|
37
|
-
this.taskGraph.remove(v);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
this.logger.info(`Task graph (only in-scope):\n${this.taskGraph}`);
|
|
41
|
-
}
|
|
42
|
-
computeStartingPoints(units, goals, labels) {
|
|
43
|
-
const setOfUnitId = new Set(units);
|
|
44
|
-
this.logger.info(`setOfUnitId=${[...setOfUnitId].join('; ')}`);
|
|
45
|
-
const matchesUnit = setOfUnitId.size === 0 && goals.length === 0 ? () => true : (t) => setOfUnitId.has(t.unitId);
|
|
46
|
-
const matchesLabel = labels.length === 0 ? () => true : (t) => labels.some(label => t.labels.includes(label));
|
|
47
|
-
const ret = goals.flatMap(ol => {
|
|
48
|
-
const tns = this.registry.wideLookup(ol);
|
|
49
|
-
if (tns.length === 0) {
|
|
50
|
-
throw new build_failed_error_1.BuildFailedError(`no task found for goal "${ol}"`);
|
|
51
|
-
}
|
|
52
|
-
return tns.filter(t => matchesLabel(this.getTask(t)));
|
|
53
|
-
});
|
|
54
|
-
ret.push(...this.tasks()
|
|
55
|
-
.filter(t => matchesUnit(t) && matchesLabel(t))
|
|
56
|
-
.map(t => t.name));
|
|
57
|
-
ret.sort();
|
|
58
|
-
this.logger.info(`Found ${ret.length} starting points`);
|
|
59
|
-
return ret;
|
|
60
|
-
}
|
|
61
|
-
toString() {
|
|
62
|
-
return `(ExecutionPlan ${this.taskGraph.toString()})`;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.ExecutionPlan = ExecutionPlan;
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXBsYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0aW9uLXBsYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQXFEO0FBR3JELCtCQUFxQztBQU1yQyw4REFBOEQ7QUFDOUQsTUFBYSxhQUFhO0lBR3hCLFlBQ1csU0FBMEIsRUFDbkMsS0FBYSxFQUNJLE1BQWMsRUFDZCxRQUE0QjtRQUhwQyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUVsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFOOUIsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO1FBUXJELEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNoQyxDQUFDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWtCO1FBQ3hCLE9BQU8sSUFBQSxjQUFPLEVBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDM0MsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBZSxFQUFFLEtBQW1CLEVBQUUsTUFBZ0I7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FB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
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export type Verdict = 'UNKNOWN' | 'CRASH' | 'FAIL' | 'OK';
|
|
2
|
-
import { TaskName } from 'task-name';
|
|
3
|
-
import { ExecutionType } from './execution-type';
|
|
4
|
-
import { Phase } from './phase';
|
|
5
|
-
import { SlotIndex } from './slot-index';
|
|
6
|
-
export interface ExecutionRecord {
|
|
7
|
-
readonly verdict: Verdict;
|
|
8
|
-
readonly outputFile?: string;
|
|
9
|
-
readonly executionType: ExecutionType;
|
|
10
|
-
readonly startedAt: SlotIndex;
|
|
11
|
-
readonly endedAt: SlotIndex;
|
|
12
|
-
readonly rootCause?: TaskName;
|
|
13
|
-
readonly phases: {
|
|
14
|
-
phase: Phase;
|
|
15
|
-
timestampMillis: number;
|
|
16
|
-
}[];
|
|
17
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXJlY29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGVjdXRpb24tcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0aW9uLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function findRepoDir(dir: string): string | undefined;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.findRepoDir = findRepoDir;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
function findRepoDir(dir) {
|
|
10
|
-
while (true) {
|
|
11
|
-
const pj = path_1.default.join(dir, 'package.json');
|
|
12
|
-
const ex = fs_1.default.existsSync(pj);
|
|
13
|
-
if (ex) {
|
|
14
|
-
const content = JSON.parse(fs_1.default.readFileSync(pj, 'utf-8'));
|
|
15
|
-
const keys = Object.keys(content);
|
|
16
|
-
if (keys.includes('workspaces')) {
|
|
17
|
-
return dir;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
const next = path_1.default.dirname(dir);
|
|
21
|
-
if (next === dir) {
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
dir = next;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1yZXBvLWRpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maW5kLXJlcG8tZGlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esa0NBa0JDO0FBckJELDRDQUFtQjtBQUNuQixnREFBdUI7QUFFdkIsU0FBZ0IsV0FBVyxDQUFDLEdBQVc7SUFDckMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLE1BQU0sRUFBRSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFBO1FBQ3pDLE1BQU0sRUFBRSxHQUFHLFlBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDNUIsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUN4RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLEdBQUcsQ0FBQTtZQUNaLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNqQixPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsR0FBRyxHQUFHLElBQUksQ0FBQTtJQUNaLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { BuildRunId } from 'build-run-id';
|
|
2
|
-
import { Logger } from 'logger';
|
|
3
|
-
import { TaskName } from 'task-name';
|
|
4
|
-
import { Fingerprint } from './fingerprint';
|
|
5
|
-
import { Hasher } from './hasher';
|
|
6
|
-
export interface FingerprintLedger {
|
|
7
|
-
updateRun(buildRunId: BuildRunId): Promise<void>;
|
|
8
|
-
updateFile(h: Hasher, content: string): void;
|
|
9
|
-
updateDirectory(h: Hasher): void;
|
|
10
|
-
updateTask(task: TaskName, fingerprint: Fingerprint, parts: Record<string, Fingerprint>): void;
|
|
11
|
-
close(): Promise<void>;
|
|
12
|
-
}
|
|
13
|
-
export declare class NopFingerprintLedger implements FingerprintLedger {
|
|
14
|
-
updateRun(): Promise<void>;
|
|
15
|
-
updateFile(): void;
|
|
16
|
-
updateDirectory(): void;
|
|
17
|
-
updateTask(): void;
|
|
18
|
-
close(): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
export declare class PersistedFingerprintLedger implements FingerprintLedger {
|
|
21
|
-
private readonly logger;
|
|
22
|
-
private readonly ledgerFile;
|
|
23
|
-
private items;
|
|
24
|
-
private buildRunId?;
|
|
25
|
-
constructor(logger: Logger, ledgerFile: string);
|
|
26
|
-
updateRun(buildRunId: BuildRunId): Promise<void>;
|
|
27
|
-
updateFile(h: Hasher, content: string): void;
|
|
28
|
-
updateDirectory(h: Hasher): void;
|
|
29
|
-
updateTask(task: TaskName, fingerprint: Fingerprint, parts: Record<string, Fingerprint>): void;
|
|
30
|
-
close(): Promise<void>;
|
|
31
|
-
private read;
|
|
32
|
-
private write;
|
|
33
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.PersistedFingerprintLedger = exports.NopFingerprintLedger = void 0;
|
|
37
|
-
const fse = __importStar(require("fs-extra"));
|
|
38
|
-
const misc_1 = require("misc");
|
|
39
|
-
const zod_1 = require("zod");
|
|
40
|
-
const LedgerItem = zod_1.z.union([
|
|
41
|
-
zod_1.z.object({
|
|
42
|
-
tag: zod_1.z.literal('file'),
|
|
43
|
-
buildRunId: zod_1.z.string(),
|
|
44
|
-
location: zod_1.z.string(),
|
|
45
|
-
fingerprint: zod_1.z.string(),
|
|
46
|
-
content: zod_1.z.string(),
|
|
47
|
-
}),
|
|
48
|
-
zod_1.z.object({
|
|
49
|
-
tag: zod_1.z.literal('dir'),
|
|
50
|
-
buildRunId: zod_1.z.string(),
|
|
51
|
-
location: zod_1.z.string(),
|
|
52
|
-
fingerprint: zod_1.z.string(),
|
|
53
|
-
parts: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
|
|
54
|
-
}),
|
|
55
|
-
zod_1.z.object({
|
|
56
|
-
tag: zod_1.z.literal('task'),
|
|
57
|
-
buildRunId: zod_1.z.string(),
|
|
58
|
-
task: zod_1.z.string(),
|
|
59
|
-
fingerprint: zod_1.z.string(),
|
|
60
|
-
parts: zod_1.z.record(zod_1.z.string(), zod_1.z.string()),
|
|
61
|
-
}),
|
|
62
|
-
zod_1.z.object({ tag: zod_1.z.literal('run'), buildRunId: zod_1.z.string() }),
|
|
63
|
-
]);
|
|
64
|
-
const Items = LedgerItem.array();
|
|
65
|
-
class NopFingerprintLedger {
|
|
66
|
-
async updateRun() { }
|
|
67
|
-
updateFile() { }
|
|
68
|
-
updateDirectory() { }
|
|
69
|
-
updateTask() { }
|
|
70
|
-
async close() { }
|
|
71
|
-
}
|
|
72
|
-
exports.NopFingerprintLedger = NopFingerprintLedger;
|
|
73
|
-
class PersistedFingerprintLedger {
|
|
74
|
-
constructor(logger, ledgerFile) {
|
|
75
|
-
this.logger = logger;
|
|
76
|
-
this.ledgerFile = ledgerFile;
|
|
77
|
-
this.items = [];
|
|
78
|
-
this.logger.info(`fingerprint ledger initialized with file=${this.ledgerFile}`);
|
|
79
|
-
}
|
|
80
|
-
async updateRun(buildRunId) {
|
|
81
|
-
// Validate the stored content by reading it.
|
|
82
|
-
await this.read();
|
|
83
|
-
this.items.push({ tag: 'run', buildRunId });
|
|
84
|
-
this.buildRunId = buildRunId;
|
|
85
|
-
}
|
|
86
|
-
updateFile(h, content) {
|
|
87
|
-
const json = h.toJSON();
|
|
88
|
-
this.items.push({
|
|
89
|
-
tag: 'file',
|
|
90
|
-
buildRunId: this.buildRunId ?? (0, misc_1.failMe)('build run ID is missing'),
|
|
91
|
-
location: json.hasherName,
|
|
92
|
-
fingerprint: json.digest ?? (0, misc_1.failMe)(`got an undefined digest in ${JSON.stringify(json)}`),
|
|
93
|
-
content,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
updateDirectory(h) {
|
|
97
|
-
const json = h.toJSON();
|
|
98
|
-
this.items.push({
|
|
99
|
-
tag: 'dir',
|
|
100
|
-
buildRunId: this.buildRunId ?? (0, misc_1.failMe)('build run ID is missing'),
|
|
101
|
-
location: json.hasherName,
|
|
102
|
-
fingerprint: json.digest ?? (0, misc_1.failMe)(`got an undefined digest in ${JSON.stringify(json)}`),
|
|
103
|
-
parts: json.audit,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
updateTask(task, fingerprint, parts) {
|
|
107
|
-
this.items.push({
|
|
108
|
-
tag: 'task',
|
|
109
|
-
buildRunId: this.buildRunId ?? (0, misc_1.failMe)('build run ID is missing'),
|
|
110
|
-
task,
|
|
111
|
-
fingerprint,
|
|
112
|
-
parts,
|
|
113
|
-
});
|
|
114
|
-
this.logger.info(`Fingerprint of task ${task} with inputs: ${JSON.stringify(parts)} is ${fingerprint}`);
|
|
115
|
-
}
|
|
116
|
-
async close() {
|
|
117
|
-
const t0 = Date.now();
|
|
118
|
-
try {
|
|
119
|
-
const itemsToWrite = await this.read();
|
|
120
|
-
itemsToWrite.push(...this.items);
|
|
121
|
-
await this.write(itemsToWrite);
|
|
122
|
-
}
|
|
123
|
-
finally {
|
|
124
|
-
this.logger.info(`.close() took ${((Date.now() - t0) / 1000).toFixed(1)}s`);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// TODO(imaman): cover
|
|
128
|
-
async read() {
|
|
129
|
-
const t0 = Date.now();
|
|
130
|
-
try {
|
|
131
|
-
if (!(await fse.pathExists(this.ledgerFile))) {
|
|
132
|
-
return [];
|
|
133
|
-
}
|
|
134
|
-
const untyped = await fse.readJSON(this.ledgerFile);
|
|
135
|
-
const ret = Items.parse(untyped);
|
|
136
|
-
const len = JSON.stringify(ret).length;
|
|
137
|
-
this.logger.info(`Length of content read from ${this.ledgerFile} is ${len}`);
|
|
138
|
-
if (len > TRUNCATION_THRESHOLD) {
|
|
139
|
-
this.logger.info(`Discarding the preexsiting content of ${this.ledgerFile} because its length (${len}) exceeded the preset limit of ${TRUNCATION_THRESHOLD}`);
|
|
140
|
-
ret.length = 0;
|
|
141
|
-
}
|
|
142
|
-
return ret;
|
|
143
|
-
}
|
|
144
|
-
finally {
|
|
145
|
-
this.logger.info(`.read() on ${this.ledgerFile} took ${((Date.now() - t0) / 1000).toFixed(1)}s`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async write(items) {
|
|
149
|
-
try {
|
|
150
|
-
await fse.writeJSON(this.ledgerFile, items);
|
|
151
|
-
}
|
|
152
|
-
catch (e) {
|
|
153
|
-
this.logger.error(`writeFile failed`, e);
|
|
154
|
-
throw new Error(`Could not save ${items.length} items to ${this.ledgerFile} due to: ${e}`);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
exports.PersistedFingerprintLedger = PersistedFingerprintLedger;
|
|
159
|
-
/**
|
|
160
|
-
* If the length of the ledger that was read from the file exceeds this value, the ledger will be purged to avoid
|
|
161
|
-
* errors on the subsequent save.
|
|
162
|
-
*/
|
|
163
|
-
const TRUNCATION_THRESHOLD = 200 * 1000 * 1000;
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZ2VycHJpbnQtbGVkZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbmdlcnByaW50LWxlZGdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw4Q0FBK0I7QUFFL0IsK0JBQTZCO0FBRTdCLDZCQUF1QjtBQUt2QixNQUFNLFVBQVUsR0FBRyxPQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pCLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxHQUFHLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDdEIsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDcEIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdkIsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7S0FDcEIsQ0FBQztJQUNGLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxHQUFHLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDckIsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDcEIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdkIsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUN4QyxDQUFDO0lBQ0YsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNQLEdBQUcsRUFBRSxPQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN0QixVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN0QixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNoQixXQUFXLEVB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
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Fingerprint = Fingerprint;
|
|
4
|
-
function validate(input) {
|
|
5
|
-
if (input.length === 0) {
|
|
6
|
-
throw new Error(`Bad Fingerprint: <${input}>`);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
function Fingerprint(input) {
|
|
10
|
-
validate(input);
|
|
11
|
-
return input;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZ2VycHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmluZ2VycHJpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxrQ0FHQztBQVRELFNBQVMsUUFBUSxDQUFDLEtBQWE7SUFDN0IsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDaEQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixXQUFXLENBQUMsS0FBYTtJQUN2QyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDZixPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUMifQ==
|