@rapidrest/core 1.2.0 → 1.3.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/ClassLoader.js +3 -2
- package/dist/lib/ClassLoader.js.map +1 -1
- package/dist/lib/JWTUtils.js +101 -5
- package/dist/lib/JWTUtils.js.map +1 -1
- package/dist/lib/Logger.js +9 -2
- package/dist/lib/Logger.js.map +1 -1
- package/dist/lib/MessagingUtils.js +27 -22
- package/dist/lib/MessagingUtils.js.map +1 -1
- package/dist/lib/NotificationsUtils.js +4 -2
- package/dist/lib/NotificationsUtils.js.map +1 -1
- package/dist/lib/OASUtils.js +17 -3
- package/dist/lib/OASUtils.js.map +1 -1
- package/dist/lib/ObjectFactory.js +95 -77
- package/dist/lib/ObjectFactory.js.map +1 -1
- package/dist/lib/StringUtils.js +16 -12
- package/dist/lib/StringUtils.js.map +1 -1
- package/dist/lib/TelemetryUtils.js +2 -2
- package/dist/lib/TelemetryUtils.js.map +1 -1
- package/dist/lib/threads/ThreadPool.js +17 -8
- package/dist/lib/threads/ThreadPool.js.map +1 -1
- package/dist/types/JWTUtils.d.ts +21 -3
- package/dist/types/Logger.d.ts +1 -1
- package/dist/types/MessagingUtils.d.ts +4 -0
- package/dist/types/OASUtils.d.ts +2 -0
- package/dist/types/ObjectFactory.d.ts +6 -0
- package/dist/types/TelemetryUtils.d.ts +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/functions/Config.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/functions/Destroy.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/functions/Init.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/functions/Inject.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/functions/Logger.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/functions/Nullable.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/functions/Validator.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ObjectDecorators/type-aliases/ValidatorFunction.md +1 -1
- package/docs/reference/classes/AlertUtils.md +6 -6
- package/docs/reference/classes/ApiError.md +5 -5
- package/docs/reference/classes/ClassLoader.md +11 -11
- package/docs/reference/classes/Event.md +8 -8
- package/docs/reference/classes/EventUtils.md +6 -6
- package/docs/reference/classes/FileUtils.md +5 -5
- package/docs/reference/classes/JWTUtils.md +61 -13
- package/docs/reference/classes/MessagingUtils.md +8 -8
- package/docs/reference/classes/OASUtils.md +22 -8
- package/docs/reference/classes/ObjectFactory.md +14 -14
- package/docs/reference/classes/ObjectUtils.md +2 -2
- package/docs/reference/classes/StringUtils.md +6 -6
- package/docs/reference/classes/ThreadPool.md +11 -11
- package/docs/reference/classes/ThreadWorker.md +6 -6
- package/docs/reference/classes/UserUtils.md +6 -6
- package/docs/reference/classes/ValidationUtils.md +14 -14
- package/docs/reference/enumerations/AlertPriority.md +6 -6
- package/docs/reference/enumerations/JWTUtilsCompressionMethods.md +2 -2
- package/docs/reference/enumerations/WorkerMessageType.md +5 -5
- package/docs/reference/functions/sleep.md +1 -1
- package/docs/reference/interfaces/Alert.md +10 -10
- package/docs/reference/interfaces/AlertAttachment.md +5 -5
- package/docs/reference/interfaces/AlertClose.md +3 -3
- package/docs/reference/interfaces/AlertUtilsAttachmentOptions.md +4 -4
- package/docs/reference/interfaces/AlertUtilsOptions.md +4 -4
- package/docs/reference/interfaces/InstanceOptions.md +4 -4
- package/docs/reference/interfaces/JWTPayload.md +5 -5
- package/docs/reference/interfaces/JWTUser.md +5 -5
- package/docs/reference/interfaces/JWTUtilsConfig.md +4 -4
- package/docs/reference/interfaces/JWTUtilsPayloadKeyOptions.md +5 -5
- package/docs/reference/interfaces/JWTUtilsPayloadOptions.md +3 -3
- package/docs/reference/interfaces/JWTUtilsPayloadPasswordOptions.md +6 -6
- package/docs/reference/interfaces/NewEvent.md +2 -2
- package/docs/reference/interfaces/OriginSettings.md +3 -3
- package/docs/reference/interfaces/SlackConfig.md +4 -4
- package/docs/reference/interfaces/SmtpAuth.md +3 -3
- package/docs/reference/interfaces/SmtpConfig.md +5 -5
- package/docs/reference/interfaces/Template.md +13 -13
- package/docs/reference/interfaces/TemplateMapBase.md +1 -1
- package/docs/reference/interfaces/TwilioConfig.md +4 -4
- package/docs/reference/interfaces/WorkerMessage.md +3 -3
- package/docs/reference/interfaces/WorkerOptions.md +6 -6
- package/docs/reference/type-aliases/BooleanFunc.md +1 -1
- package/docs/reference/type-aliases/TemplateMap.md +1 -1
- package/docs/reference/type-aliases/WorkerCallback.md +1 -1
- package/docs/reference/variables/Logger.md +2 -2
- package/package.json +2 -2
|
@@ -17,11 +17,59 @@ export class ObjectFactory {
|
|
|
17
17
|
this.classes = new Map();
|
|
18
18
|
/** A map for the unique name to the intance of a particular class type. */
|
|
19
19
|
this.instances = new Map();
|
|
20
|
+
/** Cache of prototype-chain metadata keyed by constructor function. WeakMap allows GC of dropped classes. */
|
|
21
|
+
this._metadataCache = new WeakMap();
|
|
22
|
+
/** Secondary index: className → first registered instance key, for O(1) getInstance() fallback. */
|
|
23
|
+
this._firstByClass = new Map();
|
|
20
24
|
this.config = config;
|
|
21
25
|
this.logger = logger ? logger : Logger();
|
|
22
26
|
// Add ourself so it can be injected/retrieved
|
|
23
27
|
this.instances.set(`${ObjectFactory.name}:default`, this);
|
|
24
28
|
}
|
|
29
|
+
/** Walks the prototype chain once for `obj` and caches the discovered decorator metadata on the constructor. */
|
|
30
|
+
_getOrBuildMetadata(obj) {
|
|
31
|
+
const ctor = obj.constructor;
|
|
32
|
+
if (this._metadataCache.has(ctor)) {
|
|
33
|
+
return this._metadataCache.get(ctor);
|
|
34
|
+
}
|
|
35
|
+
const meta = {
|
|
36
|
+
injectConfig: [],
|
|
37
|
+
injectLogger: [],
|
|
38
|
+
injectObject: [],
|
|
39
|
+
initMethods: [],
|
|
40
|
+
};
|
|
41
|
+
let proto = Object.getPrototypeOf(obj);
|
|
42
|
+
while (proto) {
|
|
43
|
+
for (const member of Object.getOwnPropertyNames(proto)) {
|
|
44
|
+
if (!meta.destroyMethod) {
|
|
45
|
+
const hasDestructor = Reflect.getMetadata("rrst:destructor", proto, member);
|
|
46
|
+
if (hasDestructor) {
|
|
47
|
+
meta.destroyMethod = member;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const hasInit = Reflect.getMetadata("rrst:initialize", proto, member);
|
|
51
|
+
if (hasInit) {
|
|
52
|
+
meta.initMethods.push(member);
|
|
53
|
+
}
|
|
54
|
+
const injectConfig = Reflect.getMetadata("rrst:injectConfig", proto, member);
|
|
55
|
+
if (injectConfig) {
|
|
56
|
+
const configDefault = Reflect.getMetadata("rrst:injectConfigDefault", proto, member);
|
|
57
|
+
meta.injectConfig.push({ member, path: injectConfig, configDefault });
|
|
58
|
+
}
|
|
59
|
+
const injectLogger = Reflect.getMetadata("rrst:injectLogger", proto, member);
|
|
60
|
+
if (injectLogger) {
|
|
61
|
+
meta.injectLogger.push(member);
|
|
62
|
+
}
|
|
63
|
+
const injectObject = Reflect.getMetadata("rrst:injectObject", proto, member);
|
|
64
|
+
if (injectObject) {
|
|
65
|
+
meta.injectObject.push({ member, type: injectObject.type, options: injectObject.options });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
proto = Object.getPrototypeOf(proto);
|
|
69
|
+
}
|
|
70
|
+
this._metadataCache.set(ctor, meta);
|
|
71
|
+
return meta;
|
|
72
|
+
}
|
|
25
73
|
/**
|
|
26
74
|
* Destroys the specified objects. If `undefined` is passed in, all objects managed by the factory are destroyed.
|
|
27
75
|
*/
|
|
@@ -45,25 +93,11 @@ export class ObjectFactory {
|
|
|
45
93
|
// Go through each object and call its destructor, if available
|
|
46
94
|
for (const obj of objs) {
|
|
47
95
|
const name = obj.name ?? obj._name;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
while (proto) {
|
|
51
|
-
for (const member of Object.getOwnPropertyNames(proto)) {
|
|
52
|
-
const hasDestructor = Reflect.getMetadata("rrst:destructor", proto, member);
|
|
53
|
-
if (hasDestructor) {
|
|
54
|
-
destroyFunc = obj[member];
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (destroyFunc) {
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
proto = Object.getPrototypeOf(proto);
|
|
62
|
-
}
|
|
63
|
-
if (destroyFunc) {
|
|
96
|
+
const meta = this._getOrBuildMetadata(obj);
|
|
97
|
+
if (meta.destroyMethod) {
|
|
64
98
|
try {
|
|
65
99
|
this.logger.debug("Destroying object: " + name);
|
|
66
|
-
const boundFunc =
|
|
100
|
+
const boundFunc = obj[meta.destroyMethod].bind(obj);
|
|
67
101
|
const result = boundFunc();
|
|
68
102
|
if (result instanceof Promise) {
|
|
69
103
|
await result;
|
|
@@ -81,6 +115,7 @@ export class ObjectFactory {
|
|
|
81
115
|
*/
|
|
82
116
|
clear() {
|
|
83
117
|
this.instances.clear();
|
|
118
|
+
this._firstByClass.clear();
|
|
84
119
|
}
|
|
85
120
|
/**
|
|
86
121
|
* Deletes all instantiated objects and registered class types.
|
|
@@ -94,67 +129,48 @@ export class ObjectFactory {
|
|
|
94
129
|
* @param obj The object to initialize with injected defaults
|
|
95
130
|
*/
|
|
96
131
|
initialize(obj) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (injectConfig) {
|
|
104
|
-
const defaultValue = Reflect.getMetadata("rrst:injectConfigDefault", proto, member);
|
|
105
|
-
// If the value is a string, then it must be a path to a specific variable desired
|
|
106
|
-
if (typeof injectConfig === "string") {
|
|
107
|
-
const value = this.config?.get(injectConfig);
|
|
108
|
-
if (value !== undefined) {
|
|
109
|
-
obj[member] = value;
|
|
110
|
-
}
|
|
111
|
-
else if (defaultValue !== undefined) {
|
|
112
|
-
obj[member] = defaultValue;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
throw new Error("No configuration variable is defined at path: " + injectConfig);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
// No specific variable is desired, inject the whole config object
|
|
120
|
-
obj[member] = this.config;
|
|
121
|
-
}
|
|
132
|
+
const meta = this._getOrBuildMetadata(obj);
|
|
133
|
+
for (const { member, path, configDefault } of meta.injectConfig) {
|
|
134
|
+
if (typeof path === "string") {
|
|
135
|
+
const value = this.config?.get(path);
|
|
136
|
+
if (value !== undefined) {
|
|
137
|
+
obj[member] = value;
|
|
122
138
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (injectLogger) {
|
|
126
|
-
obj[member] = this.logger;
|
|
139
|
+
else if (configDefault !== undefined) {
|
|
140
|
+
obj[member] = configDefault;
|
|
127
141
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (injectObject) {
|
|
131
|
-
// First register the type just in case it hasn't been done yet
|
|
132
|
-
this.register(injectObject.type);
|
|
133
|
-
// Now retrieve the instance for the given name
|
|
134
|
-
const instance = this.newInstance(injectObject.type, injectObject.options);
|
|
135
|
-
if (instance instanceof Promise) {
|
|
136
|
-
// Wait for the final value to resolve before setting assigning
|
|
137
|
-
instance
|
|
138
|
-
.then((val) => {
|
|
139
|
-
obj[member] = val;
|
|
140
|
-
})
|
|
141
|
-
.catch((err) => {
|
|
142
|
-
this.logger.error(`Failed to instantiate dependency. Type=${injectObject.type}, Parent=${obj._fqn}, Member=${member}`);
|
|
143
|
-
this.logger.debug(err);
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
obj[member] = instance;
|
|
148
|
-
}
|
|
142
|
+
else {
|
|
143
|
+
throw new Error("No configuration variable is defined at path: " + path);
|
|
149
144
|
}
|
|
150
145
|
}
|
|
151
|
-
|
|
146
|
+
else {
|
|
147
|
+
obj[member] = this.config;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const member of meta.injectLogger) {
|
|
151
|
+
obj[member] = this.logger;
|
|
152
|
+
}
|
|
153
|
+
for (const { member, type, options } of meta.injectObject) {
|
|
154
|
+
this.register(type);
|
|
155
|
+
const instance = this.newInstance(type, options);
|
|
156
|
+
if (instance instanceof Promise) {
|
|
157
|
+
instance
|
|
158
|
+
.then((val) => {
|
|
159
|
+
obj[member] = val;
|
|
160
|
+
})
|
|
161
|
+
.catch((err) => {
|
|
162
|
+
this.logger.error(`Failed to instantiate dependency. Type=${type}, Parent=${obj._fqn}, Member=${member}`);
|
|
163
|
+
this.logger.debug(err);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
obj[member] = instance;
|
|
168
|
+
}
|
|
152
169
|
}
|
|
153
170
|
// Call any @Init functions
|
|
154
171
|
const promises = [];
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
const result = func.bind(obj)();
|
|
172
|
+
for (const methodName of meta.initMethods) {
|
|
173
|
+
const result = obj[methodName].bind(obj)();
|
|
158
174
|
if (result instanceof Promise) {
|
|
159
175
|
promises.push(result);
|
|
160
176
|
}
|
|
@@ -233,13 +249,11 @@ export class ObjectFactory {
|
|
|
233
249
|
// First search for the exact name or with `:default`
|
|
234
250
|
let result = this.instances.get(search.includes(":") ? search : search + ":default");
|
|
235
251
|
// If we didn't found a result and we weren't given an exact name to search, find the first
|
|
236
|
-
// instance of the class.
|
|
252
|
+
// instance of the class using the O(1) secondary index.
|
|
237
253
|
if (!result && !search.includes(":")) {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
break;
|
|
242
|
-
}
|
|
254
|
+
const firstKey = this._firstByClass.get(search);
|
|
255
|
+
if (firstKey) {
|
|
256
|
+
result = this.instances.get(firstKey);
|
|
243
257
|
}
|
|
244
258
|
}
|
|
245
259
|
return result;
|
|
@@ -298,6 +312,10 @@ export class ObjectFactory {
|
|
|
298
312
|
value: name,
|
|
299
313
|
});
|
|
300
314
|
this.instances.set(name, instance);
|
|
315
|
+
// Populate secondary index for O(1) getInstance() fallback
|
|
316
|
+
if (!this._firstByClass.has(className)) {
|
|
317
|
+
this._firstByClass.set(className, name);
|
|
318
|
+
}
|
|
301
319
|
}
|
|
302
320
|
// Now initialize the object with any injectable defaults. This must happen after we add the instance
|
|
303
321
|
// to our internal map so that circular dependencies due not cause endless cycles of creation/initialization.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectFactory.js","sourceRoot":"","sources":["../../src/ObjectFactory.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ObjectFactory.js","sourceRoot":"","sources":["../../src/ObjectFactory.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAuBpC;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAmBtB,YAAY,MAAY,EAAE,MAAY;QAlBtC,yEAAyE;QACzD,YAAO,GAAqB,IAAI,GAAG,EAAE,CAAC;QAKtD,2EAA2E;QAC3D,cAAS,GAAqB,IAAI,GAAG,EAAE,CAAC;QAKxD,6GAA6G;QAC5F,mBAAc,GAAqC,IAAI,OAAO,EAAE,CAAC;QAElF,mGAAmG;QAClF,kBAAa,GAAwB,IAAI,GAAG,EAAE,CAAC;QAG5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,8CAA8C;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,gHAAgH;IACxG,mBAAmB,CAAC,GAAQ;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,WAAuB,CAAC;QACzC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAkB;YACxB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;SAClB,CAAC;QAEF,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,KAAK,EAAE,CAAC;YACX,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACtB,MAAM,aAAa,GAAY,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBACrF,IAAI,aAAa,EAAE,CAAC;wBAChB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;oBAChC,CAAC;gBACL,CAAC;gBAED,MAAM,OAAO,GAAY,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC/E,IAAI,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC;gBAED,MAAM,YAAY,GAAQ,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClF,IAAI,YAAY,EAAE,CAAC;oBACf,MAAM,aAAa,GAAQ,OAAO,CAAC,WAAW,CAAC,0BAA0B,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBAC1F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBAED,MAAM,YAAY,GAAQ,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClF,IAAI,YAAY,EAAE,CAAC;oBACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;gBAED,MAAM,YAAY,GAAQ,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClF,IAAI,YAAY,EAAE,CAAC;oBACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/F,CAAC;YACL,CAAC;YACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,IAAkB;QACnC,kEAAkE;QAClE,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;gBACrB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,4EAA4E;YAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;QAED,+DAA+D;QAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,GAAW,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAc,GAAG,CAAC,IAAI,CAAC,aAAa,CAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5E,MAAM,MAAM,GAAQ,SAAS,EAAE,CAAC;oBAChC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;wBAC5B,MAAM,MAAM,CAAC;oBACjB,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;oBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK;QACR,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,QAAQ;QACX,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,UAAU,CAAI,GAAQ;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE3C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAQ,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtB,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;gBACxB,CAAC;qBAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBACrC,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,IAAI,CAAC,CAAC;gBAC7E,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,CAAC;QAED,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,QAAQ,YAAY,OAAO,EAAE,CAAC;gBAC9B,QAAQ;qBACH,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACV,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;gBACtB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,0CAA0C,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,MAAM,EAAE,CACzF,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,MAAM,GAAS,GAAG,CAAC,UAAU,CAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,+EAA+E;YAC/E,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzC,IAAI,CAAC;oBACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC7B,MAAM,OAAO,CAAC;oBAClB,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,CAAC;QACf,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,GAAQ;QAC1B,MAAM,OAAO,GAAe,EAAE,CAAC;QAE/B,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,UAAU,GAAY,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAChF,IAAI,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,CAAC;QACL,CAAC;QAED,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,KAAK,EAAE,CAAC;YACX,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,UAAU,GAAY,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClF,IAAI,UAAU,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACV,CAAC;YACL,CAAC;YACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,gCAAgC;IACzB,WAAW,CAAI,UAAe;QACjC,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,GAAG,UAAU,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,MAAM;gBACF,UAAU,IAAI,UAAU,CAAC,IAAI;oBACzB,CAAC,CAAC,UAAU,CAAC,IAAI;oBACjB,CAAC,CAAC,UAAU,CAAC,WAAW;wBACtB,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI;wBAC7B,CAAC,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QAED,qDAAqD;QACrD,IAAI,MAAM,GAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACxF,2FAA2F;QAC3F,wDAAwD;QACxD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,WAAW,CAAI,IAAS,EAAE,OAAyB;QACtD,IAAI,IAAI,GAAW,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAY,OAAO,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,MAAM,IAAI,GAAU,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QAExC,8CAA8C;QAC9C,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAEnG,0FAA0F;QAC1F,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,IAAI,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;QAClC,CAAC;QAED,2EAA2E;QAC3E,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpD,CAAC;QAED,iEAAiE;QACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,qCAAqC;QACrC,MAAM,KAAK,GAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,SAAS,CAAC,CAAC;QAC9D,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,SAAS,gBAAgB,IAAI,GAAG,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAEvC,mCAAmC;QACnC,MAAM,CAAC,cAAc,CAAC,QAAe,EAAE,MAAM,EAAE;YAC3C,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,SAAS;SACnB,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,IAAI,EAAE,CAAC;YACP,8BAA8B;YAC9B,MAAM,CAAC,cAAc,CAAC,QAAe,EAAE,OAAO,EAAE;gBAC5C,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEnC,2DAA2D;YAC3D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QAED,qGAAqG;QACrG,6GAA6G;QAC7G,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAU,EAAE,GAAY;QACpC,MAAM,IAAI,GAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,QAAQ,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;YACzE,OAAO;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;CACJ"}
|
package/dist/lib/StringUtils.js
CHANGED
|
@@ -43,18 +43,22 @@ export class StringUtils {
|
|
|
43
43
|
*/
|
|
44
44
|
static findAndReplace(contents, variables) {
|
|
45
45
|
let output = contents;
|
|
46
|
+
// Pre-compile one regex per key (O(n)) rather than creating new RegExp inside nested loops (O(n²))
|
|
47
|
+
const regexCache = new Map();
|
|
48
|
+
for (const key in variables) {
|
|
49
|
+
regexCache.set(key, new RegExp("(\\{\\{" + key + "\\}\\})", "g"));
|
|
50
|
+
}
|
|
46
51
|
// Go through all variables and perform replacement
|
|
47
|
-
for (
|
|
52
|
+
for (const key in variables) {
|
|
48
53
|
// Perform replacement on the variable value itself. This allows nested variable replacement.
|
|
49
54
|
if (variables[key]) {
|
|
50
55
|
let value = variables[key];
|
|
51
|
-
for (
|
|
56
|
+
for (const key2 in variables) {
|
|
52
57
|
if (variables[key2]) {
|
|
53
|
-
|
|
54
|
-
value = value.toString().replace(new RegExp("(\\{\\{" + key2 + "\\}\\})", "g"), value2);
|
|
58
|
+
value = value.toString().replace(regexCache.get(key2), variables[key2]);
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
|
-
output = output.replace(
|
|
61
|
+
output = output.replace(regexCache.get(key), value);
|
|
58
62
|
}
|
|
59
63
|
}
|
|
60
64
|
return output;
|
|
@@ -74,13 +78,13 @@ export class StringUtils {
|
|
|
74
78
|
* @returns {string} The fully replaced contents of the string.
|
|
75
79
|
*/
|
|
76
80
|
static replaceAll(str, match, prefix) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return
|
|
81
|
+
// Build a single global regex and replace in one O(n) pass instead of looping with repeated .match()
|
|
82
|
+
const global = typeof match === "string"
|
|
83
|
+
? new RegExp(match, "g")
|
|
84
|
+
: match.global
|
|
85
|
+
? match
|
|
86
|
+
: new RegExp(match.source, match.flags + "g");
|
|
87
|
+
return str.replace(global, (_full, capture) => prefix + capture);
|
|
84
88
|
}
|
|
85
89
|
/**
|
|
86
90
|
* 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,GAAW,QAAQ,CAAC;QAE9B,mDAAmD;QACnD,KAAK,
|
|
1
|
+
{"version":3,"file":"StringUtils.js","sourceRoot":"","sources":["../../src/StringUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,13 +50,13 @@ export class EventUtils {
|
|
|
50
50
|
* @param logger The logging utility to use.
|
|
51
51
|
* @param jwtToken The user's JWT token to send telemetry events on behalf of.
|
|
52
52
|
*/
|
|
53
|
-
static init(config, logger, jwtToken) {
|
|
53
|
+
static async init(config, logger, jwtToken) {
|
|
54
54
|
EventUtils.config = config;
|
|
55
55
|
EventUtils.listeners = new Map();
|
|
56
56
|
EventUtils.logger = logger;
|
|
57
57
|
EventUtils.token = jwtToken;
|
|
58
58
|
// Extract the user id from the token
|
|
59
|
-
const payload = JWTUtils.decodeToken(config.get("auth"), jwtToken);
|
|
59
|
+
const payload = await JWTUtils.decodeToken(config.get("auth"), jwtToken);
|
|
60
60
|
EventUtils.userId = payload.profile.uid;
|
|
61
61
|
EventUtils.initialized = true;
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TelemetryUtils.js","sourceRoot":"","sources":["../../src/TelemetryUtils.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAYzC;;;;GAIG;AACH,MAAM,OAAO,KAAK;IA+Bd,YAAY,MAAW,EAAE,MAAc,EAAE,IAAc;QAfvD;;WAEG;QACa,cAAS,GAAS,IAAI,IAAI,EAAE,CAAC;QAazC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,WAAW,GAAW,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,yCAAyC;QACzC,MAAM,GAAG,GAAQ,IAAW,CAAC;QAC7B,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YAClB,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC/D,IAAY,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IAQnB;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,CAAC,MAAW,EAAE,MAAW,EAAE,QAAgB;
|
|
1
|
+
{"version":3,"file":"TelemetryUtils.js","sourceRoot":"","sources":["../../src/TelemetryUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,8 +101,9 @@ export class ThreadPool {
|
|
|
101
101
|
}
|
|
102
102
|
// Restart worker thread
|
|
103
103
|
if (options?.restartOnExit && !this.shutdown) {
|
|
104
|
-
|
|
105
|
-
this.
|
|
104
|
+
worker.removeAllListeners();
|
|
105
|
+
const newWorker = this.createWorker(idx, options);
|
|
106
|
+
this.workers[idx] = newWorker;
|
|
106
107
|
}
|
|
107
108
|
});
|
|
108
109
|
worker.on("message", (msg) => {
|
|
@@ -217,13 +218,21 @@ export class ThreadPool {
|
|
|
217
218
|
* @param msg The message to send the next available worker thread.
|
|
218
219
|
*/
|
|
219
220
|
send(msg) {
|
|
220
|
-
const
|
|
221
|
-
|
|
221
|
+
const len = this.workers.length;
|
|
222
|
+
if (len === 0)
|
|
223
|
+
throw new Error("No workers in pool.");
|
|
224
|
+
const startIdx = (this.lastThread + 1) % len;
|
|
225
|
+
let idx = startIdx;
|
|
222
226
|
do {
|
|
223
|
-
worker = this.workers[
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
+
const worker = this.workers[idx];
|
|
228
|
+
if (worker) {
|
|
229
|
+
worker.postMessage(msg);
|
|
230
|
+
this.lastThread = idx;
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
idx = (idx + 1) % len;
|
|
234
|
+
} while (idx !== startIdx);
|
|
235
|
+
throw new Error("No available workers in the pool.");
|
|
227
236
|
}
|
|
228
237
|
/**
|
|
229
238
|
* Sends the provided message to all worker threads in the pool.
|
|
@@ -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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"}
|
package/dist/types/JWTUtils.d.ts
CHANGED
|
@@ -124,9 +124,27 @@ export declare class JWTUtils {
|
|
|
124
124
|
*
|
|
125
125
|
* @param config The JWT configuration to use when generating the token.
|
|
126
126
|
* @param user The user to encode into the token's payload.
|
|
127
|
-
* @param data Additional data to include the token's payload.
|
|
128
127
|
*/
|
|
129
|
-
static
|
|
128
|
+
private static deriveKey;
|
|
129
|
+
/**
|
|
130
|
+
* Generates a new JWT token for the given config and user object. The user object must be a valid RapidREST
|
|
131
|
+
* user.
|
|
132
|
+
*
|
|
133
|
+
* @param config The JWT configuration to use when generating the token.
|
|
134
|
+
* @param user The user to encode into the token's payload.
|
|
135
|
+
*/
|
|
136
|
+
private static deriveKeySync;
|
|
137
|
+
static createToken(config: JWTUtilsConfig, user: JWTUser, data?: any): Promise<string>;
|
|
138
|
+
static createTokenSync(config: JWTUtilsConfig, user: JWTUser, data?: any): string;
|
|
139
|
+
/**
|
|
140
|
+
* Decodes the given JWT authentication token using the provided configuration. If the token is not valid an
|
|
141
|
+
* error is thrown with the reason. Returns the encoded user object payload upon success.
|
|
142
|
+
*
|
|
143
|
+
* @param config The JWT configuration to use when validating the token.
|
|
144
|
+
* @param token The JWT token to validate.
|
|
145
|
+
* @returns The data encoded in the token's payload.
|
|
146
|
+
*/
|
|
147
|
+
static decodeToken(config: JWTUtilsConfig, token: string): Promise<JWTPayload>;
|
|
130
148
|
/**
|
|
131
149
|
* Decodes the given JWT authentication token using the provided configuration. If the token is not valid an
|
|
132
150
|
* error is thrown with the reason. Returns the encoded user object payload upon success.
|
|
@@ -135,5 +153,5 @@ export declare class JWTUtils {
|
|
|
135
153
|
* @param token The JWT token to validate.
|
|
136
154
|
* @returns The data encoded in the token's payload.
|
|
137
155
|
*/
|
|
138
|
-
static
|
|
156
|
+
static decodeTokenSync(config: JWTUtilsConfig, token: string): JWTPayload;
|
|
139
157
|
}
|
package/dist/types/Logger.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Creates a
|
|
2
|
+
* Creates (or retrieves a cached) logger with the specified level and file name to output logs to.
|
|
3
3
|
*
|
|
4
4
|
* @param level The logging level to create the logger with.
|
|
5
5
|
* @param file The name (without an extension) of the file to output logs to.
|
|
@@ -53,6 +53,10 @@ export declare class MessagingUtils {
|
|
|
53
53
|
private twilioConfig;
|
|
54
54
|
private templates;
|
|
55
55
|
private logger?;
|
|
56
|
+
/** Reusable nodemailer transporter created once in init(). */
|
|
57
|
+
private _transporter;
|
|
58
|
+
/** Cache of compiled Handlebars delegates keyed by "<templateName>:<field>". */
|
|
59
|
+
private _compiledTemplates;
|
|
56
60
|
init(): Promise<void>;
|
|
57
61
|
/**
|
|
58
62
|
* Loads the template with the given name and returns its contents as a string.
|
package/dist/types/OASUtils.d.ts
CHANGED
|
@@ -51,4 +51,6 @@ export declare class OASUtils {
|
|
|
51
51
|
* @returns {Promise<any>} A promise whose result will be the loaded OpenAPI Specification as an object.
|
|
52
52
|
*/
|
|
53
53
|
static loadSpec(file: string): Promise<any>;
|
|
54
|
+
/** Clears the spec parse cache. Useful in tests to force re-loading of specs. */
|
|
55
|
+
static clearSpecCache(): void;
|
|
54
56
|
}
|
|
@@ -26,7 +26,13 @@ export declare class ObjectFactory {
|
|
|
26
26
|
readonly instances: Map<string, any>;
|
|
27
27
|
/** The application logging utility. */
|
|
28
28
|
protected logger: any;
|
|
29
|
+
/** Cache of prototype-chain metadata keyed by constructor function. WeakMap allows GC of dropped classes. */
|
|
30
|
+
private readonly _metadataCache;
|
|
31
|
+
/** Secondary index: className → first registered instance key, for O(1) getInstance() fallback. */
|
|
32
|
+
private readonly _firstByClass;
|
|
29
33
|
constructor(config?: any, logger?: any);
|
|
34
|
+
/** Walks the prototype chain once for `obj` and caches the discovered decorator metadata on the constructor. */
|
|
35
|
+
private _getOrBuildMetadata;
|
|
30
36
|
/**
|
|
31
37
|
* Destroys the specified objects. If `undefined` is passed in, all objects managed by the factory are destroyed.
|
|
32
38
|
*/
|
|
@@ -65,7 +65,7 @@ export declare class EventUtils {
|
|
|
65
65
|
* @param logger The logging utility to use.
|
|
66
66
|
* @param jwtToken The user's JWT token to send telemetry events on behalf of.
|
|
67
67
|
*/
|
|
68
|
-
static init(config: any, logger: any, jwtToken: string): void
|
|
68
|
+
static init(config: any, logger: any, jwtToken: string): Promise<void>;
|
|
69
69
|
/**
|
|
70
70
|
* Sends the given event to the telemetry service for permanent recording.
|
|
71
71
|
*
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Config**(`path?`, `defaultValue?`): (`target`, `propertyKey`) => `void`
|
|
10
10
|
|
|
11
|
-
Defined in: [src/decorators/ObjectDecorators.ts:61](https://github.com/rapidrest/core/blob/
|
|
11
|
+
Defined in: [src/decorators/ObjectDecorators.ts:61](https://github.com/rapidrest/core/blob/df82e91f4c858ef61526c7f35789a4199b84d999/src/decorators/ObjectDecorators.ts#L61)
|
|
12
12
|
|
|
13
13
|
Apply this to a property to have a configuration variable be injected at instantiation. If no path is given, the
|
|
14
14
|
global configuration object is injected.
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Destroy**(`target`, `propertyKey`): `void`
|
|
10
10
|
|
|
11
|
-
Defined in: [src/decorators/ObjectDecorators.ts:10](https://github.com/rapidrest/core/blob/
|
|
11
|
+
Defined in: [src/decorators/ObjectDecorators.ts:10](https://github.com/rapidrest/core/blob/df82e91f4c858ef61526c7f35789a4199b84d999/src/decorators/ObjectDecorators.ts#L10)
|
|
12
12
|
|
|
13
13
|
Apply this to a class function to mark it as a destructor to be called by the `ObjectFactory` during cleanup.
|
|
14
14
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Init**(`target`, `propertyKey`, `descriptor`): `void`
|
|
10
10
|
|
|
11
|
-
Defined in: [src/decorators/ObjectDecorators.ts:49](https://github.com/rapidrest/core/blob/
|
|
11
|
+
Defined in: [src/decorators/ObjectDecorators.ts:49](https://github.com/rapidrest/core/blob/df82e91f4c858ef61526c7f35789a4199b84d999/src/decorators/ObjectDecorators.ts#L49)
|
|
12
12
|
|
|
13
13
|
Apply this to a function to be executed once a new object instance has been created and all dependencies injected.
|
|
14
14
|
Note: If the decorated function returns a Promise it is not gauranteed to finish execution before the object is
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Inject**(`type`, `options?`): (`target`, `propertyKey`) => `void`
|
|
10
10
|
|
|
11
|
-
Defined in: [src/decorators/ObjectDecorators.ts:21](https://github.com/rapidrest/core/blob/
|
|
11
|
+
Defined in: [src/decorators/ObjectDecorators.ts:21](https://github.com/rapidrest/core/blob/df82e91f4c858ef61526c7f35789a4199b84d999/src/decorators/ObjectDecorators.ts#L21)
|
|
12
12
|
|
|
13
13
|
Injects an object instance to the decorated property of the given name and type using the provided arguments
|
|
14
14
|
if no object has been created yet.
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Logger**(`target`, `propertyKey`): `void`
|
|
10
10
|
|
|
11
|
-
Defined in: [src/decorators/ObjectDecorators.ts:77](https://github.com/rapidrest/core/blob/
|
|
11
|
+
Defined in: [src/decorators/ObjectDecorators.ts:77](https://github.com/rapidrest/core/blob/df82e91f4c858ef61526c7f35789a4199b84d999/src/decorators/ObjectDecorators.ts#L77)
|
|
12
12
|
|
|
13
13
|
Apply this to a property to have the logger utility injected at instantiation.
|
|
14
14
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Nullable**(`target`, `propertyKey`): `void`
|
|
10
10
|
|
|
11
|
-
Defined in: [src/decorators/ObjectDecorators.ts:90](https://github.com/rapidrest/core/blob/
|
|
11
|
+
Defined in: [src/decorators/ObjectDecorators.ts:90](https://github.com/rapidrest/core/blob/df82e91f4c858ef61526c7f35789a4199b84d999/src/decorators/ObjectDecorators.ts#L90)
|
|
12
12
|
|
|
13
13
|
Apply this to a property to indicate that the value can be `null` or `undefined.`
|
|
14
14
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
> **Validator**(`func`): (`target`, `propertyKey`) => `void`
|
|
10
10
|
|
|
11
|
-
Defined in: [src/decorators/ObjectDecorators.ts:108](https://github.com/rapidrest/core/blob/
|
|
11
|
+
Defined in: [src/decorators/ObjectDecorators.ts:108](https://github.com/rapidrest/core/blob/df82e91f4c858ef61526c7f35789a4199b84d999/src/decorators/ObjectDecorators.ts#L108)
|
|
12
12
|
|
|
13
13
|
Apply this to a property to specify the function that will be used to perform validation of the value.
|
|
14
14
|
|