UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

63 lines 12.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModuleRef = void 0; const get_class_scope_1 = require("../../helpers/get-class-scope"); const injector_1 = require("./injector"); const instance_links_host_1 = require("./instance-links-host"); const instance_wrapper_1 = require("./instance-wrapper"); const contracts_1 = require("../../contracts"); const abstract_instance_resolver_1 = require("./abstract-instance-resolver"); const helpers_1 = require("../../helpers"); class ModuleRef extends abstract_instance_resolver_1.AbstractInstanceResolver { get instanceLinksHost() { if (!this._instanceLinksHost) { this._instanceLinksHost = new instance_links_host_1.InstanceLinksHost(this.container); } return this._instanceLinksHost; } constructor(container) { super(); this.container = container; this.injector = new injector_1.Injector(); } introspect(token) { const { wrapperRef } = this.instanceLinksHost.get(token); let scope = contracts_1.Scope.DEFAULT; if (!wrapperRef.isDependencyTreeStatic()) { scope = contracts_1.Scope.REQUEST; } else if (wrapperRef.isTransient) { scope = contracts_1.Scope.TRANSIENT; } return { scope }; } registerRequestByContextId(request, contextId) { this.container.registerRequestProvider(request, contextId); } async instantiateClass(type, moduleRef, contextId) { const wrapper = new instance_wrapper_1.InstanceWrapper({ name: type && type.name, metaType: type, isResolved: false, scope: (0, get_class_scope_1.getClassScope)(type), durable: (0, helpers_1.isDurable)(type), host: moduleRef }); return new Promise(async (resolve, reject) => { try { const callback = async (instances) => { const properties = await this.injector.resolveProperties(wrapper, moduleRef, undefined, contextId); const instance = new type(...instances); this.injector.applyProperties(instance, properties); resolve(instance); }; await this.injector.resolveConstructorParams(wrapper, moduleRef, undefined, callback, contextId); } catch (err) { reject(err); } }); } } exports.ModuleRef = ModuleRef; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2luamVjdG9yL21vZHVsZS1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQTZEO0FBRTdELHlDQUFxQztBQUNyQywrREFBeUQ7QUFDekQseURBQStEO0FBRS9ELCtDQUE2QztBQUM3Qyw2RUFBdUU7QUFFdkUsMkNBQXlDO0FBT3pDLE1BQXNCLFNBQVUsU0FBUSxxREFBd0I7SUFJOUQsSUFBYyxpQkFBaUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLHVDQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUE7SUFDaEMsQ0FBQztJQUVELFlBQWdDLFNBQXVCO1FBQ3JELEtBQUssRUFBRSxDQUFBO1FBRHVCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFWcEMsYUFBUSxHQUFHLElBQUksbUJBQVEsRUFBRSxDQUFBO0lBWTVDLENBQUM7SUFrRk0sVUFBVSxDQUNmLEtBQWdDO1FBRWhDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXhELElBQUksS0FBSyxHQUFHLGlCQUFLLENBQUMsT0FBTyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLEtBQUssR0FBRyxpQkFBSyxDQUFDLE9BQU8sQ0FBQTtRQUN2QixDQUFDO2FBQU0sSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEMsS0FBSyxHQUFHLGlCQUFLLENBQUMsU0FBUyxDQUFBO1FBQ3pCLENBQUM7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUE7SUFDbEIsQ0FBQztJQUVNLDBCQUEwQixDQUFXLE9BQVUsRUFBRSxTQUFvQjtRQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRVMsS0FBSyxDQUFDLGdCQUFnQixDQUM5QixJQUFhLEVBQ2IsU0FBaUIsRUFDakIsU0FBcUI7UUFFckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBZSxDQUFDO1lBQ2xDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUk7WUFDdkIsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsS0FBSztZQUNqQixLQUFLLEVBQUUsSUFBQSwrQkFBYSxFQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQUUsSUFBQSxtQkFBUyxFQUFDLElBQUksQ0FBQztZQUN4QixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUE7UUFDRixPQUFPLElBQUksT0FBTyxDQUFJLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDOUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxTQUFnQixFQUFFLEVBQUU7b0JBQzFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDdEQsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxDQUNWLENBQUE7b0JBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQTtvQkFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO29CQUNuRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ25CLENBQUMsQ0FBQTtnQkFDRCxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQzFDLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLENBQ1YsQ0FBQTtZQUNILENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNiLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQXZKRCw4QkF1SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRDbGFzc1Njb3BlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtY2xhc3Mtc2NvcGUnXG5pbXBvcnQgeyBDb250YWluZXJJb0MgfSBmcm9tICcuL2NvbnRhaW5lcidcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnLi9pbmplY3RvcidcbmltcG9ydCB7IEluc3RhbmNlTGlua3NIb3N0IH0gZnJvbSAnLi9pbnN0YW5jZS1saW5rcy1ob3N0J1xuaW1wb3J0IHsgQ29udGV4dElkLCBJbnN0YW5jZVdyYXBwZXIgfSBmcm9tICcuL2luc3RhbmNlLXdyYXBwZXInXG5pbXBvcnQgeyBNb2R1bGUgfSBmcm9tICcuL21vZHVsZSdcbmltcG9ydCB7IFNjb3BlLCBUeXBlIH0gZnJvbSAnLi4vLi4vY29udHJhY3RzJ1xuaW1wb3J0IHsgQWJzdHJhY3RJbnN0YW5jZVJlc29sdmVyIH0gZnJvbSAnLi9hYnN0cmFjdC1pbnN0YW5jZS1yZXNvbHZlcidcbmltcG9ydCB7IEludHJvc3BlY3Rpb25SZXN1bHQgfSBmcm9tICcuLi8uLi9jb250cmFjdHMvaW50cm9zcGVjdGlvbi1yZXN1bHQnXG5pbXBvcnQgeyBpc0R1cmFibGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZVJlZkdldE9yUmVzb2x2ZU9wdHMge1xuICBzdHJpY3Q/OiBib29sZWFuXG4gIGVhY2g/OiBib29sZWFuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb2R1bGVSZWYgZXh0ZW5kcyBBYnN0cmFjdEluc3RhbmNlUmVzb2x2ZXIge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5qZWN0b3IgPSBuZXcgSW5qZWN0b3IoKVxuICBwcml2YXRlIF9pbnN0YW5jZUxpbmtzSG9zdDogSW5zdGFuY2VMaW5rc0hvc3RcblxuICBwcm90ZWN0ZWQgZ2V0IGluc3RhbmNlTGlua3NIb3N0ICgpIHtcbiAgICBpZiAoIXRoaXMuX2luc3RhbmNlTGlua3NIb3N0KSB7XG4gICAgICB0aGlzLl9pbnN0YW5jZUxpbmtzSG9zdCA9IG5ldyBJbnN0YW5jZUxpbmtzSG9zdCh0aGlzLmNvbnRhaW5lcilcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlTGlua3NIb3N0XG4gIH1cblxuICBjb25zdHJ1Y3RvciAocHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRhaW5lcjogQ29udGFpbmVySW9DKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgYWJzdHJhY3QgZ2V0PFRJbnB1dCA9IGFueSwgVFJlc3VsdCA9IFRJbnB1dD4oXG4gICAgdHlwZU9yVG9rZW46IFR5cGU8VElucHV0PiB8IHN0cmluZyB8IHN5bWJvbCxcbiAgICBvcHRpb25zPzogeyBzdHJpY3Q6IGJvb2xlYW4gfVxuICApOiBUUmVzdWx0XG5cbiAgYWJzdHJhY3QgZ2V0PFRJbnB1dCA9IGFueSwgVFJlc3VsdCA9IFRJbnB1dD4oXG4gICAgdHlwZU9yVG9rZW46IFR5cGU8VElucHV0PiB8IEZ1bmN0aW9uIHwgc3RyaW5nIHwgc3ltYm9sLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogSWYgZW5hYmxlZCwgbG9va3VwIHdpbGwgb25seSBiZSBwZXJmb3JtZWQgaW4gdGhlIGhvc3QgbW9kdWxlLlxuICAgICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAgICovXG4gICAgICBzdHJpY3Q/OiBib29sZWFuXG4gICAgICAvKiogVGhpcyBpbmRpY2F0ZXMgdGhhdCBvbmx5IHRoZSBmaXJzdCBpbnN0YW5jZSByZWdpc3RlcmVkIHdpbGwgYmUgcmV0dXJuZWQuICovXG4gICAgICBlYWNoPzogdW5kZWZpbmVkIHwgZmFsc2VcbiAgICB9XG4gICk6IFRSZXN1bHRcblxuICBhYnN0cmFjdCBnZXQ8VElucHV0ID0gYW55LCBUUmVzdWx0ID0gVElucHV0PihcbiAgICB0eXBlT3JUb2tlbjogVHlwZTxUSW5wdXQ+IHwgRnVuY3Rpb24gfCBzdHJpbmcgfCBzeW1ib2wsXG4gICAgb3B0aW9uczoge1xuICAgICAgLyoqXG4gICAgICAgKiBJZiBlbmFibGVkLCBsb29rdXAgd2lsbCBvbmx5IGJlIHBlcmZvcm1lZCBpbiB0aGUgaG9zdCBtb2R1bGUuXG4gICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgKi9cbiAgICAgIHN0cmljdD86IGJvb2xlYW5cbiAgICAgIC8qKiBUaGlzIGluZGljYXRlcyB0aGF0IGEgbGlzdCBvZiBpbnN0YW5jZXMgd2lsbCBiZSByZXR1cm5lZC4gKi9cbiAgICAgIGVhY2g6IHRydWVcbiAgICB9XG4gICk6IEFycmF5PFRSZXN1bHQ+XG5cbiAgYWJzdHJhY3QgZ2V0PFRJbnB1dCA9IGFueSwgVFJlc3VsdCA9IFRJbnB1dD4oXG4gICAgdHlwZU9yVG9rZW46IFR5cGU8VElucHV0PiB8IEZ1bmN0aW9uIHwgc3RyaW5nIHwgc3ltYm9sLFxuICAgIG9wdGlvbnM/OiBNb2R1bGVSZWZHZXRPclJlc29sdmVPcHRzXG4gICk6IFRSZXN1bHQgfCBBcnJheTxUUmVzdWx0PlxuXG4gIGFic3RyYWN0IHJlc29sdmU8VElucHV0ID0gYW55LCBUUmVzdWx0ID0gVElucHV0PihcbiAgICB0eXBlT3JUb2tlbjogVHlwZTxUSW5wdXQ+IHwgRnVuY3Rpb24gfCBzdHJpbmcgfCBzeW1ib2xcbiAgKTogUHJvbWlzZTxUUmVzdWx0PlxuICAvKipcbiAgICogUmVzb2x2ZXMgdHJhbnNpZW50IG9yIHJlcXVlc3Qtc2NvcGVkIGluc3RhbmNlIG9mIGVpdGhlciBpbmplY3RhYmxlIG9yIGNvbnRyb2xsZXIsIG90aGVyd2lzZSwgdGhyb3dzIGV4Y2VwdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5PFRSZXN1bHQ+fVxuICAgKi9cbiAgYWJzdHJhY3QgcmVzb2x2ZTxUSW5wdXQgPSBhbnksIFRSZXN1bHQgPSBUSW5wdXQ+KFxuICAgIHR5cGVPclRva2VuOiBUeXBlPFRJbnB1dD4gfCBGdW5jdGlvbiB8IHN0cmluZyB8IHN5bWJvbCxcbiAgICBjb250ZXh0SWQ/OiB7IGlkOiBudW1iZXIgfVxuICApOiBQcm9taXNlPFRSZXN1bHQ+XG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0cmFuc2llbnQgb3IgcmVxdWVzdC1zY29wZWQgaW5zdGFuY2Ugb2YgZWl0aGVyIGluamVjdGFibGUgb3IgY29udHJvbGxlciwgb3RoZXJ3aXNlLCB0aHJvd3MgZXhjZXB0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXk8VFJlc3VsdD59XG4gICAqL1xuICBhYnN0cmFjdCByZXNvbHZlPFRJbnB1dCA9IGFueSwgVFJlc3VsdCA9IFRJbnB1dD4oXG4gICAgdHlwZU9yVG9rZW46IFR5cGU8VElucHV0PiB8IEZ1bmN0aW9uIHwgc3RyaW5nIHwgc3ltYm9sLFxuICAgIGNvbnRleHRJZD86IHsgaWQ6IG51bWJlciB9LFxuICAgIG9wdGlvbnM/OiB7IHN0cmljdD86IGJvb2xlYW47IGVhY2g/OiB1bmRlZmluZWQgfCBmYWxzZSB9XG4gICk6IFByb21pc2U8VFJlc3VsdD5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRyYW5zaWVudCBvciByZXF1ZXN0LXNjb3BlZCBpbnN0YW5jZXMgb2YgZWl0aGVyIGluamVjdGFibGVzIG9yIGNvbnRyb2xsZXJzLCBvdGhlcndpc2UsIHRocm93cyBleGNlcHRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheTxUUmVzdWx0Pn1cbiAgICovXG4gIGFic3RyYWN0IHJlc29sdmU8VElucHV0ID0gYW55LCBUUmVzdWx0ID0gVElucHV0PihcbiAgICB0eXBlT3JUb2tlbjogVHlwZTxUSW5wdXQ+IHwgRnVuY3Rpb24gfCBzdHJpbmcgfCBzeW1ib2wsXG4gICAgY29udGV4dElkPzogeyBpZDogbnVtYmVyIH0sXG4gICAgb3B0aW9ucz86IHsgc3RyaWN0PzogYm9vbGVhbjsgZWFjaDogdHJ1ZSB9XG4gICk6IFByb21pc2U8QXJyYXk8VFJlc3VsdD4+XG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0cmFuc2llbnQgb3IgcmVxdWVzdC1zY29wZWQgaW5zdGFuY2UgKG9yIGEgbGlzdCBvZiBpbnN0YW5jZXMpIG9mIGVpdGhlciBpbmplY3RhYmxlIG9yIGNvbnRyb2xsZXIsIG90aGVyd2lzZSwgdGhyb3dzIGV4Y2VwdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8VFJlc3VsdCB8IEFycmF5PFRSZXN1bHQ+Pn1cbiAgICovXG4gIGFic3RyYWN0IHJlc29sdmU8VElucHV0ID0gYW55LCBUUmVzdWx0ID0gVElucHV0PihcbiAgICB0eXBlT3JUb2tlbjogVHlwZTxUSW5wdXQ+IHwgRnVuY3Rpb24gfCBzdHJpbmcgfCBzeW1ib2wsXG4gICAgY29udGV4dElkPzogeyBpZDogbnVtYmVyIH0sXG4gICAgb3B0aW9ucz86IE1vZHVsZVJlZkdldE9yUmVzb2x2ZU9wdHNcbiAgKTogUHJvbWlzZTxUUmVzdWx0IHwgQXJyYXk8VFJlc3VsdD4+XG5cbiAgcHVibGljIGFic3RyYWN0IGNyZWF0ZTxUID0gYW55PihcbiAgICB0eXBlOiBUeXBlPFQ+LFxuICAgIGNvbnRleHRJZD86IENvbnRleHRJZFxuICApOiBQcm9taXNlPFQ+XG5cbiAgcHVibGljIGludHJvc3BlY3Q8VCA9IGFueT4gKFxuICAgIHRva2VuOiBUeXBlPFQ+IHwgc3RyaW5nIHwgc3ltYm9sXG4gICk6IEludHJvc3BlY3Rpb25SZXN1bHQge1xuICAgIGNvbnN0IHsgd3JhcHBlclJlZiB9ID0gdGhpcy5pbnN0YW5jZUxpbmtzSG9zdC5nZXQodG9rZW4pXG5cbiAgICBsZXQgc2NvcGUgPSBTY29wZS5ERUZBVUxUXG4gICAgaWYgKCF3cmFwcGVyUmVmLmlzRGVwZW5kZW5jeVRyZWVTdGF0aWMoKSkge1xuICAgICAgc2NvcGUgPSBTY29wZS5SRVFVRVNUXG4gICAgfSBlbHNlIGlmICh3cmFwcGVyUmVmLmlzVHJhbnNpZW50KSB7XG4gICAgICBzY29wZSA9IFNjb3BlLlRSQU5TSUVOVFxuICAgIH1cbiAgICByZXR1cm4geyBzY29wZSB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJSZXF1ZXN0QnlDb250ZXh0SWQ8VCA9IGFueT4gKHJlcXVlc3Q6IFQsIGNvbnRleHRJZDogQ29udGV4dElkKSB7XG4gICAgdGhpcy5jb250YWluZXIucmVnaXN0ZXJSZXF1ZXN0UHJvdmlkZXIocmVxdWVzdCwgY29udGV4dElkKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGluc3RhbnRpYXRlQ2xhc3M8VCA9IGFueT4gKFxuICAgIHR5cGU6IFR5cGU8VD4sXG4gICAgbW9kdWxlUmVmOiBNb2R1bGUsXG4gICAgY29udGV4dElkPzogQ29udGV4dElkXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBuZXcgSW5zdGFuY2VXcmFwcGVyKHtcbiAgICAgIG5hbWU6IHR5cGUgJiYgdHlwZS5uYW1lLFxuICAgICAgbWV0YVR5cGU6IHR5cGUsXG4gICAgICBpc1Jlc29sdmVkOiBmYWxzZSxcbiAgICAgIHNjb3BlOiBnZXRDbGFzc1Njb3BlKHR5cGUpLFxuICAgICAgZHVyYWJsZTogaXNEdXJhYmxlKHR5cGUpLFxuICAgICAgaG9zdDogbW9kdWxlUmVmXG4gICAgfSlcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBhc3luYyAoaW5zdGFuY2VzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLmluamVjdG9yLnJlc29sdmVQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgd3JhcHBlcixcbiAgICAgICAgICAgIG1vZHVsZVJlZixcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRleHRJZFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0eXBlKC4uLmluc3RhbmNlcylcbiAgICAgICAgICB0aGlzLmluamVjdG9yLmFwcGx5UHJvcGVydGllcyhpbnN0YW5jZSwgcHJvcGVydGllcylcbiAgICAgICAgICByZXNvbHZlKGluc3RhbmNlKVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuaW5qZWN0b3IucmVzb2x2ZUNvbnN0cnVjdG9yUGFyYW1zPFQ+KFxuICAgICAgICAgIHdyYXBwZXIsXG4gICAgICAgICAgbW9kdWxlUmVmLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICBjb250ZXh0SWRcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpXG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuIl19