@stemy/backend 3.5.6 → 3.5.7
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 +148 -108
- package/bundles/stemy-backend.umd.js.map +1 -1
- package/esm2015/services/cache.js +3 -4
- package/esm2015/services/translation-provider.js +32 -8
- package/fesm2015/stemy-backend.js +128 -107
- package/fesm2015/stemy-backend.js.map +1 -1
- package/package.json +1 -1
- package/services/translation-provider.d.ts +3 -4
- package/stemy-backend.metadata.json +1 -1
|
@@ -16,7 +16,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
16
16
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
17
17
|
});
|
|
18
18
|
};
|
|
19
|
-
import {
|
|
19
|
+
import { singleton } from "tsyringe";
|
|
20
20
|
import { MongoConnector } from "./mongo-connector";
|
|
21
21
|
import { Configuration } from "./configuration";
|
|
22
22
|
import { CacheProcessor } from "./cache-processor";
|
|
@@ -86,9 +86,8 @@ let Cache = class Cache {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
Cache = __decorate([
|
|
89
|
-
|
|
90
|
-
scoped(Lifecycle.ContainerScoped),
|
|
89
|
+
singleton(),
|
|
91
90
|
__metadata("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
|
|
92
91
|
], Cache);
|
|
93
92
|
export { Cache };
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVuQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztJQVdwQyxLQUFLLFNBQUwsS0FBSztJQUlkLFlBQXFCLFNBQXlCLEVBQVksTUFBcUIsRUFBWSxjQUE4QjtRQUFwRyxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFZLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBWSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFFekgsQ0FBQztJQUVlLE9BQU87O1lBQ25CLElBQUksSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQzthQUNwRTtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUM3RixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUM3QixFQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUMsRUFDZCxFQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBQyxDQUMxQixDQUFDO1FBQ04sQ0FBQztLQUFBO0lBRUssR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsR0FBWSxFQUFFLHNCQUE4QixJQUFJLEVBQUUsT0FBWSxFQUFFOztZQUMvRixNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksR0FBZTtnQkFDckIsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLG1CQUFtQjthQUN0QixDQUFDO1lBQ0YsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDOUI7WUFDRCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDMUUsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRUssR0FBRyxDQUFDLEdBQVc7O1lBQ2pCLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztZQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDaEQsSUFBSSxHQUFHLElBQUksQ0FBQzthQUNmO1lBQ0QsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3JFO1lBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxDQUFDO0tBQUE7SUFFSyxRQUFRLENBQUMsR0FBVyxFQUFFLE9BQTJCLEVBQUUsR0FBWSxFQUFFLHNCQUE4QixJQUFJLEVBQUUsT0FBWSxFQUFFOztZQUNySCxJQUFJO2dCQUNBLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzlCO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO2FBQy9FO1FBQ0wsQ0FBQztLQUFBO0lBRUssTUFBTSxDQUFDLEdBQVc7O1lBQ3BCLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO0tBQUE7Q0FDSixDQUFBO0FBN0RZLEtBQUs7SUFEakIsU0FBUyxFQUFFO3FDQUt3QixjQUFjLEVBQW9CLGFBQWEsRUFBNEIsY0FBYztHQUpoSCxLQUFLLENBNkRqQjtTQTdEWSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0NvbGxlY3Rpb259IGZyb20gXCJtb25nb2RiXCI7XHJcbmltcG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL21vbmdvLWNvbm5lY3RvclwiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHtDYWNoZVByb2Nlc3Nvcn0gZnJvbSBcIi4vY2FjaGUtcHJvY2Vzc29yXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDYWNoZUl0ZW0ge1xyXG4gICAgX2lkOiBzdHJpbmc7XHJcbiAgICBkYXRhOiBhbnk7XHJcbiAgICB0YWdzPzogYW55O1xyXG4gICAgZXhwaXJhdGlvblRpbWVzdGFtcD86IG51bWJlcjtcclxuICAgIGV4cGlyZXNBdD86IG51bWJlcjtcclxufVxyXG5cclxuQHNpbmdsZXRvbigpXHJcbmV4cG9ydCBjbGFzcyBDYWNoZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbGxlY3Rpb246IENvbGxlY3Rpb248SUNhY2hlSXRlbT47XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29ubmVjdG9yOiBNb25nb0Nvbm5lY3RvciwgcHJvdGVjdGVkIGNvbmZpZzogQ29uZmlndXJhdGlvbiwgcHJvdGVjdGVkIGNhY2hlUHJvY2Vzc29yOiBDYWNoZVByb2Nlc3Nvcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZSgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbGxlY3Rpb24pIHJldHVybjtcclxuICAgICAgICBpZiAoIXRoaXMuY29ubmVjdG9yLmRhdGFiYXNlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IGNhbid0IHVzZSBjYWNoZSB3aXRob3V0IG1vbmdvIGNvbm5lY3Rpb24hYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IHRoaXMuY29ubmVjdG9yLmRhdGFiYXNlLmNvbGxlY3Rpb24odGhpcy5jb25maWcucmVzb2x2ZShcImNhY2hlQ29sbGVjdGlvblwiKSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmNyZWF0ZUluZGV4KFxyXG4gICAgICAgICAgICB7ZXhwaXJlc0F0OiAxfSxcclxuICAgICAgICAgICAge2V4cGlyZUFmdGVyU2Vjb25kczogMH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgdHRsPzogbnVtYmVyLCBleHBpcmF0aW9uVGltZXN0YW1wOiBudW1iZXIgPSBudWxsLCB0YWdzOiBhbnkgPSB7fSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlKCk7XHJcbiAgICAgICAgY29uc3QgaXRlbTogSUNhY2hlSXRlbSA9IHtcclxuICAgICAgICAgICAgX2lkOiBrZXksXHJcbiAgICAgICAgICAgIGRhdGE6IGF3YWl0IHRoaXMuY2FjaGVQcm9jZXNzb3Iuc2VyaWFsaXplKHZhbHVlKSxcclxuICAgICAgICAgICAgdGFnczogYXdhaXQgdGhpcy5jYWNoZVByb2Nlc3Nvci5zZXJpYWxpemUodGFncyksXHJcbiAgICAgICAgICAgIGV4cGlyYXRpb25UaW1lc3RhbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodHRsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKTtcclxuICAgICAgICAgICAgaXRlbS5leHBpcmVzQXQgPSBub3cgKyB0dGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi51cGRhdGVPbmUoe19pZDoga2V5fSwgeyRzZXQ6IGl0ZW19LCB7dXBzZXJ0OiB0cnVlfSk7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlKCk7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZmluZE9uZSh7X2lkOiBrZXl9KTtcclxuICAgICAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCk7XHJcbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5leHBpcmVzQXQgJiYgaXRlbS5leHBpcmVzQXQgPCBub3cpIHtcclxuICAgICAgICAgICAgaXRlbSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXRlbSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhY2hlIHByb2JhYmx5IGRvZXNuJ3QgZXhpc3RzIHdpdGgga2V5OiAke2tleX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2FjaGVQcm9jZXNzb3IuZGVzZXJpYWxpemUoaXRlbS5kYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRPclNldChrZXk6IHN0cmluZywgdmFsdWVDYjogKCkgPT4gUHJvbWlzZTxhbnk+LCB0dGw/OiBudW1iZXIsIGV4cGlyYXRpb25UaW1lc3RhbXA6IG51bWJlciA9IG51bGwsIHRhZ3M6IGFueSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXQoa2V5KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNldChrZXksIGF3YWl0IHZhbHVlQ2IoKSwgdHRsLCBleHBpcmF0aW9uVGltZXN0YW1wLCB0YWdzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmUoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZGVsZXRlT25lKHtfaWQ6IGtleX0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -7,24 +7,48 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
11
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
12
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
13
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
14
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
15
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
16
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
17
|
+
});
|
|
18
|
+
};
|
|
10
19
|
import { singleton } from "tsyringe";
|
|
11
20
|
import axios from "axios";
|
|
21
|
+
import { isObject } from "../utils";
|
|
12
22
|
import { Configuration } from "./configuration";
|
|
23
|
+
import { Cache } from "./cache";
|
|
13
24
|
let TranslationProvider = class TranslationProvider {
|
|
14
|
-
constructor(config) {
|
|
25
|
+
constructor(config, cache) {
|
|
15
26
|
this.config = config;
|
|
16
|
-
this.cache =
|
|
27
|
+
this.cache = cache;
|
|
17
28
|
}
|
|
18
29
|
getDictionary(language) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
return this.cache.getOrSet(`translations-${language}`, () => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
try {
|
|
32
|
+
const url = this.config.resolve("translationsTemplate")
|
|
33
|
+
.replace(`__lang__`, language)
|
|
34
|
+
.replace(`[lang]`, language);
|
|
35
|
+
const data = yield axios.get(url).then(t => t.data);
|
|
36
|
+
if (isObject(data[language])) {
|
|
37
|
+
return data[language];
|
|
38
|
+
}
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
return {
|
|
43
|
+
message: `${e}`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}), 5 * 60);
|
|
23
47
|
}
|
|
24
48
|
};
|
|
25
49
|
TranslationProvider = __decorate([
|
|
26
50
|
singleton(),
|
|
27
|
-
__metadata("design:paramtypes", [Configuration])
|
|
51
|
+
__metadata("design:paramtypes", [Configuration, Cache])
|
|
28
52
|
], TranslationProvider);
|
|
29
53
|
export { TranslationProvider };
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHJhbnNsYXRpb24tcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFNBQVMsQ0FBQztJQUdqQixtQkFBbUIsU0FBbkIsbUJBQW1CO0lBRTVCLFlBQXFCLE1BQXFCLEVBQVcsS0FBWTtRQUE1QyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVcsVUFBSyxHQUFMLEtBQUssQ0FBTztJQUVqRSxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLFFBQVEsRUFBRSxFQUFFLEdBQVMsRUFBRTtZQUM5RCxJQUFJO2dCQUNBLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDO3FCQUNsRCxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztxQkFDN0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7b0JBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN6QjtnQkFDRCxPQUFPLElBQUksQ0FBQzthQUNmO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTztvQkFDSCxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUU7aUJBQ2xCLENBQUE7YUFDSjtRQUNMLENBQUMsQ0FBQSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUM7Q0FDSixDQUFBO0FBeEJZLG1CQUFtQjtJQUQvQixTQUFTLEVBQUU7cUNBR3FCLGFBQWEsRUFBa0IsS0FBSztHQUZ4RCxtQkFBbUIsQ0F3Qi9CO1NBeEJZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xyXG5pbXBvcnQge2lzT2JqZWN0fSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7SVRyYW5zbGF0aW9uc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0NhY2hlfSBmcm9tIFwiLi9jYWNoZVwiO1xyXG5cclxuQHNpbmdsZXRvbigpXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblByb3ZpZGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25maWc6IENvbmZpZ3VyYXRpb24sIHJlYWRvbmx5IGNhY2hlOiBDYWNoZSkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXREaWN0aW9uYXJ5KGxhbmd1YWdlOiBzdHJpbmcpOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXRPclNldChgdHJhbnNsYXRpb25zLSR7bGFuZ3VhZ2V9YCwgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5jb25maWcucmVzb2x2ZShcInRyYW5zbGF0aW9uc1RlbXBsYXRlXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoYF9fbGFuZ19fYCwgbGFuZ3VhZ2UpXHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoYFtsYW5nXWAsIGxhbmd1YWdlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBheGlvcy5nZXQodXJsKS50aGVuKHQgPT4gdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkYXRhW2xhbmd1YWdlXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtsYW5ndWFnZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgJHtlfWBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDUgKiA2MCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|