@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
63 lines • 12.6 kB
JavaScript
;
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