@rapidrest/core 1.13.0 → 1.15.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.
- package/dist/lib/AlertUtils.js +18 -19
- package/dist/lib/AlertUtils.js.map +1 -1
- package/dist/lib/ClassLoader.js +11 -0
- package/dist/lib/ClassLoader.js.map +1 -1
- package/dist/lib/FileUtils.js +19 -21
- package/dist/lib/FileUtils.js.map +1 -1
- package/dist/lib/JWTUtils.js +112 -42
- package/dist/lib/JWTUtils.js.map +1 -1
- package/dist/lib/Logger.js +7 -4
- package/dist/lib/Logger.js.map +1 -1
- package/dist/lib/MessagingUtils.js +8 -1
- package/dist/lib/MessagingUtils.js.map +1 -1
- package/dist/lib/NotificationsUtils.js +37 -3
- package/dist/lib/NotificationsUtils.js.map +1 -1
- package/dist/lib/OASUtils.js +22 -4
- package/dist/lib/OASUtils.js.map +1 -1
- package/dist/lib/ObjectFactory.js +27 -16
- package/dist/lib/ObjectFactory.js.map +1 -1
- package/dist/lib/ObjectUtils.js +34 -6
- package/dist/lib/ObjectUtils.js.map +1 -1
- package/dist/lib/StringUtils.js +11 -4
- package/dist/lib/StringUtils.js.map +1 -1
- package/dist/lib/TelemetryUtils.js +13 -3
- package/dist/lib/TelemetryUtils.js.map +1 -1
- package/dist/lib/UserUtils.js +1 -1
- package/dist/lib/UserUtils.js.map +1 -1
- package/dist/lib/ValidationUtils.js +6 -1
- package/dist/lib/ValidationUtils.js.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/threads/ThreadPool.js +77 -13
- package/dist/lib/threads/ThreadPool.js.map +1 -1
- package/dist/types/FileUtils.d.ts +4 -1
- package/dist/types/JWTUtils.d.ts +27 -2
- package/dist/types/MessagingUtils.d.ts +2 -0
- package/dist/types/NotificationsUtils.d.ts +8 -0
- package/dist/types/ObjectUtils.d.ts +10 -0
- package/dist/types/TelemetryUtils.d.ts +9 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/threads/ThreadPool.d.ts +4 -1
- package/package.json +1 -1
|
@@ -82,7 +82,9 @@ export class ValidationUtils {
|
|
|
82
82
|
* Validates that the provided object is not null or empty.
|
|
83
83
|
*/
|
|
84
84
|
static checkNull(val) {
|
|
85
|
-
|
|
85
|
+
// `0` is a valid, non-null value (matching `ObjectUtils.validate`'s own nullable convention), so numbers
|
|
86
|
+
// are excluded from the falsy check alongside booleans.
|
|
87
|
+
if (typeof val !== "boolean" && typeof val !== "number" && !val) {
|
|
86
88
|
throw new Error("Value cannot be null.");
|
|
87
89
|
}
|
|
88
90
|
return val;
|
|
@@ -128,6 +130,9 @@ export class ValidationUtils {
|
|
|
128
130
|
*/
|
|
129
131
|
static checkVersion(val) {
|
|
130
132
|
const num = Number(val);
|
|
133
|
+
if (isNaN(num)) {
|
|
134
|
+
throw new Error("Value is not a valid version number.");
|
|
135
|
+
}
|
|
131
136
|
return Math.max(num, 0);
|
|
132
137
|
}
|
|
133
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../src/ValidationUtils.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,SAAS,MAAM,WAAW,CAAC;AAOlC;;GAEG;AACH,MAAM,OAAO,eAAe;IACxB;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,GAAQ,EAAE,IAAiB;QAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAW;QAC/B,8FAA8F;QAC9F,8FAA8F;QAC9F,2FAA2F;QAC3F,oDAAoD;QACpD,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAU,CAAC,GAAW;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAU,CAAC,GAAe;QACpC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,OAAO,CAAC,GAAW;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAW;QAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAW;QAC/B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,GAAQ;QAC5B,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ValidationUtils.js","sourceRoot":"","sources":["../../src/ValidationUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export * from "./JWTUtils.js";
|
|
|
7
7
|
export * from "./Logger.js";
|
|
8
8
|
export * from "./MemoryStore.js";
|
|
9
9
|
export * from "./MessagingUtils.js";
|
|
10
|
+
export * from "./NotificationsUtils.js";
|
|
10
11
|
export * from "./ObjectFactory.js";
|
|
11
12
|
export * from "./ObjectUtils.js";
|
|
12
13
|
export * from "./OASUtils.js";
|
package/dist/lib/index.js.map
CHANGED
|
@@ -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,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,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"}
|
|
@@ -152,34 +152,89 @@ export class ThreadPool {
|
|
|
152
152
|
*/
|
|
153
153
|
start(options, num = this.max) {
|
|
154
154
|
this.shutdown = false;
|
|
155
|
+
// Terminate any workers left over from a previous start() call so they aren't leaked (their thread and
|
|
156
|
+
// listeners would otherwise become unreachable once `this.workers[i]` is overwritten below).
|
|
157
|
+
for (const worker of this.workers) {
|
|
158
|
+
worker.removeAllListeners();
|
|
159
|
+
void worker.terminate();
|
|
160
|
+
}
|
|
161
|
+
this.workers.length = 0;
|
|
155
162
|
return new Promise((resolve, reject) => {
|
|
156
163
|
let numReady = 0;
|
|
164
|
+
let settled = false;
|
|
157
165
|
if (!options) {
|
|
158
166
|
options = {};
|
|
159
167
|
}
|
|
160
168
|
options.allowTs = "allowTs" in options ? options.allowTs : true;
|
|
161
|
-
|
|
169
|
+
const target = Math.min(num, this.maxThreads);
|
|
170
|
+
if (target <= 0) {
|
|
171
|
+
// Nothing to create; resolve immediately instead of hanging forever waiting for readiness signals
|
|
172
|
+
// that will never arrive.
|
|
173
|
+
this.logger?.debug("No worker threads to create.");
|
|
174
|
+
resolve();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// If any worker fails to start, terminate every worker created during this start() call (the
|
|
178
|
+
// failed one and any siblings that succeeded) before rejecting. Without this, a failed start()
|
|
179
|
+
// leaks running worker threads that the caller has no reference to, since the returned promise
|
|
180
|
+
// is the only thing that told them startup failed - they have no reason to call stop(). `shutdown`
|
|
181
|
+
// is set first (mirroring stop()) so createWorker()'s persistent "exit" handler treats this as a
|
|
182
|
+
// controlled teardown rather than a crash to restart via `restartOnExit`. Listeners are
|
|
183
|
+
// deliberately left attached (unlike the leftover-worker cleanup above) rather than calling
|
|
184
|
+
// `removeAllListeners()`: a worker mid-teardown that still fires a genuine "error" event with no
|
|
185
|
+
// listener left on it would make Node throw and crash the whole process.
|
|
186
|
+
const failStartup = (error) => {
|
|
187
|
+
if (settled) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
settled = true;
|
|
191
|
+
this.shutdown = true;
|
|
192
|
+
for (const worker of this.workers) {
|
|
193
|
+
void worker.terminate();
|
|
194
|
+
}
|
|
195
|
+
this.workers.length = 0;
|
|
196
|
+
reject(error);
|
|
197
|
+
};
|
|
198
|
+
for (let i = 0; i < target; i++) {
|
|
162
199
|
const worker = this.createWorker(i, options);
|
|
200
|
+
let ready = false;
|
|
163
201
|
worker.on("online", () => {
|
|
202
|
+
if (settled) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
164
205
|
if (options && !options.worker) {
|
|
206
|
+
ready = true;
|
|
165
207
|
numReady++;
|
|
166
208
|
}
|
|
167
209
|
// When all workers have finished being created resolve
|
|
168
|
-
if (numReady >=
|
|
210
|
+
if (numReady >= target) {
|
|
211
|
+
settled = true;
|
|
169
212
|
resolve();
|
|
170
213
|
}
|
|
171
214
|
});
|
|
215
|
+
// If a worker fails to start before it ever reaches readiness, reject instead of leaving the
|
|
216
|
+
// returned promise hanging forever.
|
|
217
|
+
worker.on("error", (error) => {
|
|
218
|
+
if (!ready) {
|
|
219
|
+
failStartup(error);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
172
222
|
worker.on("message", (msg) => {
|
|
223
|
+
if (settled) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
173
226
|
switch (msg.type) {
|
|
174
227
|
case WorkerMessageType.ERROR:
|
|
175
|
-
|
|
176
|
-
|
|
228
|
+
failStartup(msg.data);
|
|
229
|
+
return;
|
|
177
230
|
case WorkerMessageType.ONLINE:
|
|
231
|
+
ready = true;
|
|
178
232
|
numReady++;
|
|
179
233
|
break;
|
|
180
234
|
}
|
|
181
235
|
// When all workers have finished being created resolve
|
|
182
|
-
if (numReady >=
|
|
236
|
+
if (numReady >= target) {
|
|
237
|
+
settled = true;
|
|
183
238
|
resolve();
|
|
184
239
|
}
|
|
185
240
|
});
|
|
@@ -189,24 +244,31 @@ export class ThreadPool {
|
|
|
189
244
|
});
|
|
190
245
|
}
|
|
191
246
|
/**
|
|
192
|
-
* Stops all running thread executions.
|
|
247
|
+
* Stops all running thread executions. Each worker is given `ThreadPool.STOP_GRACE_PERIOD_MS` to gracefully
|
|
248
|
+
* finish its own `stop()` and exit on its own before being force-terminated.
|
|
193
249
|
*/
|
|
194
250
|
async stop() {
|
|
195
251
|
const listeners = this.callbacks.get("exit");
|
|
196
252
|
this.shutdown = true;
|
|
197
|
-
// Send the stop signal so the workers know to
|
|
253
|
+
// Send the stop signal so the workers know to shut down gracefully
|
|
198
254
|
this.sendAll({ type: WorkerMessageType.STOP });
|
|
199
|
-
//
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
255
|
+
// Terminate all workers concurrently so shutdown latency is bounded by the slowest worker rather than
|
|
256
|
+
// scaling linearly with pool size. Each worker gets a grace period to exit on its own (i.e. for its
|
|
257
|
+
// ThreadWorker.stop() to actually finish) before being force-terminated, so in-flight cleanup work
|
|
258
|
+
// (flushing writes, closing connections, etc.) isn't cut off by an arbitrary fixed delay.
|
|
259
|
+
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();
|
|
265
|
+
}
|
|
204
266
|
if (listeners) {
|
|
205
267
|
for (const callback of listeners) {
|
|
206
268
|
callback(idx, exitCode);
|
|
207
269
|
}
|
|
208
270
|
}
|
|
209
|
-
}
|
|
271
|
+
}));
|
|
210
272
|
// Drop all terminated workers so `size`/`send()` don't keep referencing dead workers across a
|
|
211
273
|
// subsequent start()/stop() cycle. `workers` is a `readonly` array reference, so it's truncated in place.
|
|
212
274
|
this.workers.length = 0;
|
|
@@ -266,6 +328,8 @@ export class ThreadPool {
|
|
|
266
328
|
}
|
|
267
329
|
}
|
|
268
330
|
}
|
|
331
|
+
/** The maximum amount of time, in milliseconds, `stop()` waits for a worker to exit on its own before force-terminating it. */
|
|
332
|
+
ThreadPool.STOP_GRACE_PERIOD_MS = 5000;
|
|
269
333
|
__decorate([
|
|
270
334
|
Logger,
|
|
271
335
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadPool.js","sourceRoot":"","sources":["../../../src/threads/ThreadPool.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,OAAO,EAAiB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AA0B5E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"ThreadPool.js","sourceRoot":"","sources":["../../../src/threads/ThreadPool.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,8 +45,11 @@ export declare class FileUtils {
|
|
|
45
45
|
* @param {Map<string,string>} variables The map of variable names to values to swap. Applies to outPath only.
|
|
46
46
|
* @param {string} rootDir Optional. When provided, all resolved source and destination paths must be contained
|
|
47
47
|
* within this directory, otherwise an error is thrown.
|
|
48
|
+
* @param {boolean} overwrite Set to `true` to overwrite an existing file at the destination. Default is `false`,
|
|
49
|
+
* matching the behavior of `writeFile`/`copyFile`. Appended after `rootDir` to preserve the existing positional
|
|
50
|
+
* call signature.
|
|
48
51
|
*/
|
|
49
|
-
static copyBinaryFile(srcPath: string, outPath: string, variables?: any, rootDir?: string): Promise<void>;
|
|
52
|
+
static copyBinaryFile(srcPath: string, outPath: string, variables?: any, rootDir?: string, overwrite?: boolean): Promise<void>;
|
|
50
53
|
/**
|
|
51
54
|
* Performs a deep copy of a directory tree at the given srcPath to the specified output directory. Performs
|
|
52
55
|
* template replacement for all variables given and skips any files in the specified filter.
|
package/dist/types/JWTUtils.d.ts
CHANGED
|
@@ -10,9 +10,9 @@ export interface JWTUser {
|
|
|
10
10
|
*/
|
|
11
11
|
uid: string;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* The timestamp that the user was granted elevated privileges. A negative value indicates the user is unprivileged. Default value is `-1`.
|
|
14
14
|
*/
|
|
15
|
-
elevated?:
|
|
15
|
+
elevated?: number;
|
|
16
16
|
/**
|
|
17
17
|
* The list of roles (by name) that the user is a member of and will inherit the permissions of.
|
|
18
18
|
*/
|
|
@@ -148,6 +148,31 @@ export declare class JWTUtils {
|
|
|
148
148
|
* @param user The user to encode into the token's payload.
|
|
149
149
|
*/
|
|
150
150
|
private static deriveKeySync;
|
|
151
|
+
/**
|
|
152
|
+
* Encrypts `plaintext` for `publicKey` using hybrid encryption: `plaintext` is encrypted with a fresh
|
|
153
|
+
* AES-256-GCM key, which is itself wrapped with RSA. This avoids `crypto.publicEncrypt`'s fixed plaintext-size
|
|
154
|
+
* limit (e.g. ~214 bytes for a 2048-bit key with OAEP padding), which a raw JSON user profile easily exceeds.
|
|
155
|
+
*
|
|
156
|
+
* @param publicKey The RSA public key to wrap the AES key with.
|
|
157
|
+
* @param plaintext The data to encrypt.
|
|
158
|
+
* @returns The encrypted data, encoded as `<wrapped-key>.<iv>.<authTag>.<ciphertext>`, all base64.
|
|
159
|
+
*/
|
|
160
|
+
private static hybridEncrypt;
|
|
161
|
+
/**
|
|
162
|
+
* Returns `true` if `algorithm` is an AEAD cipher (GCM/CCM/OCB/ChaCha20-Poly1305), which produces an
|
|
163
|
+
* authentication tag that must be captured on encryption and supplied back on decryption via
|
|
164
|
+
* `getAuthTag()`/`setAuthTag()`.
|
|
165
|
+
*
|
|
166
|
+
* @param algorithm The cipher algorithm name (e.g. `aes-256-gcm`).
|
|
167
|
+
*/
|
|
168
|
+
private static isAEADCipher;
|
|
169
|
+
/**
|
|
170
|
+
* Decrypts data produced by `hybridEncrypt`.
|
|
171
|
+
*
|
|
172
|
+
* @param privateKey The RSA private key to unwrap the AES key with.
|
|
173
|
+
* @param encoded The encrypted data, as produced by `hybridEncrypt`.
|
|
174
|
+
*/
|
|
175
|
+
private static hybridDecrypt;
|
|
151
176
|
static createToken(config: JWTUtilsConfig, user: JWTUser, data?: any): Promise<string>;
|
|
152
177
|
static createTokenSync(config: JWTUtilsConfig, user: JWTUser, data?: any): string;
|
|
153
178
|
/**
|
|
@@ -57,6 +57,8 @@ export declare class MessagingUtils {
|
|
|
57
57
|
private _transporter;
|
|
58
58
|
/** Cache of compiled Handlebars delegates keyed by "<templateName>:<field>". */
|
|
59
59
|
private _compiledTemplates;
|
|
60
|
+
/** Names of templates already compiled into `_compiledTemplates` for this instance. See `loadTemplate()`. */
|
|
61
|
+
private _loadedTemplates;
|
|
60
62
|
init(): Promise<void>;
|
|
61
63
|
/**
|
|
62
64
|
* Loads the template with the given name and returns its contents as a string.
|
|
@@ -6,12 +6,20 @@
|
|
|
6
6
|
export declare class NotificationUtils {
|
|
7
7
|
/** The redis client to use for broadcasting messages. */
|
|
8
8
|
private redis;
|
|
9
|
+
/** The logging utility to use. */
|
|
10
|
+
private logger?;
|
|
9
11
|
/**
|
|
10
12
|
* Initializes the utility using the given redis connection.
|
|
11
13
|
*
|
|
12
14
|
* @param {any} redis The redis connection to publish to.
|
|
15
|
+
* @param {any} logger The logging utility to use.
|
|
13
16
|
*/
|
|
14
17
|
constructor(redis: any);
|
|
18
|
+
/**
|
|
19
|
+
* Publishes to the given redis channel, logging (rather than crashing the process via an unhandled rejection)
|
|
20
|
+
* if the underlying client's `publish()` rejects.
|
|
21
|
+
*/
|
|
22
|
+
private publish;
|
|
15
23
|
/**
|
|
16
24
|
* Broadcasts a given message to all users.
|
|
17
25
|
*
|
|
@@ -15,6 +15,11 @@ export declare class ObjectUtils {
|
|
|
15
15
|
* @param recurse Set to `true` to validate all child objects.
|
|
16
16
|
*/
|
|
17
17
|
static deleteScopedProps(obj: any, user?: JWTUser, clazz?: any, recurse?: boolean): void;
|
|
18
|
+
/**
|
|
19
|
+
* Internal implementation of `deleteScopedProps` that tracks already-visited objects so that circular
|
|
20
|
+
* references (e.g. ORM-populated relations that reference each other) don't cause infinite recursion.
|
|
21
|
+
*/
|
|
22
|
+
private static _deleteScopedProps;
|
|
18
23
|
/**
|
|
19
24
|
* Performs validation of the given object or array. Validation is performed by scanning the object class for properties
|
|
20
25
|
* decorated with `@Validator` and executing the provided validation function.
|
|
@@ -24,4 +29,9 @@ export declare class ObjectUtils {
|
|
|
24
29
|
* @param recurse Set to `true` to validate all child objects.
|
|
25
30
|
*/
|
|
26
31
|
static validate(obj: any, clazz?: any, recurse?: boolean): void;
|
|
32
|
+
/**
|
|
33
|
+
* Internal implementation of `validate` that tracks already-visited objects so that circular references
|
|
34
|
+
* (e.g. ORM-populated relations that reference each other) don't cause infinite recursion.
|
|
35
|
+
*/
|
|
36
|
+
private static _validate;
|
|
27
37
|
}
|
|
@@ -49,6 +49,14 @@ export declare class Event implements NewEvent {
|
|
|
49
49
|
* The `on` function allows code within the same application or service to listen for outgoing events that have been
|
|
50
50
|
* sent via the `record` function.
|
|
51
51
|
*
|
|
52
|
+
* The utility uses an application specific JWT access token for sending telemetry events. The purpose of using an
|
|
53
|
+
* application specific JWT token versus user token is to identify a potentially compromised application server. This
|
|
54
|
+
* also allows the server to send telemetry events on behalf of the user that the user may not otherwise have permission
|
|
55
|
+
* to send.
|
|
56
|
+
*
|
|
57
|
+
* Note: This class is considered a runtime singleton and intentionally uses static state. Do not initialize this
|
|
58
|
+
* class more than once in your application.
|
|
59
|
+
*
|
|
52
60
|
* @author Jean-Philippe Steinmetz <rapidrests@gmail.com>
|
|
53
61
|
*/
|
|
54
62
|
export declare class EventUtils {
|
|
@@ -63,7 +71,7 @@ export declare class EventUtils {
|
|
|
63
71
|
*
|
|
64
72
|
* @param config The application configuration to use.
|
|
65
73
|
* @param logger The logging utility to use.
|
|
66
|
-
* @param jwtToken The
|
|
74
|
+
* @param jwtToken The application's JWT token to send telemetry events on behalf of.
|
|
67
75
|
*/
|
|
68
76
|
static init(config: any, logger: any, jwtToken: string): Promise<void>;
|
|
69
77
|
/**
|
package/dist/types/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from "./JWTUtils.js";
|
|
|
7
7
|
export * from "./Logger.js";
|
|
8
8
|
export * from "./MemoryStore.js";
|
|
9
9
|
export * from "./MessagingUtils.js";
|
|
10
|
+
export * from "./NotificationsUtils.js";
|
|
10
11
|
export * from "./ObjectFactory.js";
|
|
11
12
|
export * from "./ObjectUtils.js";
|
|
12
13
|
export * from "./OASUtils.js";
|
|
@@ -49,6 +49,8 @@ export interface WorkerOptions {
|
|
|
49
49
|
* @author Jean-Philippe Steinmetz
|
|
50
50
|
*/
|
|
51
51
|
export declare class ThreadPool {
|
|
52
|
+
/** The maximum amount of time, in milliseconds, `stop()` waits for a worker to exit on its own before force-terminating it. */
|
|
53
|
+
private static readonly STOP_GRACE_PERIOD_MS;
|
|
52
54
|
/** The map of event types to a list of callback functions. */
|
|
53
55
|
private callbacks;
|
|
54
56
|
/** The index of the last worker that was assigned work. */
|
|
@@ -85,7 +87,8 @@ export declare class ThreadPool {
|
|
|
85
87
|
*/
|
|
86
88
|
start(options?: WorkerOptions, num?: number): Promise<void>;
|
|
87
89
|
/**
|
|
88
|
-
* Stops all running thread executions.
|
|
90
|
+
* Stops all running thread executions. Each worker is given `ThreadPool.STOP_GRACE_PERIOD_MS` to gracefully
|
|
91
|
+
* finish its own `stop()` and exit on its own before being force-terminated.
|
|
89
92
|
*/
|
|
90
93
|
stop(): Promise<void>;
|
|
91
94
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rapidrest/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "A collection of common utilities and core functionality for rapidly building RESTful applications.",
|
|
5
5
|
"repository": "https://github.com/rapidrest/core.git",
|
|
6
6
|
"author": "RapidREST <rapidrests@gmail.com>",
|