@decaf-ts/injectable-decorators 1.5.19 → 1.6.1

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.
@@ -0,0 +1,310 @@
1
+ import 'reflect-metadata';
2
+
3
+ /**
4
+ * @summary Injectables Reflection keys
5
+ * @const InjectablesKeys
6
+ *
7
+ * @property {string} REFLECT Reflection injectables base key
8
+ * @property {string} INJECTABLE Reflection injectable key
9
+ * @property {string} INJECT Reflection inject key
10
+ *
11
+ * @memberOf injectable-decorators
12
+ */
13
+ const InjectablesKeys = {
14
+ REFLECT: "inject.db.",
15
+ INJECTABLE: "injectable",
16
+ INJECT: "inject",
17
+ };
18
+
19
+ /**
20
+ * @summary Holds the vairous {@link Injectable}s
21
+ * @class InjectableRegistryImp
22
+ * @implements InjectablesRegistry
23
+ */
24
+ class InjectableRegistryImp {
25
+ constructor() {
26
+ this.cache = {};
27
+ }
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ get(name, ...args) {
32
+ try {
33
+ const innerCache = this.cache[name];
34
+ const buildDef = { name: name };
35
+ if (!innerCache.singleton && !innerCache.instance)
36
+ return this.build(buildDef, ...args);
37
+ return innerCache.instance || this.build(buildDef, ...args);
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
+ }
40
+ catch (e) {
41
+ return undefined;
42
+ }
43
+ }
44
+ /**
45
+ * @inheritDoc
46
+ */
47
+ register(obj, category = undefined, isSingleton = true, force = false) {
48
+ const castObj = obj;
49
+ const constructor = !castObj.name && castObj.constructor;
50
+ if (typeof castObj !== "function" && !constructor)
51
+ throw new Error(`Injectable registering failed. Missing Class name or constructor`);
52
+ const name = category ||
53
+ (constructor && constructor.name && constructor.name !== "Function"
54
+ ? constructor.name
55
+ : castObj.name);
56
+ if (!this.cache[name] || force)
57
+ this.cache[name] = {
58
+ instance: constructor ? obj : undefined,
59
+ constructor: !constructor ? obj : undefined,
60
+ singleton: isSingleton,
61
+ };
62
+ }
63
+ /**
64
+ * @inheritDoc
65
+ */
66
+ build(defs, ...args) {
67
+ const { constructor, singleton } = this.cache[defs.name];
68
+ const instance = new constructor(...args);
69
+ this.cache[defs.name] = {
70
+ instance: instance,
71
+ constructor: constructor,
72
+ singleton: singleton,
73
+ };
74
+ return instance;
75
+ }
76
+ }
77
+
78
+ /**
79
+ * @summary Static class Holding the access to the injectables functions
80
+ *
81
+ * @class Injectables
82
+ * @static
83
+ */
84
+ class Injectables {
85
+ static { this.actingInjectablesRegistry = undefined; }
86
+ constructor() { }
87
+ /**
88
+ * @summary Retrieves the named {@link Injectable} from the registry
89
+ * @param {string} name
90
+ * @param {any[]} args
91
+ */
92
+ static get(name, ...args) {
93
+ return Injectables.getRegistry().get(name, ...args);
94
+ }
95
+ /**
96
+ * @summary registers an injectable constructor
97
+ * @param {Injectable} constructor
98
+ * @param {any[]} args
99
+ *
100
+ */
101
+ static register(constructor, ...args) {
102
+ return Injectables.getRegistry().register(constructor, ...args);
103
+ }
104
+ /**
105
+ * @summary Instantiates an Injectable
106
+ * @param {Record<string, any>} obj
107
+ * @param {any[]} args
108
+ * @return T
109
+ *
110
+ */
111
+ static build(obj, ...args) {
112
+ return Injectables.getRegistry().build(obj, ...args);
113
+ }
114
+ /**
115
+ * @summary Sets a new {@link InjectablesRegistry}
116
+ * @param {InjectablesRegistry} operationsRegistry the new implementation of Registry
117
+ */
118
+ static setRegistry(operationsRegistry) {
119
+ Injectables.actingInjectablesRegistry = operationsRegistry;
120
+ }
121
+ /**
122
+ * @summary Returns the current {@link InjectablesRegistry}
123
+ */
124
+ static getRegistry() {
125
+ if (!Injectables.actingInjectablesRegistry)
126
+ Injectables.actingInjectablesRegistry = new InjectableRegistryImp();
127
+ return Injectables.actingInjectablesRegistry;
128
+ }
129
+ static reset() {
130
+ Injectables.setRegistry(new InjectableRegistryImp());
131
+ }
132
+ static selectiveReset(match) {
133
+ const regexp = typeof match === "string" ? new RegExp(match) : match;
134
+ Injectables.actingInjectablesRegistry["cache"] = Object.entries(Injectables.actingInjectablesRegistry["cache"]).reduce((accum, [key, val]) => {
135
+ if (!key.match(regexp))
136
+ accum[key] = val;
137
+ return accum;
138
+ }, {});
139
+ }
140
+ }
141
+
142
+ /**
143
+ * @summary holds the key for the design type
144
+ * @const TypeKey
145
+ * @memberOf module:injectable-decorators
146
+ */
147
+ const TypeKey = "design:type";
148
+ /**
149
+ * @summary Retrieves the type from the decorators
150
+ * @param {any} model
151
+ * @param {string | symbol} propKey
152
+ * @return {string | undefined}
153
+ *
154
+ * @function geTypeFromDecorators
155
+ *
156
+ * @memberOf module:injectable-decorators
157
+ */
158
+ function getTypeFromDecorator(model, propKey) {
159
+ const typeDef = Reflect.getMetadata(TypeKey, model, propKey);
160
+ return typeDef.name !== "Function" ? typeDef.name : undefined;
161
+ }
162
+
163
+ /**
164
+ * @summary Return the reflection key for injectables
165
+ *
166
+ * @param {string} key
167
+ * @function getInjectKey
168
+ *
169
+ * @memberOf module:injectable-decorators
170
+ */
171
+ const getInjectKey = (key) => InjectablesKeys.REFLECT + key;
172
+ /**
173
+ * @summary Defines a class as an injectable
174
+ *
175
+ * @param {string} [category] defaults to the class Name. (Useful when minification occours and names are changed so we can no longer rely on the class name, or when we want to upcast the Object)
176
+ * @param {boolean} [force] defines if the injectable should override the already existing instance (if any). (only meant for extending decorators
177
+ * @param instanceCallback
178
+ *
179
+ * @function injectable
180
+ *
181
+ * @memberOf module:injectable-decorators.Decorators
182
+ */
183
+ const injectable = (category = undefined, force = false, instanceCallback) =>
184
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
185
+ (original, propertyKey) => {
186
+ const name = category || original.name;
187
+ // the new constructor behaviour
188
+ const newConstructor = function (...args) {
189
+ let inj = Injectables.get(name, ...args);
190
+ if (!inj) {
191
+ Injectables.register(original, name, true, force);
192
+ inj = Injectables.get(name, ...args);
193
+ if (!inj)
194
+ return undefined;
195
+ if (instanceCallback)
196
+ try {
197
+ instanceCallback(inj);
198
+ }
199
+ catch (e) {
200
+ console.error(`Failed to call injectable callback for ${name}: ${e}`);
201
+ }
202
+ }
203
+ const metadata = Object.assign({}, {
204
+ class: name,
205
+ });
206
+ Reflect.defineMetadata(getInjectKey(InjectablesKeys.INJECTABLE), metadata, inj.constructor);
207
+ return inj;
208
+ };
209
+ // copy prototype so instanceof operator still works
210
+ newConstructor.prototype = original.prototype;
211
+ // newConstructor.__proto__ = original.__proto__;
212
+ // Sets the proper constructor name for type verification
213
+ Object.defineProperty(newConstructor, "name", {
214
+ writable: false,
215
+ enumerable: true,
216
+ configurable: false,
217
+ value: original.prototype.constructor.name,
218
+ });
219
+ // return new constructor (will override original)
220
+ return newConstructor;
221
+ };
222
+ /**
223
+ * @summary Allows for the injection of an {@link injectable} decorated dependency
224
+ * @description the property must be typed for the requested dependency.
225
+ *
226
+ * Only concrete classes. No generics are supported
227
+ *
228
+ * Injected properties should be described like so:
229
+ * <pre>
230
+ * class ClassName {
231
+ * ...
232
+ *
233
+ * @inject()
234
+ * propertyName!: InjectableClass;
235
+ *
236
+ * ...
237
+ * }
238
+ * </pre>
239
+ *
240
+ * where InjectableClass is the class you want to inject.
241
+ * Notice the use of '!:' to ensure the transpiler the property will be set outside the constructor but will always be defined
242
+ * For project where minification occours, you should use the category param to ensure the name is the same throughout
243
+ *
244
+ * @param {string} [category] defaults to the class Name. (Useful when minification occours and names are changed so we can no longer rely on the class name, or when we want to upcast the Object)
245
+ * @param {InstanceTransformer} [transformer]
246
+ *
247
+ * @function inject
248
+ *
249
+ * @memberOf module:injectable-decorators.Decorators
250
+ */
251
+ const inject = (category, transformer) => (target, propertyKey) => {
252
+ const values = new WeakMap();
253
+ const name = category || getTypeFromDecorator(target, propertyKey);
254
+ if (!name)
255
+ throw new Error(`Could not get Type from decorator`);
256
+ Reflect.defineMetadata(getInjectKey(InjectablesKeys.INJECT), {
257
+ injectable: name,
258
+ }, target, propertyKey);
259
+ Object.defineProperty(target, propertyKey, {
260
+ configurable: true,
261
+ get() {
262
+ const descriptor = Object.getOwnPropertyDescriptor(target, propertyKey);
263
+ if (descriptor.configurable) {
264
+ Object.defineProperty(this, propertyKey, {
265
+ enumerable: true,
266
+ configurable: false,
267
+ get() {
268
+ let obj = values.get(this);
269
+ if (!obj) {
270
+ obj = Injectables.get(name);
271
+ if (!obj)
272
+ throw new Error(`Could not get Injectable ${name} to inject in ${target.constructor ? target.constructor.name : target.name}'s ${propertyKey}`);
273
+ if (transformer)
274
+ try {
275
+ obj = transformer(obj, target);
276
+ }
277
+ catch (e) {
278
+ console.error(e);
279
+ }
280
+ values.set(this, obj);
281
+ }
282
+ return obj;
283
+ },
284
+ });
285
+ return this[propertyKey];
286
+ }
287
+ },
288
+ });
289
+ };
290
+
291
+ /**
292
+ * @summary Adds a simple Injectables implementation to create singleton instances of an object
293
+ * and easily inject it into other objects
294
+ *
295
+ * @module injectable-decorators
296
+ */
297
+ /**
298
+ * @summary functions that decorate classes or class properties
299
+ * @namespace Decorators
300
+ * @memberOf module:injectable-decorators
301
+ */
302
+ /**
303
+ * @summary Defined on library build. holds the library current version
304
+ * @const VERSION
305
+ * @memberOf module:injectable-decorators
306
+ */
307
+ const VERSION = "1.6.1";
308
+
309
+ export { InjectableRegistryImp, Injectables, InjectablesKeys, TypeKey, VERSION, getTypeFromDecorator, inject, injectable };
310
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZS1kZWNvcmF0b3JzLmVzbS5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiLCIuLi9zcmMvcmVnaXN0cnkudHMiLCIuLi9zcmMvSW5qZWN0YWJsZXMudHMiLCIuLi9zcmMvdXRpbHMudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IEluamVjdGFibGVzIFJlZmxlY3Rpb24ga2V5c1xuICogQGNvbnN0IEluamVjdGFibGVzS2V5c1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRUZMRUNUIFJlZmxlY3Rpb24gaW5qZWN0YWJsZXMgYmFzZSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTkpFQ1RBQkxFIFJlZmxlY3Rpb24gaW5qZWN0YWJsZSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTkpFQ1QgUmVmbGVjdGlvbiBpbmplY3Qga2V5XG4gKlxuICogQG1lbWJlck9mIGluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgSW5qZWN0YWJsZXNLZXlzID0ge1xuICBSRUZMRUNUOiBcImluamVjdC5kYi5cIixcbiAgSU5KRUNUQUJMRTogXCJpbmplY3RhYmxlXCIsXG4gIElOSkVDVDogXCJpbmplY3RcIixcbn07XG4iLCIvKipcbiAqIEBzdW1tYXJ5IGRlZmluZXMgYW4gSW5qZWN0YWJsZSB0eXBlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgdHlwZSBJbmplY3RhYmxlPFQ+ID0geyBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVCB9IHwgVDtcblxuLyoqXG4gKiBAc3VtbWFyeSBJbnRlcmZhY2UgZm9yIGFuIGluamVjdGFibGUgcmVnaXN0cnlcbiAqIEBpbnRlcmZhY2UgSW5qZWN0YWJsZVJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZXRyaWV2ZXMgYW4ge0BsaW5rIEluamVjdGFibGV9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHJldHVybiB7SW5qZWN0YWJsZSB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBJbmplY3RhYmxlPFQ+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZWdpc3RlcnMgYW4gaW5qZWN0YWJsZSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0luamVjdGFibGV9IGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgcmVnaXN0ZXI8VD4oY29uc3RydWN0b3I6IEluamVjdGFibGU8VD4sIC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcblxuICAvKipcbiAgICogQHN1bW1hcnkgSW5zdGFudGlhdGVzIGFuIEluamVjdGFibGVcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBvYmpcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcmV0dXJuIFRcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgYnVpbGQ8VD4ob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCAuLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgSG9sZHMgdGhlIHZhaXJvdXMge0BsaW5rIEluamVjdGFibGV9c1xuICogQGNsYXNzIEluamVjdGFibGVSZWdpc3RyeUltcFxuICogQGltcGxlbWVudHMgSW5qZWN0YWJsZXNSZWdpc3RyeVxuICovXG5leHBvcnQgY2xhc3MgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wIGltcGxlbWVudHMgSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gIHByaXZhdGUgY2FjaGU6IHsgW2luZGV4ZXI6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBnZXQ8VD4obmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFQgfCB1bmRlZmluZWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbm5lckNhY2hlID0gdGhpcy5jYWNoZVtuYW1lXTtcbiAgICAgIGNvbnN0IGJ1aWxkRGVmID0geyBuYW1lOiBuYW1lIH07XG4gICAgICBpZiAoIWlubmVyQ2FjaGUuc2luZ2xldG9uICYmICFpbm5lckNhY2hlLmluc3RhbmNlKVxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZDxUPihidWlsZERlZiwgLi4uYXJncyk7XG4gICAgICByZXR1cm4gaW5uZXJDYWNoZS5pbnN0YW5jZSB8fCB0aGlzLmJ1aWxkPFQ+KGJ1aWxkRGVmLCAuLi5hcmdzKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHJlZ2lzdGVyPFQ+KFxuICAgIG9iajogSW5qZWN0YWJsZTxUPixcbiAgICBjYXRlZ29yeTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIGlzU2luZ2xldG9uOiBib29sZWFuID0gdHJ1ZSxcbiAgICBmb3JjZTogYm9vbGVhbiA9IGZhbHNlXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNhc3RPYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBvYmogYXMgUmVjb3JkPHN0cmluZywgYW55PjtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gIWNhc3RPYmoubmFtZSAmJiBjYXN0T2JqLmNvbnN0cnVjdG9yO1xuICAgIGlmICh0eXBlb2YgY2FzdE9iaiAhPT0gXCJmdW5jdGlvblwiICYmICFjb25zdHJ1Y3RvcilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEluamVjdGFibGUgcmVnaXN0ZXJpbmcgZmFpbGVkLiBNaXNzaW5nIENsYXNzIG5hbWUgb3IgY29uc3RydWN0b3JgXG4gICAgICApO1xuXG4gICAgY29uc3QgbmFtZSA9XG4gICAgICBjYXRlZ29yeSB8fFxuICAgICAgKGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLm5hbWUgJiYgY29uc3RydWN0b3IubmFtZSAhPT0gXCJGdW5jdGlvblwiXG4gICAgICAgID8gKGNvbnN0cnVjdG9yIGFzIHsgW2luZGV4ZXI6IHN0cmluZ106IGFueSB9KS5uYW1lXG4gICAgICAgIDogY2FzdE9iai5uYW1lKTtcblxuICAgIGlmICghdGhpcy5jYWNoZVtuYW1lXSB8fCBmb3JjZSlcbiAgICAgIHRoaXMuY2FjaGVbbmFtZV0gPSB7XG4gICAgICAgIGluc3RhbmNlOiBjb25zdHJ1Y3RvciA/IG9iaiA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29uc3RydWN0b3I6ICFjb25zdHJ1Y3RvciA/IG9iaiA6IHVuZGVmaW5lZCxcbiAgICAgICAgc2luZ2xldG9uOiBpc1NpbmdsZXRvbixcbiAgICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBidWlsZDxUPihkZWZzOiB7IG5hbWU6IHN0cmluZyB9LCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICAgIGNvbnN0IHsgY29uc3RydWN0b3IsIHNpbmdsZXRvbiB9ID0gdGhpcy5jYWNoZVtkZWZzLm5hbWVdO1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGNvbnN0cnVjdG9yKC4uLmFyZ3MpO1xuICAgIHRoaXMuY2FjaGVbZGVmcy5uYW1lXSA9IHtcbiAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgIGNvbnN0cnVjdG9yOiBjb25zdHJ1Y3RvcixcbiAgICAgIHNpbmdsZXRvbjogc2luZ2xldG9uLFxuICAgIH07XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3RhYmxlUmVnaXN0cnlJbXAsXG4gIEluamVjdGFibGVzUmVnaXN0cnksXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5cbi8qKlxuICogQHN1bW1hcnkgU3RhdGljIGNsYXNzIEhvbGRpbmcgdGhlIGFjY2VzcyB0byB0aGUgaW5qZWN0YWJsZXMgZnVuY3Rpb25zXG4gKlxuICogQGNsYXNzIEluamVjdGFibGVzXG4gKiBAc3RhdGljXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmplY3RhYmxlcyB7XG4gIHByaXZhdGUgc3RhdGljIGFjdGluZ0luamVjdGFibGVzUmVnaXN0cnk/OiBJbmplY3RhYmxlc1JlZ2lzdHJ5ID0gdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIG5hbWVkIHtAbGluayBJbmplY3RhYmxlfSBmcm9tIHRoZSByZWdpc3RyeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqL1xuICBzdGF0aWMgZ2V0PFQ+KG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBJbmplY3RhYmxlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuZ2V0UmVnaXN0cnkoKS5nZXQobmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgcmVnaXN0ZXJzIGFuIGluamVjdGFibGUgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbmplY3RhYmxlfSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqL1xuICBzdGF0aWMgcmVnaXN0ZXI8VD4oY29uc3RydWN0b3I6IEluamVjdGFibGU8VD4sIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgcmV0dXJuIEluamVjdGFibGVzLmdldFJlZ2lzdHJ5KCkucmVnaXN0ZXIoY29uc3RydWN0b3IsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEluc3RhbnRpYXRlcyBhbiBJbmplY3RhYmxlXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHJldHVybiBUXG4gICAqXG4gICAqL1xuICBzdGF0aWMgYnVpbGQ8VD4ob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5nZXRSZWdpc3RyeSgpLmJ1aWxkKG9iaiwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgU2V0cyBhIG5ldyB7QGxpbmsgSW5qZWN0YWJsZXNSZWdpc3RyeX1cbiAgICogQHBhcmFtIHtJbmplY3RhYmxlc1JlZ2lzdHJ5fSBvcGVyYXRpb25zUmVnaXN0cnkgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3RyeVxuICAgKi9cbiAgc3RhdGljIHNldFJlZ2lzdHJ5KG9wZXJhdGlvbnNSZWdpc3RyeTogSW5qZWN0YWJsZXNSZWdpc3RyeSkge1xuICAgIEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkgPSBvcGVyYXRpb25zUmVnaXN0cnk7XG4gIH1cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGN1cnJlbnQge0BsaW5rIEluamVjdGFibGVzUmVnaXN0cnl9XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRSZWdpc3RyeSgpIHtcbiAgICBpZiAoIUluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkpXG4gICAgICBJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5ID0gbmV3IEluamVjdGFibGVSZWdpc3RyeUltcCgpO1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5O1xuICB9XG5cbiAgc3RhdGljIHJlc2V0KCkge1xuICAgIEluamVjdGFibGVzLnNldFJlZ2lzdHJ5KG5ldyBJbmplY3RhYmxlUmVnaXN0cnlJbXAoKSk7XG4gIH1cblxuICBzdGF0aWMgc2VsZWN0aXZlUmVzZXQobWF0Y2g6IHN0cmluZyB8IFJlZ0V4cCkge1xuICAgIGNvbnN0IHJlZ2V4cCA9IHR5cGVvZiBtYXRjaCA9PT0gXCJzdHJpbmdcIiA/IG5ldyBSZWdFeHAobWF0Y2gpIDogbWF0Y2g7XG4gICAgKEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkgYXMgYW55KVtcImNhY2hlXCJdID0gT2JqZWN0LmVudHJpZXMoXG4gICAgICAoSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSBhcyBhbnkpW1wiY2FjaGVcIl1cbiAgICApLnJlZHVjZSgoYWNjdW06IFJlY29yZDxzdHJpbmcsIGFueT4sIFtrZXksIHZhbF0pID0+IHtcbiAgICAgIGlmICgha2V5Lm1hdGNoKHJlZ2V4cCkpIGFjY3VtW2tleV0gPSB2YWw7XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSwge30pO1xuICB9XG59XG4iLCJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgaG9sZHMgdGhlIGtleSBmb3IgdGhlIGRlc2lnbiB0eXBlXG4gKiBAY29uc3QgVHlwZUtleVxuICogQG1lbWJlck9mICBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBUeXBlS2V5ID0gXCJkZXNpZ246dHlwZVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgdHlwZSBmcm9tIHRoZSBkZWNvcmF0b3JzXG4gKiBAcGFyYW0ge2FueX0gbW9kZWxcbiAqIEBwYXJhbSB7c3RyaW5nIHwgc3ltYm9sfSBwcm9wS2V5XG4gKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gKlxuICogQGZ1bmN0aW9uIGdlVHlwZUZyb21EZWNvcmF0b3JzXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVGcm9tRGVjb3JhdG9yKFxuICBtb2RlbDogYW55LFxuICBwcm9wS2V5OiBzdHJpbmcgfCBzeW1ib2wsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlRGVmID0gUmVmbGVjdC5nZXRNZXRhZGF0YShUeXBlS2V5LCBtb2RlbCwgcHJvcEtleSk7XG4gIHJldHVybiB0eXBlRGVmLm5hbWUgIT09IFwiRnVuY3Rpb25cIiA/IHR5cGVEZWYubmFtZSA6IHVuZGVmaW5lZDtcbn1cbiIsImltcG9ydCB7IEluamVjdGFibGVzS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZXMgfSBmcm9tIFwiLi9JbmplY3RhYmxlc1wiO1xuaW1wb3J0IHsgZ2V0VHlwZUZyb21EZWNvcmF0b3IgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgcmVmbGVjdGlvbiBrZXkgZm9yIGluamVjdGFibGVzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICogQGZ1bmN0aW9uIGdldEluamVjdEtleVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmNvbnN0IGdldEluamVjdEtleSA9IChrZXk6IHN0cmluZykgPT4gSW5qZWN0YWJsZXNLZXlzLlJFRkxFQ1QgKyBrZXk7XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGNsYXNzIGFzIGFuIGluamVjdGFibGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NhdGVnb3J5XSBkZWZhdWx0cyB0byB0aGUgY2xhc3MgTmFtZS4gKFVzZWZ1bCB3aGVuIG1pbmlmaWNhdGlvbiBvY2NvdXJzIGFuZCBuYW1lcyBhcmUgY2hhbmdlZCBzbyB3ZSBjYW4gbm8gbG9uZ2VyIHJlbHkgb24gdGhlIGNsYXNzIG5hbWUsIG9yIHdoZW4gd2Ugd2FudCB0byB1cGNhc3QgdGhlIE9iamVjdClcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZvcmNlXSBkZWZpbmVzIGlmIHRoZSBpbmplY3RhYmxlIHNob3VsZCBvdmVycmlkZSB0aGUgYWxyZWFkeSBleGlzdGluZyBpbnN0YW5jZSAoaWYgYW55KS4gKG9ubHkgbWVhbnQgZm9yIGV4dGVuZGluZyBkZWNvcmF0b3JzXG4gKiBAcGFyYW0gaW5zdGFuY2VDYWxsYmFja1xuICpcbiAqIEBmdW5jdGlvbiBpbmplY3RhYmxlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnMuRGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgaW5qZWN0YWJsZSA9XG4gIChcbiAgICBjYXRlZ29yeTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIGZvcmNlOiBib29sZWFuID0gZmFsc2UsXG4gICAgaW5zdGFuY2VDYWxsYmFjaz86IChpbnN0YW5jZTogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICApID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgKG9yaWdpbmFsOiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGNhdGVnb3J5IHx8IG9yaWdpbmFsLm5hbWU7XG4gICAgLy8gdGhlIG5ldyBjb25zdHJ1Y3RvciBiZWhhdmlvdXJcbiAgICBjb25zdCBuZXdDb25zdHJ1Y3RvcjogYW55ID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBsZXQgaW5qOiBhbnkgPSBJbmplY3RhYmxlcy5nZXQ8YW55PihuYW1lLCAuLi5hcmdzKTtcbiAgICAgIGlmICghaW5qKSB7XG4gICAgICAgIEluamVjdGFibGVzLnJlZ2lzdGVyKG9yaWdpbmFsLCBuYW1lLCB0cnVlLCBmb3JjZSk7XG4gICAgICAgIGluaiA9IEluamVjdGFibGVzLmdldDxhbnk+KG5hbWUsIC4uLmFyZ3MpO1xuICAgICAgICBpZiAoIWluaikgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAoaW5zdGFuY2VDYWxsYmFjaylcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaW5zdGFuY2VDYWxsYmFjayhpbmopO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBjYWxsIGluamVjdGFibGUgY2FsbGJhY2sgZm9yICR7bmFtZX06ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzOiBuYW1lLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgICBnZXRJbmplY3RLZXkoSW5qZWN0YWJsZXNLZXlzLklOSkVDVEFCTEUpLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgaW5qLmNvbnN0cnVjdG9yXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gaW5qO1xuICAgIH07XG5cbiAgICAvLyBjb3B5IHByb3RvdHlwZSBzbyBpbnN0YW5jZW9mIG9wZXJhdG9yIHN0aWxsIHdvcmtzXG4gICAgbmV3Q29uc3RydWN0b3IucHJvdG90eXBlID0gb3JpZ2luYWwucHJvdG90eXBlO1xuICAgIC8vIG5ld0NvbnN0cnVjdG9yLl9fcHJvdG9fXyA9IG9yaWdpbmFsLl9fcHJvdG9fXztcbiAgICAvLyBTZXRzIHRoZSBwcm9wZXIgY29uc3RydWN0b3IgbmFtZSBmb3IgdHlwZSB2ZXJpZmljYXRpb25cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3Q29uc3RydWN0b3IsIFwibmFtZVwiLCB7XG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBvcmlnaW5hbC5wcm90b3R5cGUuY29uc3RydWN0b3IubmFtZSxcbiAgICB9KTtcbiAgICAvLyByZXR1cm4gbmV3IGNvbnN0cnVjdG9yICh3aWxsIG92ZXJyaWRlIG9yaWdpbmFsKVxuICAgIHJldHVybiBuZXdDb25zdHJ1Y3RvcjtcbiAgfTtcblxuLyoqXG4gKiBAc3VtbWFyeSBmdW5jdGlvbiB3aXRjaCB0cmFuc2Zvcm1zIGEgY2FjaGVkIHtAbGluayBpbmplY3RhYmxlfVxuICpcbiAqIEBwYXJhbSB7YW55fSBpbmplY3RhYmxlXG4gKiBAcGFyYW0ge2FueX0gb2JqIHRoZSBvYmogdGhlIGluamVjdGFibGUgd2lsbCBiZSBpbmplY3RlZCBvblxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbmNlVHJhbnNmb3JtZXIgPSAoaW5qZWN0YWJsZTogYW55LCBvYmo6IGFueSkgPT4gYW55O1xuXG4vKipcbiAqIEBzdW1tYXJ5IEFsbG93cyBmb3IgdGhlIGluamVjdGlvbiBvZiBhbiB7QGxpbmsgaW5qZWN0YWJsZX0gZGVjb3JhdGVkIGRlcGVuZGVuY3lcbiAqIEBkZXNjcmlwdGlvbiB0aGUgcHJvcGVydHkgbXVzdCBiZSB0eXBlZCBmb3IgdGhlIHJlcXVlc3RlZCBkZXBlbmRlbmN5LlxuICpcbiAqIE9ubHkgY29uY3JldGUgY2xhc3Nlcy4gTm8gZ2VuZXJpY3MgYXJlIHN1cHBvcnRlZFxuICpcbiAqIEluamVjdGVkIHByb3BlcnRpZXMgc2hvdWxkIGJlIGRlc2NyaWJlZCBsaWtlIHNvOlxuICogPHByZT5cbiAqICAgICBjbGFzcyBDbGFzc05hbWUge1xuICogICAgICAgICAuLi5cbiAqXG4gKiAgICAgICAgIEBpbmplY3QoKVxuICogICAgICAgICBwcm9wZXJ0eU5hbWUhOiBJbmplY3RhYmxlQ2xhc3M7XG4gKlxuICogICAgICAgICAuLi5cbiAqICAgICB9XG4gKiA8L3ByZT5cbiAqXG4gKiB3aGVyZSBJbmplY3RhYmxlQ2xhc3MgaXMgdGhlIGNsYXNzIHlvdSB3YW50IHRvIGluamVjdC5cbiAqIE5vdGljZSB0aGUgdXNlIG9mICchOicgdG8gZW5zdXJlIHRoZSB0cmFuc3BpbGVyIHRoZSBwcm9wZXJ0eSB3aWxsIGJlIHNldCBvdXRzaWRlIHRoZSBjb25zdHJ1Y3RvciBidXQgd2lsbCBhbHdheXMgYmUgZGVmaW5lZFxuICogRm9yIHByb2plY3Qgd2hlcmUgbWluaWZpY2F0aW9uIG9jY291cnMsIHlvdSBzaG91bGQgdXNlIHRoZSBjYXRlZ29yeSBwYXJhbSB0byBlbnN1cmUgdGhlIG5hbWUgaXMgdGhlIHNhbWUgdGhyb3VnaG91dFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY2F0ZWdvcnldIGRlZmF1bHRzIHRvIHRoZSBjbGFzcyBOYW1lLiAoVXNlZnVsIHdoZW4gbWluaWZpY2F0aW9uIG9jY291cnMgYW5kIG5hbWVzIGFyZSBjaGFuZ2VkIHNvIHdlIGNhbiBubyBsb25nZXIgcmVseSBvbiB0aGUgY2xhc3MgbmFtZSwgb3Igd2hlbiB3ZSB3YW50IHRvIHVwY2FzdCB0aGUgT2JqZWN0KVxuICogQHBhcmFtIHtJbnN0YW5jZVRyYW5zZm9ybWVyfSBbdHJhbnNmb3JtZXJdXG4gKlxuICogQGZ1bmN0aW9uIGluamVjdFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzLkRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdCA9XG4gIChjYXRlZ29yeT86IHN0cmluZywgdHJhbnNmb3JtZXI/OiBJbnN0YW5jZVRyYW5zZm9ybWVyKSA9PlxuICAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIGNvbnN0IG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBjYXRlZ29yeSB8fCBnZXRUeXBlRnJvbURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICBpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGdldCBUeXBlIGZyb20gZGVjb3JhdG9yYCk7XG5cbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0SW5qZWN0S2V5KEluamVjdGFibGVzS2V5cy5JTkpFQ1QpLFxuICAgICAge1xuICAgICAgICBpbmplY3RhYmxlOiBuYW1lLFxuICAgICAgfSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByb3BlcnR5S2V5XG4gICAgKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogYW55KSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIHByb3BlcnR5S2V5XG4gICAgICAgICkgYXMgUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGUpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcGVydHlLZXksIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZ2V0KHRoaXM6IGFueSkge1xuICAgICAgICAgICAgICBsZXQgb2JqID0gdmFsdWVzLmdldCh0aGlzKTtcbiAgICAgICAgICAgICAgaWYgKCFvYmopIHtcbiAgICAgICAgICAgICAgICBvYmogPSBJbmplY3RhYmxlcy5nZXQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFvYmopXG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgZ2V0IEluamVjdGFibGUgJHtuYW1lfSB0byBpbmplY3QgaW4gJHt0YXJnZXQuY29uc3RydWN0b3IgPyB0YXJnZXQuY29uc3RydWN0b3IubmFtZSA6IHRhcmdldC5uYW1lfSdzICR7cHJvcGVydHlLZXl9YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvYmogPSB0cmFuc2Zvcm1lcihvYmosIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsdWVzLnNldCh0aGlzLCBvYmopO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcbiIsIi8qKlxuICogQHN1bW1hcnkgQWRkcyBhIHNpbXBsZSBJbmplY3RhYmxlcyBpbXBsZW1lbnRhdGlvbiB0byBjcmVhdGUgc2luZ2xldG9uIGluc3RhbmNlcyBvZiBhbiBvYmplY3RcbiAqIGFuZCBlYXNpbHkgaW5qZWN0IGl0IGludG8gb3RoZXIgb2JqZWN0c1xuICpcbiAqIEBtb2R1bGUgaW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBmdW5jdGlvbnMgdGhhdCBkZWNvcmF0ZSBjbGFzc2VzIG9yIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBuYW1lc3BhY2UgRGVjb3JhdG9yc1xuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0luamVjdGFibGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWdpc3RyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVkIG9uIGxpYnJhcnkgYnVpbGQuIGhvbGRzIHRoZSBsaWJyYXJ5IGN1cnJlbnQgdmVyc2lvblxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7OztBQVNHO0FBQ1UsTUFBQSxlQUFlLEdBQUc7QUFDN0IsSUFBQSxPQUFPLEVBQUUsWUFBWTtBQUNyQixJQUFBLFVBQVUsRUFBRSxZQUFZO0FBQ3hCLElBQUEsTUFBTSxFQUFFLFFBQVE7OztBQzRCbEI7Ozs7QUFJRztNQUNVLHFCQUFxQixDQUFBO0FBQWxDLElBQUEsV0FBQSxHQUFBO1FBQ1UsSUFBSyxDQUFBLEtBQUEsR0FBK0IsRUFBRTs7QUFFOUM7O0FBRUc7QUFDSCxJQUFBLEdBQUcsQ0FBSSxJQUFZLEVBQUUsR0FBRyxJQUFXLEVBQUE7QUFDakMsUUFBQSxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDbkMsWUFBQSxNQUFNLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDL0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFJLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN6QyxZQUFB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
@@ -66,5 +66,4 @@ class Injectables {
66
66
  }
67
67
  }
68
68
  exports.Injectables = Injectables;
69
-
70
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9JbmplY3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FJb0I7QUFFcEI7Ozs7O0dBS0c7QUFDSCxNQUFhLFdBQVc7YUFDUCw4QkFBeUIsR0FBeUIsU0FBUyxDQUFDO0lBRTNFLGdCQUF1QixDQUFDO0lBRXhCOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFJLElBQVksRUFBRSxHQUFHLElBQVc7UUFDeEMsT0FBTyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUksV0FBMEIsRUFBRSxHQUFHLElBQVc7UUFDM0QsT0FBTyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFJLEdBQXdCLEVBQUUsR0FBRyxJQUFXO1FBQ3RELE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBdUM7UUFDeEQsV0FBVyxDQUFDLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0lBQzdELENBQUM7SUFDRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxXQUFXO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCO1lBQ3hDLFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLGdDQUFxQixFQUFFLENBQUM7UUFDdEUsT0FBTyxXQUFXLENBQUMseUJBQXlCLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLGdDQUFxQixFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFzQjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEUsV0FBVyxDQUFDLHlCQUFpQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JFLFdBQVcsQ0FBQyx5QkFBaUMsQ0FBQyxPQUFPLENBQUMsQ0FDeEQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUEwQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDOztBQS9ESCxrQ0FnRUMiLCJmaWxlIjoiSW5qZWN0YWJsZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3RhYmxlUmVnaXN0cnlJbXAsXG4gIEluamVjdGFibGVzUmVnaXN0cnksXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5cbi8qKlxuICogQHN1bW1hcnkgU3RhdGljIGNsYXNzIEhvbGRpbmcgdGhlIGFjY2VzcyB0byB0aGUgaW5qZWN0YWJsZXMgZnVuY3Rpb25zXG4gKlxuICogQGNsYXNzIEluamVjdGFibGVzXG4gKiBAc3RhdGljXG4gKi9cbmV4cG9ydCBjbGFzcyBJbmplY3RhYmxlcyB7XG4gIHByaXZhdGUgc3RhdGljIGFjdGluZ0luamVjdGFibGVzUmVnaXN0cnk/OiBJbmplY3RhYmxlc1JlZ2lzdHJ5ID0gdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIG5hbWVkIHtAbGluayBJbmplY3RhYmxlfSBmcm9tIHRoZSByZWdpc3RyeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqL1xuICBzdGF0aWMgZ2V0PFQ+KG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBJbmplY3RhYmxlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuZ2V0UmVnaXN0cnkoKS5nZXQobmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgcmVnaXN0ZXJzIGFuIGluamVjdGFibGUgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbmplY3RhYmxlfSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqL1xuICBzdGF0aWMgcmVnaXN0ZXI8VD4oY29uc3RydWN0b3I6IEluamVjdGFibGU8VD4sIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgcmV0dXJuIEluamVjdGFibGVzLmdldFJlZ2lzdHJ5KCkucmVnaXN0ZXIoY29uc3RydWN0b3IsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEluc3RhbnRpYXRlcyBhbiBJbmplY3RhYmxlXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHJldHVybiBUXG4gICAqXG4gICAqL1xuICBzdGF0aWMgYnVpbGQ8VD4ob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5nZXRSZWdpc3RyeSgpLmJ1aWxkKG9iaiwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgU2V0cyBhIG5ldyB7QGxpbmsgSW5qZWN0YWJsZXNSZWdpc3RyeX1cbiAgICogQHBhcmFtIHtJbmplY3RhYmxlc1JlZ2lzdHJ5fSBvcGVyYXRpb25zUmVnaXN0cnkgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3RyeVxuICAgKi9cbiAgc3RhdGljIHNldFJlZ2lzdHJ5KG9wZXJhdGlvbnNSZWdpc3RyeTogSW5qZWN0YWJsZXNSZWdpc3RyeSkge1xuICAgIEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkgPSBvcGVyYXRpb25zUmVnaXN0cnk7XG4gIH1cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGN1cnJlbnQge0BsaW5rIEluamVjdGFibGVzUmVnaXN0cnl9XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRSZWdpc3RyeSgpIHtcbiAgICBpZiAoIUluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkpXG4gICAgICBJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5ID0gbmV3IEluamVjdGFibGVSZWdpc3RyeUltcCgpO1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5O1xuICB9XG5cbiAgc3RhdGljIHJlc2V0KCkge1xuICAgIEluamVjdGFibGVzLnNldFJlZ2lzdHJ5KG5ldyBJbmplY3RhYmxlUmVnaXN0cnlJbXAoKSk7XG4gIH1cblxuICBzdGF0aWMgc2VsZWN0aXZlUmVzZXQobWF0Y2g6IHN0cmluZyB8IFJlZ0V4cCkge1xuICAgIGNvbnN0IHJlZ2V4cCA9IHR5cGVvZiBtYXRjaCA9PT0gXCJzdHJpbmdcIiA/IG5ldyBSZWdFeHAobWF0Y2gpIDogbWF0Y2g7XG4gICAgKEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkgYXMgYW55KVtcImNhY2hlXCJdID0gT2JqZWN0LmVudHJpZXMoXG4gICAgICAoSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSBhcyBhbnkpW1wiY2FjaGVcIl1cbiAgICApLnJlZHVjZSgoYWNjdW06IFJlY29yZDxzdHJpbmcsIGFueT4sIFtrZXksIHZhbF0pID0+IHtcbiAgICAgIGlmICgha2V5Lm1hdGNoKHJlZ2V4cCkpIGFjY3VtW2tleV0gPSB2YWw7XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSwge30pO1xuICB9XG59XG4iXX0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5qZWN0YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvSW5qZWN0YWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBSW9CO0FBRXBCOzs7OztHQUtHO0FBQ0gsTUFBYSxXQUFXO2FBQ1AsOEJBQXlCLEdBQXlCLFNBQVMsQ0FBQztJQUUzRSxnQkFBdUIsQ0FBQztJQUV4Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBSSxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ3hDLE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFJLFdBQTBCLEVBQUUsR0FBRyxJQUFXO1FBQzNELE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBSSxHQUF3QixFQUFFLEdBQUcsSUFBVztRQUN0RCxPQUFPLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQXVDO1FBQ3hELFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQztJQUM3RCxDQUFDO0lBQ0Q7O09BRUc7SUFDSyxNQUFNLENBQUMsV0FBVztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QjtZQUN4QyxXQUFXLENBQUMseUJBQXlCLEdBQUcsSUFBSSxnQ0FBcUIsRUFBRSxDQUFDO1FBQ3RFLE9BQU8sV0FBVyxDQUFDLHlCQUF5QixDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNWLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxnQ0FBcUIsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBc0I7UUFDMUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3BFLFdBQVcsQ0FBQyx5QkFBaUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNyRSxXQUFXLENBQUMseUJBQWlDLENBQUMsT0FBTyxDQUFDLENBQ3hELENBQUMsTUFBTSxDQUFDLENBQUMsS0FBMEIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3pDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQzs7QUEvREgsa0NBZ0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wLFxuICBJbmplY3RhYmxlc1JlZ2lzdHJ5LFxufSBmcm9tIFwiLi9yZWdpc3RyeVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFN0YXRpYyBjbGFzcyBIb2xkaW5nIHRoZSBhY2Nlc3MgdG8gdGhlIGluamVjdGFibGVzIGZ1bmN0aW9uc1xuICpcbiAqIEBjbGFzcyBJbmplY3RhYmxlc1xuICogQHN0YXRpY1xuICovXG5leHBvcnQgY2xhc3MgSW5qZWN0YWJsZXMge1xuICBwcml2YXRlIHN0YXRpYyBhY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5PzogSW5qZWN0YWJsZXNSZWdpc3RyeSA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBuYW1lZCB7QGxpbmsgSW5qZWN0YWJsZX0gZnJvbSB0aGUgcmVnaXN0cnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKi9cbiAgc3RhdGljIGdldDxUPihuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogSW5qZWN0YWJsZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIEluamVjdGFibGVzLmdldFJlZ2lzdHJ5KCkuZ2V0KG5hbWUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJlZ2lzdGVycyBhbiBpbmplY3RhYmxlIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW5qZWN0YWJsZX0gY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKlxuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyPFQ+KGNvbnN0cnVjdG9yOiBJbmplY3RhYmxlPFQ+LCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5nZXRSZWdpc3RyeSgpLnJlZ2lzdGVyKGNvbnN0cnVjdG9yLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBJbnN0YW50aWF0ZXMgYW4gSW5qZWN0YWJsZVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9ialxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqIEByZXR1cm4gVFxuICAgKlxuICAgKi9cbiAgc3RhdGljIGJ1aWxkPFQ+KG9iajogUmVjb3JkPHN0cmluZywgYW55PiwgLi4uYXJnczogYW55W10pOiBUIHtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuZ2V0UmVnaXN0cnkoKS5idWlsZChvYmosIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFNldHMgYSBuZXcge0BsaW5rIEluamVjdGFibGVzUmVnaXN0cnl9XG4gICAqIEBwYXJhbSB7SW5qZWN0YWJsZXNSZWdpc3RyeX0gb3BlcmF0aW9uc1JlZ2lzdHJ5IHRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgUmVnaXN0cnlcbiAgICovXG4gIHN0YXRpYyBzZXRSZWdpc3RyeShvcGVyYXRpb25zUmVnaXN0cnk6IEluamVjdGFibGVzUmVnaXN0cnkpIHtcbiAgICBJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5ID0gb3BlcmF0aW9uc1JlZ2lzdHJ5O1xuICB9XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBjdXJyZW50IHtAbGluayBJbmplY3RhYmxlc1JlZ2lzdHJ5fVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVnaXN0cnkoKSB7XG4gICAgaWYgKCFJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5KVxuICAgICAgSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSA9IG5ldyBJbmplY3RhYmxlUmVnaXN0cnlJbXAoKTtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeTtcbiAgfVxuXG4gIHN0YXRpYyByZXNldCgpIHtcbiAgICBJbmplY3RhYmxlcy5zZXRSZWdpc3RyeShuZXcgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wKCkpO1xuICB9XG5cbiAgc3RhdGljIHNlbGVjdGl2ZVJlc2V0KG1hdGNoOiBzdHJpbmcgfCBSZWdFeHApIHtcbiAgICBjb25zdCByZWdleHAgPSB0eXBlb2YgbWF0Y2ggPT09IFwic3RyaW5nXCIgPyBuZXcgUmVnRXhwKG1hdGNoKSA6IG1hdGNoO1xuICAgIChJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5IGFzIGFueSlbXCJjYWNoZVwiXSA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgKEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkgYXMgYW55KVtcImNhY2hlXCJdXG4gICAgKS5yZWR1Y2UoKGFjY3VtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICBpZiAoIWtleS5tYXRjaChyZWdleHApKSBhY2N1bVtrZXldID0gdmFsO1xuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sIHt9KTtcbiAgfVxufVxuIl19
package/lib/constants.cjs CHANGED
@@ -16,5 +16,4 @@ exports.InjectablesKeys = {
16
16
  INJECTABLE: "injectable",
17
17
  INJECT: "inject",
18
18
  };
19
-
20
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7OztHQVNHO0FBQ1UsUUFBQSxlQUFlLEdBQUc7SUFDN0IsT0FBTyxFQUFFLFlBQVk7SUFDckIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQyIsImZpbGUiOiJjb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IEluamVjdGFibGVzIFJlZmxlY3Rpb24ga2V5c1xuICogQGNvbnN0IEluamVjdGFibGVzS2V5c1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRUZMRUNUIFJlZmxlY3Rpb24gaW5qZWN0YWJsZXMgYmFzZSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTkpFQ1RBQkxFIFJlZmxlY3Rpb24gaW5qZWN0YWJsZSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTkpFQ1QgUmVmbGVjdGlvbiBpbmplY3Qga2V5XG4gKlxuICogQG1lbWJlck9mIGluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgSW5qZWN0YWJsZXNLZXlzID0ge1xuICBSRUZMRUNUOiBcImluamVjdC5kYi5cIixcbiAgSU5KRUNUQUJMRTogXCJpbmplY3RhYmxlXCIsXG4gIElOSkVDVDogXCJpbmplY3RcIixcbn07XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7O0dBU0c7QUFDVSxRQUFBLGVBQWUsR0FBRztJQUM3QixPQUFPLEVBQUUsWUFBWTtJQUNyQixVQUFVLEVBQUUsWUFBWTtJQUN4QixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBJbmplY3RhYmxlcyBSZWZsZWN0aW9uIGtleXNcbiAqIEBjb25zdCBJbmplY3RhYmxlc0tleXNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGTEVDVCBSZWZsZWN0aW9uIGluamVjdGFibGVzIGJhc2Uga2V5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gSU5KRUNUQUJMRSBSZWZsZWN0aW9uIGluamVjdGFibGUga2V5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gSU5KRUNUIFJlZmxlY3Rpb24gaW5qZWN0IGtleVxuICpcbiAqIEBtZW1iZXJPZiBpbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEluamVjdGFibGVzS2V5cyA9IHtcbiAgUkVGTEVDVDogXCJpbmplY3QuZGIuXCIsXG4gIElOSkVDVEFCTEU6IFwiaW5qZWN0YWJsZVwiLFxuICBJTkpFQ1Q6IFwiaW5qZWN0XCIsXG59O1xuIl19
@@ -133,5 +133,4 @@ const inject = (category, transformer) => (target, propertyKey) => {
133
133
  });
134
134
  };
135
135
  exports.inject = inject;
136
-
137
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUE4QztBQUM5QywrQ0FBNEM7QUFDNUMsbUNBQStDO0FBRS9DOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsMkJBQWUsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBRXBFOzs7Ozs7Ozs7O0dBVUc7QUFDSSxNQUFNLFVBQVUsR0FDckIsQ0FDRSxXQUErQixTQUFTLEVBQ3hDLFFBQWlCLEtBQUssRUFDdEIsZ0JBQTBELEVBQzFELEVBQUU7QUFDSiw2REFBNkQ7QUFDN0QsQ0FBQyxRQUFhLEVBQUUsV0FBaUIsRUFBRSxFQUFFO0lBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLGdDQUFnQztJQUNoQyxNQUFNLGNBQWMsR0FBUSxVQUFVLEdBQUcsSUFBVztRQUNsRCxJQUFJLEdBQUcsR0FBUSx5QkFBVyxDQUFDLEdBQUcsQ0FBTSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxHQUFHLEdBQUcseUJBQVcsQ0FBQyxHQUFHLENBQU0sSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFFM0IsSUFBSSxnQkFBZ0I7Z0JBQ2xCLElBQUksQ0FBQztvQkFDSCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztnQkFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO29CQUNoQixPQUFPLENBQUMsS0FBSyxDQUNYLDBDQUEwQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQ3ZELENBQUM7Z0JBQ0osQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUM1QixFQUFFLEVBQ0Y7WUFDRSxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQ0YsQ0FBQztRQUVGLE9BQU8sQ0FBQyxjQUFjLENBQ3BCLFlBQVksQ0FBQywyQkFBZSxDQUFDLFVBQVUsQ0FBQyxFQUN4QyxRQUFRLEVBQ1IsR0FBRyxDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUVGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0lBRUYsb0RBQW9EO0lBQ3BELGNBQWMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUM5QyxpREFBaUQ7SUFDakQseURBQXlEO0lBQ3pELE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtRQUM1QyxRQUFRLEVBQUUsS0FBSztRQUNmLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFlBQVksRUFBRSxLQUFLO1FBQ25CLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJO0tBQzNDLENBQUMsQ0FBQztJQUNILGtEQUFrRDtJQUNsRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDLENBQUM7QUF2RFMsUUFBQSxVQUFVLGNBdURuQjtBQVlKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0ksTUFBTSxNQUFNLEdBQ2pCLENBQUMsUUFBaUIsRUFBRSxXQUFpQyxFQUFFLEVBQUUsQ0FDekQsQ0FBQyxNQUFXLEVBQUUsV0FBaUIsRUFBRSxFQUFFO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFFN0IsTUFBTSxJQUFJLEdBQ1IsUUFBUSxJQUFJLElBQUEsNEJBQW9CLEVBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBRWhFLE9BQU8sQ0FBQyxjQUFjLENBQ3BCLFlBQVksQ0FBQywyQkFBZSxDQUFDLE1BQU0sQ0FBQyxFQUNwQztRQUNFLFVBQVUsRUFBRSxJQUFJO0tBQ2pCLEVBQ0QsTUFBTSxFQUNOLFdBQVcsQ0FDWixDQUFDO0lBRUYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3pDLFlBQVksRUFBRSxJQUFJO1FBQ2xCLEdBQUc7WUFDRCxNQUFNLFVBQVUsR0FBdUIsTUFBTSxDQUFDLHdCQUF3QixDQUNwRSxNQUFNLEVBQ04sV0FBVyxDQUNVLENBQUM7WUFDeEIsSUFBSSxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtvQkFDdkMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFlBQVksRUFBRSxLQUFLO29CQUNuQixHQUFHO3dCQUNELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzs0QkFDVCxHQUFHLEdBQUcseUJBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQzVCLElBQUksQ0FBQyxHQUFHO2dDQUNOLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEJBQTRCLElBQUksaUJBQWlCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLFdBQVcsRUFBRSxDQUMvSCxDQUFDOzRCQUNKLElBQUksV0FBVztnQ0FDYixJQUFJLENBQUM7b0NBQ0gsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0NBQ2pDLENBQUM7Z0NBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQ0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNuQixDQUFDOzRCQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN4QixDQUFDO3dCQUNELE9BQU8sR0FBRyxDQUFDO29CQUNiLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBcERTLFFBQUEsTUFBTSxVQW9EZiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZXNLZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlcyB9IGZyb20gXCIuL0luamVjdGFibGVzXCI7XG5pbXBvcnQgeyBnZXRUeXBlRnJvbURlY29yYXRvciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgUmV0dXJuIHRoZSByZWZsZWN0aW9uIGtleSBmb3IgaW5qZWN0YWJsZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gKiBAZnVuY3Rpb24gZ2V0SW5qZWN0S2V5XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuY29uc3QgZ2V0SW5qZWN0S2V5ID0gKGtleTogc3RyaW5nKSA9PiBJbmplY3RhYmxlc0tleXMuUkVGTEVDVCArIGtleTtcblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgY2xhc3MgYXMgYW4gaW5qZWN0YWJsZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY2F0ZWdvcnldIGRlZmF1bHRzIHRvIHRoZSBjbGFzcyBOYW1lLiAoVXNlZnVsIHdoZW4gbWluaWZpY2F0aW9uIG9jY291cnMgYW5kIG5hbWVzIGFyZSBjaGFuZ2VkIHNvIHdlIGNhbiBubyBsb25nZXIgcmVseSBvbiB0aGUgY2xhc3MgbmFtZSwgb3Igd2hlbiB3ZSB3YW50IHRvIHVwY2FzdCB0aGUgT2JqZWN0KVxuICogQHBhcmFtIHtib29sZWFufSBbZm9yY2VdIGRlZmluZXMgaWYgdGhlIGluamVjdGFibGUgc2hvdWxkIG92ZXJyaWRlIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGluc3RhbmNlIChpZiBhbnkpLiAob25seSBtZWFudCBmb3IgZXh0ZW5kaW5nIGRlY29yYXRvcnNcbiAqIEBwYXJhbSBpbnN0YW5jZUNhbGxiYWNrXG4gKlxuICogQGZ1bmN0aW9uIGluamVjdGFibGVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9ycy5EZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RhYmxlID1cbiAgKFxuICAgIGNhdGVnb3J5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBpbnN0YW5jZUNhbGxiYWNrPzogKGluc3RhbmNlOiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gICkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAob3JpZ2luYWw6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHtcbiAgICBjb25zdCBuYW1lID0gY2F0ZWdvcnkgfHwgb3JpZ2luYWwubmFtZTtcbiAgICAvLyB0aGUgbmV3IGNvbnN0cnVjdG9yIGJlaGF2aW91clxuICAgIGNvbnN0IG5ld0NvbnN0cnVjdG9yOiBhbnkgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICAgIGxldCBpbmo6IGFueSA9IEluamVjdGFibGVzLmdldDxhbnk+KG5hbWUsIC4uLmFyZ3MpO1xuICAgICAgaWYgKCFpbmopIHtcbiAgICAgICAgSW5qZWN0YWJsZXMucmVnaXN0ZXIob3JpZ2luYWwsIG5hbWUsIHRydWUsIGZvcmNlKTtcbiAgICAgICAgaW5qID0gSW5qZWN0YWJsZXMuZ2V0PGFueT4obmFtZSwgLi4uYXJncyk7XG4gICAgICAgIGlmICghaW5qKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChpbnN0YW5jZUNhbGxiYWNrKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpbnN0YW5jZUNhbGxiYWNrKGluaik7XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIGNhbGwgaW5qZWN0YWJsZSBjYWxsYmFjayBmb3IgJHtuYW1lfTogJHtlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3M6IG5hbWUsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXG4gICAgICAgIGdldEluamVjdEtleShJbmplY3RhYmxlc0tleXMuSU5KRUNUQUJMRSksXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICBpbmouY29uc3RydWN0b3JcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBpbmo7XG4gICAgfTtcblxuICAgIC8vIGNvcHkgcHJvdG90eXBlIHNvIGluc3RhbmNlb2Ygb3BlcmF0b3Igc3RpbGwgd29ya3NcbiAgICBuZXdDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBvcmlnaW5hbC5wcm90b3R5cGU7XG4gICAgLy8gbmV3Q29uc3RydWN0b3IuX19wcm90b19fID0gb3JpZ2luYWwuX19wcm90b19fO1xuICAgIC8vIFNldHMgdGhlIHByb3BlciBjb25zdHJ1Y3RvciBuYW1lIGZvciB0eXBlIHZlcmlmaWNhdGlvblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdDb25zdHJ1Y3RvciwgXCJuYW1lXCIsIHtcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IG9yaWdpbmFsLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgIH0pO1xuICAgIC8vIHJldHVybiBuZXcgY29uc3RydWN0b3IgKHdpbGwgb3ZlcnJpZGUgb3JpZ2luYWwpXG4gICAgcmV0dXJuIG5ld0NvbnN0cnVjdG9yO1xuICB9O1xuXG4vKipcbiAqIEBzdW1tYXJ5IGZ1bmN0aW9uIHdpdGNoIHRyYW5zZm9ybXMgYSBjYWNoZWQge0BsaW5rIGluamVjdGFibGV9XG4gKlxuICogQHBhcmFtIHthbnl9IGluamVjdGFibGVcbiAqIEBwYXJhbSB7YW55fSBvYmogdGhlIG9iaiB0aGUgaW5qZWN0YWJsZSB3aWxsIGJlIGluamVjdGVkIG9uXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFuY2VUcmFuc2Zvcm1lciA9IChpbmplY3RhYmxlOiBhbnksIG9iajogYW55KSA9PiBhbnk7XG5cbi8qKlxuICogQHN1bW1hcnkgQWxsb3dzIGZvciB0aGUgaW5qZWN0aW9uIG9mIGFuIHtAbGluayBpbmplY3RhYmxlfSBkZWNvcmF0ZWQgZGVwZW5kZW5jeVxuICogQGRlc2NyaXB0aW9uIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIHR5cGVkIGZvciB0aGUgcmVxdWVzdGVkIGRlcGVuZGVuY3kuXG4gKlxuICogT25seSBjb25jcmV0ZSBjbGFzc2VzLiBObyBnZW5lcmljcyBhcmUgc3VwcG9ydGVkXG4gKlxuICogSW5qZWN0ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgZGVzY3JpYmVkIGxpa2Ugc286XG4gKiA8cHJlPlxuICogICAgIGNsYXNzIENsYXNzTmFtZSB7XG4gKiAgICAgICAgIC4uLlxuICpcbiAqICAgICAgICAgQGluamVjdCgpXG4gKiAgICAgICAgIHByb3BlcnR5TmFtZSE6IEluamVjdGFibGVDbGFzcztcbiAqXG4gKiAgICAgICAgIC4uLlxuICogICAgIH1cbiAqIDwvcHJlPlxuICpcbiAqIHdoZXJlIEluamVjdGFibGVDbGFzcyBpcyB0aGUgY2xhc3MgeW91IHdhbnQgdG8gaW5qZWN0LlxuICogTm90aWNlIHRoZSB1c2Ugb2YgJyE6JyB0byBlbnN1cmUgdGhlIHRyYW5zcGlsZXIgdGhlIHByb3BlcnR5IHdpbGwgYmUgc2V0IG91dHNpZGUgdGhlIGNvbnN0cnVjdG9yIGJ1dCB3aWxsIGFsd2F5cyBiZSBkZWZpbmVkXG4gKiBGb3IgcHJvamVjdCB3aGVyZSBtaW5pZmljYXRpb24gb2Njb3VycywgeW91IHNob3VsZCB1c2UgdGhlIGNhdGVnb3J5IHBhcmFtIHRvIGVuc3VyZSB0aGUgbmFtZSBpcyB0aGUgc2FtZSB0aHJvdWdob3V0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtjYXRlZ29yeV0gZGVmYXVsdHMgdG8gdGhlIGNsYXNzIE5hbWUuIChVc2VmdWwgd2hlbiBtaW5pZmljYXRpb24gb2Njb3VycyBhbmQgbmFtZXMgYXJlIGNoYW5nZWQgc28gd2UgY2FuIG5vIGxvbmdlciByZWx5IG9uIHRoZSBjbGFzcyBuYW1lLCBvciB3aGVuIHdlIHdhbnQgdG8gdXBjYXN0IHRoZSBPYmplY3QpXG4gKiBAcGFyYW0ge0luc3RhbmNlVHJhbnNmb3JtZXJ9IFt0cmFuc2Zvcm1lcl1cbiAqXG4gKiBAZnVuY3Rpb24gaW5qZWN0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnMuRGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgaW5qZWN0ID1cbiAgKGNhdGVnb3J5Pzogc3RyaW5nLCB0cmFuc2Zvcm1lcj86IEluc3RhbmNlVHJhbnNmb3JtZXIpID0+XG4gICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgY29uc3QgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgIGNhdGVnb3J5IHx8IGdldFR5cGVGcm9tRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgIGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZ2V0IFR5cGUgZnJvbSBkZWNvcmF0b3JgKTtcblxuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXG4gICAgICBnZXRJbmplY3RLZXkoSW5qZWN0YWJsZXNLZXlzLklOSkVDVCksXG4gICAgICB7XG4gICAgICAgIGluamVjdGFibGU6IG5hbWUsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXlcbiAgICApO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgcHJvcGVydHlLZXlcbiAgICAgICAgKSBhcyBQcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBnZXQodGhpczogYW55KSB7XG4gICAgICAgICAgICAgIGxldCBvYmogPSB2YWx1ZXMuZ2V0KHRoaXMpO1xuICAgICAgICAgICAgICBpZiAoIW9iaikge1xuICAgICAgICAgICAgICAgIG9iaiA9IEluamVjdGFibGVzLmdldChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIW9iailcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYENvdWxkIG5vdCBnZXQgSW5qZWN0YWJsZSAke25hbWV9IHRvIGluamVjdCBpbiAke3RhcmdldC5jb25zdHJ1Y3RvciA/IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lIDogdGFyZ2V0Lm5hbWV9J3MgJHtwcm9wZXJ0eUtleX1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1lcilcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9iaiA9IHRyYW5zZm9ybWVyKG9iaiwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2V0KHRoaXMsIG9iaik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXNbcHJvcGVydHlLZXldO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xuIl19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUE4QztBQUM5QyxtREFBNEM7QUFDNUMsdUNBQStDO0FBRS9DOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsMkJBQWUsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBRXBFOzs7Ozs7Ozs7O0dBVUc7QUFDSSxNQUFNLFVBQVUsR0FDckIsQ0FDRSxXQUErQixTQUFTLEVBQ3hDLFFBQWlCLEtBQUssRUFDdEIsZ0JBQTBELEVBQzFELEVBQUU7QUFDSiw2REFBNkQ7QUFDN0QsQ0FBQyxRQUFhLEVBQUUsV0FBaUIsRUFBRSxFQUFFO0lBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLGdDQUFnQztJQUNoQyxNQUFNLGNBQWMsR0FBUSxVQUFVLEdBQUcsSUFBVztRQUNsRCxJQUFJLEdBQUcsR0FBUSx5QkFBVyxDQUFDLEdBQUcsQ0FBTSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxHQUFHLEdBQUcseUJBQVcsQ0FBQyxHQUFHLENBQU0sSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFFM0IsSUFBSSxnQkFBZ0I7Z0JBQ2xCLElBQUksQ0FBQztvQkFDSCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztnQkFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO29CQUNoQixPQUFPLENBQUMsS0FB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QyxDQUFDO2dDQUNuQixDQUFDOzRCQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN4QixDQUFDO3dCQUNELE9BQU8sR0FBRyxDQUFDO29CQUNiLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBcERTLFFBQUEsTUFBTSxVQW9EZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGVzS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZXMgfSBmcm9tIFwiLi9JbmplY3RhYmxlc1wiO1xuaW1wb3J0IHsgZ2V0VHlwZUZyb21EZWNvcmF0b3IgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgcmVmbGVjdGlvbiBrZXkgZm9yIGluamVjdGFibGVzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICogQGZ1bmN0aW9uIGdldEluamVjdEtleVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmNvbnN0IGdldEluamVjdEtleSA9IChrZXk6IHN0cmluZykgPT4gSW5qZWN0YWJsZXNLZXlzLlJFRkxFQ1QgKyBrZXk7XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGNsYXNzIGFzIGFuIGluamVjdGFibGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NhdGVnb3J5XSBkZWZhdWx0cyB0byB0aGUgY2xhc3MgTmFtZS4gKFVzZWZ1bCB3aGVuIG1pbmlmaWNhdGlvbiBvY2NvdXJzIGFuZCBuYW1lcyBhcmUgY2hhbmdlZCBzbyB3ZSBjYW4gbm8gbG9uZ2VyIHJlbHkgb24gdGhlIGNsYXNzIG5hbWUsIG9yIHdoZW4gd2Ugd2FudCB0byB1cGNhc3QgdGhlIE9iamVjdClcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZvcmNlXSBkZWZpbmVzIGlmIHRoZSBpbmplY3RhYmxlIHNob3VsZCBvdmVycmlkZSB0aGUgYWxyZWFkeSBleGlzdGluZyBpbnN0YW5jZSAoaWYgYW55KS4gKG9ubHkgbWVhbnQgZm9yIGV4dGVuZGluZyBkZWNvcmF0b3JzXG4gKiBAcGFyYW0gaW5zdGFuY2VDYWxsYmFja1xuICpcbiAqIEBmdW5jdGlvbiBpbmplY3RhYmxlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnMuRGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgaW5qZWN0YWJsZSA9XG4gIChcbiAgICBjYXRlZ29yeTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIGZvcmNlOiBib29sZWFuID0gZmFsc2UsXG4gICAgaW5zdGFuY2VDYWxsYmFjaz86IChpbnN0YW5jZTogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICApID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgKG9yaWdpbmFsOiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGNhdGVnb3J5IHx8IG9yaWdpbmFsLm5hbWU7XG4gICAgLy8gdGhlIG5ldyBjb25zdHJ1Y3RvciBiZWhhdmlvdXJcbiAgICBjb25zdCBuZXdDb25zdHJ1Y3RvcjogYW55ID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBsZXQgaW5qOiBhbnkgPSBJbmplY3RhYmxlcy5nZXQ8YW55PihuYW1lLCAuLi5hcmdzKTtcbiAgICAgIGlmICghaW5qKSB7XG4gICAgICAgIEluamVjdGFibGVzLnJlZ2lzdGVyKG9yaWdpbmFsLCBuYW1lLCB0cnVlLCBmb3JjZSk7XG4gICAgICAgIGluaiA9IEluamVjdGFibGVzLmdldDxhbnk+KG5hbWUsIC4uLmFyZ3MpO1xuICAgICAgICBpZiAoIWluaikgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAoaW5zdGFuY2VDYWxsYmFjaylcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaW5zdGFuY2VDYWxsYmFjayhpbmopO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBjYWxsIGluamVjdGFibGUgY2FsbGJhY2sgZm9yICR7bmFtZX06ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzOiBuYW1lLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgICBnZXRJbmplY3RLZXkoSW5qZWN0YWJsZXNLZXlzLklOSkVDVEFCTEUpLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgaW5qLmNvbnN0cnVjdG9yXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gaW5qO1xuICAgIH07XG5cbiAgICAvLyBjb3B5IHByb3RvdHlwZSBzbyBpbnN0YW5jZW9mIG9wZXJhdG9yIHN0aWxsIHdvcmtzXG4gICAgbmV3Q29uc3RydWN0b3IucHJvdG90eXBlID0gb3JpZ2luYWwucHJvdG90eXBlO1xuICAgIC8vIG5ld0NvbnN0cnVjdG9yLl9fcHJvdG9fXyA9IG9yaWdpbmFsLl9fcHJvdG9fXztcbiAgICAvLyBTZXRzIHRoZSBwcm9wZXIgY29uc3RydWN0b3IgbmFtZSBmb3IgdHlwZSB2ZXJpZmljYXRpb25cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3Q29uc3RydWN0b3IsIFwibmFtZVwiLCB7XG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBvcmlnaW5hbC5wcm90b3R5cGUuY29uc3RydWN0b3IubmFtZSxcbiAgICB9KTtcbiAgICAvLyByZXR1cm4gbmV3IGNvbnN0cnVjdG9yICh3aWxsIG92ZXJyaWRlIG9yaWdpbmFsKVxuICAgIHJldHVybiBuZXdDb25zdHJ1Y3RvcjtcbiAgfTtcblxuLyoqXG4gKiBAc3VtbWFyeSBmdW5jdGlvbiB3aXRjaCB0cmFuc2Zvcm1zIGEgY2FjaGVkIHtAbGluayBpbmplY3RhYmxlfVxuICpcbiAqIEBwYXJhbSB7YW55fSBpbmplY3RhYmxlXG4gKiBAcGFyYW0ge2FueX0gb2JqIHRoZSBvYmogdGhlIGluamVjdGFibGUgd2lsbCBiZSBpbmplY3RlZCBvblxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbmNlVHJhbnNmb3JtZXIgPSAoaW5qZWN0YWJsZTogYW55LCBvYmo6IGFueSkgPT4gYW55O1xuXG4vKipcbiAqIEBzdW1tYXJ5IEFsbG93cyBmb3IgdGhlIGluamVjdGlvbiBvZiBhbiB7QGxpbmsgaW5qZWN0YWJsZX0gZGVjb3JhdGVkIGRlcGVuZGVuY3lcbiAqIEBkZXNjcmlwdGlvbiB0aGUgcHJvcGVydHkgbXVzdCBiZSB0eXBlZCBmb3IgdGhlIHJlcXVlc3RlZCBkZXBlbmRlbmN5LlxuICpcbiAqIE9ubHkgY29uY3JldGUgY2xhc3Nlcy4gTm8gZ2VuZXJpY3MgYXJlIHN1cHBvcnRlZFxuICpcbiAqIEluamVjdGVkIHByb3BlcnRpZXMgc2hvdWxkIGJlIGRlc2NyaWJlZCBsaWtlIHNvOlxuICogPHByZT5cbiAqICAgICBjbGFzcyBDbGFzc05hbWUge1xuICogICAgICAgICAuLi5cbiAqXG4gKiAgICAgICAgIEBpbmplY3QoKVxuICogICAgICAgICBwcm9wZXJ0eU5hbWUhOiBJbmplY3RhYmxlQ2xhc3M7XG4gKlxuICogICAgICAgICAuLi5cbiAqICAgICB9XG4gKiA8L3ByZT5cbiAqXG4gKiB3aGVyZSBJbmplY3RhYmxlQ2xhc3MgaXMgdGhlIGNsYXNzIHlvdSB3YW50IHRvIGluamVjdC5cbiAqIE5vdGljZSB0aGUgdXNlIG9mICchOicgdG8gZW5zdXJlIHRoZSB0cmFuc3BpbGVyIHRoZSBwcm9wZXJ0eSB3aWxsIGJlIHNldCBvdXRzaWRlIHRoZSBjb25zdHJ1Y3RvciBidXQgd2lsbCBhbHdheXMgYmUgZGVmaW5lZFxuICogRm9yIHByb2plY3Qgd2hlcmUgbWluaWZpY2F0aW9uIG9jY291cnMsIHlvdSBzaG91bGQgdXNlIHRoZSBjYXRlZ29yeSBwYXJhbSB0byBlbnN1cmUgdGhlIG5hbWUgaXMgdGhlIHNhbWUgdGhyb3VnaG91dFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY2F0ZWdvcnldIGRlZmF1bHRzIHRvIHRoZSBjbGFzcyBOYW1lLiAoVXNlZnVsIHdoZW4gbWluaWZpY2F0aW9uIG9jY291cnMgYW5kIG5hbWVzIGFyZSBjaGFuZ2VkIHNvIHdlIGNhbiBubyBsb25nZXIgcmVseSBvbiB0aGUgY2xhc3MgbmFtZSwgb3Igd2hlbiB3ZSB3YW50IHRvIHVwY2FzdCB0aGUgT2JqZWN0KVxuICogQHBhcmFtIHtJbnN0YW5jZVRyYW5zZm9ybWVyfSBbdHJhbnNmb3JtZXJdXG4gKlxuICogQGZ1bmN0aW9uIGluamVjdFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzLkRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdCA9XG4gIChjYXRlZ29yeT86IHN0cmluZywgdHJhbnNmb3JtZXI/OiBJbnN0YW5jZVRyYW5zZm9ybWVyKSA9PlxuICAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIGNvbnN0IG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBjYXRlZ29yeSB8fCBnZXRUeXBlRnJvbURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICBpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGdldCBUeXBlIGZyb20gZGVjb3JhdG9yYCk7XG5cbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0SW5qZWN0S2V5KEluamVjdGFibGVzS2V5cy5JTkpFQ1QpLFxuICAgICAge1xuICAgICAgICBpbmplY3RhYmxlOiBuYW1lLFxuICAgICAgfSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByb3BlcnR5S2V5XG4gICAgKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogYW55KSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIHByb3BlcnR5S2V5XG4gICAgICAgICkgYXMgUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGUpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcGVydHlLZXksIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZ2V0KHRoaXM6IGFueSkge1xuICAgICAgICAgICAgICBsZXQgb2JqID0gdmFsdWVzLmdldCh0aGlzKTtcbiAgICAgICAgICAgICAgaWYgKCFvYmopIHtcbiAgICAgICAgICAgICAgICBvYmogPSBJbmplY3RhYmxlcy5nZXQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFvYmopXG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgZ2V0IEluamVjdGFibGUgJHtuYW1lfSB0byBpbmplY3QgaW4gJHt0YXJnZXQuY29uc3RydWN0b3IgPyB0YXJnZXQuY29uc3RydWN0b3IubmFtZSA6IHRhcmdldC5uYW1lfSdzICR7cHJvcGVydHlLZXl9YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvYmogPSB0cmFuc2Zvcm1lcihvYmosIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsdWVzLnNldCh0aGlzLCBvYmopO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Injectable, InjectablesRegistry } from "./registry";
2
+ /**
3
+ * @summary Static class Holding the access to the injectables functions
4
+ *
5
+ * @class Injectables
6
+ * @static
7
+ */
8
+ export declare class Injectables {
9
+ private static actingInjectablesRegistry?;
10
+ private constructor();
11
+ /**
12
+ * @summary Retrieves the named {@link Injectable} from the registry
13
+ * @param {string} name
14
+ * @param {any[]} args
15
+ */
16
+ static get<T>(name: string, ...args: any[]): Injectable<T> | undefined;
17
+ /**
18
+ * @summary registers an injectable constructor
19
+ * @param {Injectable} constructor
20
+ * @param {any[]} args
21
+ *
22
+ */
23
+ static register<T>(constructor: Injectable<T>, ...args: any[]): void;
24
+ /**
25
+ * @summary Instantiates an Injectable
26
+ * @param {Record<string, any>} obj
27
+ * @param {any[]} args
28
+ * @return T
29
+ *
30
+ */
31
+ static build<T>(obj: Record<string, any>, ...args: any[]): T;
32
+ /**
33
+ * @summary Sets a new {@link InjectablesRegistry}
34
+ * @param {InjectablesRegistry} operationsRegistry the new implementation of Registry
35
+ */
36
+ static setRegistry(operationsRegistry: InjectablesRegistry): void;
37
+ /**
38
+ * @summary Returns the current {@link InjectablesRegistry}
39
+ */
40
+ private static getRegistry;
41
+ static reset(): void;
42
+ static selectiveReset(match: string | RegExp): void;
43
+ }
@@ -62,5 +62,4 @@ export class Injectables {
62
62
  }, {});
63
63
  }
64
64
  }
65
-
66
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9JbmplY3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwscUJBQXFCLEdBRXRCLE1BQU0sWUFBWSxDQUFDO0FBRXBCOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7YUFDUCw4QkFBeUIsR0FBeUIsU0FBUyxDQUFDO0lBRTNFLGdCQUF1QixDQUFDO0lBRXhCOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFJLElBQVksRUFBRSxHQUFHLElBQVc7UUFDeEMsT0FBTyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUksV0FBMEIsRUFBRSxHQUFHLElBQVc7UUFDM0QsT0FBTyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFJLEdBQXdCLEVBQUUsR0FBRyxJQUFXO1FBQ3RELE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBdUM7UUFDeEQsV0FBVyxDQUFDLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0lBQzdELENBQUM7SUFDRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxXQUFXO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCO1lBQ3hDLFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDdEUsT0FBTyxXQUFXLENBQUMseUJBQXlCLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFzQjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEUsV0FBVyxDQUFDLHlCQUFpQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JFLFdBQVcsQ0FBQyx5QkFBaUMsQ0FBQyxPQUFPLENBQUMsQ0FDeEQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUEwQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDIiwiZmlsZSI6IkluamVjdGFibGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wLFxuICBJbmplY3RhYmxlc1JlZ2lzdHJ5LFxufSBmcm9tIFwiLi9yZWdpc3RyeVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFN0YXRpYyBjbGFzcyBIb2xkaW5nIHRoZSBhY2Nlc3MgdG8gdGhlIGluamVjdGFibGVzIGZ1bmN0aW9uc1xuICpcbiAqIEBjbGFzcyBJbmplY3RhYmxlc1xuICogQHN0YXRpY1xuICovXG5leHBvcnQgY2xhc3MgSW5qZWN0YWJsZXMge1xuICBwcml2YXRlIHN0YXRpYyBhY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5PzogSW5qZWN0YWJsZXNSZWdpc3RyeSA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBuYW1lZCB7QGxpbmsgSW5qZWN0YWJsZX0gZnJvbSB0aGUgcmVnaXN0cnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKi9cbiAgc3RhdGljIGdldDxUPihuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogSW5qZWN0YWJsZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIEluamVjdGFibGVzLmdldFJlZ2lzdHJ5KCkuZ2V0KG5hbWUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJlZ2lzdGVycyBhbiBpbmplY3RhYmxlIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW5qZWN0YWJsZX0gY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKlxuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyPFQ+KGNvbnN0cnVjdG9yOiBJbmplY3RhYmxlPFQ+LCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5nZXRSZWdpc3RyeSgpLnJlZ2lzdGVyKGNvbnN0cnVjdG9yLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBJbnN0YW50aWF0ZXMgYW4gSW5qZWN0YWJsZVxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9ialxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqIEByZXR1cm4gVFxuICAgKlxuICAgKi9cbiAgc3RhdGljIGJ1aWxkPFQ+KG9iajogUmVjb3JkPHN0cmluZywgYW55PiwgLi4uYXJnczogYW55W10pOiBUIHtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuZ2V0UmVnaXN0cnkoKS5idWlsZChvYmosIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFNldHMgYSBuZXcge0BsaW5rIEluamVjdGFibGVzUmVnaXN0cnl9XG4gICAqIEBwYXJhbSB7SW5qZWN0YWJsZXNSZWdpc3RyeX0gb3BlcmF0aW9uc1JlZ2lzdHJ5IHRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgUmVnaXN0cnlcbiAgICovXG4gIHN0YXRpYyBzZXRSZWdpc3RyeShvcGVyYXRpb25zUmVnaXN0cnk6IEluamVjdGFibGVzUmVnaXN0cnkpIHtcbiAgICBJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5ID0gb3BlcmF0aW9uc1JlZ2lzdHJ5O1xuICB9XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBjdXJyZW50IHtAbGluayBJbmplY3RhYmxlc1JlZ2lzdHJ5fVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVnaXN0cnkoKSB7XG4gICAgaWYgKCFJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5KVxuICAgICAgSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSA9IG5ldyBJbmplY3RhYmxlUmVnaXN0cnlJbXAoKTtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeTtcbiAgfVxuXG4gIHN0YXRpYyByZXNldCgpIHtcbiAgICBJbmplY3RhYmxlcy5zZXRSZWdpc3RyeShuZXcgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wKCkpO1xuICB9XG5cbiAgc3RhdGljIHNlbGVjdGl2ZVJlc2V0KG1hdGNoOiBzdHJpbmcgfCBSZWdFeHApIHtcbiAgICBjb25zdCByZWdleHAgPSB0eXBlb2YgbWF0Y2ggPT09IFwic3RyaW5nXCIgPyBuZXcgUmVnRXhwKG1hdGNoKSA6IG1hdGNoO1xuICAgIChJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5IGFzIGFueSlbXCJjYWNoZVwiXSA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgKEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkgYXMgYW55KVtcImNhY2hlXCJdXG4gICAgKS5yZWR1Y2UoKGFjY3VtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICBpZiAoIWtleS5tYXRjaChyZWdleHApKSBhY2N1bVtrZXldID0gdmFsO1xuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sIHt9KTtcbiAgfVxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5qZWN0YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5qZWN0YWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHFCQUFxQixHQUV0QixNQUFNLFlBQVksQ0FBQztBQUVwQjs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxXQUFXO2FBQ1AsOEJBQXlCLEdBQXlCLFNBQVMsQ0FBQztJQUUzRSxnQkFBdUIsQ0FBQztJQUV4Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBSSxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ3hDLE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFJLFdBQTBCLEVBQUUsR0FBRyxJQUFXO1FBQzNELE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBSSxHQUF3QixFQUFFLEdBQUcsSUFBVztRQUN0RCxPQUFPLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQXVDO1FBQ3hELFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQztJQUM3RCxDQUFDO0lBQ0Q7O09BRUc7SUFDSyxNQUFNLENBQUMsV0FBVztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QjtZQUN4QyxXQUFXLENBQUMseUJBQXlCLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ3RFLE9BQU8sV0FBVyxDQUFDLHlCQUF5QixDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNWLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBc0I7UUFDMUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3BFLFdBQVcsQ0FBQyx5QkFBaUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNyRSxXQUFXLENBQUMseUJBQWlDLENBQUMsT0FBTyxDQUFDLENBQ3hELENBQUMsTUFBTSxDQUFDLENBQUMsS0FBMEIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3pDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIEluamVjdGFibGVSZWdpc3RyeUltcCxcbiAgSW5qZWN0YWJsZXNSZWdpc3RyeSxcbn0gZnJvbSBcIi4vcmVnaXN0cnlcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBTdGF0aWMgY2xhc3MgSG9sZGluZyB0aGUgYWNjZXNzIHRvIHRoZSBpbmplY3RhYmxlcyBmdW5jdGlvbnNcbiAqXG4gKiBAY2xhc3MgSW5qZWN0YWJsZXNcbiAqIEBzdGF0aWNcbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdGFibGVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeT86IEluamVjdGFibGVzUmVnaXN0cnkgPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgbmFtZWQge0BsaW5rIEluamVjdGFibGV9IGZyb20gdGhlIHJlZ2lzdHJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICovXG4gIHN0YXRpYyBnZXQ8VD4obmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IEluamVjdGFibGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5nZXRSZWdpc3RyeSgpLmdldChuYW1lLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZWdpc3RlcnMgYW4gaW5qZWN0YWJsZSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0luamVjdGFibGV9IGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICpcbiAgICovXG4gIHN0YXRpYyByZWdpc3RlcjxUPihjb25zdHJ1Y3RvcjogSW5qZWN0YWJsZTxUPiwgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuZ2V0UmVnaXN0cnkoKS5yZWdpc3Rlcihjb25zdHJ1Y3RvciwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgSW5zdGFudGlhdGVzIGFuIEluamVjdGFibGVcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBvYmpcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcmV0dXJuIFRcbiAgICpcbiAgICovXG4gIHN0YXRpYyBidWlsZDxUPihvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sIC4uLmFyZ3M6IGFueVtdKTogVCB7XG4gICAgcmV0dXJuIEluamVjdGFibGVzLmdldFJlZ2lzdHJ5KCkuYnVpbGQob2JqLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBTZXRzIGEgbmV3IHtAbGluayBJbmplY3RhYmxlc1JlZ2lzdHJ5fVxuICAgKiBAcGFyYW0ge0luamVjdGFibGVzUmVnaXN0cnl9IG9wZXJhdGlvbnNSZWdpc3RyeSB0aGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdHJ5XG4gICAqL1xuICBzdGF0aWMgc2V0UmVnaXN0cnkob3BlcmF0aW9uc1JlZ2lzdHJ5OiBJbmplY3RhYmxlc1JlZ2lzdHJ5KSB7XG4gICAgSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSA9IG9wZXJhdGlvbnNSZWdpc3RyeTtcbiAgfVxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgY3VycmVudCB7QGxpbmsgSW5qZWN0YWJsZXNSZWdpc3RyeX1cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldFJlZ2lzdHJ5KCkge1xuICAgIGlmICghSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSlcbiAgICAgIEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnkgPSBuZXcgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wKCk7XG4gICAgcmV0dXJuIEluamVjdGFibGVzLmFjdGluZ0luamVjdGFibGVzUmVnaXN0cnk7XG4gIH1cblxuICBzdGF0aWMgcmVzZXQoKSB7XG4gICAgSW5qZWN0YWJsZXMuc2V0UmVnaXN0cnkobmV3IEluamVjdGFibGVSZWdpc3RyeUltcCgpKTtcbiAgfVxuXG4gIHN0YXRpYyBzZWxlY3RpdmVSZXNldChtYXRjaDogc3RyaW5nIHwgUmVnRXhwKSB7XG4gICAgY29uc3QgcmVnZXhwID0gdHlwZW9mIG1hdGNoID09PSBcInN0cmluZ1wiID8gbmV3IFJlZ0V4cChtYXRjaCkgOiBtYXRjaDtcbiAgICAoSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSBhcyBhbnkpW1wiY2FjaGVcIl0gPSBPYmplY3QuZW50cmllcyhcbiAgICAgIChJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5IGFzIGFueSlbXCJjYWNoZVwiXVxuICAgICkucmVkdWNlKChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgaWYgKCFrZXkubWF0Y2gocmVnZXhwKSkgYWNjdW1ba2V5XSA9IHZhbDtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCB7fSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @summary Injectables Reflection keys
3
+ * @const InjectablesKeys
4
+ *
5
+ * @property {string} REFLECT Reflection injectables base key
6
+ * @property {string} INJECTABLE Reflection injectable key
7
+ * @property {string} INJECT Reflection inject key
8
+ *
9
+ * @memberOf injectable-decorators
10
+ */
11
+ export declare const InjectablesKeys: {
12
+ REFLECT: string;
13
+ INJECTABLE: string;
14
+ INJECT: string;
15
+ };
@@ -13,5 +13,4 @@ export const InjectablesKeys = {
13
13
  INJECTABLE: "injectable",
14
14
  INJECT: "inject",
15
15
  };
16
-
17
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLE1BQU0sRUFBRSxRQUFRO0NBQ2pCLENBQUMiLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBJbmplY3RhYmxlcyBSZWZsZWN0aW9uIGtleXNcbiAqIEBjb25zdCBJbmplY3RhYmxlc0tleXNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGTEVDVCBSZWZsZWN0aW9uIGluamVjdGFibGVzIGJhc2Uga2V5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gSU5KRUNUQUJMRSBSZWZsZWN0aW9uIGluamVjdGFibGUga2V5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gSU5KRUNUIFJlZmxlY3Rpb24gaW5qZWN0IGtleVxuICpcbiAqIEBtZW1iZXJPZiBpbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEluamVjdGFibGVzS2V5cyA9IHtcbiAgUkVGTEVDVDogXCJpbmplY3QuZGIuXCIsXG4gIElOSkVDVEFCTEU6IFwiaW5qZWN0YWJsZVwiLFxuICBJTkpFQ1Q6IFwiaW5qZWN0XCIsXG59O1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsT0FBTyxFQUFFLFlBQVk7SUFDckIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgSW5qZWN0YWJsZXMgUmVmbGVjdGlvbiBrZXlzXG4gKiBAY29uc3QgSW5qZWN0YWJsZXNLZXlzXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRkxFQ1QgUmVmbGVjdGlvbiBpbmplY3RhYmxlcyBiYXNlIGtleVxuICogQHByb3BlcnR5IHtzdHJpbmd9IElOSkVDVEFCTEUgUmVmbGVjdGlvbiBpbmplY3RhYmxlIGtleVxuICogQHByb3BlcnR5IHtzdHJpbmd9IElOSkVDVCBSZWZsZWN0aW9uIGluamVjdCBrZXlcbiAqXG4gKiBAbWVtYmVyT2YgaW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBJbmplY3RhYmxlc0tleXMgPSB7XG4gIFJFRkxFQ1Q6IFwiaW5qZWN0LmRiLlwiLFxuICBJTkpFQ1RBQkxFOiBcImluamVjdGFibGVcIixcbiAgSU5KRUNUOiBcImluamVjdFwiLFxufTtcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @summary Defines a class as an injectable
3
+ *
4
+ * @param {string} [category] defaults to the class Name. (Useful when minification occours and names are changed so we can no longer rely on the class name, or when we want to upcast the Object)
5
+ * @param {boolean} [force] defines if the injectable should override the already existing instance (if any). (only meant for extending decorators
6
+ * @param instanceCallback
7
+ *
8
+ * @function injectable
9
+ *
10
+ * @memberOf module:injectable-decorators.Decorators
11
+ */
12
+ export declare const injectable: (category?: string | undefined, force?: boolean, instanceCallback?: (instance: any, ...args: any[]) => void) => (original: any, propertyKey?: any) => any;
13
+ /**
14
+ * @summary function witch transforms a cached {@link injectable}
15
+ *
16
+ * @param {any} injectable
17
+ * @param {any} obj the obj the injectable will be injected on
18
+ *
19
+ * @memberOf module:injectable-decorators
20
+ */
21
+ export type InstanceTransformer = (injectable: any, obj: any) => any;
22
+ /**
23
+ * @summary Allows for the injection of an {@link injectable} decorated dependency
24
+ * @description the property must be typed for the requested dependency.
25
+ *
26
+ * Only concrete classes. No generics are supported
27
+ *
28
+ * Injected properties should be described like so:
29
+ * <pre>
30
+ * class ClassName {
31
+ * ...
32
+ *
33
+ * @inject()
34
+ * propertyName!: InjectableClass;
35
+ *
36
+ * ...
37
+ * }
38
+ * </pre>
39
+ *
40
+ * where InjectableClass is the class you want to inject.
41
+ * Notice the use of '!:' to ensure the transpiler the property will be set outside the constructor but will always be defined
42
+ * For project where minification occours, you should use the category param to ensure the name is the same throughout
43
+ *
44
+ * @param {string} [category] defaults to the class Name. (Useful when minification occours and names are changed so we can no longer rely on the class name, or when we want to upcast the Object)
45
+ * @param {InstanceTransformer} [transformer]
46
+ *
47
+ * @function inject
48
+ *
49
+ * @memberOf module:injectable-decorators.Decorators
50
+ */
51
+ export declare const inject: (category?: string, transformer?: InstanceTransformer) => (target: any, propertyKey?: any) => void;