@stemy/backend 3.1.5 → 3.1.6
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/bundles/stemy-backend.umd.js +6 -2
- package/bundles/stemy-backend.umd.js.map +1 -1
- package/bundles/stemy-backend.umd.min.js +1 -1
- package/bundles/stemy-backend.umd.min.js.map +1 -1
- package/esm2015/services/job-manager.js +8 -4
- package/fesm2015/stemy-backend.js +6 -2
- package/fesm2015/stemy-backend.js.map +1 -1
- package/package.json +1 -1
- package/stemy-backend.metadata.json +1 -1
|
@@ -26,7 +26,7 @@ import { Subject } from "rxjs";
|
|
|
26
26
|
import { filter, map } from "rxjs/operators";
|
|
27
27
|
import { ObjectId } from "bson";
|
|
28
28
|
import { DI_CONTAINER, JOB } from "../common-types";
|
|
29
|
-
import { colorize, ConsoleColor, getConstructorName, isArray, isObject, jsonHighlight, promiseTimeout } from "../utils";
|
|
29
|
+
import { colorize, ConsoleColor, getConstructorName, getType, isArray, isObject, jsonHighlight, promiseTimeout } from "../utils";
|
|
30
30
|
import { Configuration } from "./configuration";
|
|
31
31
|
let JobManager = class JobManager {
|
|
32
32
|
constructor(config, container, jobTypes) {
|
|
@@ -178,14 +178,18 @@ let JobManager = class JobManager {
|
|
|
178
178
|
this.apiPull.on("message", (name, args) => {
|
|
179
179
|
const message = name.toString("utf8");
|
|
180
180
|
const params = JSON.parse((args === null || args === void 0 ? void 0 : args.toString("utf8")) || "{}");
|
|
181
|
-
|
|
181
|
+
const paramTypes = Object.keys(params).reduce((res, key) => {
|
|
182
|
+
res[key] = getType(params[key]);
|
|
183
|
+
return res;
|
|
184
|
+
}, {});
|
|
185
|
+
console.log(`Received a message from worker: "${colorize(message, ConsoleColor.FgCyan)}" with args: ${jsonHighlight(paramTypes)}\n\n`);
|
|
182
186
|
this.messages.next({ message, params });
|
|
183
187
|
});
|
|
184
188
|
console.log(`API consumer bound to port: ${backPort}`);
|
|
185
189
|
}
|
|
186
190
|
return this.tryResolve(jobType, params);
|
|
187
191
|
}
|
|
188
|
-
resolveJobInstance(jobType, params, uniqueId =
|
|
192
|
+
resolveJobInstance(jobType, params, uniqueId = "") {
|
|
189
193
|
const container = this.container.createChildContainer();
|
|
190
194
|
Object.keys(params).map((name) => {
|
|
191
195
|
container.register(name, { useValue: params[name] });
|
|
@@ -210,4 +214,4 @@ JobManager = __decorate([
|
|
|
210
214
|
__metadata("design:paramtypes", [Configuration, Object, Array])
|
|
211
215
|
], JobManager);
|
|
212
216
|
export { JobManager };
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvam9iLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFzQixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUNILFlBQVksRUFLWixHQUFHLEVBTU4sTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdEgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0lBSWpDLFVBQVUsU0FBVixVQUFVO0lBY25CLFlBQXFCLE1BQXFCLEVBQWlDLFNBQThCLEVBQWtCLFFBQXNCO1FBQTVILFdBQU0sR0FBTixNQUFNLENBQWU7UUFBaUMsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDckcsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVB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bmN5Q29udGFpbmVyLCBpbmplY3QsIGluamVjdGFibGUsIGluamVjdEFsbCwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge3NjaGVkdWxlLCB2YWxpZGF0ZX0gZnJvbSBcIm5vZGUtY3JvblwiO1xyXG5pbXBvcnQge3NvY2tldCwgU29ja2V0fSBmcm9tIFwiemVyb21xXCI7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtcclxuICAgIERJX0NPTlRBSU5FUixcclxuICAgIElKb2IsXHJcbiAgICBJSm9iVGFzayxcclxuICAgIElNZXNzYWdlQnJpZGdlLFxyXG4gICAgSVNvY2tldE1lc3NhZ2UsXHJcbiAgICBKT0IsXHJcbiAgICBKb2JQYXJhbXMsXHJcbiAgICBKb2JTY2hlZHVsZVJhbmdlLFxyXG4gICAgSm9iU2NoZWR1bGVUaW1lLFxyXG4gICAgU29ja2V0UGFyYW1zLFxyXG4gICAgVHlwZVxyXG59IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtjb2xvcml6ZSwgQ29uc29sZUNvbG9yLCBnZXRDb25zdHJ1Y3Rvck5hbWUsIGlzQXJyYXksIGlzT2JqZWN0LCBqc29uSGlnaGxpZ2h0LCBwcm9taXNlVGltZW91dH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBKb2JNYW5hZ2VyIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgam9iVHlwZXM6IFR5cGU8SUpvYj5bXTtcclxuICAgIHByb3RlY3RlZCBqb2JzOiB7IFtuYW1lOiBzdHJpbmddOiAoam9iUGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcpID0+IFByb21pc2U8YW55PiB9O1xyXG4gICAgcHJvdGVjdGVkIG1lc3NhZ2VzOiBTdWJqZWN0PElTb2NrZXRNZXNzYWdlPjtcclxuICAgIHByb3RlY3RlZCBwcm9jZXNzaW5nOiBib29sZWFuO1xyXG5cclxuICAgIHByb3RlY3RlZCBhcGlQdXNoOiBTb2NrZXQ7XHJcbiAgICBwcm90ZWN0ZWQgYXBpUHVsbDogU29ja2V0O1xyXG4gICAgcHJvdGVjdGVkIHdvcmtlclB1c2g6IFNvY2tldDtcclxuICAgIHByb3RlY3RlZCB3b3JrZXJQdWxsOiBTb2NrZXQ7XHJcblxyXG4gICAgcmVhZG9ubHkgbWF4VGltZW91dDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbiwgQGluamVjdChESV9DT05UQUlORVIpIHJlYWRvbmx5IGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lciwgQGluamVjdEFsbChKT0IpIGpvYlR5cGVzOiBUeXBlPElKb2I+W10pIHtcclxuICAgICAgICB0aGlzLmpvYlR5cGVzID0gam9iVHlwZXMgfHwgW107XHJcbiAgICAgICAgdGhpcy5qb2JzID0gdGhpcy5qb2JUeXBlcy5yZWR1Y2UoKHJlcywgam9iVHlwZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgICAgICByZXNbam9iTmFtZV0gPSAoam9iUGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYiA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIGpvYlBhcmFtcywgdW5pcXVlSWQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZUJyaWRnZTogSU1lc3NhZ2VCcmlkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IFNvY2tldFBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5pcXVlSWQgPSB1bmlxdWVJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZXJQdXNoLnNlbmQoW21lc3NhZ2UsIEpTT04uc3RyaW5naWZ5KHBhcmFtcyldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZUJyaWRnZS5zZW5kTWVzc2FnZShgam9iLXN0YXJ0ZWRgLCB7bmFtZTogam9iTmFtZX0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpvYi5wcm9jZXNzKG1lc3NhZ2VCcmlkZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSBuZXcgU3ViamVjdDxJU29ja2V0TWVzc2FnZT4oKTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1heFRpbWVvdXQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiam9iVGltZW91dFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihtZXNzYWdlOiBzdHJpbmcsIGNiOiAocGFyYW1zOiBTb2NrZXRQYXJhbXMpID0+IGFueSk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXNcclxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKHQgPT4gdC5tZXNzYWdlID09PSBtZXNzYWdlKSlcclxuICAgICAgICAgICAgLnBpcGUobWFwKHQgPT4gdC5wYXJhbXMpKS5zdWJzY3JpYmUoY2IpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2Nlc3Moam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBJSm9iID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5wcm9jZXNzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5xdWV1ZVdpdGhOYW1lKG5hbWU6IHN0cmluZywgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVGcm9tTmFtZShuYW1lLCBwYXJhbXMpLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVucXVldWUoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVBbmRJbml0KGpvYlR5cGUsIHBhcmFtcyksIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NoZWR1bGUobWludXRlOiBKb2JTY2hlZHVsZVRpbWUsIGhvdXI6IEpvYlNjaGVkdWxlVGltZSwgZGF5T2ZNb250aDogSm9iU2NoZWR1bGVUaW1lLCBtb250aDogSm9iU2NoZWR1bGVUaW1lLCBkYXlPZldlZWs6IEpvYlNjaGVkdWxlVGltZSwgam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IElKb2JUYXNrIHtcclxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gW21pbnV0ZSwgaG91ciwgZGF5T2ZNb250aCwgbW9udGgsIGRheU9mV2Vla10ubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gdCBhcyBKb2JTY2hlZHVsZVJhbmdlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3JhbmdlLm1pbiB8fCAwfS0ke3JhbmdlLm1heCB8fCAwfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkodCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0LmpvaW4oXCIsXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0fWA7XHJcbiAgICAgICAgfSkuam9pbihcIiBcIik7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXZhbGlkYXRlKGV4cHJlc3Npb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBzY2hlZHVsZSB0aGUgdGFzazogJyR7am9iTmFtZX0nIGJlY2F1c2UgdGltZSBleHByZXNzaW9uIGlzIGludmFsaWQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2NoZWR1bGUoZXhwcmVzc2lvbiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVucXVldWUoam9iVHlwZSwgcGFyYW1zKS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBlbnF1ZXVlIGpvYjogJyR7am9iTmFtZX0nIGJlY2F1c2U6ICR7ZX1gKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RhcnRQcm9jZXNzaW5nKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5yZXNvbHZlKFwiaXNXb3JrZXJcIikpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JpemUoYFByb2Nlc3NpbmcgY2FuIG5vdCBiZSBzdGFydGVkIGJlY2F1c2UgdGhpcyBpcyBOT1QgYSB3b3JrZXIgcHJvY2VzcyFgLCBDb25zb2xlQ29sb3IuRmdSZWQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBob3N0ID0gdGhpcy5jb25maWcucmVzb2x2ZShcInptcVJlbW90ZUhvc3RcIik7XHJcbiAgICAgICAgY29uc3QgcHVzaEhvc3QgPSBgJHtob3N0fToke3RoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFCYWNrUG9ydFwiKX1gO1xyXG4gICAgICAgIHRoaXMud29ya2VyUHVzaCA9IHNvY2tldChcInB1c2hcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy53b3JrZXJQdXNoLmNvbm5lY3QocHVzaEhvc3QpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBXb3JrZXIgcHJvZHVjZXIgY29ubmVjdGVkIHRvOiAke3B1c2hIb3N0fWApO1xyXG5cclxuICAgICAgICBjb25zdCBwdWxsSG9zdCA9IGAke2hvc3R9OiR7dGhpcy5jb25maWcucmVzb2x2ZShcInptcVBvcnRcIil9YDtcclxuICAgICAgICB0aGlzLndvcmtlclB1bGwgPSBzb2NrZXQoXCJwdWxsXCIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud29ya2VyUHVsbC5jb25uZWN0KHB1bGxIb3N0KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgV29ya2VyIGNvbnN1bWVyIGNvbm5lY3RlZCB0bzogJHtwdWxsSG9zdH1gKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZXJQdWxsLm9uKFwibWVzc2FnZVwiLCBhc3luYyAobmFtZTogQnVmZmVyLCBhcmdzOiBCdWZmZXIsIHVuaXFJZDogQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gbmFtZS50b1N0cmluZyhcInV0ZjhcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JQYXJhbXMgPSBKU09OLnBhcnNlKGFyZ3MudG9TdHJpbmcoXCJ1dGY4XCIpKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJZCA9IHVuaXFJZD8udG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZSh1bmlxdWVJZCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVMb2codW5pcXVlSWQsIGBTdGFydGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9IHdpdGggYXJnczogXFxuJHtqc29uSGlnaGxpZ2h0KGpvYlBhcmFtcyl9XFxuXFxuYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3RoaXMuam9ic1tqb2JOYW1lXShqb2JQYXJhbXMsIHVuaXF1ZUlkKSwgcHJvbWlzZVRpbWVvdXQodGhpcy5tYXhUaW1lb3V0LCB0cnVlKV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyh1bmlxdWVJZCwgYEZpbmlzaGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9XFxuXFxuYCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lTG9nKHVuaXF1ZUlkLCBgQmFja2dyb3VuZCBqb2IgZmFpbGVkOiAke2NvbG9yaXplKGpvYk5hbWUsIENvbnNvbGVDb2xvci5GZ1JlZCl9XFxuJHtlfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKHVuaXF1ZUlkKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBzdGFydCBqb2I6ICR7ZS5tZXNzYWdlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5UmVzb2x2ZShqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXRoaXMuam9ic1tqb2JOYW1lXSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2Igd2l0aCBuYW1lOiAke2pvYk5hbWV9IHNvIGl0IGNhbid0IGJlIGVucXVldWVkIWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqb2JOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cnlSZXNvbHZlRnJvbU5hbWUoam9iTmFtZTogc3RyaW5nLCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iVHlwZSA9IHRoaXMuam9iVHlwZXMuZmluZCh0eXBlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0cnVjdG9yTmFtZSh0eXBlKSA9PSBqb2JOYW1lO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICgham9iVHlwZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2IgdHlwZSB3aXRoIG5hbWU6ICR7am9iTmFtZX0gc28gaXQgY2FuJ3QgYmUgZW5xdWV1ZWQhYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5hcGlQdXNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xUG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoID0gc29ja2V0KFwicHVzaFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoLmJpbmQoYHRjcDovLzAuMC4wLjA6JHtwb3J0fWApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVBJIHByb2R1Y2VyIGJvdW5kIHRvIHBvcnQ6ICR7cG9ydH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmFwaVB1bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgYmFja1BvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xQmFja1BvcnRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbCA9IHNvY2tldChcInB1bGxcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5iaW5kKGB0Y3A6Ly8wLjAuMC4wOiR7YmFja1BvcnR9YCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5vbihcIm1lc3NhZ2VcIiwgKG5hbWU6IEJ1ZmZlciwgYXJncz86IEJ1ZmZlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5hbWUudG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShhcmdzPy50b1N0cmluZyhcInV0ZjhcIikgfHwgXCJ7fVwiKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gd29ya2VyOiBcIiR7Y29sb3JpemUobWVzc2FnZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9XCIgd2l0aCBhcmdzOiAke2pzb25IaWdobGlnaHQocGFyYW1zKX1cXG5cXG5gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMubmV4dCh7bWVzc2FnZSwgcGFyYW1zfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVBJIGNvbnN1bWVyIGJvdW5kIHRvIHBvcnQ6ICR7YmFja1BvcnR9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnRyeVJlc29sdmUoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGU6IFR5cGU8SUpvYj4sIHBhcmFtczogSm9iUGFyYW1zLCB1bmlxdWVJZDogc3RyaW5nID0gbnVsbCk6IElKb2Ige1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNoaWxkQ29udGFpbmVyKCk7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5tYXAoKG5hbWUpID0+IHtcclxuICAgICAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKG5hbWUsIHt1c2VWYWx1ZTogcGFyYW1zW25hbWVdfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKFwidW5pcXVlSWRcIiwge3VzZVZhbHVlOiB1bmlxdWVJZH0pO1xyXG4gICAgICAgIGNvbnRhaW5lci5yZWdpc3Rlcihqb2JUeXBlLCBqb2JUeXBlKTtcclxuICAgICAgICByZXR1cm4gY29udGFpbmVyLnJlc29sdmUoam9iVHlwZSkgYXMgSUpvYjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgc2VuZFRvV29ya2Vycyhqb2JOYW1lOiBzdHJpbmcsIHBhcmFtczogSm9iUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBwdWJsaXNoZXIgPSBhd2FpdCB0aGlzLmFwaVB1c2g7XHJcbiAgICAgICAgY29uc3QgdW5pcXVlSWQgPSBuZXcgT2JqZWN0SWQoKS50b0hleFN0cmluZygpO1xyXG4gICAgICAgIGF3YWl0IHB1Ymxpc2hlci5zZW5kKFtqb2JOYW1lLCBKU09OLnN0cmluZ2lmeShwYXJhbXMpLCB1bmlxdWVJZF0pO1xyXG4gICAgICAgIHJldHVybiB1bmlxdWVJZDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvam9iLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFzQixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQVMsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFDLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUNILFlBQVksRUFLWixHQUFHLEVBTU4sTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0gsUUFBUSxFQUNSLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGNBQWMsRUFDakIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0lBSWpDLFVBQVUsU0FBVixVQUFVO0lBY25CLFlBQXFCLE1BQXFCLEVBQWlDLFNBQThCLEVBQWtCLFFBQXNCO1FBQTVILFdBQU0sR0FBTixNQUFNLENBQWU7UUFBaUMsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDckcsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUs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Q3BCLENBQUM7S0FBQTtDQUNKLENBQUE7QUEvTFksVUFBVTtJQUZ0QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztJQWVlLFdBQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBLEVBQTJDLFdBQUEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO3FDQUE3RixhQUFhO0dBZGpDLFVBQVUsQ0ErTHRCO1NBL0xZLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RlcGVuZGVuY3lDb250YWluZXIsIGluamVjdCwgaW5qZWN0YWJsZSwgaW5qZWN0QWxsLCBMaWZlY3ljbGUsIHNjb3BlZH0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7c2NoZWR1bGUsIHZhbGlkYXRlfSBmcm9tIFwibm9kZS1jcm9uXCI7XHJcbmltcG9ydCB7c29ja2V0LCBTb2NrZXR9IGZyb20gXCJ6ZXJvbXFcIjtcclxuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZmlsdGVyLCBtYXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xyXG5pbXBvcnQge1xyXG4gICAgRElfQ09OVEFJTkVSLFxyXG4gICAgSUpvYixcclxuICAgIElKb2JUYXNrLFxyXG4gICAgSU1lc3NhZ2VCcmlkZ2UsXHJcbiAgICBJU29ja2V0TWVzc2FnZSxcclxuICAgIEpPQixcclxuICAgIEpvYlBhcmFtcyxcclxuICAgIEpvYlNjaGVkdWxlUmFuZ2UsXHJcbiAgICBKb2JTY2hlZHVsZVRpbWUsXHJcbiAgICBTb2NrZXRQYXJhbXMsXHJcbiAgICBUeXBlXHJcbn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgY29sb3JpemUsXHJcbiAgICBDb25zb2xlQ29sb3IsXHJcbiAgICBnZXRDb25zdHJ1Y3Rvck5hbWUsXHJcbiAgICBnZXRUeXBlLFxyXG4gICAgaXNBcnJheSxcclxuICAgIGlzT2JqZWN0LFxyXG4gICAganNvbkhpZ2hsaWdodCxcclxuICAgIHByb21pc2VUaW1lb3V0XHJcbn0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBKb2JNYW5hZ2VyIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgam9iVHlwZXM6IFR5cGU8SUpvYj5bXTtcclxuICAgIHByb3RlY3RlZCBqb2JzOiB7IFtuYW1lOiBzdHJpbmddOiAoam9iUGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcpID0+IFByb21pc2U8YW55PiB9O1xyXG4gICAgcHJvdGVjdGVkIG1lc3NhZ2VzOiBTdWJqZWN0PElTb2NrZXRNZXNzYWdlPjtcclxuICAgIHByb3RlY3RlZCBwcm9jZXNzaW5nOiBib29sZWFuO1xyXG5cclxuICAgIHByb3RlY3RlZCBhcGlQdXNoOiBTb2NrZXQ7XHJcbiAgICBwcm90ZWN0ZWQgYXBpUHVsbDogU29ja2V0O1xyXG4gICAgcHJvdGVjdGVkIHdvcmtlclB1c2g6IFNvY2tldDtcclxuICAgIHByb3RlY3RlZCB3b3JrZXJQdWxsOiBTb2NrZXQ7XHJcblxyXG4gICAgcmVhZG9ubHkgbWF4VGltZW91dDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbiwgQGluamVjdChESV9DT05UQUlORVIpIHJlYWRvbmx5IGNvbnRhaW5lcjogRGVwZW5kZW5jeUNvbnRhaW5lciwgQGluamVjdEFsbChKT0IpIGpvYlR5cGVzOiBUeXBlPElKb2I+W10pIHtcclxuICAgICAgICB0aGlzLmpvYlR5cGVzID0gam9iVHlwZXMgfHwgW107XHJcbiAgICAgICAgdGhpcy5qb2JzID0gdGhpcy5qb2JUeXBlcy5yZWR1Y2UoKHJlcywgam9iVHlwZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgICAgICByZXNbam9iTmFtZV0gPSAoam9iUGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpvYiA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIGpvYlBhcmFtcywgdW5pcXVlSWQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZUJyaWRnZTogSU1lc3NhZ2VCcmlkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IFNvY2tldFBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5pcXVlSWQgPSB1bmlxdWVJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZXJQdXNoLnNlbmQoW21lc3NhZ2UsIEpTT04uc3RyaW5naWZ5KHBhcmFtcyldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZUJyaWRnZS5zZW5kTWVzc2FnZShgam9iLXN0YXJ0ZWRgLCB7bmFtZTogam9iTmFtZX0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGpvYi5wcm9jZXNzKG1lc3NhZ2VCcmlkZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSBuZXcgU3ViamVjdDxJU29ja2V0TWVzc2FnZT4oKTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1heFRpbWVvdXQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiam9iVGltZW91dFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihtZXNzYWdlOiBzdHJpbmcsIGNiOiAocGFyYW1zOiBTb2NrZXRQYXJhbXMpID0+IGFueSk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXNcclxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKHQgPT4gdC5tZXNzYWdlID09PSBtZXNzYWdlKSlcclxuICAgICAgICAgICAgLnBpcGUobWFwKHQgPT4gdC5wYXJhbXMpKS5zdWJzY3JpYmUoY2IpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2Nlc3Moam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBJSm9iID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGpvYlR5cGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5wcm9jZXNzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5xdWV1ZVdpdGhOYW1lKG5hbWU6IHN0cmluZywgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVGcm9tTmFtZShuYW1lLCBwYXJhbXMpLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVucXVldWUoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2Vycyh0aGlzLnRyeVJlc29sdmVBbmRJbml0KGpvYlR5cGUsIHBhcmFtcyksIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NoZWR1bGUobWludXRlOiBKb2JTY2hlZHVsZVRpbWUsIGhvdXI6IEpvYlNjaGVkdWxlVGltZSwgZGF5T2ZNb250aDogSm9iU2NoZWR1bGVUaW1lLCBtb250aDogSm9iU2NoZWR1bGVUaW1lLCBkYXlPZldlZWs6IEpvYlNjaGVkdWxlVGltZSwgam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMgPSB7fSk6IElKb2JUYXNrIHtcclxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gW21pbnV0ZSwgaG91ciwgZGF5T2ZNb250aCwgbW9udGgsIGRheU9mV2Vla10ubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gdCBhcyBKb2JTY2hlZHVsZVJhbmdlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3JhbmdlLm1pbiB8fCAwfS0ke3JhbmdlLm1heCB8fCAwfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkodCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0LmpvaW4oXCIsXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0fWA7XHJcbiAgICAgICAgfSkuam9pbihcIiBcIik7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXZhbGlkYXRlKGV4cHJlc3Npb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBzY2hlZHVsZSB0aGUgdGFzazogJyR7am9iTmFtZX0nIGJlY2F1c2UgdGltZSBleHByZXNzaW9uIGlzIGludmFsaWQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2NoZWR1bGUoZXhwcmVzc2lvbiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVucXVldWUoam9iVHlwZSwgcGFyYW1zKS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBlbnF1ZXVlIGpvYjogJyR7am9iTmFtZX0nIGJlY2F1c2U6ICR7ZX1gKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RhcnRQcm9jZXNzaW5nKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5yZXNvbHZlKFwiaXNXb3JrZXJcIikpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3JpemUoYFByb2Nlc3NpbmcgY2FuIG5vdCBiZSBzdGFydGVkIGJlY2F1c2UgdGhpcyBpcyBOT1QgYSB3b3JrZXIgcHJvY2VzcyFgLCBDb25zb2xlQ29sb3IuRmdSZWQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBob3N0ID0gdGhpcy5jb25maWcucmVzb2x2ZShcInptcVJlbW90ZUhvc3RcIik7XHJcbiAgICAgICAgY29uc3QgcHVzaEhvc3QgPSBgJHtob3N0fToke3RoaXMuY29uZmlnLnJlc29sdmUoXCJ6bXFCYWNrUG9ydFwiKX1gO1xyXG4gICAgICAgIHRoaXMud29ya2VyUHVzaCA9IHNvY2tldChcInB1c2hcIik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy53b3JrZXJQdXNoLmNvbm5lY3QocHVzaEhvc3QpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBXb3JrZXIgcHJvZHVjZXIgY29ubmVjdGVkIHRvOiAke3B1c2hIb3N0fWApO1xyXG5cclxuICAgICAgICBjb25zdCBwdWxsSG9zdCA9IGAke2hvc3R9OiR7dGhpcy5jb25maWcucmVzb2x2ZShcInptcVBvcnRcIil9YDtcclxuICAgICAgICB0aGlzLndvcmtlclB1bGwgPSBzb2NrZXQoXCJwdWxsXCIpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud29ya2VyUHVsbC5jb25uZWN0KHB1bGxIb3N0KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgV29ya2VyIGNvbnN1bWVyIGNvbm5lY3RlZCB0bzogJHtwdWxsSG9zdH1gKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZXJQdWxsLm9uKFwibWVzc2FnZVwiLCBhc3luYyAobmFtZTogQnVmZmVyLCBhcmdzOiBCdWZmZXIsIHVuaXFJZDogQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JOYW1lID0gbmFtZS50b1N0cmluZyhcInV0ZjhcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqb2JQYXJhbXMgPSBKU09OLnBhcnNlKGFyZ3MudG9TdHJpbmcoXCJ1dGY4XCIpKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJZCA9IHVuaXFJZD8udG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZSh1bmlxdWVJZCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVMb2codW5pcXVlSWQsIGBTdGFydGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9IHdpdGggYXJnczogXFxuJHtqc29uSGlnaGxpZ2h0KGpvYlBhcmFtcyl9XFxuXFxuYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW3RoaXMuam9ic1tqb2JOYW1lXShqb2JQYXJhbXMsIHVuaXF1ZUlkKSwgcHJvbWlzZVRpbWVvdXQodGhpcy5tYXhUaW1lb3V0LCB0cnVlKV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyh1bmlxdWVJZCwgYEZpbmlzaGVkIHdvcmtpbmcgb24gYmFja2dyb3VuZCBqb2I6ICR7Y29sb3JpemUoam9iTmFtZSwgQ29uc29sZUNvbG9yLkZnQ3lhbil9XFxuXFxuYCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS50aW1lTG9nKHVuaXF1ZUlkLCBgQmFja2dyb3VuZCBqb2IgZmFpbGVkOiAke2NvbG9yaXplKGpvYk5hbWUsIENvbnNvbGVDb2xvci5GZ1JlZCl9XFxuJHtlfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKHVuaXF1ZUlkKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBzdGFydCBqb2I6ICR7ZS5tZXNzYWdlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5UmVzb2x2ZShqb2JUeXBlOiBUeXBlPElKb2I+LCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShqb2JUeXBlKTtcclxuICAgICAgICBpZiAoIXRoaXMuam9ic1tqb2JOYW1lXSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2Igd2l0aCBuYW1lOiAke2pvYk5hbWV9IHNvIGl0IGNhbid0IGJlIGVucXVldWVkIWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUpvYkluc3RhbmNlKGpvYlR5cGUsIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgcmVzb2x2ZSBwYXJhbXMgZm9yIGpvYjogJHtqb2JOYW1lfSwgd2l0aCBwYXJhbXM6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0uIFJlYXNvbjogJHtlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqb2JOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0cnlSZXNvbHZlRnJvbU5hbWUoam9iTmFtZTogc3RyaW5nLCBwYXJhbXM6IEpvYlBhcmFtcyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgam9iVHlwZSA9IHRoaXMuam9iVHlwZXMuZmluZCh0eXBlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldENvbnN0cnVjdG9yTmFtZSh0eXBlKSA9PSBqb2JOYW1lO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICgham9iVHlwZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZmluZCBqb2IgdHlwZSB3aXRoIG5hbWU6ICR7am9iTmFtZX0gc28gaXQgY2FuJ3QgYmUgZW5xdWV1ZWQhYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdHJ5UmVzb2x2ZUFuZEluaXQoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5hcGlQdXNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xUG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoID0gc29ja2V0KFwicHVzaFwiKTtcclxuICAgICAgICAgICAgdGhpcy5hcGlQdXNoLmJpbmQoYHRjcDovLzAuMC4wLjA6JHtwb3J0fWApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVBJIHByb2R1Y2VyIGJvdW5kIHRvIHBvcnQ6ICR7cG9ydH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmFwaVB1bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgYmFja1BvcnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiem1xQmFja1BvcnRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbCA9IHNvY2tldChcInB1bGxcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5iaW5kKGB0Y3A6Ly8wLjAuMC4wOiR7YmFja1BvcnR9YCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpUHVsbC5vbihcIm1lc3NhZ2VcIiwgKG5hbWU6IEJ1ZmZlciwgYXJncz86IEJ1ZmZlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5hbWUudG9TdHJpbmcoXCJ1dGY4XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShhcmdzPy50b1N0cmluZyhcInV0ZjhcIikgfHwgXCJ7fVwiKSBhcyBKb2JQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbVR5cGVzID0gT2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoKHJlcywga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzW2tleV0gPSBnZXRUeXBlKHBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIHdvcmtlcjogXCIke2NvbG9yaXplKG1lc3NhZ2UsIENvbnNvbGVDb2xvci5GZ0N5YW4pfVwiIHdpdGggYXJnczogJHtqc29uSGlnaGxpZ2h0KHBhcmFtVHlwZXMpfVxcblxcbmApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5uZXh0KHttZXNzYWdlLCBwYXJhbXN9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBUEkgY29uc3VtZXIgYm91bmQgdG8gcG9ydDogJHtiYWNrUG9ydH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVzb2x2ZShqb2JUeXBlLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNvbHZlSm9iSW5zdGFuY2Uoam9iVHlwZTogVHlwZTxJSm9iPiwgcGFyYW1zOiBKb2JQYXJhbXMsIHVuaXF1ZUlkOiBzdHJpbmcgPSBcIlwiKTogSUpvYiB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ2hpbGRDb250YWluZXIoKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcCgobmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBjb250YWluZXIucmVnaXN0ZXIobmFtZSwge3VzZVZhbHVlOiBwYXJhbXNbbmFtZV19KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb250YWluZXIucmVnaXN0ZXIoXCJ1bmlxdWVJZFwiLCB7dXNlVmFsdWU6IHVuaXF1ZUlkfSk7XHJcbiAgICAgICAgY29udGFpbmVyLnJlZ2lzdGVyKGpvYlR5cGUsIGpvYlR5cGUpO1xyXG4gICAgICAgIHJldHVybiBjb250YWluZXIucmVzb2x2ZShqb2JUeXBlKSBhcyBJSm9iO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBzZW5kVG9Xb3JrZXJzKGpvYk5hbWU6IHN0cmluZywgcGFyYW1zOiBKb2JQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGNvbnN0IHB1Ymxpc2hlciA9IGF3YWl0IHRoaXMuYXBpUHVzaDtcclxuICAgICAgICBjb25zdCB1bmlxdWVJZCA9IG5ldyBPYmplY3RJZCgpLnRvSGV4U3RyaW5nKCk7XHJcbiAgICAgICAgYXdhaXQgcHVibGlzaGVyLnNlbmQoW2pvYk5hbWUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcyksIHVuaXF1ZUlkXSk7XHJcbiAgICAgICAgcmV0dXJuIHVuaXF1ZUlkO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1725,14 +1725,18 @@ let JobManager = class JobManager {
|
|
|
1725
1725
|
this.apiPull.on("message", (name, args) => {
|
|
1726
1726
|
const message = name.toString("utf8");
|
|
1727
1727
|
const params = JSON.parse((args === null || args === void 0 ? void 0 : args.toString("utf8")) || "{}");
|
|
1728
|
-
|
|
1728
|
+
const paramTypes = Object.keys(params).reduce((res, key) => {
|
|
1729
|
+
res[key] = getType(params[key]);
|
|
1730
|
+
return res;
|
|
1731
|
+
}, {});
|
|
1732
|
+
console.log(`Received a message from worker: "${colorize(message, ConsoleColor.FgCyan)}" with args: ${jsonHighlight(paramTypes)}\n\n`);
|
|
1729
1733
|
this.messages.next({ message, params });
|
|
1730
1734
|
});
|
|
1731
1735
|
console.log(`API consumer bound to port: ${backPort}`);
|
|
1732
1736
|
}
|
|
1733
1737
|
return this.tryResolve(jobType, params);
|
|
1734
1738
|
}
|
|
1735
|
-
resolveJobInstance(jobType, params, uniqueId =
|
|
1739
|
+
resolveJobInstance(jobType, params, uniqueId = "") {
|
|
1736
1740
|
const container = this.container.createChildContainer();
|
|
1737
1741
|
Object.keys(params).map((name) => {
|
|
1738
1742
|
container.register(name, { useValue: params[name] });
|