@stemy/backend 3.6.0 → 4.0.0

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 (145) hide show
  1. package/commands/fixtures-command.d.ts +9 -0
  2. package/commands/index.d.ts +2 -0
  3. package/common-types.d.ts +11 -6
  4. package/esm2020/commands/clear-command.mjs +17 -0
  5. package/esm2020/commands/fixtures-command.mjs +23 -0
  6. package/esm2020/commands/index.mjs +7 -0
  7. package/esm2020/common-types.mjs +21 -0
  8. package/esm2020/public_api.mjs +379 -0
  9. package/esm2020/requests/asset-image-params.mjs +53 -0
  10. package/esm2020/rest-controllers/assets.controller.mjs +126 -0
  11. package/esm2020/rest-controllers/auth.controller.mjs +46 -0
  12. package/esm2020/rest-controllers/gallery.controller.mjs +21 -0
  13. package/esm2020/rest-controllers/progresses.controller.mjs +29 -0
  14. package/esm2020/rest-controllers/terminal-styles.mjs +67 -0
  15. package/esm2020/rest-controllers/terminal.controller.mjs +125 -0
  16. package/esm2020/rest-middlewares/container.middleware.mjs +20 -0
  17. package/esm2020/rest-middlewares/error-handler.middleware.mjs +74 -0
  18. package/esm2020/rest-middlewares/language.middleware.mjs +18 -0
  19. package/esm2020/rest-middlewares/request-ended.middleware.mjs +23 -0
  20. package/esm2020/rest-middlewares/request-started.middleware.mjs +22 -0
  21. package/esm2020/services/asset-processor.mjs +90 -0
  22. package/esm2020/services/asset-resolver.mjs +31 -0
  23. package/esm2020/services/assets.mjs +140 -0
  24. package/esm2020/services/backend-provider.mjs +22 -0
  25. package/esm2020/services/cache-processor.mjs +16 -0
  26. package/esm2020/services/cache.mjs +62 -0
  27. package/{esm2015/services/configuration.js → esm2020/services/configuration.mjs} +3 -15
  28. package/esm2020/services/endpoint-provider.mjs +13 -0
  29. package/esm2020/services/entities/asset.mjs +43 -0
  30. package/esm2020/services/entities/base-entity.mjs +26 -0
  31. package/esm2020/services/entities/lazy-asset.mjs +73 -0
  32. package/esm2020/services/entities/progress.mjs +176 -0
  33. package/esm2020/services/entities/temp-asset.mjs +45 -0
  34. package/esm2020/services/fixtures.mjs +26 -0
  35. package/esm2020/services/gallery-cache.mjs +27 -0
  36. package/esm2020/services/gallery-image.mjs +37 -0
  37. package/esm2020/services/gallery.mjs +116 -0
  38. package/esm2020/services/id-generator.mjs +42 -0
  39. package/esm2020/services/job-manager.mjs +187 -0
  40. package/esm2020/services/lazy-assets.mjs +48 -0
  41. package/esm2020/services/logger.mjs +21 -0
  42. package/esm2020/services/mail-sender.mjs +36 -0
  43. package/esm2020/services/memory-cache.mjs +57 -0
  44. package/esm2020/services/mongo-connector.mjs +37 -0
  45. package/esm2020/services/open-api.mjs +114 -0
  46. package/esm2020/services/progresses.mjs +86 -0
  47. package/esm2020/services/template-renderer.mjs +64 -0
  48. package/esm2020/services/terminal-manager.mjs +77 -0
  49. package/esm2020/services/token-generator.mjs +35 -0
  50. package/esm2020/services/translation-provider.mjs +34 -0
  51. package/esm2020/services/translator.mjs +63 -0
  52. package/esm2020/services/user-manager.mjs +27 -0
  53. package/esm2020/socket-controllers/progress.controller.mjs +52 -0
  54. package/esm2020/socket-controllers/terminal.controller.mjs +48 -0
  55. package/esm2020/socket-controllers/terminal.mjs +85 -0
  56. package/esm2020/socket-middlewares/compression.middleware.mjs +14 -0
  57. package/esm2020/static.mjs +23 -0
  58. package/esm2020/utilities/decorators.mjs +52 -0
  59. package/esm2020/utilities/di-container.mjs +83 -0
  60. package/esm2020/utilities/empty-job.mjs +13 -0
  61. package/esm2020/utilities/lazy-asset-generator.mjs +35 -0
  62. package/esm2020/utilities/mongoose.mjs +216 -0
  63. package/esm2020/utils.mjs +693 -0
  64. package/esm2020/validators.mjs +46 -0
  65. package/fesm2015/{stemy-backend.js → stemy-backend.mjs} +1638 -2403
  66. package/fesm2015/stemy-backend.mjs.map +1 -0
  67. package/fesm2020/stemy-backend.mjs +4202 -0
  68. package/fesm2020/stemy-backend.mjs.map +1 -0
  69. package/{stemy-backend.d.ts → index.d.ts} +1 -0
  70. package/package.json +35 -23
  71. package/public_api.d.ts +2 -2
  72. package/rest-controllers/terminal-styles.d.ts +2 -0
  73. package/rest-controllers/terminal.controller.d.ts +2 -0
  74. package/services/assets.d.ts +1 -0
  75. package/services/entities/asset.d.ts +1 -0
  76. package/services/entities/temp-asset.d.ts +1 -0
  77. package/services/fixtures.d.ts +2 -2
  78. package/utils.d.ts +3 -0
  79. package/bundles/stemy-backend.umd.js +0 -7553
  80. package/bundles/stemy-backend.umd.js.map +0 -1
  81. package/esm2015/common-types.js +0 -20
  82. package/esm2015/public_api.js +0 -380
  83. package/esm2015/requests/asset-image-params.js +0 -70
  84. package/esm2015/rest-controllers/assets.controller.js +0 -180
  85. package/esm2015/rest-controllers/auth.controller.js +0 -76
  86. package/esm2015/rest-controllers/gallery.controller.js +0 -37
  87. package/esm2015/rest-controllers/progresses.controller.js +0 -57
  88. package/esm2015/rest-controllers/terminal.controller.js +0 -151
  89. package/esm2015/rest-middlewares/container.middleware.js +0 -32
  90. package/esm2015/rest-middlewares/error-handler.middleware.js +0 -99
  91. package/esm2015/rest-middlewares/language.middleware.js +0 -28
  92. package/esm2015/rest-middlewares/request-ended.middleware.js +0 -33
  93. package/esm2015/rest-middlewares/request-started.middleware.js +0 -32
  94. package/esm2015/rest-openapi.js +0 -44
  95. package/esm2015/services/asset-processor.js +0 -108
  96. package/esm2015/services/asset-resolver.js +0 -53
  97. package/esm2015/services/assets.js +0 -181
  98. package/esm2015/services/backend-provider.js +0 -32
  99. package/esm2015/services/cache-processor.js +0 -34
  100. package/esm2015/services/cache.js +0 -93
  101. package/esm2015/services/endpoint-provider.js +0 -29
  102. package/esm2015/services/entities/asset.js +0 -60
  103. package/esm2015/services/entities/base-entity.js +0 -37
  104. package/esm2015/services/entities/lazy-asset.js +0 -90
  105. package/esm2015/services/entities/progress.js +0 -213
  106. package/esm2015/services/entities/temp-asset.js +0 -64
  107. package/esm2015/services/fixtures.js +0 -45
  108. package/esm2015/services/gallery-cache.js +0 -36
  109. package/esm2015/services/gallery-image.js +0 -48
  110. package/esm2015/services/gallery.js +0 -138
  111. package/esm2015/services/id-generator.js +0 -63
  112. package/esm2015/services/job-manager.js +0 -221
  113. package/esm2015/services/lazy-assets.js +0 -83
  114. package/esm2015/services/logger.js +0 -31
  115. package/esm2015/services/mail-sender.js +0 -58
  116. package/esm2015/services/memory-cache.js +0 -84
  117. package/esm2015/services/mongo-connector.js +0 -58
  118. package/esm2015/services/open-api.js +0 -140
  119. package/esm2015/services/progresses.js +0 -118
  120. package/esm2015/services/template-renderer.js +0 -88
  121. package/esm2015/services/terminal-manager.js +0 -94
  122. package/esm2015/services/token-generator.js +0 -55
  123. package/esm2015/services/translation-provider.js +0 -54
  124. package/esm2015/services/translator.js +0 -84
  125. package/esm2015/services/user-manager.js +0 -47
  126. package/esm2015/socket-controllers/progress.controller.js +0 -82
  127. package/esm2015/socket-controllers/terminal.controller.js +0 -83
  128. package/esm2015/socket-controllers/terminal.js +0 -98
  129. package/esm2015/socket-middlewares/compression.middleware.js +0 -19
  130. package/esm2015/static.js +0 -33
  131. package/esm2015/utilities/clear-command.js +0 -33
  132. package/esm2015/utilities/decorators.js +0 -54
  133. package/esm2015/utilities/di-container.js +0 -84
  134. package/esm2015/utilities/empty-job.js +0 -29
  135. package/esm2015/utilities/lazy-asset-generator.js +0 -46
  136. package/esm2015/utilities/mongoose.js +0 -225
  137. package/esm2015/utils.js +0 -699
  138. package/esm2015/validators.js +0 -51
  139. package/fesm2015/stemy-backend.js.map +0 -1
  140. package/rest-openapi.d.ts +0 -3
  141. package/stemy-backend.metadata.json +0 -1
  142. /package/{utilities → commands}/clear-command.d.ts +0 -0
  143. /package/{esm2015/stemy-backend.js → esm2020/stemy-backend.mjs} +0 -0
  144. /package/{esm2015/utilities/base-doc.js → esm2020/utilities/base-doc.mjs} +0 -0
  145. /package/{esm2015/utilities/tree.js → esm2020/utilities/tree.mjs} +0 -0
@@ -0,0 +1,22 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable } from "tsyringe";
3
+ import { Middleware } from "routing-controllers";
4
+ import { ObjectId } from "bson";
5
+ import moment from "moment";
6
+ let RequestStartedMiddleware = class RequestStartedMiddleware {
7
+ constructor(logger) {
8
+ this.logger = logger;
9
+ }
10
+ use(request, response, next) {
11
+ request.id = new ObjectId().toHexString();
12
+ request.started = moment();
13
+ this.logger.log("request-time", `Request '${request.id}' started at: ${request.started.format("YYYY-MM-DD HH:mm:ss")} [${request.method}] ${request.url}`);
14
+ next(null);
15
+ }
16
+ };
17
+ RequestStartedMiddleware = __decorate([
18
+ injectable(),
19
+ Middleware({ type: "before" })
20
+ ], RequestStartedMiddleware);
21
+ export { RequestStartedMiddleware };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1zdGFydGVkLm1pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzdC1taWRkbGV3YXJlcy9yZXF1ZXN0LXN0YXJ0ZWQubWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQTZCLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBTXJCLElBQU0sd0JBQXdCLEdBQTlCLE1BQU0sd0JBQXdCO0lBRWpDLFlBQXFCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ25DLENBQUM7SUFFRCxHQUFHLENBQUMsT0FBaUIsRUFBRSxRQUFhLEVBQUUsSUFBd0I7UUFDMUQsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ1gsY0FBYyxFQUNkLFlBQVksT0FBTyxDQUFDLEVBQUUsaUJBQWlCLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQzVILENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDO0NBRUosQ0FBQTtBQWZZLHdCQUF3QjtJQUZwQyxVQUFVLEVBQUU7SUFDWixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7R0FDbEIsd0JBQXdCLENBZXBDO1NBZlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtFeHByZXNzTWlkZGxld2FyZUludGVyZmFjZSwgTWlkZGxld2FyZX0gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7SVJlcXVlc3R9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dnZXJcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQE1pZGRsZXdhcmUoeyB0eXBlOiBcImJlZm9yZVwiIH0pXHJcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0U3RhcnRlZE1pZGRsZXdhcmUgaW1wbGVtZW50cyBFeHByZXNzTWlkZGxld2FyZUludGVyZmFjZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICB1c2UocmVxdWVzdDogSVJlcXVlc3QsIHJlc3BvbnNlOiBhbnksIG5leHQ6IChlcnI/OiBhbnkpID0+IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHJlcXVlc3QuaWQgPSBuZXcgT2JqZWN0SWQoKS50b0hleFN0cmluZygpO1xyXG4gICAgICAgIHJlcXVlc3Quc3RhcnRlZCA9IG1vbWVudCgpO1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcclxuICAgICAgICAgICAgXCJyZXF1ZXN0LXRpbWVcIixcclxuICAgICAgICAgICAgYFJlcXVlc3QgJyR7cmVxdWVzdC5pZH0nIHN0YXJ0ZWQgYXQ6ICR7cmVxdWVzdC5zdGFydGVkLmZvcm1hdChcIllZWVktTU0tREQgSEg6bW06c3NcIil9IFske3JlcXVlc3QubWV0aG9kfV0gJHtyZXF1ZXN0LnVybH1gXHJcbiAgICAgICAgKTtcclxuICAgICAgICBuZXh0KG51bGwpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,90 @@
1
+ var AssetProcessor_1;
2
+ import { __decorate } from "tslib";
3
+ import { injectable, Lifecycle, scoped } from "tsyringe";
4
+ import fontKit_ from "fontkit";
5
+ import sharp_ from "sharp";
6
+ const sharp = sharp_;
7
+ const fontKit = fontKit_;
8
+ const fontTypes = [
9
+ "application/font-woff", "application/font-woff2", "application/x-font-opentype", "application/x-font-truetype", "application/x-font-datafork",
10
+ "font/woff", "font/woff2", "font/otf", "font/ttf", "font/datafork"
11
+ ];
12
+ const imageTypes = ["image/jpeg", "image/jpg", "image/png", "image/svg+xml"];
13
+ const fontProps = [
14
+ "postscriptName", "fullName", "familyName", "subfamilyName",
15
+ "copyright", "version", "unitsPerEm", "ascent", "descent", "lineGap",
16
+ "underlinePosition", "underlineThickness", "italicAngle", "capHeight",
17
+ "xHeight", "numGlyphs", "characterSet", "availableFeatures"
18
+ ];
19
+ let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
20
+ static extractFontFormat(font) {
21
+ const name = font.constructor.name;
22
+ const tag = font["directory"].tag;
23
+ switch (name) {
24
+ case "TTFFont":
25
+ return tag === "OTTO" ? "opentype" : "truetype";
26
+ case "WOFF2Font":
27
+ return "woff2";
28
+ case "WOFFFont":
29
+ return "woff";
30
+ case "DFont":
31
+ return "datafork";
32
+ }
33
+ return null;
34
+ }
35
+ static isImage(contentType) {
36
+ return imageTypes.indexOf(contentType) >= 0;
37
+ }
38
+ static async copyImageMeta(buffer, metadata, fileType) {
39
+ if (fileType.mime === "image/svg+xml") {
40
+ const match = /<svg([^<>]+)>/gi.exec(buffer.toString("utf8"));
41
+ if (match && match.length > 1) {
42
+ const attrs = match[1].match(/([a-z]+)="([^"]+)"/gi);
43
+ attrs.forEach(attr => {
44
+ if (attr.length < 5)
45
+ return;
46
+ const [name, value] = attr.split("=");
47
+ const val = value.replace(/"/gi, "");
48
+ metadata[name] = isNaN(val) ? val : Number(val);
49
+ });
50
+ if (metadata.viewBox && (isNaN(metadata.width) || isNaN(metadata.height))) {
51
+ const parts = metadata.viewBox.split(" ");
52
+ metadata.width = Number(parts[0]) + Number(parts[2]);
53
+ metadata.height = Number(parts[1]) + Number(parts[3]);
54
+ }
55
+ if (!isNaN(metadata.width) && !isNaN(metadata.height)) {
56
+ metadata.svgSize = { x: metadata.width, y: metadata.height };
57
+ }
58
+ }
59
+ return buffer;
60
+ }
61
+ const output = await sharp(buffer).rotate().toBuffer({ resolveWithObject: true });
62
+ Object.assign(metadata, output.info);
63
+ return output.data;
64
+ }
65
+ static isFont(contentType) {
66
+ return fontTypes.indexOf(contentType) >= 0;
67
+ }
68
+ static copyFontMeta(buffer, metadata) {
69
+ const font = fontKit.create(buffer);
70
+ metadata.format = AssetProcessor_1.extractFontFormat(font);
71
+ fontProps.forEach(prop => {
72
+ metadata[prop] = font[prop];
73
+ });
74
+ }
75
+ async process(buffer, metadata, fileType) {
76
+ if (AssetProcessor_1.isImage(fileType.mime)) {
77
+ buffer = await AssetProcessor_1.copyImageMeta(buffer, metadata, fileType);
78
+ }
79
+ if (AssetProcessor_1.isFont(fileType.mime)) {
80
+ AssetProcessor_1.copyFontMeta(buffer, metadata);
81
+ }
82
+ return buffer;
83
+ }
84
+ };
85
+ AssetProcessor = AssetProcessor_1 = __decorate([
86
+ injectable(),
87
+ scoped(Lifecycle.ContainerScoped)
88
+ ], AssetProcessor);
89
+ export { AssetProcessor };
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RCxPQUFPLFFBQWdCLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sTUFBTSxNQUFNLE9BQU8sQ0FBQztBQUczQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDckIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBRXpCLE1BQU0sU0FBUyxHQUFHO0lBQ2QsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCO0lBQzlJLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxlQUFlO0NBQ3JFLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sU0FBUyxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlO0lBQzNELFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUNwRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUNyRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7Q0FDOUQsQ0FBQztBQUlLLElBQU0sY0FBYyxzQkFBcEIsTUFBTSxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFVO1FBQy9CLE1BQU0sSUFBSSxHQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFZLElBQUks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QUNyQixjQUFjLENBc0UxQjtTQXRFWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBMaWZlY3ljbGUsIHNjb3BlZH0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCBmb250S2l0Xywge0ZvbnR9IGZyb20gXCJmb250a2l0XCI7XHJcbmltcG9ydCBzaGFycF8gZnJvbSBcInNoYXJwXCI7XHJcbmltcG9ydCB7Rm9udEZvcm1hdCwgSUFzc2V0TWV0YSwgSUZpbGVUeXBlfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5jb25zdCBzaGFycCA9IHNoYXJwXztcclxuY29uc3QgZm9udEtpdCA9IGZvbnRLaXRfO1xyXG5cclxuY29uc3QgZm9udFR5cGVzID0gW1xyXG4gICAgXCJhcHBsaWNhdGlvbi9mb250LXdvZmZcIiwgXCJhcHBsaWNhdGlvbi9mb250LXdvZmYyXCIsIFwiYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlXCIsIFwiYXBwbGljYXRpb24veC1mb250LXRydWV0eXBlXCIsIFwiYXBwbGljYXRpb24veC1mb250LWRhdGFmb3JrXCIsXHJcbiAgICBcImZvbnQvd29mZlwiLCBcImZvbnQvd29mZjJcIiwgXCJmb250L290ZlwiLCBcImZvbnQvdHRmXCIsIFwiZm9udC9kYXRhZm9ya1wiXHJcbl07XHJcblxyXG5jb25zdCBpbWFnZVR5cGVzID0gW1wiaW1hZ2UvanBlZ1wiLCBcImltYWdlL2pwZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL3N2Zyt4bWxcIl07XHJcblxyXG5jb25zdCBmb250UHJvcHMgPSBbXHJcbiAgICBcInBvc3RzY3JpcHROYW1lXCIsIFwiZnVsbE5hbWVcIiwgXCJmYW1pbHlOYW1lXCIsIFwic3ViZmFtaWx5TmFtZVwiLFxyXG4gICAgXCJjb3B5cmlnaHRcIiwgXCJ2ZXJzaW9uXCIsIFwidW5pdHNQZXJFbVwiLCBcImFzY2VudFwiLCBcImRlc2NlbnRcIiwgXCJsaW5lR2FwXCIsXHJcbiAgICBcInVuZGVybGluZVBvc2l0aW9uXCIsIFwidW5kZXJsaW5lVGhpY2tuZXNzXCIsIFwiaXRhbGljQW5nbGVcIiwgXCJjYXBIZWlnaHRcIixcclxuICAgIFwieEhlaWdodFwiLCBcIm51bUdseXBoc1wiLCBcImNoYXJhY3RlclNldFwiLCBcImF2YWlsYWJsZUZlYXR1cmVzXCJcclxuXTtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgQXNzZXRQcm9jZXNzb3Ige1xyXG5cclxuICAgIHN0YXRpYyBleHRyYWN0Rm9udEZvcm1hdChmb250OiBGb250KTogRm9udEZvcm1hdCB7XHJcbiAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gZm9udC5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICAgIGNvbnN0IHRhZzogc3RyaW5nICA9IGZvbnRbXCJkaXJlY3RvcnlcIl0udGFnO1xyXG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiVFRGRm9udFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhZyA9PT0gXCJPVFRPXCIgPyBcIm9wZW50eXBlXCIgOiBcInRydWV0eXBlXCI7XHJcbiAgICAgICAgICAgIGNhc2UgXCJXT0ZGMkZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIndvZmYyXCI7XHJcbiAgICAgICAgICAgIGNhc2UgXCJXT0ZGRm9udFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwid29mZlwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiREZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImRhdGFmb3JrXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ltYWdlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaW1hZ2VUeXBlcy5pbmRleE9mKGNvbnRlbnRUeXBlKSA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhc3luYyBjb3B5SW1hZ2VNZXRhKGJ1ZmZlcjogQnVmZmVyLCBtZXRhZGF0YTogSUFzc2V0TWV0YSwgZmlsZVR5cGU6IElGaWxlVHlwZSk6IFByb21pc2U8QnVmZmVyPiB7XHJcbiAgICAgICAgaWYgKGZpbGVUeXBlLm1pbWUgPT09IFwiaW1hZ2Uvc3ZnK3htbFwiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gLzxzdmcoW148Pl0rKT4vZ2kuZXhlYyhidWZmZXIudG9TdHJpbmcoXCJ1dGY4XCIpKTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJzID0gbWF0Y2hbMV0ubWF0Y2goLyhbYS16XSspPVwiKFteXCJdKylcIi9naSk7XHJcbiAgICAgICAgICAgICAgICBhdHRycy5mb3JFYWNoKGF0dHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLmxlbmd0aCA8IDUpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gYXR0ci5zcGxpdChcIj1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsID0gdmFsdWUucmVwbGFjZSgvXCIvZ2ksIFwiXCIpIGFzIGFueTtcclxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVtuYW1lXSA9IGlzTmFOKHZhbCkgPyB2YWwgOiBOdW1iZXIodmFsKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLnZpZXdCb3ggJiYgKGlzTmFOKG1ldGFkYXRhLndpZHRoKSB8fCBpc05hTihtZXRhZGF0YS5oZWlnaHQpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gKG1ldGFkYXRhLnZpZXdCb3ggYXMgc3RyaW5nKS5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEud2lkdGggPSBOdW1iZXIocGFydHNbMF0pICsgTnVtYmVyKHBhcnRzWzJdKTtcclxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5oZWlnaHQgPSBOdW1iZXIocGFydHNbMV0pICsgTnVtYmVyKHBhcnRzWzNdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4obWV0YWRhdGEud2lkdGgpICYmICFpc05hTihtZXRhZGF0YS5oZWlnaHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuc3ZnU2l6ZSA9IHt4OiBtZXRhZGF0YS53aWR0aCwgeTogbWV0YWRhdGEuaGVpZ2h0fTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBzaGFycChidWZmZXIpLnJvdGF0ZSgpLnRvQnVmZmVyKHtyZXNvbHZlV2l0aE9iamVjdDogdHJ1ZX0pO1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24obWV0YWRhdGEsIG91dHB1dC5pbmZvKTtcclxuICAgICAgICByZXR1cm4gb3V0cHV0LmRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRm9udChjb250ZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGZvbnRUeXBlcy5pbmRleE9mKGNvbnRlbnRUeXBlKSA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjb3B5Rm9udE1ldGEoYnVmZmVyOiBCdWZmZXIsIG1ldGFkYXRhOiBJQXNzZXRNZXRhKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZm9udDogRm9udCA9IGZvbnRLaXQuY3JlYXRlKGJ1ZmZlcik7XHJcbiAgICAgICAgbWV0YWRhdGEuZm9ybWF0ID0gQXNzZXRQcm9jZXNzb3IuZXh0cmFjdEZvbnRGb3JtYXQoZm9udCk7XHJcbiAgICAgICAgZm9udFByb3BzLmZvckVhY2gocHJvcCA9PiB7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhW3Byb3BdID0gZm9udFtwcm9wXTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcm9jZXNzKGJ1ZmZlcjogQnVmZmVyLCBtZXRhZGF0YTogSUFzc2V0TWV0YSwgZmlsZVR5cGU6IElGaWxlVHlwZSk6IFByb21pc2U8QnVmZmVyPiB7XHJcbiAgICAgICAgaWYgKEFzc2V0UHJvY2Vzc29yLmlzSW1hZ2UoZmlsZVR5cGUubWltZSkpIHtcclxuICAgICAgICAgICAgYnVmZmVyID0gYXdhaXQgQXNzZXRQcm9jZXNzb3IuY29weUltYWdlTWV0YShidWZmZXIsIG1ldGFkYXRhLCBmaWxlVHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBc3NldFByb2Nlc3Nvci5pc0ZvbnQoZmlsZVR5cGUubWltZSkpIHtcclxuICAgICAgICAgICAgQXNzZXRQcm9jZXNzb3IuY29weUZvbnRNZXRhKGJ1ZmZlciwgbWV0YWRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnVmZmVyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable, Lifecycle, scoped } from "tsyringe";
3
+ let AssetResolver = class AssetResolver {
4
+ constructor(assets, lazyAssets) {
5
+ this.assets = assets;
6
+ this.lazyAssets = lazyAssets;
7
+ }
8
+ async resolve(id, lazy = false) {
9
+ let asset = null;
10
+ if (lazy) {
11
+ const lazyAsset = await this.lazyAssets.read(id);
12
+ if (!lazyAsset)
13
+ return null;
14
+ return lazyAsset.loadAsset();
15
+ }
16
+ asset = await this.assets.read(id);
17
+ if (!asset) {
18
+ const lazyAsset = await this.lazyAssets.read(id);
19
+ if (!lazyAsset)
20
+ return null;
21
+ return lazyAsset.loadAsset();
22
+ }
23
+ return asset;
24
+ }
25
+ };
26
+ AssetResolver = __decorate([
27
+ injectable(),
28
+ scoped(Lifecycle.ContainerScoped)
29
+ ], AssetResolver);
30
+ export { AssetResolver };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYXNzZXQtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQU9oRCxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFhO0lBRXRCLFlBQXFCLE1BQWMsRUFBVyxVQUFzQjtRQUEvQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUVwRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFVLEVBQUUsT0FBZ0IsS0FBSztRQUMzQyxJQUFJLEtBQUssR0FBVyxJQUFJLENBQUM7UUFDekIsSUFBSSxJQUFJLEVBQUU7WUFDTixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzVCLE9BQU8sU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDNUIsT0FBTyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDaEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0osQ0FBQTtBQXJCWSxhQUFhO0lBRnpCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO0dBQ3JCLGFBQWEsQ0FxQnpCO1NBckJZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtJQXNzZXR9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtBc3NldHN9IGZyb20gXCIuL2Fzc2V0c1wiO1xyXG5pbXBvcnQge0xhenlBc3NldHN9IGZyb20gXCIuL2xhenktYXNzZXRzXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzY29wZWQoTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZClcclxuZXhwb3J0IGNsYXNzIEFzc2V0UmVzb2x2ZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGFzc2V0czogQXNzZXRzLCByZWFkb25seSBsYXp5QXNzZXRzOiBMYXp5QXNzZXRzKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlc29sdmUoaWQ6IHN0cmluZywgbGF6eTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxJQXNzZXQ+IHtcclxuICAgICAgICBsZXQgYXNzZXQ6IElBc3NldCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGxhenkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGF6eUFzc2V0ID0gYXdhaXQgdGhpcy5sYXp5QXNzZXRzLnJlYWQoaWQpO1xyXG4gICAgICAgICAgICBpZiAoIWxhenlBc3NldCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybiBsYXp5QXNzZXQubG9hZEFzc2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFzc2V0ID0gYXdhaXQgdGhpcy5hc3NldHMucmVhZChpZCk7XHJcbiAgICAgICAgaWYgKCFhc3NldCkge1xyXG4gICAgICAgICAgICBjb25zdCBsYXp5QXNzZXQgPSBhd2FpdCB0aGlzLmxhenlBc3NldHMucmVhZChpZCk7XHJcbiAgICAgICAgICAgIGlmICghbGF6eUFzc2V0KSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuIGxhenlBc3NldC5sb2FkQXNzZXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFzc2V0O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,140 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable, Lifecycle, scoped } from "tsyringe";
3
+ import { ObjectId } from "bson";
4
+ import axios from "axios";
5
+ import { bufferToStream, copyStream, streamToBuffer, fileTypeFromBuffer } from "../utils";
6
+ import { Asset } from "./entities/asset";
7
+ import { TempAsset } from "./entities/temp-asset";
8
+ let Assets = class Assets {
9
+ constructor(connector, assetProcessor) {
10
+ this.connector = connector;
11
+ this.assetProcessor = assetProcessor;
12
+ this.bucket = connector.bucket;
13
+ this.collection = connector.database?.collection("assets.files");
14
+ }
15
+ async write(stream, contentType = null, metadata = null) {
16
+ const uploadStream = copyStream(stream);
17
+ const buffer = await streamToBuffer(stream);
18
+ let fileType = { ext: "", mime: contentType };
19
+ try {
20
+ fileType = await fileTypeFromBuffer(buffer);
21
+ }
22
+ catch (e) {
23
+ if (!fileType.mime) {
24
+ throw new Error(`Can't determine mime type: ${e}`);
25
+ }
26
+ console.log(`Can't determine mime type`, e);
27
+ }
28
+ metadata = metadata || {};
29
+ return this.upload(uploadStream, fileType, metadata);
30
+ }
31
+ async writeBuffer(buffer, metadata = null, contentType = null) {
32
+ let fileType = { ext: "", mime: contentType };
33
+ try {
34
+ fileType = await fileTypeFromBuffer(buffer);
35
+ }
36
+ catch (e) {
37
+ if (!fileType.mime) {
38
+ throw `Can't determine mime type`;
39
+ }
40
+ console.log(`Can't determine mime type`, e);
41
+ }
42
+ metadata = metadata || {};
43
+ buffer = await this.assetProcessor.process(buffer, metadata, fileType);
44
+ return this.upload(bufferToStream(buffer), fileType, metadata);
45
+ }
46
+ async writeUrl(url, metadata = null) {
47
+ metadata = metadata || {};
48
+ metadata.filename = metadata.filename || url;
49
+ metadata.url = url;
50
+ metadata.uploadTime = new Date().getTime();
51
+ const oneWeek = 1000 * 3600 * 24 * 7;
52
+ const asset = await this.find({ "metadata.url": url, "metadata.uploadTime": { $gt: metadata.uploadTime - oneWeek } });
53
+ if (asset)
54
+ return asset;
55
+ const buffer = (await axios({ url, responseType: "arraybuffer" })).data;
56
+ return this.writeBuffer(buffer, metadata);
57
+ }
58
+ async download(url, contentType = null) {
59
+ let buffer = (await axios({ url, responseType: "arraybuffer" })).data;
60
+ let fileType = { ext: "", mime: contentType };
61
+ try {
62
+ fileType = await fileTypeFromBuffer(buffer);
63
+ }
64
+ catch (e) {
65
+ if (!fileType.mime) {
66
+ throw `Can't determine mime type`;
67
+ }
68
+ console.log(`Can't determine mime type`, e);
69
+ }
70
+ const metadata = {
71
+ filename: url,
72
+ extension: (fileType.ext || "").trim()
73
+ };
74
+ buffer = await this.assetProcessor.process(buffer, metadata, fileType);
75
+ return new TempAsset(buffer, url, fileType.mime, metadata);
76
+ }
77
+ async read(id) {
78
+ return !id ? null : this.find({ _id: new ObjectId(id) });
79
+ }
80
+ async find(where) {
81
+ const data = await this.collection.findOne(where);
82
+ return !data ? null : new Asset(data._id, data, this.collection, this.bucket);
83
+ }
84
+ async findMany(where) {
85
+ const cursor = this.collection.find(where);
86
+ const items = await cursor.toArray() || [];
87
+ const result = [];
88
+ for (let item of items) {
89
+ if (!item)
90
+ continue;
91
+ result.push(new Asset(item._id, item, this.collection, this.bucket));
92
+ }
93
+ return result;
94
+ }
95
+ async deleteMany(where) {
96
+ const assets = await this.findMany(where);
97
+ return Promise.all(assets.map(a => a.unlink()));
98
+ }
99
+ async unlink(id) {
100
+ const asset = await this.read(id);
101
+ if (!asset)
102
+ return null;
103
+ return asset.unlink();
104
+ }
105
+ async upload(stream, fileType, metadata) {
106
+ const contentType = fileType.mime.trim();
107
+ metadata = Object.assign({
108
+ downloadCount: 0,
109
+ firstDownload: null,
110
+ lastDownload: null
111
+ }, metadata || {});
112
+ metadata.filename = metadata.filename || new ObjectId().toHexString();
113
+ metadata.extension = (fileType.ext || "").trim();
114
+ return new Promise(((resolve, reject) => {
115
+ const uploaderStream = this.bucket.openUploadStream(metadata.filename);
116
+ stream.pipe(uploaderStream)
117
+ .on("error", error => {
118
+ reject(error.message || error);
119
+ })
120
+ .on("finish", () => {
121
+ const asset = new Asset(uploaderStream.id, {
122
+ filename: metadata.filename,
123
+ contentType,
124
+ metadata
125
+ }, this.collection, this.bucket);
126
+ asset.save().then(() => {
127
+ resolve(asset);
128
+ }, error => {
129
+ reject(error.message || error);
130
+ });
131
+ });
132
+ }));
133
+ }
134
+ };
135
+ Assets = __decorate([
136
+ injectable(),
137
+ scoped(Lifecycle.ContainerScoped)
138
+ ], Assets);
139
+ export { Assets };
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHOUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUl4RixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBSXpDLElBQU0sTUFBTSxHQUFaLE1BQU0sTUFBTTtJQUtmLFlBQXFCLFNBQXlCLEVBQVcsY0FBOEI7UUFBbEUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBVyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbkYsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBZ0IsRUFBRSxjQUFzQixJQUFJLEVBQUUsV0FBdUIsSUFBSTtRQUNqRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxRQUFRLEdBQUcsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQWMsQ0FBQztRQUN6RCxJQUFJO1lBQ0EsUUFB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Q0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDSixDQUFBO0FBcElZLE1BQU07SUFGbEIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7R0FDckIsTUFBTSxDQW9JbEI7U0FwSVksTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwic3RyZWFtXCI7XHJcbmltcG9ydCB7T2JqZWN0SWR9IGZyb20gXCJic29uXCI7XHJcbmltcG9ydCB7Q29sbGVjdGlvbiwgR3JpZEZTQnVja2V0fSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge0ZpbHRlclF1ZXJ5fSBmcm9tIFwibW9uZ29vc2VcIjtcclxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xyXG5cclxuaW1wb3J0IHtidWZmZXJUb1N0cmVhbSwgY29weVN0cmVhbSwgc3RyZWFtVG9CdWZmZXIsIGZpbGVUeXBlRnJvbUJ1ZmZlcn0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7SUFzc2V0LCBJQXNzZXRNZXRhLCBJRmlsZVR5cGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtNb25nb0Nvbm5lY3Rvcn0gZnJvbSBcIi4vbW9uZ28tY29ubmVjdG9yXCI7XHJcbmltcG9ydCB7QXNzZXRQcm9jZXNzb3J9IGZyb20gXCIuL2Fzc2V0LXByb2Nlc3NvclwiO1xyXG5pbXBvcnQge0Fzc2V0fSBmcm9tIFwiLi9lbnRpdGllcy9hc3NldFwiO1xyXG5pbXBvcnQge1RlbXBBc3NldH0gZnJvbSBcIi4vZW50aXRpZXMvdGVtcC1hc3NldFwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBBc3NldHMge1xyXG5cclxuICAgIHJlYWRvbmx5IGJ1Y2tldDogR3JpZEZTQnVja2V0O1xyXG4gICAgcmVhZG9ubHkgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxQYXJ0aWFsPElBc3NldD4+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbm5lY3RvcjogTW9uZ29Db25uZWN0b3IsIHJlYWRvbmx5IGFzc2V0UHJvY2Vzc29yOiBBc3NldFByb2Nlc3Nvcikge1xyXG4gICAgICAgIHRoaXMuYnVja2V0ID0gY29ubmVjdG9yLmJ1Y2tldDtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBjb25uZWN0b3IuZGF0YWJhc2U/LmNvbGxlY3Rpb24oXCJhc3NldHMuZmlsZXNcIik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgd3JpdGUoc3RyZWFtOiBSZWFkYWJsZSwgY29udGVudFR5cGU6IHN0cmluZyA9IG51bGwsIG1ldGFkYXRhOiBJQXNzZXRNZXRhID0gbnVsbCk6IFByb21pc2U8SUFzc2V0PiB7XHJcbiAgICAgICAgY29uc3QgdXBsb2FkU3RyZWFtID0gY29weVN0cmVhbShzdHJlYW0pO1xyXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHN0cmVhbVRvQnVmZmVyKHN0cmVhbSk7XHJcbiAgICAgICAgbGV0IGZpbGVUeXBlID0ge2V4dDogXCJcIiwgbWltZTogY29udGVudFR5cGV9IGFzIElGaWxlVHlwZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmaWxlVHlwZSA9IGF3YWl0IGZpbGVUeXBlRnJvbUJ1ZmZlcihidWZmZXIpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKCFmaWxlVHlwZS5taW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGRldGVybWluZSBtaW1lIHR5cGU6ICR7ZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FuJ3QgZGV0ZXJtaW5lIG1pbWUgdHlwZWAsIGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXRhZGF0YSA9IG1ldGFkYXRhIHx8IHt9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZCh1cGxvYWRTdHJlYW0sIGZpbGVUeXBlLCBtZXRhZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgd3JpdGVCdWZmZXIoYnVmZmVyOiBCdWZmZXIsIG1ldGFkYXRhOiBJQXNzZXRNZXRhID0gbnVsbCwgY29udGVudFR5cGU6IHN0cmluZyA9IG51bGwpOiBQcm9taXNlPElBc3NldD4ge1xyXG4gICAgICAgIGxldCBmaWxlVHlwZSA9IHtleHQ6IFwiXCIsIG1pbWU6IGNvbnRlbnRUeXBlfSBhcyBJRmlsZVR5cGU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZmlsZVR5cGUgPSBhd2FpdCBmaWxlVHlwZUZyb21CdWZmZXIoYnVmZmVyKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmICghZmlsZVR5cGUubWltZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgYENhbid0IGRldGVybWluZSBtaW1lIHR5cGVgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBkZXRlcm1pbmUgbWltZSB0eXBlYCwgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1ldGFkYXRhID0gbWV0YWRhdGEgfHwge307XHJcbiAgICAgICAgYnVmZmVyID0gYXdhaXQgdGhpcy5hc3NldFByb2Nlc3Nvci5wcm9jZXNzKGJ1ZmZlciwgbWV0YWRhdGEsIGZpbGVUeXBlKTtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWQoYnVmZmVyVG9TdHJlYW0oYnVmZmVyKSwgZmlsZVR5cGUsIG1ldGFkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB3cml0ZVVybCh1cmw6IHN0cmluZywgbWV0YWRhdGE6IElBc3NldE1ldGEgPSBudWxsKTogUHJvbWlzZTxJQXNzZXQ+IHtcclxuICAgICAgICBtZXRhZGF0YSA9IG1ldGFkYXRhIHx8IHt9O1xyXG4gICAgICAgIG1ldGFkYXRhLmZpbGVuYW1lID0gbWV0YWRhdGEuZmlsZW5hbWUgfHwgdXJsO1xyXG4gICAgICAgIG1ldGFkYXRhLnVybCA9IHVybDtcclxuICAgICAgICBtZXRhZGF0YS51cGxvYWRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgY29uc3Qgb25lV2VlayA9IDEwMDAgKiAzNjAwICogMjQgKiA3O1xyXG4gICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgdGhpcy5maW5kKHtcIm1ldGFkYXRhLnVybFwiOiB1cmwsIFwibWV0YWRhdGEudXBsb2FkVGltZVwiOiB7JGd0OiBtZXRhZGF0YS51cGxvYWRUaW1lIC0gb25lV2Vla319KTtcclxuICAgICAgICBpZiAoYXNzZXQpIHJldHVybiBhc3NldDtcclxuICAgICAgICBjb25zdCBidWZmZXIgPSAoYXdhaXQgYXhpb3MoeyB1cmwsIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0pKS5kYXRhIGFzIEJ1ZmZlcjtcclxuICAgICAgICByZXR1cm4gdGhpcy53cml0ZUJ1ZmZlcihidWZmZXIsIG1ldGFkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZCh1cmw6IHN0cmluZywgY29udGVudFR5cGU6IHN0cmluZyA9IG51bGwpOiBQcm9taXNlPElBc3NldD4ge1xyXG4gICAgICAgIGxldCBidWZmZXIgPSAoYXdhaXQgYXhpb3MoeyB1cmwsIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0pKS5kYXRhIGFzIEJ1ZmZlcjtcclxuICAgICAgICBsZXQgZmlsZVR5cGUgPSB7ZXh0OiBcIlwiLCBtaW1lOiBjb250ZW50VHlwZX0gYXMgSUZpbGVUeXBlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGZpbGVUeXBlID0gYXdhaXQgZmlsZVR5cGVGcm9tQnVmZmVyKGJ1ZmZlcik7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBpZiAoIWZpbGVUeXBlLm1pbWUpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGBDYW4ndCBkZXRlcm1pbmUgbWltZSB0eXBlYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FuJ3QgZGV0ZXJtaW5lIG1pbWUgdHlwZWAsIGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtZXRhZGF0YTogSUFzc2V0TWV0YSA9IHtcclxuICAgICAgICAgICAgZmlsZW5hbWU6IHVybCxcclxuICAgICAgICAgICAgZXh0ZW5zaW9uOiAoZmlsZVR5cGUuZXh0IHx8IFwiXCIpLnRyaW0oKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnVmZmVyID0gYXdhaXQgdGhpcy5hc3NldFByb2Nlc3Nvci5wcm9jZXNzKGJ1ZmZlciwgbWV0YWRhdGEsIGZpbGVUeXBlKTtcclxuICAgICAgICByZXR1cm4gbmV3IFRlbXBBc3NldChidWZmZXIsIHVybCwgZmlsZVR5cGUubWltZSwgbWV0YWRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlYWQoaWQ6IHN0cmluZyk6IFByb21pc2U8SUFzc2V0PiB7XHJcbiAgICAgICAgcmV0dXJuICFpZCA/IG51bGwgOiB0aGlzLmZpbmQoe19pZDogbmV3IE9iamVjdElkKGlkKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmQod2hlcmU6IEZpbHRlclF1ZXJ5PElBc3NldD4pOiBQcm9taXNlPElBc3NldD4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uZmluZE9uZSh3aGVyZSk7XHJcbiAgICAgICAgcmV0dXJuICFkYXRhID8gbnVsbCA6IG5ldyBBc3NldChkYXRhLl9pZCwgZGF0YSwgdGhpcy5jb2xsZWN0aW9uLCB0aGlzLmJ1Y2tldCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmluZE1hbnkod2hlcmU6IEZpbHRlclF1ZXJ5PElBc3NldD4pOiBQcm9taXNlPFJlYWRvbmx5QXJyYXk8SUFzc2V0Pj4ge1xyXG4gICAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuY29sbGVjdGlvbi5maW5kKHdoZXJlKTtcclxuICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGN1cnNvci50b0FycmF5KCkgfHwgW107XHJcbiAgICAgICAgY29uc3QgcmVzdWx0OiBJQXNzZXRbXSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgICAgICAgaWYgKCFpdGVtKSBjb250aW51ZTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IEFzc2V0KGl0ZW0uX2lkLCBpdGVtLCB0aGlzLmNvbGxlY3Rpb24sIHRoaXMuYnVja2V0KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlTWFueSh3aGVyZTogRmlsdGVyUXVlcnk8SUFzc2V0Pik6IFByb21pc2U8UmVhZG9ubHlBcnJheTxzdHJpbmc+PiB7XHJcbiAgICAgICAgY29uc3QgYXNzZXRzID0gYXdhaXQgdGhpcy5maW5kTWFueSh3aGVyZSk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGFzc2V0cy5tYXAoYSA9PiBhLnVubGluaygpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saW5rKGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgdGhpcy5yZWFkKGlkKTtcclxuICAgICAgICBpZiAoIWFzc2V0KSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gYXNzZXQudW5saW5rKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIHVwbG9hZChzdHJlYW06IFJlYWRhYmxlLCBmaWxlVHlwZTogSUZpbGVUeXBlLCBtZXRhZGF0YTogSUFzc2V0TWV0YSk6IFByb21pc2U8SUFzc2V0PiB7XHJcbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBmaWxlVHlwZS5taW1lLnRyaW0oKTtcclxuICAgICAgICBtZXRhZGF0YSA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBkb3dubG9hZENvdW50OiAwLFxyXG4gICAgICAgICAgICBmaXJzdERvd25sb2FkOiBudWxsLFxyXG4gICAgICAgICAgICBsYXN0RG93bmxvYWQ6IG51bGxcclxuICAgICAgICB9LCBtZXRhZGF0YSB8fCB7fSk7XHJcbiAgICAgICAgbWV0YWRhdGEuZmlsZW5hbWUgPSBtZXRhZGF0YS5maWxlbmFtZSB8fCBuZXcgT2JqZWN0SWQoKS50b0hleFN0cmluZygpO1xyXG4gICAgICAgIG1ldGFkYXRhLmV4dGVuc2lvbiA9IChmaWxlVHlwZS5leHQgfHwgXCJcIikudHJpbSgpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJQXNzZXQ+KCgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVyU3RyZWFtID0gdGhpcy5idWNrZXQub3BlblVwbG9hZFN0cmVhbShtZXRhZGF0YS5maWxlbmFtZSk7XHJcbiAgICAgICAgICAgIHN0cmVhbS5waXBlKHVwbG9hZGVyU3RyZWFtKVxyXG4gICAgICAgICAgICAgICAgLm9uKFwiZXJyb3JcIiwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAub24oXCJmaW5pc2hcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzc2V0ID0gbmV3IEFzc2V0KHVwbG9hZGVyU3RyZWFtLmlkIGFzIE9iamVjdElkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBtZXRhZGF0YS5maWxlbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5jb2xsZWN0aW9uLCB0aGlzLmJ1Y2tldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzZXQuc2F2ZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGFzc2V0KTtcclxuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { __decorate } from "tslib";
2
+ import { createServer } from "http";
3
+ import express_ from "express";
4
+ import { singleton } from "tsyringe";
5
+ import { Server as SocketServer } from "socket.io";
6
+ const express = express_;
7
+ let BackendProvider = class BackendProvider {
8
+ constructor() {
9
+ this.express = express();
10
+ this.express.set("trust proxy", true);
11
+ this.server = createServer(this.express);
12
+ }
13
+ get io() {
14
+ this.ioServer = this.ioServer || new SocketServer(this.server, { path: "/socket" });
15
+ return this.ioServer;
16
+ }
17
+ };
18
+ BackendProvider = __decorate([
19
+ singleton()
20
+ ], BackendProvider);
21
+ export { BackendProvider };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9iYWNrZW5kLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFTLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sUUFBbUIsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUMsTUFBTSxJQUFJLFlBQVksRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVqRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFHbEIsSUFBTSxlQUFlLEdBQXJCLE1BQU0sZUFBZTtJQVl4QjtRQUNJLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBWEQsSUFBSSxFQUFFO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztRQUNsRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztDQVNKLENBQUE7QUFqQlksZUFBZTtJQUQzQixTQUFTLEVBQUU7R0FDQyxlQUFlLENBaUIzQjtTQWpCWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVTZXJ2ZXIsIFNlcnZlcn0gZnJvbSBcImh0dHBcIjtcclxuaW1wb3J0IGV4cHJlc3NfLCB7RXhwcmVzc30gZnJvbSBcImV4cHJlc3NcIjtcclxuaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge1NlcnZlciBhcyBTb2NrZXRTZXJ2ZXJ9IGZyb20gXCJzb2NrZXQuaW9cIjtcclxuXHJcbmNvbnN0IGV4cHJlc3MgPSBleHByZXNzXztcclxuXHJcbkBzaW5nbGV0b24oKVxyXG5leHBvcnQgY2xhc3MgQmFja2VuZFByb3ZpZGVyIHtcclxuXHJcbiAgICByZWFkb25seSBleHByZXNzOiBFeHByZXNzO1xyXG4gICAgcmVhZG9ubHkgc2VydmVyOiBTZXJ2ZXI7XHJcblxyXG4gICAgZ2V0IGlvKCk6IFNvY2tldFNlcnZlciB7XHJcbiAgICAgICAgdGhpcy5pb1NlcnZlciA9IHRoaXMuaW9TZXJ2ZXIgfHwgbmV3IFNvY2tldFNlcnZlcih0aGlzLnNlcnZlciwge3BhdGg6IFwiL3NvY2tldFwifSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW9TZXJ2ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGlvU2VydmVyOiBTb2NrZXRTZXJ2ZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5leHByZXNzID0gZXhwcmVzcygpO1xyXG4gICAgICAgIHRoaXMuZXhwcmVzcy5zZXQoXCJ0cnVzdCBwcm94eVwiLCB0cnVlKTtcclxuICAgICAgICB0aGlzLnNlcnZlciA9IGNyZWF0ZVNlcnZlcih0aGlzLmV4cHJlc3MpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable, scoped, Lifecycle } from "tsyringe";
3
+ let CacheProcessor = class CacheProcessor {
4
+ async serialize(data) {
5
+ return data;
6
+ }
7
+ async deserialize(data) {
8
+ return data;
9
+ }
10
+ };
11
+ CacheProcessor = __decorate([
12
+ injectable(),
13
+ scoped(Lifecycle.ContainerScoped)
14
+ ], CacheProcessor);
15
+ export { CacheProcessor };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBSWhELElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWM7SUFDdkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFTO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKLENBQUE7QUFSWSxjQUFjO0lBRjFCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO0dBQ3JCLGNBQWMsQ0FRMUI7U0FSWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBzY29wZWQsIExpZmVjeWNsZX0gZnJvbSBcInRzeXJpbmdlXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzY29wZWQoTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZClcclxuZXhwb3J0IGNsYXNzIENhY2hlUHJvY2Vzc29yIHtcclxuICAgIGFzeW5jIHNlcmlhbGl6ZShkYXRhOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlc2VyaWFsaXplKGRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,62 @@
1
+ import { __decorate } from "tslib";
2
+ import { singleton } from "tsyringe";
3
+ let Cache = class Cache {
4
+ constructor(connector, config, cacheProcessor) {
5
+ this.connector = connector;
6
+ this.config = config;
7
+ this.cacheProcessor = cacheProcessor;
8
+ }
9
+ async prepare() {
10
+ if (this.collection)
11
+ return;
12
+ if (!this.connector.database) {
13
+ throw new Error(`You can't use cache without mongo connection!`);
14
+ }
15
+ this.collection = this.connector.database.collection(this.config.resolve("cacheCollection"));
16
+ await this.collection.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 });
17
+ }
18
+ async set(key, value, ttl, expirationTimestamp = null, tags = {}) {
19
+ await this.prepare();
20
+ const item = {
21
+ _id: key,
22
+ data: await this.cacheProcessor.serialize(value),
23
+ tags: await this.cacheProcessor.serialize(tags),
24
+ expirationTimestamp,
25
+ };
26
+ if (ttl) {
27
+ const now = Math.round(new Date().getTime() / 1000);
28
+ item.expiresAt = now + ttl;
29
+ }
30
+ await this.collection.updateOne({ _id: key }, { $set: item }, { upsert: true });
31
+ return value;
32
+ }
33
+ async get(key) {
34
+ await this.prepare();
35
+ let item = await this.collection.findOne({ _id: key });
36
+ const now = Math.round(new Date().getTime() / 1000);
37
+ if (item && item.expiresAt && item.expiresAt < now) {
38
+ item = null;
39
+ }
40
+ if (!item) {
41
+ throw new Error(`Cache probably doesn't exists with key: ${key}`);
42
+ }
43
+ return await this.cacheProcessor.deserialize(item.data);
44
+ }
45
+ async getOrSet(key, valueCb, ttl, expirationTimestamp = null, tags = {}) {
46
+ try {
47
+ return await this.get(key);
48
+ }
49
+ catch (e) {
50
+ return await this.set(key, await valueCb(), ttl, expirationTimestamp, tags);
51
+ }
52
+ }
53
+ async delete(key) {
54
+ await this.prepare();
55
+ await this.collection.deleteOne({ _id: key });
56
+ }
57
+ };
58
+ Cache = __decorate([
59
+ singleton()
60
+ ], Cache);
61
+ export { Cache };
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFlNUIsSUFBTSxLQUFLLEdBQVgsTUFBTSxLQUFLO0lBSWQsWUFBcUIsU0FBeUIsRUFBWSxNQUFxQixFQUFZLGNBQThCO1FBQXBHLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFZLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUV6SCxDQUFDO0lBRVMsS0FBSyxDQUFDLE9BQU87UUFDbkIsSUFBSSxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztTQUNwRTtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM3RixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUM3QixFQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUMsRUFDZCxFQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBQyxDQUMxQixDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxHQUFZLEVBQUUsc0JBQThCLElBQUksRUFBRSxPQUFZLEVBQUU7UUFDL0YsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEdBQWU7WUFDckIsR0FBRyxFQUFFLEdBQUc7WUFDUixJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDaEQsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQy9DLG1CQUFtQjtTQUN0QixDQUFDO1FBQ0YsSUFBSSxHQUFHLEVBQUU7WUFDTCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQzlCO1FBQ0QsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVc7UUFDakIsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO1lBQ2hELElBQUksR0FBRyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFO1FBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsT0FBMkIsRUFBRSxHQUFZLEVBQUUsc0JBQThCLElBQUksRUFBRSxPQUFZLEVBQUU7UUFDckgsSUFBSTtZQUNBLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDL0U7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFXO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0osQ0FBQTtBQTdEWSxLQUFLO0lBRGpCLFNBQVMsRUFBRTtHQUNDLEtBQUssQ0E2RGpCO1NBN0RZLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7Q29sbGVjdGlvbn0gZnJvbSBcIm1vbmdvZGJcIjtcclxuaW1wb3J0IHtNb25nb0Nvbm5lY3Rvcn0gZnJvbSBcIi4vbW9uZ28tY29ubmVjdG9yXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQge0NhY2hlUHJvY2Vzc29yfSBmcm9tIFwiLi9jYWNoZS1wcm9jZXNzb3JcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNhY2hlSXRlbSB7XHJcbiAgICBfaWQ6IHN0cmluZztcclxuICAgIGRhdGE6IGFueTtcclxuICAgIHRhZ3M/OiBhbnk7XHJcbiAgICBleHBpcmF0aW9uVGltZXN0YW1wPzogbnVtYmVyO1xyXG4gICAgZXhwaXJlc0F0PzogbnVtYmVyO1xyXG59XHJcblxyXG5Ac2luZ2xldG9uKClcclxuZXhwb3J0IGNsYXNzIENhY2hlIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxJQ2FjaGVJdGVtPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25uZWN0b3I6IE1vbmdvQ29ubmVjdG9yLCBwcm90ZWN0ZWQgY29uZmlnOiBDb25maWd1cmF0aW9uLCBwcm90ZWN0ZWQgY2FjaGVQcm9jZXNzb3I6IENhY2hlUHJvY2Vzc29yKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGVjdGlvbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghdGhpcy5jb25uZWN0b3IuZGF0YWJhc2UpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgY2FuJ3QgdXNlIGNhY2hlIHdpdGhvdXQgbW9uZ28gY29ubmVjdGlvbiFgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gdGhpcy5jb25uZWN0b3IuZGF0YWJhc2UuY29sbGVjdGlvbih0aGlzLmNvbmZpZy5yZXNvbHZlKFwiY2FjaGVDb2xsZWN0aW9uXCIpKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvbGxlY3Rpb24uY3JlYXRlSW5kZXgoXHJcbiAgICAgICAgICAgIHtleHBpcmVzQXQ6IDF9LFxyXG4gICAgICAgICAgICB7ZXhwaXJlQWZ0ZXJTZWNvbmRzOiAwfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCB0dGw/OiBudW1iZXIsIGV4cGlyYXRpb25UaW1lc3RhbXA6IG51bWJlciA9IG51bGwsIHRhZ3M6IGFueSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmUoKTtcclxuICAgICAgICBjb25zdCBpdGVtOiBJQ2FjaGVJdGVtID0ge1xyXG4gICAgICAgICAgICBfaWQ6IGtleSxcclxuICAgICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5jYWNoZVByb2Nlc3Nvci5zZXJpYWxpemUodmFsdWUpLFxyXG4gICAgICAgICAgICB0YWdzOiBhd2FpdCB0aGlzLmNhY2hlUHJvY2Vzc29yLnNlcmlhbGl6ZSh0YWdzKSxcclxuICAgICAgICAgICAgZXhwaXJhdGlvblRpbWVzdGFtcCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0dGwpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xyXG4gICAgICAgICAgICBpdGVtLmV4cGlyZXNBdCA9IG5vdyArIHR0bDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uLnVwZGF0ZU9uZSh7X2lkOiBrZXl9LCB7JHNldDogaXRlbX0sIHt1cHNlcnQ6IHRydWV9KTtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmUoKTtcclxuICAgICAgICBsZXQgaXRlbSA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbi5maW5kT25lKHtfaWQ6IGtleX0pO1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKTtcclxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmV4cGlyZXNBdCAmJiBpdGVtLmV4cGlyZXNBdCA8IG5vdykge1xyXG4gICAgICAgICAgICBpdGVtID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FjaGUgcHJvYmFibHkgZG9lc24ndCBleGlzdHMgd2l0aCBrZXk6ICR7a2V5fWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jYWNoZVByb2Nlc3Nvci5kZXNlcmlhbGl6ZShpdGVtLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE9yU2V0KGtleTogc3RyaW5nLCB2YWx1ZUNiOiAoKSA9PiBQcm9taXNlPGFueT4sIHR0bD86IG51bWJlciwgZXhwaXJhdGlvblRpbWVzdGFtcDogbnVtYmVyID0gbnVsbCwgdGFnczogYW55ID0ge30pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChrZXkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2V0KGtleSwgYXdhaXQgdmFsdWVDYigpLCB0dGwsIGV4cGlyYXRpb25UaW1lc3RhbXAsIHRhZ3MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJlcGFyZSgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5kZWxldGVPbmUoe19pZDoga2V5fSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,15 +1,4 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
1
+ import { __decorate, __param } from "tslib";
13
2
  import { injectAll, singleton } from "tsyringe";
14
3
  import dotenv from "dotenv";
15
4
  import { PARAMETER } from "../common-types";
@@ -70,8 +59,7 @@ let Configuration = class Configuration {
70
59
  };
71
60
  Configuration = __decorate([
72
61
  singleton(),
73
- __param(0, injectAll(PARAMETER)),
74
- __metadata("design:paramtypes", [Array])
62
+ __param(0, injectAll(PARAMETER))
75
63
  ], Configuration);
76
64
  export { Configuration };
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzlDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7SUFJdEUsYUFBYSxTQUFiLGFBQWE7SUFLdEIsWUFBa0MsTUFBbUI7UUFDakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsR0FBRyxDQUFDLEtBQWdCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUN6RCxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDaEQsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFUyxZQUFZLENB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Q0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztTQUN0RTtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0osQ0FBQTtBQTNFWSxhQUFhO0lBRHpCLFNBQVMsRUFBRTtJQU1LLFdBQUEsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBOztHQUx4QixhQUFhLENBMkV6QjtTQTNFWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RBbGwsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCBkb3RlbnYgZnJvbSBcImRvdGVudlwiO1xyXG5cclxuaW1wb3J0IHtQQVJBTUVURVIsIFBhcmFtZXRlcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2NvbG9yaXplLCBDb25zb2xlQ29sb3IsIGNvbnZlcnRWYWx1ZSwgZ2V0VHlwZSwgaXNGdW5jdGlvbn0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7aGVscH0gZnJvbSBcImNvbW1hbmRlclwiO1xyXG5cclxuQHNpbmdsZXRvbigpXHJcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcGFyYW1NYXA6IHtbbmFtZTogc3RyaW5nXTogUGFyYW1ldGVyfTtcclxuICAgIHByb3RlY3RlZCBwYXJhbVZhbHVlczoge1tuYW1lOiBzdHJpbmddOiBhbnl9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBpbmplY3RBbGwoUEFSQU1FVEVSKSBwYXJhbXM6IFBhcmFtZXRlcltdKSB7XHJcbiAgICAgICAgZG90ZW52LmNvbmZpZygpO1xyXG4gICAgICAgIHRoaXMucGFyYW1NYXAgPSB7fTtcclxuICAgICAgICB0aGlzLnBhcmFtVmFsdWVzID0ge307XHJcbiAgICAgICAgKHBhcmFtcyB8fCBbXSkuZm9yRWFjaChwYXJhbSA9PiB0aGlzLmFkZChwYXJhbSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhZGQocGFyYW06IFBhcmFtZXRlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUGFyYW0gPSB0aGlzLnBhcmFtTWFwW3BhcmFtLm5hbWVdIHx8IHBhcmFtO1xyXG4gICAgICAgIGV4aXN0aW5nUGFyYW0uZGVmYXVsdFZhbHVlID0gcGFyYW0uZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIGV4aXN0aW5nUGFyYW0ucmVzb2x2ZXIgPSBwYXJhbS5yZXNvbHZlciB8fCBleGlzdGluZ1BhcmFtLnJlc29sdmVyO1xyXG4gICAgICAgIHRoaXMucGFyYW1NYXBbcGFyYW0ubmFtZV0gPSBleGlzdGluZ1BhcmFtO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNvbHZlVmFsdWUocGFyYW06IFBhcmFtZXRlciwgYWxyZWFkeVJlc29sdmVkOiBzdHJpbmdbXSk6IGFueSB7XHJcbiAgICAgICAgY29uc3QgZW52TmFtZSA9IHBhcmFtLm5hbWUucmVwbGFjZSgvXFwuPyhbQS1afDAtOV0rKS9nLCBmdW5jdGlvbiAoeCwgeSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJfXCIgKyB5LnRvTG93ZXJDYXNlKClcclxuICAgICAgICB9KS5yZXBsYWNlKC9cXC4vZ2ksIFwiX1wiKS5yZXBsYWNlKC9eXy8sIFwiXCIpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgZW52VmFsdWUgPSBwcm9jZXNzLmVudltlbnZOYW1lXTtcclxuICAgICAgICBjb25zdCBoZWxwZXIgPSAocDogc3RyaW5nKSA9PiB0aGlzLnJlc29sdmVJbnRlcm5hbChwLCBhbHJlYWR5UmVzb2x2ZWQpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgZW52VmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpc0Z1bmN0aW9uKHBhcmFtLnJlc29sdmVyKVxyXG4gICAgICAgICAgICAgICAgPyBwYXJhbS5yZXNvbHZlcihlbnZWYWx1ZSwgaGVscGVyKVxyXG4gICAgICAgICAgICAgICAgOiBjb252ZXJ0VmFsdWUoZW52VmFsdWUsIGdldFR5cGUocGFyYW0uZGVmYXVsdFZhbHVlKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgY29sb3JpemUoYFByb2Nlc3NpbmcgcGFyYW0gdmFsdWVgLCBDb25zb2xlQ29sb3IuRmdZZWxsb3cpLFxyXG4gICAgICAgICAgICAgICAgY29sb3JpemUocGFyYW0ubmFtZSwgQ29uc29sZUNvbG9yLkZnR3JlZW4pLFxyXG4gICAgICAgICAgICAgICAgY29sb3JpemUoZW52TmFtZSwgQ29uc29sZUNvbG9yLkZnQmx1ZSksXHJcbiAgICAgICAgICAgICAgICBgXCIke2VudlZhbHVlfVwiYCxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ocGFyYW0ucmVzb2x2ZXIpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW0ucmVzb2x2ZXIocGFyYW0uZGVmYXVsdFZhbHVlLCBoZWxwZXIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgIGNvbG9yaXplKGBQcm9jZXNzaW5nIGRlZmF1bHQgcGFyYW0gdmFsdWVgLCBDb25zb2xlQ29sb3IuRmdZZWxsb3cpLFxyXG4gICAgICAgICAgICAgICAgY29sb3JpemUocGFyYW0ubmFtZSwgQ29uc29sZUNvbG9yLkZnR3JlZW4pLFxyXG4gICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgY29sb3JpemUoYFVzaW5nIGRlZmF1bHQgcGFyYW0gdmFsdWVgLCBDb25zb2xlQ29sb3IuRmdZZWxsb3cpLFxyXG4gICAgICAgICAgICBjb2xvcml6ZShwYXJhbS5uYW1lLCBDb25zb2xlQ29sb3IuRmdHcmVlbiksXHJcbiAgICAgICAgICAgIHBhcmFtLmRlZmF1bHRWYWx1ZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBwYXJhbS5kZWZhdWx0VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzUGFyYW0obmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5wYXJhbU1hcFtuYW1lXTtcclxuICAgIH1cclxuXHJcbiAgICByZXNvbHZlKG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZUludGVybmFsKG5hbWUsIFtdKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUludGVybmFsKG5hbWU6IHN0cmluZywgYWxyZWFkeVJlc29sdmVkOiBzdHJpbmdbXSk6IGFueSB7XHJcbiAgICAgICAgaWYgKGFscmVhZHlSZXNvbHZlZC5pbmNsdWRlcyhuYW1lKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQ6ICR7YWxyZWFkeVJlc29sdmVkLmpvaW4oXCIgLT4gXCIpfSAtPiAke25hbWV9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFscmVhZHlSZXNvbHZlZC5wdXNoKG5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHBhcmFtID0gdGhpcy5wYXJhbU1hcFtuYW1lXTtcclxuICAgICAgICBpZiAoIXBhcmFtKSB0aHJvdyBuZXcgRXJyb3IoYFBhcmFtZXRlciB3aXRoIG5hbWU6ICcke25hbWV9JyBkb2VzIG5vdCBleGlzdHMgaW4gY29uZmlndXJhdGlvbmApO1xyXG4gICAgICAgIGlmICghKG5hbWUgaW4gdGhpcy5wYXJhbVZhbHVlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbVZhbHVlc1tuYW1lXSA9IHRoaXMucmVzb2x2ZVZhbHVlKHBhcmFtLCBhbHJlYWR5UmVzb2x2ZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbVZhbHVlc1tuYW1lXTtcclxuICAgIH1cclxufVxyXG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLFNBQVMsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBSTVFLElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWE7SUFLdEIsWUFBa0MsTUFBbUI7UUFDakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsR0FBRyxDQUFDLEtBQWdCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUN6RCxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDaEQsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFUyxZQUFZLENB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Q0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztTQUN0RTtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0osQ0FBQTtBQTNFWSxhQUFhO0lBRHpCLFNBQVMsRUFBRTtJQU1LLFdBQUEsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0dBTHhCLGFBQWEsQ0EyRXpCO1NBM0VZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdEFsbCwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IGRvdGVudiBmcm9tIFwiZG90ZW52XCI7XHJcblxyXG5pbXBvcnQge1BBUkFNRVRFUiwgUGFyYW1ldGVyfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7Y29sb3JpemUsIENvbnNvbGVDb2xvciwgY29udmVydFZhbHVlLCBnZXRUeXBlLCBpc0Z1bmN0aW9ufSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHtoZWxwfSBmcm9tIFwiY29tbWFuZGVyXCI7XHJcblxyXG5Ac2luZ2xldG9uKClcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb24ge1xyXG5cclxuICAgIHByb3RlY3RlZCBwYXJhbU1hcDoge1tuYW1lOiBzdHJpbmddOiBQYXJhbWV0ZXJ9O1xyXG4gICAgcHJvdGVjdGVkIHBhcmFtVmFsdWVzOiB7W25hbWU6IHN0cmluZ106IGFueX07XHJcblxyXG4gICAgY29uc3RydWN0b3IoQGluamVjdEFsbChQQVJBTUVURVIpIHBhcmFtczogUGFyYW1ldGVyW10pIHtcclxuICAgICAgICBkb3RlbnYuY29uZmlnKCk7XHJcbiAgICAgICAgdGhpcy5wYXJhbU1hcCA9IHt9O1xyXG4gICAgICAgIHRoaXMucGFyYW1WYWx1ZXMgPSB7fTtcclxuICAgICAgICAocGFyYW1zIHx8IFtdKS5mb3JFYWNoKHBhcmFtID0+IHRoaXMuYWRkKHBhcmFtKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFkZChwYXJhbTogUGFyYW1ldGVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdQYXJhbSA9IHRoaXMucGFyYW1NYXBbcGFyYW0ubmFtZV0gfHwgcGFyYW07XHJcbiAgICAgICAgZXhpc3RpbmdQYXJhbS5kZWZhdWx0VmFsdWUgPSBwYXJhbS5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgZXhpc3RpbmdQYXJhbS5yZXNvbHZlciA9IHBhcmFtLnJlc29sdmVyIHx8IGV4aXN0aW5nUGFyYW0ucmVzb2x2ZXI7XHJcbiAgICAgICAgdGhpcy5wYXJhbU1hcFtwYXJhbS5uYW1lXSA9IGV4aXN0aW5nUGFyYW07XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlc29sdmVWYWx1ZShwYXJhbTogUGFyYW1ldGVyLCBhbHJlYWR5UmVzb2x2ZWQ6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBjb25zdCBlbnZOYW1lID0gcGFyYW0ubmFtZS5yZXBsYWNlKC9cXC4/KFtBLVp8MC05XSspL2csIGZ1bmN0aW9uICh4LCB5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIl9cIiArIHkudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIH0pLnJlcGxhY2UoL1xcLi9naSwgXCJfXCIpLnJlcGxhY2UoL15fLywgXCJcIikudG9VcHBlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBlbnZWYWx1ZSA9IHByb2Nlc3MuZW52W2Vudk5hbWVdO1xyXG4gICAgICAgIGNvbnN0IGhlbHBlciA9IChwOiBzdHJpbmcpID0+IHRoaXMucmVzb2x2ZUludGVybmFsKHAsIGFscmVhZHlSZXNvbHZlZCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBlbnZWYWx1ZSAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlzRnVuY3Rpb24ocGFyYW0ucmVzb2x2ZXIpXHJcbiAgICAgICAgICAgICAgICA/IHBhcmFtLnJlc29sdmVyKGVudlZhbHVlLCBoZWxwZXIpXHJcbiAgICAgICAgICAgICAgICA6IGNvbnZlcnRWYWx1ZShlbnZWYWx1ZSwgZ2V0VHlwZShwYXJhbS5kZWZhdWx0VmFsdWUpKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShgUHJvY2Vzc2luZyBwYXJhbSB2YWx1ZWAsIENvbnNvbGVDb2xvci5GZ1llbGxvdyksXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShwYXJhbS5uYW1lLCBDb25zb2xlQ29sb3IuRmdHcmVlbiksXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShlbnZOYW1lLCBDb25zb2xlQ29sb3IuRmdCbHVlKSxcclxuICAgICAgICAgICAgICAgIGBcIiR7ZW52VmFsdWV9XCJgLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihwYXJhbS5yZXNvbHZlcikpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbS5yZXNvbHZlcihwYXJhbS5kZWZhdWx0VmFsdWUsIGhlbHBlcik7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgY29sb3JpemUoYFByb2Nlc3NpbmcgZGVmYXVsdCBwYXJhbSB2YWx1ZWAsIENvbnNvbGVDb2xvci5GZ1llbGxvdyksXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShwYXJhbS5uYW1lLCBDb25zb2xlQ29sb3IuRmdHcmVlbiksXHJcbiAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0VmFsdWUsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBjb2xvcml6ZShgVXNpbmcgZGVmYXVsdCBwYXJhbSB2YWx1ZWAsIENvbnNvbGVDb2xvci5GZ1llbGxvdyksXHJcbiAgICAgICAgICAgIGNvbG9yaXplKHBhcmFtLm5hbWUsIENvbnNvbGVDb2xvci5GZ0dyZWVuKSxcclxuICAgICAgICAgICAgcGFyYW0uZGVmYXVsdFZhbHVlLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHBhcmFtLmRlZmF1bHRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNQYXJhbShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLnBhcmFtTWFwW25hbWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc29sdmUobmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlSW50ZXJuYWwobmFtZSwgW10pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNvbHZlSW50ZXJuYWwobmFtZTogc3RyaW5nLCBhbHJlYWR5UmVzb2x2ZWQ6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBpZiAoYWxyZWFkeVJlc29sdmVkLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZDogJHthbHJlYWR5UmVzb2x2ZWQuam9pbihcIiAtPiBcIil9IC0+ICR7bmFtZX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWxyZWFkeVJlc29sdmVkLnB1c2gobmFtZSk7XHJcbiAgICAgICAgY29uc3QgcGFyYW0gPSB0aGlzLnBhcmFtTWFwW25hbWVdO1xyXG4gICAgICAgIGlmICghcGFyYW0pIHRocm93IG5ldyBFcnJvcihgUGFyYW1ldGVyIHdpdGggbmFtZTogJyR7bmFtZX0nIGRvZXMgbm90IGV4aXN0cyBpbiBjb25maWd1cmF0aW9uYCk7XHJcbiAgICAgICAgaWYgKCEobmFtZSBpbiB0aGlzLnBhcmFtVmFsdWVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtVmFsdWVzW25hbWVdID0gdGhpcy5yZXNvbHZlVmFsdWUocGFyYW0sIGFscmVhZHlSZXNvbHZlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFtVmFsdWVzW25hbWVdO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable, Lifecycle, scoped } from "tsyringe";
3
+ let EndpointProvider = class EndpointProvider {
4
+ async configure(app) {
5
+ console.log(`Express app is mounted to: ${app.mountpath}`);
6
+ }
7
+ };
8
+ EndpointProvider = __decorate([
9
+ injectable(),
10
+ scoped(Lifecycle.ContainerScoped)
11
+ ], EndpointProvider);
12
+ export { EndpointProvider };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW5kcG9pbnQtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUtoRCxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQUV6QixLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVk7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNKLENBQUE7QUFMWSxnQkFBZ0I7SUFGNUIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7R0FDckIsZ0JBQWdCLENBSzVCO1NBTFksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBMaWZlY3ljbGUsIHNjb3BlZH0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7RXhwcmVzc30gZnJvbSBcImV4cHJlc3NcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgRW5kcG9pbnRQcm92aWRlciB7XHJcblxyXG4gICAgYXN5bmMgY29uZmlndXJlKGFwcDogRXhwcmVzcyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coYEV4cHJlc3MgYXBwIGlzIG1vdW50ZWQgdG86ICR7YXBwLm1vdW50cGF0aH1gKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,43 @@
1
+ import { deleteFromBucket, streamToBuffer, toImage } from "../../utils";
2
+ import { BaseEntity } from "./base-entity";
3
+ export class Asset extends BaseEntity {
4
+ constructor(id, data, collection, bucket) {
5
+ super(id, data, collection);
6
+ this.bucket = bucket;
7
+ }
8
+ get filename() {
9
+ return this.data.filename;
10
+ }
11
+ get contentType() {
12
+ return this.data.contentType;
13
+ }
14
+ get metadata() {
15
+ return this.data.metadata;
16
+ }
17
+ get stream() {
18
+ return this.bucket.openDownloadStream(this.mId);
19
+ }
20
+ async unlink() {
21
+ return deleteFromBucket(this.bucket, this.mId);
22
+ }
23
+ getBuffer() {
24
+ return streamToBuffer(this.stream);
25
+ }
26
+ async download(metadata) {
27
+ metadata = Object.assign(this.metadata, metadata || {});
28
+ metadata.downloadCount = isNaN(metadata.downloadCount) || !metadata.firstDownload
29
+ ? 1
30
+ : metadata.downloadCount + 1;
31
+ metadata.firstDownload = metadata.firstDownload || new Date();
32
+ metadata.lastDownload = new Date();
33
+ await this.collection.updateOne({ _id: this.mId }, { $set: { metadata } });
34
+ return this.stream;
35
+ }
36
+ async getImage(params = null) {
37
+ return toImage(this.stream, params, this.metadata);
38
+ }
39
+ async downloadImage(params, metadata) {
40
+ return toImage(await this.download(metadata), params, this.metadata);
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZW50aXRpZXMvYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLE9BQU8sS0FBTSxTQUFRLFVBQWtCO0lBa0J6QyxZQUFZLEVBQVksRUFDWixJQUFxQixFQUNyQixVQUFzQixFQUNaLE1BQW9CO1FBQ3RDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRFYsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUUxQyxDQUFDO0lBckJELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQVNELEtBQUssQ0FBQyxNQUFNO1FBQ1IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFxQjtRQUNoQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RCxRQUFRLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYTtZQUM3RSxDQUFDLENBQUMsQ0FBQztZQUNILENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUNqQyxRQUFRLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5RCxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUMsRUFBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQTRCLElBQUk7UUFDM0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQTBCLEVBQUUsUUFBcUI7UUFDakUsT0FBTyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge0NvbGxlY3Rpb24sIEdyaWRGU0J1Y2tldH0gZnJvbSBcIm1vbmdvZGJcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuXHJcbmltcG9ydCB7SUFzc2V0LCBJQXNzZXRJbWFnZVBhcmFtcywgSUFzc2V0TWV0YX0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2RlbGV0ZUZyb21CdWNrZXQsIHN0cmVhbVRvQnVmZmVyLCB0b0ltYWdlfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHtCYXNlRW50aXR5fSBmcm9tIFwiLi9iYXNlLWVudGl0eVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFzc2V0IGV4dGVuZHMgQmFzZUVudGl0eTxJQXNzZXQ+IGltcGxlbWVudHMgSUFzc2V0IHtcclxuXHJcbiAgICBnZXQgZmlsZW5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpbGVuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250ZW50VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuY29udGVudFR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1ldGFkYXRhKCk6IElBc3NldE1ldGEge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEubWV0YWRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0cmVhbSgpOiBSZWFkYWJsZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVja2V0Lm9wZW5Eb3dubG9hZFN0cmVhbSh0aGlzLm1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoaWQ6IE9iamVjdElkLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogUGFydGlhbDxJQXNzZXQ+LFxyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbixcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBidWNrZXQ6IEdyaWRGU0J1Y2tldCkge1xyXG4gICAgICAgIHN1cGVyKGlkLCBkYXRhLCBjb2xsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1bmxpbmsoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gZGVsZXRlRnJvbUJ1Y2tldCh0aGlzLmJ1Y2tldCwgdGhpcy5tSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIHJldHVybiBzdHJlYW1Ub0J1ZmZlcih0aGlzLnN0cmVhbSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZG93bmxvYWQobWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIG1ldGFkYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLm1ldGFkYXRhLCBtZXRhZGF0YSB8fCB7fSk7XHJcbiAgICAgICAgbWV0YWRhdGEuZG93bmxvYWRDb3VudCA9IGlzTmFOKG1ldGFkYXRhLmRvd25sb2FkQ291bnQpIHx8ICFtZXRhZGF0YS5maXJzdERvd25sb2FkXHJcbiAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICA6IG1ldGFkYXRhLmRvd25sb2FkQ291bnQgKyAxO1xyXG4gICAgICAgIG1ldGFkYXRhLmZpcnN0RG93bmxvYWQgPSBtZXRhZGF0YS5maXJzdERvd25sb2FkIHx8IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbWV0YWRhdGEubGFzdERvd25sb2FkID0gbmV3IERhdGUoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvbGxlY3Rpb24udXBkYXRlT25lKHtfaWQ6IHRoaXMubUlkfSwgeyRzZXQ6IHttZXRhZGF0YX19KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdHJlYW07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SW1hZ2UocGFyYW1zOiBJQXNzZXRJbWFnZVBhcmFtcyA9IG51bGwpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRvSW1hZ2UodGhpcy5zdHJlYW0sIHBhcmFtcywgdGhpcy5tZXRhZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZG93bmxvYWRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcywgbWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIHJldHVybiB0b0ltYWdlKGF3YWl0IHRoaXMuZG93bmxvYWQobWV0YWRhdGEpLCBwYXJhbXMsIHRoaXMubWV0YWRhdGEpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ export class BaseEntity {
2
+ constructor(mId, data, collection) {
3
+ this.mId = mId;
4
+ this.data = data;
5
+ this.collection = collection;
6
+ }
7
+ get id() {
8
+ return this.mId.toHexString();
9
+ }
10
+ save() {
11
+ return this.collection.updateOne({ _id: this.mId }, { $set: this.toJSON() });
12
+ }
13
+ async load() {
14
+ const res = await this.collection.findOne({ _id: this.mId });
15
+ this.deleted = !res;
16
+ this.data = res || {};
17
+ return this;
18
+ }
19
+ toJSON() {
20
+ const ret = Object.assign({}, this.data);
21
+ delete ret._id;
22
+ ret.id = this.id;
23
+ return ret;
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZW50aXRpZXMvYmFzZS1lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLFVBQVU7SUFRbkIsWUFBcUIsR0FBYSxFQUNaLElBQWdCLEVBQ2hCLFVBQTJCO1FBRjVCLFFBQUcsR0FBSCxHQUFHLENBQVU7UUFDWixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGVBQVUsR0FBVixVQUFVLENBQWlCO0lBQ2pELENBQUM7SUFURCxJQUFJLEVBQUU7UUFDRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQVNELElBQUk7UUFDQSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU07UUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFRLENBQUM7UUFDaEQsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ2YsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2VFbnRpdHk8VD4ge1xyXG5cclxuICAgIGdldCBpZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1JZC50b0hleFN0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBkZWxldGVkOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG1JZDogT2JqZWN0SWQsXHJcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgZGF0YTogUGFydGlhbDxUPixcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPGFueT4pIHtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi51cGRhdGVPbmUoe19pZDogdGhpcy5tSWR9LCB7JHNldDogdGhpcy50b0pTT04oKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx0aGlzPiB7XHJcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmZpbmRPbmUoe19pZDogdGhpcy5tSWR9KTtcclxuICAgICAgICB0aGlzLmRlbGV0ZWQgPSAhcmVzO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IHJlcyB8fCB7fTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB0b0pTT04oKTogYW55IHtcclxuICAgICAgICBjb25zdCByZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRhdGEpIGFzIGFueTtcclxuICAgICAgICBkZWxldGUgcmV0Ll9pZDtcclxuICAgICAgICByZXQuaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbn1cclxuIl19