build-raptor 0.129.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 -18
- package/dist/deps/build-raptor-core/build-raptor-config.js +0 -21
- 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 -14
- package/dist/deps/build-raptor-core/fingerprinter.js +0 -121
- 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 -33
- 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,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXBsYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0aW9uLXBsYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQXFEO0FBR3JELCtCQUFxQztBQU1yQyw4REFBOEQ7QUFDOUQsTUFBYSxhQUFhO0lBR3hCLFlBQ1csU0FBMEIsRUFDbkMsS0FBYSxFQUNJLE1BQWMsRUFDZCxRQUE0QjtRQUhwQyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUVsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFOOUIsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO1FBUXJELEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNoQyxDQUFDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWtCO1FBQ3hCLE9BQU8sSUFBQSxjQUFPLEVBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDM0MsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBZSxFQUFFLEtBQW1CLEVBQUUsTUFBZ0I7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDL0csTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDcEYsT0FBTyxjQUFjLENBQUE7SUFDdkIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxjQUEwQjtRQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3hHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN2RixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMxQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBZSxFQUFFLEtBQW1CLEVBQUUsTUFBZ0I7UUFDbEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQVMsS0FBSyxDQUFDLENBQUE7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM5RCxNQUFNLFdBQVcsR0FDZixXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEcsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRW5ILE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDeEMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixNQUFNLElBQUkscUNBQWdCLENBQUMsMkJBQTJCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDOUQsQ0FBQztZQUVELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN2RCxDQUFDLENBQUMsQ0FBQTtRQUNGLEdBQUcsQ0FBQyxJQUFJLENBQ04sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFO2FBQ1osTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3BCLENBQUE7UUFDRCxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLENBQUE7UUFDdkQsT0FBTyxHQUFHLENBQUE7SUFDWixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sa0JBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQTtJQUN2RCxDQUFDO0NBQ0Y7QUF6RUQsc0NBeUVDIn0=
|
|
@@ -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==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Logger } from 'logger';
|
|
2
|
-
import { DirectoryScanner } from 'misc';
|
|
3
|
-
import { Fingerprint } from './fingerprint';
|
|
4
|
-
import { Hasher } from './hasher';
|
|
5
|
-
export type OnHasherClose = (h: Hasher, content?: string) => Promise<void>;
|
|
6
|
-
export declare class Fingerprinter {
|
|
7
|
-
private readonly dirScanner;
|
|
8
|
-
private readonly logger;
|
|
9
|
-
private readonly onHasherClose;
|
|
10
|
-
constructor(dirScanner: DirectoryScanner, logger: Logger, onHasherClose?: OnHasherClose);
|
|
11
|
-
computeFingerprint(pathInRepo: string): Promise<Fingerprint>;
|
|
12
|
-
private scan;
|
|
13
|
-
private store;
|
|
14
|
-
}
|
|
@@ -1,121 +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.Fingerprinter = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const fse = __importStar(require("fs-extra"));
|
|
39
|
-
const misc_1 = require("misc");
|
|
40
|
-
const path = __importStar(require("path"));
|
|
41
|
-
const hasher_1 = require("./hasher");
|
|
42
|
-
// TODO(imaman): use PathInRepo
|
|
43
|
-
class Fingerprinter {
|
|
44
|
-
constructor(dirScanner, logger, onHasherClose = async () => { }) {
|
|
45
|
-
this.dirScanner = dirScanner;
|
|
46
|
-
this.logger = logger;
|
|
47
|
-
this.onHasherClose = onHasherClose;
|
|
48
|
-
this.logger.info('Fingerprinter: constructed');
|
|
49
|
-
}
|
|
50
|
-
async computeFingerprint(pathInRepo) {
|
|
51
|
-
const { hasher } = await this.scan(pathInRepo);
|
|
52
|
-
return hasher.digest;
|
|
53
|
-
}
|
|
54
|
-
async scan(pathInRepo) {
|
|
55
|
-
const resolved = path.join(this.dirScanner.rootDir, pathInRepo);
|
|
56
|
-
const stat = statPath(resolved);
|
|
57
|
-
if (!stat) {
|
|
58
|
-
const hasher = new hasher_1.Hasher(pathInRepo);
|
|
59
|
-
const content = Buffer.from('');
|
|
60
|
-
hasher.update(content);
|
|
61
|
-
return await this.store(hasher, true, content.toString('utf-8'));
|
|
62
|
-
}
|
|
63
|
-
const respectGitIgnore = this.dirScanner.isValid(pathInRepo, stat);
|
|
64
|
-
const active = this.dirScanner.isValid(pathInRepo, stat);
|
|
65
|
-
if (!stat.isDirectory()) {
|
|
66
|
-
const content = await readFile(resolved);
|
|
67
|
-
const hasher = new hasher_1.Hasher(pathInRepo);
|
|
68
|
-
hasher.update(content);
|
|
69
|
-
return await this.store(hasher, active, content.toString('utf-8'));
|
|
70
|
-
}
|
|
71
|
-
const hasher = new hasher_1.Hasher(pathInRepo);
|
|
72
|
-
// TODO(imaman): do not fingerprint node_modules directories (and similar directories in other ecosystems)?
|
|
73
|
-
const dirEntries = await readDir(resolved);
|
|
74
|
-
for (const at of (0, misc_1.sortBy)(dirEntries, e => e.name)) {
|
|
75
|
-
const subPath = path.join(pathInRepo, at.name);
|
|
76
|
-
const subResult = await this.scan(subPath);
|
|
77
|
-
if (respectGitIgnore && !subResult.active) {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
hasher.update(subResult.hasher);
|
|
81
|
-
}
|
|
82
|
-
return await this.store(hasher, active);
|
|
83
|
-
}
|
|
84
|
-
async store(hasher, active, content) {
|
|
85
|
-
hasher.close();
|
|
86
|
-
try {
|
|
87
|
-
await this.onHasherClose(hasher, content);
|
|
88
|
-
}
|
|
89
|
-
catch (e) {
|
|
90
|
-
this.logger.error(`onHasherClose() failed`, e);
|
|
91
|
-
throw e;
|
|
92
|
-
}
|
|
93
|
-
return { hasher, active };
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
exports.Fingerprinter = Fingerprinter;
|
|
97
|
-
async function readFile(p) {
|
|
98
|
-
try {
|
|
99
|
-
return await fse.readFile(p);
|
|
100
|
-
}
|
|
101
|
-
catch (e) {
|
|
102
|
-
throw new Error(`Failed to read ${p}: ${e}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
function statPath(p) {
|
|
106
|
-
try {
|
|
107
|
-
return fs.statSync(p, { throwIfNoEntry: false });
|
|
108
|
-
}
|
|
109
|
-
catch (e) {
|
|
110
|
-
throw new Error(`Failed to stat ${p}: ${e}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
async function readDir(p) {
|
|
114
|
-
try {
|
|
115
|
-
return await fse.readdir(p, { withFileTypes: true });
|
|
116
|
-
}
|
|
117
|
-
catch (e) {
|
|
118
|
-
throw new Error(`Failed to read dir ${p}: ${e}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZ2VycHJpbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maW5nZXJwcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF3QjtBQUN4Qiw4Q0FBK0I7QUFFL0IsK0JBQStDO0FBQy9DLDJDQUE0QjtBQUc1QixxQ0FBaUM7QUFJakMsK0JBQStCO0FBQy9CLE1BQWEsYUFBYTtJQUN4QixZQUNtQixVQUE0QixFQUM1QixNQUFjLEVBQ2QsZ0JBQStCLEtBQUssSUFBSSxFQUFFLEdBQUUsQ0FBQztRQUY3QyxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQWdDO1FBRTlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFrQjtRQUN6QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzlDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQTtJQUN0QixDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFrQjtRQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQy9ELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUNyQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxD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
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import * as crypto from 'crypto';
|
|
2
|
-
import { Fingerprint } from './fingerprint';
|
|
3
|
-
export declare class Hasher {
|
|
4
|
-
readonly name: string;
|
|
5
|
-
private readonly hash;
|
|
6
|
-
private readonly audit;
|
|
7
|
-
private status;
|
|
8
|
-
private count;
|
|
9
|
-
private digest_;
|
|
10
|
-
constructor(name: string);
|
|
11
|
-
update(arg: crypto.BinaryLike | Hasher): void;
|
|
12
|
-
close(): void;
|
|
13
|
-
toJSON(): {
|
|
14
|
-
hasherName: string;
|
|
15
|
-
status: "OPEN" | "CLOSED";
|
|
16
|
-
digest: Fingerprint | undefined;
|
|
17
|
-
audit: Record<string, string>;
|
|
18
|
-
};
|
|
19
|
-
toString(): string;
|
|
20
|
-
get digest(): Fingerprint;
|
|
21
|
-
}
|
|
@@ -1,93 +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.Hasher = void 0;
|
|
37
|
-
const crypto = __importStar(require("crypto"));
|
|
38
|
-
const misc_1 = require("misc");
|
|
39
|
-
const fingerprint_1 = require("./fingerprint");
|
|
40
|
-
class Hasher {
|
|
41
|
-
constructor(name) {
|
|
42
|
-
this.name = name;
|
|
43
|
-
this.hash = crypto.createHash('sha224').update('8');
|
|
44
|
-
this.audit = new Map();
|
|
45
|
-
this.status = 'OPEN';
|
|
46
|
-
this.count = 0;
|
|
47
|
-
}
|
|
48
|
-
update(arg) {
|
|
49
|
-
if (this.status === 'CLOSED') {
|
|
50
|
-
throw new Error(`Cannot update a hasher that is already closed (name=${this.name})`);
|
|
51
|
-
}
|
|
52
|
-
if (arg instanceof Hasher) {
|
|
53
|
-
if (arg.count === 0) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
this.hash.update(arg.digest);
|
|
57
|
-
this.audit.set(arg.name, arg.digest);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
this.hash.update(arg);
|
|
61
|
-
}
|
|
62
|
-
++this.count;
|
|
63
|
-
}
|
|
64
|
-
close() {
|
|
65
|
-
if (this.status === 'CLOSED') {
|
|
66
|
-
throw new Error(`Hasher already closed (name=${this.name})`);
|
|
67
|
-
}
|
|
68
|
-
this.status = 'CLOSED';
|
|
69
|
-
}
|
|
70
|
-
toJSON() {
|
|
71
|
-
return {
|
|
72
|
-
hasherName: this.name,
|
|
73
|
-
status: this.status,
|
|
74
|
-
digest: this.status === 'OPEN' ? undefined : this.digest,
|
|
75
|
-
audit: (0, misc_1.pairsToRecord)(this.audit),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
toString() {
|
|
79
|
-
return JSON.stringify(this.toJSON());
|
|
80
|
-
}
|
|
81
|
-
get digest() {
|
|
82
|
-
if (this.status === 'OPEN') {
|
|
83
|
-
throw new Error(`Cannot compute digest of an open hasher (name=${this.name})`);
|
|
84
|
-
}
|
|
85
|
-
if (this.digest_) {
|
|
86
|
-
return this.digest_;
|
|
87
|
-
}
|
|
88
|
-
this.digest_ = (0, fingerprint_1.Fingerprint)(this.hash.digest('hex'));
|
|
89
|
-
return this.digest_;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.Hasher = Hasher;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hhc2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBZ0M7QUFDaEMsK0JBQW9DO0FBRXBDLCtDQUEyQztBQUUzQyxNQUFhLE1BQU07SUFTakIsWUFBcUIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFSaEIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtRQUMxQyxXQUFNLEdBQXNCLE1BQU0sQ0FBQTtRQUVsQyxVQUFLLEdBQUcsQ0FBQyxDQUFBO0lBSW1CLENBQUM7SUFFckMsTUFBTSxDQUFDLEdBQStCO1FBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUN0RixDQUFDO1FBRUQsSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNwQixPQUFNO1lBQ1IsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3ZCLENBQUM7UUFFRCxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUE7SUFDeEIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDeEQsS0FBSyxFQUFFLElBQUEsb0JBQWEsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pDLENBQUE7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFBO1FBQ2hGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDckIsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSx5QkFBVyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7Q0FDRjtBQTNERCx3QkEyREMifQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export * from './breakdown';
|
|
2
|
-
export * from './build-raptor-config';
|
|
3
|
-
export * from './default-asset-publisher';
|
|
4
|
-
export * from './engine-bootstrapper';
|
|
5
|
-
export * from './execution-type';
|
|
6
|
-
export * from './find-repo-dir';
|
|
7
|
-
export * from './nop-asset-publisher';
|
|
8
|
-
export * from './task-store';
|
|
9
|
-
export * from './task-summary';
|