@rapidrest/core 1.15.0 → 2.0.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 (53) hide show
  1. package/dist/lib/AlertUtils.js +53 -37
  2. package/dist/lib/AlertUtils.js.map +1 -1
  3. package/dist/lib/ApiError.js +8 -1
  4. package/dist/lib/ApiError.js.map +1 -1
  5. package/dist/lib/CacheUtils.js +23 -0
  6. package/dist/lib/CacheUtils.js.map +1 -0
  7. package/dist/lib/ClassLoader.js +48 -55
  8. package/dist/lib/ClassLoader.js.map +1 -1
  9. package/dist/lib/FileUtils.js +120 -45
  10. package/dist/lib/FileUtils.js.map +1 -1
  11. package/dist/lib/JWTUtils.js +200 -165
  12. package/dist/lib/JWTUtils.js.map +1 -1
  13. package/dist/lib/Logger.js +32 -3
  14. package/dist/lib/Logger.js.map +1 -1
  15. package/dist/lib/MemoryStore.js +8 -6
  16. package/dist/lib/MemoryStore.js.map +1 -1
  17. package/dist/lib/MessagingUtils.js +69 -40
  18. package/dist/lib/MessagingUtils.js.map +1 -1
  19. package/dist/lib/NotificationsUtils.js +26 -8
  20. package/dist/lib/NotificationsUtils.js.map +1 -1
  21. package/dist/lib/OASUtils.js +55 -24
  22. package/dist/lib/OASUtils.js.map +1 -1
  23. package/dist/lib/ObjectFactory.js +144 -67
  24. package/dist/lib/ObjectFactory.js.map +1 -1
  25. package/dist/lib/ObjectUtils.js +18 -5
  26. package/dist/lib/ObjectUtils.js.map +1 -1
  27. package/dist/lib/StringUtils.js +55 -28
  28. package/dist/lib/StringUtils.js.map +1 -1
  29. package/dist/lib/TelemetryUtils.js +30 -4
  30. package/dist/lib/TelemetryUtils.js.map +1 -1
  31. package/dist/lib/UserUtils.js +4 -5
  32. package/dist/lib/UserUtils.js.map +1 -1
  33. package/dist/lib/ValidationUtils.js +10 -3
  34. package/dist/lib/ValidationUtils.js.map +1 -1
  35. package/dist/lib/index.js +1 -0
  36. package/dist/lib/index.js.map +1 -1
  37. package/dist/lib/threads/ThreadPool.js +131 -55
  38. package/dist/lib/threads/ThreadPool.js.map +1 -1
  39. package/dist/types/AlertUtils.d.ts +4 -0
  40. package/dist/types/CacheUtils.d.ts +14 -0
  41. package/dist/types/ClassLoader.d.ts +10 -0
  42. package/dist/types/FileUtils.d.ts +20 -7
  43. package/dist/types/JWTUtils.d.ts +69 -24
  44. package/dist/types/MessagingUtils.d.ts +5 -1
  45. package/dist/types/NotificationsUtils.d.ts +22 -0
  46. package/dist/types/ObjectFactory.d.ts +25 -1
  47. package/dist/types/ObjectUtils.d.ts +4 -0
  48. package/dist/types/StringUtils.d.ts +8 -0
  49. package/dist/types/TelemetryUtils.d.ts +10 -0
  50. package/dist/types/ValidationUtils.d.ts +1 -1
  51. package/dist/types/index.d.ts +1 -0
  52. package/dist/types/threads/ThreadPool.d.ts +30 -1
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TelemetryUtils.js","sourceRoot":"","sources":["../../src/TelemetryUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TelemetryUtils.js","sourceRoot":"","sources":["../../src/TelemetryUtils.ts"],"names":[],"mappings":"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"}
@@ -34,12 +34,10 @@ export class UserUtils {
34
34
  * @param organizationUids The list of universally unique identifiers to search for.
35
35
  */
36
36
  static hasOrganizations(user, organizationUids) {
37
- if (user && user.orgs && Array.isArray(user.orgs) && Array.isArray(organizationUids)) {
37
+ if (user && Array.isArray(organizationUids)) {
38
38
  for (const organizationUid of organizationUids) {
39
- for (const uid of user.orgs) {
40
- if (uid === organizationUid) {
41
- return true;
42
- }
39
+ if (UserUtils.hasOrganization(user, organizationUid)) {
40
+ return true;
43
41
  }
44
42
  }
45
43
  }
@@ -59,6 +57,7 @@ export class UserUtils {
59
57
  const parts = externalId.split(":");
60
58
  if (parts.length === 2 && parts[0] === type) {
61
59
  result = parts[1];
60
+ break;
62
61
  }
63
62
  }
64
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserUtils.js","sourceRoot":"","sources":["../../src/UserUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserUtils.js","sourceRoot":"","sources":["../../src/UserUtils.ts"],"names":[],"mappings":"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"}
@@ -43,10 +43,10 @@ export class ValidationUtils {
43
43
  return val;
44
44
  }
45
45
  /**
46
- * Validates that the provided array is not empty.
46
+ * Validates that the provided array is not empty (nor `null`/`undefined`).
47
47
  */
48
48
  static checkEmpty(val) {
49
- if (val && val.length === 0) {
49
+ if (!val || val.length === 0) {
50
50
  throw new Error("Value cannot be empty.");
51
51
  }
52
52
  return val;
@@ -129,7 +129,14 @@ export class ValidationUtils {
129
129
  * Validates that the provided value is an entity `version` number (e.g. `value > 0`).
130
130
  */
131
131
  static checkVersion(val) {
132
- const num = Number(val);
132
+ // `Number()` coerces several "empty" inputs - `null`, `""`/whitespace-only strings, `[]` - to `0`
133
+ // rather than `NaN`, which would otherwise let missing/malformed input silently through as if it were
134
+ // a legitimate version `0` instead of being rejected below. `undefined` needs no such guard since
135
+ // `Number(undefined)` already evaluates to `NaN`.
136
+ const isEmpty = val === null ||
137
+ (typeof val === "string" && val.trim() === "") ||
138
+ (Array.isArray(val) && val.length === 0);
139
+ const num = isEmpty ? NaN : Number(val);
133
140
  if (isNaN(num)) {
134
141
  throw new Error("Value is not a valid version number.");
135
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../src/ValidationUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../src/ValidationUtils.ts"],"names":[],"mappings":"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"}
package/dist/lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./ApiError.js";
2
2
  export * from "./AlertUtils.js";
3
+ export * from "./CacheUtils.js";
3
4
  export * from "./ClassLoader.js";
4
5
  export * from "./decorators/index.js";
5
6
  export * from "./FileUtils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
@@ -67,6 +67,10 @@ export class ThreadPool {
67
67
  constructor(max = 0, logger) {
68
68
  /** The maximum number of threads allowed. */
69
69
  this.maxThreads = os.cpus().length;
70
+ /** Tracks workers whose "exit" event has already fired, so a dead worker left in `workers` (e.g. exited
71
+ * without `restartOnExit`) is never sent a message via `postMessage()`, which throws synchronously once a
72
+ * worker has exited. */
73
+ this.exitedWorkers = new WeakSet();
70
74
  // The `os.cpus().length` fallback can never actually be selected: `this.maxThreads`'s field initializer
71
75
  // already evaluates to that same (always-truthy on a real OS) value before the constructor body runs, so
72
76
  // it's only falsy when `os.cpus().length` itself is falsy too. Kept as defense in depth.
@@ -78,7 +82,28 @@ export class ThreadPool {
78
82
  this.shutdown = false;
79
83
  this.workers = new Array();
80
84
  }
81
- createWorker(idx, options) {
85
+ /**
86
+ * @param onRestart Invoked with the replacement `Worker` whenever `restartOnExit` recreates the worker for
87
+ * `idx`. Lets `start()` re-attach its readiness-tracking listeners to the replacement - without this, a
88
+ * worker that crashes and is restarted before ever reporting ready would leave `start()`'s returned promise
89
+ * hanging forever, since nothing would be listening for the *replacement's* readiness signal.
90
+ */
91
+ /**
92
+ * Invokes every callback registered for `type` via `on()`, passing `idx` and optional `data`. Centralizes
93
+ * the "look up listeners, no-op if none registered" dispatch idiom shared by every worker event handler in
94
+ * `createWorker()`/`stop()` below, so a future change to how listeners are invoked - or a new message type
95
+ * that needs routing to a given event - only has to be made in one place instead of risking a hand-copied
96
+ * site being missed (as happened with WorkerMessageType.ERROR previously falling through to "message").
97
+ */
98
+ dispatch(type, idx, data) {
99
+ const listeners = this.callbacks.get(type);
100
+ if (listeners) {
101
+ for (const callback of listeners) {
102
+ callback(idx, data);
103
+ }
104
+ }
105
+ }
106
+ createWorker(idx, options, onRestart) {
82
107
  if (!options.entry || !!options.worker) {
83
108
  options.entry = path.join(_dirname, "ThreadWorkerEntry.js");
84
109
  }
@@ -88,31 +113,48 @@ export class ThreadPool {
88
113
  };
89
114
  this.logger?.debug(`Creating thread worker: ${JSON.stringify(options)}`);
90
115
  const worker = new Worker(options.entry, workerOptions);
91
- worker.on("error", (error) => {
92
- const listeners = this.callbacks.get("error");
93
- if (listeners) {
94
- for (const callback of listeners) {
95
- callback(idx, error);
96
- }
116
+ // Dispatches registered "online" callbacks for entry-mode pools, which have no other way to signal
117
+ // readiness at the application level. Guarded to worker-mode's exclusion (`!options.worker`) so a
118
+ // worker-mode pool - which reports readiness via the WorkerMessageType.ONLINE message handled below -
119
+ // doesn't fire "online" callbacks twice for the same worker.
120
+ worker.on("online", () => {
121
+ if (options && !options.worker) {
122
+ this.dispatch("online", idx);
97
123
  }
98
124
  });
125
+ worker.on("error", (error) => {
126
+ this.dispatch("error", idx, error);
127
+ });
99
128
  worker.on("exit", async (code) => {
129
+ // Mark this worker instance as exited regardless of shutdown/restart state so send()/sendAll()/
130
+ // sendTo() never call postMessage() on it - postMessage() throws synchronously once a worker has
131
+ // exited, and a restarted worker gets a brand new Worker instance anyway so marking the old one here
132
+ // is harmless.
133
+ this.exitedWorkers.add(worker);
100
134
  // While stop() is in progress it fires "exit" callbacks itself, using the authoritative exit code
101
135
  // returned by terminate() - which is what triggers this very event. Firing them again here would
102
136
  // invoke every registered "exit" callback twice per worker for a single stop() call.
103
137
  if (!this.shutdown) {
104
- const listeners = this.callbacks.get("exit");
105
- if (listeners) {
106
- for (const callback of listeners) {
107
- callback(idx, code);
108
- }
109
- }
138
+ this.dispatch("exit", idx, code);
110
139
  }
111
140
  // Restart worker thread
112
141
  if (options?.restartOnExit && !this.shutdown) {
113
142
  worker.removeAllListeners();
114
- const newWorker = this.createWorker(idx, options);
115
- this.workers[idx] = newWorker;
143
+ // createWorker() calls `new Worker(...)`, which can throw synchronously (e.g. non-cloneable
144
+ // workerData, thread-limit/OOM errors) - especially likely in a crash-loop scenario, which is
145
+ // exactly when restartOnExit is most active. This listener is itself async, and Node does not
146
+ // attach a rejection handler to an EventEmitter listener's returned promise, so an uncaught throw
147
+ // here would become an unhandled rejection capable of crashing the whole host process. Routing
148
+ // the failure to "error" listeners instead keeps it recoverable, consistent with how every other
149
+ // worker failure in this file is reported.
150
+ try {
151
+ const newWorker = this.createWorker(idx, options, onRestart);
152
+ this.workers[idx] = newWorker;
153
+ onRestart?.(newWorker);
154
+ }
155
+ catch (error) {
156
+ this.dispatch("error", idx, error);
157
+ }
116
158
  }
117
159
  });
118
160
  worker.on("message", (msg) => {
@@ -121,24 +163,17 @@ export class ThreadPool {
121
163
  this.logger?.log(msg.data);
122
164
  break;
123
165
  case WorkerMessageType.ONLINE:
124
- {
125
- const listeners = this.callbacks.get("online");
126
- if (listeners) {
127
- for (const callback of listeners) {
128
- callback(idx);
129
- }
130
- }
131
- }
166
+ this.dispatch("online", idx);
167
+ break;
168
+ case WorkerMessageType.ERROR:
169
+ // A post-startup runtime error reported by the worker (see ThreadWorkerEntry.js's message
170
+ // handler). Must route to "error" listeners like the native worker.on("error", ...) case
171
+ // above, not fall through to "message" - otherwise anything monitoring failures only via
172
+ // pool.on("error", ...) never learns the worker failed.
173
+ this.dispatch("error", idx, msg.data);
132
174
  break;
133
175
  default:
134
- {
135
- const listeners = this.callbacks.get("message");
136
- if (listeners) {
137
- for (const callback of listeners) {
138
- callback(idx, msg);
139
- }
140
- }
141
- }
176
+ this.dispatch("message", idx, msg);
142
177
  break;
143
178
  }
144
179
  });
@@ -162,10 +197,12 @@ export class ThreadPool {
162
197
  return new Promise((resolve, reject) => {
163
198
  let numReady = 0;
164
199
  let settled = false;
165
- if (!options) {
166
- options = {};
167
- }
168
- options.allowTs = "allowTs" in options ? options.allowTs : true;
200
+ // Copied rather than mutated in place - `options` may be the caller's own object (reused across
201
+ // multiple start() calls, or even frozen), and it shouldn't gain an `allowTs` property - or, via
202
+ // createWorker() below, an `entry` property - that the caller never set themselves. Everything past
203
+ // this point operates on `resolvedOptions`, never the original `options` parameter.
204
+ const resolvedOptions = { ...options };
205
+ resolvedOptions.allowTs = "allowTs" in resolvedOptions ? resolvedOptions.allowTs : true;
169
206
  const target = Math.min(num, this.maxThreads);
170
207
  if (target <= 0) {
171
208
  // Nothing to create; resolve immediately instead of hanging forever waiting for readiness signals
@@ -188,6 +225,7 @@ export class ThreadPool {
188
225
  return;
189
226
  }
190
227
  settled = true;
228
+ clearTimeout(timeoutHandle);
191
229
  this.shutdown = true;
192
230
  for (const worker of this.workers) {
193
231
  void worker.terminate();
@@ -195,31 +233,45 @@ export class ThreadPool {
195
233
  this.workers.length = 0;
196
234
  reject(error);
197
235
  };
198
- for (let i = 0; i < target; i++) {
199
- const worker = this.createWorker(i, options);
236
+ // Guard against a worker that never reports readiness and never errors either.
237
+ const timeoutMs = resolvedOptions.startupTimeoutMs ?? ThreadPool.START_TIMEOUT_MS;
238
+ const timeoutHandle = setTimeout(() => {
239
+ failStartup(new Error(`Timed out waiting for worker threads to start after ${timeoutMs}ms.`));
240
+ }, timeoutMs);
241
+ timeoutHandle.unref?.();
242
+ const succeed = () => {
243
+ settled = true;
244
+ clearTimeout(timeoutHandle);
245
+ resolve();
246
+ };
247
+ // Attaches the readiness-tracking listeners used to resolve/reject this start() call to `w`. Defined
248
+ // once per slot and re-invoked (via createWorker's `onRestart` hook below) on any replacement worker
249
+ // created by `restartOnExit` before this promise settles, so a worker that crashes and restarts
250
+ // during startup - before ever reporting ready - still lets start() resolve once the *replacement*
251
+ // becomes ready, instead of hanging forever with no listener tracking it.
252
+ const attachReadyListeners = (w) => {
200
253
  let ready = false;
201
- worker.on("online", () => {
254
+ w.on("online", () => {
202
255
  if (settled) {
203
256
  return;
204
257
  }
205
- if (options && !options.worker) {
258
+ if (!resolvedOptions.worker) {
206
259
  ready = true;
207
260
  numReady++;
208
261
  }
209
262
  // When all workers have finished being created resolve
210
263
  if (numReady >= target) {
211
- settled = true;
212
- resolve();
264
+ succeed();
213
265
  }
214
266
  });
215
267
  // If a worker fails to start before it ever reaches readiness, reject instead of leaving the
216
268
  // returned promise hanging forever.
217
- worker.on("error", (error) => {
269
+ w.on("error", (error) => {
218
270
  if (!ready) {
219
271
  failStartup(error);
220
272
  }
221
273
  });
222
- worker.on("message", (msg) => {
274
+ w.on("message", (msg) => {
223
275
  if (settled) {
224
276
  return;
225
277
  }
@@ -234,10 +286,17 @@ export class ThreadPool {
234
286
  }
235
287
  // When all workers have finished being created resolve
236
288
  if (numReady >= target) {
237
- settled = true;
238
- resolve();
289
+ succeed();
239
290
  }
240
291
  });
292
+ };
293
+ for (let i = 0; i < target; i++) {
294
+ const worker = this.createWorker(i, resolvedOptions, (newWorker) => {
295
+ if (!settled) {
296
+ attachReadyListeners(newWorker);
297
+ }
298
+ });
299
+ attachReadyListeners(worker);
241
300
  this.workers[i] = worker;
242
301
  }
243
302
  this.logger?.debug(`Created ${this.workers.length} worker(s)`);
@@ -257,11 +316,19 @@ export class ThreadPool {
257
316
  // ThreadWorker.stop() to actually finish) before being force-terminated, so in-flight cleanup work
258
317
  // (flushing writes, closing connections, etc.) isn't cut off by an arbitrary fixed delay.
259
318
  await Promise.all(this.workers.map(async (worker, idx) => {
260
- const exitedOnOwn = new Promise((resolve) => worker.once("exit", resolve));
261
- const timedOut = sleep(ThreadPool.STOP_GRACE_PERIOD_MS).then(() => undefined);
262
- let exitCode = await Promise.race([exitedOnOwn, timedOut]);
263
- if (exitCode === undefined) {
264
- exitCode = await worker.terminate();
319
+ let exitCode;
320
+ if (this.exitedWorkers.has(worker)) {
321
+ // Already exited (e.g. crashed with no restartOnExit, before stop() was ever called) - there's
322
+ // nothing to wait for or terminate.
323
+ exitCode = 0;
324
+ }
325
+ else {
326
+ const exitedOnOwn = new Promise((resolve) => worker.once("exit", resolve));
327
+ const timedOut = sleep(ThreadPool.STOP_GRACE_PERIOD_MS).then(() => undefined);
328
+ exitCode = await Promise.race([exitedOnOwn, timedOut]);
329
+ if (exitCode === undefined) {
330
+ exitCode = await worker.terminate();
331
+ }
265
332
  }
266
333
  if (listeners) {
267
334
  for (const callback of listeners) {
@@ -299,7 +366,9 @@ export class ThreadPool {
299
366
  let idx = startIdx;
300
367
  do {
301
368
  const worker = this.workers[idx];
302
- if (worker) {
369
+ // Skip a worker that has already exited (e.g. crashed with no restartOnExit) rather than trying the
370
+ // next one - postMessage() throws synchronously on an exited worker.
371
+ if (worker && !this.exitedWorkers.has(worker)) {
303
372
  worker.postMessage(msg);
304
373
  this.lastThread = idx;
305
374
  return;
@@ -309,12 +378,16 @@ export class ThreadPool {
309
378
  throw new Error("No available workers in the pool.");
310
379
  }
311
380
  /**
312
- * Sends the provided message to all worker threads in the pool.
381
+ * Sends the provided message to all worker threads in the pool. Workers that have already exited (e.g.
382
+ * crashed with no `restartOnExit`) are silently skipped rather than throwing, so one dead worker doesn't
383
+ * prevent delivery to every worker after it in the array.
313
384
  * @param msg The message to send to all workers.
314
385
  */
315
386
  sendAll(msg) {
316
387
  for (const worker of this.workers) {
317
- worker.postMessage(msg);
388
+ if (!this.exitedWorkers.has(worker)) {
389
+ worker.postMessage(msg);
390
+ }
318
391
  }
319
392
  }
320
393
  /**
@@ -323,13 +396,16 @@ export class ThreadPool {
323
396
  * @param msg The message to send the next available worker thread.
324
397
  */
325
398
  sendTo(id, msg) {
326
- if (this.workers[id]) {
327
- this.workers[id].postMessage(msg);
399
+ const worker = this.workers[id];
400
+ if (worker && !this.exitedWorkers.has(worker)) {
401
+ worker.postMessage(msg);
328
402
  }
329
403
  }
330
404
  }
331
405
  /** The maximum amount of time, in milliseconds, `stop()` waits for a worker to exit on its own before force-terminating it. */
332
406
  ThreadPool.STOP_GRACE_PERIOD_MS = 5000;
407
+ /** The default maximum amount of time, in milliseconds, `start()` waits for all workers to report readiness before rejecting. Overridable per-call via `WorkerOptions.startupTimeoutMs`. */
408
+ ThreadPool.START_TIMEOUT_MS = 30000;
333
409
  __decorate([
334
410
  Logger,
335
411
  __metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadPool.js","sourceRoot":"","sources":["../../../src/threads/ThreadPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThreadPool.js","sourceRoot":"","sources":["../../../src/threads/ThreadPool.ts"],"names":[],"mappings":"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"}
@@ -100,6 +100,10 @@ export declare class AlertUtils {
100
100
  * @param options The configuration options to use.
101
101
  */
102
102
  constructor(options: AlertUtilsOptions);
103
+ /** Returns `true` if `status` is a 2XX HTTP success code. Shared by every method below that inspects a
104
+ * response's status, so a future change to what counts as "success" (e.g. also accepting 304) only needs
105
+ * to be made in one place. */
106
+ private static isSuccess;
103
107
  /**
104
108
  * Attempts to close the existing alert with the given identifier.
105
109
  * @param id The unique identifier of the alert to close.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Utility functions for working with bounded in-memory caches.
3
+ *
4
+ * @author Jean-Philippe Steinmetz
5
+ */
6
+ export declare class CacheUtils {
7
+ /**
8
+ * Evicts the oldest inserted entry from `map`, if any. A `Map` preserves insertion order, so this removes
9
+ * whatever entry was `set()` least recently among those still present.
10
+ *
11
+ * @param map The map to evict the oldest entry from.
12
+ */
13
+ static evictOldest<K, V>(map: Map<K, V>): void;
14
+ }
@@ -34,6 +34,10 @@
34
34
  * an ESM-only project you must use the `ts-node/esm` module loader. This can be specified by passing the `--loader` to
35
35
  * node at runtime.
36
36
  *
37
+ * Also, this code intentionally does not perform path-containment and symlink checks during it's load process as the
38
+ * purpose of this utility is never to be exposed to a client-facing API or process. Doing so would never make sense
39
+ * anyway. The lack of containment checks here is to eliminate real performance costs that such containment introduces.
40
+ *
37
41
  * ```
38
42
  * node --loader ts-node/esm <module>
39
43
  * ```
@@ -77,6 +81,12 @@ export declare class ClassLoader {
77
81
  * @returns `true` if a class definition exists for the given fully qualified name, otherwise `false`.
78
82
  */
79
83
  hasClass(fqn: string): any | undefined;
84
+ /**
85
+ * Imports the module at `fullpath` and registers each of its exports as a class under its fully qualified
86
+ * name, shared by both the JavaScript and TypeScript loading branches of `load()` so a future change to
87
+ * how exports are turned into registered classes only needs to be made in one place.
88
+ */
89
+ private registerModule;
80
90
  /**
81
91
  * Loads all modules exports contained in the directory specified. The folder must be a child
82
92
  * directory to the `rootDir` parameter passed in to the constructor.
@@ -4,14 +4,27 @@
4
4
  */
5
5
  export declare class FileUtils {
6
6
  /**
7
- * Throws an error if the resolved `target` path is not contained within the resolved `rootDir` directory. Used
8
- * to prevent path traversal (e.g. `../`) from escaping an intended root when a caller opts in by providing
9
- * `rootDir`.
7
+ * Determines if the provided path exists on the filesystem.
8
+ */
9
+ static exists(target: string): Promise<boolean>;
10
+ /**
11
+ * Throws an error if `target` is not contained within `rootDir`. Used to prevent path traversal (e.g. `../`)
12
+ * from escaping an intended root when a caller opts in by providing `rootDir`.
13
+ *
14
+ * Both `rootDir` and the longest already-existing ancestor of `target` are resolved via `fs.promises.realpath`
15
+ * before the containment check, not just `path.resolve`. Without this, a symlink placed anywhere on disk
16
+ * within `target`'s existing ancestry (including `target` itself) that points outside `rootDir` would pass
17
+ * a purely lexical check, yet `fs.existsSync`/`fs.writeFileSync`/`fs.readFileSync` etc. would transparently
18
+ * follow it - defeating the containment guarantee entirely. Any remaining (not-yet-existing) trailing path
19
+ * segments can't be symlinks yet, so they're safely appended as literal strings.
10
20
  *
11
- * @param {string} rootDir The directory that `target` must be contained within.
12
- * @param {string} target The fully resolved path to verify.
21
+ * @param {string} rootDir The directory that `target` must be contained within. Must exist.
22
+ * @param {string} target The path to verify.
23
+ * @returns The fully resolved (existing-portion realpath'd) path. Callers should use this value - not the
24
+ * original `target` - for the actual filesystem operation, so a symlink swapped in after this check can't
25
+ * reintroduce the gap it closes.
13
26
  */
14
- private static assertContained;
27
+ static assertContained(rootDir: string, target: string): Promise<string>;
15
28
  /**
16
29
  * Attempts to write the provided contents to the file path given. If a file already exists at the destination
17
30
  * an error is thrown unless `overwrite` is set to `true`.
@@ -47,7 +60,7 @@ export declare class FileUtils {
47
60
  * within this directory, otherwise an error is thrown.
48
61
  * @param {boolean} overwrite Set to `true` to overwrite an existing file at the destination. Default is `false`,
49
62
  * matching the behavior of `writeFile`/`copyFile`. Appended after `rootDir` to preserve the existing positional
50
- * call signature.
63
+ * call signature - note this is the opposite order from `copyFile`'s `(overwrite, rootDir)`.
51
64
  */
52
65
  static copyBinaryFile(srcPath: string, outPath: string, variables?: any, rootDir?: string, overwrite?: boolean): Promise<void>;
53
66
  /**