@stemy/backend 5.2.1 → 6.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 (144) hide show
  1. package/commands/clear-command.d.ts +6 -6
  2. package/commands/fixtures-command.d.ts +9 -9
  3. package/commands/index.d.ts +2 -2
  4. package/common-types.d.ts +325 -326
  5. package/esm2020/services/assets.mjs +2 -2
  6. package/esm2022/commands/clear-command.mjs +15 -0
  7. package/esm2022/commands/fixtures-command.mjs +26 -0
  8. package/esm2022/commands/index.mjs +7 -0
  9. package/esm2022/common-types.mjs +26 -0
  10. package/esm2022/fixtures/index.mjs +5 -0
  11. package/esm2022/fixtures/ttl.fixture.mjs +23 -0
  12. package/esm2022/public_api.mjs +378 -0
  13. package/esm2022/requests/asset-image-params.mjs +60 -0
  14. package/esm2022/rest-controllers/assets.controller.mjs +177 -0
  15. package/esm2022/rest-controllers/auth.controller.mjs +57 -0
  16. package/esm2022/rest-controllers/gallery.controller.mjs +27 -0
  17. package/esm2022/rest-controllers/progresses.controller.mjs +38 -0
  18. package/esm2022/rest-controllers/terminal-styles.mjs +67 -0
  19. package/esm2022/rest-controllers/terminal.controller.mjs +132 -0
  20. package/esm2022/rest-middlewares/container.middleware.mjs +22 -0
  21. package/esm2022/rest-middlewares/error-handler.middleware.mjs +79 -0
  22. package/esm2022/rest-middlewares/language.middleware.mjs +21 -0
  23. package/esm2022/rest-middlewares/request-ended.middleware.mjs +26 -0
  24. package/esm2022/rest-middlewares/request-started.middleware.mjs +25 -0
  25. package/esm2022/services/asset-processor.mjs +90 -0
  26. package/esm2022/services/asset-resolver.mjs +36 -0
  27. package/esm2022/services/assets.mjs +154 -0
  28. package/esm2022/services/backend-provider.mjs +83 -0
  29. package/esm2022/services/cache-processor.mjs +16 -0
  30. package/esm2022/services/cache.mjs +70 -0
  31. package/esm2022/services/configuration.mjs +68 -0
  32. package/esm2022/services/drivers/asset-grid.driver.mjs +27 -0
  33. package/esm2022/services/drivers/asset-local.driver.mjs +41 -0
  34. package/esm2022/services/endpoint-provider.mjs +13 -0
  35. package/esm2022/services/entities/asset.mjs +61 -0
  36. package/esm2022/services/entities/base-entity.mjs +32 -0
  37. package/esm2022/services/entities/lazy-asset.mjs +87 -0
  38. package/esm2022/services/entities/progress.mjs +182 -0
  39. package/esm2022/services/entities/temp-asset.mjs +53 -0
  40. package/esm2022/services/fixtures.mjs +38 -0
  41. package/esm2022/services/gallery-cache.mjs +29 -0
  42. package/esm2022/services/gallery-image.mjs +42 -0
  43. package/esm2022/services/gallery.mjs +124 -0
  44. package/esm2022/services/id-generator.mjs +49 -0
  45. package/esm2022/services/job-manager.mjs +198 -0
  46. package/esm2022/services/lazy-assets.mjs +68 -0
  47. package/esm2022/services/logger.mjs +26 -0
  48. package/esm2022/services/mail-sender.mjs +42 -0
  49. package/esm2022/services/memory-cache.mjs +61 -0
  50. package/esm2022/services/mongo-connector.mjs +36 -0
  51. package/esm2022/services/open-api.mjs +124 -0
  52. package/esm2022/services/progresses.mjs +93 -0
  53. package/esm2022/services/template-renderer.mjs +71 -0
  54. package/esm2022/services/terminal-manager.mjs +88 -0
  55. package/esm2022/services/token-generator.mjs +37 -0
  56. package/esm2022/services/translation-provider.mjs +39 -0
  57. package/esm2022/services/translator.mjs +67 -0
  58. package/esm2022/services/user-manager.mjs +27 -0
  59. package/esm2022/socket-controllers/progress.controller.mjs +63 -0
  60. package/esm2022/socket-controllers/terminal.controller.mjs +61 -0
  61. package/esm2022/socket-controllers/terminal.mjs +89 -0
  62. package/esm2022/socket-middlewares/compression.middleware.mjs +14 -0
  63. package/esm2022/static.mjs +23 -0
  64. package/esm2022/stemy-backend.mjs +5 -0
  65. package/esm2022/utilities/base-doc.mjs +33 -0
  66. package/esm2022/utilities/decorators.mjs +51 -0
  67. package/esm2022/utilities/di-container.mjs +88 -0
  68. package/esm2022/utilities/empty-job.mjs +13 -0
  69. package/esm2022/utilities/lazy-asset-generator.mjs +38 -0
  70. package/esm2022/utilities/mongoose.mjs +216 -0
  71. package/esm2022/utilities/tree.mjs +119 -0
  72. package/esm2022/utils.mjs +726 -0
  73. package/esm2022/validators.mjs +46 -0
  74. package/fesm2015/stemy-backend.mjs +1 -1
  75. package/fesm2015/stemy-backend.mjs.map +1 -1
  76. package/fesm2020/stemy-backend.mjs +1 -1
  77. package/fesm2020/stemy-backend.mjs.map +1 -1
  78. package/fesm2022/stemy-backend.mjs +4690 -0
  79. package/fesm2022/stemy-backend.mjs.map +1 -0
  80. package/fixtures/index.d.ts +2 -2
  81. package/fixtures/ttl.fixture.d.ts +7 -7
  82. package/index.d.ts +5 -5
  83. package/package.json +43 -49
  84. package/public_api.d.ts +44 -44
  85. package/requests/asset-image-params.d.ts +12 -12
  86. package/rest-controllers/assets.controller.d.ts +25 -27
  87. package/rest-controllers/auth.controller.d.ts +14 -14
  88. package/rest-controllers/gallery.controller.d.ts +6 -7
  89. package/rest-controllers/progresses.controller.d.ts +9 -9
  90. package/rest-controllers/terminal-styles.d.ts +2 -2
  91. package/rest-controllers/terminal.controller.d.ts +10 -10
  92. package/rest-middlewares/container.middleware.d.ts +8 -8
  93. package/rest-middlewares/error-handler.middleware.d.ts +13 -13
  94. package/rest-middlewares/language.middleware.d.ts +8 -8
  95. package/rest-middlewares/request-ended.middleware.d.ts +8 -8
  96. package/rest-middlewares/request-started.middleware.d.ts +8 -8
  97. package/services/asset-processor.d.ts +10 -11
  98. package/services/asset-resolver.d.ts +10 -10
  99. package/services/assets.d.ts +24 -26
  100. package/services/backend-provider.d.ts +19 -20
  101. package/services/cache-processor.d.ts +4 -4
  102. package/services/cache.d.ts +23 -23
  103. package/services/configuration.d.ts +15 -15
  104. package/services/drivers/asset-grid.driver.d.ts +11 -11
  105. package/services/drivers/asset-local.driver.d.ts +10 -11
  106. package/services/endpoint-provider.d.ts +4 -4
  107. package/services/entities/asset.d.ts +19 -21
  108. package/services/entities/base-entity.d.ts +13 -13
  109. package/services/entities/lazy-asset.d.ts +25 -25
  110. package/services/entities/progress.d.ts +49 -49
  111. package/services/entities/temp-asset.d.ts +20 -22
  112. package/services/fixtures.d.ts +8 -8
  113. package/services/gallery-cache.d.ts +8 -9
  114. package/services/gallery-image.d.ts +10 -11
  115. package/services/gallery.d.ts +13 -13
  116. package/services/id-generator.d.ts +11 -11
  117. package/services/job-manager.d.ts +35 -35
  118. package/services/lazy-assets.d.ts +22 -22
  119. package/services/logger.d.ts +8 -8
  120. package/services/mail-sender.d.ts +20 -20
  121. package/services/memory-cache.d.ts +10 -10
  122. package/services/mongo-connector.d.ts +12 -12
  123. package/services/open-api.d.ts +13 -13
  124. package/services/progresses.d.ts +20 -20
  125. package/services/template-renderer.d.ts +14 -14
  126. package/services/terminal-manager.d.ts +15 -15
  127. package/services/token-generator.d.ts +6 -6
  128. package/services/translation-provider.d.ts +9 -9
  129. package/services/translator.d.ts +15 -15
  130. package/services/user-manager.d.ts +6 -6
  131. package/socket-controllers/progress.controller.d.ts +10 -10
  132. package/socket-controllers/terminal.controller.d.ts +13 -13
  133. package/socket-controllers/terminal.d.ts +19 -20
  134. package/socket-middlewares/compression.middleware.d.ts +4 -4
  135. package/static.d.ts +2 -2
  136. package/utilities/base-doc.d.ts +40 -40
  137. package/utilities/decorators.d.ts +10 -10
  138. package/utilities/di-container.d.ts +43 -43
  139. package/utilities/empty-job.d.ts +4 -4
  140. package/utilities/lazy-asset-generator.d.ts +15 -15
  141. package/utilities/mongoose.d.ts +36 -36
  142. package/utilities/tree.d.ts +15 -15
  143. package/utils.d.ts +120 -123
  144. package/validators.d.ts +7 -7
@@ -0,0 +1,63 @@
1
+ import { __decorate, __metadata, __param } from "tslib";
2
+ import { inject, singleton } from "tsyringe";
3
+ import { ConnectedSocket, MessageBody, OnMessage, SocketController } from "socket-controllers";
4
+ import { Server } from "socket.io";
5
+ import { SOCKET_SERVER } from "../common-types";
6
+ import { broadcast } from "../utils";
7
+ import { Progresses } from "../services/progresses";
8
+ let ProgressController = class ProgressController {
9
+ progresses;
10
+ socketServer;
11
+ constructor(progresses, socketServer) {
12
+ this.progresses = progresses;
13
+ this.socketServer = socketServer;
14
+ }
15
+ async advanceProgress(client, progressId) {
16
+ const progress = await this.progresses.get(progressId);
17
+ if (!progress)
18
+ return;
19
+ const json = progress.toJSON();
20
+ broadcast(this.socketServer, c => {
21
+ if (c.interestedProgresses instanceof Set && c.interestedProgresses.has(progressId)) {
22
+ client.emit("background-progress-changed", json);
23
+ }
24
+ });
25
+ console.log(`progress changed: ${client.id}, data: ${JSON.stringify(json)}`);
26
+ }
27
+ async setProgressInterest(client, progressId) {
28
+ const progress = await this.progresses.get(progressId);
29
+ if (!progress)
30
+ return;
31
+ const json = progress.toJSON();
32
+ client.interestedProgresses = client.interestedProgresses || new Set();
33
+ if (client.interestedProgresses.has(progressId))
34
+ return;
35
+ client.interestedProgresses.add(progressId);
36
+ client.emit("background-progress-changed", json);
37
+ console.log(`progress interest added: ${client.id}, data: ${JSON.stringify(json)}`);
38
+ }
39
+ };
40
+ __decorate([
41
+ OnMessage("background-progress"),
42
+ __param(0, ConnectedSocket()),
43
+ __param(1, MessageBody()),
44
+ __metadata("design:type", Function),
45
+ __metadata("design:paramtypes", [Object, String]),
46
+ __metadata("design:returntype", Promise)
47
+ ], ProgressController.prototype, "advanceProgress", null);
48
+ __decorate([
49
+ OnMessage("background-progress-interest"),
50
+ __param(0, ConnectedSocket()),
51
+ __param(1, MessageBody()),
52
+ __metadata("design:type", Function),
53
+ __metadata("design:paramtypes", [Object, String]),
54
+ __metadata("design:returntype", Promise)
55
+ ], ProgressController.prototype, "setProgressInterest", null);
56
+ ProgressController = __decorate([
57
+ singleton(),
58
+ SocketController(),
59
+ __param(1, inject(SOCKET_SERVER)),
60
+ __metadata("design:paramtypes", [Progresses, Server])
61
+ ], ProgressController);
62
+ export { ProgressController };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb2NrZXQtY29udHJvbGxlcnMvcHJvZ3Jlc3MuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0YsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQWdCLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSTNDLElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQWtCO0lBRU47SUFBd0Q7SUFBN0UsWUFBcUIsVUFBc0IsRUFBa0MsWUFBb0I7UUFBNUUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFrQyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtJQUNqRyxDQUFDO0lBR0ssQUFBTixLQUFLLENBQUMsZUFBZSxDQUFvQixNQUFxQixFQUFpQixVQUFrQjtRQUM3RixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUN0QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLENBQUMsb0JBQW9CLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDbEYsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixNQUFNLENBQUMsRUFBRSxXQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFHSyxBQUFOLEtBQUssQ0FBQyxtQkFBbUIsQ0FBb0IsTUFBcUIsRUFBaUIsVUFBa0I7UUFDakcsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDdEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLElBQUksSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUMvRSxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUN4RCxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsTUFBTSxDQUFDLEVBQUUsV0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0NBQ0osQ0FBQTtBQXZCUztJQURMLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQztJQUNWLFdBQUEsZUFBZSxFQUFFLENBQUE7SUFBeUIsV0FBQSxXQUFXLEVBQUUsQ0FBQTs7Ozt5REFVN0U7QUFHSztJQURMLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQztJQUNmLFdBQUEsZUFBZSxFQUFFLENBQUE7SUFBeUIsV0FBQSxXQUFXLEVBQUUsQ0FBQTs7Ozs2REFTakY7QUE1QlEsa0JBQWtCO0lBRjlCLFNBQVMsRUFBRTtJQUNYLGdCQUFnQixFQUFFO0lBRytCLFdBQUEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO3FDQUFsQyxVQUFVLEVBQWdELE1BQU07R0FGeEYsa0JBQWtCLENBNkI5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0Nvbm5lY3RlZFNvY2tldCwgTWVzc2FnZUJvZHksIE9uTWVzc2FnZSwgU29ja2V0Q29udHJvbGxlcn0gZnJvbSBcInNvY2tldC1jb250cm9sbGVyc1wiO1xyXG5pbXBvcnQge1NlcnZlcn0gZnJvbSBcInNvY2tldC5pb1wiO1xyXG5pbXBvcnQge0lDbGllbnRTb2NrZXQsIFNPQ0tFVF9TRVJWRVJ9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHticm9hZGNhc3R9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQge1Byb2dyZXNzZXN9IGZyb20gXCIuLi9zZXJ2aWNlcy9wcm9ncmVzc2VzXCI7XHJcblxyXG5Ac2luZ2xldG9uKClcclxuQFNvY2tldENvbnRyb2xsZXIoKVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NDb250cm9sbGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBwcm9ncmVzc2VzOiBQcm9ncmVzc2VzLCBAaW5qZWN0KFNPQ0tFVF9TRVJWRVIpIHJlYWRvbmx5IHNvY2tldFNlcnZlcjogU2VydmVyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgQE9uTWVzc2FnZShcImJhY2tncm91bmQtcHJvZ3Jlc3NcIilcclxuICAgIGFzeW5jIGFkdmFuY2VQcm9ncmVzcyhAQ29ubmVjdGVkU29ja2V0KCkgY2xpZW50OiBJQ2xpZW50U29ja2V0LCBATWVzc2FnZUJvZHkoKSBwcm9ncmVzc0lkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IGF3YWl0IHRoaXMucHJvZ3Jlc3Nlcy5nZXQocHJvZ3Jlc3NJZCk7XHJcbiAgICAgICAgaWYgKCFwcm9ncmVzcykgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGpzb24gPSBwcm9ncmVzcy50b0pTT04oKTtcclxuICAgICAgICBicm9hZGNhc3QodGhpcy5zb2NrZXRTZXJ2ZXIsIGMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYy5pbnRlcmVzdGVkUHJvZ3Jlc3NlcyBpbnN0YW5jZW9mIFNldCAmJiBjLmludGVyZXN0ZWRQcm9ncmVzc2VzLmhhcyhwcm9ncmVzc0lkKSkge1xyXG4gICAgICAgICAgICAgICAgY2xpZW50LmVtaXQoXCJiYWNrZ3JvdW5kLXByb2dyZXNzLWNoYW5nZWRcIiwganNvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgcHJvZ3Jlc3MgY2hhbmdlZDogJHtjbGllbnQuaWR9LCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGpzb24pfWApO1xyXG4gICAgfVxyXG5cclxuICAgIEBPbk1lc3NhZ2UoXCJiYWNrZ3JvdW5kLXByb2dyZXNzLWludGVyZXN0XCIpXHJcbiAgICBhc3luYyBzZXRQcm9ncmVzc0ludGVyZXN0KEBDb25uZWN0ZWRTb2NrZXQoKSBjbGllbnQ6IElDbGllbnRTb2NrZXQsIEBNZXNzYWdlQm9keSgpIHByb2dyZXNzSWQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gYXdhaXQgdGhpcy5wcm9ncmVzc2VzLmdldChwcm9ncmVzc0lkKTtcclxuICAgICAgICBpZiAoIXByb2dyZXNzKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QganNvbiA9IHByb2dyZXNzLnRvSlNPTigpO1xyXG4gICAgICAgIGNsaWVudC5pbnRlcmVzdGVkUHJvZ3Jlc3NlcyA9IGNsaWVudC5pbnRlcmVzdGVkUHJvZ3Jlc3NlcyB8fCBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgICBpZiAoY2xpZW50LmludGVyZXN0ZWRQcm9ncmVzc2VzLmhhcyhwcm9ncmVzc0lkKSkgcmV0dXJuO1xyXG4gICAgICAgIGNsaWVudC5pbnRlcmVzdGVkUHJvZ3Jlc3Nlcy5hZGQocHJvZ3Jlc3NJZCk7XHJcbiAgICAgICAgY2xpZW50LmVtaXQoXCJiYWNrZ3JvdW5kLXByb2dyZXNzLWNoYW5nZWRcIiwganNvbik7XHJcbiAgICAgICAgY29uc29sZS5sb2coYHByb2dyZXNzIGludGVyZXN0IGFkZGVkOiAke2NsaWVudC5pZH0sIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoanNvbil9YCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,61 @@
1
+ import { __decorate, __metadata, __param } from "tslib";
2
+ import { singleton } from "tsyringe";
3
+ import { ConnectedSocket, MessageBody, OnMessage, SocketController } from "socket-controllers";
4
+ import { TerminalManager } from "../services/terminal-manager";
5
+ import { Terminal } from "./terminal";
6
+ let TerminalController = class TerminalController {
7
+ manager;
8
+ terminals;
9
+ constructor(manager) {
10
+ this.manager = manager;
11
+ this.terminals = {};
12
+ }
13
+ async terminalInit(client) {
14
+ const terminal = new Terminal(client);
15
+ this.manager.loadAddons(terminal);
16
+ this.terminals[client.id] = terminal;
17
+ client.on("disconnect", () => terminal.dispose());
18
+ }
19
+ async terminalData(client, data) {
20
+ const terminal = this.terminals[client.id];
21
+ if (!terminal)
22
+ return;
23
+ terminal.input(data);
24
+ }
25
+ async terminalUpload(client, upload) {
26
+ const terminal = this.terminals[client.id];
27
+ if (!terminal || !upload)
28
+ return;
29
+ terminal.addFile(upload);
30
+ }
31
+ };
32
+ __decorate([
33
+ OnMessage("terminal-init"),
34
+ __param(0, ConnectedSocket()),
35
+ __metadata("design:type", Function),
36
+ __metadata("design:paramtypes", [Object]),
37
+ __metadata("design:returntype", Promise)
38
+ ], TerminalController.prototype, "terminalInit", null);
39
+ __decorate([
40
+ OnMessage("terminal-data"),
41
+ __param(0, ConnectedSocket()),
42
+ __param(1, MessageBody()),
43
+ __metadata("design:type", Function),
44
+ __metadata("design:paramtypes", [Object, String]),
45
+ __metadata("design:returntype", Promise)
46
+ ], TerminalController.prototype, "terminalData", null);
47
+ __decorate([
48
+ OnMessage("terminal-upload"),
49
+ __param(0, ConnectedSocket()),
50
+ __param(1, MessageBody()),
51
+ __metadata("design:type", Function),
52
+ __metadata("design:paramtypes", [Object, Object]),
53
+ __metadata("design:returntype", Promise)
54
+ ], TerminalController.prototype, "terminalUpload", null);
55
+ TerminalController = __decorate([
56
+ singleton(),
57
+ SocketController(),
58
+ __metadata("design:paramtypes", [TerminalManager])
59
+ ], TerminalController);
60
+ export { TerminalController };
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb2NrZXQtY29udHJvbGxlcnMvdGVybWluYWwuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUc3RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUk3QixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFrQjtJQUdMO0lBRlosU0FBUyxDQUEyQjtJQUU5QyxZQUFzQixPQUF3QjtRQUF4QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0ssQUFBTixLQUFLLENBQUMsWUFBWSxDQUFvQixNQUFxQjtRQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDckMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUdLLEFBQU4sS0FBSyxDQUFDLFlBQVksQ0FBb0IsTUFBcUIsRUFBaUIsSUFBWTtRQUNwRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDdEIsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBR0ssQUFBTixLQUFLLENBQUMsY0FBYyxDQUFvQixNQUFxQixFQUFpQixNQUFxQjtRQUMvRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDakMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0NBQ0osQ0FBQTtBQXBCUztJQURMLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFDUCxXQUFBLGVBQWUsRUFBRSxDQUFBOzs7O3NEQUtwQztBQUdLO0lBREwsU0FBUyxDQUFDLGVBQWUsQ0FBQztJQUNQLFdBQUEsZUFBZSxFQUFFLENBQUE7SUFBeUIsV0FBQSxXQUFXLEVBQUUsQ0FBQTs7OztzREFJMUU7QUFHSztJQURMLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUNQLFdBQUEsZUFBZSxFQUFFLENBQUE7SUFBeUIsV0FBQSxXQUFXLEVBQUUsQ0FBQTs7Ozt3REFJNUU7QUEzQlEsa0JBQWtCO0lBRjlCLFNBQVMsRUFBRTtJQUNYLGdCQUFnQixFQUFFO3FDQUlnQixlQUFlO0dBSHJDLGtCQUFrQixDQTRCOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7Q29ubmVjdGVkU29ja2V0LCBNZXNzYWdlQm9keSwgT25NZXNzYWdlLCBTb2NrZXRDb250cm9sbGVyfSBmcm9tIFwic29ja2V0LWNvbnRyb2xsZXJzXCI7XHJcblxyXG5pbXBvcnQge0lDbGllbnRTb2NrZXQsIElUZXJtaW5hbEZpbGV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtUZXJtaW5hbE1hbmFnZXJ9IGZyb20gXCIuLi9zZXJ2aWNlcy90ZXJtaW5hbC1tYW5hZ2VyXCI7XHJcbmltcG9ydCB7VGVybWluYWx9IGZyb20gXCIuL3Rlcm1pbmFsXCI7XHJcblxyXG5Ac2luZ2xldG9uKClcclxuQFNvY2tldENvbnRyb2xsZXIoKVxyXG5leHBvcnQgY2xhc3MgVGVybWluYWxDb250cm9sbGVyIHtcclxuICAgIHByb3RlY3RlZCB0ZXJtaW5hbHM6IHtbaWQ6IHN0cmluZ106IFRlcm1pbmFsfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbWFuYWdlcjogVGVybWluYWxNYW5hZ2VyKSB7XHJcbiAgICAgICAgdGhpcy50ZXJtaW5hbHMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBAT25NZXNzYWdlKFwidGVybWluYWwtaW5pdFwiKVxyXG4gICAgYXN5bmMgdGVybWluYWxJbml0KEBDb25uZWN0ZWRTb2NrZXQoKSBjbGllbnQ6IElDbGllbnRTb2NrZXQpIHtcclxuICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IG5ldyBUZXJtaW5hbChjbGllbnQpO1xyXG4gICAgICAgIHRoaXMubWFuYWdlci5sb2FkQWRkb25zKHRlcm1pbmFsKTtcclxuICAgICAgICB0aGlzLnRlcm1pbmFsc1tjbGllbnQuaWRdID0gdGVybWluYWw7XHJcbiAgICAgICAgY2xpZW50Lm9uKFwiZGlzY29ubmVjdFwiLCAoKSA9PiB0ZXJtaW5hbC5kaXNwb3NlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPbk1lc3NhZ2UoXCJ0ZXJtaW5hbC1kYXRhXCIpXHJcbiAgICBhc3luYyB0ZXJtaW5hbERhdGEoQENvbm5lY3RlZFNvY2tldCgpIGNsaWVudDogSUNsaWVudFNvY2tldCwgQE1lc3NhZ2VCb2R5KCkgZGF0YTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdGVybWluYWwgPSB0aGlzLnRlcm1pbmFsc1tjbGllbnQuaWRdO1xyXG4gICAgICAgIGlmICghdGVybWluYWwpIHJldHVybjtcclxuICAgICAgICB0ZXJtaW5hbC5pbnB1dChkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBAT25NZXNzYWdlKFwidGVybWluYWwtdXBsb2FkXCIpXHJcbiAgICBhc3luYyB0ZXJtaW5hbFVwbG9hZChAQ29ubmVjdGVkU29ja2V0KCkgY2xpZW50OiBJQ2xpZW50U29ja2V0LCBATWVzc2FnZUJvZHkoKSB1cGxvYWQ6IElUZXJtaW5hbEZpbGUpIHtcclxuICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IHRoaXMudGVybWluYWxzW2NsaWVudC5pZF07XHJcbiAgICAgICAgaWYgKCF0ZXJtaW5hbCB8fCAhdXBsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGVybWluYWwuYWRkRmlsZSh1cGxvYWQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,89 @@
1
+ import { BehaviorSubject, Subject } from "rxjs";
2
+ import { first, map, timeout } from "rxjs/operators";
3
+ import { fileTypeFromBuffer } from "../utils";
4
+ export class Terminal {
5
+ client;
6
+ addons;
7
+ files$;
8
+ input$;
9
+ constructor(client) {
10
+ this.client = client;
11
+ this.addons = [];
12
+ this.files$ = new BehaviorSubject([]);
13
+ this.input$ = new Subject();
14
+ }
15
+ onData(cb) {
16
+ const sub = this.input$.pipe(map(v => {
17
+ if (v === "\b") {
18
+ return "\x7f";
19
+ }
20
+ return v;
21
+ })).subscribe(cb);
22
+ return {
23
+ dispose: () => sub.unsubscribe()
24
+ };
25
+ }
26
+ write(data) {
27
+ this.client.emit("terminal-data", data);
28
+ }
29
+ writeln(data) {
30
+ this.write(data + "\n");
31
+ }
32
+ loadAddon(addon) {
33
+ addon.activate(this);
34
+ this.addons.push(addon);
35
+ }
36
+ dispose() {
37
+ this.input$.complete();
38
+ this.client = null;
39
+ this.addons.forEach(a => a.dispose());
40
+ }
41
+ async suggestFiles(accept) {
42
+ const rand = Math.round(Math.random() * 1000);
43
+ const id = `${Date.now()}-${rand}`;
44
+ const files = this.files$.value;
45
+ return files.filter(f => f.accept === accept).concat([
46
+ {
47
+ id,
48
+ label: "...",
49
+ onAccept: async () => {
50
+ this.client.emit("terminal-upload", {
51
+ id,
52
+ accept
53
+ });
54
+ const file = await this.files$
55
+ .pipe(first(v => v.some(f => f.id === id)))
56
+ .pipe(timeout(120000))
57
+ .pipe(map(v => v.find(f => f.id === id)))
58
+ .toPromise();
59
+ if (file.error) {
60
+ this.files$.next(this.files$.value.filter(f => f.id !== id));
61
+ throw new Error(file.error);
62
+ }
63
+ return file;
64
+ },
65
+ showAlways: true,
66
+ accept: accept,
67
+ }
68
+ ]);
69
+ }
70
+ async downloadFile(filename, buffer) {
71
+ const type = await fileTypeFromBuffer(buffer);
72
+ const data = buffer.toString("base64");
73
+ const content = `data:${type.mime};base64,${data}`;
74
+ this.client.emit("terminal-download", {
75
+ filename,
76
+ content
77
+ });
78
+ }
79
+ addFile(upload) {
80
+ if (upload.content) {
81
+ upload.buffer = Buffer.from(upload.content, "base64");
82
+ }
83
+ this.files$.next(this.files$.value.concat(upload));
84
+ }
85
+ input(data) {
86
+ this.input$.next(data);
87
+ }
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc29ja2V0LWNvbnRyb2xsZXJzL3Rlcm1pbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR25ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUU1QyxNQUFNLE9BQU8sUUFBUTtJQUtLO0lBSlosTUFBTSxDQUFtQjtJQUN6QixNQUFNLENBQW1DO0lBQ3pDLE1BQU0sQ0FBa0I7SUFFbEMsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQXlCO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDYixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixPQUFPO1lBQ0gsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7U0FDbkMsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWTtRQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFxQjtRQUMzQixLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQWM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFzQixDQUFDO1FBQ2pELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2pEO2dCQUNJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTt3QkFDaEMsRUFBRTt3QkFDRixNQUFNO3FCQUNULENBQUMsQ0FBQztvQkFDSCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNO3lCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7eUJBQ3hDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDO2dCQUNELFVBQVUsRUFBRSxJQUFJO2dCQUNoQixNQUFNLEVBQUUsTUFBTTthQUNqQjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQWdCLEVBQUUsTUFBYztRQUMvQyxNQUFNLElBQUksR0FBRyxNQUFNLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsUUFBUSxJQUFJLENBQUMsSUFBSSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ2xDLFFBQVE7WUFDUixPQUFPO1NBQ1YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFxQjtRQUN6QixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3QsIG1hcCwgdGltZW91dH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7SURpc3Bvc2FibGUsIElTdWdnZXN0aW9uLCBJVGVybWluYWxBZGRvbn0gZnJvbSBcIkBzdGVteS90ZXJtaW5hbC1jb21tYW5kcy1hZGRvblwiO1xyXG5pbXBvcnQge0lDbGllbnRTb2NrZXQsIElUZXJtaW5hbCwgSVRlcm1pbmFsRmlsZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2ZpbGVUeXBlRnJvbUJ1ZmZlcn0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVGVybWluYWwgaW1wbGVtZW50cyBJVGVybWluYWwge1xyXG4gICAgcHJvdGVjdGVkIGFkZG9uczogSVRlcm1pbmFsQWRkb25bXTtcclxuICAgIHByb3RlY3RlZCBmaWxlcyQ6IEJlaGF2aW9yU3ViamVjdDxJVGVybWluYWxGaWxlW10+O1xyXG4gICAgcHJvdGVjdGVkIGlucHV0JDogU3ViamVjdDxzdHJpbmc+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjbGllbnQ6IElDbGllbnRTb2NrZXQpIHtcclxuICAgICAgICB0aGlzLmFkZG9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZmlsZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcbiAgICAgICAgdGhpcy5pbnB1dCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGF0YShjYjogKGRhdGE6IHN0cmluZykgPT4gYW55KTogSURpc3Bvc2FibGUge1xyXG4gICAgICAgIGNvbnN0IHN1YiA9IHRoaXMuaW5wdXQkLnBpcGUobWFwKHYgPT4ge1xyXG4gICAgICAgICAgICBpZiAodiA9PT0gXCJcXGJcIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXFx4N2ZcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdjtcclxuICAgICAgICB9KSkuc3Vic2NyaWJlKGNiKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkaXNwb3NlOiAoKSA9PiBzdWIudW5zdWJzY3JpYmUoKVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGUoZGF0YTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbGllbnQuZW1pdChcInRlcm1pbmFsLWRhdGFcIiwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVsbihkYXRhOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLndyaXRlKGRhdGEgKyBcIlxcblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQWRkb24oYWRkb246IElUZXJtaW5hbEFkZG9uKSB7XHJcbiAgICAgICAgYWRkb24uYWN0aXZhdGUodGhpcyk7XHJcbiAgICAgICAgdGhpcy5hZGRvbnMucHVzaChhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcG9zZSgpIHtcclxuICAgICAgICB0aGlzLmlucHV0JC5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmFkZG9ucy5mb3JFYWNoKGEgPT4gYS5kaXNwb3NlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHN1Z2dlc3RGaWxlcyhhY2NlcHQ6IHN0cmluZyk6IFByb21pc2U8SVRlcm1pbmFsRmlsZVtdPiB7XHJcbiAgICAgICAgY29uc3QgcmFuZCA9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApO1xyXG4gICAgICAgIGNvbnN0IGlkID0gYCR7RGF0ZS5ub3coKX0tJHtyYW5kfWA7XHJcbiAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmZpbGVzJC52YWx1ZSBhcyBJU3VnZ2VzdGlvbltdO1xyXG4gICAgICAgIHJldHVybiBmaWxlcy5maWx0ZXIoZiA9PiBmLmFjY2VwdCA9PT0gYWNjZXB0KS5jb25jYXQoW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIi4uLlwiLFxyXG4gICAgICAgICAgICAgICAgb25BY2NlcHQ6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaWVudC5lbWl0KFwidGVybWluYWwtdXBsb2FkXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLmZpbGVzJFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShmaXJzdCh2ID0+IHYuc29tZShmID0+IGYuaWQgPT09IGlkKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRpbWVvdXQoMTIwMDAwKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKHYgPT4gdi5maW5kKGYgPT4gZi5pZCA9PT0gaWQpKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMkLm5leHQodGhpcy5maWxlcyQudmFsdWUuZmlsdGVyKGYgPT4gZi5pZCAhPT0gaWQpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZpbGUuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaG93QWx3YXlzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0OiBhY2NlcHQsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZEZpbGUoZmlsZW5hbWU6IHN0cmluZywgYnVmZmVyOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBjb25zdCB0eXBlID0gYXdhaXQgZmlsZVR5cGVGcm9tQnVmZmVyKGJ1ZmZlcik7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGJ1ZmZlci50b1N0cmluZyhcImJhc2U2NFwiKTtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gYGRhdGE6JHt0eXBlLm1pbWV9O2Jhc2U2NCwke2RhdGF9YDtcclxuICAgICAgICB0aGlzLmNsaWVudC5lbWl0KFwidGVybWluYWwtZG93bmxvYWRcIiwge1xyXG4gICAgICAgICAgICBmaWxlbmFtZSxcclxuICAgICAgICAgICAgY29udGVudFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZpbGUodXBsb2FkOiBJVGVybWluYWxGaWxlKSB7XHJcbiAgICAgICAgaWYgKHVwbG9hZC5jb250ZW50KSB7XHJcbiAgICAgICAgICAgIHVwbG9hZC5idWZmZXIgPSBCdWZmZXIuZnJvbSh1cGxvYWQuY29udGVudCwgXCJiYXNlNjRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlsZXMkLm5leHQodGhpcy5maWxlcyQudmFsdWUuY29uY2F0KHVwbG9hZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlucHV0KGRhdGE6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuaW5wdXQkLm5leHQoZGF0YSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,14 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable } from "tsyringe";
3
+ import { Middleware } from "socket-controllers";
4
+ let CompressionMiddleware = class CompressionMiddleware {
5
+ use(socket, next) {
6
+ next();
7
+ }
8
+ };
9
+ CompressionMiddleware = __decorate([
10
+ injectable(),
11
+ Middleware({})
12
+ ], CompressionMiddleware);
13
+ export { CompressionMiddleware };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24ubWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb2NrZXQtbWlkZGxld2FyZXMvY29tcHJlc3Npb24ubWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFzQixNQUFNLG9CQUFvQixDQUFDO0FBSTVELElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBRTlCLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBd0I7UUFDckMsSUFBSSxFQUFFLENBQUM7SUFDWCxDQUFDO0NBQ0osQ0FBQTtBQUxZLHFCQUFxQjtJQUZqQyxVQUFVLEVBQUU7SUFDWixVQUFVLENBQUMsRUFBRSxDQUFDO0dBQ0YscUJBQXFCLENBS2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtNaWRkbGV3YXJlLCBNaWRkbGV3YXJlSW50ZXJmYWNlfSBmcm9tIFwic29ja2V0LWNvbnRyb2xsZXJzXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBNaWRkbGV3YXJlKHt9KVxyXG5leHBvcnQgY2xhc3MgQ29tcHJlc3Npb25NaWRkbGV3YXJlIGltcGxlbWVudHMgTWlkZGxld2FyZUludGVyZmFjZSB7XHJcblxyXG4gICAgdXNlKHNvY2tldDogYW55LCBuZXh0OiAoZXJyPzogYW55KSA9PiBhbnkpIHtcclxuICAgICAgICBuZXh0KCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,23 @@
1
+ import { existsSync } from "fs";
2
+ import { resolve } from "path";
3
+ import express from "express";
4
+ import { EXPRESS } from "./common-types";
5
+ import { EndpointProvider } from "./services/endpoint-provider";
6
+ import { getDirName } from "./utils";
7
+ export async function setupStatic(rootFolder, container) {
8
+ const browserFolder = resolve(rootFolder || getDirName(), `public_html`);
9
+ const app = container.get(EXPRESS);
10
+ const ep = container.get(EndpointProvider);
11
+ console.log(browserFolder, existsSync(browserFolder));
12
+ if (existsSync(browserFolder)) {
13
+ console.log(`public_html exists. setting up static files serving...`);
14
+ app.use(express.static(browserFolder, {
15
+ maxAge: "1y"
16
+ }));
17
+ }
18
+ else {
19
+ console.log(`public_html does not exist on path: "${browserFolder}"`);
20
+ }
21
+ await ep.configure(app);
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzlCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBQyxPQUFPLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVuQyxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxVQUFrQixFQUFFLFNBQStCO0lBRWpGLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksVUFBVSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekUsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFdEQsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDdEUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUNsQyxNQUFNLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXhpc3RzU3luY30gZnJvbSBcImZzXCI7XHJcbmltcG9ydCB7cmVzb2x2ZX0gZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IGV4cHJlc3MgZnJvbSBcImV4cHJlc3NcIjtcclxuaW1wb3J0IHtFWFBSRVNTLCBJRGVwZW5kZW5jeUNvbnRhaW5lcn0gZnJvbSBcIi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7RW5kcG9pbnRQcm92aWRlcn0gZnJvbSBcIi4vc2VydmljZXMvZW5kcG9pbnQtcHJvdmlkZXJcIjtcclxuaW1wb3J0IHtnZXREaXJOYW1lfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldHVwU3RhdGljKHJvb3RGb2xkZXI6IHN0cmluZywgY29udGFpbmVyOiBJRGVwZW5kZW5jeUNvbnRhaW5lcik6IFByb21pc2U8YW55PiB7XHJcblxyXG4gICAgY29uc3QgYnJvd3NlckZvbGRlciA9IHJlc29sdmUocm9vdEZvbGRlciB8fCBnZXREaXJOYW1lKCksIGBwdWJsaWNfaHRtbGApO1xyXG4gICAgY29uc3QgYXBwID0gY29udGFpbmVyLmdldChFWFBSRVNTKTtcclxuICAgIGNvbnN0IGVwID0gY29udGFpbmVyLmdldChFbmRwb2ludFByb3ZpZGVyKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhicm93c2VyRm9sZGVyLCBleGlzdHNTeW5jKGJyb3dzZXJGb2xkZXIpKTtcclxuXHJcbiAgICBpZiAoZXhpc3RzU3luYyhicm93c2VyRm9sZGVyKSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBwdWJsaWNfaHRtbCBleGlzdHMuIHNldHRpbmcgdXAgc3RhdGljIGZpbGVzIHNlcnZpbmcuLi5gKTtcclxuICAgICAgICBhcHAudXNlKGV4cHJlc3Muc3RhdGljKGJyb3dzZXJGb2xkZXIsIHtcclxuICAgICAgICAgICAgbWF4QWdlOiBcIjF5XCJcclxuICAgICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBwdWJsaWNfaHRtbCBkb2VzIG5vdCBleGlzdCBvbiBwYXRoOiBcIiR7YnJvd3NlckZvbGRlcn1cImApO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IGVwLmNvbmZpZ3VyZShhcHApO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlbXktYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVteS1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,33 @@
1
+ import mongoose from "mongoose";
2
+ import { getModelForClass } from "@typegoose/typegoose";
3
+ export class BaseDoc {
4
+ _id;
5
+ /**
6
+ * This getter/setter doesn't exist if "schemaOptions.id" being set to "false"
7
+ */
8
+ id;
9
+ /**
10
+ * This getter doesn't exist if "schemaOptions.timestamps" being set to "false"
11
+ */
12
+ createdAt;
13
+ /**
14
+ * This getter doesn't exist if "schemaOptions.timestamps" being set to "false"
15
+ */
16
+ updatedAt;
17
+ /**
18
+ * Casts this to DocumentType<this> to allow using document methods in get/set-s
19
+ */
20
+ cast() {
21
+ return this;
22
+ }
23
+ /**
24
+ * Gets a pre-compiled model from typegoose cache by its class type
25
+ * @param type
26
+ */
27
+ model(type) {
28
+ return getModelForClass(type);
29
+ }
30
+ }
31
+ export const PrimitiveArray = mongoose.Types.Array;
32
+ export const DocumentArray = mongoose.Types.DocumentArray;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbGl0aWVzL2Jhc2UtZG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQWUsZ0JBQWdCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFHckYsTUFBTSxPQUFnQixPQUFPO0lBRXpCLEdBQUcsQ0FBVTtJQUViOztPQUVHO0lBQ0gsRUFBRSxDQUFTO0lBRVg7O09BRUc7SUFDSCxTQUFTLENBQVE7SUFFakI7O09BRUc7SUFDSCxTQUFTLENBQVE7SUFZakI7O09BRUc7SUFDSCxJQUFJO1FBQ0EsT0FBTyxJQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBNkIsSUFBTztRQUNyQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDSjtBQUlELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUluRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlZlR5cGV9IGZyb20gXCJtb25nb29zZVwiO1xyXG5pbXBvcnQgbW9uZ29vc2UgZnJvbSBcIm1vbmdvb3NlXCI7XHJcbmltcG9ydCB7RG9jdW1lbnRUeXBlLCBnZXRNb2RlbEZvckNsYXNzLCBSZXR1cm5Nb2RlbFR5cGV9IGZyb20gXCJAdHlwZWdvb3NlL3R5cGVnb29zZVwiO1xyXG5pbXBvcnQge0NvbnN0cnVjdG9yfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZURvYzxJRFR5cGUgZXh0ZW5kcyBSZWZUeXBlID0gbW9uZ29vc2UuVHlwZXMuT2JqZWN0SWQ+IHtcclxuXHJcbiAgICBfaWQ/OiBJRFR5cGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGdldHRlci9zZXR0ZXIgZG9lc24ndCBleGlzdCBpZiBcInNjaGVtYU9wdGlvbnMuaWRcIiBiZWluZyBzZXQgdG8gXCJmYWxzZVwiXHJcbiAgICAgKi9cclxuICAgIGlkOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGdldHRlciBkb2Vzbid0IGV4aXN0IGlmIFwic2NoZW1hT3B0aW9ucy50aW1lc3RhbXBzXCIgYmVpbmcgc2V0IHRvIFwiZmFsc2VcIlxyXG4gICAgICovXHJcbiAgICBjcmVhdGVkQXQ/OiBEYXRlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBnZXR0ZXIgZG9lc24ndCBleGlzdCBpZiBcInNjaGVtYU9wdGlvbnMudGltZXN0YW1wc1wiIGJlaW5nIHNldCB0byBcImZhbHNlXCJcclxuICAgICAqL1xyXG4gICAgdXBkYXRlZEF0PzogRGF0ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIERvY3VtZW50IGFzIEpTT05cclxuICAgICAqL1xyXG4gICAgdG9KU09OPygpOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBEb2N1bWVudCBhcyBhbiBPYmplY3RcclxuICAgICAqL1xyXG4gICAgdG9PYmplY3Q/KCk6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhc3RzIHRoaXMgdG8gRG9jdW1lbnRUeXBlPHRoaXM+IHRvIGFsbG93IHVzaW5nIGRvY3VtZW50IG1ldGhvZHMgaW4gZ2V0L3NldC1zXHJcbiAgICAgKi9cclxuICAgIGNhc3Q8SW1wbFR5cGUgPSB0aGlzPigpOiBEb2N1bWVudFR5cGU8SW1wbFR5cGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgcHJlLWNvbXBpbGVkIG1vZGVsIGZyb20gdHlwZWdvb3NlIGNhY2hlIGJ5IGl0cyBjbGFzcyB0eXBlXHJcbiAgICAgKiBAcGFyYW0gdHlwZVxyXG4gICAgICovXHJcbiAgICBtb2RlbDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8YW55Pj4odHlwZTogVCk6IFJldHVybk1vZGVsVHlwZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIGdldE1vZGVsRm9yQ2xhc3ModHlwZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByaW1pdGl2ZUFycmF5PFQ+ID0gbW9uZ29vc2UuVHlwZXMuQXJyYXk8VD47XHJcblxyXG5leHBvcnQgY29uc3QgUHJpbWl0aXZlQXJyYXkgPSBtb25nb29zZS5UeXBlcy5BcnJheTtcclxuXHJcbmV4cG9ydCB0eXBlIERvY3VtZW50QXJyYXk8VCBleHRlbmRzIEJhc2VEb2M+ID0gbW9uZ29vc2UuVHlwZXMuRG9jdW1lbnRBcnJheTxEb2N1bWVudFR5cGU8VD4+O1xyXG5cclxuZXhwb3J0IGNvbnN0IERvY3VtZW50QXJyYXkgPSBtb25nb29zZS5UeXBlcy5Eb2N1bWVudEFycmF5O1xyXG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { getStatusCode, OpenAPI } from "routing-controllers-openapi";
2
+ export function IsDocumented(summary = null, paramDescriptions = {}) {
3
+ return OpenAPI(op => {
4
+ op.summary = summary || op.summary;
5
+ op.tags = ["Documented"].concat(op.tags || []);
6
+ op.parameters?.forEach(p => {
7
+ if (p?.$ref)
8
+ return;
9
+ const schema = p;
10
+ schema.description = paramDescriptions[schema.name]
11
+ || schema.description
12
+ || `param.${op.operationId}.${schema.name}`.toLowerCase();
13
+ });
14
+ return op;
15
+ });
16
+ }
17
+ export function JsonResponse(description = "Success", statusCode = null) {
18
+ return OpenAPI((op, route) => {
19
+ const status = statusCode ?? getStatusCode(route) + "";
20
+ op.responses = op.responses || {};
21
+ op.responses[status] = {
22
+ description,
23
+ content: {
24
+ "application/json": {}
25
+ }
26
+ };
27
+ return op;
28
+ });
29
+ }
30
+ export function ResponseType(type, options = {}) {
31
+ return OpenAPI((op, route) => {
32
+ const contentType = "application/json";
33
+ const statusCode = options?.statusCode ?? getStatusCode(route) + "";
34
+ const reference = {
35
+ $ref: `#/components/schemas/${type.name}`,
36
+ };
37
+ op.responses = op.responses || {};
38
+ op.responses[statusCode] = {
39
+ description: options.description || "Success",
40
+ content: {
41
+ [contentType]: {
42
+ schema: options.isArray
43
+ ? { items: reference, type: "array" }
44
+ : reference
45
+ }
46
+ }
47
+ };
48
+ return op;
49
+ });
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsaXRpZXMvZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsYUFBYSxFQUFFLE9BQU8sRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR25FLE1BQU0sVUFBVSxZQUFZLENBQUMsVUFBa0IsSUFBSSxFQUFFLG9CQUE4QyxFQUFFO0lBQ2pHLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ2hCLEVBQUUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDbkMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLEVBQUUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLElBQUssQ0FBcUIsRUFBRSxJQUFJO2dCQUFFLE9BQU87WUFDekMsTUFBTSxNQUFNLEdBQUcsQ0FBb0IsQ0FBQztZQUNwQyxNQUFNLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7bUJBQzVDLE1BQU0sQ0FBQyxXQUFXO21CQUNsQixTQUFTLEVBQUUsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLGNBQXNCLFNBQVMsRUFBRSxhQUFxQixJQUFJO0lBQ25GLE9BQU8sT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLFVBQVUsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELEVBQUUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDbEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRztZQUNuQixXQUFXO1lBQ1gsT0FBTyxFQUFFO2dCQUNMLGtCQUFrQixFQUFFLEVBQUU7YUFDekI7U0FDSixDQUFDO1FBQ0YsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFRRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWMsRUFBRSxVQUFnQyxFQUFFO0lBQzNFLE9BQU8sT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwRSxNQUFNLFNBQVMsR0FBb0I7WUFDL0IsSUFBSSxFQUFFLHdCQUF3QixJQUFJLENBQUMsSUFBSSxFQUFFO1NBQzVDLENBQUM7UUFDRixFQUFFLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2xDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUztZQUM3QyxPQUFPLEVBQUU7Z0JBQ0wsQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDWCxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU87d0JBQ25CLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTt3QkFDckMsQ0FBQyxDQUFDLFNBQVM7aUJBQ2xCO2FBQ0o7U0FDSixDQUFDO1FBQ0YsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldFN0YXR1c0NvZGUsIE9wZW5BUEl9IGZyb20gXCJyb3V0aW5nLWNvbnRyb2xsZXJzLW9wZW5hcGlcIjtcclxuaW1wb3J0IHtQYXJhbWV0ZXJPYmplY3QsIFJlZmVyZW5jZU9iamVjdH0gZnJvbSBcIm9wZW5hcGkzLXRzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gSXNEb2N1bWVudGVkKHN1bW1hcnk6IHN0cmluZyA9IG51bGwsIHBhcmFtRGVzY3JpcHRpb25zOiB7W25hbWU6IHN0cmluZ106IHN0cmluZ30gPSB7fSkge1xyXG4gICAgcmV0dXJuIE9wZW5BUEkob3AgPT4ge1xyXG4gICAgICAgIG9wLnN1bW1hcnkgPSBzdW1tYXJ5IHx8IG9wLnN1bW1hcnk7XHJcbiAgICAgICAgb3AudGFncyA9IFtcIkRvY3VtZW50ZWRcIl0uY29uY2F0KG9wLnRhZ3MgfHwgW10pO1xyXG4gICAgICAgIG9wLnBhcmFtZXRlcnM/LmZvckVhY2gocCA9PiB7XHJcbiAgICAgICAgICAgIGlmICgocCBhcyBSZWZlcmVuY2VPYmplY3QpPy4kcmVmKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHAgYXMgUGFyYW1ldGVyT2JqZWN0O1xyXG4gICAgICAgICAgICBzY2hlbWEuZGVzY3JpcHRpb24gPSBwYXJhbURlc2NyaXB0aW9uc1tzY2hlbWEubmFtZV1cclxuICAgICAgICAgICAgICAgIHx8IHNjaGVtYS5kZXNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgfHwgYHBhcmFtLiR7b3Aub3BlcmF0aW9uSWR9LiR7c2NoZW1hLm5hbWV9YC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBvcDtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gSnNvblJlc3BvbnNlKGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBcIlN1Y2Nlc3NcIiwgc3RhdHVzQ29kZTogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgcmV0dXJuIE9wZW5BUEkoKG9wLCByb3V0ZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHN0YXR1c0NvZGUgPz8gZ2V0U3RhdHVzQ29kZShyb3V0ZSkgKyBcIlwiO1xyXG4gICAgICAgIG9wLnJlc3BvbnNlcyA9IG9wLnJlc3BvbnNlcyB8fCB7fTtcclxuICAgICAgICBvcC5yZXNwb25zZXNbc3RhdHVzXSA9IHtcclxuICAgICAgICAgICAgZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gb3A7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVzcG9uc2VUeXBlT3B0aW9ucyB7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICAgIHN0YXR1c0NvZGU/OiBudW1iZXI7XHJcbiAgICBpc0FycmF5PzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlVHlwZSh0eXBlOiBGdW5jdGlvbiwgb3B0aW9uczogSVJlc3BvbnNlVHlwZU9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIE9wZW5BUEkoKG9wLCByb3V0ZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IG9wdGlvbnM/LnN0YXR1c0NvZGUgPz8gZ2V0U3RhdHVzQ29kZShyb3V0ZSkgKyBcIlwiO1xyXG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZTogUmVmZXJlbmNlT2JqZWN0ID0ge1xyXG4gICAgICAgICAgICAkcmVmOiBgIy9jb21wb25lbnRzL3NjaGVtYXMvJHt0eXBlLm5hbWV9YCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIG9wLnJlc3BvbnNlcyA9IG9wLnJlc3BvbnNlcyB8fCB7fTtcclxuICAgICAgICBvcC5yZXNwb25zZXNbc3RhdHVzQ29kZV0gPSB7XHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uIHx8IFwiU3VjY2Vzc1wiLFxyXG4gICAgICAgICAgICBjb250ZW50OiB7XHJcbiAgICAgICAgICAgICAgICBbY29udGVudFR5cGVdOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hOiBvcHRpb25zLmlzQXJyYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGl0ZW1zOiByZWZlcmVuY2UsIHR5cGU6IFwiYXJyYXlcIiB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcmVmZXJlbmNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBvcDtcclxuICAgIH0pO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,88 @@
1
+ import { isFactoryProvider } from "tsyringe";
2
+ import { Tree } from "./tree";
3
+ import { isString } from "../utils";
4
+ export class DiContainer {
5
+ container;
6
+ parent;
7
+ get registeredTokens() {
8
+ return (this.parent?.registeredTokens || []).concat(this.tokens);
9
+ }
10
+ get tree() {
11
+ return this.root;
12
+ }
13
+ tokens;
14
+ tokenSet;
15
+ root;
16
+ constructor(container, parent = null) {
17
+ this.container = container;
18
+ this.parent = parent;
19
+ container["wrapperContainer"] = this;
20
+ this.tokens = [];
21
+ this.tokenSet = new Set();
22
+ this.root = new Tree(this, false, "");
23
+ }
24
+ beforeResolution(token, callback, options) {
25
+ this.container.beforeResolution(token, callback, options);
26
+ }
27
+ afterResolution(token, callback, options) {
28
+ this.container.afterResolution(token, callback, options);
29
+ }
30
+ clearInstances() {
31
+ this.container.clearInstances();
32
+ }
33
+ createChildContainer() {
34
+ return new DiContainer(this.container.createChildContainer(), this);
35
+ }
36
+ isRegistered(token, recursive) {
37
+ return this.container.isRegistered(token, recursive);
38
+ }
39
+ register(token, provider, options) {
40
+ if (isFactoryProvider(provider)) {
41
+ this.container.register(token, {
42
+ useFactory: dc => {
43
+ return provider.useFactory(dc["wrapperContainer"]);
44
+ }
45
+ });
46
+ return this.addToken(token);
47
+ }
48
+ this.container.register(token, provider);
49
+ return this.addToken(token);
50
+ }
51
+ registerInstance(token, instance) {
52
+ this.container.registerInstance(token, instance);
53
+ return this.addToken(token);
54
+ }
55
+ registerSingleton(from, to) {
56
+ this.container.registerSingleton(from, to);
57
+ return this.addToken(from);
58
+ }
59
+ registerType(from, to) {
60
+ this.container.registerType(from, to);
61
+ return this.addToken(from);
62
+ }
63
+ reset() {
64
+ this.tokens = [];
65
+ this.tokenSet = new Set();
66
+ this.container.reset();
67
+ }
68
+ resolve(token) {
69
+ return this.container.resolve(token);
70
+ }
71
+ resolveAll(token) {
72
+ return this.container.resolveAll(token);
73
+ }
74
+ get(token) {
75
+ return this.container.resolve(token);
76
+ }
77
+ addToken(token) {
78
+ if (this.tokenSet.has(token))
79
+ return this;
80
+ this.tokenSet.add(token);
81
+ this.tokens.push(token);
82
+ if (isString(token)) {
83
+ this.root.addPath(token);
84
+ }
85
+ return this;
86
+ }
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGktY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxpdGllcy9kaS1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtILGlCQUFpQixFQUlwQixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFVbEMsTUFBTSxPQUFPLFdBQVc7SUFjRTtJQUF5QztJQVovRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVTLE1BQU0sQ0FBd0I7SUFDOUIsUUFBUSxDQUFzQjtJQUM5QixJQUFJLENBQU87SUFFckIsWUFBc0IsU0FBOEIsRUFBVyxTQUErQixJQUFJO1FBQTVFLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBNkI7UUFDOUYsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBSSxLQUF3QixFQUFFLFFBQTZDLEVBQUUsT0FBa0M7UUFDM0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FB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QUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENsYXNzUHJvdmlkZXIsXHJcbiAgICBEZXBlbmRlbmN5Q29udGFpbmVyLFxyXG4gICAgRnJlcXVlbmN5LFxyXG4gICAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgICBpc0ZhY3RvcnlQcm92aWRlcixcclxuICAgIFJlZ2lzdHJhdGlvbk9wdGlvbnMsXHJcbiAgICBUb2tlblByb3ZpZGVyLFxyXG4gICAgVmFsdWVQcm92aWRlclxyXG59IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0ZhY3RvcnlQcm92aWRlciwgSURlcGVuZGVuY3lDb250YWluZXIsIElUcmVlLCBUeXBlfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7VHJlZX0gZnJvbSBcIi4vdHJlZVwiO1xyXG5pbXBvcnQge2lzU3RyaW5nfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuXHJcbmludGVyZmFjZSBQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3JDYWxsYmFjazxUID0gYW55PiB7XHJcbiAgICAodG9rZW46IEluamVjdGlvblRva2VuPFQ+LCByZXNvbHV0aW9uVHlwZTogXCJTaW5nbGVcIiB8IFwiQWxsXCIpOiB2b2lkO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvckNhbGxiYWNrPFQgPSBhbnk+IHtcclxuICAgICh0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHJlc3VsdDogVCB8IFRbXSwgcmVzb2x1dGlvblR5cGU6IFwiU2luZ2xlXCIgfCBcIkFsbFwiKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERpQ29udGFpbmVyIGltcGxlbWVudHMgSURlcGVuZGVuY3lDb250YWluZXIge1xyXG5cclxuICAgIGdldCByZWdpc3RlcmVkVG9rZW5zKCk6IFJlYWRvbmx5QXJyYXk8SW5qZWN0aW9uVG9rZW4+IHtcclxuICAgICAgICByZXR1cm4gKHRoaXMucGFyZW50Py5yZWdpc3RlcmVkVG9rZW5zIHx8IFtdKS5jb25jYXQodGhpcy50b2tlbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0cmVlKCk6IElUcmVlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb290O1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b2tlbnM6IEFycmF5PEluamVjdGlvblRva2VuPjtcclxuICAgIHByb3RlY3RlZCB0b2tlblNldDogU2V0PEluamVjdGlvblRva2VuPjtcclxuICAgIHByb3RlY3RlZCByb290OiBUcmVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjb250YWluZXI6IERlcGVuZGVuY3lDb250YWluZXIsIHJlYWRvbmx5IHBhcmVudDogSURlcGVuZGVuY3lDb250YWluZXIgPSBudWxsKSB7XHJcbiAgICAgICAgY29udGFpbmVyW1wid3JhcHBlckNvbnRhaW5lclwiXSA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy50b2tlbnMgPSBbXTtcclxuICAgICAgICB0aGlzLnRva2VuU2V0ID0gbmV3IFNldDxJbmplY3Rpb25Ub2tlbj4oKTtcclxuICAgICAgICB0aGlzLnJvb3QgPSBuZXcgVHJlZSh0aGlzLCBmYWxzZSwgXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgYmVmb3JlUmVzb2x1dGlvbjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIGNhbGxiYWNrOiBQcmVSZXNvbHV0aW9uSW50ZXJjZXB0b3JDYWxsYmFjazxUPiwgb3B0aW9ucz86IHsgZnJlcXVlbmN5OiBGcmVxdWVuY3kgfSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyLmJlZm9yZVJlc29sdXRpb24odG9rZW4sIGNhbGxiYWNrLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBhZnRlclJlc29sdXRpb248VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBjYWxsYmFjazogUG9zdFJlc29sdXRpb25JbnRlcmNlcHRvckNhbGxiYWNrPFQ+LCBvcHRpb25zPzogeyBmcmVxdWVuY3k6IEZyZXF1ZW5jeSB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIuYWZ0ZXJSZXNvbHV0aW9uKHRva2VuLCBjYWxsYmFjaywgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJJbnN0YW5jZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIuY2xlYXJJbnN0YW5jZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVDaGlsZENvbnRhaW5lcigpOiBJRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEaUNvbnRhaW5lcih0aGlzLmNvbnRhaW5lci5jcmVhdGVDaGlsZENvbnRhaW5lcigpLCB0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1JlZ2lzdGVyZWQ8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCByZWN1cnNpdmU/OiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmlzUmVnaXN0ZXJlZCh0b2tlbiwgcmVjdXJzaXZlKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBGYWN0b3J5UHJvdmlkZXI8VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFRva2VuUHJvdmlkZXI8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBDbGFzc1Byb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVHlwZTxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyKHRva2VuLCBwcm92aWRlciwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICAgICAgaWYgKGlzRmFjdG9yeVByb3ZpZGVyKHByb3ZpZGVyKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5yZWdpc3Rlcih0b2tlbiwge1xyXG4gICAgICAgICAgICAgICAgdXNlRmFjdG9yeTogZGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlci51c2VGYWN0b3J5KGRjW1wid3JhcHBlckNvbnRhaW5lclwiXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGRUb2tlbih0b2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyLnJlZ2lzdGVyKHRva2VuLCBwcm92aWRlcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkVG9rZW4odG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVySW5zdGFuY2U8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBpbnN0YW5jZTogVCk6IElEZXBlbmRlbmN5Q29udGFpbmVyIHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lci5yZWdpc3Rlckluc3RhbmNlKHRva2VuLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkVG9rZW4odG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyU2luZ2xldG9uPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyU2luZ2xldG9uPFQ+KHRva2VuOiBUeXBlPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbihmcm9tLCB0bz8pOiBJRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXIucmVnaXN0ZXJTaW5nbGV0b24oZnJvbSwgdG8pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFRva2VuKGZyb20pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyVHlwZTxUPihmcm9tOiBJbmplY3Rpb25Ub2tlbjxUPiwgdG86IEluamVjdGlvblRva2VuPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXIge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyLnJlZ2lzdGVyVHlwZShmcm9tLCB0byk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkVG9rZW4oZnJvbSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50b2tlbnMgPSBbXTtcclxuICAgICAgICB0aGlzLnRva2VuU2V0ID0gbmV3IFNldDxJbmplY3Rpb25Ub2tlbj4oKTtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lci5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc29sdmU8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+KTogVCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLnJlc29sdmUodG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc29sdmVBbGw8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+KTogVFtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIucmVzb2x2ZUFsbCh0b2tlbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0PFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5yZXNvbHZlKHRva2VuKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkVG9rZW48VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+KTogdGhpcyB7XHJcbiAgICAgICAgaWYgKHRoaXMudG9rZW5TZXQuaGFzKHRva2VuKSkgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgdGhpcy50b2tlblNldC5hZGQodG9rZW4pO1xyXG4gICAgICAgIHRoaXMudG9rZW5zLnB1c2godG9rZW4pO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyh0b2tlbikpIHtcclxuICAgICAgICAgICAgdGhpcy5yb290LmFkZFBhdGgodG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { __decorate } from "tslib";
2
+ import { injectable, Lifecycle, scoped } from "tsyringe";
3
+ let EmptyJob = class EmptyJob {
4
+ async process() {
5
+ return null;
6
+ }
7
+ };
8
+ EmptyJob = __decorate([
9
+ injectable(),
10
+ scoped(Lifecycle.ContainerScoped)
11
+ ], EmptyJob);
12
+ export { EmptyJob };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxpdGllcy9lbXB0eS1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUtoRCxJQUFNLFFBQVEsR0FBZCxNQUFNLFFBQVE7SUFFakIsS0FBSyxDQUFDLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0osQ0FBQTtBQUxZLFFBQVE7SUFGcEIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7R0FDckIsUUFBUSxDQUtwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0lKb2J9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgRW1wdHlKb2IgaW1wbGVtZW50cyBJSm9iIHtcclxuXHJcbiAgICBhc3luYyBwcm9jZXNzKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,38 @@
1
+ export class LazyAssetGenerator {
2
+ assetResolver;
3
+ progresses;
4
+ lazyId;
5
+ get assets() {
6
+ return this.assetResolver.assets;
7
+ }
8
+ get lazyAssets() {
9
+ return this.assetResolver.lazyAssets;
10
+ }
11
+ constructor(assetResolver, progresses, lazyId) {
12
+ this.assetResolver = assetResolver;
13
+ this.progresses = progresses;
14
+ this.lazyId = lazyId;
15
+ }
16
+ async process(messaging) {
17
+ const lazyAsset = await this.lazyAssets.read(this.lazyId);
18
+ let progress = await this.progresses.get(lazyAsset.progressId);
19
+ if (!progress || progress.canceled)
20
+ return null;
21
+ progress.setMessageBridge(messaging);
22
+ try {
23
+ const asset = await this.generate(progress, messaging);
24
+ progress = await progress.load();
25
+ if (!progress || progress.canceled)
26
+ return null;
27
+ await lazyAsset.writeAsset(asset);
28
+ }
29
+ catch (e) {
30
+ await progress.setError(e.message || e);
31
+ throw e;
32
+ }
33
+ if (progress.remaining > 0) {
34
+ await progress.advance(progress.remaining);
35
+ }
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1hc3NldC1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbGl0aWVzL2xhenktYXNzZXQtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sT0FBZ0Isa0JBQWtCO0lBVUo7SUFBd0M7SUFBa0M7SUFSMUcsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBZ0MsYUFBNEIsRUFBWSxVQUFzQixFQUFZLE1BQWM7UUFBeEYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBWSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUN4SCxDQUFDO0lBSUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUF5QjtRQUNuQyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDaEQsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQztZQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkQsUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVE7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDaEQsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLENBQUM7UUFDWixDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SUFzc2V0LCBJSm9iLCBJTWVzc2FnZUJyaWRnZSwgSVByb2dyZXNzfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi4vc2VydmljZXMvYXNzZXRzXCI7XHJcbmltcG9ydCB7TGF6eUFzc2V0c30gZnJvbSBcIi4uL3NlcnZpY2VzL2xhenktYXNzZXRzXCI7XHJcbmltcG9ydCB7QXNzZXRSZXNvbHZlcn0gZnJvbSBcIi4uL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XHJcbmltcG9ydCB7UHJvZ3Jlc3Nlc30gZnJvbSBcIi4uL3NlcnZpY2VzL3Byb2dyZXNzZXNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMYXp5QXNzZXRHZW5lcmF0b3IgaW1wbGVtZW50cyBJSm9iIHtcclxuXHJcbiAgICBnZXQgYXNzZXRzKCk6IEFzc2V0cyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZXRSZXNvbHZlci5hc3NldHM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhenlBc3NldHMoKTogTGF6eUFzc2V0cyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzZXRSZXNvbHZlci5sYXp5QXNzZXRzO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXNzZXRSZXNvbHZlcjogQXNzZXRSZXNvbHZlciwgcHJvdGVjdGVkIHByb2dyZXNzZXM6IFByb2dyZXNzZXMsIHByb3RlY3RlZCBsYXp5SWQ6IHN0cmluZykge1xyXG4gICAgfVxyXG5cclxuICAgIGFic3RyYWN0IGdlbmVyYXRlKHByb2dyZXNzOiBJUHJvZ3Jlc3MsIG1lc3NhZ2luZz86IElNZXNzYWdlQnJpZGdlKTogUHJvbWlzZTxJQXNzZXQ+O1xyXG5cclxuICAgIGFzeW5jIHByb2Nlc3MobWVzc2FnaW5nOiBJTWVzc2FnZUJyaWRnZSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3QgbGF6eUFzc2V0ID0gYXdhaXQgdGhpcy5sYXp5QXNzZXRzLnJlYWQodGhpcy5sYXp5SWQpO1xyXG4gICAgICAgIGxldCBwcm9ncmVzcyA9IGF3YWl0IHRoaXMucHJvZ3Jlc3Nlcy5nZXQobGF6eUFzc2V0LnByb2dyZXNzSWQpO1xyXG4gICAgICAgIGlmICghcHJvZ3Jlc3MgfHwgcHJvZ3Jlc3MuY2FuY2VsZWQpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHByb2dyZXNzLnNldE1lc3NhZ2VCcmlkZ2UobWVzc2FnaW5nKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGUocHJvZ3Jlc3MsIG1lc3NhZ2luZyk7XHJcbiAgICAgICAgICAgIHByb2dyZXNzID0gYXdhaXQgcHJvZ3Jlc3MubG9hZCgpO1xyXG4gICAgICAgICAgICBpZiAoIXByb2dyZXNzIHx8IHByb2dyZXNzLmNhbmNlbGVkKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgYXdhaXQgbGF6eUFzc2V0LndyaXRlQXNzZXQoYXNzZXQpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgYXdhaXQgcHJvZ3Jlc3Muc2V0RXJyb3IoZS5tZXNzYWdlIHx8IGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJvZ3Jlc3MucmVtYWluaW5nID4gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCBwcm9ncmVzcy5hZHZhbmNlKHByb2dyZXNzLnJlbWFpbmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==