@rapidrest/core 1.14.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.
- package/dist/lib/AlertUtils.js +71 -56
- package/dist/lib/AlertUtils.js.map +1 -1
- package/dist/lib/ApiError.js +8 -1
- package/dist/lib/ApiError.js.map +1 -1
- package/dist/lib/CacheUtils.js +23 -0
- package/dist/lib/CacheUtils.js.map +1 -0
- package/dist/lib/ClassLoader.js +48 -44
- package/dist/lib/ClassLoader.js.map +1 -1
- package/dist/lib/FileUtils.js +133 -60
- package/dist/lib/FileUtils.js.map +1 -1
- package/dist/lib/JWTUtils.js +250 -145
- package/dist/lib/JWTUtils.js.map +1 -1
- package/dist/lib/Logger.js +39 -7
- package/dist/lib/Logger.js.map +1 -1
- package/dist/lib/MemoryStore.js +8 -6
- package/dist/lib/MemoryStore.js.map +1 -1
- package/dist/lib/MessagingUtils.js +71 -35
- package/dist/lib/MessagingUtils.js.map +1 -1
- package/dist/lib/NotificationsUtils.js +60 -8
- package/dist/lib/NotificationsUtils.js.map +1 -1
- package/dist/lib/OASUtils.js +67 -18
- package/dist/lib/OASUtils.js.map +1 -1
- package/dist/lib/ObjectFactory.js +151 -63
- package/dist/lib/ObjectFactory.js.map +1 -1
- package/dist/lib/ObjectUtils.js +48 -7
- package/dist/lib/ObjectUtils.js.map +1 -1
- package/dist/lib/StringUtils.js +55 -21
- package/dist/lib/StringUtils.js.map +1 -1
- package/dist/lib/TelemetryUtils.js +41 -5
- package/dist/lib/TelemetryUtils.js.map +1 -1
- package/dist/lib/UserUtils.js +5 -6
- package/dist/lib/UserUtils.js.map +1 -1
- package/dist/lib/ValidationUtils.js +16 -4
- package/dist/lib/ValidationUtils.js.map +1 -1
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/threads/ThreadPool.js +198 -58
- package/dist/lib/threads/ThreadPool.js.map +1 -1
- package/dist/types/AlertUtils.d.ts +4 -0
- package/dist/types/CacheUtils.d.ts +14 -0
- package/dist/types/ClassLoader.d.ts +10 -0
- package/dist/types/FileUtils.d.ts +23 -7
- package/dist/types/JWTUtils.d.ts +88 -18
- package/dist/types/MessagingUtils.d.ts +7 -1
- package/dist/types/NotificationsUtils.d.ts +30 -0
- package/dist/types/ObjectFactory.d.ts +25 -1
- package/dist/types/ObjectUtils.d.ts +14 -0
- package/dist/types/StringUtils.d.ts +8 -0
- package/dist/types/TelemetryUtils.d.ts +19 -1
- package/dist/types/ValidationUtils.d.ts +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/threads/ThreadPool.d.ts +34 -2
- package/package.json +1 -1
|
@@ -15,12 +15,21 @@ export class ObjectFactory {
|
|
|
15
15
|
constructor(config, logger) {
|
|
16
16
|
/** A map for string fully qualified class names to their class types. */
|
|
17
17
|
this.classes = new Map();
|
|
18
|
-
/** A map for the unique name to the intance of a particular class type.
|
|
18
|
+
/** A map for the unique name to the intance of a particular class type.
|
|
19
|
+
*
|
|
20
|
+
* Note that this map is unbounded and only shrinks via an explicit `destroy()` call.
|
|
21
|
+
*/
|
|
19
22
|
this.instances = new Map();
|
|
20
23
|
/** Cache of prototype-chain metadata keyed by constructor function. WeakMap allows GC of dropped classes. */
|
|
21
24
|
this._metadataCache = new WeakMap();
|
|
22
25
|
/** Secondary index: className → first registered instance key, for O(1) getInstance() fallback. */
|
|
23
26
|
this._firstByClass = new Map();
|
|
27
|
+
/** Tracks in-flight `initialize()` promises, keyed by registry name, for instances currently completing
|
|
28
|
+
* async initialization. `newInstance()` registers an instance in `instances` before its (possibly async)
|
|
29
|
+
* initialization completes, so a concurrent `newInstance()` call for the same name would otherwise find the
|
|
30
|
+
* entry via the instances-map fast path and receive the not-yet-initialized instance synchronously instead
|
|
31
|
+
* of waiting. Consulting this map lets that caller await the same in-flight initialization instead. */
|
|
32
|
+
this._pendingInit = new Map();
|
|
24
33
|
this.config = config;
|
|
25
34
|
this.logger = logger ? logger : Logger();
|
|
26
35
|
// Add ourself so it can be injected/retrieved
|
|
@@ -76,13 +85,7 @@ export class ObjectFactory {
|
|
|
76
85
|
async destroy(objs) {
|
|
77
86
|
// If no set of objects was provided we want to destroy everything
|
|
78
87
|
if (!objs) {
|
|
79
|
-
objs =
|
|
80
|
-
this.instances.forEach((value, key) => {
|
|
81
|
-
if (!value.name) {
|
|
82
|
-
value.name = key;
|
|
83
|
-
}
|
|
84
|
-
objs.push(value);
|
|
85
|
-
});
|
|
88
|
+
objs = Array.from(this.instances.values());
|
|
86
89
|
}
|
|
87
90
|
else {
|
|
88
91
|
// If only a single object was passed in we need to convert this to an array
|
|
@@ -92,7 +95,14 @@ export class ObjectFactory {
|
|
|
92
95
|
}
|
|
93
96
|
// Go through each object and call its destructor, if available
|
|
94
97
|
for (const obj of objs) {
|
|
95
|
-
|
|
98
|
+
if (!obj) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
// `_name` - the factory's own non-enumerable bookkeeping field set in `newInstance()` - is the only
|
|
102
|
+
// reliable source of an instance's registry key. A business-domain `.name` property (e.g. an
|
|
103
|
+
// `Organization`/`Team` entity that legitimately has a `name` field) must never be consulted here:
|
|
104
|
+
// doing so would resolve to the wrong key and leave the actually-registered instance undeleted.
|
|
105
|
+
const name = obj._name;
|
|
96
106
|
const meta = this._getOrBuildMetadata(obj);
|
|
97
107
|
if (meta.destroyMethod) {
|
|
98
108
|
try {
|
|
@@ -112,12 +122,31 @@ export class ObjectFactory {
|
|
|
112
122
|
// torn-down zombie via the instances-map fast path. The factory's own bootstrap self-registration
|
|
113
123
|
// (see the constructor) is left in place since it isn't a user-managed instance.
|
|
114
124
|
if (name && obj !== this) {
|
|
115
|
-
this.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
125
|
+
this._removeInstance(name);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** Removes `name` from `instances`. If it was the secondary index's "first" entry for its class, promotes
|
|
130
|
+
* another surviving instance of the same class if one exists, otherwise drops the entry so `getInstance()`
|
|
131
|
+
* correctly reports no instance is available. Shared by `destroy()` and `newInstance()`'s failed-initialization
|
|
132
|
+
* cleanup. */
|
|
133
|
+
_removeInstance(name) {
|
|
134
|
+
this.instances.delete(name);
|
|
135
|
+
for (const [className, firstName] of this._firstByClass) {
|
|
136
|
+
if (firstName === name) {
|
|
137
|
+
let replacement;
|
|
138
|
+
for (const key of this.instances.keys()) {
|
|
139
|
+
if (key.startsWith(`${className}:`)) {
|
|
140
|
+
replacement = key;
|
|
141
|
+
break;
|
|
119
142
|
}
|
|
120
143
|
}
|
|
144
|
+
if (replacement) {
|
|
145
|
+
this._firstByClass.set(className, replacement);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this._firstByClass.delete(className);
|
|
149
|
+
}
|
|
121
150
|
}
|
|
122
151
|
}
|
|
123
152
|
}
|
|
@@ -161,25 +190,27 @@ export class ObjectFactory {
|
|
|
161
190
|
for (const member of meta.injectLogger) {
|
|
162
191
|
obj[member] = obj._fqn ? this.logger.child({ fqn: obj._fqn }) : this.logger;
|
|
163
192
|
}
|
|
193
|
+
// Collects both injected-dependency and @Init promises so `initialize()` never returns/resolves before
|
|
194
|
+
// an async-resolving `@Inject`-ed dependency has actually been assigned to `obj[member]`.
|
|
195
|
+
const promises = [];
|
|
164
196
|
for (const { member, type, options } of meta.injectObject) {
|
|
165
197
|
this.register(type);
|
|
166
198
|
const instance = this.newInstance(type, options);
|
|
167
199
|
if (instance instanceof Promise) {
|
|
168
|
-
instance
|
|
200
|
+
promises.push(instance
|
|
169
201
|
.then((val) => {
|
|
170
202
|
obj[member] = val;
|
|
171
203
|
})
|
|
172
204
|
.catch((err) => {
|
|
173
205
|
this.logger.error(`Failed to instantiate dependency. Type=${type}, Parent=${obj._fqn}, Member=${member}`);
|
|
174
206
|
this.logger.debug(err);
|
|
175
|
-
});
|
|
207
|
+
}));
|
|
176
208
|
}
|
|
177
209
|
else {
|
|
178
210
|
obj[member] = instance;
|
|
179
211
|
}
|
|
180
212
|
}
|
|
181
213
|
// Call any @Init functions
|
|
182
|
-
const promises = [];
|
|
183
214
|
for (const methodName of meta.initMethods) {
|
|
184
215
|
const result = obj[methodName].bind(obj)();
|
|
185
216
|
if (result instanceof Promise) {
|
|
@@ -187,18 +218,11 @@ export class ObjectFactory {
|
|
|
187
218
|
}
|
|
188
219
|
}
|
|
189
220
|
if (promises.length > 0) {
|
|
190
|
-
//
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
catch (err) {
|
|
198
|
-
reject(err);
|
|
199
|
-
}
|
|
200
|
-
resolve(obj);
|
|
201
|
-
});
|
|
221
|
+
// Promise.all() attaches a handler to every entry in `promises` up front (synchronously), so even
|
|
222
|
+
// though it settles as soon as the first one rejects, none of the others are ever left unobserved.
|
|
223
|
+
// A sequential for-await loop, by contrast, stops awaiting as soon as one throws, which can orphan a
|
|
224
|
+
// still-pending later @Init promise's eventual rejection as an unhandled rejection.
|
|
225
|
+
return Promise.all(promises).then(() => obj);
|
|
202
226
|
}
|
|
203
227
|
else {
|
|
204
228
|
return obj;
|
|
@@ -212,26 +236,48 @@ export class ObjectFactory {
|
|
|
212
236
|
*/
|
|
213
237
|
getInitMethods(obj) {
|
|
214
238
|
const results = [];
|
|
239
|
+
const seen = new Set();
|
|
240
|
+
// Covers metadata defined directly on a plain object instance rather than via a class's prototype chain
|
|
241
|
+
// (e.g. `Reflect.defineMetadata(..., obj, "someMethod")`), which the prototype-chain scan below - by
|
|
242
|
+
// design, since it starts at `Object.getPrototypeOf(obj)` - never visits.
|
|
215
243
|
for (const member in obj) {
|
|
216
|
-
|
|
217
|
-
|
|
244
|
+
if (Reflect.getMetadata("rrst:initialize", obj, member) && !seen.has(member)) {
|
|
245
|
+
seen.add(member);
|
|
218
246
|
results.push(obj[member]);
|
|
219
|
-
break;
|
|
220
247
|
}
|
|
221
248
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}
|
|
249
|
+
// Reuses the same cached prototype-chain scan that `initialize()` uses (via `_getOrBuildMetadata`), so
|
|
250
|
+
// this method and the actual `@Init` invocation performed during instantiation can never disagree about
|
|
251
|
+
// which methods on a class are considered `@Init` methods.
|
|
252
|
+
for (const member of this._getOrBuildMetadata(obj).initMethods) {
|
|
253
|
+
if (!seen.has(member)) {
|
|
254
|
+
seen.add(member);
|
|
255
|
+
results.push(obj[member]);
|
|
230
256
|
}
|
|
231
|
-
proto = Object.getPrototypeOf(proto);
|
|
232
257
|
}
|
|
233
258
|
return results;
|
|
234
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Derives the class name/fqn used to index `instances`/`classes` from a class type, fully qualified name
|
|
262
|
+
* string, or (defensively) a live instance. Shared by `getInstance`, `newInstance` and `register` so the
|
|
263
|
+
* three can never disagree about which string identifies a given class - a custom `.fqn` (e.g. one assigned
|
|
264
|
+
* by `ClassLoader`) always takes precedence over the bare `.name`, honored consistently everywhere a class
|
|
265
|
+
* identity is resolved.
|
|
266
|
+
*
|
|
267
|
+
* @param typeOrInstance The class type, fqn string, or instance to derive the name from.
|
|
268
|
+
*/
|
|
269
|
+
static classNameOf(typeOrInstance) {
|
|
270
|
+
if (typeof typeOrInstance === "string") {
|
|
271
|
+
return typeOrInstance;
|
|
272
|
+
}
|
|
273
|
+
if (!typeOrInstance) {
|
|
274
|
+
return "";
|
|
275
|
+
}
|
|
276
|
+
return (typeOrInstance.fqn ||
|
|
277
|
+
typeOrInstance.name ||
|
|
278
|
+
(typeOrInstance.constructor && typeOrInstance.constructor.name) ||
|
|
279
|
+
"");
|
|
280
|
+
}
|
|
235
281
|
/**
|
|
236
282
|
* Returns the object instance with the given unique name. Unique names take the form `<ClassName>:<InstanceName>`.
|
|
237
283
|
* It is possible to only specifiy the `<ClassName>`, doing so will automatically look for the `<ClassName>:default`
|
|
@@ -239,24 +285,13 @@ export class ObjectFactory {
|
|
|
239
285
|
* @param nameOrType The unique name or class type of the object to retrieve.
|
|
240
286
|
* @returns The object instance associated with the given name if found, otherwise `undefined`.
|
|
241
287
|
*/
|
|
242
|
-
// TODO: Investigate name vs fqn
|
|
243
288
|
getInstance(nameOrType) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
search = nameOrType;
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
search =
|
|
250
|
-
nameOrType && nameOrType.name
|
|
251
|
-
? nameOrType.name
|
|
252
|
-
: nameOrType.constructor
|
|
253
|
-
? nameOrType.constructor.name
|
|
254
|
-
: search;
|
|
255
|
-
}
|
|
256
|
-
// Make sure we have a valid type name
|
|
289
|
+
// Make sure we have a valid type name. Must run before `nameOrType` is dereferenced below, otherwise
|
|
290
|
+
// `getInstance(null)`/`getInstance(undefined)` throw a raw TypeError instead of this intended error.
|
|
257
291
|
if (!nameOrType) {
|
|
258
292
|
throw new Error("No valid nameOrType was specified.");
|
|
259
293
|
}
|
|
294
|
+
const search = ObjectFactory.classNameOf(nameOrType);
|
|
260
295
|
// First search for the exact name or with `:default`
|
|
261
296
|
let result = this.instances.get(search.includes(":") ? search : search + ":default");
|
|
262
297
|
// If we didn't found a result and we weren't given an exact name to search, find the first
|
|
@@ -279,18 +314,42 @@ export class ObjectFactory {
|
|
|
279
314
|
* @param options The options to use when instantiating the new class object.
|
|
280
315
|
*/
|
|
281
316
|
newInstance(type, options) {
|
|
282
|
-
|
|
317
|
+
const explicitName = options?.name;
|
|
318
|
+
let name = explicitName || uuidV4();
|
|
283
319
|
const initialize = options?.initialize !== undefined ? options.initialize : true;
|
|
284
320
|
const args = options?.args || [];
|
|
285
|
-
// If
|
|
286
|
-
const className =
|
|
287
|
-
// Names are namespace specific by type. Prepend the type to the name if not already done
|
|
288
|
-
|
|
321
|
+
// If a class type was given extract its fqn
|
|
322
|
+
const className = ObjectFactory.classNameOf(type);
|
|
323
|
+
// Names are namespace specific by type. Prepend the type to the name if not already done - checked via
|
|
324
|
+
// the literal "ClassName:" prefix rather than mere substring containment, since a caller-supplied name
|
|
325
|
+
// that merely *contains* the class name somewhere (e.g. "MyClassPrimary" for class "MyClass") is not
|
|
326
|
+
// actually namespaced and must still be prefixed, or a later lookup/promotion keyed on that prefix
|
|
327
|
+
// (see `destroy()`) would never find it.
|
|
328
|
+
if (name && !name.startsWith(`${className}:`)) {
|
|
289
329
|
name = `${className}:${name}`;
|
|
290
330
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
331
|
+
if (explicitName === "default") {
|
|
332
|
+
// `@Inject`'s implicit default name (it always resolves `options.name` to `"default"` when the
|
|
333
|
+
// caller doesn't specify one) - and an explicit `{ name: "default" }` - requests "the" singleton
|
|
334
|
+
// instance of this class. That should fall back to any existing instance of the class, the same
|
|
335
|
+
// fallback `getInstance()` provides, rather than only ever matching the literal "ClassName:default"
|
|
336
|
+
// key. Without this, @Inject would silently create a second, disconnected instance whenever a class
|
|
337
|
+
// had already been instantiated under a different name, breaking singleton reuse and circular-
|
|
338
|
+
// dependency resolution. This intentionally does not apply to a bare `newInstance(Type)` call with
|
|
339
|
+
// no name at all (handled below), which always creates a fresh instance.
|
|
340
|
+
const existingName = this.instances.has(name)
|
|
341
|
+
? name
|
|
342
|
+
: this._firstByClass.get(className);
|
|
343
|
+
if (existingName && this.instances.has(existingName)) {
|
|
344
|
+
// If the existing instance's async initialization is still in flight, return that same promise
|
|
345
|
+
// rather than the raw, not-yet-initialized instance - otherwise a concurrent caller would resolve
|
|
346
|
+
// immediately with an object whose injected config/logger/dependencies may still be undefined.
|
|
347
|
+
return this._pendingInit.get(existingName) ?? this.instances.get(existingName);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
else if (name && this.instances.has(name)) {
|
|
351
|
+
// First check to see if an instance was already created for the given name
|
|
352
|
+
return this._pendingInit.get(name) ?? this.instances.get(name);
|
|
294
353
|
}
|
|
295
354
|
// Make sure we have a valid type name
|
|
296
355
|
if (!className) {
|
|
@@ -334,8 +393,33 @@ export class ObjectFactory {
|
|
|
334
393
|
}
|
|
335
394
|
// Now initialize the object with any injectable defaults. This must happen after we add the instance
|
|
336
395
|
// to our internal map so that circular dependencies due not cause endless cycles of creation/initialization.
|
|
396
|
+
//
|
|
397
|
+
// If initialization fails - synchronously (e.g. a missing required config path) or asynchronously (e.g. a
|
|
398
|
+
// rejecting `@Init` method) - the instance must not be left behind in `instances`/`_firstByClass`: without
|
|
399
|
+
// this cleanup, every later `newInstance()` call for the same name would silently hand back the same
|
|
400
|
+
// broken, half-initialized object forever via the fast path above, with no error and no way to recover
|
|
401
|
+
// short of the caller knowing to call `destroy()` first.
|
|
337
402
|
if (initialize) {
|
|
338
|
-
|
|
403
|
+
try {
|
|
404
|
+
const result = this.initialize(instance);
|
|
405
|
+
if (result instanceof Promise) {
|
|
406
|
+
const tracked = result.then((resolved) => {
|
|
407
|
+
this._pendingInit.delete(name);
|
|
408
|
+
return resolved;
|
|
409
|
+
}, (err) => {
|
|
410
|
+
this._pendingInit.delete(name);
|
|
411
|
+
this._removeInstance(name);
|
|
412
|
+
throw err;
|
|
413
|
+
});
|
|
414
|
+
this._pendingInit.set(name, tracked);
|
|
415
|
+
return tracked;
|
|
416
|
+
}
|
|
417
|
+
return result;
|
|
418
|
+
}
|
|
419
|
+
catch (err) {
|
|
420
|
+
this._removeInstance(name);
|
|
421
|
+
throw err;
|
|
422
|
+
}
|
|
339
423
|
}
|
|
340
424
|
return instance;
|
|
341
425
|
}
|
|
@@ -345,6 +429,10 @@ export class ObjectFactory {
|
|
|
345
429
|
* @param fqn The fully qualified name of the class to register. If not specified, the class name will be used.
|
|
346
430
|
*/
|
|
347
431
|
register(clazz, fqn) {
|
|
432
|
+
// Deliberately not `classNameOf()`: unlike `getInstance`/`newInstance`, `register` only ever expects an
|
|
433
|
+
// actual class type, never a live instance, so it must not fall back to `clazz.constructor.name` - doing
|
|
434
|
+
// so would silently "succeed" (registering the instance itself under its class's name) if a caller
|
|
435
|
+
// mistakenly passes an instance instead of a class.
|
|
348
436
|
const name = fqn ? fqn : clazz.fqn || clazz.name;
|
|
349
437
|
if (!name) {
|
|
350
438
|
this.logger.info(`Unable to register class ${name} for ${clazz}/${fqn}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectFactory.js","sourceRoot":"","sources":["../../src/ObjectFactory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ObjectFactory.js","sourceRoot":"","sources":["../../src/ObjectFactory.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/ObjectUtils.js
CHANGED
|
@@ -18,8 +18,23 @@ export class ObjectUtils {
|
|
|
18
18
|
* @param recurse Set to `true` to validate all child objects.
|
|
19
19
|
*/
|
|
20
20
|
static deleteScopedProps(obj, user, clazz, recurse) {
|
|
21
|
+
ObjectUtils._deleteScopedProps(obj, user, clazz, recurse, new Set());
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Internal implementation of `deleteScopedProps` that tracks already-visited objects so that circular
|
|
25
|
+
* references (e.g. ORM-populated relations that reference each other) don't cause infinite recursion.
|
|
26
|
+
*/
|
|
27
|
+
static _deleteScopedProps(obj, user, clazz, recurse, visited, depth = 0) {
|
|
28
|
+
if (depth > ObjectUtils.MAX_RECURSE_DEPTH) {
|
|
29
|
+
throw new Error(`Maximum object nesting depth (${ObjectUtils.MAX_RECURSE_DEPTH}) exceeded.`);
|
|
30
|
+
}
|
|
21
31
|
const objs = Array.isArray(obj) ? obj : [obj];
|
|
22
32
|
for (const obj of objs) {
|
|
33
|
+
// Track every object visited (Set works fine with primitives too, so no `typeof` guard is needed)
|
|
34
|
+
// so a circular reference doesn't cause infinite recursion.
|
|
35
|
+
if (visited.has(obj))
|
|
36
|
+
continue;
|
|
37
|
+
visited.add(obj);
|
|
23
38
|
const metadataObj = !clazz || obj instanceof clazz ? obj : new clazz();
|
|
24
39
|
// Iterate through all properties of the object
|
|
25
40
|
for (const member of Object.getOwnPropertyNames(obj)) {
|
|
@@ -31,9 +46,11 @@ export class ObjectUtils {
|
|
|
31
46
|
if (scopes && !UserUtils.hasScopes(user, scopes)) {
|
|
32
47
|
delete obj[member];
|
|
33
48
|
}
|
|
34
|
-
// If recursion is requested, process the child object
|
|
35
|
-
|
|
36
|
-
|
|
49
|
+
// If recursion is requested, process the child object. `obj[member] !== null` is required since
|
|
50
|
+
// `typeof null === "object"` in JS, and recursing into `null` would throw inside
|
|
51
|
+
// `Object.getOwnPropertyNames`.
|
|
52
|
+
if (recurse && obj[member] !== null && typeof obj[member] === "object") {
|
|
53
|
+
ObjectUtils._deleteScopedProps(obj[member], user, undefined, recurse, visited, depth + 1);
|
|
37
54
|
}
|
|
38
55
|
}
|
|
39
56
|
}
|
|
@@ -47,8 +64,23 @@ export class ObjectUtils {
|
|
|
47
64
|
* @param recurse Set to `true` to validate all child objects.
|
|
48
65
|
*/
|
|
49
66
|
static validate(obj, clazz, recurse) {
|
|
67
|
+
ObjectUtils._validate(obj, clazz, recurse, new Set());
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Internal implementation of `validate` that tracks already-visited objects so that circular references
|
|
71
|
+
* (e.g. ORM-populated relations that reference each other) don't cause infinite recursion.
|
|
72
|
+
*/
|
|
73
|
+
static _validate(obj, clazz, recurse, visited, depth = 0) {
|
|
74
|
+
if (depth > ObjectUtils.MAX_RECURSE_DEPTH) {
|
|
75
|
+
throw new Error(`Maximum object nesting depth (${ObjectUtils.MAX_RECURSE_DEPTH}) exceeded.`);
|
|
76
|
+
}
|
|
50
77
|
const objs = Array.isArray(obj) ? obj : [obj];
|
|
51
78
|
for (const obj of objs) {
|
|
79
|
+
// Track every object visited (Set works fine with primitives too, so no `typeof` guard is needed)
|
|
80
|
+
// so a circular reference doesn't cause infinite recursion.
|
|
81
|
+
if (visited.has(obj))
|
|
82
|
+
continue;
|
|
83
|
+
visited.add(obj);
|
|
52
84
|
const metadataObj = !clazz || obj instanceof clazz ? obj : new clazz();
|
|
53
85
|
// Iterate through all properties of the object
|
|
54
86
|
for (const member of Object.getOwnPropertyNames(obj)) {
|
|
@@ -60,7 +92,10 @@ export class ObjectUtils {
|
|
|
60
92
|
throw new Error(`Property ${member} cannot be null.`);
|
|
61
93
|
}
|
|
62
94
|
const validator = Reflect.getMetadata("rrst:validator", metadataObj, member);
|
|
63
|
-
|
|
95
|
+
// Matches the nullable convention just above (null/undefined/"" are "absent", everything else -
|
|
96
|
+
// including `0`/`false` - is a real value to validate) rather than gating on plain truthiness,
|
|
97
|
+
// which would silently skip validation for any property whose legitimate value is falsy.
|
|
98
|
+
if (validator && obj[member] !== null && obj[member] !== undefined && obj[member] !== "") {
|
|
64
99
|
try {
|
|
65
100
|
obj[member] = validator(obj[member]);
|
|
66
101
|
}
|
|
@@ -68,12 +103,18 @@ export class ObjectUtils {
|
|
|
68
103
|
throw new Error(`Property ${member} is invalid. ${err.message}`);
|
|
69
104
|
}
|
|
70
105
|
}
|
|
71
|
-
// If recursion is requested validate the child object
|
|
72
|
-
|
|
73
|
-
|
|
106
|
+
// If recursion is requested validate the child object. `obj[member] !== null` is required since
|
|
107
|
+
// `typeof null === "object"` in JS, and recursing into `null` would throw inside
|
|
108
|
+
// `Object.getOwnPropertyNames`.
|
|
109
|
+
if (recurse && obj[member] !== null && typeof obj[member] === "object") {
|
|
110
|
+
ObjectUtils._validate(obj[member], undefined, recurse, visited, depth + 1);
|
|
74
111
|
}
|
|
75
112
|
}
|
|
76
113
|
}
|
|
77
114
|
}
|
|
78
115
|
}
|
|
116
|
+
/** Maximum object nesting depth `deleteScopedProps`/`validate` will recurse into with `recurse: true`. Guards
|
|
117
|
+
* against stack exhaustion from a pathologically deep (but otherwise valid, e.g. attacker-controlled JSON)
|
|
118
|
+
* object graph - cycle detection alone doesn't bound depth for a non-cyclic but very deep structure. */
|
|
119
|
+
ObjectUtils.MAX_RECURSE_DEPTH = 50;
|
|
79
120
|
//# sourceMappingURL=ObjectUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../src/ObjectUtils.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,WAAW;
|
|
1
|
+
{"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../src/ObjectUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/StringUtils.js
CHANGED
|
@@ -7,6 +7,16 @@
|
|
|
7
7
|
* @author Jean-Philippe Steinmetz
|
|
8
8
|
*/
|
|
9
9
|
export class StringUtils {
|
|
10
|
+
/**
|
|
11
|
+
* Escapes all regular expression metacharacters in `str` so it can be safely embedded in a `RegExp` pattern
|
|
12
|
+
* and matched as a literal string.
|
|
13
|
+
*
|
|
14
|
+
* @param {string} str The string to escape.
|
|
15
|
+
* @returns {string} The escaped string.
|
|
16
|
+
*/
|
|
17
|
+
static escapeRegExp(str) {
|
|
18
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
19
|
+
}
|
|
10
20
|
/**
|
|
11
21
|
* Returns a list of all parameters contained within the string. A parameter is a bracket delimited substring
|
|
12
22
|
* (e.g. /my/{key}/with/{id}).
|
|
@@ -42,29 +52,38 @@ export class StringUtils {
|
|
|
42
52
|
* @param {object} variables A map of key=>value pairs to search for and replace.
|
|
43
53
|
*/
|
|
44
54
|
static findAndReplace(contents, variables) {
|
|
45
|
-
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
const keys = Object.keys(variables);
|
|
56
|
+
// Keys with a null/undefined value are substituted as an empty string so that "{{key}}" placeholders aren't
|
|
57
|
+
// left in the final string. Resolved into a local copy rather than writing back onto `variables` itself,
|
|
58
|
+
// since this is a read-only formatting call from the caller's perspective - mutating their object would
|
|
59
|
+
// silently overwrite any null/undefined sentinel they relied on after this call returns.
|
|
60
|
+
const values = {};
|
|
61
|
+
for (const key of keys) {
|
|
62
|
+
const value = variables[key];
|
|
63
|
+
values[key] = value === null || value === undefined ? "" : value;
|
|
53
64
|
}
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
// A single combined regex - built once, O(k) - matching any `{{key}}` for any known key, rather than one
|
|
66
|
+
// regex per key checked in a nested O(k²) loop. Each key is escaped since it may contain regex
|
|
67
|
+
// metacharacters (e.g. from external input), which could otherwise be used for regex injection or
|
|
68
|
+
// catastrophic backtracking (ReDoS). Delimiting each alternative with the literal `{{`/`}}` means the
|
|
69
|
+
// matched key text is always recovered exactly, regardless of alternative order or shared prefixes
|
|
70
|
+
// between keys (backtracking still finds the alternative that makes the overall `\{\{...\}\}` match).
|
|
71
|
+
const combined = new RegExp("\\{\\{(" + keys.map((k) => StringUtils.escapeRegExp(k)).join("|") + ")\\}\\}", "g");
|
|
72
|
+
// A function replacer is used (rather than passing the value directly) so a value containing
|
|
73
|
+
// `$`-sequences (`$&`, `$$`, `$1`, ...) is inserted literally instead of being interpreted by
|
|
74
|
+
// `String.replace` as a special pattern.
|
|
75
|
+
const resolve = (key) => values[key].toString();
|
|
76
|
+
// Resolve one level of nested variable references within each value (e.g. a value of "{{adjective}} Dog"
|
|
77
|
+
// has "{{adjective}}" substituted), then use the resolved values for the final pass over `contents`.
|
|
78
|
+
const resolved = new Map();
|
|
79
|
+
for (const key of keys) {
|
|
80
|
+
let value = resolve(key);
|
|
81
|
+
if (value.includes("{{")) {
|
|
82
|
+
value = value.replace(combined, (_full, matchedKey) => resolve(matchedKey));
|
|
65
83
|
}
|
|
84
|
+
resolved.set(key, value);
|
|
66
85
|
}
|
|
67
|
-
return
|
|
86
|
+
return contents.replace(combined, (_full, matchedKey) => resolved.get(matchedKey) ?? _full);
|
|
68
87
|
}
|
|
69
88
|
/**
|
|
70
89
|
* Replaces all instances of the match regex pattern with the contents of the inner regular expression pattern for
|
|
@@ -87,7 +106,22 @@ export class StringUtils {
|
|
|
87
106
|
: match.global
|
|
88
107
|
? match
|
|
89
108
|
: new RegExp(match.source, match.flags + "g");
|
|
90
|
-
|
|
109
|
+
// Whether `global` has at least one capturing group, counted without executing it against `str` (a
|
|
110
|
+
// regex appended with an empty `|` alternative always matches the empty string, so `.exec("")`'s result
|
|
111
|
+
// array length - 1 gives the group count regardless of whether the original pattern would ever match).
|
|
112
|
+
// A plain `string` `match` compiles to a group-less regex, so this is always `false` in that case.
|
|
113
|
+
const hasCaptureGroup = new RegExp(global.source + "|").exec("").length > 1;
|
|
114
|
+
// A function replacer is used, receiving the full match plus every captured group in order. Without
|
|
115
|
+
// checking `hasCaptureGroup` first, a pattern with no capturing group would still receive a value in
|
|
116
|
+
// the "capture" position per String.prototype.replace's callback signature - but that value is the
|
|
117
|
+
// match's numeric *offset*, not `undefined`, silently corrupting the output (e.g. replaceAll("hello
|
|
118
|
+
// world", "o", "_") would embed "4"/"7" from the offsets instead of doing a plain substring
|
|
119
|
+
// replacement). With no capture group there's no "inner" text distinct from the match to preserve, so
|
|
120
|
+
// the whole match is simply replaced by `prefix` - i.e. ordinary search-and-replace semantics.
|
|
121
|
+
return str.replace(global, (...args) => {
|
|
122
|
+
const capture = hasCaptureGroup ? args[1] : "";
|
|
123
|
+
return prefix + capture;
|
|
124
|
+
});
|
|
91
125
|
}
|
|
92
126
|
/**
|
|
93
127
|
* Converts the first character in the given string to be lowercase (e.g. myVariable).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtils.js","sourceRoot":"","sources":["../../src/StringUtils.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACpB;;;;;;OAMG;IACI,MAAM,CAAC,aAAa,CAAC,GAAW;QACnC,IAAI,OAAO,GAAkB,IAAI,KAAK,EAAE,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC5C,CAAC,GAAG,GAAG,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACJ,MAAM;gBACV,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM;YACV,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,SAAc;QACzD,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"StringUtils.js","sourceRoot":"","sources":["../../src/StringUtils.ts"],"names":[],"mappings":"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"}
|