@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,74 +1,74 @@
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, Lifecycle, scoped } from "tsyringe";
20
- import { ObjectId } from "bson";
21
- import { MongoConnector } from "./mongo-connector";
22
- import { Assets } from "./assets";
23
- import { LazyAsset } from "./entities/lazy-asset";
24
- import { JobManager } from "./job-manager";
25
- import { Progresses } from "./progresses";
26
- let LazyAssets = class LazyAssets {
27
- constructor(connector, assets, progresses, jobMan) {
28
- this.connector = connector;
29
- this.assets = assets;
30
- this.progresses = progresses;
31
- this.jobMan = jobMan;
32
- this.collection = connector.database.collection("lazyassets");
33
- }
34
- create(jobType, jobParams = {}, jobQue = "main") {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- const jobName = this.jobMan.tryResolve(jobType, Object.assign(Object.assign({}, jobParams), { lazyId: "" }));
37
- const res = yield this.collection.insertOne({
38
- jobName,
39
- jobParams,
40
- jobQue
41
- });
42
- return new LazyAsset(res.insertedId, jobName, jobParams, jobQue, null, null, this.assets, this.progresses, this.jobMan, this.collection);
43
- });
44
- }
45
- read(id) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- return this.find({ _id: new ObjectId(id) });
48
- });
49
- }
50
- find(where) {
51
- return __awaiter(this, void 0, void 0, function* () {
52
- const data = yield this.collection.findOne(where);
53
- return !data
54
- ? null
55
- : new LazyAsset(data._id, data.jobName, data.jobParams, data.jobQue, data.progressId, data.assetId, this.assets, this.progresses, this.jobMan, this.collection);
56
- });
57
- }
58
- unlink(id) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- const asset = yield this.read(id);
61
- if (!asset)
62
- return null;
63
- return asset.unlink();
64
- });
65
- }
66
- };
67
- LazyAssets = __decorate([
68
- injectable(),
69
- scoped(Lifecycle.ContainerScoped),
70
- __metadata("design:paramtypes", [MongoConnector, Assets,
71
- Progresses, JobManager])
72
- ], LazyAssets);
73
- export { LazyAssets };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1hc3NldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGF6eS1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztJQUkzQixVQUFVLFNBQVYsVUFBVTtJQUluQixZQUFxQixTQUF5QixFQUFXLE1BQWMsRUFDbEQsVUFBc0IsRUFBVyxNQUFrQjtRQURuRCxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDbEQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUssTUFBTSxDQUFDLE9BQW1CLEVBQUUsWUFBdUIsRUFBRSxFQUFFLFNBQWlCLE1BQU07O1lBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sa0NBQU0sU0FBUyxLQUFFLE1BQU0sRUFBRSxFQUFFLElBQUUsQ0FBQztZQUM1RSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUN4QyxPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsTUFBTTthQUNULENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxTQUFTLENBQ2hCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDdEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FDN0QsQ0FBQztRQUNOLENBQUM7S0FBQTtJQUVLLElBQUksQ0FBQyxFQUFVOztZQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7S0FBQTtJQUVLLElBQUksQ0FBQyxLQUE4Qjs7WUFDckMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsSUFBSTtnQkFDUixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsSUFBSSxTQUFTLENBQ1gsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQ2xGLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQzdELENBQUM7UUFDVixDQUFDO0tBQUE7SUFFSyxNQUFNLENBQUMsRUFBVTs7WUFDbkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLENBQUM7S0FBQTtDQUNKLENBQUE7QUF6Q1ksVUFBVTtJQUZ0QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztxQ0FLRSxjQUFjLEVBQW1CLE1BQU07UUFDdEMsVUFBVSxFQUFtQixVQUFVO0dBTC9ELFVBQVUsQ0F5Q3RCO1NBekNZLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCB7T2JqZWN0SWR9IGZyb20gXCJic29uXCI7XG5pbXBvcnQge0NvbGxlY3Rpb259IGZyb20gXCJtb25nb2RiXCI7XG5pbXBvcnQge0ZpbHRlclF1ZXJ5fSBmcm9tIFwibW9uZ29vc2VcIjtcbmltcG9ydCB7SUpvYiwgSUxhenlBc3NldCwgSm9iUGFyYW1zLCBUeXBlfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge01vbmdvQ29ubmVjdG9yfSBmcm9tIFwiLi9tb25nby1jb25uZWN0b3JcIjtcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9hc3NldHNcIjtcbmltcG9ydCB7TGF6eUFzc2V0fSBmcm9tIFwiLi9lbnRpdGllcy9sYXp5LWFzc2V0XCI7XG5pbXBvcnQge0pvYk1hbmFnZXJ9IGZyb20gXCIuL2pvYi1tYW5hZ2VyXCI7XG5pbXBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3Byb2dyZXNzZXNcIjtcblxuQGluamVjdGFibGUoKVxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxuZXhwb3J0IGNsYXNzIExhenlBc3NldHMge1xuXG4gICAgcHJvdGVjdGVkIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25uZWN0b3I6IE1vbmdvQ29ubmVjdG9yLCByZWFkb25seSBhc3NldHM6IEFzc2V0cyxcbiAgICAgICAgICAgICAgICByZWFkb25seSBwcm9ncmVzc2VzOiBQcm9ncmVzc2VzLCByZWFkb25seSBqb2JNYW46IEpvYk1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gY29ubmVjdG9yLmRhdGFiYXNlLmNvbGxlY3Rpb24oXCJsYXp5YXNzZXRzXCIpO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZShqb2JUeXBlOiBUeXBlPElKb2I+LCBqb2JQYXJhbXM6IEpvYlBhcmFtcyA9IHt9LCBqb2JRdWU6IHN0cmluZyA9IFwibWFpblwiKTogUHJvbWlzZTxJTGF6eUFzc2V0PiB7XG4gICAgICAgIGNvbnN0IGpvYk5hbWUgPSB0aGlzLmpvYk1hbi50cnlSZXNvbHZlKGpvYlR5cGUsIHsuLi5qb2JQYXJhbXMsIGxhenlJZDogXCJcIn0pO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uaW5zZXJ0T25lKHtcbiAgICAgICAgICAgIGpvYk5hbWUsXG4gICAgICAgICAgICBqb2JQYXJhbXMsXG4gICAgICAgICAgICBqb2JRdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eUFzc2V0KFxuICAgICAgICAgICAgcmVzLmluc2VydGVkSWQsIGpvYk5hbWUsIGpvYlBhcmFtcywgam9iUXVlLCBudWxsLCBudWxsLFxuICAgICAgICAgICAgdGhpcy5hc3NldHMsIHRoaXMucHJvZ3Jlc3NlcywgdGhpcy5qb2JNYW4sIHRoaXMuY29sbGVjdGlvblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWQoaWQ6IHN0cmluZyk6IFByb21pc2U8SUxhenlBc3NldD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kKHtfaWQ6IG5ldyBPYmplY3RJZChpZCl9KTtcbiAgICB9XG5cbiAgICBhc3luYyBmaW5kKHdoZXJlOiBGaWx0ZXJRdWVyeTxJTGF6eUFzc2V0Pik6IFByb21pc2U8SUxhenlBc3NldD4ge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmZpbmRPbmUod2hlcmUpO1xuICAgICAgICByZXR1cm4gIWRhdGFcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBuZXcgTGF6eUFzc2V0KFxuICAgICAgICAgICAgICAgIGRhdGEuX2lkLCBkYXRhLmpvYk5hbWUsIGRhdGEuam9iUGFyYW1zLCBkYXRhLmpvYlF1ZSwgZGF0YS5wcm9ncmVzc0lkLCBkYXRhLmFzc2V0SWQsXG4gICAgICAgICAgICAgICAgdGhpcy5hc3NldHMsIHRoaXMucHJvZ3Jlc3NlcywgdGhpcy5qb2JNYW4sIHRoaXMuY29sbGVjdGlvblxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyB1bmxpbmsoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgdGhpcy5yZWFkKGlkKTtcbiAgICAgICAgaWYgKCFhc3NldCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBhc3NldC51bmxpbmsoKTtcbiAgICB9XG59XG4iXX0=
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, Lifecycle, scoped } from "tsyringe";
20
+ import { ObjectId } from "bson";
21
+ import { MongoConnector } from "./mongo-connector";
22
+ import { Assets } from "./assets";
23
+ import { LazyAsset } from "./entities/lazy-asset";
24
+ import { JobManager } from "./job-manager";
25
+ import { Progresses } from "./progresses";
26
+ let LazyAssets = class LazyAssets {
27
+ constructor(connector, assets, progresses, jobMan) {
28
+ this.connector = connector;
29
+ this.assets = assets;
30
+ this.progresses = progresses;
31
+ this.jobMan = jobMan;
32
+ this.collection = connector.database.collection("lazyassets");
33
+ }
34
+ create(jobType, jobParams = {}, jobQue = "main") {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const jobName = this.jobMan.tryResolve(jobType, Object.assign(Object.assign({}, jobParams), { lazyId: "" }));
37
+ const res = yield this.collection.insertOne({
38
+ jobName,
39
+ jobParams,
40
+ jobQue
41
+ });
42
+ return new LazyAsset(res.insertedId, jobName, jobParams, jobQue, null, null, this.assets, this.progresses, this.jobMan, this.collection);
43
+ });
44
+ }
45
+ read(id) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ return this.find({ _id: new ObjectId(id) });
48
+ });
49
+ }
50
+ find(where) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const data = yield this.collection.findOne(where);
53
+ return !data
54
+ ? null
55
+ : new LazyAsset(data._id, data.jobName, data.jobParams, data.jobQue, data.progressId, data.assetId, this.assets, this.progresses, this.jobMan, this.collection);
56
+ });
57
+ }
58
+ unlink(id) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ const asset = yield this.read(id);
61
+ if (!asset)
62
+ return null;
63
+ return asset.unlink();
64
+ });
65
+ }
66
+ };
67
+ LazyAssets = __decorate([
68
+ injectable(),
69
+ scoped(Lifecycle.ContainerScoped),
70
+ __metadata("design:paramtypes", [MongoConnector, Assets,
71
+ Progresses, JobManager])
72
+ ], LazyAssets);
73
+ export { LazyAssets };
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1hc3NldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGF6eS1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztJQUkzQixVQUFVLFNBQVYsVUFBVTtJQUluQixZQUFxQixTQUF5QixFQUFXLE1BQWMsRUFDbEQsVUFBc0IsRUFBVyxNQUFrQjtRQURuRCxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDbEQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUssTUFBTSxDQUFDLE9BQW1CLEVBQUUsWUFBdUIsRUFBRSxFQUFFLFNBQWlCLE1BQU07O1lBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sa0NBQU0sU0FBUyxLQUFFLE1BQU0sRUFBRSxFQUFFLElBQUUsQ0FBQztZQUM1RSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUN4QyxPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsTUFBTTthQUNULENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxTQUFTLENBQ2hCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDdEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FDN0QsQ0FBQztRQUNOLENBQUM7S0FBQTtJQUVLLElBQUksQ0FBQyxFQUFVOztZQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7S0FBQTtJQUVLLElBQUksQ0FBQyxLQUE4Qjs7WUFDckMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsSUFBSTtnQkFDUixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsSUFBSSxTQUFTLENBQ1gsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQ2xGLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQzdELENBQUM7UUFDVixDQUFDO0tBQUE7SUFFSyxNQUFNLENBQUMsRUFBVTs7WUFDbkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLENBQUM7S0FBQTtDQUNKLENBQUE7QUF6Q1ksVUFBVTtJQUZ0QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztxQ0FLRSxjQUFjLEVBQW1CLE1BQU07UUFDdEMsVUFBVSxFQUFtQixVQUFVO0dBTC9ELFVBQVUsQ0F5Q3RCO1NBekNZLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge0ZpbHRlclF1ZXJ5fSBmcm9tIFwibW9uZ29vc2VcIjtcclxuaW1wb3J0IHtJSm9iLCBJTGF6eUFzc2V0LCBKb2JQYXJhbXMsIFR5cGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtNb25nb0Nvbm5lY3Rvcn0gZnJvbSBcIi4vbW9uZ28tY29ubmVjdG9yXCI7XHJcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9hc3NldHNcIjtcclxuaW1wb3J0IHtMYXp5QXNzZXR9IGZyb20gXCIuL2VudGl0aWVzL2xhenktYXNzZXRcIjtcclxuaW1wb3J0IHtKb2JNYW5hZ2VyfSBmcm9tIFwiLi9qb2ItbWFuYWdlclwiO1xyXG5pbXBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuL3Byb2dyZXNzZXNcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgTGF6eUFzc2V0cyB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29ubmVjdG9yOiBNb25nb0Nvbm5lY3RvciwgcmVhZG9ubHkgYXNzZXRzOiBBc3NldHMsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBwcm9ncmVzc2VzOiBQcm9ncmVzc2VzLCByZWFkb25seSBqb2JNYW46IEpvYk1hbmFnZXIpIHtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBjb25uZWN0b3IuZGF0YWJhc2UuY29sbGVjdGlvbihcImxhenlhc3NldHNcIik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlKGpvYlR5cGU6IFR5cGU8SUpvYj4sIGpvYlBhcmFtczogSm9iUGFyYW1zID0ge30sIGpvYlF1ZTogc3RyaW5nID0gXCJtYWluXCIpOiBQcm9taXNlPElMYXp5QXNzZXQ+IHtcclxuICAgICAgICBjb25zdCBqb2JOYW1lID0gdGhpcy5qb2JNYW4udHJ5UmVzb2x2ZShqb2JUeXBlLCB7Li4uam9iUGFyYW1zLCBsYXp5SWQ6IFwiXCJ9KTtcclxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uaW5zZXJ0T25lKHtcclxuICAgICAgICAgICAgam9iTmFtZSxcclxuICAgICAgICAgICAgam9iUGFyYW1zLFxyXG4gICAgICAgICAgICBqb2JRdWVcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbmV3IExhenlBc3NldChcclxuICAgICAgICAgICAgcmVzLmluc2VydGVkSWQsIGpvYk5hbWUsIGpvYlBhcmFtcywgam9iUXVlLCBudWxsLCBudWxsLFxyXG4gICAgICAgICAgICB0aGlzLmFzc2V0cywgdGhpcy5wcm9ncmVzc2VzLCB0aGlzLmpvYk1hbiwgdGhpcy5jb2xsZWN0aW9uXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZWFkKGlkOiBzdHJpbmcpOiBQcm9taXNlPElMYXp5QXNzZXQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maW5kKHtfaWQ6IG5ldyBPYmplY3RJZChpZCl9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaW5kKHdoZXJlOiBGaWx0ZXJRdWVyeTxJTGF6eUFzc2V0Pik6IFByb21pc2U8SUxhenlBc3NldD4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZmluZE9uZSh3aGVyZSk7XHJcbiAgICAgICAgcmV0dXJuICFkYXRhXHJcbiAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICA6IG5ldyBMYXp5QXNzZXQoXHJcbiAgICAgICAgICAgICAgICBkYXRhLl9pZCwgZGF0YS5qb2JOYW1lLCBkYXRhLmpvYlBhcmFtcywgZGF0YS5qb2JRdWUsIGRhdGEucHJvZ3Jlc3NJZCwgZGF0YS5hc3NldElkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hc3NldHMsIHRoaXMucHJvZ3Jlc3NlcywgdGhpcy5qb2JNYW4sIHRoaXMuY29sbGVjdGlvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVubGluayhpZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMucmVhZChpZCk7XHJcbiAgICAgICAgaWYgKCFhc3NldCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGFzc2V0LnVubGluaygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,59 +1,59 @@
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 { createTransport } from "nodemailer";
21
- import { TemplateRenderer } from "./template-renderer";
22
- import { Configuration } from "./configuration";
23
- let MailSender = class MailSender {
24
- constructor(config, renderer) {
25
- this.config = config;
26
- this.renderer = renderer;
27
- this.transporter = createTransport({
28
- host: this.config.resolve("smtpHost"),
29
- port: this.config.resolve("smtpPort"),
30
- auth: {
31
- user: this.config.resolve("smtpUser"),
32
- pass: this.config.resolve("smtpPassword"),
33
- }
34
- });
35
- }
36
- get translator() {
37
- return this.renderer.translator;
38
- }
39
- sendMail(language, options) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- const subject = yield this.translator.getTranslation(language, options.subject || "-");
42
- const html = yield this.renderer.render(options.template, language, options.context);
43
- return this.transporter.sendMail({
44
- from: options.from || this.config.resolve("mailSenderAddress"),
45
- to: options.to,
46
- attachments: options.attachments,
47
- subject,
48
- html
49
- });
50
- });
51
- }
52
- };
53
- MailSender = __decorate([
54
- injectable(),
55
- singleton(),
56
- __metadata("design:paramtypes", [Configuration, TemplateRenderer])
57
- ], MailSender);
58
- export { MailSender };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbC1zZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpbC1zZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUczQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7SUFhakMsVUFBVSxTQUFWLFVBQVU7SUFRbkIsWUFBcUIsTUFBcUIsRUFBVyxRQUEwQjtRQUExRCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVcsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDM0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3JDLElBQUksRUFBRTtnQkFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO2FBQzVDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQWJELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDcEMsQ0FBQztJQWFLLFFBQVEsQ0FBQyxRQUFnQixFQUFFLE9BQW9COztZQUNqRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBQzdCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO2dCQUM5RCxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxPQUFPO2dCQUNQLElBQUk7YUFDUCxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQUE7Q0FDSixDQUFBO0FBOUJZLFVBQVU7SUFGdEIsVUFBVSxFQUFFO0lBQ1osU0FBUyxFQUFFO3FDQVNxQixhQUFhLEVBQXFCLGdCQUFnQjtHQVJ0RSxVQUFVLENBOEJ0QjtTQTlCWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHtjcmVhdGVUcmFuc3BvcnR9IGZyb20gXCJub2RlbWFpbGVyXCI7XG5pbXBvcnQgKiBhcyBNYWlsIGZyb20gXCJub2RlbWFpbGVyL2xpYi9tYWlsZXJcIjtcblxuaW1wb3J0IHtUZW1wbGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi90ZW1wbGF0ZS1yZW5kZXJlclwiO1xuaW1wb3J0IHtUcmFuc2xhdG9yfSBmcm9tIFwiLi90cmFuc2xhdG9yXCI7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL2NvbmZpZ3VyYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBNYWlsT3B0aW9ucyB7XG4gICAgdG86IHN0cmluZztcbiAgICBmcm9tPzogc3RyaW5nO1xuICAgIHN1YmplY3Q/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGU6IHN0cmluZztcbiAgICBjb250ZXh0OiBhbnk7XG4gICAgYXR0YWNobWVudHM/OiBNYWlsLkF0dGFjaG1lbnRbXVxufVxuXG5AaW5qZWN0YWJsZSgpXG5Ac2luZ2xldG9uKClcbmV4cG9ydCBjbGFzcyBNYWlsU2VuZGVyIHtcblxuICAgIHJlYWRvbmx5IHRyYW5zcG9ydGVyOiBNYWlsO1xuXG4gICAgZ2V0IHRyYW5zbGF0b3IoKTogVHJhbnNsYXRvciB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLnRyYW5zbGF0b3I7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uLCByZWFkb25seSByZW5kZXJlcjogVGVtcGxhdGVSZW5kZXJlcikge1xuICAgICAgICB0aGlzLnRyYW5zcG9ydGVyID0gY3JlYXRlVHJhbnNwb3J0KHtcbiAgICAgICAgICAgIGhvc3Q6IHRoaXMuY29uZmlnLnJlc29sdmUoXCJzbXRwSG9zdFwiKSxcbiAgICAgICAgICAgIHBvcnQ6IHRoaXMuY29uZmlnLnJlc29sdmUoXCJzbXRwUG9ydFwiKSxcbiAgICAgICAgICAgIGF1dGg6IHtcbiAgICAgICAgICAgICAgICB1c2VyOiB0aGlzLmNvbmZpZy5yZXNvbHZlKFwic210cFVzZXJcIiksXG4gICAgICAgICAgICAgICAgcGFzczogdGhpcy5jb25maWcucmVzb2x2ZShcInNtdHBQYXNzd29yZFwiKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2VuZE1haWwobGFuZ3VhZ2U6IHN0cmluZywgb3B0aW9uczogTWFpbE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBzdWJqZWN0ID0gYXdhaXQgdGhpcy50cmFuc2xhdG9yLmdldFRyYW5zbGF0aW9uKGxhbmd1YWdlLCBvcHRpb25zLnN1YmplY3QgfHwgXCItXCIpO1xuICAgICAgICBjb25zdCBodG1sID0gYXdhaXQgdGhpcy5yZW5kZXJlci5yZW5kZXIob3B0aW9ucy50ZW1wbGF0ZSwgbGFuZ3VhZ2UsIG9wdGlvbnMuY29udGV4dCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydGVyLnNlbmRNYWlsKHtcbiAgICAgICAgICAgIGZyb206IG9wdGlvbnMuZnJvbSB8fCB0aGlzLmNvbmZpZy5yZXNvbHZlKFwibWFpbFNlbmRlckFkZHJlc3NcIiksXG4gICAgICAgICAgICB0bzogb3B0aW9ucy50byxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgc3ViamVjdCxcbiAgICAgICAgICAgIGh0bWxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
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 { createTransport } from "nodemailer";
21
+ import { TemplateRenderer } from "./template-renderer";
22
+ import { Configuration } from "./configuration";
23
+ let MailSender = class MailSender {
24
+ constructor(config, renderer) {
25
+ this.config = config;
26
+ this.renderer = renderer;
27
+ this.transporter = createTransport({
28
+ host: this.config.resolve("smtpHost"),
29
+ port: this.config.resolve("smtpPort"),
30
+ auth: {
31
+ user: this.config.resolve("smtpUser"),
32
+ pass: this.config.resolve("smtpPassword"),
33
+ }
34
+ });
35
+ }
36
+ get translator() {
37
+ return this.renderer.translator;
38
+ }
39
+ sendMail(language, options) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const subject = yield this.translator.getTranslation(language, options.subject || "-");
42
+ const html = yield this.renderer.render(options.template, language, options.context);
43
+ return this.transporter.sendMail({
44
+ from: options.from || this.config.resolve("mailSenderAddress"),
45
+ to: options.to,
46
+ attachments: options.attachments,
47
+ subject,
48
+ html
49
+ });
50
+ });
51
+ }
52
+ };
53
+ MailSender = __decorate([
54
+ injectable(),
55
+ singleton(),
56
+ __metadata("design:paramtypes", [Configuration, TemplateRenderer])
57
+ ], MailSender);
58
+ export { MailSender };
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbC1zZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpbC1zZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUczQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7SUFhakMsVUFBVSxTQUFWLFVBQVU7SUFRbkIsWUFBcUIsTUFBcUIsRUFBVyxRQUEwQjtRQUExRCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVcsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDM0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3JDLElBQUksRUFBRTtnQkFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO2FBQzVDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQWJELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDcEMsQ0FBQztJQWFLLFFBQVEsQ0FBQyxRQUFnQixFQUFFLE9BQW9COztZQUNqRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBQzdCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO2dCQUM5RCxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxPQUFPO2dCQUNQLElBQUk7YUFDUCxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQUE7Q0FDSixDQUFBO0FBOUJZLFVBQVU7SUFGdEIsVUFBVSxFQUFFO0lBQ1osU0FBUyxFQUFFO3FDQVNxQixhQUFhLEVBQXFCLGdCQUFnQjtHQVJ0RSxVQUFVLENBOEJ0QjtTQTlCWSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge2NyZWF0ZVRyYW5zcG9ydH0gZnJvbSBcIm5vZGVtYWlsZXJcIjtcclxuaW1wb3J0ICogYXMgTWFpbCBmcm9tIFwibm9kZW1haWxlci9saWIvbWFpbGVyXCI7XHJcblxyXG5pbXBvcnQge1RlbXBsYXRlUmVuZGVyZXJ9IGZyb20gXCIuL3RlbXBsYXRlLXJlbmRlcmVyXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRvcn0gZnJvbSBcIi4vdHJhbnNsYXRvclwiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL2NvbmZpZ3VyYXRpb25cIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFpbE9wdGlvbnMge1xyXG4gICAgdG86IHN0cmluZztcclxuICAgIGZyb20/OiBzdHJpbmc7XHJcbiAgICBzdWJqZWN0Pzogc3RyaW5nO1xyXG4gICAgdGVtcGxhdGU6IHN0cmluZztcclxuICAgIGNvbnRleHQ6IGFueTtcclxuICAgIGF0dGFjaG1lbnRzPzogTWFpbC5BdHRhY2htZW50W11cclxufVxyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2luZ2xldG9uKClcclxuZXhwb3J0IGNsYXNzIE1haWxTZW5kZXIge1xyXG5cclxuICAgIHJlYWRvbmx5IHRyYW5zcG9ydGVyOiBNYWlsO1xyXG5cclxuICAgIGdldCB0cmFuc2xhdG9yKCk6IFRyYW5zbGF0b3Ige1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLnRyYW5zbGF0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uLCByZWFkb25seSByZW5kZXJlcjogVGVtcGxhdGVSZW5kZXJlcikge1xyXG4gICAgICAgIHRoaXMudHJhbnNwb3J0ZXIgPSBjcmVhdGVUcmFuc3BvcnQoe1xyXG4gICAgICAgICAgICBob3N0OiB0aGlzLmNvbmZpZy5yZXNvbHZlKFwic210cEhvc3RcIiksXHJcbiAgICAgICAgICAgIHBvcnQ6IHRoaXMuY29uZmlnLnJlc29sdmUoXCJzbXRwUG9ydFwiKSxcclxuICAgICAgICAgICAgYXV0aDoge1xyXG4gICAgICAgICAgICAgICAgdXNlcjogdGhpcy5jb25maWcucmVzb2x2ZShcInNtdHBVc2VyXCIpLFxyXG4gICAgICAgICAgICAgICAgcGFzczogdGhpcy5jb25maWcucmVzb2x2ZShcInNtdHBQYXNzd29yZFwiKSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNlbmRNYWlsKGxhbmd1YWdlOiBzdHJpbmcsIG9wdGlvbnM6IE1haWxPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBzdWJqZWN0ID0gYXdhaXQgdGhpcy50cmFuc2xhdG9yLmdldFRyYW5zbGF0aW9uKGxhbmd1YWdlLCBvcHRpb25zLnN1YmplY3QgfHwgXCItXCIpO1xyXG4gICAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0aGlzLnJlbmRlcmVyLnJlbmRlcihvcHRpb25zLnRlbXBsYXRlLCBsYW5ndWFnZSwgb3B0aW9ucy5jb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc3BvcnRlci5zZW5kTWFpbCh7XHJcbiAgICAgICAgICAgIGZyb206IG9wdGlvbnMuZnJvbSB8fCB0aGlzLmNvbmZpZy5yZXNvbHZlKFwibWFpbFNlbmRlckFkZHJlc3NcIiksXHJcbiAgICAgICAgICAgIHRvOiBvcHRpb25zLnRvLFxyXG4gICAgICAgICAgICBhdHRhY2htZW50czogb3B0aW9ucy5hdHRhY2htZW50cyxcclxuICAgICAgICAgICAgc3ViamVjdCxcclxuICAgICAgICAgICAgaHRtbFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,84 +1,84 @@
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, Lifecycle, scoped } from "tsyringe";
20
- import { Cache } from "./cache";
21
- let MemoryCache = class MemoryCache {
22
- constructor(cache) {
23
- this.cache = cache;
24
- this.cacheMap = new Map();
25
- }
26
- set(key, value, ttl, expirationTimestamp = null, tags = {}) {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- const now = Math.round(new Date().getTime() / 1000);
29
- const expTimestamp = Math.min(isNaN(ttl) ? Number.MAX_SAFE_INTEGER : ttl, 3600);
30
- this.cacheMap.set(key, {
31
- _id: key,
32
- data: value,
33
- expirationTimestamp: expTimestamp,
34
- expiresAt: now + expTimestamp,
35
- });
36
- return this.cache.set(key, value, ttl, expirationTimestamp, tags);
37
- });
38
- }
39
- get(key) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- let item = this.cacheMap.get(key);
42
- const now = Math.round(new Date().getTime() / 1000);
43
- let expTimestamp = 3600;
44
- if (item && item.expiresAt && item.expiresAt < now) {
45
- expTimestamp = item.expirationTimestamp;
46
- item = null;
47
- }
48
- if (!item) {
49
- const value = yield this.cache.get(key);
50
- this.cacheMap.set(key, {
51
- _id: key,
52
- data: value,
53
- expirationTimestamp: expTimestamp,
54
- expiresAt: now + expTimestamp,
55
- });
56
- return value;
57
- }
58
- return item.data;
59
- });
60
- }
61
- getOrSet(key, valueCb, ttl, expirationTimestamp = null, tags = {}) {
62
- return __awaiter(this, void 0, void 0, function* () {
63
- try {
64
- return yield this.get(key);
65
- }
66
- catch (e) {
67
- return yield this.set(key, yield valueCb(), ttl, expirationTimestamp, tags);
68
- }
69
- });
70
- }
71
- delete(key) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- this.cacheMap.delete(key);
74
- yield this.cacheMap.delete(key);
75
- });
76
- }
77
- };
78
- MemoryCache = __decorate([
79
- injectable(),
80
- scoped(Lifecycle.ContainerScoped),
81
- __metadata("design:paramtypes", [Cache])
82
- ], MemoryCache);
83
- export { MemoryCache };
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21lbW9yeS1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBYSxNQUFNLFNBQVMsQ0FBQztJQUk3QixXQUFXLFNBQVgsV0FBVztJQUlwQixZQUErQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBQ2xELENBQUM7SUFFSyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxHQUFZLEVBQUUsc0JBQThCLElBQUksRUFBRSxPQUFZLEVBQUU7O1lBQy9GLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixHQUFHLEVBQUUsR0FBRztnQkFDUixJQUFJLEVBQUUsS0FBSztnQkFDWCxtQkFBbUIsRUFBRSxZQUFZO2dCQUNqQyxTQUFTLEVBQUUsR0FBRyxHQUFHLFlBQVk7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQUE7SUFFSyxHQUFHLENBQUMsR0FBVzs7WUFDakIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO2dCQUNoRCxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2dCQUN4QyxJQUFJLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNQLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsbUJBQW1CLEVBQUUsWUFBWTtvQkFDakMsU0FBUyxFQUFFLEdBQUcsR0FBRyxZQUFZO2lCQUNoQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsQ0FBQztLQUFBO0lBRUssUUFBUSxDQUFDLEdBQVcsRUFBRSxPQUEyQixFQUFFLEdBQVksRUFBRSxzQkFBOEIsSUFBSSxFQUFFLE9BQVksRUFBRTs7WUFDckgsSUFBSTtnQkFDQSxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMvRTtRQUNMLENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FBQyxHQUFXOztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7S0FBQTtDQUNKLENBQUE7QUFyRFksV0FBVztJQUZ2QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztxQ0FLUSxLQUFLO0dBSmxDLFdBQVcsQ0FxRHZCO1NBckRZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCB7Q2FjaGUsIElDYWNoZUl0ZW19IGZyb20gXCIuL2NhY2hlXCI7XG5cbkBpbmplY3RhYmxlKClcbkBzY29wZWQoTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZClcbmV4cG9ydCBjbGFzcyBNZW1vcnlDYWNoZSB7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FjaGVNYXA6IE1hcDxzdHJpbmcsIElDYWNoZUl0ZW0+O1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGNhY2hlOiBDYWNoZSkge1xuICAgICAgICB0aGlzLmNhY2hlTWFwID0gbmV3IE1hcDxzdHJpbmcsIElDYWNoZUl0ZW0+KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCB0dGw/OiBudW1iZXIsIGV4cGlyYXRpb25UaW1lc3RhbXA6IG51bWJlciA9IG51bGwsIHRhZ3M6IGFueSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xuICAgICAgICBjb25zdCBleHBUaW1lc3RhbXAgPSBNYXRoLm1pbihpc05hTih0dGwpID8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgOiB0dGwsIDM2MDApO1xuICAgICAgICB0aGlzLmNhY2hlTWFwLnNldChrZXksIHtcbiAgICAgICAgICAgIF9pZDoga2V5LFxuICAgICAgICAgICAgZGF0YTogdmFsdWUsXG4gICAgICAgICAgICBleHBpcmF0aW9uVGltZXN0YW1wOiBleHBUaW1lc3RhbXAsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IG5vdyArIGV4cFRpbWVzdGFtcCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlLnNldChrZXksIHZhbHVlLCB0dGwsIGV4cGlyYXRpb25UaW1lc3RhbXAsIHRhZ3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5jYWNoZU1hcC5nZXQoa2V5KTtcbiAgICAgICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xuICAgICAgICBsZXQgZXhwVGltZXN0YW1wID0gMzYwMDtcbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5leHBpcmVzQXQgJiYgaXRlbS5leHBpcmVzQXQgPCBub3cpIHtcbiAgICAgICAgICAgIGV4cFRpbWVzdGFtcCA9IGl0ZW0uZXhwaXJhdGlvblRpbWVzdGFtcDtcbiAgICAgICAgICAgIGl0ZW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmNhY2hlLmdldChrZXkpO1xuICAgICAgICAgICAgdGhpcy5jYWNoZU1hcC5zZXQoa2V5LCB7XG4gICAgICAgICAgICAgICAgX2lkOiBrZXksXG4gICAgICAgICAgICAgICAgZGF0YTogdmFsdWUsXG4gICAgICAgICAgICAgICAgZXhwaXJhdGlvblRpbWVzdGFtcDogZXhwVGltZXN0YW1wLFxuICAgICAgICAgICAgICAgIGV4cGlyZXNBdDogbm93ICsgZXhwVGltZXN0YW1wLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW0uZGF0YTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRPclNldChrZXk6IHN0cmluZywgdmFsdWVDYjogKCkgPT4gUHJvbWlzZTxhbnk+LCB0dGw/OiBudW1iZXIsIGV4cGlyYXRpb25UaW1lc3RhbXA6IG51bWJlciA9IG51bGwsIHRhZ3M6IGFueSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChrZXkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXQoa2V5LCBhd2FpdCB2YWx1ZUNiKCksIHR0bCwgZXhwaXJhdGlvblRpbWVzdGFtcCwgdGFncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBkZWxldGUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICB0aGlzLmNhY2hlTWFwLmRlbGV0ZShrZXkpO1xuICAgICAgICBhd2FpdCB0aGlzLmNhY2hlTWFwLmRlbGV0ZShrZXkpO1xuICAgIH1cbn1cbiJdfQ==
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, Lifecycle, scoped } from "tsyringe";
20
+ import { Cache } from "./cache";
21
+ let MemoryCache = class MemoryCache {
22
+ constructor(cache) {
23
+ this.cache = cache;
24
+ this.cacheMap = new Map();
25
+ }
26
+ set(key, value, ttl, expirationTimestamp = null, tags = {}) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const now = Math.round(new Date().getTime() / 1000);
29
+ const expTimestamp = Math.min(isNaN(ttl) ? Number.MAX_SAFE_INTEGER : ttl, 3600);
30
+ this.cacheMap.set(key, {
31
+ _id: key,
32
+ data: value,
33
+ expirationTimestamp: expTimestamp,
34
+ expiresAt: now + expTimestamp,
35
+ });
36
+ return this.cache.set(key, value, ttl, expirationTimestamp, tags);
37
+ });
38
+ }
39
+ get(key) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ let item = this.cacheMap.get(key);
42
+ const now = Math.round(new Date().getTime() / 1000);
43
+ let expTimestamp = 3600;
44
+ if (item && item.expiresAt && item.expiresAt < now) {
45
+ expTimestamp = item.expirationTimestamp;
46
+ item = null;
47
+ }
48
+ if (!item) {
49
+ const value = yield this.cache.get(key);
50
+ this.cacheMap.set(key, {
51
+ _id: key,
52
+ data: value,
53
+ expirationTimestamp: expTimestamp,
54
+ expiresAt: now + expTimestamp,
55
+ });
56
+ return value;
57
+ }
58
+ return item.data;
59
+ });
60
+ }
61
+ getOrSet(key, valueCb, ttl, expirationTimestamp = null, tags = {}) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ try {
64
+ return yield this.get(key);
65
+ }
66
+ catch (e) {
67
+ return yield this.set(key, yield valueCb(), ttl, expirationTimestamp, tags);
68
+ }
69
+ });
70
+ }
71
+ delete(key) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ this.cacheMap.delete(key);
74
+ yield this.cacheMap.delete(key);
75
+ });
76
+ }
77
+ };
78
+ MemoryCache = __decorate([
79
+ injectable(),
80
+ scoped(Lifecycle.ContainerScoped),
81
+ __metadata("design:paramtypes", [Cache])
82
+ ], MemoryCache);
83
+ export { MemoryCache };
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21lbW9yeS1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBYSxNQUFNLFNBQVMsQ0FBQztJQUk3QixXQUFXLFNBQVgsV0FBVztJQUlwQixZQUErQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBQ2xELENBQUM7SUFFSyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxHQUFZLEVBQUUsc0JBQThCLElBQUksRUFBRSxPQUFZLEVBQUU7O1lBQy9GLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixHQUFHLEVBQUUsR0FBRztnQkFDUixJQUFJLEVBQUUsS0FBSztnQkFDWCxtQkFBbUIsRUFBRSxZQUFZO2dCQUNqQyxTQUFTLEVBQUUsR0FBRyxHQUFHLFlBQVk7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQUE7SUFFSyxHQUFHLENBQUMsR0FBVzs7WUFDakIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO2dCQUNoRCxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2dCQUN4QyxJQUFJLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNQLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsbUJBQW1CLEVBQUUsWUFBWTtvQkFDakMsU0FBUyxFQUFFLEdBQUcsR0FBRyxZQUFZO2lCQUNoQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDaEI7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsQ0FBQztLQUFBO0lBRUssUUFBUSxDQUFDLEdBQVcsRUFBRSxPQUEyQixFQUFFLEdBQVksRUFBRSxzQkFBOEIsSUFBSSxFQUFFLE9BQVksRUFBRTs7WUFDckgsSUFBSTtnQkFDQSxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMvRTtRQUNMLENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FBQyxHQUFXOztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7S0FBQTtDQUNKLENBQUE7QUFyRFksV0FBVztJQUZ2QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztxQ0FLUSxLQUFLO0dBSmxDLFdBQVcsQ0FxRHZCO1NBckRZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtDYWNoZSwgSUNhY2hlSXRlbX0gZnJvbSBcIi4vY2FjaGVcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgTWVtb3J5Q2FjaGUge1xyXG5cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYWNoZU1hcDogTWFwPHN0cmluZywgSUNhY2hlSXRlbT47XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGNhY2hlOiBDYWNoZSkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVNYXAgPSBuZXcgTWFwPHN0cmluZywgSUNhY2hlSXRlbT4oKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHR0bD86IG51bWJlciwgZXhwaXJhdGlvblRpbWVzdGFtcDogbnVtYmVyID0gbnVsbCwgdGFnczogYW55ID0ge30pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKTtcclxuICAgICAgICBjb25zdCBleHBUaW1lc3RhbXAgPSBNYXRoLm1pbihpc05hTih0dGwpID8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgOiB0dGwsIDM2MDApO1xyXG4gICAgICAgIHRoaXMuY2FjaGVNYXAuc2V0KGtleSwge1xyXG4gICAgICAgICAgICBfaWQ6IGtleSxcclxuICAgICAgICAgICAgZGF0YTogdmFsdWUsXHJcbiAgICAgICAgICAgIGV4cGlyYXRpb25UaW1lc3RhbXA6IGV4cFRpbWVzdGFtcCxcclxuICAgICAgICAgICAgZXhwaXJlc0F0OiBub3cgKyBleHBUaW1lc3RhbXAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuc2V0KGtleSwgdmFsdWUsIHR0bCwgZXhwaXJhdGlvblRpbWVzdGFtcCwgdGFncyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMuY2FjaGVNYXAuZ2V0KGtleSk7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xyXG4gICAgICAgIGxldCBleHBUaW1lc3RhbXAgPSAzNjAwO1xyXG4gICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZXhwaXJlc0F0ICYmIGl0ZW0uZXhwaXJlc0F0IDwgbm93KSB7XHJcbiAgICAgICAgICAgIGV4cFRpbWVzdGFtcCA9IGl0ZW0uZXhwaXJhdGlvblRpbWVzdGFtcDtcclxuICAgICAgICAgICAgaXRlbSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXRlbSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuY2FjaGUuZ2V0KGtleSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVNYXAuc2V0KGtleSwge1xyXG4gICAgICAgICAgICAgICAgX2lkOiBrZXksXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB2YWx1ZSxcclxuICAgICAgICAgICAgICAgIGV4cGlyYXRpb25UaW1lc3RhbXA6IGV4cFRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgIGV4cGlyZXNBdDogbm93ICsgZXhwVGltZXN0YW1wLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbS5kYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE9yU2V0KGtleTogc3RyaW5nLCB2YWx1ZUNiOiAoKSA9PiBQcm9taXNlPGFueT4sIHR0bD86IG51bWJlciwgZXhwaXJhdGlvblRpbWVzdGFtcDogbnVtYmVyID0gbnVsbCwgdGFnczogYW55ID0ge30pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChrZXkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2V0KGtleSwgYXdhaXQgdmFsdWVDYigpLCB0dGwsIGV4cGlyYXRpb25UaW1lc3RhbXAsIHRhZ3MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHRoaXMuY2FjaGVNYXAuZGVsZXRlKGtleSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jYWNoZU1hcC5kZWxldGUoa2V5KTtcclxuICAgIH1cclxufVxyXG4iXX0=