jsii-reflect 1.44.1 → 1.47.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/lib/assembly.d.ts +8 -0
- package/lib/assembly.js +13 -1
- package/package.json +11 -11
- package/test/independent.test.js +3 -8
- package/test/type-system.test.js +8 -1
- package/test/util.d.ts +4 -2
- package/test/util.js +12 -8
package/lib/assembly.d.ts
CHANGED
|
@@ -95,6 +95,14 @@ export declare class Assembly extends ModuleLike {
|
|
|
95
95
|
* Return all submodules, even those transtively nested
|
|
96
96
|
*/
|
|
97
97
|
get allSubmodules(): readonly Submodule[];
|
|
98
|
+
/**
|
|
99
|
+
* All types, even those in submodules and nested submodules.
|
|
100
|
+
*/
|
|
101
|
+
get types(): readonly Type[];
|
|
102
|
+
/**
|
|
103
|
+
* Return all types in the current assembly/submodule and all submodules underneath
|
|
104
|
+
*/
|
|
105
|
+
get allTypes(): readonly Type[];
|
|
98
106
|
findType(fqn: string): Type;
|
|
99
107
|
/**
|
|
100
108
|
* Validate an assembly after loading
|
package/lib/assembly.js
CHANGED
|
@@ -140,6 +140,18 @@ class Assembly extends module_like_1.ModuleLike {
|
|
|
140
140
|
const { submodules } = this._analyzeTypes();
|
|
141
141
|
return Object.values(submodules);
|
|
142
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* All types, even those in submodules and nested submodules.
|
|
145
|
+
*/
|
|
146
|
+
get types() {
|
|
147
|
+
return Object.values(this.typeMap);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Return all types in the current assembly/submodule and all submodules underneath
|
|
151
|
+
*/
|
|
152
|
+
get allTypes() {
|
|
153
|
+
return [...this.types, ...this.allSubmodules.flatMap((s) => s.types)];
|
|
154
|
+
}
|
|
143
155
|
findType(fqn) {
|
|
144
156
|
const type = this.tryFindType(fqn);
|
|
145
157
|
if (!type) {
|
|
@@ -282,4 +294,4 @@ function mapValues(xs, fn) {
|
|
|
282
294
|
}
|
|
283
295
|
return ret;
|
|
284
296
|
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFFbkMsbUNBQW9DO0FBQ3BDLDZDQUEwQztBQUMxQyxpQ0FBa0M7QUFDbEMsMkNBQTRDO0FBQzVDLCtDQUEyQztBQUMzQywyQ0FBd0M7QUFJeEMsTUFBYSxRQUFTLFNBQVEsd0JBQVU7SUFLdEMsWUFBbUIsTUFBa0IsRUFBa0IsSUFBbUI7UUFDeEUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRHVDLFNBQUksR0FBSixJQUFJLENBQWU7SUFFMUUsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxVQUFVO1FBS25CLE9BQU8sSUFBSSxDQUFDLElB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Q0Y7QUFFRCxTQUFTLFNBQVMsQ0FDaEIsRUFBcUIsRUFDckIsRUFBZTtJQUVmLE1BQU0sR0FBRyxHQUFzQixFQUFFLENBQUM7SUFDbEMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNoQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGpzaWkgZnJvbSAnQGpzaWkvc3BlYyc7XG5cbmltcG9ydCB7IENsYXNzVHlwZSB9IGZyb20gJy4vY2xhc3MnO1xuaW1wb3J0IHsgRGVwZW5kZW5jeSB9IGZyb20gJy4vZGVwZW5kZW5jeSc7XG5pbXBvcnQgeyBFbnVtVHlwZSB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBJbnRlcmZhY2VUeXBlIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9kdWxlTGlrZSB9IGZyb20gJy4vbW9kdWxlLWxpa2UnO1xuaW1wb3J0IHsgU3VibW9kdWxlIH0gZnJvbSAnLi9zdWJtb2R1bGUnO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnLi90eXBlLXN5c3RlbSc7XG5cbmV4cG9ydCBjbGFzcyBBc3NlbWJseSBleHRlbmRzIE1vZHVsZUxpa2Uge1xuICBwcml2YXRlIF90eXBlQ2FjaGU/OiB7IFtmcW46IHN0cmluZ106IFR5cGUgfTtcbiAgcHJpdmF0ZSBfc3VibW9kdWxlQ2FjaGU/OiB7IFtmcW46IHN0cmluZ106IFN1Ym1vZHVsZSB9O1xuICBwcml2YXRlIF9kZXBlbmRlbmN5Q2FjaGU/OiB7IFtuYW1lOiBzdHJpbmddOiBEZXBlbmRlbmN5IH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHN5c3RlbTogVHlwZVN5c3RlbSwgcHVibGljIHJlYWRvbmx5IHNwZWM6IGpzaWkuQXNzZW1ibHkpIHtcbiAgICBzdXBlcihzeXN0ZW0pO1xuICB9XG5cbiAgcHVibGljIGdldCBmcW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNwZWMgc2NoZW1hXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNjaGVtYSgpOiBqc2lpLlNjaGVtYVZlcnNpb24ge1xuICAgIHJldHVybiB0aGlzLnNwZWMuc2NoZW1hO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBqc2lpIGNvbXBpbGVyIHRoYXQgd2FzIHVzZWQgdG8gcHJvZHVjZSB0aGlzIEFzc2VtYmx5LlxuICAgKi9cbiAgcHVibGljIGdldCBqc2lpVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNwZWMuanNpaVZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFzc2VtYmx5XG4gICAqL1xuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gb2YgdGhlIGFzc2VtYmx5LCBtYXBzIHRvIFwiZGVzY3JpcHRpb25cIiBmcm9tIHBhY2thZ2UuanNvblxuICAgKiBUaGlzIGlzIHJlcXVpcmVkIHNpbmNlIHNvbWUgcGFja2FnZSBtYW5hZ2VycyAobGlrZSBNYXZlbikgcmVxdWlyZSBpdC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGFzc2VtYmx5LCBpZiBhbnkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG1ldGFkYXRhKCk6IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNwZWMubWV0YWRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVybCB0byB0aGUgcHJvamVjdCBob21lcGFnZS4gTWFwcyB0byBcImhvbWVwYWdlXCIgZnJvbSBwYWNrYWdlLmpzb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhvbWVwYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5ob21lcGFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbW9kdWxlIHJlcG9zaXRvcnksIG1hcHMgdG8gXCJyZXBvc2l0b3J5XCIgZnJvbSBwYWNrYWdlLmpzb25cbiAgICogVGhpcyBpcyByZXF1aXJlZCBzaW5jZSBzb21lIHBhY2thZ2UgbWFuYWdlcnMgKGxpa2UgTWF2ZW4pIHJlcXVpcmUgaXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnkoKToge1xuICAgIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgICByZWFkb25seSBkaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIH0ge1xuICAgIHJldHVybiB0aGlzLnNwZWMucmVwb3NpdG9yeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWFpbiBhdXRob3Igb2YgdGhpcyBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGdldCBhdXRob3IoKToganNpaS5QZXJzb24ge1xuICAgIHJldHVybiB0aGlzLnNwZWMuYXV0aG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udHJpYnV0b3JzIHRvIHRoaXMgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29udHJpYnV0b3JzKCk6IHJlYWRvbmx5IGpzaWkuUGVyc29uW10ge1xuICAgIHJldHVybiB0aGlzLnNwZWMuY29udHJpYnV0b3JzID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZmluZ2VycHJpbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIHNwZWNpZmljYXRpb24gaGFzIGNoYW5nZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbmdlcnByaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5maW5nZXJwcmludDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXNzZW1ibHlcbiAgICovXG4gIHB1YmxpYyBnZXQgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNwZWMudmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgU1BEWCBuYW1lIG9mIHRoZSBsaWNlbnNlIHRoaXMgYXNzZW1ibHkgaXMgZGlzdHJpYnV0ZWQgb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpY2Vuc2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjLmxpY2Vuc2U7XG4gIH1cblxuICAvKipcbiAgICogQSBtYXAgb2YgdGFyZ2V0IG5hbWUgdG8gY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgdXNlZCB3aGVuIGdlbmVyYXRpbmcgcGFja2FnZXMgZm9yXG4gICAqIHZhcmlvdXMgbGFuZ3VhZ2VzLlxuICAgKi9cbiAgcHVibGljIGdldCB0YXJnZXRzKCkge1xuICAgIHJldHVybiB0aGlzLnNwZWMudGFyZ2V0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmNpZXMgb24gb3RoZXIgYXNzZW1ibGllcyAod2l0aCBzZW12ZXIpLCB0aGUga2V5IGlzIHRoZSBKU0lJIGFzc2VtYmx5IG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlcGVuZGVuY2llcygpOiByZWFkb25seSBEZXBlbmRlbmN5W10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9kZXBlbmRlbmNpZXMpLm1hcChcbiAgICAgIChuYW1lKSA9PiB0aGlzLl9kZXBlbmRlbmNpZXNbbmFtZV0sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kRGVwZW5kZW5jeShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkZXAgPSB0aGlzLl9kZXBlbmRlbmNpZXNbbmFtZV07XG4gICAgaWYgKCFkZXApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGVwZW5kZW5jeSAke25hbWV9IG5vdCBmb3VuZCBmb3IgYXNzZW1ibHkgJHt0aGlzLm5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBkZXA7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBpZiBidW5kbGVkIGRlcGVuZGVuY2llcyAodGhlc2UgYXJlIG5vdCBleHBlY3RlZCB0byBiZSBqc2lpIGFzc2VtYmxpZXMpLlxuICAgKi9cbiAgcHVibGljIGdldCBidW5kbGVkKCk6IHsgcmVhZG9ubHkgW21vZHVsZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB0aGlzLnNwZWMuYnVuZGxlZCA/PyB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG9wLWxldmVsIHJlYWRtZSBkb2N1bWVudCBmb3IgdGhpcyBhc3NlbWJseSAoaWYgYW55KS5cbiAgICovXG4gIHB1YmxpYyBnZXQgcmVhZG1lKCkge1xuICAgIHJldHVybiB0aGlzLnNwZWMucmVhZG1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgdGhvc2Ugc3VibW9kdWxlcyBuZXN0ZWQgZGlyZWN0bHkgdW5kZXIgdGhlIGFzc2VtYmx5XG4gICAqL1xuICBwdWJsaWMgZ2V0IHN1Ym1vZHVsZXMoKTogcmVhZG9ubHkgU3VibW9kdWxlW10ge1xuICAgIGNvbnN0IHsgc3VibW9kdWxlcyB9ID0gdGhpcy5fYW5hbHl6ZVR5cGVzKCk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHN1Ym1vZHVsZXMpXG4gICAgICAuZmlsdGVyKChbbmFtZSwgX10pID0+IG5hbWUuc3BsaXQoJy4nKS5sZW5ndGggPT09IDIpXG4gICAgICAubWFwKChbXywgc3VibW9kdWxlXSkgPT4gc3VibW9kdWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHN1Ym1vZHVsZXMsIGV2ZW4gdGhvc2UgdHJhbnN0aXZlbHkgbmVzdGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFsbFN1Ym1vZHVsZXMoKTogcmVhZG9ubHkgU3VibW9kdWxlW10ge1xuICAgIGNvbnN0IHsgc3VibW9kdWxlcyB9ID0gdGhpcy5fYW5hbHl6ZVR5cGVzKCk7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3VibW9kdWxlcyk7XG4gIH1cblxuICBwdWJsaWMgZmluZFR5cGUoZnFuOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50cnlGaW5kVHlwZShmcW4pO1xuICAgIGlmICghdHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUeXBlICcke2Zxbn0nIG5vdCBmb3VuZCBpbiBhc3NlbWJseSAke3RoaXMubmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYW4gYXNzZW1ibHkgYWZ0ZXIgbG9hZGluZ1xuICAgKlxuICAgKiBJZiB0aGUgYXNzZW1ibHkgd2FzIGxvYWRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGNhbGwgdGhpcyB0byB2YWxpZGF0ZVxuICAgKiBpdCBhZnRlciBhbGwuIFRocm93cyBhbiBleGNlcHRpb24gaWYgdmFsaWRhdGlvbiBmYWlscy5cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZSgpIHtcbiAgICBqc2lpLnZhbGlkYXRlQXNzZW1ibHkodGhpcy5zcGVjKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc3VibW9kdWxlTWFwKCk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIFN1Ym1vZHVsZT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYW5hbHl6ZVR5cGVzKCkuc3VibW9kdWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgdHlwZXMgaW4gdGhlIHJvb3Qgb2YgdGhlIGFzc2VtYmx5XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHR5cGVNYXAoKTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgVHlwZT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYW5hbHl6ZVR5cGVzKCkudHlwZXM7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZGVwZW5kZW5jaWVzKCkge1xuICAgIGlmICghdGhpcy5fZGVwZW5kZW5jeUNhY2hlKSB7XG4gICAgICB0aGlzLl9kZXBlbmRlbmN5Q2FjaGUgPSB7fTtcbiAgICAgIGlmICh0aGlzLnNwZWMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyh0aGlzLnNwZWMuZGVwZW5kZW5jaWVzKSkge1xuICAgICAgICAgIHRoaXMuX2RlcGVuZGVuY3lDYWNoZVtuYW1lXSA9IG5ldyBEZXBlbmRlbmN5KFxuICAgICAgICAgICAgdGhpcy5zeXN0ZW0sXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGhpcy5zcGVjLmRlcGVuZGVuY2llc1tuYW1lXSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2RlcGVuZGVuY3lDYWNoZTtcbiAgfVxuXG4gIHByaXZhdGUgX2FuYWx5emVUeXBlcygpIHtcbiAgICBpZiAoIXRoaXMuX3R5cGVDYWNoZSB8fCAhdGhpcy5fc3VibW9kdWxlQ2FjaGUpIHtcbiAgICAgIHRoaXMuX3R5cGVDYWNoZSA9IHt9O1xuXG4gICAgICBjb25zdCBzdWJtb2R1bGVCdWlsZGVycyA9IHRoaXMuZGlzY292ZXJTdWJtb2R1bGVzKCk7XG5cbiAgICAgIGNvbnN0IHRzID0gdGhpcy5zcGVjLnR5cGVzID8/IHt9O1xuICAgICAgZm9yIChjb25zdCBbZnFuLCB0eXBlU3BlY10gb2YgT2JqZWN0LmVudHJpZXModHMpKSB7XG4gICAgICAgIGxldCB0eXBlOiBUeXBlO1xuICAgICAgICBzd2l0Y2ggKHR5cGVTcGVjLmtpbmQpIHtcbiAgICAgICAgICBjYXNlIGpzaWkuVHlwZUtpbmQuQ2xhc3M6XG4gICAgICAgICAgICB0eXBlID0gbmV3IENsYXNzVHlwZSh0aGlzLnN5c3RlbSwgdGhpcywgdHlwZVNwZWMpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIGpzaWkuVHlwZUtpbmQuSW50ZXJmYWNlOlxuICAgICAgICAgICAgdHlwZSA9IG5ldyBJbnRlcmZhY2VUeXBlKHRoaXMuc3lzdGVtLCB0aGlzLCB0eXBlU3BlYyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UganNpaS5UeXBlS2luZC5FbnVtOlxuICAgICAgICAgICAgdHlwZSA9IG5ldyBFbnVtVHlwZSh0aGlzLnN5c3RlbSwgdGhpcywgdHlwZVNwZWMpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHR5cGUga2luZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluZCBjb250YWluaW5nIHN1Ym1vZHVsZSAocG90ZW50aWFsbHkgdGhyb3VnaCBjb250YWluaW5nIG5lc3RlZCBjbGFzc2VzLFxuICAgICAgICAvLyB3aGljaCBETyBjb3VudCBhcyBuYW1lc3BhY2VzIGJ1dCBkb24ndCBjb3VudCBhcyBtb2R1bGVzKVxuICAgICAgICBsZXQgc3VibW9kdWxlID0gdHlwZVNwZWMubmFtZXNwYWNlO1xuICAgICAgICB3aGlsZSAoc3VibW9kdWxlICE9IG51bGwgJiYgYCR7dGhpcy5zcGVjLm5hbWV9LiR7c3VibW9kdWxlfWAgaW4gdHMpIHtcbiAgICAgICAgICBzdWJtb2R1bGUgPSB0c1tgJHt0aGlzLnNwZWMubmFtZX0uJHtzdWJtb2R1bGV9YF0ubmFtZXNwYWNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1Ym1vZHVsZSAhPSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IGAke3RoaXMuc3BlYy5uYW1lfS4ke3N1Ym1vZHVsZX1gO1xuICAgICAgICAgIHN1Ym1vZHVsZUJ1aWxkZXJzW21vZHVsZU5hbWVdLmFkZFR5cGUodHlwZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fdHlwZUNhY2hlW2Zxbl0gPSB0eXBlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N1Ym1vZHVsZUNhY2hlID0gbWFwVmFsdWVzKHN1Ym1vZHVsZUJ1aWxkZXJzLCAoYikgPT4gYi5idWlsZCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdHlwZXM6IHRoaXMuX3R5cGVDYWNoZSwgc3VibW9kdWxlczogdGhpcy5fc3VibW9kdWxlQ2FjaGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBidWlsZGVyIGZvciBhbGwgc3VibW9kdWxlcyBpbiB0aGlzIGFzc2VtYmx5IChzbyB0aGF0IHdlIGNhblxuICAgKiBhZGQgdHlwZXMgaW50byB0aGUgb2JqZWN0cykuXG4gICAqL1xuICBwcml2YXRlIGRpc2NvdmVyU3VibW9kdWxlcygpOiBSZWNvcmQ8c3RyaW5nLCBTdWJtb2R1bGVCdWlsZGVyPiB7XG4gICAgY29uc3Qgc3lzdGVtID0gdGhpcy5zeXN0ZW07XG5cbiAgICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIFN1Ym1vZHVsZUJ1aWxkZXI+ID0ge307XG4gICAgZm9yIChjb25zdCBbc3VibW9kdWxlTmFtZSwgc3VibW9kdWxlU3BlY10gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICB0aGlzLnNwZWMuc3VibW9kdWxlcyA/PyB7fSxcbiAgICApKSB7XG4gICAgICByZXRbc3VibW9kdWxlTmFtZV0gPSBuZXcgU3VibW9kdWxlQnVpbGRlcihcbiAgICAgICAgc3lzdGVtLFxuICAgICAgICBzdWJtb2R1bGVTcGVjLFxuICAgICAgICBzdWJtb2R1bGVOYW1lLFxuICAgICAgICByZXQsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG5cbi8qKlxuICogTXV0YWJsZSBTdWJtb2R1bGUgYnVpbGRlclxuICpcbiAqIEFsbG93cyBhZGRpbmcgVHlwZXMgYmVmb3JlIHRoZSBzdWJtb2R1bGUgaXMgZnJvemVuIHRvIGEgU3VibW9kdWxlIGNsYXNzLlxuICpcbiAqIFRha2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBmdWxsIG1hcCBvZiBzdWJtb2R1bGUgYnVpbGRlcnMsIHNvIHRoYXQgY29tZSB0aW1lXG4gKiB0byB0cmFuc2xhdGVcbiAqL1xuY2xhc3MgU3VibW9kdWxlQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHlwZXM6IFJlY29yZDxzdHJpbmcsIFR5cGU+ID0ge307XG5cbiAgcHJpdmF0ZSBfYnVpbHQ/OiBTdWJtb2R1bGU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtOiBUeXBlU3lzdGVtLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlYzoganNpaS5TdWJtb2R1bGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmdWxsTmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsTW9kdWxlQnVpbGRlcnM6IFJlY29yZDxzdHJpbmcsIFN1Ym1vZHVsZUJ1aWxkZXI+LFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdWJtb2R1bGUgaXMgYSBkaXJlY3QgY2hpbGQgb2YgYW5vdGhlciBzdWJtb2R1bGVcbiAgICovXG4gIHB1YmxpYyBpc0NoaWxkT2Yob3RoZXI6IFN1Ym1vZHVsZUJ1aWxkZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5mdWxsTmFtZS5zdGFydHNXaXRoKGAke290aGVyLmZ1bGxOYW1lfS5gKSAmJlxuICAgICAgdGhpcy5mdWxsTmFtZS5zcGxpdCgnLicpLmxlbmd0aCA9PT0gb3RoZXIuZnVsbE5hbWUuc3BsaXQoJy4nKS5sZW5ndGggKyAxXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZCgpOiBTdWJtb2R1bGUge1xuICAgIGlmICghdGhpcy5fYnVpbHQpIHtcbiAgICAgIHRoaXMuX2J1aWx0ID0gbmV3IFN1Ym1vZHVsZShcbiAgICAgICAgdGhpcy5zeXN0ZW0sXG4gICAgICAgIHRoaXMuc3BlYyxcbiAgICAgICAgdGhpcy5mdWxsTmFtZSxcbiAgICAgICAgbWFwVmFsdWVzKHRoaXMuZmluZFN1Ym1vZHVsZUJ1aWxkZXJzKCksIChiKSA9PiBiLmJ1aWxkKCkpLFxuICAgICAgICB0aGlzLnR5cGVzLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2J1aWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgdGhlIGJ1aWxkZXJzIGZyb20gdGhlIG1hcCB0aGF0IGFyZSBuZXN0ZWQgdW5kZXJuZWF0aCBvdXJzZWx2ZXMuXG4gICAqL1xuICBwcml2YXRlIGZpbmRTdWJtb2R1bGVCdWlsZGVycygpIHtcbiAgICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIFN1Ym1vZHVsZUJ1aWxkZXI+ID0ge307XG4gICAgZm9yIChjb25zdCBbaywgY2hpbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuYWxsTW9kdWxlQnVpbGRlcnMpKSB7XG4gICAgICBpZiAoY2hpbGQuaXNDaGlsZE9mKHRoaXMpKSB7XG4gICAgICAgIHJldFtrXSA9IGNoaWxkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIGFkZFR5cGUodHlwZTogVHlwZSkge1xuICAgIHRoaXMudHlwZXNbdHlwZS5mcW5dID0gdHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXBWYWx1ZXM8QSwgQj4oXG4gIHhzOiBSZWNvcmQ8c3RyaW5nLCBBPixcbiAgZm46ICh4OiBBKSA9PiBCLFxuKTogUmVjb3JkPHN0cmluZywgQj4ge1xuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFFbkMsbUNBQW9DO0FBQ3BDLDZDQUEwQztBQUMxQyxpQ0FBa0M7QUFDbEMsMkNBQTRDO0FBQzVDLCtDQUEyQztBQUMzQywyQ0FBd0M7QUFJeEMsTUFBYSxRQUFTLFNBQVEsd0JBQVU7SUFLdEMsWUFBbUIsTUFBa0IsRUFBa0IsSUFBbUI7UUFDeEUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRHVDLFNBQUksR0FBSixJQUFJLENBQWU7SUFFMUUsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxVQUFVO1FBS25CLE9BQU8sSUFBSSxDQUFDLElB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T0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQy9ELElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUNoQjtTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sT0FBTyxDQUFDLElBQVU7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQUVELFNBQVMsU0FBUyxDQUNoQixFQUFxQixFQUNyQixFQUFlO0lBRWYsTUFBTSxHQUFHLEdBQXNCLEVBQUUsQ0FBQztJQUNsQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUN2QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hCO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMganNpaSBmcm9tICdAanNpaS9zcGVjJztcblxuaW1wb3J0IHsgQ2xhc3NUeXBlIH0gZnJvbSAnLi9jbGFzcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSAnLi9kZXBlbmRlbmN5JztcbmltcG9ydCB7IEVudW1UeXBlIH0gZnJvbSAnLi9lbnVtJztcbmltcG9ydCB7IEludGVyZmFjZVR5cGUgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBNb2R1bGVMaWtlIH0gZnJvbSAnLi9tb2R1bGUtbGlrZSc7XG5pbXBvcnQgeyBTdWJtb2R1bGUgfSBmcm9tICcuL3N1Ym1vZHVsZSc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnLi90eXBlJztcbmltcG9ydCB7IFR5cGVTeXN0ZW0gfSBmcm9tICcuL3R5cGUtc3lzdGVtJztcblxuZXhwb3J0IGNsYXNzIEFzc2VtYmx5IGV4dGVuZHMgTW9kdWxlTGlrZSB7XG4gIHByaXZhdGUgX3R5cGVDYWNoZT86IHsgW2Zxbjogc3RyaW5nXTogVHlwZSB9O1xuICBwcml2YXRlIF9zdWJtb2R1bGVDYWNoZT86IHsgW2Zxbjogc3RyaW5nXTogU3VibW9kdWxlIH07XG4gIHByaXZhdGUgX2RlcGVuZGVuY3lDYWNoZT86IHsgW25hbWU6IHN0cmluZ106IERlcGVuZGVuY3kgfTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc3lzdGVtOiBUeXBlU3lzdGVtLCBwdWJsaWMgcmVhZG9ubHkgc3BlYzoganNpaS5Bc3NlbWJseSkge1xuICAgIHN1cGVyKHN5c3RlbSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZxbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNwZWMubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgc3BlYyBzY2hlbWFcbiAgICovXG4gIHB1YmxpYyBnZXQgc2NoZW1hKCk6IGpzaWkuU2NoZW1hVmVyc2lvbiB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5zY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGpzaWkgY29tcGlsZXIgdGhhdCB3YXMgdXNlZCB0byBwcm9kdWNlIHRoaXMgQXNzZW1ibHkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGpzaWlWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5qc2lpVmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXNzZW1ibHlcbiAgICovXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNwZWMubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgYXNzZW1ibHksIG1hcHMgdG8gXCJkZXNjcmlwdGlvblwiIGZyb20gcGFja2FnZS5qc29uXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgc2luY2Ugc29tZSBwYWNrYWdlIG1hbmFnZXJzIChsaWtlIE1hdmVuKSByZXF1aXJlIGl0LlxuICAgKi9cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNwZWMuZGVzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXNzZW1ibHksIGlmIGFueS5cbiAgICovXG4gIHB1YmxpYyBnZXQgbWV0YWRhdGEoKTogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5tZXRhZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdXJsIHRvIHRoZSBwcm9qZWN0IGhvbWVwYWdlLiBNYXBzIHRvIFwiaG9tZXBhZ2VcIiBmcm9tIHBhY2thZ2UuanNvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgaG9tZXBhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjLmhvbWVwYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtb2R1bGUgcmVwb3NpdG9yeSwgbWFwcyB0byBcInJlcG9zaXRvcnlcIiBmcm9tIHBhY2thZ2UuanNvblxuICAgKiBUaGlzIGlzIHJlcXVpcmVkIHNpbmNlIHNvbWUgcGFja2FnZSBtYW5hZ2VycyAobGlrZSBNYXZlbikgcmVxdWlyZSBpdC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeSgpOiB7XG4gICAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGRpcmVjdG9yeT86IHN0cmluZztcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5yZXBvc2l0b3J5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtYWluIGF1dGhvciBvZiB0aGlzIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF1dGhvcigpOiBqc2lpLlBlcnNvbiB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5hdXRob3I7XG4gIH1cblxuICAvKipcbiAgICogQWRkaXRpb25hbCBjb250cmlidXRvcnMgdG8gdGhpcyBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGdldCBjb250cmlidXRvcnMoKTogcmVhZG9ubHkganNpaS5QZXJzb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5jb250cmlidXRvcnMgPz8gW107XG4gIH1cblxuICAvKipcbiAgICogQSBmaW5nZXJwcmludCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgc3BlY2lmaWNhdGlvbiBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZmluZ2VycHJpbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjLmZpbmdlcnByaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhc3NlbWJseVxuICAgKi9cbiAgcHVibGljIGdldCB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy52ZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBTUERYIG5hbWUgb2YgdGhlIGxpY2Vuc2UgdGhpcyBhc3NlbWJseSBpcyBkaXN0cmlidXRlZCBvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgbGljZW5zZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNwZWMubGljZW5zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiB0YXJnZXQgbmFtZSB0byBjb25maWd1cmF0aW9uLCB3aGljaCBpcyB1c2VkIHdoZW4gZ2VuZXJhdGluZyBwYWNrYWdlcyBmb3JcbiAgICogdmFyaW91cyBsYW5ndWFnZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRhcmdldHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy50YXJnZXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcGVuZGVuY2llcyBvbiBvdGhlciBhc3NlbWJsaWVzICh3aXRoIHNlbXZlciksIHRoZSBrZXkgaXMgdGhlIEpTSUkgYXNzZW1ibHkgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVwZW5kZW5jaWVzKCk6IHJlYWRvbmx5IERlcGVuZGVuY3lbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2RlcGVuZGVuY2llcykubWFwKFxuICAgICAgKG5hbWUpID0+IHRoaXMuX2RlcGVuZGVuY2llc1tuYW1lXSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGZpbmREZXBlbmRlbmN5KG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGRlcCA9IHRoaXMuX2RlcGVuZGVuY2llc1tuYW1lXTtcbiAgICBpZiAoIWRlcCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZXBlbmRlbmN5ICR7bmFtZX0gbm90IGZvdW5kIGZvciBhc3NlbWJseSAke3RoaXMubmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGlmIGJ1bmRsZWQgZGVwZW5kZW5jaWVzICh0aGVzZSBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIGpzaWkgYXNzZW1ibGllcykuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJ1bmRsZWQoKTogeyByZWFkb25seSBbbW9kdWxlOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5idW5kbGVkID8/IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3AtbGV2ZWwgcmVhZG1lIGRvY3VtZW50IGZvciB0aGlzIGFzc2VtYmx5IChpZiBhbnkpLlxuICAgKi9cbiAgcHVibGljIGdldCByZWFkbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3BlYy5yZWFkbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSB0aG9zZSBzdWJtb2R1bGVzIG5lc3RlZCBkaXJlY3RseSB1bmRlciB0aGUgYXNzZW1ibHlcbiAgICovXG4gIHB1YmxpYyBnZXQgc3VibW9kdWxlcygpOiByZWFkb25seSBTdWJtb2R1bGVbXSB7XG4gICAgY29uc3QgeyBzdWJtb2R1bGVzIH0gPSB0aGlzLl9hbmFseXplVHlwZXMoKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3VibW9kdWxlcylcbiAgICAgIC5maWx0ZXIoKFtuYW1lLCBfXSkgPT4gbmFtZS5zcGxpdCgnLicpLmxlbmd0aCA9PT0gMilcbiAgICAgIC5tYXAoKFtfLCBzdWJtb2R1bGVdKSA9PiBzdWJtb2R1bGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgc3VibW9kdWxlcywgZXZlbiB0aG9zZSB0cmFuc3RpdmVseSBuZXN0ZWRcbiAgICovXG4gIHB1YmxpYyBnZXQgYWxsU3VibW9kdWxlcygpOiByZWFkb25seSBTdWJtb2R1bGVbXSB7XG4gICAgY29uc3QgeyBzdWJtb2R1bGVzIH0gPSB0aGlzLl9hbmFseXplVHlwZXMoKTtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzdWJtb2R1bGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgdHlwZXMsIGV2ZW4gdGhvc2UgaW4gc3VibW9kdWxlcyBhbmQgbmVzdGVkIHN1Ym1vZHVsZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHR5cGVzKCk6IHJlYWRvbmx5IFR5cGVbXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy50eXBlTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHR5cGVzIGluIHRoZSBjdXJyZW50IGFzc2VtYmx5L3N1Ym1vZHVsZSBhbmQgYWxsIHN1Ym1vZHVsZXMgdW5kZXJuZWF0aFxuICAgKi9cbiAgcHVibGljIGdldCBhbGxUeXBlcygpOiByZWFkb25seSBUeXBlW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50eXBlcywgLi4udGhpcy5hbGxTdWJtb2R1bGVzLmZsYXRNYXAoKHMpID0+IHMudHlwZXMpXTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kVHlwZShmcW46IHN0cmluZykge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnRyeUZpbmRUeXBlKGZxbik7XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFR5cGUgJyR7ZnFufScgbm90IGZvdW5kIGluIGFzc2VtYmx5ICR7dGhpcy5uYW1lfWApO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhbiBhc3NlbWJseSBhZnRlciBsb2FkaW5nXG4gICAqXG4gICAqIElmIHRoZSBhc3NlbWJseSB3YXMgbG9hZGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwgY2FsbCB0aGlzIHRvIHZhbGlkYXRlXG4gICAqIGl0IGFmdGVyIGFsbC4gVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB2YWxpZGF0aW9uIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKCkge1xuICAgIGpzaWkudmFsaWRhdGVBc3NlbWJseSh0aGlzLnNwZWMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzdWJtb2R1bGVNYXAoKTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgU3VibW9kdWxlPj4ge1xuICAgIHJldHVybiB0aGlzLl9hbmFseXplVHlwZXMoKS5zdWJtb2R1bGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbCB0eXBlcyBpbiB0aGUgcm9vdCBvZiB0aGUgYXNzZW1ibHlcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHlwZU1hcCgpOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBUeXBlPj4ge1xuICAgIHJldHVybiB0aGlzLl9hbmFseXplVHlwZXMoKS50eXBlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9kZXBlbmRlbmNpZXMoKSB7XG4gICAgaWYgKCF0aGlzLl9kZXBlbmRlbmN5Q2FjaGUpIHtcbiAgICAgIHRoaXMuX2RlcGVuZGVuY3lDYWNoZSA9IHt9O1xuICAgICAgaWYgKHRoaXMuc3BlYy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKHRoaXMuc3BlYy5kZXBlbmRlbmNpZXMpKSB7XG4gICAgICAgICAgdGhpcy5fZGVwZW5kZW5jeUNhY2hlW25hbWVdID0gbmV3IERlcGVuZGVuY3koXG4gICAgICAgICAgICB0aGlzLnN5c3RlbSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB0aGlzLnNwZWMuZGVwZW5kZW5jaWVzW25hbWVdLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZGVwZW5kZW5jeUNhY2hlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYW5hbHl6ZVR5cGVzKCkge1xuICAgIGlmICghdGhpcy5fdHlwZUNhY2hlIHx8ICF0aGlzLl9zdWJtb2R1bGVDYWNoZSkge1xuICAgICAgdGhpcy5fdHlwZUNhY2hlID0ge307XG5cbiAgICAgIGNvbnN0IHN1Ym1vZHVsZUJ1aWxkZXJzID0gdGhpcy5kaXNjb3ZlclN1Ym1vZHVsZXMoKTtcblxuICAgICAgY29uc3QgdHMgPSB0aGlzLnNwZWMudHlwZXMgPz8ge307XG4gICAgICBmb3IgKGNvbnN0IFtmcW4sIHR5cGVTcGVjXSBvZiBPYmplY3QuZW50cmllcyh0cykpIHtcbiAgICAgICAgbGV0IHR5cGU6IFR5cGU7XG4gICAgICAgIHN3aXRjaCAodHlwZVNwZWMua2luZCkge1xuICAgICAgICAgIGNhc2UganNpaS5UeXBlS2luZC5DbGFzczpcbiAgICAgICAgICAgIHR5cGUgPSBuZXcgQ2xhc3NUeXBlKHRoaXMuc3lzdGVtLCB0aGlzLCB0eXBlU3BlYyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UganNpaS5UeXBlS2luZC5JbnRlcmZhY2U6XG4gICAgICAgICAgICB0eXBlID0gbmV3IEludGVyZmFjZVR5cGUodGhpcy5zeXN0ZW0sIHRoaXMsIHR5cGVTcGVjKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBqc2lpLlR5cGVLaW5kLkVudW06XG4gICAgICAgICAgICB0eXBlID0gbmV3IEVudW1UeXBlKHRoaXMuc3lzdGVtLCB0aGlzLCB0eXBlU3BlYyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdHlwZSBraW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5kIGNvbnRhaW5pbmcgc3VibW9kdWxlIChwb3RlbnRpYWxseSB0aHJvdWdoIGNvbnRhaW5pbmcgbmVzdGVkIGNsYXNzZXMsXG4gICAgICAgIC8vIHdoaWNoIERPIGNvdW50IGFzIG5hbWVzcGFjZXMgYnV0IGRvbid0IGNvdW50IGFzIG1vZHVsZXMpXG4gICAgICAgIGxldCBzdWJtb2R1bGUgPSB0eXBlU3BlYy5uYW1lc3BhY2U7XG4gICAgICAgIHdoaWxlIChzdWJtb2R1bGUgIT0gbnVsbCAmJiBgJHt0aGlzLnNwZWMubmFtZX0uJHtzdWJtb2R1bGV9YCBpbiB0cykge1xuICAgICAgICAgIHN1Ym1vZHVsZSA9IHRzW2Ake3RoaXMuc3BlYy5uYW1lfS4ke3N1Ym1vZHVsZX1gXS5uYW1lc3BhY2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VibW9kdWxlICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVOYW1lID0gYCR7dGhpcy5zcGVjLm5hbWV9LiR7c3VibW9kdWxlfWA7XG4gICAgICAgICAgc3VibW9kdWxlQnVpbGRlcnNbbW9kdWxlTmFtZV0uYWRkVHlwZSh0eXBlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl90eXBlQ2FjaGVbZnFuXSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3VibW9kdWxlQ2FjaGUgPSBtYXBWYWx1ZXMoc3VibW9kdWxlQnVpbGRlcnMsIChiKSA9PiBiLmJ1aWxkKCkpO1xuICAgIH1cbiAgICByZXR1cm4geyB0eXBlczogdGhpcy5fdHlwZUNhY2hlLCBzdWJtb2R1bGVzOiB0aGlzLl9zdWJtb2R1bGVDYWNoZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGJ1aWxkZXIgZm9yIGFsbCBzdWJtb2R1bGVzIGluIHRoaXMgYXNzZW1ibHkgKHNvIHRoYXQgd2UgY2FuXG4gICAqIGFkZCB0eXBlcyBpbnRvIHRoZSBvYmplY3RzKS5cbiAgICovXG4gIHByaXZhdGUgZGlzY292ZXJTdWJtb2R1bGVzKCk6IFJlY29yZDxzdHJpbmcsIFN1Ym1vZHVsZUJ1aWxkZXI+IHtcbiAgICBjb25zdCBzeXN0ZW0gPSB0aGlzLnN5c3RlbTtcblxuICAgIGNvbnN0IHJldDogUmVjb3JkPHN0cmluZywgU3VibW9kdWxlQnVpbGRlcj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtzdWJtb2R1bGVOYW1lLCBzdWJtb2R1bGVTcGVjXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgIHRoaXMuc3BlYy5zdWJtb2R1bGVzID8/IHt9LFxuICAgICkpIHtcbiAgICAgIHJldFtzdWJtb2R1bGVOYW1lXSA9IG5ldyBTdWJtb2R1bGVCdWlsZGVyKFxuICAgICAgICBzeXN0ZW0sXG4gICAgICAgIHN1Ym1vZHVsZVNwZWMsXG4gICAgICAgIHN1Ym1vZHVsZU5hbWUsXG4gICAgICAgIHJldCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNdXRhYmxlIFN1Ym1vZHVsZSBidWlsZGVyXG4gKlxuICogQWxsb3dzIGFkZGluZyBUeXBlcyBiZWZvcmUgdGhlIHN1Ym1vZHVsZSBpcyBmcm96ZW4gdG8gYSBTdWJtb2R1bGUgY2xhc3MuXG4gKlxuICogVGFrZXMgYSByZWZlcmVuY2UgdG8gdGhlIGZ1bGwgbWFwIG9mIHN1Ym1vZHVsZSBidWlsZGVycywgc28gdGhhdCBjb21lIHRpbWVcbiAqIHRvIHRyYW5zbGF0ZVxuICovXG5jbGFzcyBTdWJtb2R1bGVCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0eXBlczogUmVjb3JkPHN0cmluZywgVHlwZT4gPSB7fTtcblxuICBwcml2YXRlIF9idWlsdD86IFN1Ym1vZHVsZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeXN0ZW06IFR5cGVTeXN0ZW0sXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGVjOiBqc2lpLlN1Ym1vZHVsZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZ1bGxOYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxNb2R1bGVCdWlsZGVyczogUmVjb3JkPHN0cmluZywgU3VibW9kdWxlQnVpbGRlcj4sXG4gICkge31cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHN1Ym1vZHVsZSBpcyBhIGRpcmVjdCBjaGlsZCBvZiBhbm90aGVyIHN1Ym1vZHVsZVxuICAgKi9cbiAgcHVibGljIGlzQ2hpbGRPZihvdGhlcjogU3VibW9kdWxlQnVpbGRlcikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZ1bGxOYW1lLnN0YXJ0c1dpdGgoYCR7b3RoZXIuZnVsbE5hbWV9LmApICYmXG4gICAgICB0aGlzLmZ1bGxOYW1lLnNwbGl0KCcuJykubGVuZ3RoID09PSBvdGhlci5mdWxsTmFtZS5zcGxpdCgnLicpLmxlbmd0aCArIDFcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkKCk6IFN1Ym1vZHVsZSB7XG4gICAgaWYgKCF0aGlzLl9idWlsdCkge1xuICAgICAgdGhpcy5fYnVpbHQgPSBuZXcgU3VibW9kdWxlKFxuICAgICAgICB0aGlzLnN5c3RlbSxcbiAgICAgICAgdGhpcy5zcGVjLFxuICAgICAgICB0aGlzLmZ1bGxOYW1lLFxuICAgICAgICBtYXBWYWx1ZXModGhpcy5maW5kU3VibW9kdWxlQnVpbGRlcnMoKSwgKGIpID0+IGIuYnVpbGQoKSksXG4gICAgICAgIHRoaXMudHlwZXMsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYnVpbHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCB0aGUgYnVpbGRlcnMgZnJvbSB0aGUgbWFwIHRoYXQgYXJlIG5lc3RlZCB1bmRlcm5lYXRoIG91cnNlbHZlcy5cbiAgICovXG4gIHByaXZhdGUgZmluZFN1Ym1vZHVsZUJ1aWxkZXJzKCkge1xuICAgIGNvbnN0IHJldDogUmVjb3JkPHN0cmluZywgU3VibW9kdWxlQnVpbGRlcj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrLCBjaGlsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5hbGxNb2R1bGVCdWlsZGVycykpIHtcbiAgICAgIGlmIChjaGlsZC5pc0NoaWxkT2YodGhpcykpIHtcbiAgICAgICAgcmV0W2tdID0gY2hpbGQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgYWRkVHlwZSh0eXBlOiBUeXBlKSB7XG4gICAgdGhpcy50eXBlc1t0eXBlLmZxbl0gPSB0eXBlO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcFZhbHVlczxBLCBCPihcbiAgeHM6IFJlY29yZDxzdHJpbmcsIEE+LFxuICBmbjogKHg6IEEpID0+IEIsXG4pOiBSZWNvcmQ8c3RyaW5nLCBCPiB7XG4gIGNvbnN0IHJldDogUmVjb3JkPHN0cmluZywgQj4gPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoeHMpKSB7XG4gICAgcmV0W2tdID0gZm4odik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jsii-reflect",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.47.0",
|
|
4
4
|
"description": "strongly-typed reflection library and tools for jsii",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": {
|
|
@@ -34,22 +34,22 @@
|
|
|
34
34
|
"package": "package-js"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@jsii/check-node": "1.
|
|
38
|
-
"@jsii/spec": "^1.
|
|
37
|
+
"@jsii/check-node": "1.47.0",
|
|
38
|
+
"@jsii/spec": "^1.47.0",
|
|
39
39
|
"colors": "^1.4.0",
|
|
40
40
|
"fs-extra": "^9.1.0",
|
|
41
|
-
"oo-ascii-tree": "^1.
|
|
41
|
+
"oo-ascii-tree": "^1.47.0",
|
|
42
42
|
"yargs": "^16.2.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@scope/jsii-calc-lib": "^1.
|
|
45
|
+
"@scope/jsii-calc-lib": "^1.47.0",
|
|
46
46
|
"@types/fs-extra": "^9.0.13",
|
|
47
|
-
"@types/jest": "^27.0.
|
|
48
|
-
"@types/node": "^12.20.
|
|
49
|
-
"eslint": "^
|
|
50
|
-
"jest": "^27.
|
|
51
|
-
"jsii": "^1.
|
|
52
|
-
"jsii-build-tools": "^1.
|
|
47
|
+
"@types/jest": "^27.0.3",
|
|
48
|
+
"@types/node": "^12.20.37",
|
|
49
|
+
"eslint": "^8.3.0",
|
|
50
|
+
"jest": "^27.3.1",
|
|
51
|
+
"jsii": "^1.47.0",
|
|
52
|
+
"jsii-build-tools": "^1.47.0",
|
|
53
53
|
"jsii-calc": "^3.20.120",
|
|
54
54
|
"prettier": "^2.4.1",
|
|
55
55
|
"typescript": "~3.9.10"
|
package/test/independent.test.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jsii_1 = require("jsii");
|
|
4
3
|
const reflect = require("../lib");
|
|
4
|
+
const util_1 = require("./util");
|
|
5
5
|
test('get full github source location for a class or method', async () => {
|
|
6
6
|
// WHEN
|
|
7
|
-
const assembly = await
|
|
7
|
+
const assembly = await util_1.assemblyFromSource(`
|
|
8
8
|
export class Foo {
|
|
9
9
|
public bar() {
|
|
10
10
|
// Nothing to do
|
|
@@ -17,9 +17,4 @@ test('get full github source location for a class or method', async () => {
|
|
|
17
17
|
expect(reflect.repositoryUrl(klass, 'main')).toBe('https://github.com/aws/jsii/blob/main/some/sub/dir/index.ts#L1');
|
|
18
18
|
expect(reflect.repositoryUrl(klass)).toBe('https://github.com/aws/jsii/blob/master/some/sub/dir/index.ts#L1');
|
|
19
19
|
});
|
|
20
|
-
|
|
21
|
-
const ass = await jsii_1.sourceToAssemblyHelper(source, cb);
|
|
22
|
-
const ts = new reflect.TypeSystem();
|
|
23
|
-
return ts.addAssembly(new reflect.Assembly(ts, ass));
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXBlbmRlbnQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluZGVwZW5kZW50LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBMkQ7QUFFM0Qsa0NBQWtDO0FBRWxDLElBQUksQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUN2RSxPQUFPO0lBQ1AsTUFBTSxRQUFRLEdBQUcsTUFBTSxVQUFVLENBQy9COzs7Ozs7R0FNRCxDQUFDLElBQUksRUFBRSxFQUNOLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxDQUNyRCxDQUFDO0lBRUYsT0FBTztJQUNQLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUV2QyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9DLGdFQUFnRSxDQUNqRSxDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLGtFQUFrRSxDQUNuRSxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxLQUFLLFVBQVUsVUFBVSxDQUN2QixNQUFjLEVBQ2QsRUFBOEI7SUFFOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSw2QkFBc0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsTUFBTSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFja2FnZUluZm8sIHNvdXJjZVRvQXNzZW1ibHlIZWxwZXIgfSBmcm9tICdqc2lpJztcblxuaW1wb3J0ICogYXMgcmVmbGVjdCBmcm9tICcuLi9saWInO1xuXG50ZXN0KCdnZXQgZnVsbCBnaXRodWIgc291cmNlIGxvY2F0aW9uIGZvciBhIGNsYXNzIG9yIG1ldGhvZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBjb25zdCBhc3NlbWJseSA9IGF3YWl0IGxvYWRTb3VyY2UoXG4gICAgYFxuICAgIGV4cG9ydCBjbGFzcyBGb28ge1xuICAgICAgcHVibGljIGJhcigpIHtcbiAgICAgICAgLy8gTm90aGluZyB0byBkb1xuICAgICAgfVxuICAgIH1cbiAgYC50cmltKCksXG4gICAgKG9iaikgPT4gKG9iai5yZXBvc2l0b3J5LmRpcmVjdG9yeSA9ICdzb21lL3N1Yi9kaXInKSxcbiAgKTtcblxuICAvLyBUSEVOXG4gIGNvbnN0IGtsYXNzID0gYXNzZW1ibHkuZmluZFR5cGUoJ3Rlc3Rwa2cuRm9vJyk7XG4gIGV4cGVjdChrbGFzcy5pc0NsYXNzVHlwZSkudG9CZVRydXRoeSgpO1xuXG4gIGV4cGVjdChyZWZsZWN0LnJlcG9zaXRvcnlVcmwoa2xhc3MsICdtYWluJykpLnRvQmUoXG4gICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9hd3MvanNpaS9ibG9iL21haW4vc29tZS9zdWIvZGlyL2luZGV4LnRzI0wxJyxcbiAgKTtcblxuICBleHBlY3QocmVmbGVjdC5yZXBvc2l0b3J5VXJsKGtsYXNzKSkudG9CZShcbiAgICAnaHR0cHM6Ly9naXRodWIuY29tL2F3cy9qc2lpL2Jsb2IvbWFzdGVyL3NvbWUvc3ViL2Rpci9pbmRleC50cyNMMScsXG4gICk7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZFNvdXJjZShcbiAgc291cmNlOiBzdHJpbmcsXG4gIGNiOiAob2JqOiBQYWNrYWdlSW5mbykgPT4gdm9pZCxcbik6IFByb21pc2U8cmVmbGVjdC5Bc3NlbWJseT4ge1xuICBjb25zdCBhc3MgPSBhd2FpdCBzb3VyY2VUb0Fzc2VtYmx5SGVscGVyKHNvdXJjZSwgY2IpO1xuICBjb25zdCB0cyA9IG5ldyByZWZsZWN0LlR5cGVTeXN0ZW0oKTtcbiAgcmV0dXJuIHRzLmFkZEFzc2VtYmx5KG5ldyByZWZsZWN0LkFzc2VtYmx5KHRzLCBhc3MpKTtcbn1cbiJdfQ==
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXBlbmRlbnQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluZGVwZW5kZW50LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQ0FBa0M7QUFDbEMsaUNBQTRDO0FBRTVDLElBQUksQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUN2RSxPQUFPO0lBQ1AsTUFBTSxRQUFRLEdBQUcsTUFBTSx5QkFBa0IsQ0FDdkM7Ozs7OztHQU1ELENBQUMsSUFBSSxFQUFFLEVBQ04sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLENBQ3JELENBQUM7SUFFRixPQUFPO0lBQ1AsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0MsZ0VBQWdFLENBQ2pFLENBQUM7SUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdkMsa0VBQWtFLENBQ25FLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IGFzc2VtYmx5RnJvbVNvdXJjZSB9IGZyb20gJy4vdXRpbCc7XG5cbnRlc3QoJ2dldCBmdWxsIGdpdGh1YiBzb3VyY2UgbG9jYXRpb24gZm9yIGEgY2xhc3Mgb3IgbWV0aG9kJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IGFzc2VtYmx5ID0gYXdhaXQgYXNzZW1ibHlGcm9tU291cmNlKFxuICAgIGBcbiAgICBleHBvcnQgY2xhc3MgRm9vIHtcbiAgICAgIHB1YmxpYyBiYXIoKSB7XG4gICAgICAgIC8vIE5vdGhpbmcgdG8gZG9cbiAgICAgIH1cbiAgICB9XG4gIGAudHJpbSgpLFxuICAgIChvYmopID0+IChvYmoucmVwb3NpdG9yeS5kaXJlY3RvcnkgPSAnc29tZS9zdWIvZGlyJyksXG4gICk7XG5cbiAgLy8gVEhFTlxuICBjb25zdCBrbGFzcyA9IGFzc2VtYmx5LmZpbmRUeXBlKCd0ZXN0cGtnLkZvbycpO1xuICBleHBlY3Qoa2xhc3MuaXNDbGFzc1R5cGUpLnRvQmVUcnV0aHkoKTtcblxuICBleHBlY3QocmVmbGVjdC5yZXBvc2l0b3J5VXJsKGtsYXNzLCAnbWFpbicpKS50b0JlKFxuICAgICdodHRwczovL2dpdGh1Yi5jb20vYXdzL2pzaWkvYmxvYi9tYWluL3NvbWUvc3ViL2Rpci9pbmRleC50cyNMMScsXG4gICk7XG5cbiAgZXhwZWN0KHJlZmxlY3QucmVwb3NpdG9yeVVybChrbGFzcykpLnRvQmUoXG4gICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9hd3MvanNpaS9ibG9iL21hc3Rlci9zb21lL3N1Yi9kaXIvaW5kZXgudHMjTDEnLFxuICApO1xufSk7XG4iXX0=
|
package/test/type-system.test.js
CHANGED
|
@@ -338,7 +338,14 @@ test('TypeSystem.methods', async () => {
|
|
|
338
338
|
`);
|
|
339
339
|
expect(ts.methods).toHaveLength(2);
|
|
340
340
|
});
|
|
341
|
+
test('Assembly allTypes includes submodule types', async () => {
|
|
342
|
+
const asm = await util_1.assemblyFromSource({
|
|
343
|
+
'index.ts': 'export * as submod from "./submod";',
|
|
344
|
+
'submod.ts': `export class Foo {}`,
|
|
345
|
+
});
|
|
346
|
+
expect(asm.allTypes.map((t) => t.fqn)).toEqual(['testpkg.submod.Foo']);
|
|
347
|
+
});
|
|
341
348
|
function resolveModuleDir(name) {
|
|
342
349
|
return path.dirname(require.resolve(`${name}/package.json`));
|
|
343
350
|
}
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zeXN0ZW0udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInR5cGUtc3lzdGVtLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBbUM7QUFDbkMscUNBQXVDO0FBQ3ZDLDZCQUE2QjtBQUU3QixnQ0FBb0M7QUFDcEMsaUNBQThDO0FBRTlDLElBQUksT0FBbUIsQ0FBQztBQUV4QixTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDbkIsT0FBTyxHQUFHLElBQUksZ0JBQVUsRUFBRSxDQUFDO0lBQzNCLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtJQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzNELE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLEdBQUcsRUFBRSxDQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFMUUsSUFBSSxDQUFDLDREQUE0RCxFQUFFLEdBQUcsRUFBRSxDQUN0RSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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QUN4QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNwQyxNQUFNLEVBQUUsR0FBRyxNQUFNLDJCQUFvQixDQUFDOzs7Ozs7Ozs7R0FTckMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNwZWMgZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgeyBTdGFiaWxpdHkgfSBmcm9tICdAanNpaS9zcGVjJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IFR5cGVTeXN0ZW0gfSBmcm9tICcuLi9saWInO1xuaW1wb3J0IHsgdHlwZVN5c3RlbUZyb21Tb3VyY2UgfSBmcm9tICcuL3V0aWwnO1xuXG5sZXQgdHlwZXN5czogVHlwZVN5c3RlbTtcblxuYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgdHlwZXN5cyA9IG5ldyBUeXBlU3lzdGVtKCk7XG4gIGF3YWl0IHR5cGVzeXMubG9hZE1vZHVsZShyZXNvbHZlTW9kdWxlRGlyKCdqc2lpLWNhbGMnKSk7XG59KTtcblxudGVzdCgnVHlwZVN5c3RlbS5oYXNBc3NlbWJseScsICgpID0+IHtcbiAgZXhwZWN0KHR5cGVzeXMuaW5jbHVkZXNBc3NlbWJseSgnQGZvby9iYXInKSkudG9CZUZhbHN5KCk7XG4gIGV4cGVjdCh0eXBlc3lzLmluY2x1ZGVzQXNzZW1ibHkoJ2pzaWktY2FsYycpKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdCh0eXBlc3lzLmluY2x1ZGVzQXNzZW1ibHkoJ0BzY29wZS9qc2lpLWNhbGMtbGliJykpLnRvQmVUcnV0aHkoKTtcbn0pO1xuXG50ZXN0KCdUeXBlU3lzdGVtLmFzc2VtYmxpZXMgbGlzdHMgYWxsIHRoZSBsb2FkZWQgYXNzZW1ibGllcycsICgpID0+XG4gIGV4cGVjdCh0eXBlc3lzLmFzc2VtYmxpZXMubWFwKChhKSA9PiBhLm5hbWUpLnNvcnQoKSkudG9NYXRjaFNuYXBzaG90KCkpO1xuXG50ZXN0KCdUeXBlU3lzdGVtLmNsYXNzZXMgbGlzdHMgYWxsIHRoZSBjbGFzc2VzIGluIHRoZSB0eXBlc3lzdGVtJywgKCkgPT5cbiAgZXhwZWN0KHR5cGVzeXMuY2xhc3Nlcy5tYXAoKGMpID0+IGMuZnFuKS5zb3J0KCkpLnRvTWF0Y2hTbmFwc2hvdCgpKTtcblxudGVzdCgnZmluZENsYXNzJywgKCkgPT4ge1xuICBjb25zdCBjYWxjID0gdHlwZXN5cy5maW5kQ2xhc3MoJ2pzaWktY2FsYy5DYWxjdWxhdG9yJyk7XG4gIGNvbnN0IGFjdHVhbCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIE9iamVjdC52YWx1ZXMoY2FsYy5nZXRNZXRob2RzKC8qIGluaGVyaXRlZCAqLyB0cnVlKSkuZm9yRWFjaCgobWV0aG9kKSA9PiB7XG4gICAgYWN0dWFsLnB1c2goYCR7bWV0aG9kLm5hbWV9IGZyb20gJHttZXRob2QucGFyZW50VHlwZS5uYW1lfWApO1xuICB9KTtcblxuICBleHBlY3QoYWN0dWFsLmpvaW4oJ1xcbicpKS50b01hdGNoU25hcHNob3QoKTtcbn0pO1xuXG50ZXN0KCdcInJvb3RzXCIgaXMgYSBsaXN0IG9mIHRoZSBkaXJlY3RseSBsb2FkZWQgYXNzZW1ibGllcycsIGFzeW5jICgpID0+IHtcbiAgZXhwZWN0KHR5cGVzeXMucm9vdHMubGVuZ3RoKS50b0JlKDEpO1xuICBleHBlY3QodHlwZXN5cy5yb290c1swXSkudG9CZSh0eXBlc3lzLmZpbmRBc3NlbWJseSgnanNpaS1jYWxjJykpO1xuXG4gIC8vIG5vdyBsb2FkIGFub3RoZXIgYXNzZW1ibGl5IGRpcmVjdGx5XG4gIGF3YWl0IHR5cGVzeXMubG9hZChyZXNvbHZlTW9kdWxlRGlyKCdAc2NvcGUvanNpaS1jYWxjLWxpYicpKTtcbiAgcmV0dXJuIGV4cGVjdCh0eXBlc3lzLnJvb3RzLmxlbmd0aCkudG9CZSgyKTtcbn0pO1xuXG5kZXNjcmliZSgnVHlwZScsICgpID0+IHtcbiAgdGVzdCgnLmlzQ2xhc3NUeXBlJywgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgY2xhenogPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlcycpO1xuICAgIGNvbnN0IGlmYWNlID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuSVB1YmxpY0ludGVyZmFjZScpO1xuICAgIGNvbnN0IGVudW10ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWxsVHlwZXNFbnVtJyk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGNsYXp6LmlzQ2xhc3NUeXBlKCkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoaWZhY2UuaXNDbGFzc1R5cGUoKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KGVudW10LmlzQ2xhc3NUeXBlKCkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICB0ZXN0KCcuaXNEYXRhVHlwZScsICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNsYXp6ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWxsVHlwZXMnKTtcbiAgICBjb25zdCBpZmFjZSA9IHR5cGVzeXMuZmluZEZxbihcbiAgICAgICdqc2lpLWNhbGMuSUludGVyZmFjZVRoYXRTaG91bGROb3RCZUFEYXRhVHlwZScsXG4gICAgKTtcbiAgICBjb25zdCBkYXRhdCA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkNhbGN1bGF0b3JQcm9wcycpO1xuICAgIGNvbnN0IGVudW10ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWxsVHlwZXNFbnVtJyk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGNsYXp6LmlzRGF0YVR5cGUoKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KGlmYWNlLmlzRGF0YVR5cGUoKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KGRhdGF0LmlzRGF0YVR5cGUoKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChlbnVtdC5pc0RhdGFUeXBlKCkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICB0ZXN0KCcuaXNJbnRlcmZhY2VUeXBlJywgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgY2xhenogPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlcycpO1xuICAgIGNvbnN0IGlmYWNlID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuSVB1YmxpY0ludGVyZmFjZScpO1xuICAgIGNvbnN0IGVudW10ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWxsVHlwZXNFbnVtJyk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGNsYXp6LmlzSW50ZXJmYWNlVHlwZSgpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QoaWZhY2UuaXNJbnRlcmZhY2VUeXBlKCkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoZW51bXQuaXNJbnRlcmZhY2VUeXBlKCkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICB0ZXN0KCcuaXNFbnVtVHlwZScsICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNsYXp6ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWxsVHlwZXMnKTtcbiAgICBjb25zdCBpZmFjZSA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLklQdWJsaWNJbnRlcmZhY2UnKTtcbiAgICBjb25zdCBlbnVtdCA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFsbFR5cGVzRW51bScpO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChjbGF6ei5pc0VudW1UeXBlKCkpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChpZmFjZS5pc0VudW1UeXBlKCkpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChlbnVtdC5pc0VudW1UeXBlKCkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJy5leHRlbmRzKGJhc2UpJywgKCkgPT4ge1xuICAgIHRlc3QoJ3dpdGggaW50ZXJmYWNlcycsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBiYXNlID0gdHlwZXN5cy5maW5kRnFuKFxuICAgICAgICAnQHNjb3BlL2pzaWktY2FsYy1iYXNlLW9mLWJhc2UuVmVyeUJhc2VQcm9wcycsXG4gICAgICApO1xuICAgICAgY29uc3QgY2xhenogPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5JbXBsaWN0QmFzZU9mQmFzZScpO1xuICAgICAgY29uc3QgZW51bXQgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlc0VudW0nKTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KGJhc2UuZXh0ZW5kcyhiYXNlKSkudG9CZVRydXRoeSgpO1xuICAgICAgZXhwZWN0KGNsYXp6LmV4dGVuZHMoY2xhenopKS50b0JlVHJ1dGh5KCk7XG4gICAgICBleHBlY3QoY2xhenouZXh0ZW5kcyhiYXNlKSkudG9CZVRydXRoeSgpO1xuICAgICAgZXhwZWN0KGVudW10LmV4dGVuZHMoYmFzZSkpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KGJhc2UuZXh0ZW5kcyhlbnVtdCkpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KGJhc2UuZXh0ZW5kcyhjbGF6eikpLnRvQmVGYWxzeSgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnd2l0aCBhIGNsYXNzIGFuZCBhbiBpbnRlcmZhY2UnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3QgaWZhY2UgPSB0eXBlc3lzLmZpbmRGcW4oXG4gICAgICAgICdqc2lpLWNhbGMuSUludGVyZmFjZUltcGxlbWVudGVkQnlBYnN0cmFjdENsYXNzJyxcbiAgICAgICk7XG4gICAgICBjb25zdCBjbGF6eiA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFic3RyYWN0Q2xhc3MnKTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KGNsYXp6LmV4dGVuZHMoaWZhY2UpKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd3aXRoIHR3byBjbGFzc2VzJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IGJhc2UgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BYnN0cmFjdENsYXNzQmFzZScpO1xuICAgICAgY29uc3QgY2xhenogPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BYnN0cmFjdENsYXNzJyk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChjbGF6ei5leHRlbmRzKGJhc2UpKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcuYWxsSW1wbGVtZW50YXRpb25zJywgKCkgPT4ge1xuICAgIHRlc3QoJ3dpdGggYW4gaW50ZXJmYWNlJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IGJhc2UgPSB0eXBlc3lzLmZpbmRGcW4oXG4gICAgICAgICdqc2lpLWNhbGMuSUludGVyZmFjZUltcGxlbWVudGVkQnlBYnN0cmFjdENsYXNzJyxcbiAgICAgICk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChiYXNlLmFsbEltcGxlbWVudGF0aW9ucykudG9FcXVhbChbXG4gICAgICAgIHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFic3RyYWN0Q2xhc3MnKSxcbiAgICAgICAgYmFzZSxcbiAgICAgIF0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnd2l0aCBhbiBlbnVtJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IGVudW10ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWxsVHlwZXNFbnVtJyk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChlbnVtdC5hbGxJbXBsZW1lbnRhdGlvbnMpLnRvRXF1YWwoW10pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG50ZXN0KCdUaHJlZSBJbmhlcml0YW5jZSBMZXZlbHMnLCAoKSA9PiB7XG4gIGNvbnN0IGlmYWNlID0gdHlwZXN5cy5maW5kSW50ZXJmYWNlKFxuICAgICdAc2NvcGUvanNpaS1jYWxjLWxpYi5JVGhyZWVMZXZlbHNJbnRlcmZhY2UnLFxuICApO1xuICBjb25zdCBtZXRob2RuYW1lcyA9IGlmYWNlLmFsbE1ldGhvZHMubWFwKChtKSA9PiBtLm5hbWUpO1xuICBtZXRob2RuYW1lcy5zb3J0KCk7XG4gIGV4cGVjdChtZXRob2RuYW1lcykudG9FcXVhbChbJ2JhcicsICdiYXonLCAnZm9vJ10pO1xufSk7XG5cbmRlc2NyaWJlKCdAZGVwcmVjYXRlZCcsICgpID0+IHtcbiAgdGVzdCgnY2FuIGJlIHJlYWQgb24gYW4gaXRlbScsICgpID0+IHtcbiAgICBjb25zdCBrbGFzcyA9IHR5cGVzeXMuZmluZENsYXNzKCdqc2lpLWNhbGMuT2xkJyk7XG4gICAgZXhwZWN0KGtsYXNzLmRvY3MuZGVwcmVjYXRlZCkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChrbGFzcy5kb2NzLnN0YWJpbGl0eSkudG9CZShzcGVjLlN0YWJpbGl0eS5EZXByZWNhdGVkKTtcbiAgfSk7XG5cbiAgdGVzdCgnaXMgaW5oZXJpdGVkIGZyb20gY2xhc3MnLCAoKSA9PiB7XG4gICAgY29uc3Qga2xhc3MgPSB0eXBlc3lzLmZpbmRDbGFzcygnanNpaS1jYWxjLk9sZCcpO1xuICAgIGNvbnN0IG1ldGhvZCA9IGtsYXNzLmdldE1ldGhvZHMoKS5kb0FUaGluZztcbiAgICBleHBlY3QobWV0aG9kLmRvY3MuZGVwcmVjYXRlZCkudG9CZVRydXRoeSgpO1xuICB9KTtcbn0pO1xuXG4vKipcbiAqIFRoaXMgdGVzdCBpcyBhY3R1YWxseSB0ZXN0aW5nIHRoZSBjb21iaW5hdGlvbiBvZiBganNpaWAsIGBqc2lpLWNhbGNgIGFuZCBganNpaS1yZWZsZWN0YC5cbiAqL1xudGVzdCgnU3VibW9kdWxlcyBjYW4gaGF2ZSBhIFJFQURNRScsICgpID0+IHtcbiAgY29uc3QganNpaUNhbGMgPSB0eXBlc3lzLmZpbmRBc3NlbWJseSgnanNpaS1jYWxjJyk7XG5cbiAgY29uc3Qgc3VibW9kdWxlID0ganNpaUNhbGMuc3VibW9kdWxlcy5maW5kKFxuICAgIChtKSA9PiBtLmZxbiA9PT0gJ2pzaWktY2FsYy5zdWJtb2R1bGUnLFxuICApO1xuICBjb25zdCBpc29sYXRlZCA9IHN1Ym1vZHVsZT8uc3VibW9kdWxlcy5maW5kKFxuICAgIChtKSA9PiBtLmZxbiA9PT0gJ2pzaWktY2FsYy5zdWJtb2R1bGUuaXNvbGF0ZWQnLFxuICApO1xuXG4gIGV4cGVjdChzdWJtb2R1bGU/LnJlYWRtZT8ubWFya2Rvd24pLnRvTWF0Y2goXG4gICAgL1RoaXMgaXMgdGhlIHJlYWRtZS4qanNpaS1jYWxjLnN1Ym1vZHVsZS8sXG4gICk7XG4gIGV4cGVjdChpc29sYXRlZD8ucmVhZG1lPy5tYXJrZG93bikudG9NYXRjaChcbiAgICAvVGhpcyBpcyB0aGUgcmVhZG1lLipqc2lpLWNhbGMuc3VibW9kdWxlLmlzb2xhdGVkLyxcbiAgKTtcbn0pO1xuXG50ZXN0KCdvdmVycmlkZGVuIG1lbWJlciBrbm93cyBhYm91dCBib3RoIHBhcmVudCB0eXBlcycsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgdHMgPSBhd2FpdCB0eXBlU3lzdGVtRnJvbVNvdXJjZShgXG4gICAgZXhwb3J0IGNsYXNzIEZvbyB7XG4gICAgICBwdWJsaWMgYmFyKCkge1xuICAgICAgICBBcnJheS5pc0FycmF5KDMpO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgYm9vKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgY2xhc3MgU3ViRm9vIGV4dGVuZHMgRm9vIHtcbiAgICAgIHB1YmxpYyBib28oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIGApO1xuXG4gIGNvbnN0IHN1cGVyVHlwZSA9IHRzLmZpbmRDbGFzcygndGVzdHBrZy5Gb28nKTtcbiAgY29uc3Qgc3ViVHlwZSA9IHRzLmZpbmRDbGFzcygndGVzdHBrZy5TdWJGb28nKTtcbiAgY29uc3QgZm9vTWV0aG9kID0gc3ViVHlwZS5hbGxNZXRob2RzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gJ2JhcicpITtcbiAgY29uc3QgYm9vTWV0aG9kID0gc3ViVHlwZS5hbGxNZXRob2RzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gJ2JvbycpITtcblxuICBleHBlY3QoZm9vTWV0aG9kLnBhcmVudFR5cGUpLnRvQmUoc3ViVHlwZSk7XG4gIGV4cGVjdChmb29NZXRob2QuZGVmaW5pbmdUeXBlKS50b0JlKHN1cGVyVHlwZSk7XG5cbiAgZXhwZWN0KGJvb01ldGhvZC5wYXJlbnRUeXBlKS50b0JlKHN1YlR5cGUpO1xuICBleHBlY3QoYm9vTWV0aG9kLmRlZmluaW5nVHlwZSkudG9CZShzdWJUeXBlKTtcbiAgZXhwZWN0KGJvb01ldGhvZC5vdmVycmlkZXMpLnRvQmUoc3VwZXJUeXBlKTtcbn0pO1xuXG5kZXNjcmliZSgnU3RhYmlsaXR5JywgKCkgPT4ge1xuICB0ZXN0KCdjYW4gYmUgcmVhZCBvbiBhbiBpdGVtJywgKCkgPT4ge1xuICAgIGNvbnN0IGtsYXNzID0gdHlwZXN5cy5maW5kQ2xhc3MoJ2pzaWktY2FsYy5Eb2N1bWVudGVkQ2xhc3MnKTtcbiAgICBleHBlY3Qoa2xhc3MuZG9jcy5zdGFiaWxpdHkpLnRvQmUoc3BlYy5TdGFiaWxpdHkuU3RhYmxlKTtcbiAgfSk7XG5cbiAgdGVzdCgnaXMgaW5oZXJpdGVkIGZyb20gY2xhc3MnLCAoKSA9PiB7XG4gICAgY29uc3Qga2xhc3MgPSB0eXBlc3lzLmZpbmRDbGFzcygnanNpaS1jYWxjLkRvY3VtZW50ZWRDbGFzcycpO1xuICAgIGNvbnN0IG1ldGhvZCA9IGtsYXNzLmdldE1ldGhvZHMoKS5ncmVldDtcbiAgICBleHBlY3QobWV0aG9kLmRvY3Muc3RhYmlsaXR5KS50b0JlKHNwZWMuU3RhYmlsaXR5LlN0YWJsZSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NhbiBiZSBvdmVycmlkZGVuIGZyb20gY2xhc3MnLCAoKSA9PiB7XG4gICAgY29uc3Qga2xhc3MgPSB0eXBlc3lzLmZpbmRDbGFzcygnanNpaS1jYWxjLkRvY3VtZW50ZWRDbGFzcycpO1xuICAgIGNvbnN0IG1ldGhvZCA9IGtsYXNzLmdldE1ldGhvZHMoKS5ob2xhO1xuICAgIGV4cGVjdChtZXRob2QuZG9jcy5zdGFiaWxpdHkpLnRvQmUoc3BlYy5TdGFiaWxpdHkuRXhwZXJpbWVudGFsKTtcbiAgfSk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGRlc2NyaWJlKCdsb3dlc3Qgc3RhYmlsaXR5IGd1YXJhbnRlZSBpcyBhZHZlcnRpc2VkJywgKCkgPT4ge1xuICAgIHRlc3QoJ3doZW4gc3ViY2xhc3MgaXMgZXhwZXJpbWVudGFsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHMgPSBhd2FpdCB0eXBlU3lzdGVtRnJvbVNvdXJjZShgXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAc3RhYmxlXG4gICAgICAgICAqL1xuICAgICAgICBleHBvcnQgY2xhc3MgRm9vIHtcbiAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoMyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcHVibGljIGJhcigpIHtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoMyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgICAgICovXG4gICAgICAgIGV4cG9ydCBjbGFzcyBTdWJGb28gZXh0ZW5kcyBGb28ge1xuICAgICAgICB9XG4gICAgICBgKTtcbiAgICAgIGNvbnN0IGNsYXNzVHlwZSA9IHRzLmZpbmRDbGFzcygndGVzdHBrZy5TdWJGb28nKTtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVyID0gY2xhc3NUeXBlLmluaXRpYWxpemVyITtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IGNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gJ2JhcicpITtcblxuICAgICAgZXhwZWN0KGluaXRpYWxpemVyLmRvY3Muc3RhYmlsaXR5KS50b0VxdWFsKFN0YWJpbGl0eS5FeHBlcmltZW50YWwpO1xuICAgICAgZXhwZWN0KG1ldGhvZC5kb2NzLnN0YWJpbGl0eSkudG9FcXVhbChTdGFiaWxpdHkuRXhwZXJpbWVudGFsKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3doZW4gbWV0aG9kIGlzIGV4cGVyaW1lbnRhbCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRzID0gYXdhaXQgdHlwZVN5c3RlbUZyb21Tb3VyY2UoYFxuICAgICAgICAvKipcbiAgICAgICAgICogQHN0YWJsZVxuICAgICAgICAgKi9cbiAgICAgICAgZXhwb3J0IGNsYXNzIEZvbyB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSgzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZXhwZXJpbWVudGFsXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljIGJhcigpIHtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoMyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBzdGFibGVcbiAgICAgICAgICovXG4gICAgICAgIGV4cG9ydCBjbGFzcyBTdWJGb28gZXh0ZW5kcyBGb28ge1xuICAgICAgICB9XG4gICAgICBgKTtcblxuICAgICAgY29uc3QgY2xhc3NUeXBlID0gdHMuZmluZENsYXNzKCd0ZXN0cGtnLlN1YkZvbycpO1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZXIgPSBjbGFzc1R5cGUuaW5pdGlhbGl6ZXIhO1xuICAgICAgY29uc3QgbWV0aG9kID0gY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmluZCgobSkgPT4gbS5uYW1lID09PSAnYmFyJykhO1xuXG4gICAgICBleHBlY3QoaW5pdGlhbGl6ZXIuZG9jcy5zdGFiaWxpdHkpLnRvRXF1YWwoU3RhYmlsaXR5LkV4cGVyaW1lbnRhbCk7XG4gICAgICBleHBlY3QobWV0aG9kLmRvY3Muc3RhYmlsaXR5KS50b0VxdWFsKFN0YWJpbGl0eS5FeHBlcmltZW50YWwpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnd2hlbiBtZXRob2QgaXMgZXhwbGljaXRseSBtYXJrZWQgc3RhYmxlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHMgPSBhd2FpdCB0eXBlU3lzdGVtRnJvbVNvdXJjZShgXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAc3RhYmxlXG4gICAgICAgICAqL1xuICAgICAgICBleHBvcnQgY2xhc3MgRm9vIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAc3RhYmxlXG4gICAgICAgICAgICovXG4gICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KDMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBzdGFibGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWMgYmFyKCkge1xuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSgzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAgICAgKi9cbiAgICAgICAgZXhwb3J0IGNsYXNzIFN1YkZvbyBleHRlbmRzIEZvbyB7XG4gICAgICAgIH1cbiAgICAgIGApO1xuXG4gICAgICBjb25zdCBjbGFzc1R5cGUgPSB0cy5maW5kQ2xhc3MoJ3Rlc3Rwa2cuU3ViRm9vJyk7XG4gICAgICBjb25zdCBpbml0aWFsaXplciA9IGNsYXNzVHlwZS5pbml0aWFsaXplciE7XG4gICAgICBjb25zdCBtZXRob2QgPSBjbGFzc1R5cGUuYWxsTWV0aG9kcy5maW5kKChtKSA9PiBtLm5hbWUgPT09ICdiYXInKSE7XG5cbiAgICAgIGV4cGVjdChpbml0aWFsaXplci5kb2NzLnN0YWJpbGl0eSkudG9FcXVhbChTdGFiaWxpdHkuRXhwZXJpbWVudGFsKTtcbiAgICAgIGV4cGVjdChtZXRob2QuZG9jcy5zdGFiaWxpdHkpLnRvRXF1YWwoU3RhYmlsaXR5LkV4cGVyaW1lbnRhbCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdleHRlcm5hbCBzdGFiaWxpdHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0cyA9IGF3YWl0IHR5cGVTeXN0ZW1Gcm9tU291cmNlKGBcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBzdGFiaWxpdHkgZXh0ZXJuYWxcbiAgICAgICAgICovXG4gICAgICAgIGV4cG9ydCBjbGFzcyBGb28ge1xuICAgICAgICAgIHB1YmxpYyBiYXIoKSB7XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KDMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAc3RhYmxlXG4gICAgICAgICAqL1xuICAgICAgICBleHBvcnQgY2xhc3MgU3ViRm9vIGV4dGVuZHMgRm9vIHtcbiAgICAgICAgfVxuICAgICAgYCk7XG5cbiAgICAgIGNvbnN0IGNsYXNzVHlwZSA9IHRzLmZpbmRDbGFzcygndGVzdHBrZy5TdWJGb28nKTtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IGNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gJ2JhcicpITtcblxuICAgICAgZXhwZWN0KG1ldGhvZC5kb2NzLnN0YWJpbGl0eSkudG9FcXVhbChTdGFiaWxpdHkuRXh0ZXJuYWwpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG50ZXN0KCdUeXBlU3lzdGVtLnByb3BlcnRpZXMnLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHRzID0gYXdhaXQgdHlwZVN5c3RlbUZyb21Tb3VyY2UoYFxuICBleHBvcnQgbmFtZXNwYWNlIHN1Ym1vZHVsZSB7XG4gICAgZXhwb3J0IGNsYXNzIEZvbyB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGVzdCA9ICdURVNUJztcbiAgICB9XG4gICAgZXhwb3J0IGludGVyZmFjZSBCYXIge1xuICAgICAgcmVhZG9ubHkgYmF6OiBudW1iZXI7XG4gICAgfVxuICB9XG4gIGApO1xuICBleHBlY3QodHMucHJvcGVydGllcykudG9IYXZlTGVuZ3RoKDIpO1xufSk7XG5cbnRlc3QoJ1R5cGVTeXN0ZW0ubWV0aG9kcycsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgdHMgPSBhd2FpdCB0eXBlU3lzdGVtRnJvbVNvdXJjZShgXG4gIGV4cG9ydCBuYW1lc3BhY2Ugc3VibW9kdWxlIHtcbiAgICBleHBvcnQgY2xhc3MgRm9vIHtcbiAgICAgIHB1YmxpYyBtZXRob2QoKTogdm9pZCB7fVxuICAgIH1cbiAgICBleHBvcnQgaW50ZXJmYWNlIElCYXIge1xuICAgICAgYmF6KCk6IG51bWJlcjtcbiAgICB9XG4gIH1cbiAgYCk7XG4gIGV4cGVjdCh0cy5tZXRob2RzKS50b0hhdmVMZW5ndGgoMik7XG59KTtcblxuZnVuY3Rpb24gcmVzb2x2ZU1vZHVsZURpcihuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoYCR7bmFtZX0vcGFja2FnZS5qc29uYCkpO1xufVxuIl19
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zeXN0ZW0udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInR5cGUtc3lzdGVtLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBbUM7QUFDbkMscUNBQXVDO0FBQ3ZDLDZCQUE2QjtBQUU3QixnQ0FBb0M7QUFDcEMsaUNBQWtFO0FBRWxFLElBQUksT0FBbUIsQ0FBQztBQUV4QixTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDbkIsT0FBTyxHQUFHLElBQUksZ0JBQVUsRUFBRSxDQUFDO0lBQzNCLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtJQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzNELE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLEdBQUcsRUFBRSxDQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFMUUsSUFBSSxDQUFDLDREQUE0RCxFQUFFLEdBQUcsRUFBRSxDQUN0RSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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QUN4QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNwQyxNQUFNLEVBQUUsR0FBRyxNQUFNLDJCQUFvQixDQUFDOzs7Ozs7Ozs7R0FTckMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsNENBQTRDLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDNUQsTUFBTSxHQUFHLEdBQUcsTUFBTSx5QkFBa0IsQ0FBQztRQUNuQyxVQUFVLEVBQUUscUNBQXFDO1FBQ2pELFdBQVcsRUFBRSxxQkFBcUI7S0FDbkMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNwZWMgZnJvbSAnQGpzaWkvc3BlYyc7XG5pbXBvcnQgeyBTdGFiaWxpdHkgfSBmcm9tICdAanNpaS9zcGVjJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IFR5cGVTeXN0ZW0gfSBmcm9tICcuLi9saWInO1xuaW1wb3J0IHsgdHlwZVN5c3RlbUZyb21Tb3VyY2UsIGFzc2VtYmx5RnJvbVNvdXJjZSB9IGZyb20gJy4vdXRpbCc7XG5cbmxldCB0eXBlc3lzOiBUeXBlU3lzdGVtO1xuXG5iZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuICB0eXBlc3lzID0gbmV3IFR5cGVTeXN0ZW0oKTtcbiAgYXdhaXQgdHlwZXN5cy5sb2FkTW9kdWxlKHJlc29sdmVNb2R1bGVEaXIoJ2pzaWktY2FsYycpKTtcbn0pO1xuXG50ZXN0KCdUeXBlU3lzdGVtLmhhc0Fzc2VtYmx5JywgKCkgPT4ge1xuICBleHBlY3QodHlwZXN5cy5pbmNsdWRlc0Fzc2VtYmx5KCdAZm9vL2JhcicpKS50b0JlRmFsc3koKTtcbiAgZXhwZWN0KHR5cGVzeXMuaW5jbHVkZXNBc3NlbWJseSgnanNpaS1jYWxjJykpLnRvQmVUcnV0aHkoKTtcbiAgZXhwZWN0KHR5cGVzeXMuaW5jbHVkZXNBc3NlbWJseSgnQHNjb3BlL2pzaWktY2FsYy1saWInKSkudG9CZVRydXRoeSgpO1xufSk7XG5cbnRlc3QoJ1R5cGVTeXN0ZW0uYXNzZW1ibGllcyBsaXN0cyBhbGwgdGhlIGxvYWRlZCBhc3NlbWJsaWVzJywgKCkgPT5cbiAgZXhwZWN0KHR5cGVzeXMuYXNzZW1ibGllcy5tYXAoKGEpID0+IGEubmFtZSkuc29ydCgpKS50b01hdGNoU25hcHNob3QoKSk7XG5cbnRlc3QoJ1R5cGVTeXN0ZW0uY2xhc3NlcyBsaXN0cyBhbGwgdGhlIGNsYXNzZXMgaW4gdGhlIHR5cGVzeXN0ZW0nLCAoKSA9PlxuICBleHBlY3QodHlwZXN5cy5jbGFzc2VzLm1hcCgoYykgPT4gYy5mcW4pLnNvcnQoKSkudG9NYXRjaFNuYXBzaG90KCkpO1xuXG50ZXN0KCdmaW5kQ2xhc3MnLCAoKSA9PiB7XG4gIGNvbnN0IGNhbGMgPSB0eXBlc3lzLmZpbmRDbGFzcygnanNpaS1jYWxjLkNhbGN1bGF0b3InKTtcbiAgY29uc3QgYWN0dWFsID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgT2JqZWN0LnZhbHVlcyhjYWxjLmdldE1ldGhvZHMoLyogaW5oZXJpdGVkICovIHRydWUpKS5mb3JFYWNoKChtZXRob2QpID0+IHtcbiAgICBhY3R1YWwucHVzaChgJHttZXRob2QubmFtZX0gZnJvbSAke21ldGhvZC5wYXJlbnRUeXBlLm5hbWV9YCk7XG4gIH0pO1xuXG4gIGV4cGVjdChhY3R1YWwuam9pbignXFxuJykpLnRvTWF0Y2hTbmFwc2hvdCgpO1xufSk7XG5cbnRlc3QoJ1wicm9vdHNcIiBpcyBhIGxpc3Qgb2YgdGhlIGRpcmVjdGx5IGxvYWRlZCBhc3NlbWJsaWVzJywgYXN5bmMgKCkgPT4ge1xuICBleHBlY3QodHlwZXN5cy5yb290cy5sZW5ndGgpLnRvQmUoMSk7XG4gIGV4cGVjdCh0eXBlc3lzLnJvb3RzWzBdKS50b0JlKHR5cGVzeXMuZmluZEFzc2VtYmx5KCdqc2lpLWNhbGMnKSk7XG5cbiAgLy8gbm93IGxvYWQgYW5vdGhlciBhc3NlbWJsaXkgZGlyZWN0bHlcbiAgYXdhaXQgdHlwZXN5cy5sb2FkKHJlc29sdmVNb2R1bGVEaXIoJ0BzY29wZS9qc2lpLWNhbGMtbGliJykpO1xuICByZXR1cm4gZXhwZWN0KHR5cGVzeXMucm9vdHMubGVuZ3RoKS50b0JlKDIpO1xufSk7XG5cbmRlc2NyaWJlKCdUeXBlJywgKCkgPT4ge1xuICB0ZXN0KCcuaXNDbGFzc1R5cGUnLCAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBjbGF6eiA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFsbFR5cGVzJyk7XG4gICAgY29uc3QgaWZhY2UgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5JUHVibGljSW50ZXJmYWNlJyk7XG4gICAgY29uc3QgZW51bXQgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlc0VudW0nKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QoY2xhenouaXNDbGFzc1R5cGUoKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChpZmFjZS5pc0NsYXNzVHlwZSgpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QoZW51bXQuaXNDbGFzc1R5cGUoKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIHRlc3QoJy5pc0RhdGFUeXBlJywgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgY2xhenogPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlcycpO1xuICAgIGNvbnN0IGlmYWNlID0gdHlwZXN5cy5maW5kRnFuKFxuICAgICAgJ2pzaWktY2FsYy5JSW50ZXJmYWNlVGhhdFNob3VsZE5vdEJlQURhdGFUeXBlJyxcbiAgICApO1xuICAgIGNvbnN0IGRhdGF0ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQ2FsY3VsYXRvclByb3BzJyk7XG4gICAgY29uc3QgZW51bXQgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlc0VudW0nKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QoY2xhenouaXNEYXRhVHlwZSgpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QoaWZhY2UuaXNEYXRhVHlwZSgpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QoZGF0YXQuaXNEYXRhVHlwZSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGVudW10LmlzRGF0YVR5cGUoKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIHRlc3QoJy5pc0ludGVyZmFjZVR5cGUnLCAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBjbGF6eiA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFsbFR5cGVzJyk7XG4gICAgY29uc3QgaWZhY2UgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5JUHVibGljSW50ZXJmYWNlJyk7XG4gICAgY29uc3QgZW51bXQgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlc0VudW0nKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QoY2xhenouaXNJbnRlcmZhY2VUeXBlKCkpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChpZmFjZS5pc0ludGVyZmFjZVR5cGUoKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChlbnVtdC5pc0ludGVyZmFjZVR5cGUoKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIHRlc3QoJy5pc0VudW1UeXBlJywgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgY2xhenogPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlcycpO1xuICAgIGNvbnN0IGlmYWNlID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuSVB1YmxpY0ludGVyZmFjZScpO1xuICAgIGNvbnN0IGVudW10ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWxsVHlwZXNFbnVtJyk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGNsYXp6LmlzRW51bVR5cGUoKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KGlmYWNlLmlzRW51bVR5cGUoKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KGVudW10LmlzRW51bVR5cGUoKSkudG9CZVRydXRoeSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnLmV4dGVuZHMoYmFzZSknLCAoKSA9PiB7XG4gICAgdGVzdCgnd2l0aCBpbnRlcmZhY2VzJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IGJhc2UgPSB0eXBlc3lzLmZpbmRGcW4oXG4gICAgICAgICdAc2NvcGUvanNpaS1jYWxjLWJhc2Utb2YtYmFzZS5WZXJ5QmFzZVByb3BzJyxcbiAgICAgICk7XG4gICAgICBjb25zdCBjbGF6eiA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkltcGxpY3RCYXNlT2ZCYXNlJyk7XG4gICAgICBjb25zdCBlbnVtdCA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFsbFR5cGVzRW51bScpO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3QoYmFzZS5leHRlbmRzKGJhc2UpKS50b0JlVHJ1dGh5KCk7XG4gICAgICBleHBlY3QoY2xhenouZXh0ZW5kcyhjbGF6eikpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGV4cGVjdChjbGF6ei5leHRlbmRzKGJhc2UpKS50b0JlVHJ1dGh5KCk7XG4gICAgICBleHBlY3QoZW51bXQuZXh0ZW5kcyhiYXNlKSkudG9CZUZhbHN5KCk7XG4gICAgICBleHBlY3QoYmFzZS5leHRlbmRzKGVudW10KSkudG9CZUZhbHN5KCk7XG4gICAgICBleHBlY3QoYmFzZS5leHRlbmRzKGNsYXp6KSkudG9CZUZhbHN5KCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd3aXRoIGEgY2xhc3MgYW5kIGFuIGludGVyZmFjZScsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBpZmFjZSA9IHR5cGVzeXMuZmluZEZxbihcbiAgICAgICAgJ2pzaWktY2FsYy5JSW50ZXJmYWNlSW1wbGVtZW50ZWRCeUFic3RyYWN0Q2xhc3MnLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNsYXp6ID0gdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWJzdHJhY3RDbGFzcycpO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3QoY2xhenouZXh0ZW5kcyhpZmFjZSkpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3dpdGggdHdvIGNsYXNzZXMnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3QgYmFzZSA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFic3RyYWN0Q2xhc3NCYXNlJyk7XG4gICAgICBjb25zdCBjbGF6eiA9IHR5cGVzeXMuZmluZEZxbignanNpaS1jYWxjLkFic3RyYWN0Q2xhc3MnKTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KGNsYXp6LmV4dGVuZHMoYmFzZSkpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJy5hbGxJbXBsZW1lbnRhdGlvbnMnLCAoKSA9PiB7XG4gICAgdGVzdCgnd2l0aCBhbiBpbnRlcmZhY2UnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3QgYmFzZSA9IHR5cGVzeXMuZmluZEZxbihcbiAgICAgICAgJ2pzaWktY2FsYy5JSW50ZXJmYWNlSW1wbGVtZW50ZWRCeUFic3RyYWN0Q2xhc3MnLFxuICAgICAgKTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KGJhc2UuYWxsSW1wbGVtZW50YXRpb25zKS50b0VxdWFsKFtcbiAgICAgICAgdHlwZXN5cy5maW5kRnFuKCdqc2lpLWNhbGMuQWJzdHJhY3RDbGFzcycpLFxuICAgICAgICBiYXNlLFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd3aXRoIGFuIGVudW0nLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3QgZW51bXQgPSB0eXBlc3lzLmZpbmRGcW4oJ2pzaWktY2FsYy5BbGxUeXBlc0VudW0nKTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KGVudW10LmFsbEltcGxlbWVudGF0aW9ucykudG9FcXVhbChbXSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbnRlc3QoJ1RocmVlIEluaGVyaXRhbmNlIExldmVscycsICgpID0+IHtcbiAgY29uc3QgaWZhY2UgPSB0eXBlc3lzLmZpbmRJbnRlcmZhY2UoXG4gICAgJ0BzY29wZS9qc2lpLWNhbGMtbGliLklUaHJlZUxldmVsc0ludGVyZmFjZScsXG4gICk7XG4gIGNvbnN0IG1ldGhvZG5hbWVzID0gaWZhY2UuYWxsTWV0aG9kcy5tYXAoKG0pID0+IG0ubmFtZSk7XG4gIG1ldGhvZG5hbWVzLnNvcnQoKTtcbiAgZXhwZWN0KG1ldGhvZG5hbWVzKS50b0VxdWFsKFsnYmFyJywgJ2JheicsICdmb28nXSk7XG59KTtcblxuZGVzY3JpYmUoJ0BkZXByZWNhdGVkJywgKCkgPT4ge1xuICB0ZXN0KCdjYW4gYmUgcmVhZCBvbiBhbiBpdGVtJywgKCkgPT4ge1xuICAgIGNvbnN0IGtsYXNzID0gdHlwZXN5cy5maW5kQ2xhc3MoJ2pzaWktY2FsYy5PbGQnKTtcbiAgICBleHBlY3Qoa2xhc3MuZG9jcy5kZXByZWNhdGVkKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGtsYXNzLmRvY3Muc3RhYmlsaXR5KS50b0JlKHNwZWMuU3RhYmlsaXR5LkRlcHJlY2F0ZWQpO1xuICB9KTtcblxuICB0ZXN0KCdpcyBpbmhlcml0ZWQgZnJvbSBjbGFzcycsICgpID0+IHtcbiAgICBjb25zdCBrbGFzcyA9IHR5cGVzeXMuZmluZENsYXNzKCdqc2lpLWNhbGMuT2xkJyk7XG4gICAgY29uc3QgbWV0aG9kID0ga2xhc3MuZ2V0TWV0aG9kcygpLmRvQVRoaW5nO1xuICAgIGV4cGVjdChtZXRob2QuZG9jcy5kZXByZWNhdGVkKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xufSk7XG5cbi8qKlxuICogVGhpcyB0ZXN0IGlzIGFjdHVhbGx5IHRlc3RpbmcgdGhlIGNvbWJpbmF0aW9uIG9mIGBqc2lpYCwgYGpzaWktY2FsY2AgYW5kIGBqc2lpLXJlZmxlY3RgLlxuICovXG50ZXN0KCdTdWJtb2R1bGVzIGNhbiBoYXZlIGEgUkVBRE1FJywgKCkgPT4ge1xuICBjb25zdCBqc2lpQ2FsYyA9IHR5cGVzeXMuZmluZEFzc2VtYmx5KCdqc2lpLWNhbGMnKTtcblxuICBjb25zdCBzdWJtb2R1bGUgPSBqc2lpQ2FsYy5zdWJtb2R1bGVzLmZpbmQoXG4gICAgKG0pID0+IG0uZnFuID09PSAnanNpaS1jYWxjLnN1Ym1vZHVsZScsXG4gICk7XG4gIGNvbnN0IGlzb2xhdGVkID0gc3VibW9kdWxlPy5zdWJtb2R1bGVzLmZpbmQoXG4gICAgKG0pID0+IG0uZnFuID09PSAnanNpaS1jYWxjLnN1Ym1vZHVsZS5pc29sYXRlZCcsXG4gICk7XG5cbiAgZXhwZWN0KHN1Ym1vZHVsZT8ucmVhZG1lPy5tYXJrZG93bikudG9NYXRjaChcbiAgICAvVGhpcyBpcyB0aGUgcmVhZG1lLipqc2lpLWNhbGMuc3VibW9kdWxlLyxcbiAgKTtcbiAgZXhwZWN0KGlzb2xhdGVkPy5yZWFkbWU/Lm1hcmtkb3duKS50b01hdGNoKFxuICAgIC9UaGlzIGlzIHRoZSByZWFkbWUuKmpzaWktY2FsYy5zdWJtb2R1bGUuaXNvbGF0ZWQvLFxuICApO1xufSk7XG5cbnRlc3QoJ292ZXJyaWRkZW4gbWVtYmVyIGtub3dzIGFib3V0IGJvdGggcGFyZW50IHR5cGVzJywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCB0cyA9IGF3YWl0IHR5cGVTeXN0ZW1Gcm9tU291cmNlKGBcbiAgICBleHBvcnQgY2xhc3MgRm9vIHtcbiAgICAgIHB1YmxpYyBiYXIoKSB7XG4gICAgICAgIEFycmF5LmlzQXJyYXkoMyk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBib28oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBTdWJGb28gZXh0ZW5kcyBGb28ge1xuICAgICAgcHVibGljIGJvbygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgYCk7XG5cbiAgY29uc3Qgc3VwZXJUeXBlID0gdHMuZmluZENsYXNzKCd0ZXN0cGtnLkZvbycpO1xuICBjb25zdCBzdWJUeXBlID0gdHMuZmluZENsYXNzKCd0ZXN0cGtnLlN1YkZvbycpO1xuICBjb25zdCBmb29NZXRob2QgPSBzdWJUeXBlLmFsbE1ldGhvZHMuZmluZCgobSkgPT4gbS5uYW1lID09PSAnYmFyJykhO1xuICBjb25zdCBib29NZXRob2QgPSBzdWJUeXBlLmFsbE1ldGhvZHMuZmluZCgobSkgPT4gbS5uYW1lID09PSAnYm9vJykhO1xuXG4gIGV4cGVjdChmb29NZXRob2QucGFyZW50VHlwZSkudG9CZShzdWJUeXBlKTtcbiAgZXhwZWN0KGZvb01ldGhvZC5kZWZpbmluZ1R5cGUpLnRvQmUoc3VwZXJUeXBlKTtcblxuICBleHBlY3QoYm9vTWV0aG9kLnBhcmVudFR5cGUpLnRvQmUoc3ViVHlwZSk7XG4gIGV4cGVjdChib29NZXRob2QuZGVmaW5pbmdUeXBlKS50b0JlKHN1YlR5cGUpO1xuICBleHBlY3QoYm9vTWV0aG9kLm92ZXJyaWRlcykudG9CZShzdXBlclR5cGUpO1xufSk7XG5cbmRlc2NyaWJlKCdTdGFiaWxpdHknLCAoKSA9PiB7XG4gIHRlc3QoJ2NhbiBiZSByZWFkIG9uIGFuIGl0ZW0nLCAoKSA9PiB7XG4gICAgY29uc3Qga2xhc3MgPSB0eXBlc3lzLmZpbmRDbGFzcygnanNpaS1jYWxjLkRvY3VtZW50ZWRDbGFzcycpO1xuICAgIGV4cGVjdChrbGFzcy5kb2NzLnN0YWJpbGl0eSkudG9CZShzcGVjLlN0YWJpbGl0eS5TdGFibGUpO1xuICB9KTtcblxuICB0ZXN0KCdpcyBpbmhlcml0ZWQgZnJvbSBjbGFzcycsICgpID0+IHtcbiAgICBjb25zdCBrbGFzcyA9IHR5cGVzeXMuZmluZENsYXNzKCdqc2lpLWNhbGMuRG9jdW1lbnRlZENsYXNzJyk7XG4gICAgY29uc3QgbWV0aG9kID0ga2xhc3MuZ2V0TWV0aG9kcygpLmdyZWV0O1xuICAgIGV4cGVjdChtZXRob2QuZG9jcy5zdGFiaWxpdHkpLnRvQmUoc3BlYy5TdGFiaWxpdHkuU3RhYmxlKTtcbiAgfSk7XG5cbiAgdGVzdCgnY2FuIGJlIG92ZXJyaWRkZW4gZnJvbSBjbGFzcycsICgpID0+IHtcbiAgICBjb25zdCBrbGFzcyA9IHR5cGVzeXMuZmluZENsYXNzKCdqc2lpLWNhbGMuRG9jdW1lbnRlZENsYXNzJyk7XG4gICAgY29uc3QgbWV0aG9kID0ga2xhc3MuZ2V0TWV0aG9kcygpLmhvbGE7XG4gICAgZXhwZWN0KG1ldGhvZC5kb2NzLnN0YWJpbGl0eSkudG9CZShzcGVjLlN0YWJpbGl0eS5FeHBlcmltZW50YWwpO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgZGVzY3JpYmUoJ2xvd2VzdCBzdGFiaWxpdHkgZ3VhcmFudGVlIGlzIGFkdmVydGlzZWQnLCAoKSA9PiB7XG4gICAgdGVzdCgnd2hlbiBzdWJjbGFzcyBpcyBleHBlcmltZW50YWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0cyA9IGF3YWl0IHR5cGVTeXN0ZW1Gcm9tU291cmNlKGBcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBzdGFibGVcbiAgICAgICAgICovXG4gICAgICAgIGV4cG9ydCBjbGFzcyBGb28ge1xuICAgICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSgzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwdWJsaWMgYmFyKCkge1xuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSgzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAgICAgKi9cbiAgICAgICAgZXhwb3J0IGNsYXNzIFN1YkZvbyBleHRlbmRzIEZvbyB7XG4gICAgICAgIH1cbiAgICAgIGApO1xuICAgICAgY29uc3QgY2xhc3NUeXBlID0gdHMuZmluZENsYXNzKCd0ZXN0cGtnLlN1YkZvbycpO1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZXIgPSBjbGFzc1R5cGUuaW5pdGlhbGl6ZXIhO1xuICAgICAgY29uc3QgbWV0aG9kID0gY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmluZCgobSkgPT4gbS5uYW1lID09PSAnYmFyJykhO1xuXG4gICAgICBleHBlY3QoaW5pdGlhbGl6ZXIuZG9jcy5zdGFiaWxpdHkpLnRvRXF1YWwoU3RhYmlsaXR5LkV4cGVyaW1lbnRhbCk7XG4gICAgICBleHBlY3QobWV0aG9kLmRvY3Muc3RhYmlsaXR5KS50b0VxdWFsKFN0YWJpbGl0eS5FeHBlcmltZW50YWwpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnd2hlbiBtZXRob2QgaXMgZXhwZXJpbWVudGFsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHMgPSBhd2FpdCB0eXBlU3lzdGVtRnJvbVNvdXJjZShgXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAc3RhYmxlXG4gICAgICAgICAqL1xuICAgICAgICBleHBvcnQgY2xhc3MgRm9vIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZXhwZXJpbWVudGFsXG4gICAgICAgICAgICovXG4gICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KDMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWMgYmFyKCkge1xuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSgzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQHN0YWJsZVxuICAgICAgICAgKi9cbiAgICAgICAgZXhwb3J0IGNsYXNzIFN1YkZvbyBleHRlbmRzIEZvbyB7XG4gICAgICAgIH1cbiAgICAgIGApO1xuXG4gICAgICBjb25zdCBjbGFzc1R5cGUgPSB0cy5maW5kQ2xhc3MoJ3Rlc3Rwa2cuU3ViRm9vJyk7XG4gICAgICBjb25zdCBpbml0aWFsaXplciA9IGNsYXNzVHlwZS5pbml0aWFsaXplciE7XG4gICAgICBjb25zdCBtZXRob2QgPSBjbGFzc1R5cGUuYWxsTWV0aG9kcy5maW5kKChtKSA9PiBtLm5hbWUgPT09ICdiYXInKSE7XG5cbiAgICAgIGV4cGVjdChpbml0aWFsaXplci5kb2NzLnN0YWJpbGl0eSkudG9FcXVhbChTdGFiaWxpdHkuRXhwZXJpbWVudGFsKTtcbiAgICAgIGV4cGVjdChtZXRob2QuZG9jcy5zdGFiaWxpdHkpLnRvRXF1YWwoU3RhYmlsaXR5LkV4cGVyaW1lbnRhbCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd3aGVuIG1ldGhvZCBpcyBleHBsaWNpdGx5IG1hcmtlZCBzdGFibGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0cyA9IGF3YWl0IHR5cGVTeXN0ZW1Gcm9tU291cmNlKGBcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBzdGFibGVcbiAgICAgICAgICovXG4gICAgICAgIGV4cG9ydCBjbGFzcyBGb28ge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBzdGFibGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoMyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQHN0YWJsZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1YmxpYyBiYXIoKSB7XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KDMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZXhwZXJpbWVudGFsXG4gICAgICAgICAqL1xuICAgICAgICBleHBvcnQgY2xhc3MgU3ViRm9vIGV4dGVuZHMgRm9vIHtcbiAgICAgICAgfVxuICAgICAgYCk7XG5cbiAgICAgIGNvbnN0IGNsYXNzVHlwZSA9IHRzLmZpbmRDbGFzcygndGVzdHBrZy5TdWJGb28nKTtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVyID0gY2xhc3NUeXBlLmluaXRpYWxpemVyITtcbiAgICAgIGNvbnN0IG1ldGhvZCA9IGNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gJ2JhcicpITtcblxuICAgICAgZXhwZWN0KGluaXRpYWxpemVyLmRvY3Muc3RhYmlsaXR5KS50b0VxdWFsKFN0YWJpbGl0eS5FeHBlcmltZW50YWwpO1xuICAgICAgZXhwZWN0KG1ldGhvZC5kb2NzLnN0YWJpbGl0eSkudG9FcXVhbChTdGFiaWxpdHkuRXhwZXJpbWVudGFsKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2V4dGVybmFsIHN0YWJpbGl0eScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRzID0gYXdhaXQgdHlwZVN5c3RlbUZyb21Tb3VyY2UoYFxuICAgICAgICAvKipcbiAgICAgICAgICogQHN0YWJpbGl0eSBleHRlcm5hbFxuICAgICAgICAgKi9cbiAgICAgICAgZXhwb3J0IGNsYXNzIEZvbyB7XG4gICAgICAgICAgcHVibGljIGJhcigpIHtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoMyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBzdGFibGVcbiAgICAgICAgICovXG4gICAgICAgIGV4cG9ydCBjbGFzcyBTdWJGb28gZXh0ZW5kcyBGb28ge1xuICAgICAgICB9XG4gICAgICBgKTtcblxuICAgICAgY29uc3QgY2xhc3NUeXBlID0gdHMuZmluZENsYXNzKCd0ZXN0cGtnLlN1YkZvbycpO1xuICAgICAgY29uc3QgbWV0aG9kID0gY2xhc3NUeXBlLmFsbE1ldGhvZHMuZmluZCgobSkgPT4gbS5uYW1lID09PSAnYmFyJykhO1xuXG4gICAgICBleHBlY3QobWV0aG9kLmRvY3Muc3RhYmlsaXR5KS50b0VxdWFsKFN0YWJpbGl0eS5FeHRlcm5hbCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbnRlc3QoJ1R5cGVTeXN0ZW0ucHJvcGVydGllcycsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgdHMgPSBhd2FpdCB0eXBlU3lzdGVtRnJvbVNvdXJjZShgXG4gIGV4cG9ydCBuYW1lc3BhY2Ugc3VibW9kdWxlIHtcbiAgICBleHBvcnQgY2xhc3MgRm9vIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0ZXN0ID0gJ1RFU1QnO1xuICAgIH1cbiAgICBleHBvcnQgaW50ZXJmYWNlIEJhciB7XG4gICAgICByZWFkb25seSBiYXo6IG51bWJlcjtcbiAgICB9XG4gIH1cbiAgYCk7XG4gIGV4cGVjdCh0cy5wcm9wZXJ0aWVzKS50b0hhdmVMZW5ndGgoMik7XG59KTtcblxudGVzdCgnVHlwZVN5c3RlbS5tZXRob2RzJywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCB0cyA9IGF3YWl0IHR5cGVTeXN0ZW1Gcm9tU291cmNlKGBcbiAgZXhwb3J0IG5hbWVzcGFjZSBzdWJtb2R1bGUge1xuICAgIGV4cG9ydCBjbGFzcyBGb28ge1xuICAgICAgcHVibGljIG1ldGhvZCgpOiB2b2lkIHt9XG4gICAgfVxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUJhciB7XG4gICAgICBiYXooKTogbnVtYmVyO1xuICAgIH1cbiAgfVxuICBgKTtcbiAgZXhwZWN0KHRzLm1ldGhvZHMpLnRvSGF2ZUxlbmd0aCgyKTtcbn0pO1xuXG50ZXN0KCdBc3NlbWJseSBhbGxUeXBlcyBpbmNsdWRlcyBzdWJtb2R1bGUgdHlwZXMnLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbVNvdXJjZSh7XG4gICAgJ2luZGV4LnRzJzogJ2V4cG9ydCAqIGFzIHN1Ym1vZCBmcm9tIFwiLi9zdWJtb2RcIjsnLFxuICAgICdzdWJtb2QudHMnOiBgZXhwb3J0IGNsYXNzIEZvbyB7fWAsXG4gIH0pO1xuXG4gIGV4cGVjdChhc20uYWxsVHlwZXMubWFwKCh0KSA9PiB0LmZxbikpLnRvRXF1YWwoWyd0ZXN0cGtnLnN1Ym1vZC5Gb28nXSk7XG59KTtcblxuZnVuY3Rpb24gcmVzb2x2ZU1vZHVsZURpcihuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoYCR7bmFtZX0vcGFja2FnZS5qc29uYCkpO1xufVxuIl19
|
package/test/util.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { MultipleSourceFiles, PackageInfo } from 'jsii';
|
|
2
|
+
import { Assembly, TypeSystem } from '../lib';
|
|
3
|
+
export declare function typeSystemFromSource(source: string | MultipleSourceFiles, cb?: (obj: PackageInfo) => void): Promise<TypeSystem>;
|
|
4
|
+
export declare function assemblyFromSource(source: string | MultipleSourceFiles, cb?: (obj: PackageInfo) => void): Promise<Assembly>;
|
package/test/util.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.typeSystemFromSource = void 0;
|
|
4
|
-
const
|
|
3
|
+
exports.assemblyFromSource = exports.typeSystemFromSource = void 0;
|
|
4
|
+
const jsii_1 = require("jsii");
|
|
5
5
|
const lib_1 = require("../lib");
|
|
6
|
-
async function typeSystemFromSource(source) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
ts.addAssembly(new lib_1.Assembly(ts, assembly));
|
|
10
|
-
return ts;
|
|
6
|
+
async function typeSystemFromSource(source, cb) {
|
|
7
|
+
const asm = await assemblyFromSource(source, cb);
|
|
8
|
+
return asm.system;
|
|
11
9
|
}
|
|
12
10
|
exports.typeSystemFromSource = typeSystemFromSource;
|
|
13
|
-
|
|
11
|
+
async function assemblyFromSource(source, cb) {
|
|
12
|
+
const ass = await jsii_1.sourceToAssemblyHelper(source, cb);
|
|
13
|
+
const ts = new lib_1.TypeSystem();
|
|
14
|
+
return ts.addAssembly(new lib_1.Assembly(ts, ass));
|
|
15
|
+
}
|
|
16
|
+
exports.assemblyFromSource = assemblyFromSource;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQWdGO0FBRWhGLGdDQUE4QztBQUV2QyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLE1BQW9DLEVBQ3BDLEVBQStCO0lBRS9CLE1BQU0sR0FBRyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUNwQixDQUFDO0FBTkQsb0RBTUM7QUFFTSxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLE1BQW9DLEVBQ3BDLEVBQStCO0lBRS9CLE1BQU0sR0FBRyxHQUFHLE1BQU0sNkJBQXNCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sRUFBRSxHQUFHLElBQUksZ0JBQVUsRUFBRSxDQUFDO0lBQzVCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGNBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBUEQsZ0RBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb3VyY2VUb0Fzc2VtYmx5SGVscGVyLCBNdWx0aXBsZVNvdXJjZUZpbGVzLCBQYWNrYWdlSW5mbyB9IGZyb20gJ2pzaWknO1xuXG5pbXBvcnQgeyBBc3NlbWJseSwgVHlwZVN5c3RlbSB9IGZyb20gJy4uL2xpYic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0eXBlU3lzdGVtRnJvbVNvdXJjZShcbiAgc291cmNlOiBzdHJpbmcgfCBNdWx0aXBsZVNvdXJjZUZpbGVzLFxuICBjYj86IChvYmo6IFBhY2thZ2VJbmZvKSA9PiB2b2lkLFxuKSB7XG4gIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbVNvdXJjZShzb3VyY2UsIGNiKTtcbiAgcmV0dXJuIGFzbS5zeXN0ZW07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlbWJseUZyb21Tb3VyY2UoXG4gIHNvdXJjZTogc3RyaW5nIHwgTXVsdGlwbGVTb3VyY2VGaWxlcyxcbiAgY2I/OiAob2JqOiBQYWNrYWdlSW5mbykgPT4gdm9pZCxcbik6IFByb21pc2U8QXNzZW1ibHk+IHtcbiAgY29uc3QgYXNzID0gYXdhaXQgc291cmNlVG9Bc3NlbWJseUhlbHBlcihzb3VyY2UsIGNiKTtcbiAgY29uc3QgdHMgPSBuZXcgVHlwZVN5c3RlbSgpO1xuICByZXR1cm4gdHMuYWRkQXNzZW1ibHkobmV3IEFzc2VtYmx5KHRzLCBhc3MpKTtcbn1cbiJdfQ==
|