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.
Files changed (216) hide show
  1. package/build-raptor.js +7259 -0
  2. package/index.d.ts +22 -0
  3. package/index.js +7231 -0
  4. package/package.json +13 -17
  5. package/dist/deps/brand/brand.d.ts +0 -5
  6. package/dist/deps/brand/brand.js +0 -3
  7. package/dist/deps/brand/index.d.ts +0 -1
  8. package/dist/deps/brand/index.js +0 -18
  9. package/dist/deps/build-failed-error/build-failed-error.d.ts +0 -14
  10. package/dist/deps/build-failed-error/build-failed-error.js +0 -13
  11. package/dist/deps/build-failed-error/index.d.ts +0 -1
  12. package/dist/deps/build-failed-error/index.js +0 -18
  13. package/dist/deps/build-raptor-api/build-raptor-api.d.ts +0 -351
  14. package/dist/deps/build-raptor-api/build-raptor-api.js +0 -132
  15. package/dist/deps/build-raptor-api/index.d.ts +0 -2
  16. package/dist/deps/build-raptor-api/index.js +0 -19
  17. package/dist/deps/build-raptor-api/step-by-step-processor.d.ts +0 -35
  18. package/dist/deps/build-raptor-api/step-by-step-processor.js +0 -3
  19. package/dist/deps/build-raptor-core/breakdown.d.ts +0 -18
  20. package/dist/deps/build-raptor-core/breakdown.js +0 -99
  21. package/dist/deps/build-raptor-core/build-raptor-config.d.ts +0 -18
  22. package/dist/deps/build-raptor-core/build-raptor-config.js +0 -21
  23. package/dist/deps/build-raptor-core/default-asset-publisher.d.ts +0 -10
  24. package/dist/deps/build-raptor-core/default-asset-publisher.js +0 -16
  25. package/dist/deps/build-raptor-core/engine-bootstrapper.d.ts +0 -50
  26. package/dist/deps/build-raptor-core/engine-bootstrapper.js +0 -200
  27. package/dist/deps/build-raptor-core/engine-event-scheme.d.ts +0 -20
  28. package/dist/deps/build-raptor-core/engine-event-scheme.js +0 -3
  29. package/dist/deps/build-raptor-core/engine.d.ts +0 -66
  30. package/dist/deps/build-raptor-core/engine.js +0 -285
  31. package/dist/deps/build-raptor-core/examplify-zod.d.ts +0 -93
  32. package/dist/deps/build-raptor-core/examplify-zod.js +0 -257
  33. package/dist/deps/build-raptor-core/execution-plan.d.ts +0 -20
  34. package/dist/deps/build-raptor-core/execution-plan.js +0 -66
  35. package/dist/deps/build-raptor-core/execution-record.d.ts +0 -17
  36. package/dist/deps/build-raptor-core/execution-record.js +0 -3
  37. package/dist/deps/build-raptor-core/execution-type.d.ts +0 -2
  38. package/dist/deps/build-raptor-core/execution-type.js +0 -3
  39. package/dist/deps/build-raptor-core/find-repo-dir.d.ts +0 -1
  40. package/dist/deps/build-raptor-core/find-repo-dir.js +0 -27
  41. package/dist/deps/build-raptor-core/fingerprint-ledger.d.ts +0 -33
  42. package/dist/deps/build-raptor-core/fingerprint-ledger.js +0 -164
  43. package/dist/deps/build-raptor-core/fingerprint.d.ts +0 -3
  44. package/dist/deps/build-raptor-core/fingerprint.js +0 -13
  45. package/dist/deps/build-raptor-core/fingerprinter.d.ts +0 -14
  46. package/dist/deps/build-raptor-core/fingerprinter.js +0 -121
  47. package/dist/deps/build-raptor-core/hasher.d.ts +0 -21
  48. package/dist/deps/build-raptor-core/hasher.js +0 -93
  49. package/dist/deps/build-raptor-core/index.d.ts +0 -9
  50. package/dist/deps/build-raptor-core/index.js +0 -26
  51. package/dist/deps/build-raptor-core/model.d.ts +0 -17
  52. package/dist/deps/build-raptor-core/model.js +0 -40
  53. package/dist/deps/build-raptor-core/nop-asset-publisher.d.ts +0 -6
  54. package/dist/deps/build-raptor-core/nop-asset-publisher.js +0 -12
  55. package/dist/deps/build-raptor-core/performance-report.d.ts +0 -5
  56. package/dist/deps/build-raptor-core/performance-report.js +0 -3
  57. package/dist/deps/build-raptor-core/phase.d.ts +0 -1
  58. package/dist/deps/build-raptor-core/phase.js +0 -3
  59. package/dist/deps/build-raptor-core/planner.d.ts +0 -12
  60. package/dist/deps/build-raptor-core/planner.js +0 -43
  61. package/dist/deps/build-raptor-core/purger.d.ts +0 -11
  62. package/dist/deps/build-raptor-core/purger.js +0 -65
  63. package/dist/deps/build-raptor-core/slot-index.d.ts +0 -6
  64. package/dist/deps/build-raptor-core/slot-index.js +0 -17
  65. package/dist/deps/build-raptor-core/step-by-step-transmitter.d.ts +0 -15
  66. package/dist/deps/build-raptor-core/step-by-step-transmitter.js +0 -94
  67. package/dist/deps/build-raptor-core/tar-stream.d.ts +0 -20
  68. package/dist/deps/build-raptor-core/tar-stream.js +0 -194
  69. package/dist/deps/build-raptor-core/task-executor.d.ts +0 -32
  70. package/dist/deps/build-raptor-core/task-executor.js +0 -321
  71. package/dist/deps/build-raptor-core/task-store-cli.d.ts +0 -1
  72. package/dist/deps/build-raptor-core/task-store-cli.js +0 -61
  73. package/dist/deps/build-raptor-core/task-store-event.d.ts +0 -17
  74. package/dist/deps/build-raptor-core/task-store-event.js +0 -3
  75. package/dist/deps/build-raptor-core/task-store.d.ts +0 -41
  76. package/dist/deps/build-raptor-core/task-store.js +0 -302
  77. package/dist/deps/build-raptor-core/task-summary.d.ts +0 -12
  78. package/dist/deps/build-raptor-core/task-summary.js +0 -3
  79. package/dist/deps/build-raptor-core/task-tracker.d.ts +0 -23
  80. package/dist/deps/build-raptor-core/task-tracker.js +0 -97
  81. package/dist/deps/build-raptor-core/task.d.ts +0 -30
  82. package/dist/deps/build-raptor-core/task.js +0 -90
  83. package/dist/deps/build-raptor-core/updatable-task-output-registry.d.ts +0 -13
  84. package/dist/deps/build-raptor-core/updatable-task-output-registry.js +0 -75
  85. package/dist/deps/build-raptor-core/validate-task-infos.d.ts +0 -3
  86. package/dist/deps/build-raptor-core/validate-task-infos.js +0 -53
  87. package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.d.ts +0 -1
  88. package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.js +0 -18
  89. package/dist/deps/build-raptor-core-testkit/driver.d.ts +0 -119
  90. package/dist/deps/build-raptor-core-testkit/driver.js +0 -305
  91. package/dist/deps/build-raptor-core-testkit/index.d.ts +0 -3
  92. package/dist/deps/build-raptor-core-testkit/index.js +0 -20
  93. package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.d.ts +0 -35
  94. package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.js +0 -226
  95. package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.d.ts +0 -27
  96. package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.js +0 -140
  97. package/dist/deps/build-raptor-jest-reporter/index.d.ts +0 -0
  98. package/dist/deps/build-raptor-jest-reporter/index.js +0 -33
  99. package/dist/deps/build-run-id/build-run-id.d.ts +0 -3
  100. package/dist/deps/build-run-id/build-run-id.js +0 -13
  101. package/dist/deps/build-run-id/index.d.ts +0 -1
  102. package/dist/deps/build-run-id/index.js +0 -18
  103. package/dist/deps/core-types/core-types.d.ts +0 -29
  104. package/dist/deps/core-types/core-types.js +0 -81
  105. package/dist/deps/core-types/index.d.ts +0 -1
  106. package/dist/deps/core-types/index.js +0 -18
  107. package/dist/deps/logger/index.d.ts +0 -1
  108. package/dist/deps/logger/index.js +0 -18
  109. package/dist/deps/logger/logger.d.ts +0 -26
  110. package/dist/deps/logger/logger.js +0 -152
  111. package/dist/deps/misc/arrays.d.ts +0 -7
  112. package/dist/deps/misc/arrays.js +0 -67
  113. package/dist/deps/misc/camelize-record.d.ts +0 -6
  114. package/dist/deps/misc/camelize-record.js +0 -16
  115. package/dist/deps/misc/clean-directory.d.ts +0 -4
  116. package/dist/deps/misc/clean-directory.js +0 -80
  117. package/dist/deps/misc/constructs.d.ts +0 -106
  118. package/dist/deps/misc/constructs.js +0 -131
  119. package/dist/deps/misc/directory-scanner.d.ts +0 -49
  120. package/dist/deps/misc/directory-scanner.js +0 -165
  121. package/dist/deps/misc/executor.d.ts +0 -39
  122. package/dist/deps/misc/executor.js +0 -59
  123. package/dist/deps/misc/file-system-storage-client.d.ts +0 -23
  124. package/dist/deps/misc/file-system-storage-client.js +0 -93
  125. package/dist/deps/misc/folderify.d.ts +0 -8
  126. package/dist/deps/misc/folderify.js +0 -86
  127. package/dist/deps/misc/graph.d.ts +0 -29
  128. package/dist/deps/misc/graph.js +0 -200
  129. package/dist/deps/misc/in-memory-storage-client.d.ts +0 -21
  130. package/dist/deps/misc/in-memory-storage-client.js +0 -75
  131. package/dist/deps/misc/index.d.ts +0 -20
  132. package/dist/deps/misc/index.js +0 -37
  133. package/dist/deps/misc/int.d.ts +0 -10
  134. package/dist/deps/misc/int.js +0 -29
  135. package/dist/deps/misc/internal/graph-executor.d.ts +0 -15
  136. package/dist/deps/misc/internal/graph-executor.js +0 -93
  137. package/dist/deps/misc/maps.d.ts +0 -29
  138. package/dist/deps/misc/maps.js +0 -47
  139. package/dist/deps/misc/misc.d.ts +0 -23
  140. package/dist/deps/misc/misc.js +0 -94
  141. package/dist/deps/misc/object-map.d.ts +0 -10
  142. package/dist/deps/misc/object-map.js +0 -26
  143. package/dist/deps/misc/promises.d.ts +0 -39
  144. package/dist/deps/misc/promises.js +0 -78
  145. package/dist/deps/misc/records.d.ts +0 -11
  146. package/dist/deps/misc/records.js +0 -40
  147. package/dist/deps/misc/slurp-dir.d.ts +0 -1
  148. package/dist/deps/misc/slurp-dir.js +0 -14
  149. package/dist/deps/misc/storage-client.d.ts +0 -12
  150. package/dist/deps/misc/storage-client.js +0 -3
  151. package/dist/deps/misc/stream-to-buffer.d.ts +0 -2
  152. package/dist/deps/misc/stream-to-buffer.js +0 -26
  153. package/dist/deps/misc/strings.d.ts +0 -12
  154. package/dist/deps/misc/strings.js +0 -68
  155. package/dist/deps/misc/typed-publisher.d.ts +0 -17
  156. package/dist/deps/misc/typed-publisher.js +0 -65
  157. package/dist/deps/repo-protocol/index.d.ts +0 -3
  158. package/dist/deps/repo-protocol/index.js +0 -20
  159. package/dist/deps/repo-protocol/repo-protocol.d.ts +0 -49
  160. package/dist/deps/repo-protocol/repo-protocol.js +0 -3
  161. package/dist/deps/repo-protocol/task-info.d.ts +0 -18
  162. package/dist/deps/repo-protocol/task-info.js +0 -3
  163. package/dist/deps/repo-protocol/test-run-summary.d.ts +0 -54
  164. package/dist/deps/repo-protocol/test-run-summary.js +0 -32
  165. package/dist/deps/repo-protocol-toolbox/generate-task-infos.d.ts +0 -5
  166. package/dist/deps/repo-protocol-toolbox/generate-task-infos.js +0 -26
  167. package/dist/deps/repo-protocol-toolbox/index.d.ts +0 -3
  168. package/dist/deps/repo-protocol-toolbox/index.js +0 -20
  169. package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.d.ts +0 -10
  170. package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.js +0 -90
  171. package/dist/deps/repo-protocol-toolbox/task-definition.d.ts +0 -14
  172. package/dist/deps/repo-protocol-toolbox/task-definition.js +0 -3
  173. package/dist/deps/reporter-output/index.d.ts +0 -1
  174. package/dist/deps/reporter-output/index.js +0 -18
  175. package/dist/deps/reporter-output/reporter-output.d.ts +0 -49
  176. package/dist/deps/reporter-output/reporter-output.js +0 -25
  177. package/dist/deps/s3-storage-client/creds.d.ts +0 -4
  178. package/dist/deps/s3-storage-client/creds.js +0 -3
  179. package/dist/deps/s3-storage-client/get-s3-storage-client-factory.d.ts +0 -3
  180. package/dist/deps/s3-storage-client/get-s3-storage-client-factory.js +0 -45
  181. package/dist/deps/s3-storage-client/index.d.ts +0 -2
  182. package/dist/deps/s3-storage-client/index.js +0 -19
  183. package/dist/deps/s3-storage-client/main.d.ts +0 -1
  184. package/dist/deps/s3-storage-client/main.js +0 -20
  185. package/dist/deps/s3-storage-client/s3-storage-client.d.ts +0 -25
  186. package/dist/deps/s3-storage-client/s3-storage-client.js +0 -134
  187. package/dist/deps/task-name/index.d.ts +0 -1
  188. package/dist/deps/task-name/index.js +0 -18
  189. package/dist/deps/task-name/task-name.d.ts +0 -17
  190. package/dist/deps/task-name/task-name.js +0 -44
  191. package/dist/deps/unit-metadata/index.d.ts +0 -1
  192. package/dist/deps/unit-metadata/index.js +0 -18
  193. package/dist/deps/unit-metadata/unit-metadata.d.ts +0 -14
  194. package/dist/deps/unit-metadata/unit-metadata.js +0 -32
  195. package/dist/deps/yarn-repo-protocol/build-task-record.d.ts +0 -61
  196. package/dist/deps/yarn-repo-protocol/build-task-record.js +0 -29
  197. package/dist/deps/yarn-repo-protocol/generate-test-run-summary.d.ts +0 -4
  198. package/dist/deps/yarn-repo-protocol/generate-test-run-summary.js +0 -26
  199. package/dist/deps/yarn-repo-protocol/index.d.ts +0 -2
  200. package/dist/deps/yarn-repo-protocol/index.js +0 -19
  201. package/dist/deps/yarn-repo-protocol/rerun-list.d.ts +0 -12
  202. package/dist/deps/yarn-repo-protocol/rerun-list.js +0 -6
  203. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.d.ts +0 -24
  204. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.js +0 -33
  205. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.d.ts +0 -82
  206. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.js +0 -1036
  207. package/dist/src/build-raptor-cli.d.ts +0 -60
  208. package/dist/src/build-raptor-cli.js +0 -514
  209. package/dist/src/index.d.ts +0 -1
  210. package/dist/src/index.js +0 -20
  211. package/dist/src/main.d.ts +0 -2
  212. package/dist/src/main.js +0 -23
  213. package/dist/src/register-asset-request.d.ts +0 -18
  214. package/dist/src/register-asset-request.js +0 -11
  215. package/dist/src/task-execution-visualizer.d.ts +0 -17
  216. 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,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,2 +0,0 @@
1
- export type KnownExecutionType = 'EXECUTED' | 'CACHED' | 'CANNOT_START';
2
- export type ExecutionType = 'UNKNOWN' | KnownExecutionType;
@@ -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,3 +0,0 @@
1
- import { Brand } from 'brand';
2
- export type Fingerprint = Brand<string, 'fingerprint'>;
3
- export declare function Fingerprint(input: string): Fingerprint;
@@ -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';