@stemy/backend 2.6.1 → 2.7.3

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.
Files changed (117) hide show
  1. package/README.md +2 -2
  2. package/bundles/stemy-backend.umd.js +5553 -5465
  3. package/bundles/stemy-backend.umd.js.map +1 -1
  4. package/bundles/stemy-backend.umd.min.js +1 -1
  5. package/bundles/stemy-backend.umd.min.js.map +1 -1
  6. package/common-types.d.ts +226 -214
  7. package/esm2015/common-types.js +18 -18
  8. package/esm2015/public_api.js +338 -338
  9. package/esm2015/rest-controllers/assets.controller.js +116 -116
  10. package/esm2015/rest-controllers/auth.controller.js +75 -75
  11. package/esm2015/rest-controllers/gallery.controller.js +37 -37
  12. package/esm2015/rest-controllers/progresses.controller.js +57 -57
  13. package/esm2015/rest-middlewares/container.middleware.js +32 -32
  14. package/esm2015/rest-middlewares/error-handler.middleware.js +83 -83
  15. package/esm2015/rest-middlewares/language.middleware.js +28 -28
  16. package/esm2015/rest-middlewares/request-ended.middleware.js +25 -25
  17. package/esm2015/rest-middlewares/request-started.middleware.js +24 -24
  18. package/esm2015/rest-openapi.js +44 -44
  19. package/esm2015/services/asset-processor.js +101 -101
  20. package/esm2015/services/asset-resolver.js +53 -53
  21. package/esm2015/services/assets.js +110 -110
  22. package/esm2015/services/backend-provider.js +32 -32
  23. package/esm2015/services/cache-processor.js +34 -34
  24. package/esm2015/services/cache.js +94 -94
  25. package/esm2015/services/configuration.js +55 -55
  26. package/esm2015/services/endpoint-provider.js +29 -29
  27. package/esm2015/services/entities/asset.js +166 -112
  28. package/esm2015/services/entities/lazy-asset.js +93 -93
  29. package/esm2015/services/entities/progress.js +181 -181
  30. package/esm2015/services/fixtures.js +45 -45
  31. package/esm2015/services/gallery-cache.js +36 -36
  32. package/esm2015/services/gallery-image.js +48 -48
  33. package/esm2015/services/gallery.js +138 -138
  34. package/esm2015/services/id-generator.js +63 -63
  35. package/esm2015/services/job-manager.js +203 -203
  36. package/esm2015/services/lazy-assets.js +74 -74
  37. package/esm2015/services/mail-sender.js +59 -59
  38. package/esm2015/services/memory-cache.js +84 -84
  39. package/esm2015/services/mongo-connector.js +61 -61
  40. package/esm2015/services/progresses.js +91 -91
  41. package/esm2015/services/template-renderer.js +89 -89
  42. package/esm2015/services/translation-provider.js +31 -31
  43. package/esm2015/services/translator.js +85 -85
  44. package/esm2015/services/user-manager.js +47 -47
  45. package/esm2015/socket-controllers/progress.controller.js +82 -82
  46. package/esm2015/socket-middlewares/compression.middleware.js +19 -19
  47. package/esm2015/static.js +33 -33
  48. package/esm2015/stemy-backend.js +4 -4
  49. package/esm2015/utilities/di-container.js +84 -84
  50. package/esm2015/utilities/lazy-asset-generator.js +40 -40
  51. package/esm2015/utilities/tree.js +111 -111
  52. package/esm2015/utils.js +618 -601
  53. package/esm2015/validators.js +51 -51
  54. package/fesm2015/stemy-backend.js +3656 -3585
  55. package/fesm2015/stemy-backend.js.map +1 -1
  56. package/package.json +1 -1
  57. package/public_api.d.ts +33 -33
  58. package/rest-controllers/assets.controller.d.ts +16 -16
  59. package/rest-controllers/auth.controller.d.ts +14 -14
  60. package/rest-controllers/gallery.controller.d.ts +7 -7
  61. package/rest-controllers/progresses.controller.d.ts +9 -9
  62. package/rest-middlewares/container.middleware.d.ts +8 -8
  63. package/rest-middlewares/error-handler.middleware.d.ts +13 -13
  64. package/rest-middlewares/language.middleware.d.ts +8 -8
  65. package/rest-middlewares/request-ended.middleware.d.ts +5 -5
  66. package/rest-middlewares/request-started.middleware.d.ts +5 -5
  67. package/rest-openapi.d.ts +3 -3
  68. package/services/asset-processor.d.ts +12 -12
  69. package/services/asset-resolver.d.ts +9 -9
  70. package/services/assets.d.ts +19 -19
  71. package/services/backend-provider.d.ts +11 -11
  72. package/services/cache-processor.d.ts +4 -4
  73. package/services/cache.d.ts +23 -23
  74. package/services/configuration.d.ts +10 -10
  75. package/services/endpoint-provider.d.ts +4 -4
  76. package/services/entities/asset.d.ts +25 -23
  77. package/services/entities/lazy-asset.d.ts +29 -29
  78. package/services/entities/progress.d.ts +49 -49
  79. package/services/fixtures.d.ts +6 -6
  80. package/services/gallery-cache.d.ts +9 -9
  81. package/services/gallery-image.d.ts +11 -11
  82. package/services/gallery.d.ts +13 -13
  83. package/services/id-generator.d.ts +11 -11
  84. package/services/job-manager.d.ts +27 -27
  85. package/services/lazy-assets.d.ts +19 -19
  86. package/services/mail-sender.d.ts +20 -20
  87. package/services/memory-cache.d.ts +10 -10
  88. package/services/mongo-connector.d.ts +14 -14
  89. package/services/progresses.d.ts +18 -18
  90. package/services/template-renderer.d.ts +14 -14
  91. package/services/translation-provider.d.ts +10 -10
  92. package/services/translator.d.ts +15 -15
  93. package/services/user-manager.d.ts +6 -6
  94. package/socket-controllers/progress.controller.d.ts +10 -10
  95. package/socket-middlewares/compression.middleware.d.ts +4 -4
  96. package/static.d.ts +2 -2
  97. package/stemy-backend.d.ts +4 -4
  98. package/stemy-backend.metadata.json +1 -1
  99. package/utilities/di-container.d.ts +43 -43
  100. package/utilities/lazy-asset-generator.d.ts +15 -15
  101. package/utilities/tree.d.ts +14 -14
  102. package/utils.d.ts +76 -73
  103. package/validators.d.ts +7 -7
  104. package/di-container.d.ts +0 -40
  105. package/esm2015/di-container.js +0 -75
  106. package/esm2015/models/lazy-asset.js +0 -12
  107. package/esm2015/models/progress.js +0 -23
  108. package/esm2015/rest-middlewares/injector.middleware.js +0 -26
  109. package/esm2015/services/lazy-asset-helper.js +0 -74
  110. package/esm2015/services/logger.js +0 -14
  111. package/esm2015/services/progress-helper.js +0 -168
  112. package/models/lazy-asset.d.ts +0 -45
  113. package/models/progress.d.ts +0 -56
  114. package/rest-middlewares/injector.middleware.d.ts +0 -8
  115. package/services/lazy-asset-helper.d.ts +0 -15
  116. package/services/logger.d.ts +0 -2
  117. package/services/progress-helper.d.ts +0 -37
@@ -1,61 +1,61 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
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
- };
19
- import { injectable, singleton } from "tsyringe";
20
- import { GridFSBucket } from "mongodb";
21
- import { connect } from "mongoose";
22
- import { Configuration } from "./configuration";
23
- let MongoConnector = class MongoConnector {
24
- constructor(configuration) {
25
- this.configuration = configuration;
26
- this.conn = null;
27
- this.db = null;
28
- this.fsBucket = null;
29
- }
30
- get connection() {
31
- return this.conn;
32
- }
33
- get database() {
34
- return this.db;
35
- }
36
- get bucket() {
37
- return this.fsBucket;
38
- }
39
- connect() {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- if (this.db)
42
- return this.db;
43
- this.conn = (yield connect(this.configuration.resolve("mongoUri"), {
44
- dbName: this.configuration.resolve("mongoDb"),
45
- user: this.configuration.resolve("mongoUser"),
46
- pass: this.configuration.resolve("mongoPassword"),
47
- useNewUrlParser: true,
48
- useUnifiedTopology: true
49
- })).connection;
50
- this.db = this.conn.db;
51
- this.fsBucket = new GridFSBucket(this.db, { bucketName: "assets" });
52
- });
53
- }
54
- };
55
- MongoConnector = __decorate([
56
- injectable(),
57
- singleton(),
58
- __metadata("design:paramtypes", [Configuration])
59
- ], MongoConnector);
60
- export { MongoConnector };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tY29ubmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21vbmdvLWNvbm5lY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUssWUFBWSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQWEsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0lBSWpDLGNBQWMsU0FBZCxjQUFjO0lBa0J2QixZQUFxQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFwQkQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBWUssT0FBTzs7WUFDVCxJQUFJLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQy9ELE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7Z0JBQzdDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQzdDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQ2pELGVBQWUsRUFBRSxJQUFJO2dCQUNyQixrQkFBa0IsRUFBRSxJQUFJO2FBQzNCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNmLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQXBDWSxjQUFjO0lBRjFCLFVBQVUsRUFBRTtJQUNaLFNBQVMsRUFBRTtxQ0FtQjRCLGFBQWE7R0FsQnhDLGNBQWMsQ0FvQzFCO1NBcENZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XG5pbXBvcnQge0RiLCBHcmlkRlNCdWNrZXR9IGZyb20gXCJtb25nb2RiXCI7XG5pbXBvcnQge2Nvbm5lY3QsIENvbm5lY3Rpb259IGZyb20gXCJtb25nb29zZVwiO1xuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5cbkBpbmplY3RhYmxlKClcbkBzaW5nbGV0b24oKVxuZXhwb3J0IGNsYXNzIE1vbmdvQ29ubmVjdG9yIHtcblxuICAgIGdldCBjb25uZWN0aW9uKCk6IENvbm5lY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uO1xuICAgIH1cblxuICAgIGdldCBkYXRhYmFzZSgpOiBEYiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRiO1xuICAgIH1cblxuICAgIGdldCBidWNrZXQoKTogR3JpZEZTQnVja2V0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnNCdWNrZXQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbm46IENvbm5lY3Rpb247XG4gICAgcHJvdGVjdGVkIGRiOiBEYjtcbiAgICBwcm90ZWN0ZWQgZnNCdWNrZXQ6IEdyaWRGU0J1Y2tldDtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25uID0gbnVsbDtcbiAgICAgICAgdGhpcy5kYiA9IG51bGw7XG4gICAgICAgIHRoaXMuZnNCdWNrZXQgPSBudWxsO1xuICAgIH1cblxuICAgIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTxEYj4ge1xuICAgICAgICBpZiAodGhpcy5kYikgcmV0dXJuIHRoaXMuZGI7XG4gICAgICAgIHRoaXMuY29ubiA9IChhd2FpdCBjb25uZWN0KHRoaXMuY29uZmlndXJhdGlvbi5yZXNvbHZlKFwibW9uZ29VcmlcIiksIHtcbiAgICAgICAgICAgIGRiTmFtZTogdGhpcy5jb25maWd1cmF0aW9uLnJlc29sdmUoXCJtb25nb0RiXCIpLFxuICAgICAgICAgICAgdXNlcjogdGhpcy5jb25maWd1cmF0aW9uLnJlc29sdmUoXCJtb25nb1VzZXJcIiksXG4gICAgICAgICAgICBwYXNzOiB0aGlzLmNvbmZpZ3VyYXRpb24ucmVzb2x2ZShcIm1vbmdvUGFzc3dvcmRcIiksXG4gICAgICAgICAgICB1c2VOZXdVcmxQYXJzZXI6IHRydWUsXG4gICAgICAgICAgICB1c2VVbmlmaWVkVG9wb2xvZ3k6IHRydWVcbiAgICAgICAgfSkpLmNvbm5lY3Rpb247XG4gICAgICAgIHRoaXMuZGIgPSB0aGlzLmNvbm4uZGI7XG4gICAgICAgIHRoaXMuZnNCdWNrZXQgPSBuZXcgR3JpZEZTQnVja2V0KHRoaXMuZGIsIHtidWNrZXROYW1lOiBcImFzc2V0c1wifSk7XG4gICAgfVxufVxuIl19
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
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
+ };
19
+ import { injectable, singleton } from "tsyringe";
20
+ import { GridFSBucket } from "mongodb";
21
+ import { connect } from "mongoose";
22
+ import { Configuration } from "./configuration";
23
+ let MongoConnector = class MongoConnector {
24
+ constructor(configuration) {
25
+ this.configuration = configuration;
26
+ this.conn = null;
27
+ this.db = null;
28
+ this.fsBucket = null;
29
+ }
30
+ get connection() {
31
+ return this.conn;
32
+ }
33
+ get database() {
34
+ return this.db;
35
+ }
36
+ get bucket() {
37
+ return this.fsBucket;
38
+ }
39
+ connect() {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ if (this.db)
42
+ return this.db;
43
+ this.conn = (yield connect(this.configuration.resolve("mongoUri"), {
44
+ dbName: this.configuration.resolve("mongoDb"),
45
+ user: this.configuration.resolve("mongoUser"),
46
+ pass: this.configuration.resolve("mongoPassword"),
47
+ useNewUrlParser: true,
48
+ useUnifiedTopology: true
49
+ })).connection;
50
+ this.db = this.conn.db;
51
+ this.fsBucket = new GridFSBucket(this.db, { bucketName: "assets" });
52
+ });
53
+ }
54
+ };
55
+ MongoConnector = __decorate([
56
+ injectable(),
57
+ singleton(),
58
+ __metadata("design:paramtypes", [Configuration])
59
+ ], MongoConnector);
60
+ export { MongoConnector };
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tY29ubmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21vbmdvLWNvbm5lY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUssWUFBWSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQWEsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0lBSWpDLGNBQWMsU0FBZCxjQUFjO0lBa0J2QixZQUFxQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFwQkQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBWUssT0FBTzs7WUFDVCxJQUFJLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQy9ELE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7Z0JBQzdDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQzdDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQ2pELGVBQWUsRUFBRSxJQUFJO2dCQUNyQixrQkFBa0IsRUFBRSxJQUFJO2FBQzNCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNmLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQXBDWSxjQUFjO0lBRjFCLFVBQVUsRUFBRTtJQUNaLFNBQVMsRUFBRTtxQ0FtQjRCLGFBQWE7R0FsQnhDLGNBQWMsQ0FvQzFCO1NBcENZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7RGIsIEdyaWRGU0J1Y2tldH0gZnJvbSBcIm1vbmdvZGJcIjtcclxuaW1wb3J0IHtjb25uZWN0LCBDb25uZWN0aW9ufSBmcm9tIFwibW9uZ29vc2VcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzaW5nbGV0b24oKVxyXG5leHBvcnQgY2xhc3MgTW9uZ29Db25uZWN0b3Ige1xyXG5cclxuICAgIGdldCBjb25uZWN0aW9uKCk6IENvbm5lY3Rpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbm47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRhdGFiYXNlKCk6IERiIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnVja2V0KCk6IEdyaWRGU0J1Y2tldCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZnNCdWNrZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbm46IENvbm5lY3Rpb247XHJcbiAgICBwcm90ZWN0ZWQgZGI6IERiO1xyXG4gICAgcHJvdGVjdGVkIGZzQnVja2V0OiBHcmlkRlNCdWNrZXQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIHRoaXMuY29ubiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5kYiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5mc0J1Y2tldCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY29ubmVjdCgpOiBQcm9taXNlPERiPiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGIpIHJldHVybiB0aGlzLmRiO1xyXG4gICAgICAgIHRoaXMuY29ubiA9IChhd2FpdCBjb25uZWN0KHRoaXMuY29uZmlndXJhdGlvbi5yZXNvbHZlKFwibW9uZ29VcmlcIiksIHtcclxuICAgICAgICAgICAgZGJOYW1lOiB0aGlzLmNvbmZpZ3VyYXRpb24ucmVzb2x2ZShcIm1vbmdvRGJcIiksXHJcbiAgICAgICAgICAgIHVzZXI6IHRoaXMuY29uZmlndXJhdGlvbi5yZXNvbHZlKFwibW9uZ29Vc2VyXCIpLFxyXG4gICAgICAgICAgICBwYXNzOiB0aGlzLmNvbmZpZ3VyYXRpb24ucmVzb2x2ZShcIm1vbmdvUGFzc3dvcmRcIiksXHJcbiAgICAgICAgICAgIHVzZU5ld1VybFBhcnNlcjogdHJ1ZSxcclxuICAgICAgICAgICAgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlXHJcbiAgICAgICAgfSkpLmNvbm5lY3Rpb247XHJcbiAgICAgICAgdGhpcy5kYiA9IHRoaXMuY29ubi5kYjtcclxuICAgICAgICB0aGlzLmZzQnVja2V0ID0gbmV3IEdyaWRGU0J1Y2tldCh0aGlzLmRiLCB7YnVja2V0TmFtZTogXCJhc3NldHNcIn0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,91 +1,91 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
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
- };
19
- import { injectable, singleton } from "tsyringe";
20
- import socket_io_client from "socket.io-client";
21
- import { ObjectId } from "bson";
22
- import { promiseTimeout } from "../utils";
23
- import { Configuration } from "./configuration";
24
- import { Progress } from "./entities/progress";
25
- import { MongoConnector } from "./mongo-connector";
26
- const socketIOClient = socket_io_client;
27
- let Progresses = class Progresses {
28
- constructor(connector, config) {
29
- this.connector = connector;
30
- this.config = config;
31
- const mainEndpoint = this.config.resolve("mainEndpoint");
32
- this.client = !mainEndpoint ? null : socketIOClient(mainEndpoint, { path: "/socket" });
33
- this.collection = connector.database.collection("progresses");
34
- }
35
- waitToFinish(id) {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- let isFinished = false;
38
- let progress = null;
39
- while (!isFinished) {
40
- progress = yield this.get(id);
41
- if (!progress) {
42
- throw `Progress does not exists with id: ${id}`;
43
- }
44
- if (progress.error) {
45
- throw progress.error;
46
- }
47
- isFinished = progress.percent == 100;
48
- if (!isFinished) {
49
- yield promiseTimeout(150);
50
- }
51
- }
52
- return progress;
53
- });
54
- }
55
- get(id) {
56
- return __awaiter(this, void 0, void 0, function* () {
57
- return this.find({ _id: new ObjectId(id) });
58
- });
59
- }
60
- find(where) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- const data = yield this.collection.findOne(where);
63
- return !data ? null : new Progress(data._id, data.current, data.max, data.message, data.error, this.client, this.collection);
64
- });
65
- }
66
- create(max = 100) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- if (isNaN(max) || max <= 0) {
69
- throw "Max progress value must be bigger than zero";
70
- }
71
- const res = yield this.collection.insertOne({
72
- current: 0,
73
- max
74
- });
75
- return new Progress(res.insertedId, 0, max, "", "", this.client, this.collection);
76
- });
77
- }
78
- remove(id) {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- yield this.collection.deleteOne({ _id: new ObjectId(id) });
81
- return id;
82
- });
83
- }
84
- };
85
- Progresses = __decorate([
86
- injectable(),
87
- singleton(),
88
- __metadata("design:paramtypes", [MongoConnector, Configuration])
89
- ], Progresses);
90
- export { Progresses };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wcm9ncmVzc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sZ0JBQWdCLE1BQU0sa0JBQWtCLENBQUE7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUc5QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0lBSTNCLFVBQVUsU0FBVixVQUFVO0lBS25CLFlBQXFCLFNBQXlCLEVBQVcsTUFBcUI7UUFBekQsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQzFFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVLLFlBQVksQ0FBQyxFQUFVOztZQUN6QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxRQUFRLEdBQWMsSUFBSSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hCLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ1gsTUFBTSxxQ0FBcUMsRUFBRSxFQUFFLENBQUM7aUJBQ25EO2dCQUNELElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtvQkFDaEIsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUN4QjtnQkFDRCxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2IsTUFBTSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzdCO2FBQ0o7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO0tBQUE7SUFFSyxHQUFHLENBQUMsRUFBVTs7WUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO0tBQUE7SUFFSyxJQUFJLENBQUMsS0FBNkI7O1lBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUMxRCxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQy9CLENBQUM7UUFDTixDQUFDO0tBQUE7SUFFSyxNQUFNLENBQUMsTUFBYyxHQUFHOztZQUMxQixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO2dCQUN4QixNQUFNLDZDQUE2QyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDeEMsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsR0FBRzthQUNOLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxRQUFRLENBQ2YsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQzlCLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FDL0IsQ0FBQztRQUNOLENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FBQyxFQUFVOztZQUNuQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FBQTtDQUNKLENBQUE7QUE1RFksVUFBVTtJQUZ0QixVQUFVLEVBQUU7SUFDWixTQUFTLEVBQUU7cUNBTXdCLGNBQWMsRUFBbUIsYUFBYTtHQUxyRSxVQUFVLENBNER0QjtTQTVEWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHNvY2tldF9pb19jbGllbnQgZnJvbSBcInNvY2tldC5pby1jbGllbnRcIlxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcbmltcG9ydCB7RmlsdGVyUXVlcnl9IGZyb20gXCJtb25nb29zZVwiO1xuaW1wb3J0IHtJUHJvZ3Jlc3N9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcbmltcG9ydCB7cHJvbWlzZVRpbWVvdXR9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQge1Byb2dyZXNzfSBmcm9tIFwiLi9lbnRpdGllcy9wcm9ncmVzc1wiO1xuaW1wb3J0IHtNb25nb0Nvbm5lY3Rvcn0gZnJvbSBcIi4vbW9uZ28tY29ubmVjdG9yXCI7XG5pbXBvcnQge0NvbGxlY3Rpb259IGZyb20gXCJtb25nb2RiXCI7XG5cbmNvbnN0IHNvY2tldElPQ2xpZW50ID0gc29ja2V0X2lvX2NsaWVudDtcblxuQGluamVjdGFibGUoKVxuQHNpbmdsZXRvbigpXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NlcyB7XG5cbiAgICBwcm90ZWN0ZWQgY2xpZW50OiBTb2NrZXRJT0NsaWVudC5Tb2NrZXQ7XG4gICAgcmVhZG9ubHkgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbm5lY3RvcjogTW9uZ29Db25uZWN0b3IsIHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbikge1xuICAgICAgICBjb25zdCBtYWluRW5kcG9pbnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwibWFpbkVuZHBvaW50XCIpO1xuICAgICAgICB0aGlzLmNsaWVudCA9ICFtYWluRW5kcG9pbnQgPyBudWxsIDogc29ja2V0SU9DbGllbnQobWFpbkVuZHBvaW50LCB7cGF0aDogXCIvc29ja2V0XCJ9KTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gY29ubmVjdG9yLmRhdGFiYXNlLmNvbGxlY3Rpb24oXCJwcm9ncmVzc2VzXCIpO1xuICAgIH1cblxuICAgIGFzeW5jIHdhaXRUb0ZpbmlzaChpZDogc3RyaW5nKTogUHJvbWlzZTxJUHJvZ3Jlc3M+IHtcbiAgICAgICAgbGV0IGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHByb2dyZXNzOiBJUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICB3aGlsZSAoIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIHByb2dyZXNzID0gYXdhaXQgdGhpcy5nZXQoaWQpO1xuICAgICAgICAgICAgaWYgKCFwcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIHRocm93IGBQcm9ncmVzcyBkb2VzIG5vdCBleGlzdHMgd2l0aCBpZDogJHtpZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb2dyZXNzLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgcHJvZ3Jlc3MuZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc0ZpbmlzaGVkID0gcHJvZ3Jlc3MucGVyY2VudCA9PSAxMDA7XG4gICAgICAgICAgICBpZiAoIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwcm9taXNlVGltZW91dCgxNTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9ncmVzcztcbiAgICB9XG5cbiAgICBhc3luYyBnZXQoaWQ6IHN0cmluZyk6IFByb21pc2U8SVByb2dyZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoe19pZDogbmV3IE9iamVjdElkKGlkKX0pO1xuICAgIH1cblxuICAgIGFzeW5jIGZpbmQod2hlcmU6IEZpbHRlclF1ZXJ5PElQcm9ncmVzcz4pOiBQcm9taXNlPElQcm9ncmVzcz4ge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmZpbmRPbmUod2hlcmUpO1xuICAgICAgICByZXR1cm4gIWRhdGEgPyBudWxsIDogbmV3IFByb2dyZXNzKFxuICAgICAgICAgICAgZGF0YS5faWQsIGRhdGEuY3VycmVudCwgZGF0YS5tYXgsIGRhdGEubWVzc2FnZSwgZGF0YS5lcnJvcixcbiAgICAgICAgICAgIHRoaXMuY2xpZW50LCB0aGlzLmNvbGxlY3Rpb25cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGUobWF4OiBudW1iZXIgPSAxMDApOiBQcm9taXNlPElQcm9ncmVzcz4ge1xuICAgICAgICBpZiAoaXNOYU4obWF4KSB8fCBtYXggPD0gMCkge1xuICAgICAgICAgICAgdGhyb3cgXCJNYXggcHJvZ3Jlc3MgdmFsdWUgbXVzdCBiZSBiaWdnZXIgdGhhbiB6ZXJvXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmluc2VydE9uZSh7XG4gICAgICAgICAgICBjdXJyZW50OiAwLFxuICAgICAgICAgICAgbWF4XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFByb2dyZXNzKFxuICAgICAgICAgICAgcmVzLmluc2VydGVkSWQsIDAsIG1heCwgXCJcIiwgXCJcIixcbiAgICAgICAgICAgIHRoaXMuY2xpZW50LCB0aGlzLmNvbGxlY3Rpb25cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyByZW1vdmUoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5kZWxldGVPbmUoe19pZDogbmV3IE9iamVjdElkKGlkKX0pO1xuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxufVxuIl19
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
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
+ };
19
+ import { injectable, singleton } from "tsyringe";
20
+ import socket_io_client from "socket.io-client";
21
+ import { ObjectId } from "bson";
22
+ import { promiseTimeout } from "../utils";
23
+ import { Configuration } from "./configuration";
24
+ import { Progress } from "./entities/progress";
25
+ import { MongoConnector } from "./mongo-connector";
26
+ const socketIOClient = socket_io_client;
27
+ let Progresses = class Progresses {
28
+ constructor(connector, config) {
29
+ this.connector = connector;
30
+ this.config = config;
31
+ const mainEndpoint = this.config.resolve("mainEndpoint");
32
+ this.client = !mainEndpoint ? null : socketIOClient(mainEndpoint, { path: "/socket" });
33
+ this.collection = connector.database.collection("progresses");
34
+ }
35
+ waitToFinish(id) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ let isFinished = false;
38
+ let progress = null;
39
+ while (!isFinished) {
40
+ progress = yield this.get(id);
41
+ if (!progress) {
42
+ throw `Progress does not exists with id: ${id}`;
43
+ }
44
+ if (progress.error) {
45
+ throw progress.error;
46
+ }
47
+ isFinished = progress.percent == 100;
48
+ if (!isFinished) {
49
+ yield promiseTimeout(150);
50
+ }
51
+ }
52
+ return progress;
53
+ });
54
+ }
55
+ get(id) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ return this.find({ _id: new ObjectId(id) });
58
+ });
59
+ }
60
+ find(where) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const data = yield this.collection.findOne(where);
63
+ return !data ? null : new Progress(data._id, data.current, data.max, data.message, data.error, this.client, this.collection);
64
+ });
65
+ }
66
+ create(max = 100) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ if (isNaN(max) || max <= 0) {
69
+ throw "Max progress value must be bigger than zero";
70
+ }
71
+ const res = yield this.collection.insertOne({
72
+ current: 0,
73
+ max
74
+ });
75
+ return new Progress(res.insertedId, 0, max, "", "", this.client, this.collection);
76
+ });
77
+ }
78
+ remove(id) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ yield this.collection.deleteOne({ _id: new ObjectId(id) });
81
+ return id;
82
+ });
83
+ }
84
+ };
85
+ Progresses = __decorate([
86
+ injectable(),
87
+ singleton(),
88
+ __metadata("design:paramtypes", [MongoConnector, Configuration])
89
+ ], Progresses);
90
+ export { Progresses };
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wcm9ncmVzc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sZ0JBQWdCLE1BQU0sa0JBQWtCLENBQUE7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUc5QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0lBSTNCLFVBQVUsU0FBVixVQUFVO0lBS25CLFlBQXFCLFNBQXlCLEVBQVcsTUFBcUI7UUFBekQsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQzFFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVLLFlBQVksQ0FBQyxFQUFVOztZQUN6QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxRQUFRLEdBQWMsSUFBSSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hCLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ1gsTUFBTSxxQ0FBcUMsRUFBRSxFQUFFLENBQUM7aUJBQ25EO2dCQUNELElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtvQkFDaEIsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUN4QjtnQkFDRCxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2IsTUFBTSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzdCO2FBQ0o7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO0tBQUE7SUFFSyxHQUFHLENBQUMsRUFBVTs7WUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO0tBQUE7SUFFSyxJQUFJLENBQUMsS0FBNkI7O1lBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUMxRCxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQy9CLENBQUM7UUFDTixDQUFDO0tBQUE7SUFFSyxNQUFNLENBQUMsTUFBYyxHQUFHOztZQUMxQixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO2dCQUN4QixNQUFNLDZDQUE2QyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDeEMsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsR0FBRzthQUNOLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxRQUFRLENBQ2YsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQzlCLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FDL0IsQ0FBQztRQUNOLENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FBQyxFQUFVOztZQUNuQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FBQTtDQUNKLENBQUE7QUE1RFksVUFBVTtJQUZ0QixVQUFVLEVBQUU7SUFDWixTQUFTLEVBQUU7cUNBTXdCLGNBQWMsRUFBbUIsYUFBYTtHQUxyRSxVQUFVLENBNER0QjtTQTVEWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQgc29ja2V0X2lvX2NsaWVudCBmcm9tIFwic29ja2V0LmlvLWNsaWVudFwiXHJcbmltcG9ydCB7T2JqZWN0SWR9IGZyb20gXCJic29uXCI7XHJcbmltcG9ydCB7RmlsdGVyUXVlcnl9IGZyb20gXCJtb25nb29zZVwiO1xyXG5pbXBvcnQge0lQcm9ncmVzc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge3Byb21pc2VUaW1lb3V0fSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7UHJvZ3Jlc3N9IGZyb20gXCIuL2VudGl0aWVzL3Byb2dyZXNzXCI7XHJcbmltcG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL21vbmdvLWNvbm5lY3RvclwiO1xyXG5pbXBvcnQge0NvbGxlY3Rpb259IGZyb20gXCJtb25nb2RiXCI7XHJcblxyXG5jb25zdCBzb2NrZXRJT0NsaWVudCA9IHNvY2tldF9pb19jbGllbnQ7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzaW5nbGV0b24oKVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NlcyB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNsaWVudDogU29ja2V0SU9DbGllbnQuU29ja2V0O1xyXG4gICAgcmVhZG9ubHkgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25uZWN0b3I6IE1vbmdvQ29ubmVjdG9yLCByZWFkb25seSBjb25maWc6IENvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICBjb25zdCBtYWluRW5kcG9pbnQgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwibWFpbkVuZHBvaW50XCIpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50ID0gIW1haW5FbmRwb2ludCA/IG51bGwgOiBzb2NrZXRJT0NsaWVudChtYWluRW5kcG9pbnQsIHtwYXRoOiBcIi9zb2NrZXRcIn0pO1xyXG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbm5lY3Rvci5kYXRhYmFzZS5jb2xsZWN0aW9uKFwicHJvZ3Jlc3Nlc1wiKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB3YWl0VG9GaW5pc2goaWQ6IHN0cmluZyk6IFByb21pc2U8SVByb2dyZXNzPiB7XHJcbiAgICAgICAgbGV0IGlzRmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgcHJvZ3Jlc3M6IElQcm9ncmVzcyA9IG51bGw7XHJcbiAgICAgICAgd2hpbGUgKCFpc0ZpbmlzaGVkKSB7XHJcbiAgICAgICAgICAgIHByb2dyZXNzID0gYXdhaXQgdGhpcy5nZXQoaWQpO1xyXG4gICAgICAgICAgICBpZiAoIXByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBgUHJvZ3Jlc3MgZG9lcyBub3QgZXhpc3RzIHdpdGggaWQ6ICR7aWR9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJvZ3Jlc3MuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IHByb2dyZXNzLmVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlzRmluaXNoZWQgPSBwcm9ncmVzcy5wZXJjZW50ID09IDEwMDtcclxuICAgICAgICAgICAgaWYgKCFpc0ZpbmlzaGVkKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBwcm9taXNlVGltZW91dCgxNTApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwcm9ncmVzcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXQoaWQ6IHN0cmluZyk6IFByb21pc2U8SVByb2dyZXNzPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZCh7X2lkOiBuZXcgT2JqZWN0SWQoaWQpfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmluZCh3aGVyZTogRmlsdGVyUXVlcnk8SVByb2dyZXNzPik6IFByb21pc2U8SVByb2dyZXNzPiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbi5maW5kT25lKHdoZXJlKTtcclxuICAgICAgICByZXR1cm4gIWRhdGEgPyBudWxsIDogbmV3IFByb2dyZXNzKFxyXG4gICAgICAgICAgICBkYXRhLl9pZCwgZGF0YS5jdXJyZW50LCBkYXRhLm1heCwgZGF0YS5tZXNzYWdlLCBkYXRhLmVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNsaWVudCwgdGhpcy5jb2xsZWN0aW9uXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGUobWF4OiBudW1iZXIgPSAxMDApOiBQcm9taXNlPElQcm9ncmVzcz4ge1xyXG4gICAgICAgIGlmIChpc05hTihtYXgpIHx8IG1heCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IFwiTWF4IHByb2dyZXNzIHZhbHVlIG11c3QgYmUgYmlnZ2VyIHRoYW4gemVyb1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uaW5zZXJ0T25lKHtcclxuICAgICAgICAgICAgY3VycmVudDogMCxcclxuICAgICAgICAgICAgbWF4XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9ncmVzcyhcclxuICAgICAgICAgICAgcmVzLmluc2VydGVkSWQsIDAsIG1heCwgXCJcIiwgXCJcIixcclxuICAgICAgICAgICAgdGhpcy5jbGllbnQsIHRoaXMuY29sbGVjdGlvblxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcmVtb3ZlKGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5kZWxldGVPbmUoe19pZDogbmV3IE9iamVjdElkKGlkKX0pO1xyXG4gICAgICAgIHJldHVybiBpZDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,89 +1,89 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
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
- };
19
- import { injectable, singleton } from "tsyringe";
20
- import { lstatSync, readdir, readFileSync } from "fs";
21
- import { join } from "path";
22
- import * as Handlebars from "handlebars";
23
- import { Translator } from "./translator";
24
- import { Configuration } from "./configuration";
25
- let TemplateRenderer = class TemplateRenderer {
26
- constructor(translator, config) {
27
- this.translator = translator;
28
- this.config = config;
29
- this.templates = {};
30
- Handlebars.registerHelper(`object`, function ({ hash }) {
31
- return hash;
32
- });
33
- Handlebars.registerHelper(`now`, function () {
34
- return new Date().getTime();
35
- });
36
- Handlebars.registerHelper(`keys`, function (obj) {
37
- return !obj ? [] : Object.keys(obj);
38
- });
39
- Handlebars.registerHelper(`translate`, function (key, params) {
40
- return translator.getTranslationSync(this.language, key, params);
41
- });
42
- }
43
- init() {
44
- this.initPromise = this.initPromise || this.parseTemplates(this.config.resolve("templatesDir"), []);
45
- return this.initPromise;
46
- }
47
- parseTemplates(dir, dirPath) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- return new Promise(resolve => {
50
- readdir(dir, (err, files) => __awaiter(this, void 0, void 0, function* () {
51
- for (let file of files) {
52
- const path = join(dir, file);
53
- if (lstatSync(path).isDirectory()) {
54
- yield this.parseTemplates(join(dir, file), dirPath.concat([file]));
55
- continue;
56
- }
57
- const parts = file.split(".");
58
- parts.pop();
59
- const name = parts.join(".");
60
- const fullName = dirPath.concat([name]).join("-");
61
- const content = readFileSync(path).toString("utf8");
62
- this.templates[fullName] = Handlebars.compile(content);
63
- Handlebars.registerPartial(fullName, content);
64
- }
65
- resolve();
66
- }));
67
- });
68
- });
69
- }
70
- render(template, language, context) {
71
- return __awaiter(this, void 0, void 0, function* () {
72
- yield this.init();
73
- yield this.translator.getDictionary(language);
74
- if (!this.templates[template]) {
75
- return Promise.reject(`Template not found with name: ${template}`);
76
- }
77
- context = Object.assign({ language }, context || {});
78
- const res = this.templates[template](context);
79
- return res instanceof Error ? yield Promise.reject(res) : res;
80
- });
81
- }
82
- };
83
- TemplateRenderer = __decorate([
84
- injectable(),
85
- singleton(),
86
- __metadata("design:paramtypes", [Translator, Configuration])
87
- ], TemplateRenderer);
88
- export { TemplateRenderer };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdGVtcGxhdGUtcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7SUFJakMsZ0JBQWdCLFNBQWhCLGdCQUFnQjtJQU16QixZQUFxQixVQUFzQixFQUFXLE1BQXFCO1FBQXRELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFVBQVUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBQyxJQUFJLEVBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRTtZQUM3QixPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFTLEdBQVE7WUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FB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QUFHLENBQUM7UUFDbEUsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQTNEWSxnQkFBZ0I7SUFGNUIsVUFBVSxFQUFFO0lBQ1osU0FBUyxFQUFFO3FDQU95QixVQUFVLEVBQW1CLGFBQWE7R0FObEUsZ0JBQWdCLENBMkQ1QjtTQTNEWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XG5pbXBvcnQge2xzdGF0U3luYywgcmVhZGRpciwgcmVhZEZpbGVTeW5jfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7am9pbn0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIEhhbmRsZWJhcnMgZnJvbSBcImhhbmRsZWJhcnNcIjtcblxuaW1wb3J0IHtUcmFuc2xhdG9yfSBmcm9tIFwiLi90cmFuc2xhdG9yXCI7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL2NvbmZpZ3VyYXRpb25cIjtcblxuQGluamVjdGFibGUoKVxuQHNpbmdsZXRvbigpXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVSZW5kZXJlciB7XG5cbiAgICB0ZW1wbGF0ZXM6IHtbbmFtZTogc3RyaW5nXTogRnVuY3Rpb259O1xuXG4gICAgcHJvdGVjdGVkIGluaXRQcm9taXNlOiBQcm9taXNlPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSB0cmFuc2xhdG9yOiBUcmFuc2xhdG9yLCByZWFkb25seSBjb25maWc6IENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSB7fTtcbiAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcihgb2JqZWN0YCwgZnVuY3Rpb24oe2hhc2h9KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgfSk7XG4gICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoYG5vd2AsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcihga2V5c2AsIGZ1bmN0aW9uKG9iajogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4gIW9iaiA/IFtdIDogT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoYHRyYW5zbGF0ZWAsIGZ1bmN0aW9uIChrZXk6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdG9yLmdldFRyYW5zbGF0aW9uU3luYyh0aGlzLmxhbmd1YWdlLCBrZXksIHBhcmFtcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHRoaXMuaW5pdFByb21pc2UgPSB0aGlzLmluaXRQcm9taXNlIHx8IHRoaXMucGFyc2VUZW1wbGF0ZXModGhpcy5jb25maWcucmVzb2x2ZShcInRlbXBsYXRlc0RpclwiKSwgW10pO1xuICAgICAgICByZXR1cm4gdGhpcy5pbml0UHJvbWlzZTtcbiAgICB9XG5cbiAgICBhc3luYyBwYXJzZVRlbXBsYXRlcyhkaXI6IHN0cmluZywgZGlyUGF0aDogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHJlYWRkaXIoZGlyLCBhc3luYyAoZXJyLCBmaWxlcykgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGpvaW4oZGlyLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxzdGF0U3luYyhwYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBhcnNlVGVtcGxhdGVzKGpvaW4oZGlyLCBmaWxlKSwgZGlyUGF0aC5jb25jYXQoW2ZpbGVdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGZpbGUuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgICAgICAgICBwYXJ0cy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHBhcnRzLmpvaW4oXCIuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGRpclBhdGguY29uY2F0KFtuYW1lXSkuam9pbihcIi1cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmMocGF0aCkudG9TdHJpbmcoXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlc1tmdWxsTmFtZV0gPSBIYW5kbGViYXJzLmNvbXBpbGUoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJQYXJ0aWFsKGZ1bGxOYW1lLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIHJlbmRlcih0ZW1wbGF0ZTogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nLCBjb250ZXh0PzogYW55KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRvci5nZXREaWN0aW9uYXJ5KGxhbmd1YWdlKTtcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBsYXRlc1t0ZW1wbGF0ZV0pIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChgVGVtcGxhdGUgbm90IGZvdW5kIHdpdGggbmFtZTogJHt0ZW1wbGF0ZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0ID0gT2JqZWN0LmFzc2lnbih7bGFuZ3VhZ2V9LCBjb250ZXh0IHx8IHt9KTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50ZW1wbGF0ZXNbdGVtcGxhdGVdKGNvbnRleHQpO1xuICAgICAgICByZXR1cm4gcmVzIGluc3RhbmNlb2YgRXJyb3IgPyBhd2FpdCBQcm9taXNlLnJlamVjdChyZXMpIDogcmVzO1xuICAgIH1cbn1cbiJdfQ==
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
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
+ };
19
+ import { injectable, singleton } from "tsyringe";
20
+ import { lstatSync, readdir, readFileSync } from "fs";
21
+ import { join } from "path";
22
+ import * as Handlebars from "handlebars";
23
+ import { Translator } from "./translator";
24
+ import { Configuration } from "./configuration";
25
+ let TemplateRenderer = class TemplateRenderer {
26
+ constructor(translator, config) {
27
+ this.translator = translator;
28
+ this.config = config;
29
+ this.templates = {};
30
+ Handlebars.registerHelper(`object`, function ({ hash }) {
31
+ return hash;
32
+ });
33
+ Handlebars.registerHelper(`now`, function () {
34
+ return new Date().getTime();
35
+ });
36
+ Handlebars.registerHelper(`keys`, function (obj) {
37
+ return !obj ? [] : Object.keys(obj);
38
+ });
39
+ Handlebars.registerHelper(`translate`, function (key, params) {
40
+ return translator.getTranslationSync(this.language, key, params);
41
+ });
42
+ }
43
+ init() {
44
+ this.initPromise = this.initPromise || this.parseTemplates(this.config.resolve("templatesDir"), []);
45
+ return this.initPromise;
46
+ }
47
+ parseTemplates(dir, dirPath) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ return new Promise(resolve => {
50
+ readdir(dir, (err, files) => __awaiter(this, void 0, void 0, function* () {
51
+ for (let file of files) {
52
+ const path = join(dir, file);
53
+ if (lstatSync(path).isDirectory()) {
54
+ yield this.parseTemplates(join(dir, file), dirPath.concat([file]));
55
+ continue;
56
+ }
57
+ const parts = file.split(".");
58
+ parts.pop();
59
+ const name = parts.join(".");
60
+ const fullName = dirPath.concat([name]).join("-");
61
+ const content = readFileSync(path).toString("utf8");
62
+ this.templates[fullName] = Handlebars.compile(content);
63
+ Handlebars.registerPartial(fullName, content);
64
+ }
65
+ resolve();
66
+ }));
67
+ });
68
+ });
69
+ }
70
+ render(template, language, context) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ yield this.init();
73
+ yield this.translator.getDictionary(language);
74
+ if (!this.templates[template]) {
75
+ return Promise.reject(`Template not found with name: ${template}`);
76
+ }
77
+ context = Object.assign({ language }, context || {});
78
+ const res = this.templates[template](context);
79
+ return res instanceof Error ? yield Promise.reject(res) : res;
80
+ });
81
+ }
82
+ };
83
+ TemplateRenderer = __decorate([
84
+ injectable(),
85
+ singleton(),
86
+ __metadata("design:paramtypes", [Translator, Configuration])
87
+ ], TemplateRenderer);
88
+ export { TemplateRenderer };
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdGVtcGxhdGUtcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7SUFJakMsZ0JBQWdCLFNBQWhCLGdCQUFnQjtJQU16QixZQUFxQixVQUFzQixFQUFXLE1BQXFCO1FBQXRELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFVBQVUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBQyxJQUFJLEVBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRTtZQUM3QixPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFTLEdBQVE7WUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FB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QUFHLENBQUM7UUFDbEUsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQTNEWSxnQkFBZ0I7SUFGNUIsVUFBVSxFQUFFO0lBQ1osU0FBUyxFQUFFO3FDQU95QixVQUFVLEVBQW1CLGFBQWE7R0FObEUsZ0JBQWdCLENBMkQ1QjtTQTNEWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7bHN0YXRTeW5jLCByZWFkZGlyLCByZWFkRmlsZVN5bmN9IGZyb20gXCJmc1wiO1xyXG5pbXBvcnQge2pvaW59IGZyb20gXCJwYXRoXCI7XHJcbmltcG9ydCAqIGFzIEhhbmRsZWJhcnMgZnJvbSBcImhhbmRsZWJhcnNcIjtcclxuXHJcbmltcG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vdHJhbnNsYXRvclwiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL2NvbmZpZ3VyYXRpb25cIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNpbmdsZXRvbigpXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVJlbmRlcmVyIHtcclxuXHJcbiAgICB0ZW1wbGF0ZXM6IHtbbmFtZTogc3RyaW5nXTogRnVuY3Rpb259O1xyXG5cclxuICAgIHByb3RlY3RlZCBpbml0UHJvbWlzZTogUHJvbWlzZTxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHRyYW5zbGF0b3I6IFRyYW5zbGF0b3IsIHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzID0ge307XHJcbiAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcihgb2JqZWN0YCwgZnVuY3Rpb24oe2hhc2h9KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoYG5vd2AsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcihga2V5c2AsIGZ1bmN0aW9uKG9iajogYW55KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhb2JqID8gW10gOiBPYmplY3Qua2V5cyhvYmopO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoYHRyYW5zbGF0ZWAsIGZ1bmN0aW9uIChrZXk6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0b3IuZ2V0VHJhbnNsYXRpb25TeW5jKHRoaXMubGFuZ3VhZ2UsIGtleSwgcGFyYW1zKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW5pdCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdFByb21pc2UgPSB0aGlzLmluaXRQcm9taXNlIHx8IHRoaXMucGFyc2VUZW1wbGF0ZXModGhpcy5jb25maWcucmVzb2x2ZShcInRlbXBsYXRlc0RpclwiKSwgW10pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluaXRQcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHBhcnNlVGVtcGxhdGVzKGRpcjogc3RyaW5nLCBkaXJQYXRoOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlYWRkaXIoZGlyLCBhc3luYyAoZXJyLCBmaWxlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBqb2luKGRpciwgZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxzdGF0U3luYyhwYXRoKS5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucGFyc2VUZW1wbGF0ZXMoam9pbihkaXIsIGZpbGUpLCBkaXJQYXRoLmNvbmNhdChbZmlsZV0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZmlsZS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHBhcnRzLmpvaW4oXCIuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxOYW1lID0gZGlyUGF0aC5jb25jYXQoW25hbWVdKS5qb2luKFwiLVwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKHBhdGgpLnRvU3RyaW5nKFwidXRmOFwiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlc1tmdWxsTmFtZV0gPSBIYW5kbGViYXJzLmNvbXBpbGUoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlclBhcnRpYWwoZnVsbE5hbWUsIGNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZW5kZXIodGVtcGxhdGU6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZywgY29udGV4dD86IGFueSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdG9yLmdldERpY3Rpb25hcnkobGFuZ3VhZ2UpO1xyXG4gICAgICAgIGlmICghdGhpcy50ZW1wbGF0ZXNbdGVtcGxhdGVdKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChgVGVtcGxhdGUgbm90IGZvdW5kIHdpdGggbmFtZTogJHt0ZW1wbGF0ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dCA9IE9iamVjdC5hc3NpZ24oe2xhbmd1YWdlfSwgY29udGV4dCB8fCB7fSk7XHJcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50ZW1wbGF0ZXNbdGVtcGxhdGVdKGNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiByZXMgaW5zdGFuY2VvZiBFcnJvciA/IGF3YWl0IFByb21pc2UucmVqZWN0KHJlcykgOiByZXM7XHJcbiAgICB9XHJcbn1cclxuIl19