build-raptor 0.131.0 → 0.133.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 (214) hide show
  1. package/dist/deps/brand/brand.d.ts +5 -0
  2. package/dist/deps/brand/brand.js +3 -0
  3. package/dist/deps/brand/index.d.ts +1 -0
  4. package/dist/deps/brand/index.js +18 -0
  5. package/dist/deps/build-failed-error/build-failed-error.d.ts +14 -0
  6. package/dist/deps/build-failed-error/build-failed-error.js +13 -0
  7. package/dist/deps/build-failed-error/index.d.ts +1 -0
  8. package/dist/deps/build-failed-error/index.js +18 -0
  9. package/dist/deps/build-raptor-api/build-raptor-api.d.ts +351 -0
  10. package/dist/deps/build-raptor-api/build-raptor-api.js +132 -0
  11. package/dist/deps/build-raptor-api/index.d.ts +2 -0
  12. package/dist/deps/build-raptor-api/index.js +19 -0
  13. package/dist/deps/build-raptor-api/step-by-step-processor.d.ts +35 -0
  14. package/dist/deps/build-raptor-api/step-by-step-processor.js +3 -0
  15. package/dist/deps/build-raptor-core/breakdown.d.ts +18 -0
  16. package/dist/deps/build-raptor-core/breakdown.js +99 -0
  17. package/dist/deps/build-raptor-core/build-raptor-config.d.ts +21 -0
  18. package/dist/deps/build-raptor-core/build-raptor-config.js +25 -0
  19. package/dist/deps/build-raptor-core/default-asset-publisher.d.ts +10 -0
  20. package/dist/deps/build-raptor-core/default-asset-publisher.js +16 -0
  21. package/dist/deps/build-raptor-core/engine-bootstrapper.d.ts +50 -0
  22. package/dist/deps/build-raptor-core/engine-bootstrapper.js +200 -0
  23. package/dist/deps/build-raptor-core/engine-event-scheme.d.ts +20 -0
  24. package/dist/deps/build-raptor-core/engine-event-scheme.js +3 -0
  25. package/dist/deps/build-raptor-core/engine.d.ts +66 -0
  26. package/dist/deps/build-raptor-core/engine.js +285 -0
  27. package/dist/deps/build-raptor-core/examplify-zod.d.ts +93 -0
  28. package/dist/deps/build-raptor-core/examplify-zod.js +257 -0
  29. package/dist/deps/build-raptor-core/execution-plan.d.ts +20 -0
  30. package/dist/deps/build-raptor-core/execution-plan.js +66 -0
  31. package/dist/deps/build-raptor-core/execution-record.d.ts +17 -0
  32. package/dist/deps/build-raptor-core/execution-record.js +3 -0
  33. package/dist/deps/build-raptor-core/execution-type.d.ts +2 -0
  34. package/dist/deps/build-raptor-core/execution-type.js +3 -0
  35. package/dist/deps/build-raptor-core/find-repo-dir.d.ts +1 -0
  36. package/dist/deps/build-raptor-core/find-repo-dir.js +27 -0
  37. package/dist/deps/build-raptor-core/fingerprint-ledger.d.ts +33 -0
  38. package/dist/deps/build-raptor-core/fingerprint-ledger.js +164 -0
  39. package/dist/deps/build-raptor-core/fingerprint.d.ts +3 -0
  40. package/dist/deps/build-raptor-core/fingerprint.js +13 -0
  41. package/dist/deps/build-raptor-core/fingerprinter.d.ts +15 -0
  42. package/dist/deps/build-raptor-core/fingerprinter.js +122 -0
  43. package/dist/deps/build-raptor-core/hasher.d.ts +21 -0
  44. package/dist/deps/build-raptor-core/hasher.js +93 -0
  45. package/dist/deps/build-raptor-core/index.d.ts +9 -0
  46. package/dist/deps/build-raptor-core/index.js +26 -0
  47. package/dist/deps/build-raptor-core/model.d.ts +17 -0
  48. package/dist/deps/build-raptor-core/model.js +40 -0
  49. package/dist/deps/build-raptor-core/nop-asset-publisher.d.ts +6 -0
  50. package/dist/deps/build-raptor-core/nop-asset-publisher.js +12 -0
  51. package/dist/deps/build-raptor-core/performance-report.d.ts +5 -0
  52. package/dist/deps/build-raptor-core/performance-report.js +3 -0
  53. package/dist/deps/build-raptor-core/phase.d.ts +1 -0
  54. package/dist/deps/build-raptor-core/phase.js +3 -0
  55. package/dist/deps/build-raptor-core/planner.d.ts +12 -0
  56. package/dist/deps/build-raptor-core/planner.js +43 -0
  57. package/dist/deps/build-raptor-core/purger.d.ts +11 -0
  58. package/dist/deps/build-raptor-core/purger.js +65 -0
  59. package/dist/deps/build-raptor-core/slot-index.d.ts +6 -0
  60. package/dist/deps/build-raptor-core/slot-index.js +17 -0
  61. package/dist/deps/build-raptor-core/step-by-step-transmitter.d.ts +15 -0
  62. package/dist/deps/build-raptor-core/step-by-step-transmitter.js +94 -0
  63. package/dist/deps/build-raptor-core/tar-stream.d.ts +20 -0
  64. package/dist/deps/build-raptor-core/tar-stream.js +194 -0
  65. package/dist/deps/build-raptor-core/task-executor.d.ts +32 -0
  66. package/dist/deps/build-raptor-core/task-executor.js +321 -0
  67. package/dist/deps/build-raptor-core/task-store-cli.d.ts +1 -0
  68. package/dist/deps/build-raptor-core/task-store-cli.js +61 -0
  69. package/dist/deps/build-raptor-core/task-store-event.d.ts +17 -0
  70. package/dist/deps/build-raptor-core/task-store-event.js +3 -0
  71. package/dist/deps/build-raptor-core/task-store.d.ts +41 -0
  72. package/dist/deps/build-raptor-core/task-store.js +302 -0
  73. package/dist/deps/build-raptor-core/task-summary.d.ts +12 -0
  74. package/dist/deps/build-raptor-core/task-summary.js +3 -0
  75. package/dist/deps/build-raptor-core/task-tracker.d.ts +23 -0
  76. package/dist/deps/build-raptor-core/task-tracker.js +97 -0
  77. package/dist/deps/build-raptor-core/task.d.ts +30 -0
  78. package/dist/deps/build-raptor-core/task.js +90 -0
  79. package/dist/deps/build-raptor-core/updatable-task-output-registry.d.ts +13 -0
  80. package/dist/deps/build-raptor-core/updatable-task-output-registry.js +75 -0
  81. package/dist/deps/build-raptor-core/validate-task-infos.d.ts +3 -0
  82. package/dist/deps/build-raptor-core/validate-task-infos.js +53 -0
  83. package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.d.ts +1 -0
  84. package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.js +18 -0
  85. package/dist/deps/build-raptor-core-testkit/driver.d.ts +119 -0
  86. package/dist/deps/build-raptor-core-testkit/driver.js +305 -0
  87. package/dist/deps/build-raptor-core-testkit/index.d.ts +3 -0
  88. package/dist/deps/build-raptor-core-testkit/index.js +20 -0
  89. package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.d.ts +35 -0
  90. package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.js +226 -0
  91. package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.d.ts +27 -0
  92. package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.js +140 -0
  93. package/dist/deps/build-run-id/build-run-id.d.ts +3 -0
  94. package/dist/deps/build-run-id/build-run-id.js +13 -0
  95. package/dist/deps/build-run-id/index.d.ts +1 -0
  96. package/dist/deps/build-run-id/index.js +18 -0
  97. package/dist/deps/core-types/core-types.d.ts +29 -0
  98. package/dist/deps/core-types/core-types.js +81 -0
  99. package/dist/deps/core-types/index.d.ts +1 -0
  100. package/dist/deps/core-types/index.js +18 -0
  101. package/dist/deps/logger/index.d.ts +1 -0
  102. package/dist/deps/logger/index.js +18 -0
  103. package/dist/deps/logger/logger.d.ts +26 -0
  104. package/dist/deps/logger/logger.js +152 -0
  105. package/dist/deps/misc/arrays.d.ts +7 -0
  106. package/dist/deps/misc/arrays.js +67 -0
  107. package/dist/deps/misc/camelize-record.d.ts +6 -0
  108. package/dist/deps/misc/camelize-record.js +16 -0
  109. package/dist/deps/misc/clean-directory.d.ts +4 -0
  110. package/dist/deps/misc/clean-directory.js +80 -0
  111. package/dist/deps/misc/constructs.d.ts +106 -0
  112. package/dist/deps/misc/constructs.js +131 -0
  113. package/dist/deps/misc/directory-scanner.d.ts +49 -0
  114. package/dist/deps/misc/directory-scanner.js +165 -0
  115. package/dist/deps/misc/executor.d.ts +39 -0
  116. package/dist/deps/misc/executor.js +59 -0
  117. package/dist/deps/misc/file-system-storage-client.d.ts +23 -0
  118. package/dist/deps/misc/file-system-storage-client.js +93 -0
  119. package/dist/deps/misc/folderify.d.ts +8 -0
  120. package/dist/deps/misc/folderify.js +86 -0
  121. package/dist/deps/misc/graph.d.ts +29 -0
  122. package/dist/deps/misc/graph.js +200 -0
  123. package/dist/deps/misc/in-memory-storage-client.d.ts +21 -0
  124. package/dist/deps/misc/in-memory-storage-client.js +75 -0
  125. package/dist/deps/misc/index.d.ts +20 -0
  126. package/dist/deps/misc/index.js +37 -0
  127. package/dist/deps/misc/int.d.ts +10 -0
  128. package/dist/deps/misc/int.js +29 -0
  129. package/dist/deps/misc/internal/graph-executor.d.ts +15 -0
  130. package/dist/deps/misc/internal/graph-executor.js +93 -0
  131. package/dist/deps/misc/maps.d.ts +29 -0
  132. package/dist/deps/misc/maps.js +47 -0
  133. package/dist/deps/misc/misc.d.ts +23 -0
  134. package/dist/deps/misc/misc.js +94 -0
  135. package/dist/deps/misc/object-map.d.ts +10 -0
  136. package/dist/deps/misc/object-map.js +26 -0
  137. package/dist/deps/misc/promises.d.ts +39 -0
  138. package/dist/deps/misc/promises.js +78 -0
  139. package/dist/deps/misc/records.d.ts +11 -0
  140. package/dist/deps/misc/records.js +40 -0
  141. package/dist/deps/misc/slurp-dir.d.ts +1 -0
  142. package/dist/deps/misc/slurp-dir.js +14 -0
  143. package/dist/deps/misc/storage-client.d.ts +12 -0
  144. package/dist/deps/misc/storage-client.js +3 -0
  145. package/dist/deps/misc/stream-to-buffer.d.ts +2 -0
  146. package/dist/deps/misc/stream-to-buffer.js +26 -0
  147. package/dist/deps/misc/strings.d.ts +12 -0
  148. package/dist/deps/misc/strings.js +68 -0
  149. package/dist/deps/misc/typed-publisher.d.ts +17 -0
  150. package/dist/deps/misc/typed-publisher.js +65 -0
  151. package/dist/deps/repo-protocol/index.d.ts +3 -0
  152. package/dist/deps/repo-protocol/index.js +20 -0
  153. package/dist/deps/repo-protocol/repo-protocol.d.ts +49 -0
  154. package/dist/deps/repo-protocol/repo-protocol.js +3 -0
  155. package/dist/deps/repo-protocol/task-info.d.ts +18 -0
  156. package/dist/deps/repo-protocol/task-info.js +3 -0
  157. package/dist/deps/repo-protocol/test-run-summary.d.ts +54 -0
  158. package/dist/deps/repo-protocol/test-run-summary.js +32 -0
  159. package/dist/deps/repo-protocol-toolbox/generate-task-infos.d.ts +5 -0
  160. package/dist/deps/repo-protocol-toolbox/generate-task-infos.js +26 -0
  161. package/dist/deps/repo-protocol-toolbox/index.d.ts +3 -0
  162. package/dist/deps/repo-protocol-toolbox/index.js +20 -0
  163. package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.d.ts +10 -0
  164. package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.js +90 -0
  165. package/dist/deps/repo-protocol-toolbox/task-definition.d.ts +14 -0
  166. package/dist/deps/repo-protocol-toolbox/task-definition.js +3 -0
  167. package/dist/deps/reporter-output/index.d.ts +1 -0
  168. package/dist/deps/reporter-output/index.js +18 -0
  169. package/dist/deps/reporter-output/reporter-output.d.ts +49 -0
  170. package/dist/deps/reporter-output/reporter-output.js +25 -0
  171. package/dist/deps/s3-storage-client/creds.d.ts +4 -0
  172. package/dist/deps/s3-storage-client/creds.js +3 -0
  173. package/dist/deps/s3-storage-client/get-s3-storage-client-factory.d.ts +3 -0
  174. package/dist/deps/s3-storage-client/get-s3-storage-client-factory.js +45 -0
  175. package/dist/deps/s3-storage-client/index.d.ts +2 -0
  176. package/dist/deps/s3-storage-client/index.js +19 -0
  177. package/dist/deps/s3-storage-client/main.d.ts +1 -0
  178. package/dist/deps/s3-storage-client/main.js +20 -0
  179. package/dist/deps/s3-storage-client/s3-storage-client.d.ts +25 -0
  180. package/dist/deps/s3-storage-client/s3-storage-client.js +134 -0
  181. package/dist/deps/task-name/index.d.ts +1 -0
  182. package/dist/deps/task-name/index.js +18 -0
  183. package/dist/deps/task-name/task-name.d.ts +17 -0
  184. package/dist/deps/task-name/task-name.js +44 -0
  185. package/dist/deps/unit-metadata/index.d.ts +1 -0
  186. package/dist/deps/unit-metadata/index.js +18 -0
  187. package/dist/deps/unit-metadata/unit-metadata.d.ts +14 -0
  188. package/dist/deps/unit-metadata/unit-metadata.js +32 -0
  189. package/dist/deps/yarn-repo-protocol/build-task-record.d.ts +61 -0
  190. package/dist/deps/yarn-repo-protocol/build-task-record.js +29 -0
  191. package/dist/deps/yarn-repo-protocol/generate-test-run-summary.d.ts +4 -0
  192. package/dist/deps/yarn-repo-protocol/generate-test-run-summary.js +26 -0
  193. package/dist/deps/yarn-repo-protocol/index.d.ts +2 -0
  194. package/dist/deps/yarn-repo-protocol/index.js +19 -0
  195. package/dist/deps/yarn-repo-protocol/rerun-list.d.ts +12 -0
  196. package/dist/deps/yarn-repo-protocol/rerun-list.js +6 -0
  197. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.d.ts +24 -0
  198. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.js +34 -0
  199. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.d.ts +82 -0
  200. package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.js +1036 -0
  201. package/dist/src/build-raptor-cli.d.ts +60 -0
  202. package/dist/src/build-raptor-cli.js +514 -0
  203. package/dist/src/index.d.ts +1 -0
  204. package/dist/src/index.js +20 -0
  205. package/dist/src/main.d.ts +2 -0
  206. package/dist/src/main.js +23 -0
  207. package/dist/src/register-asset-request.d.ts +18 -0
  208. package/dist/src/register-asset-request.js +11 -0
  209. package/dist/src/task-execution-visualizer.d.ts +17 -0
  210. package/dist/src/task-execution-visualizer.js +116 -0
  211. package/package.json +17 -14
  212. package/build-raptor.js +0 -7259
  213. package/index.d.ts +0 -22
  214. package/index.js +0 -7231
@@ -0,0 +1,35 @@
1
+ import { FolderifyRecipe } from 'misc';
2
+ import { ExitStatus, RepoProtocol } from 'repo-protocol';
3
+ import { TaskDefinition } from 'repo-protocol-toolbox';
4
+ import { TaskName } from 'task-name';
5
+ import { Run } from './driver';
6
+ type TaskLabel = string;
7
+ type CatalogSpec = {
8
+ readonly taskDefs?: readonly TaskDefinition[];
9
+ };
10
+ type TaskCallback = ((dir: string) => Promise<ExitStatus>) | ((dir: string) => ExitStatus);
11
+ /**
12
+ * Returns an array of task names which are the dependencies of the given input (also a task name).
13
+ */
14
+ type DepFunc = (taskName: string) => string[];
15
+ export declare class RepoProtocolTestkit {
16
+ private readonly graphJson;
17
+ private spec?;
18
+ private map;
19
+ private countByTask;
20
+ private countByTaskInRun;
21
+ private readonly units;
22
+ constructor(graphJson: Record<string, string[]>, spec?: (CatalogSpec | DepFunc) | undefined);
23
+ changeCatalog(spec: CatalogSpec): void;
24
+ private assertUnitId;
25
+ countOf(unitId: string, taskKind: string, run?: Run): number;
26
+ countOf(run: Run): Record<TaskName, number>;
27
+ invokedAt(run: Run): TaskName[];
28
+ setTask(taskLabel: TaskLabel, cb: TaskCallback): void;
29
+ setTaskOutputs(taskLabel: TaskLabel, recipe: FolderifyRecipe): void;
30
+ setTaskFunction(taskLabel: TaskLabel, callback: (inputs: FolderifyRecipe) => FolderifyRecipe | Promise<FolderifyRecipe>): void;
31
+ setTaskResult(unitId: string, taskKind: 'test' | 'build', result: ExitStatus): void;
32
+ setTaskResult(taskLabel: TaskLabel, result: ExitStatus): void;
33
+ create(): RepoProtocol;
34
+ }
35
+ export {};
@@ -0,0 +1,226 @@
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.RepoProtocolTestkit = void 0;
37
+ const core_types_1 = require("core-types");
38
+ const fse = __importStar(require("fs-extra"));
39
+ const misc_1 = require("misc");
40
+ const repo_protocol_toolbox_1 = require("repo-protocol-toolbox");
41
+ const task_name_1 = require("task-name");
42
+ const unit_metadata_1 = require("unit-metadata");
43
+ const zod_1 = require("zod");
44
+ function validate(input) {
45
+ new TaskInRunUtils().undo(input);
46
+ }
47
+ class TaskInRunUtils {
48
+ undo(input) {
49
+ const parsed = JSON.parse(input);
50
+ if (!Array.isArray(parsed) || parsed.length !== 2) {
51
+ throw new Error(`Bad TaskInRun value: <${input}>`);
52
+ }
53
+ const [taskName, buildRunId] = parsed;
54
+ return { taskName, buildRunId };
55
+ }
56
+ }
57
+ function TaskInRun(...args) {
58
+ if (args.length === 2) {
59
+ const [tn, buildRunId] = args;
60
+ const ret = JSON.stringify([tn, buildRunId]);
61
+ validate(ret);
62
+ return ret;
63
+ }
64
+ if (args.length === 0) {
65
+ return new TaskInRunUtils();
66
+ }
67
+ (0, misc_1.shouldNeverHappen)(args);
68
+ }
69
+ function labelToTaskName(label) {
70
+ return (0, task_name_1.TaskName)().parse(label);
71
+ }
72
+ class RepoProtocolTestkit {
73
+ constructor(graphJson, spec) {
74
+ this.graphJson = graphJson;
75
+ this.spec = spec;
76
+ this.map = new Map();
77
+ this.countByTask = new Map();
78
+ this.countByTaskInRun = new Map();
79
+ this.units = Object.keys(graphJson).map(u => new unit_metadata_1.UnitMetadata(u, (0, unit_metadata_1.UnitId)(u)));
80
+ }
81
+ changeCatalog(spec) {
82
+ this.spec = spec;
83
+ }
84
+ assertUnitId(unitId) {
85
+ if (!this.units.find(at => at.id === unitId)) {
86
+ throw new Error(`Unit <${unitId}> not found in ${JSON.stringify(this.units)}`);
87
+ }
88
+ }
89
+ countOf(...args) {
90
+ if (args.length === 3 || args.length === 2) {
91
+ const [unitId, taskKind, run] = args;
92
+ this.assertUnitId(unitId);
93
+ const tn = (0, task_name_1.TaskName)(unitId, (0, task_name_1.TaskKind)(taskKind));
94
+ if (!run) {
95
+ return this.countByTask.get(tn) ?? 0;
96
+ }
97
+ return this.countByTaskInRun.get(TaskInRun(tn, run.buildRunId)) ?? 0;
98
+ }
99
+ if (args.length === 1) {
100
+ const [run] = args;
101
+ const triplets = [...this.countByTaskInRun.entries()].map(([k, count]) => {
102
+ const { buildRunId, taskName } = TaskInRun().undo(k);
103
+ return { buildRunId, taskName, count };
104
+ });
105
+ const pairs = triplets.filter(at => at.buildRunId === run.buildRunId).map(at => (0, misc_1.pair)(at.taskName, at.count));
106
+ return (0, misc_1.pairsToRecord)(pairs);
107
+ }
108
+ (0, misc_1.shouldNeverHappen)(args.length);
109
+ }
110
+ invokedAt(run) {
111
+ const pairs = (0, misc_1.recordToPairs)(this.countOf(run));
112
+ return pairs.filter(([_k, v]) => v > 0).map(([k, _v]) => k);
113
+ }
114
+ setTask(taskLabel, cb) {
115
+ const tn = (0, task_name_1.TaskName)().parse(taskLabel);
116
+ this.map.set(tn, cb);
117
+ }
118
+ setTaskOutputs(taskLabel, recipe) {
119
+ this.setTask(taskLabel, async (dir) => {
120
+ await (0, misc_1.writeRecipe)(dir, recipe);
121
+ return Promise.resolve('OK');
122
+ });
123
+ }
124
+ setTaskFunction(taskLabel, callback) {
125
+ this.setTask(taskLabel, async (dir) => {
126
+ const inputs = await (0, misc_1.slurpDir)(dir);
127
+ const recipe = await callback(inputs);
128
+ await (0, misc_1.writeRecipe)(dir, recipe);
129
+ return Promise.resolve('OK');
130
+ });
131
+ }
132
+ setTaskResult(...args) {
133
+ let tn;
134
+ let r;
135
+ if (args.length === 3) {
136
+ const [unitId, taskKind, result] = args;
137
+ tn = (0, task_name_1.TaskName)((0, unit_metadata_1.UnitId)(unitId), (0, task_name_1.TaskKind)(taskKind));
138
+ r = result;
139
+ }
140
+ else if (args.length === 2) {
141
+ const [label, result] = args;
142
+ tn = labelToTaskName(label);
143
+ r = result;
144
+ }
145
+ else {
146
+ (0, misc_1.shouldNeverHappen)(args);
147
+ }
148
+ const { unitId } = (0, task_name_1.TaskName)().undo(tn);
149
+ this.assertUnitId(unitId);
150
+ this.map.set(tn, () => r);
151
+ }
152
+ create() {
153
+ const getGraph = () => {
154
+ const g = new misc_1.Graph(x => x);
155
+ for (const [dir, deps] of Object.entries(this.graphJson)) {
156
+ g.vertex((0, unit_metadata_1.UnitId)(dir));
157
+ for (const d of deps) {
158
+ g.edge((0, unit_metadata_1.UnitId)(dir), (0, unit_metadata_1.UnitId)(d));
159
+ }
160
+ }
161
+ return g;
162
+ };
163
+ return new RepoProtocolImpl(this.units, {
164
+ getGraph,
165
+ map: this.map,
166
+ countByTask: this.countByTask,
167
+ countByTaskInRun: this.countByTaskInRun,
168
+ getCatalogSpec: () => this.spec,
169
+ });
170
+ }
171
+ }
172
+ exports.RepoProtocolTestkit = RepoProtocolTestkit;
173
+ class RepoProtocolImpl {
174
+ constructor(units, state) {
175
+ this.units = units;
176
+ this.state = state;
177
+ this.rootDir = (0, core_types_1.RepoRoot)('/');
178
+ }
179
+ async initialize(rootDir) {
180
+ this.rootDir = rootDir;
181
+ }
182
+ getConfigSchema() {
183
+ return zod_1.z.object({});
184
+ }
185
+ async close() { }
186
+ async execute(tn, outputFile, buildRunId) {
187
+ (0, misc_1.mapIncrement)(this.state.countByTask, tn, 1);
188
+ (0, misc_1.mapIncrement)(this.state.countByTaskInRun, TaskInRun(tn, buildRunId), 1);
189
+ const taskCb = this.state.map.get(tn) ?? (() => 'OK');
190
+ const { unitId } = (0, task_name_1.TaskName)().undo(tn);
191
+ const u = this.units.find(u => u.id === unitId) ?? (0, misc_1.failMe)(`Unit not found (unit ID=${unitId})`);
192
+ const dir = this.rootDir.resolve(u.pathInRepo);
193
+ const v = await taskCb(dir);
194
+ await fse.writeFile(outputFile, `task ${tn} result is ${v}`);
195
+ return v;
196
+ }
197
+ async getGraph() {
198
+ return this.state.getGraph();
199
+ }
200
+ async getUnits() {
201
+ const ret = [...this.units];
202
+ const arr = await Promise.all(ret.map(async (u) => {
203
+ const exist = await fse.pathExists(this.rootDir.resolve(u.pathInRepo));
204
+ if (exist) {
205
+ return undefined;
206
+ }
207
+ return u;
208
+ }));
209
+ const filtered = arr.filter(Boolean);
210
+ if (filtered.length) {
211
+ throw new Error(`Missing folders for the following units: ${JSON.stringify(filtered)}`);
212
+ }
213
+ return ret;
214
+ }
215
+ async getTasks() {
216
+ const catalogSpec = this.state.getCatalogSpec();
217
+ if (catalogSpec && typeof catalogSpec !== 'function') {
218
+ return new repo_protocol_toolbox_1.TaskInfoGenerator().computeInfos(catalogSpec.taskDefs, this.units, this.state.getGraph());
219
+ }
220
+ const depFunc = typeof catalogSpec === 'function'
221
+ ? catalogSpec // eslint-disable-line @typescript-eslint/consistent-type-assertions
222
+ : () => [];
223
+ return (0, repo_protocol_toolbox_1.generateTaskInfos)(this.units, this.state.getGraph(), depFunc, []);
224
+ }
225
+ }
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwby1wcm90b2NvbC10ZXN0a2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlcG8tcHJvdG9jb2wtdGVzdGtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwyQ0FBcUM7QUFDckMsOENBQStCO0FBQy9CLCtCQVdhO0FBRWIsaUVBQTRGO0FBQzVGLHlDQUE4QztBQUM5QyxpREFBb0Q7QUFDcEQsNkJBQXVCO0FBTXZCLFNBQVMsUUFBUSxDQUFDLEtBQWE7SUFDN0IsSUFBSSxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUVELE1BQU0sY0FBYztJQUNsQixJQUFJLENBQUMsS0FBYTtRQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsS0FBSyxHQUFHLENBQUMsQ0FBQTtRQUNwRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUE7UUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0NBQ0Y7QUFJRCxTQUFTLFNBQVMsQ0FBQyxHQUFHLElBQWlEO0lBQ3JFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7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
@@ -0,0 +1,27 @@
1
+ import { BuildRunId } from 'build-run-id';
2
+ import { PathInRepo, RepoRoot } from 'core-types';
3
+ import { Graph } from 'misc';
4
+ import { ExitStatus, RepoProtocol, TaskInfo } from 'repo-protocol';
5
+ import { TaskName } from 'task-name';
6
+ import { UnitId, UnitMetadata } from 'unit-metadata';
7
+ import { z } from 'zod';
8
+ export declare class SimpleNodeRepoProtocol implements RepoProtocol {
9
+ private readonly pathToModulesDir;
10
+ private readonly buildOutputLocations;
11
+ private readonly catalog?;
12
+ constructor(pathToModulesDir?: PathInRepo, buildOutputLocations?: string[], catalog?: {
13
+ tasks: TaskInfo[];
14
+ } | undefined);
15
+ getConfigSchema(): z.AnyZodObject;
16
+ private units;
17
+ private graph;
18
+ private rootDir;
19
+ initialize(rootDir: RepoRoot): Promise<void>;
20
+ close(): Promise<void>;
21
+ private readPackageJsonAt;
22
+ execute(taskName: TaskName, outputFile: string, _buildRunId: BuildRunId): Promise<ExitStatus>;
23
+ getGraph(): Promise<Graph<UnitId>>;
24
+ private read;
25
+ getUnits(): Promise<UnitMetadata[]>;
26
+ getTasks(): Promise<TaskInfo[]>;
27
+ }
@@ -0,0 +1,140 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SimpleNodeRepoProtocol = void 0;
40
+ const core_types_1 = require("core-types");
41
+ const execa_1 = __importDefault(require("execa"));
42
+ const fse = __importStar(require("fs-extra"));
43
+ const misc_1 = require("misc");
44
+ const repo_protocol_toolbox_1 = require("repo-protocol-toolbox");
45
+ const task_name_1 = require("task-name");
46
+ const unit_metadata_1 = require("unit-metadata");
47
+ const util = __importStar(require("util"));
48
+ const zod_1 = require("zod");
49
+ class SimpleNodeRepoProtocol {
50
+ constructor(pathToModulesDir = (0, core_types_1.PathInRepo)('modules'), buildOutputLocations = [], catalog) {
51
+ this.pathToModulesDir = pathToModulesDir;
52
+ this.buildOutputLocations = buildOutputLocations;
53
+ this.catalog = catalog;
54
+ this.units = [];
55
+ this.graph = new misc_1.Graph(x => x);
56
+ this.rootDir = (0, core_types_1.RepoRoot)('/tmp');
57
+ }
58
+ getConfigSchema() {
59
+ return zod_1.z.object({});
60
+ }
61
+ async initialize(rootDir) {
62
+ this.rootDir = rootDir;
63
+ const list = await this.read();
64
+ this.units = list.map(at => new unit_metadata_1.UnitMetadata(at.pathInRepo.val, at.id));
65
+ const ids = new Set(this.units.map(at => at.id));
66
+ for (const at of list) {
67
+ this.graph.vertex(at.id);
68
+ const deps = { ...at.packageJson.dependencies, ...at.packageJson.devDependencies };
69
+ for (const dep of Object.keys(deps)) {
70
+ if (ids.has(dep)) {
71
+ this.graph.edge(at.id, (0, unit_metadata_1.UnitId)(dep));
72
+ }
73
+ }
74
+ }
75
+ }
76
+ async close() {
77
+ this.units = [];
78
+ this.graph = new misc_1.Graph(x => x);
79
+ }
80
+ async readPackageJsonAt(pir) {
81
+ const resolved = this.rootDir.resolve(pir.expand('package.json'));
82
+ try {
83
+ const content = await fse.readFile(resolved, 'utf-8');
84
+ return JSON.parse(content);
85
+ }
86
+ catch (e) {
87
+ throw new Error(`Failed to read package.json in ${resolved}: ${e}`);
88
+ }
89
+ }
90
+ async execute(taskName, outputFile, _buildRunId) {
91
+ const { taskKind, unitId } = (0, task_name_1.TaskName)().undo(taskName);
92
+ const unit = this.units.find(u => u.id === unitId) ?? (0, misc_1.failMe)(`unit not found (unit ID=${unitId})`);
93
+ const dir = this.rootDir.resolve(unit.pathInRepo);
94
+ const packageJson = await this.readPackageJsonAt(unit.pathInRepo);
95
+ const script = packageJson?.scripts[taskKind];
96
+ if (script === undefined) {
97
+ throw new Error(`Missing script for ${taskName}`);
98
+ }
99
+ const fd = await fse.open(outputFile, 'w');
100
+ try {
101
+ const p = await execa_1.default.command(script, { cwd: dir, stdout: fd, stderr: fd, reject: false, shell: true });
102
+ if (p.exitCode === 0) {
103
+ return 'OK';
104
+ }
105
+ return 'FAIL';
106
+ }
107
+ catch (e) {
108
+ throw new Error(`Crashed when running task ${taskName} in ${dir} (command: ${script}): ${util.inspect(e)}`);
109
+ }
110
+ finally {
111
+ await fse.close(fd);
112
+ }
113
+ }
114
+ async getGraph() {
115
+ return this.graph;
116
+ }
117
+ async read() {
118
+ const list = await fse.readdir(this.rootDir.resolve(this.pathToModulesDir));
119
+ return await (0, misc_1.promises)(list.map(async (name) => {
120
+ const pir = this.pathToModulesDir.expand(name);
121
+ const parsed = await this.readPackageJsonAt(pir);
122
+ return {
123
+ pathInRepo: pir,
124
+ id: (0, unit_metadata_1.UnitId)(parsed.name),
125
+ packageJson: parsed,
126
+ };
127
+ })).reify();
128
+ }
129
+ async getUnits() {
130
+ return this.units;
131
+ }
132
+ async getTasks() {
133
+ if (this.catalog) {
134
+ return this.catalog.tasks;
135
+ }
136
+ return (0, repo_protocol_toolbox_1.generateTaskInfos)(this.units, this.graph, () => [], this.buildOutputLocations);
137
+ }
138
+ }
139
+ exports.SimpleNodeRepoProtocol = SimpleNodeRepoProtocol;
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLW5vZGUtcmVwby1wcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW1wbGUtbm9kZS1yZXBvLXByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDJDQUFpRDtBQUNqRCxrREFBeUI7QUFDekIsOENBQStCO0FBQy9CLCtCQUE4QztBQUU5QyxpRUFBeUQ7QUFDekQseUNBQW9DO0FBQ3BDLGlEQUFvRDtBQUNwRCwyQ0FBNEI7QUFDNUIsNkJBQXVCO0FBRXZCLE1BQWEsc0JBQXNCO0lBQ2pDLFlBQ21CLG1CQUFtQixJQUFBLHVCQUFVLEVBQUMsU0FBUyxDQUFDLEVBQ3hDLHVCQUFpQyxFQUFFLEVBQ25DLE9BQStCO1FBRi9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUFDeEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFlO1FBQ25DLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBTzFDLFVBQUssR0FBbUIsRUFBRSxDQUFBO1FBQzFCLFVBQUssR0FBa0IsSUFBSSxZQUFLLENBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoRCxZQUFPLEdBQWEsSUFBQSxxQkFBUSxFQUFDLE1BQU0sQ0FBQyxDQUFBO0lBUnpDLENBQUM7SUFFSixlQUFlO1FBQ2IsT0FBTyxPQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3JCLENBQUM7SUFNRCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQWlCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksNEJBQVksQ0FBQyxF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
@@ -0,0 +1,3 @@
1
+ import { Brand } from 'brand';
2
+ export type BuildRunId = Brand<string, 'BuildRunId'>;
3
+ export declare function BuildRunId(input: string): BuildRunId;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BuildRunId = BuildRunId;
4
+ function validate(input) {
5
+ if (input.length === 0) {
6
+ throw new Error(`Bad BuildRunId: <${input}>`);
7
+ }
8
+ }
9
+ function BuildRunId(input) {
10
+ validate(input);
11
+ return input;
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcnVuLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1aWxkLXJ1bi1pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLGdDQUdDO0FBVEQsU0FBUyxRQUFRLENBQUMsS0FBYTtJQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxHQUFHLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxLQUFhO0lBQ3RDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNmLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export * from './build-run-id';
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./build-run-id"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE4QiJ9
@@ -0,0 +1,29 @@
1
+ import { Brand } from 'brand';
2
+ export declare function RepoRoot(input: string): {
3
+ resolve: (pathInRepo?: PathInRepo) => string;
4
+ unresolve: (absolutePath: string) => PathInRepo;
5
+ toString: () => string;
6
+ toJSON: () => string;
7
+ };
8
+ export type RepoRoot = ReturnType<typeof RepoRoot>;
9
+ type Mark = Brand<string, 'PathInRepo'>;
10
+ export type PathInRepo = {
11
+ readonly mark: Mark;
12
+ val: string;
13
+ isPrefixOf(other: PathInRepo): boolean;
14
+ /**
15
+ * Returns a new PathInRepo object that points to a subdirectory of this path. Fails if "relativePath" tries to climb
16
+ * up.
17
+ * @param relativePath an addition to this path
18
+ */
19
+ expand(relativePath: string): PathInRepo;
20
+ /**
21
+ * Similr to expand() but allows relative paths that climb up as long as they are still inside the repo
22
+ * @param relativePath an addition to this path
23
+ */
24
+ to(relativePath: string): PathInRepo;
25
+ toJSON(): string;
26
+ toString(): string;
27
+ };
28
+ export declare function PathInRepo(input: string): PathInRepo;
29
+ export {};
@@ -0,0 +1,81 @@
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.RepoRoot = RepoRoot;
37
+ exports.PathInRepo = PathInRepo;
38
+ const misc_1 = require("misc");
39
+ const path = __importStar(require("path"));
40
+ function RepoRoot(input) {
41
+ input = path.normalize(input);
42
+ if (!path.isAbsolute(input)) {
43
+ throw new Error(`Repo root must be absolute (got: ${input})`);
44
+ }
45
+ return {
46
+ resolve: (pathInRepo) => (pathInRepo ? path.join(input, pathInRepo.val) : input),
47
+ unresolve: (absolutePath) => PathInRepo(path.relative(input, absolutePath)),
48
+ toString: () => input,
49
+ toJSON: () => input,
50
+ };
51
+ }
52
+ function PathInRepo(input) {
53
+ const val = norm(input);
54
+ if (val.startsWith('..')) {
55
+ throw new Error(`cannot go up outside of the repo (got: '${val}')`);
56
+ }
57
+ const isPrefixOf = (other) => other.val.startsWith(val);
58
+ return {
59
+ mark: '', // eslint-disable-line @typescript-eslint/consistent-type-assertions
60
+ val,
61
+ isPrefixOf,
62
+ expand: (relativePath) => {
63
+ if (val === '.') {
64
+ return PathInRepo(relativePath);
65
+ }
66
+ const ret = PathInRepo(path.normalize(path.join(val, relativePath)));
67
+ if (!isPrefixOf(ret)) {
68
+ throw new Error(`Cannot expand '${val}' to '${ret}'`);
69
+ }
70
+ return ret;
71
+ },
72
+ to: (relativePath) => {
73
+ const joined = path.normalize(path.join(val, relativePath));
74
+ return PathInRepo(joined);
75
+ },
76
+ toJSON: () => val,
77
+ toString: () => val,
78
+ };
79
+ }
80
+ const norm = (s) => (0, misc_1.threeWaySplit)(path.normalize(s), () => false, c => c === '/').mid;
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsNEJBV0M7QUF3QkQsZ0NBOEJDO0FBcEVELCtCQUFvQztBQUNwQywyQ0FBNEI7QUFFNUIsU0FBZ0IsUUFBUSxDQUFDLEtBQWE7SUFDcEMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLENBQUMsVUFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzdGLFNBQVMsRUFBRSxDQUFDLFlBQW9CLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNuRixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztRQUNyQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztLQUNwQixDQUFBO0FBQ0gsQ0FBQztBQXdCRCxTQUFnQixVQUFVLENBQUMsS0FBYTtJQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFdkIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUNyRSxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUVuRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLEVBQVUsRUFBRSxvRUFBb0U7UUFDdEYsR0FBRztRQUNILFVBQVU7UUFDVixNQUFNLEVBQUUsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDL0IsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ2pDLENBQUM7WUFDRCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixHQUFHLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQTtZQUN2RCxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO1FBQ0QsRUFBRSxFQUFFLENBQUMsWUFBb0IsRUFBRSxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQTtZQUMzRCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzQixDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUc7UUFDakIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUc7S0FDcEIsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQ3pCLElBQUEsb0JBQWEsRUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNqQixHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUNmLENBQUMsR0FBRyxDQUFBIn0=
@@ -0,0 +1 @@
1
+ export * from './core-types';
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./core-types"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE0QiJ9
@@ -0,0 +1 @@
1
+ export * from './logger';
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./logger"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF3QiJ9