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,200 @@
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.Graph = void 0;
7
+ const p_queue_1 = __importDefault(require("p-queue"));
8
+ const arrays_1 = require("./arrays");
9
+ const constructs_1 = require("./constructs");
10
+ const executor_1 = require("./executor");
11
+ const graph_executor_1 = require("./internal/graph-executor");
12
+ const maps_1 = require("./maps");
13
+ const object_map_1 = require("./object-map");
14
+ class Vertex {
15
+ constructor(id, payload) {
16
+ this.id = id;
17
+ this.payload = payload;
18
+ this.neighbors_ = [];
19
+ this.backNeighbors_ = [];
20
+ }
21
+ addNeighbor(v) {
22
+ this.neighbors_.push(v);
23
+ }
24
+ addBackNeighbor(v) {
25
+ this.backNeighbors_.push(v);
26
+ }
27
+ remove(v) {
28
+ const index = this.neighbors_.indexOf(v);
29
+ if (index >= 0) {
30
+ this.neighbors_.splice(index, 1);
31
+ }
32
+ const index2 = this.backNeighbors_.indexOf(v);
33
+ if (index2 >= 0) {
34
+ this.backNeighbors_.splice(index2, 1);
35
+ }
36
+ }
37
+ get neighbors() {
38
+ return (0, arrays_1.sortBy)(this.neighbors_, v => v.id);
39
+ }
40
+ get backNeighbors() {
41
+ return (0, arrays_1.sortBy)(this.backNeighbors_, v => v.id);
42
+ }
43
+ }
44
+ class Graph {
45
+ constructor(vToId) {
46
+ this.vToId = vToId;
47
+ this.vertexMap = new object_map_1.ObjectMap(vToId);
48
+ }
49
+ // TODO(imaman): cover
50
+ copy() {
51
+ const ret = new Graph(this.vToId);
52
+ const vs = (0, arrays_1.sortBy)(this.vertexMap.values(), v => v.id);
53
+ for (const v of vs) {
54
+ ret.vertex(v.payload);
55
+ for (const u of v.neighbors) {
56
+ ret.edge(v.payload, u.payload);
57
+ }
58
+ }
59
+ return ret;
60
+ }
61
+ edge(from, to) {
62
+ this.vertex(from);
63
+ this.vertex(to);
64
+ const f = this.toVertex(from);
65
+ const t = this.toVertex(to);
66
+ f.addNeighbor(t);
67
+ t.addBackNeighbor(f);
68
+ }
69
+ toVertex(v) {
70
+ return (0, maps_1.hardGet)(this.vertexMap, v);
71
+ }
72
+ vertex(v) {
73
+ const existing = this.vertexMap.get(v);
74
+ if (!existing) {
75
+ const id = this.vToId(v);
76
+ this.vertexMap.set(v, new Vertex(id, v));
77
+ }
78
+ }
79
+ remove(v) {
80
+ const existing = this.vertexMap.get(v);
81
+ if (!existing) {
82
+ throw new Error(`Cannot remove non-existing vertex: <${v}>`);
83
+ }
84
+ this.vertexMap.delete(v);
85
+ for (const n of existing.backNeighbors) {
86
+ n.remove(existing);
87
+ }
88
+ for (const n of existing.neighbors) {
89
+ n.remove(existing);
90
+ }
91
+ }
92
+ vertices() {
93
+ return (0, arrays_1.sortBy)(this.vertexMap.values(), v => v.id).map(v => v.payload);
94
+ }
95
+ outDegree(v) {
96
+ return this.neighborsOf(v).length;
97
+ }
98
+ neighborsOf(v) {
99
+ return this.toVertex(v).neighbors.map(v => v.payload);
100
+ }
101
+ backNeighborsOf(v) {
102
+ return this.toVertex(v).backNeighbors.map(v => v.payload);
103
+ }
104
+ roots() {
105
+ return this.vertices().filter(v => this.toVertex(v).backNeighbors.length === 0);
106
+ }
107
+ traverseFrom(arg, options) {
108
+ const direction = options?.direction ?? 'forward';
109
+ const seen = new Set();
110
+ const visited = [];
111
+ const traverse = (v) => {
112
+ if (seen.has(v.id)) {
113
+ return;
114
+ }
115
+ seen.add(v.id);
116
+ const ns = direction === 'forward'
117
+ ? v.neighbors
118
+ : direction === 'backwards'
119
+ ? v.backNeighbors
120
+ : (0, constructs_1.shouldNeverHappen)(direction);
121
+ for (let i = ns.length - 1; i >= 0; --i) {
122
+ traverse(ns[i]);
123
+ }
124
+ visited.push(v);
125
+ };
126
+ const arr = Array.isArray(arg) ? arg : [arg];
127
+ const startingPoints = (0, arrays_1.sortBy)(arr.map(v => this.toVertex(v)), v => v.id);
128
+ for (const at of startingPoints) {
129
+ traverse(at);
130
+ }
131
+ return visited.map(v => v.payload);
132
+ }
133
+ toJSON() {
134
+ const vs = (0, arrays_1.sortBy)(this.vertexMap.values(), v => v.id);
135
+ const ret = {};
136
+ for (const v of vs) {
137
+ ret[v.id] = v.neighbors.map(n => n.id);
138
+ }
139
+ return ret;
140
+ }
141
+ toString() {
142
+ const vs = (0, arrays_1.sortBy)(this.vertexMap.values(), v => v.id);
143
+ if (vs.length === 0) {
144
+ return '<EMPTY>';
145
+ }
146
+ return vs.map(v => `${v.id} -> ${v.neighbors.map(n => n.id).join(', ')}`.trim()).join('\n');
147
+ }
148
+ static fromJSON(json) {
149
+ const ret = new Graph(x => x);
150
+ for (const [v, neighbors] of Object.entries(json)) {
151
+ ret.vertex(v);
152
+ for (const n of neighbors) {
153
+ ret.edge(v, n);
154
+ }
155
+ }
156
+ return ret;
157
+ }
158
+ isCyclic() {
159
+ const vs = this.vertices().map(v => this.toVertex(v));
160
+ // TODO(imaman): use a proper impl. of LIFO (and also introduce a FIFO arrays.ts)
161
+ const lifo = [];
162
+ const map = new Map();
163
+ for (const v of vs) {
164
+ const deg = v.neighbors.length;
165
+ map.set(v.id, deg);
166
+ if (deg === 0) {
167
+ lifo.push(v);
168
+ }
169
+ }
170
+ const seen = new Set();
171
+ while (true) {
172
+ const v = lifo.pop();
173
+ if (!v) {
174
+ break;
175
+ }
176
+ if (seen.has(v.id)) {
177
+ continue;
178
+ }
179
+ seen.add(v.id);
180
+ for (const n of v.backNeighbors) {
181
+ const deg = (0, maps_1.mapIncrement)(map, n.id, -1);
182
+ if (deg === 0) {
183
+ lifo.push(n);
184
+ }
185
+ }
186
+ }
187
+ return seen.size !== vs.length;
188
+ }
189
+ async execute(concurrency, workToDo, batchScheduler) {
190
+ const queue = new p_queue_1.default({ concurrency });
191
+ const executor = new executor_1.Executor(queue, workToDo);
192
+ const ge = new graph_executor_1.GraphExecutor(this, executor, batchScheduler ?? (() => undefined));
193
+ await ge.execute();
194
+ }
195
+ makeVertexMap() {
196
+ return new object_map_1.ObjectMap(this.vToId);
197
+ }
198
+ }
199
+ exports.Graph = Graph;
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0RBQTRCO0FBRTVCLHFDQUFpQztBQUNqQyw2Q0FBZ0Q7QUFDaEQseUNBQXFDO0FBQ3JDLDhEQUF5RDtBQUN6RCxpQ0FBOEM7QUFDOUMsNkNBQXdDO0FBTXhDLE1BQU0sTUFBTTtJQUdWLFlBQXFCLEVBQVUsRUFBVyxPQUFVO1FBQS9CLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBVyxZQUFPLEdBQVAsT0FBTyxDQUFHO1FBRm5DLGVBQVUsR0FBZ0IsRUFBRSxDQUFBO1FBQzVCLG1CQUFjLEdBQWdCLEVBQUUsQ0FBQTtJQUNNLENBQUM7SUFFeEQsV0FBVyxDQUFDLENBQVk7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFZO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBWTtRQUNqQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNsQyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDN0MsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lB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
@@ -0,0 +1,21 @@
1
+ import { Int } from '.';
2
+ import { Key, StorageClient } from './storage-client';
3
+ export declare class InMemoryStorageClient implements StorageClient {
4
+ private readonly sizeLimitInBytes;
5
+ private byteCount_;
6
+ constructor(sizeLimitInBytes?: Int);
7
+ private readonly store;
8
+ putObject(key: Key, content: string | Buffer): Promise<void>;
9
+ private putObjectImpl;
10
+ putContentAddressable(content: string | Buffer): Promise<string>;
11
+ getContentAddressable(hash: string): Promise<Buffer>;
12
+ get byteCount(): Int;
13
+ getObject(key: Key): Promise<string>;
14
+ getObject(key: Key, type: 'string'): Promise<string>;
15
+ getObject(key: Key, type: 'buffer'): Promise<Buffer>;
16
+ private getObjectImpl;
17
+ objectExists(key: Key): Promise<boolean>;
18
+ private keyToString;
19
+ toJSON(): [Key, string][];
20
+ load(u: unknown): void;
21
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryStorageClient = void 0;
4
+ const _1 = require(".");
5
+ const constructs_1 = require("./constructs");
6
+ const misc_1 = require("./misc");
7
+ class InMemoryStorageClient {
8
+ constructor(sizeLimitInBytes = (0, _1.Int)(-1)) {
9
+ this.sizeLimitInBytes = sizeLimitInBytes;
10
+ this.byteCount_ = (0, _1.Int)(0);
11
+ this.store = new Map();
12
+ }
13
+ async putObject(key, content) {
14
+ this.putObjectImpl(this.keyToString(key), content);
15
+ }
16
+ putObjectImpl(s, content) {
17
+ const existing = Buffer.from(this.store.get(s) ?? '', 'base64');
18
+ const bufferToStore = Buffer.from(content).toString('base64');
19
+ const newCount = this.byteCount_ + bufferToStore.length - existing.length;
20
+ if (this.sizeLimitInBytes >= 0 && newCount > this.sizeLimitInBytes) {
21
+ throw new Error(`size limit (${this.sizeLimitInBytes} bytes) will be exceeded.`);
22
+ }
23
+ this.store.set(s, bufferToStore);
24
+ this.byteCount_ = (0, _1.Int)(newCount);
25
+ }
26
+ async putContentAddressable(content) {
27
+ const ret = (0, misc_1.computeHash)(content);
28
+ const p = `cas/${ret}`;
29
+ this.putObjectImpl(p, content);
30
+ return ret;
31
+ }
32
+ async getContentAddressable(hash) {
33
+ return await this.getObjectImpl(`cas/${hash}`);
34
+ }
35
+ get byteCount() {
36
+ return this.byteCount_;
37
+ }
38
+ async getObject(key, type = 'string') {
39
+ const buf = await this.getObjectImpl(this.keyToString(key));
40
+ return type === 'string' ? buf.toString('utf-8') : type === 'buffer' ? buf : (0, constructs_1.shouldNeverHappen)(type);
41
+ }
42
+ async getObjectImpl(p) {
43
+ const encoded = this.store.get(p);
44
+ if (encoded === undefined) {
45
+ throw new Error(`No object with key ${JSON.stringify(p)}`);
46
+ }
47
+ return Buffer.from(encoded, 'base64');
48
+ }
49
+ async objectExists(key) {
50
+ return this.store.has(this.keyToString(key));
51
+ }
52
+ keyToString(key) {
53
+ return `std/${(0, misc_1.computeObjectHash)({ key })}`;
54
+ }
55
+ toJSON() {
56
+ return [...this.store];
57
+ }
58
+ load(u) {
59
+ if (!Array.isArray(u)) {
60
+ throw new Error(`not an array`);
61
+ }
62
+ u.forEach((at, i) => {
63
+ if (!Array.isArray(at)) {
64
+ throw new Error(`entry ${i} is not a pair (got: ${typeof at})`);
65
+ }
66
+ if (at.length !== 2) {
67
+ throw new Error(`entry ${i} is not a pair (length: ${at.length})`);
68
+ }
69
+ const strings = at.map(x => typeof x === 'string' ? x : (0, constructs_1.failMe)(`expected a pair of strings but found a ${typeof x} at pair ${i}`));
70
+ this.putObjectImpl(strings[0], Buffer.from(strings[1], 'base64'));
71
+ });
72
+ }
73
+ }
74
+ exports.InMemoryStorageClient = InMemoryStorageClient;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbWVtb3J5LXN0b3JhZ2UtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luLW1lbW9yeS1zdG9yYWdlLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3QkFBdUI7QUFDdkIsNkNBQXdEO0FBQ3hELGlDQUF1RDtBQUd2RCxNQUFhLHFCQUFxQjtJQUVoQyxZQUE2QixtQkFBd0IsSUFBQSxNQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFBL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFlO1FBRHBELGVBQVUsR0FBUSxJQUFBLE1BQUcsRUFBQyxDQUFDLENBQUMsQ0FBQTtRQUdmLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFBO0lBRmdCLENBQUM7SUFJaEUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFRLEVBQUUsT0FBd0I7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFTyxhQUFhLENBQUMsQ0FBUyxFQUFFLE9BQXdCO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRS9ELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFBO1FBQ3pFLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkUsTUFBTSxJQUFJ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
@@ -0,0 +1,20 @@
1
+ export * from './arrays';
2
+ export * from './camelize-record';
3
+ export * from './constructs';
4
+ export * from './directory-scanner';
5
+ export * from './executor';
6
+ export * from './file-system-storage-client';
7
+ export * from './folderify';
8
+ export * from './graph';
9
+ export * from './in-memory-storage-client';
10
+ export * from './int';
11
+ export * from './maps';
12
+ export * from './misc';
13
+ export * from './object-map';
14
+ export * from './promises';
15
+ export * from './records';
16
+ export * from './slurp-dir';
17
+ export * from './storage-client';
18
+ export * from './stream-to-buffer';
19
+ export * from './strings';
20
+ export * from './typed-publisher';
@@ -0,0 +1,37 @@
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("./arrays"), exports);
18
+ __exportStar(require("./camelize-record"), exports);
19
+ __exportStar(require("./constructs"), exports);
20
+ __exportStar(require("./directory-scanner"), exports);
21
+ __exportStar(require("./executor"), exports);
22
+ __exportStar(require("./file-system-storage-client"), exports);
23
+ __exportStar(require("./folderify"), exports);
24
+ __exportStar(require("./graph"), exports);
25
+ __exportStar(require("./in-memory-storage-client"), exports);
26
+ __exportStar(require("./int"), exports);
27
+ __exportStar(require("./maps"), exports);
28
+ __exportStar(require("./misc"), exports);
29
+ __exportStar(require("./object-map"), exports);
30
+ __exportStar(require("./promises"), exports);
31
+ __exportStar(require("./records"), exports);
32
+ __exportStar(require("./slurp-dir"), exports);
33
+ __exportStar(require("./storage-client"), exports);
34
+ __exportStar(require("./stream-to-buffer"), exports);
35
+ __exportStar(require("./strings"), exports);
36
+ __exportStar(require("./typed-publisher"), exports);
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF3QjtBQUN4QixvREFBaUM7QUFDakMsK0NBQTRCO0FBQzVCLHNEQUFtQztBQUNuQyw2Q0FBMEI7QUFDMUIsK0RBQTRDO0FBQzVDLDhDQUEyQjtBQUMzQiwwQ0FBdUI7QUFDdkIsNkRBQTBDO0FBQzFDLHdDQUFxQjtBQUNyQix5Q0FBc0I7QUFDdEIseUNBQXNCO0FBQ3RCLCtDQUE0QjtBQUM1Qiw2Q0FBMEI7QUFDMUIsNENBQXlCO0FBQ3pCLDhDQUEyQjtBQUMzQixtREFBZ0M7QUFDaEMscURBQWtDO0FBQ2xDLDRDQUF5QjtBQUN6QixvREFBaUMifQ==
@@ -0,0 +1,10 @@
1
+ import { Brand } from 'brand';
2
+ export type Int = Brand<number, 'Int'>;
3
+ declare class IntUtils {
4
+ parse(s: string): Int;
5
+ product(lhs: Int, rhs: number): Int;
6
+ sum(lhs: Int, rhs: number): Int;
7
+ }
8
+ export declare function Int(): IntUtils;
9
+ export declare function Int(value: number): Int;
10
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Int = Int;
4
+ class IntUtils {
5
+ parse(s) {
6
+ return intify(s);
7
+ }
8
+ product(lhs, rhs) {
9
+ return intify(lhs * Int(rhs));
10
+ }
11
+ sum(lhs, rhs) {
12
+ return intify(lhs + Int(rhs));
13
+ }
14
+ }
15
+ function Int(value) {
16
+ if (value === undefined) {
17
+ return new IntUtils();
18
+ }
19
+ return intify(value);
20
+ }
21
+ function intify(input) {
22
+ const ret = Number(input);
23
+ if (Number.isInteger(ret)) {
24
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
25
+ return ret;
26
+ }
27
+ throw new Error(`<${input}> is not an integer`);
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1CQSxrQkFNQztBQXJCRCxNQUFNLFFBQVE7SUFDWixLQUFLLENBQUMsQ0FBUztRQUNiLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBUSxFQUFFLEdBQVc7UUFDM0IsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBUSxFQUFFLEdBQVc7UUFDdkIsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7Q0FDRjtBQUlELFNBQWdCLEdBQUcsQ0FBQyxLQUFjO0lBQ2hDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdEIsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLEtBQXNCO0lBQ3BDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQix5RUFBeUU7UUFDekUsT0FBTyxHQUFVLENBQUE7SUFDbkIsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLENBQUE7QUFDakQsQ0FBQyJ9
@@ -0,0 +1,15 @@
1
+ import { Executor } from '../executor';
2
+ import { BatchScheduler, Graph } from '../graph';
3
+ export declare class GraphExecutor<V> {
4
+ private readonly graph;
5
+ private readonly executor;
6
+ private readonly batchScheduler;
7
+ private readonly map;
8
+ private numLeft;
9
+ private started;
10
+ constructor(graph: Graph<V>, executor: Executor<V>, batchScheduler: BatchScheduler<V>);
11
+ private start;
12
+ private scheduleBatch;
13
+ private vertexExecuted;
14
+ execute(): Promise<void>;
15
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphExecutor = void 0;
4
+ const maps_1 = require("../maps");
5
+ class GraphExecutor {
6
+ constructor(graph, executor, batchScheduler) {
7
+ this.graph = graph;
8
+ this.executor = executor;
9
+ this.batchScheduler = batchScheduler;
10
+ this.started = false;
11
+ if (graph.isCyclic()) {
12
+ throw new Error(`Cannot execute a cyclic graph`);
13
+ }
14
+ this.numLeft = graph.vertices().length;
15
+ this.map = graph.makeVertexMap();
16
+ }
17
+ start() {
18
+ if (this.started) {
19
+ throw new Error(`A GraphExecutor object can only be started once`);
20
+ }
21
+ this.started = true;
22
+ const initialBatch = [];
23
+ for (const v of this.graph.vertices()) {
24
+ const count = this.graph.neighborsOf(v).length;
25
+ this.map.set(v, count);
26
+ if (count === 0) {
27
+ initialBatch.push(v);
28
+ }
29
+ }
30
+ this.executor.subscribe(({ lastSettled }) => {
31
+ if (this.map.has(lastSettled)) {
32
+ this.vertexExecuted(lastSettled);
33
+ }
34
+ });
35
+ this.scheduleBatch(initialBatch);
36
+ }
37
+ scheduleBatch(batch) {
38
+ const subGraph = this.batchScheduler(batch);
39
+ if (!subGraph) {
40
+ for (const v of batch) {
41
+ this.executor.schedule(v);
42
+ }
43
+ return;
44
+ }
45
+ if (subGraph.isCyclic()) {
46
+ throw new Error(`batch scheduler returned a cyclic graph`);
47
+ }
48
+ const set = subGraph.makeVertexMap();
49
+ for (const v of batch) {
50
+ set.set(v, {});
51
+ }
52
+ const subVertices = subGraph.vertices();
53
+ const outOfBatch = subVertices.filter(v => !set.has(v));
54
+ if (outOfBatch.length > 0) {
55
+ throw new Error(`batch scheduler returned out-of-batch vertices: ${outOfBatch.join(', ')}`);
56
+ }
57
+ if (subVertices.length !== batch.length) {
58
+ throw new Error(`batch scheduler returned a bad grap: number of vertices is ${subVertices.length} (but it should be ${batch.length})`);
59
+ }
60
+ const subExecutor = new GraphExecutor(subGraph, this.executor, () => undefined);
61
+ subExecutor.start();
62
+ }
63
+ vertexExecuted(v) {
64
+ const nextBatch = [];
65
+ for (const n of this.graph.backNeighborsOf(v)) {
66
+ const count = (0, maps_1.mapIncrement)(this.map, n, -1);
67
+ if (count === 0) {
68
+ nextBatch.push(n);
69
+ }
70
+ }
71
+ this.scheduleBatch(nextBatch);
72
+ }
73
+ async execute() {
74
+ const ret = new Promise((resolve, reject) => {
75
+ this.executor.subscribe(({ error }) => {
76
+ --this.numLeft;
77
+ if (this.numLeft > 0) {
78
+ return;
79
+ }
80
+ if (error) {
81
+ reject(error);
82
+ }
83
+ else {
84
+ resolve();
85
+ }
86
+ });
87
+ this.start();
88
+ });
89
+ return ret;
90
+ }
91
+ }
92
+ exports.GraphExecutor = GraphExecutor;
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvZ3JhcGgtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0NBQXNDO0FBRXRDLE1BQWEsYUFBYTtJQUt4QixZQUNtQixLQUFlLEVBQ2YsUUFBcUIsRUFDckIsY0FBaUM7UUFGakMsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBTDVDLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFPckIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUE7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQTtRQUN0QyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQVUsQ0FBQTtJQUMxQyxDQUFDO0lBRU8sS0FBSztRQUNYLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQTtRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsTUFBTSxZQUFZLEdBQVEsRUFBRSxDQUFBO1FBRTVCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtZQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDdEIs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
@@ -0,0 +1,29 @@
1
+ interface MapLike<K, V> {
2
+ get(k: K): V | undefined;
3
+ set(k: K, v: V): void;
4
+ }
5
+ /**
6
+ * Returns a value from a map, or throws an error if not found.
7
+ * @param map the map to fetch from
8
+ * @param key a key to look up
9
+ * @returns the value assoicated with `key` in `map`.
10
+ */
11
+ export declare function hardGet<K, V>(map: MapLike<K, V>, key: K): V;
12
+ /**
13
+ * Increment the value associated with `key` in `map` by `inc`.
14
+ * @param map a map to increment one of its values
15
+ * @param key the key to increment
16
+ * @param inc the amount to increment by
17
+ * @returns the incremented value
18
+ */
19
+ export declare function mapIncrement<K>(map: MapLike<K, number>, key: K, inc: number): number;
20
+ /**
21
+ * Returns the value with `key` in `map`. If not found, set it to the value returned by the given supplier function
22
+ * and returns it.
23
+ * @param map a map to get a value from
24
+ * @param key the key to get
25
+ * @param supplier a zero-arguments callback to provide a value if `key` is not found in `map`
26
+ * @returns the value associated with `key` in `map`
27
+ */
28
+ export declare function assigningGet<K, V>(map: MapLike<K, V>, key: K, supplier: () => V): V;
29
+ export {};
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hardGet = hardGet;
4
+ exports.mapIncrement = mapIncrement;
5
+ exports.assigningGet = assigningGet;
6
+ /**
7
+ * Returns a value from a map, or throws an error if not found.
8
+ * @param map the map to fetch from
9
+ * @param key a key to look up
10
+ * @returns the value assoicated with `key` in `map`.
11
+ */
12
+ function hardGet(map, key) {
13
+ const ret = map.get(key);
14
+ if (ret === undefined) {
15
+ throw new Error(`Could not find <${key}> in the given map`);
16
+ }
17
+ return ret;
18
+ }
19
+ /**
20
+ * Increment the value associated with `key` in `map` by `inc`.
21
+ * @param map a map to increment one of its values
22
+ * @param key the key to increment
23
+ * @param inc the amount to increment by
24
+ * @returns the incremented value
25
+ */
26
+ function mapIncrement(map, key, inc) {
27
+ const ret = assigningGet(map, key, () => 0) + inc;
28
+ map.set(key, ret);
29
+ return ret;
30
+ }
31
+ /**
32
+ * Returns the value with `key` in `map`. If not found, set it to the value returned by the given supplier function
33
+ * and returns it.
34
+ * @param map a map to get a value from
35
+ * @param key the key to get
36
+ * @param supplier a zero-arguments callback to provide a value if `key` is not found in `map`
37
+ * @returns the value associated with `key` in `map`
38
+ */
39
+ function assigningGet(map, key, supplier) {
40
+ let v = map.get(key);
41
+ if (v === undefined) {
42
+ v = supplier();
43
+ map.set(key, v);
44
+ }
45
+ return v;
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBV0EsMEJBTUM7QUFTRCxvQ0FJQztBQVVELG9DQU9DO0FBMUNEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFPLEdBQWtCLEVBQUUsR0FBTTtJQUN0RCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLEdBQUcsb0JBQW9CLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsWUFBWSxDQUFJLEdBQXVCLEVBQUUsR0FBTSxFQUFFLEdBQVc7SUFDMUUsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ2pELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ2pCLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixZQUFZLENBQU8sR0FBa0IsRUFBRSxHQUFNLEVBQUUsUUFBaUI7SUFDOUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNwQixJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNwQixDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUE7UUFDZCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFDIn0=
@@ -0,0 +1,23 @@
1
+ export type Jsonable = string | number | boolean | null | readonly Jsonable[] | {
2
+ readonly [key: string]: Jsonable;
3
+ };
4
+ export declare function computeObjectHash(input: Record<string, Jsonable>): string;
5
+ /**
6
+ *
7
+ * @param input buffer or string to hash
8
+ * @returns a hash, in "hex" encoding.
9
+ */
10
+ export declare function computeHash(input: Buffer | string, algo?: 'sha224' | 'sha256'): string;
11
+ /**
12
+ * Represents an event that should happen at some point in the future.
13
+ */
14
+ export declare class Timeout {
15
+ private readonly promise;
16
+ constructor(promise: Promise<void>);
17
+ /**
18
+ * Returns a promise that is resvoled when the timeout expires.
19
+ */
20
+ hasPassed(): Promise<void>;
21
+ }
22
+ export declare function aTimeoutOf(ms: number): Timeout;
23
+ export declare function dumpFile(inputPath: string, output: NodeJS.WritableStream): Promise<void>;