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,18 +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 __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
@@ -1 +0,0 @@
1
- export * from './logger';
@@ -1,18 +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 __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
@@ -1,26 +0,0 @@
1
- export type Criticality = 'high' | 'moderate' | 'low';
2
- export interface Logger {
3
- print(message: string, criticality?: Criticality): void;
4
- info(message: string, ...rest: unknown[]): void;
5
- debug(message: string, ...rest: unknown[]): void;
6
- error(message: string, err: unknown, ...rest: unknown[]): void;
7
- }
8
- declare class NopLogger implements Logger {
9
- print(_message: string): void;
10
- info(_message: string, ..._rest: unknown[]): void;
11
- debug(_message: string, ..._rest: unknown[]): void;
12
- error(_message: string, _err: unknown, ..._rest: unknown[]): void;
13
- }
14
- export declare function createNopLogger(): NopLogger;
15
- export declare function createDefaultLogger(logFile: string, pickiness: Criticality, logLevel?: Level, uiStream?: NodeJS.WritableStream): FileLogger;
16
- declare class FileLogger implements Logger {
17
- private readonly logger;
18
- private readonly pickiness;
19
- constructor(logFile: string, pickinessLevel: Criticality, logLevel?: Level, uiStream?: NodeJS.WritableStream);
20
- print(message: string, messageCriticality?: Criticality): void;
21
- info(message: string, ...rest: unknown[]): void;
22
- debug(message: string, ...rest: unknown[]): void;
23
- error(message: string, err: unknown, ...rest: unknown[]): void;
24
- }
25
- type Level = 'error' | 'info' | 'debug';
26
- export {};
@@ -1,152 +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
- 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.createNopLogger = createNopLogger;
40
- exports.createDefaultLogger = createDefaultLogger;
41
- const fs = __importStar(require("fs"));
42
- const logform_1 = require("logform");
43
- const path = __importStar(require("path"));
44
- const safe_stable_stringify_1 = __importDefault(require("safe-stable-stringify"));
45
- const winston = __importStar(require("winston"));
46
- const criticalityLegend = {
47
- high: 0,
48
- moderate: 100,
49
- low: 200,
50
- };
51
- class NopLogger {
52
- print(_message) {
53
- // noop
54
- }
55
- info(_message, ..._rest) {
56
- // noop
57
- }
58
- debug(_message, ..._rest) {
59
- // noop
60
- }
61
- error(_message, _err, ..._rest) {
62
- // noop
63
- }
64
- }
65
- function createNopLogger() {
66
- return new NopLogger();
67
- }
68
- function createDefaultLogger(logFile, pickiness, logLevel, uiStream) {
69
- const stat = fs.statSync(logFile, { throwIfNoEntry: false });
70
- if (stat && stat.size > 0) {
71
- fs.rmSync(logFile, { force: true });
72
- }
73
- return new FileLogger(logFile, pickiness, logLevel, uiStream);
74
- }
75
- class FileLogger {
76
- constructor(logFile, pickinessLevel, logLevel = 'info', uiStream = process.stdout) {
77
- if (!path.isAbsolute(logFile)) {
78
- throw new Error(`logDir must be absolute: ${logFile}`);
79
- }
80
- this.logger = newLogger(logFile, logLevel, uiStream);
81
- this.pickiness = criticalityLegend[pickinessLevel];
82
- }
83
- print(message, messageCriticality = 'moderate') {
84
- const messageLevel = criticalityLegend[messageCriticality];
85
- const doPrint = messageLevel <= this.pickiness;
86
- if (doPrint) {
87
- this.logger.info(message, { ui: true });
88
- }
89
- }
90
- info(message, ...rest) {
91
- this.logger.info(message, ...rest);
92
- }
93
- debug(message, ...rest) {
94
- this.logger.debug(message, ...rest);
95
- }
96
- error(message, err, ...rest) {
97
- this.logger.error(message, err, ...rest, { ui: true });
98
- }
99
- }
100
- const joinTokens = (...tokens) => tokens
101
- .map(t => t?.trim())
102
- .filter(Boolean)
103
- .join(' ');
104
- const finalFormat = logform_1.format.printf(info => {
105
- let stringifiedRest = (0, safe_stable_stringify_1.default)(Object.assign({}, info, {
106
- level: undefined,
107
- message: undefined,
108
- timestamp: undefined,
109
- stack: undefined,
110
- ui: undefined,
111
- }));
112
- if (stringifiedRest === '{}') {
113
- stringifiedRest = '';
114
- }
115
- return joinTokens(info.timestamp, `[${info.level}]`, info.message, stringifiedRest, info.stack);
116
- });
117
- const filterUi = (0, logform_1.format)(info => {
118
- if (!info.ui) {
119
- return false;
120
- }
121
- return info;
122
- });
123
- const formatUi = logform_1.format.printf(info => {
124
- return joinTokens(info.message, info.stack);
125
- });
126
- const levels = {
127
- error: 0,
128
- info: 1,
129
- debug: 2,
130
- };
131
- function newLogger(logFile, level, uiStream) {
132
- return winston.createLogger({
133
- level: 'debug',
134
- levels,
135
- defaultMeta: undefined,
136
- transports: [
137
- // Writes all log entries with level `info` and below to logFile.
138
- new winston.transports.File({
139
- filename: logFile,
140
- level,
141
- format: logform_1.format.combine(logform_1.format.timestamp(), logform_1.format.errors({ stack: true }), finalFormat),
142
- }),
143
- // Writes all logs entries marked as "UI" to the the UI stream (typically, stdout).
144
- new winston.transports.Stream({
145
- stream: uiStream,
146
- level: 'info',
147
- format: logform_1.format.combine(logform_1.format.errors({ stack: true }), filterUi(), formatUi),
148
- }),
149
- ],
150
- });
151
- }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDQSwwQ0FFQztBQUVELGtEQVdDO0FBdERELHVDQUF3QjtBQUN4QixxQ0FBZ0M7QUFDaEMsMkNBQTRCO0FBQzVCLGtGQUFpRDtBQUNqRCxpREFBa0M7QUFFbEMsTUFBTSxpQkFBaUIsR0FBZ0M7SUFDckQsSUFBSSxFQUFFLENBQUM7SUFDUCxRQUFRLEVBQUUsR0FBRztJQUNiLEdBQUcsRUFBRSxHQUFHO0NBQ1QsQ0FBQTtBQVdELE1BQU0sU0FBUztJQUNiLEtBQUssQ0FBQyxRQUFnQjtRQUNwQixPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFnQixFQUFFLEdBQUcsS0FBZ0I7UUFDeEMsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsUUFBZ0IsRUFBRSxHQUFHLEtBQWdCO1FBQ3pDLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQWdCLEVBQUUsSUFBYSxFQUFFLEdBQUcsS0FBZ0I7UUFDeEQsT0FBTztJQUNULENBQUM7Q0FDRjtBQUVELFNBQWdCLGVBQWU7SUFDN0IsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFBO0FBQ3hCLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FDakMsT0FBZSxFQUNmLFNBQXNCLEVBQ3RCLFFBQWdCLEVBQ2hCLFFBQWdDO0lBRWhDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDNUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FB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
@@ -1,7 +0,0 @@
1
- export declare function sortBy<T>(input: readonly T[], key: (item: T) => number): T[];
2
- export declare function sortBy<T>(input: readonly T[], key: (item: T) => string): T[];
3
- export declare function sortBy<T>(input: IterableIterator<T>, key: (item: T) => number): T[];
4
- export declare function sortBy<T>(input: IterableIterator<T>, key: (item: T) => string): T[];
5
- export declare function findDups<T, K extends number | symbol | string>(input: ArrayLike<T> | Iterable<T>, key: (item: T) => K): T[];
6
- export declare function uniqueBy<T, K>(input: ArrayLike<T> | Iterable<T>, key: (item: T) => K): T[];
7
- export declare function groupBy<T, K extends number | symbol | string>(input: ArrayLike<T> | Iterable<T>, key: (item: T) => K): Record<K, T[]>;
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sortBy = sortBy;
4
- exports.findDups = findDups;
5
- exports.uniqueBy = uniqueBy;
6
- exports.groupBy = groupBy;
7
- const maps_1 = require("./maps");
8
- function sortBy(input, key) {
9
- return [...input].sort((a, b) => comp(a, b, key));
10
- }
11
- function comp(a, b, key) {
12
- const ak = key(a);
13
- const bk = key(b);
14
- if (typeof ak === 'string' && typeof bk === 'string') {
15
- return ak.localeCompare(bk);
16
- }
17
- if (typeof ak === 'number' && typeof bk === 'number') {
18
- return ak - bk;
19
- }
20
- throw new Error(`Cannot compare ${ak} and ${bk}`);
21
- }
22
- function findDups(input, key) {
23
- const counts = new Map();
24
- const collidingKeys = new Set();
25
- const pairs = [];
26
- for (const item of Array.from(input)) {
27
- const k = key(item);
28
- pairs.push([item, k]);
29
- const n = (0, maps_1.mapIncrement)(counts, k, 1);
30
- if (n > 1) {
31
- collidingKeys.add(k);
32
- }
33
- }
34
- const ret = [];
35
- for (const [item, k] of pairs) {
36
- if (collidingKeys.has(k)) {
37
- ret.push(item);
38
- }
39
- }
40
- return ret;
41
- }
42
- function uniqueBy(input, key) {
43
- const seen = new Set();
44
- return Array.from(input).filter(item => {
45
- const k = key(item);
46
- if (seen.has(k)) {
47
- return false;
48
- }
49
- seen.add(k);
50
- return true;
51
- });
52
- }
53
- function groupBy(input, key) {
54
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
55
- const ret = {};
56
- for (const item of Array.from(input)) {
57
- const k = key(item);
58
- let arr = ret[k];
59
- if (!arr) {
60
- arr = new Array();
61
- ret[k] = arr;
62
- }
63
- arr.push(item);
64
- }
65
- return ret;
66
- }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FycmF5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLHdCQUVDO0FBaUJELDRCQXdCQztBQUVELDRCQVVDO0FBRUQsMEJBbUJDO0FBbEZELGlDQUFxQztBQU1yQyxTQUFnQixNQUFNLENBQUksS0FBeUMsRUFBRSxHQUFpQztJQUNwRyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ25ELENBQUM7QUFFRCxTQUFTLElBQUksQ0FBK0IsQ0FBSSxFQUFFLENBQUksRUFBRSxHQUFtQjtJQUN6RSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRWpCLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3JELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFBO0lBQ2hCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNuRCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUN0QixLQUFpQyxFQUNqQyxHQUFtQjtJQUVuQixNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFBO0lBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFLLENBQUE7SUFDbEMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQzFCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckIsTUFBTSxDQUFDLEdBQUcsSUFBQSxtQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDVixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFBO0lBQ25CLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM5QixJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFPLEtBQWlDLEVBQUUsR0FBbUI7SUFDbkYsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQTtJQUN6QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoQixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ1gsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxTQUFnQixPQUFPLENBQ3JCLEtBQWlDLEVBQ2pDLEdBQW1CO0lBRW5CLHlFQUF5RTtJQUN6RSxNQUFNLEdBQUcsR0FBbUIsRUFBb0IsQ0FBQTtJQUVoRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBSyxDQUFBO1lBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDZCxDQUFDO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDIn0=
@@ -1,6 +0,0 @@
1
- type CamelizeString<T extends PropertyKey, C extends string = ''> = T extends string ? string extends T ? string : T extends `${infer F}-${infer R}` ? CamelizeString<Capitalize<R>, `${C}${F}`> : `${C}${T}` : T;
2
- export type CamelizeRecord<T> = {
3
- [K in keyof T as CamelizeString<K>]: T[K];
4
- };
5
- export declare function camelizeRecord<T extends Record<string, boolean | string | number | unknown>>(rec: T): CamelizeRecord<T>;
6
- export {};
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.camelizeRecord = camelizeRecord;
4
- function camelizeRecord(rec) {
5
- const ret = {};
6
- for (const k of Object.keys(rec)) {
7
- const parts = k.split('-');
8
- if (parts.length === 1) {
9
- ret[k] = rec[k];
10
- continue;
11
- }
12
- ret[parts.map((p, i) => (i === 0 ? p : p[0].toUpperCase() + p.slice(1))).join('')] = rec[k];
13
- }
14
- return ret; // eslint-disable-line @typescript-eslint/consistent-type-assertions
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZWxpemUtcmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbWVsaXplLXJlY29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLHdDQWdCQztBQWhCRCxTQUFnQixjQUFjLENBQzVCLEdBQU07SUFFTixNQUFNLEdBQUcsR0FBNEIsRUFBRSxDQUFBO0lBRXZDLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDZixTQUFRO1FBQ1YsQ0FBQztRQUVELEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVELE9BQU8sR0FBd0IsQ0FBQSxDQUFDLG9FQUFvRTtBQUN0RyxDQUFDIn0=
@@ -1,4 +0,0 @@
1
- export declare function cleanDirectory(directoryPath: string, deletionFactor: number, triggerCleanupIfByteSizeExceeds: number | 'ALWAYS'): {
2
- size: number;
3
- deleted: number;
4
- };
@@ -1,80 +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.cleanDirectory = cleanDirectory;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const arrays_1 = require("./arrays");
40
- function cleanDirectory(directoryPath, deletionFactor, triggerCleanupIfByteSizeExceeds) {
41
- const size = calculateDirectorySize(directoryPath);
42
- if (triggerCleanupIfByteSizeExceeds !== 'ALWAYS' && size <= triggerCleanupIfByteSizeExceeds) {
43
- return { size, deleted: 0 };
44
- }
45
- const filesDeleted = deleteFiles(directoryPath, deletionFactor);
46
- return { size, deleted: filesDeleted.length };
47
- }
48
- function calculateDirectorySize(directoryPath) {
49
- let ret = 0;
50
- for (const f of fs.readdirSync(directoryPath)) {
51
- const resolved = path.join(directoryPath, f);
52
- const stats = fs.statSync(resolved);
53
- ret += stats.size;
54
- }
55
- return ret;
56
- }
57
- function deleteFiles(directoryPath, deletionFactor) {
58
- let files;
59
- try {
60
- files = fs.readdirSync(directoryPath);
61
- }
62
- catch (e) {
63
- throw new Error(`failed when reading ${directoryPath}: ${e}`);
64
- }
65
- const mapped = files.map(f => ({ f, atime: fs.statSync(path.join(directoryPath, f)).atime.toISOString() }));
66
- const sorted = (0, arrays_1.sortBy)(mapped, at => at.atime);
67
- const numFilesToDelete = Math.min(sorted.length, Math.floor(sorted.length * deletionFactor));
68
- const ret = sorted.slice(0, numFilesToDelete).map(at => at.f);
69
- for (const f of ret) {
70
- const filePath = path.join(directoryPath, f);
71
- try {
72
- fs.unlinkSync(filePath);
73
- }
74
- catch (e) {
75
- throw new Error(`cleanup of ${filePath} failed: ${e}`);
76
- }
77
- }
78
- return ret;
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4tZGlyZWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuLWRpcmVjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBLHdDQVlDO0FBakJELHVDQUF3QjtBQUN4QiwyQ0FBNEI7QUFFNUIscUNBQWlDO0FBRWpDLFNBQWdCLGNBQWMsQ0FDNUIsYUFBcUIsRUFDckIsY0FBc0IsRUFDdEIsK0JBQWtEO0lBRWxELE1BQU0sSUFBSSxHQUFHLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ2xELElBQUksK0JBQStCLEtBQUssUUFBUSxJQUFJLElBQUksSUFBSSwrQkFBK0IsRUFBRSxDQUFDO1FBQzVGLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBQy9ELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxhQUFxQjtJQUNuRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7SUFFWCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM1QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ25DLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFBO0lBQ25CLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxhQUFxQixFQUFFLGNBQXNCO0lBQ2hFLElBQUksS0FBSyxDQUFBO0lBRVQsSUFBSSxDQUFDO1FBQ0gsS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDM0csTUFBTSxNQUFNLEdBQUcsSUFBQSxlQUFNLEVBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTdDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFBO0lBQzVGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRTdELEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFNUMsSUFBSSxDQUFDO1lBQ0gsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN6QixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxRQUFRLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyJ9
@@ -1,106 +0,0 @@
1
- /**
2
- * Checks, at compile time, that a certain situation cannot happen (and fail the build if it can). This is useful for
3
- * checking that all possible cases of a union type are handled.
4
- *
5
- * Typical usage pattern:
6
- *
7
- * type X = 'A' | 'B'
8
- *
9
- * function f(x: X) {
10
- * if (x === 'a') {
11
- * // do something ...
12
- * return
13
- * }
14
- * if (x === 'b') {
15
- * // do something ...
16
- * return
17
- * }
18
- * shouldNeverHappen(x)
19
- * }
20
- *
21
- *
22
- * If we ever change X such that it has a third case (as in `type X = 'A' | 'B' | 'C') we will get a compile error
23
- * unless we add logic to this function (`f()`) to handle it.
24
- *
25
- * @param n a value of type `never`
26
- */
27
- export declare function shouldNeverHappen(n: never): never;
28
- /**
29
- * An always-failing function. If it ever gets called, it will throw an error. It is useful in conditional expressions
30
- * in which one of the branches of the expression is the happy path, and the other branch is a sad path in which no
31
- * value can be computed. Sepcifically, it usually appears as the right-hand-side operand of `??` or `||` expressions.
32
- *
33
- * Typical usage pattern:
34
- *
35
- * const dir: string = process.env['WORKING_DIR'] || failMe('missing env variable "a"')
36
- *
37
- * Essentially, this is a concise alternative to:
38
- *
39
- * const dir = process.env['a']
40
- * if (!dir) {
41
- * throw new Error('missing env variable "a"')
42
- * }
43
- *
44
- * @param hint an optional human-readable string to be placed in the message of the thrown error
45
- */
46
- export declare function failMe(hint?: string): never;
47
- /**
48
- * Evaluates just one of several functions (the `cases` parameter) based on the `selector` value passed in.
49
- * `cases` is a record of zero-argument functions. The function at `cases[selector]` will be evaluated and its return
50
- * value is returned back to the caller.
51
- *
52
- * A compile time error is produced if not all possible values of `selector` are covered by `cases`.
53
- *
54
- * Example:
55
- * function f(op: '+' | '-' | '*', n1: number, n2: number) {
56
- * return switchOn(op, {
57
- * '+': () => n1 + n2,
58
- * '-': () => n1 - n2,
59
- * '*': () => n1 * n2,
60
- * })
61
- * }
62
- *
63
- *
64
- * The following snippet yields a compile-time error:
65
- *
66
- * function f(op: '+' | '-' | '*', n1: number, n2: number) {
67
- * return switchOn(op, {
68
- * '+': () => n1 + n2,
69
- * '-': () => n1 - n2,
70
- * }) // <-- Compiler error here due to missing case ('*')
71
- * }
72
- *
73
- * And so does this:
74
- *
75
- * function f(op: '+' | '-' | '*', n1: number, n2: number) {
76
- * return switchOn(op, {
77
- * '+': () => n1 + n2,
78
- * '-': () => n1 - n2,
79
- * '*': () => n1 - n2,
80
- * '/': () => n1 / n2,
81
- * }) // <-- Compiler error here due to extraneous case ('/')
82
- * }
83
- *
84
- * @param selector
85
- * @param cases
86
- * @returns
87
- */
88
- export declare function switchOn<G, K extends string>(selector: K, cases: Record<K, () => G>): G;
89
- /**
90
- * Safely converts an input of type `unknown` into an Error like object. The return value will contain `message`
91
- * and `stack` properties which will be strings (if a corresponding propertiy of type string exists on the input) or
92
- * undefined (otherwise)
93
- *
94
- * @param err an input of type `unknown`
95
- * @returns an Error like object
96
- */
97
- export declare function errorLike(err: unknown): {
98
- message: string | undefined;
99
- stack: string | undefined;
100
- };
101
- /**
102
- * Generates a two-tuple from the arguments passed in. Useful in situations where the compiler fails to infer that
103
- * `[foo, bar]` is a tuple and treats it like an array. Using `pair(foo, bar)` will make the compiler correctly infer
104
- * the tuple type.
105
- */
106
- export declare function pair<A, B>(a: A, b: B): [A, B];
@@ -1,131 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shouldNeverHappen = shouldNeverHappen;
4
- exports.failMe = failMe;
5
- exports.switchOn = switchOn;
6
- exports.errorLike = errorLike;
7
- exports.pair = pair;
8
- /**
9
- * Checks, at compile time, that a certain situation cannot happen (and fail the build if it can). This is useful for
10
- * checking that all possible cases of a union type are handled.
11
- *
12
- * Typical usage pattern:
13
- *
14
- * type X = 'A' | 'B'
15
- *
16
- * function f(x: X) {
17
- * if (x === 'a') {
18
- * // do something ...
19
- * return
20
- * }
21
- * if (x === 'b') {
22
- * // do something ...
23
- * return
24
- * }
25
- * shouldNeverHappen(x)
26
- * }
27
- *
28
- *
29
- * If we ever change X such that it has a third case (as in `type X = 'A' | 'B' | 'C') we will get a compile error
30
- * unless we add logic to this function (`f()`) to handle it.
31
- *
32
- * @param n a value of type `never`
33
- */
34
- function shouldNeverHappen(n) {
35
- // This following line never gets executed. It is here just to make the compiler happy.
36
- throw new Error(`This should never happen ${n}`);
37
- }
38
- /**
39
- * An always-failing function. If it ever gets called, it will throw an error. It is useful in conditional expressions
40
- * in which one of the branches of the expression is the happy path, and the other branch is a sad path in which no
41
- * value can be computed. Sepcifically, it usually appears as the right-hand-side operand of `??` or `||` expressions.
42
- *
43
- * Typical usage pattern:
44
- *
45
- * const dir: string = process.env['WORKING_DIR'] || failMe('missing env variable "a"')
46
- *
47
- * Essentially, this is a concise alternative to:
48
- *
49
- * const dir = process.env['a']
50
- * if (!dir) {
51
- * throw new Error('missing env variable "a"')
52
- * }
53
- *
54
- * @param hint an optional human-readable string to be placed in the message of the thrown error
55
- */
56
- function failMe(hint) {
57
- if (!hint) {
58
- throw new Error(`This expression must never be evaluated`);
59
- }
60
- throw new Error(`Bad value: ${hint}`);
61
- }
62
- /**
63
- * Evaluates just one of several functions (the `cases` parameter) based on the `selector` value passed in.
64
- * `cases` is a record of zero-argument functions. The function at `cases[selector]` will be evaluated and its return
65
- * value is returned back to the caller.
66
- *
67
- * A compile time error is produced if not all possible values of `selector` are covered by `cases`.
68
- *
69
- * Example:
70
- * function f(op: '+' | '-' | '*', n1: number, n2: number) {
71
- * return switchOn(op, {
72
- * '+': () => n1 + n2,
73
- * '-': () => n1 - n2,
74
- * '*': () => n1 * n2,
75
- * })
76
- * }
77
- *
78
- *
79
- * The following snippet yields a compile-time error:
80
- *
81
- * function f(op: '+' | '-' | '*', n1: number, n2: number) {
82
- * return switchOn(op, {
83
- * '+': () => n1 + n2,
84
- * '-': () => n1 - n2,
85
- * }) // <-- Compiler error here due to missing case ('*')
86
- * }
87
- *
88
- * And so does this:
89
- *
90
- * function f(op: '+' | '-' | '*', n1: number, n2: number) {
91
- * return switchOn(op, {
92
- * '+': () => n1 + n2,
93
- * '-': () => n1 - n2,
94
- * '*': () => n1 - n2,
95
- * '/': () => n1 / n2,
96
- * }) // <-- Compiler error here due to extraneous case ('/')
97
- * }
98
- *
99
- * @param selector
100
- * @param cases
101
- * @returns
102
- */
103
- function switchOn(selector, cases) {
104
- const f = cases[selector];
105
- return f();
106
- }
107
- /**
108
- * Safely converts an input of type `unknown` into an Error like object. The return value will contain `message`
109
- * and `stack` properties which will be strings (if a corresponding propertiy of type string exists on the input) or
110
- * undefined (otherwise)
111
- *
112
- * @param err an input of type `unknown`
113
- * @returns an Error like object
114
- */
115
- function errorLike(err) {
116
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
117
- const { message, stack } = err;
118
- return {
119
- message: typeof message === 'string' ? message : undefined,
120
- stack: typeof stack === 'string' ? stack : undefined,
121
- };
122
- }
123
- /**
124
- * Generates a two-tuple from the arguments passed in. Useful in situations where the compiler fails to infer that
125
- * `[foo, bar]` is a tuple and treats it like an array. Using `pair(foo, bar)` will make the compiler correctly infer
126
- * the tuple type.
127
- */
128
- function pair(a, b) {
129
- return [a, b];
130
- }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMEJBLDhDQUdDO0FBb0JELHdCQU1DO0FBMkNELDRCQUdDO0FBVUQsOEJBT0M7QUFPRCxvQkFFQztBQS9IRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLENBQVE7SUFDeEMsdUZBQXVGO0lBQ3ZGLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUE7QUFDdkMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFzQixRQUFXLEVBQUUsS0FBeUI7SUFDbEYsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3pCLE9BQU8sQ0FBQyxFQUFFLENBQUE7QUFDWixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxHQUFZO0lBQ3BDLHlFQUF5RTtJQUN6RSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQTZDLENBQUE7SUFDeEUsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztRQUMxRCxLQUFLLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDckQsQ0FBQTtBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFPLENBQUksRUFBRSxDQUFJO0lBQ25DLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDZixDQUFDIn0=