@maci-protocol/relayer 0.0.0-ci.2653bc0

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 (181) hide show
  1. package/CHANGELOG.md +134 -0
  2. package/LICENSE +22 -0
  3. package/README.md +149 -0
  4. package/build/hardhat.config.cjs +31 -0
  5. package/build/hardhat.config.cjs.map +1 -0
  6. package/build/hardhat.config.d.cts +22 -0
  7. package/build/hardhat.config.d.cts.map +1 -0
  8. package/build/tests/app.test.d.ts +2 -0
  9. package/build/tests/app.test.d.ts.map +1 -0
  10. package/build/tests/app.test.js +30 -0
  11. package/build/tests/app.test.js.map +1 -0
  12. package/build/tests/constants.d.ts +19 -0
  13. package/build/tests/constants.d.ts.map +1 -0
  14. package/build/tests/constants.js +20 -0
  15. package/build/tests/constants.js.map +1 -0
  16. package/build/tests/messageBatches.test.d.ts +2 -0
  17. package/build/tests/messageBatches.test.d.ts.map +1 -0
  18. package/build/tests/messageBatches.test.js +109 -0
  19. package/build/tests/messageBatches.test.js.map +1 -0
  20. package/build/tests/messages.test.d.ts +2 -0
  21. package/build/tests/messages.test.d.ts.map +1 -0
  22. package/build/tests/messages.test.js +147 -0
  23. package/build/tests/messages.test.js.map +1 -0
  24. package/build/tests/onchain.test.d.ts +2 -0
  25. package/build/tests/onchain.test.d.ts.map +1 -0
  26. package/build/tests/onchain.test.js +101 -0
  27. package/build/tests/onchain.test.js.map +1 -0
  28. package/build/ts/app.module.d.ts +3 -0
  29. package/build/ts/app.module.d.ts.map +1 -0
  30. package/build/ts/app.module.js +51 -0
  31. package/build/ts/app.module.js.map +1 -0
  32. package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
  33. package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
  34. package/build/ts/health/__tests__/health.controller.test.js +22 -0
  35. package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
  36. package/build/ts/health/health.controller.d.ts +10 -0
  37. package/build/ts/health/health.controller.d.ts.map +1 -0
  38. package/build/ts/health/health.controller.js +36 -0
  39. package/build/ts/health/health.controller.js.map +1 -0
  40. package/build/ts/health/health.module.d.ts +3 -0
  41. package/build/ts/health/health.module.d.ts.map +1 -0
  42. package/build/ts/health/health.module.js +17 -0
  43. package/build/ts/health/health.module.js.map +1 -0
  44. package/build/ts/ipfs/__tests__/ipfs.service.test.d.ts +2 -0
  45. package/build/ts/ipfs/__tests__/ipfs.service.test.d.ts.map +1 -0
  46. package/build/ts/ipfs/__tests__/ipfs.service.test.js +23 -0
  47. package/build/ts/ipfs/__tests__/ipfs.service.test.js.map +1 -0
  48. package/build/ts/ipfs/ipfs.module.d.ts +3 -0
  49. package/build/ts/ipfs/ipfs.module.d.ts.map +1 -0
  50. package/build/ts/ipfs/ipfs.module.js +18 -0
  51. package/build/ts/ipfs/ipfs.module.js.map +1 -0
  52. package/build/ts/ipfs/ipfs.service.d.ts +50 -0
  53. package/build/ts/ipfs/ipfs.service.d.ts.map +1 -0
  54. package/build/ts/ipfs/ipfs.service.js +86 -0
  55. package/build/ts/ipfs/ipfs.service.js.map +1 -0
  56. package/build/ts/jest/mongo.d.ts +9 -0
  57. package/build/ts/jest/mongo.d.ts.map +1 -0
  58. package/build/ts/jest/mongo.js +16 -0
  59. package/build/ts/jest/mongo.js.map +1 -0
  60. package/build/ts/jest/setup.d.ts +8 -0
  61. package/build/ts/jest/setup.d.ts.map +1 -0
  62. package/build/ts/jest/setup.js +3 -0
  63. package/build/ts/jest/setup.js.map +1 -0
  64. package/build/ts/jest/transform.d.ts +8 -0
  65. package/build/ts/jest/transform.d.ts.map +1 -0
  66. package/build/ts/jest/transform.js +10 -0
  67. package/build/ts/jest/transform.js.map +1 -0
  68. package/build/ts/main.d.ts +2 -0
  69. package/build/ts/main.d.ts.map +1 -0
  70. package/build/ts/main.js +46 -0
  71. package/build/ts/main.js.map +1 -0
  72. package/build/ts/message/__tests__/message.controller.test.d.ts +2 -0
  73. package/build/ts/message/__tests__/message.controller.test.d.ts.map +1 -0
  74. package/build/ts/message/__tests__/message.controller.test.js +42 -0
  75. package/build/ts/message/__tests__/message.controller.test.js.map +1 -0
  76. package/build/ts/message/__tests__/message.guard.test.d.ts +2 -0
  77. package/build/ts/message/__tests__/message.guard.test.d.ts.map +1 -0
  78. package/build/ts/message/__tests__/message.guard.test.js +98 -0
  79. package/build/ts/message/__tests__/message.guard.test.js.map +1 -0
  80. package/build/ts/message/__tests__/message.repository.test.d.ts +2 -0
  81. package/build/ts/message/__tests__/message.repository.test.d.ts.map +1 -0
  82. package/build/ts/message/__tests__/message.repository.test.js +62 -0
  83. package/build/ts/message/__tests__/message.repository.test.js.map +1 -0
  84. package/build/ts/message/__tests__/message.service.test.d.ts +2 -0
  85. package/build/ts/message/__tests__/message.service.test.d.ts.map +1 -0
  86. package/build/ts/message/__tests__/message.service.test.js +71 -0
  87. package/build/ts/message/__tests__/message.service.test.js.map +1 -0
  88. package/build/ts/message/__tests__/utils.d.ts +6 -0
  89. package/build/ts/message/__tests__/utils.d.ts.map +1 -0
  90. package/build/ts/message/__tests__/utils.js +27 -0
  91. package/build/ts/message/__tests__/utils.js.map +1 -0
  92. package/build/ts/message/__tests__/validation.test.d.ts +2 -0
  93. package/build/ts/message/__tests__/validation.test.d.ts.map +1 -0
  94. package/build/ts/message/__tests__/validation.test.js +21 -0
  95. package/build/ts/message/__tests__/validation.test.js.map +1 -0
  96. package/build/ts/message/message.controller.d.ts +25 -0
  97. package/build/ts/message/message.controller.d.ts.map +1 -0
  98. package/build/ts/message/message.controller.js +66 -0
  99. package/build/ts/message/message.controller.js.map +1 -0
  100. package/build/ts/message/message.dto.d.ts +43 -0
  101. package/build/ts/message/message.dto.d.ts.map +1 -0
  102. package/build/ts/message/message.dto.js +132 -0
  103. package/build/ts/message/message.dto.js.map +1 -0
  104. package/build/ts/message/message.guard.d.ts +33 -0
  105. package/build/ts/message/message.guard.d.ts.map +1 -0
  106. package/build/ts/message/message.guard.js +91 -0
  107. package/build/ts/message/message.guard.js.map +1 -0
  108. package/build/ts/message/message.module.d.ts +3 -0
  109. package/build/ts/message/message.module.d.ts.map +1 -0
  110. package/build/ts/message/message.module.js +24 -0
  111. package/build/ts/message/message.module.js.map +1 -0
  112. package/build/ts/message/message.repository.d.ts +37 -0
  113. package/build/ts/message/message.repository.d.ts.map +1 -0
  114. package/build/ts/message/message.repository.js +77 -0
  115. package/build/ts/message/message.repository.js.map +1 -0
  116. package/build/ts/message/message.schema.d.ts +52 -0
  117. package/build/ts/message/message.schema.d.ts.map +1 -0
  118. package/build/ts/message/message.schema.js +77 -0
  119. package/build/ts/message/message.schema.js.map +1 -0
  120. package/build/ts/message/message.service.d.ts +37 -0
  121. package/build/ts/message/message.service.d.ts.map +1 -0
  122. package/build/ts/message/message.service.js +85 -0
  123. package/build/ts/message/message.service.js.map +1 -0
  124. package/build/ts/message/types.d.ts +35 -0
  125. package/build/ts/message/types.d.ts.map +1 -0
  126. package/build/ts/message/types.js +2 -0
  127. package/build/ts/message/types.js.map +1 -0
  128. package/build/ts/message/validation.d.ts +20 -0
  129. package/build/ts/message/validation.d.ts.map +1 -0
  130. package/build/ts/message/validation.js +41 -0
  131. package/build/ts/message/validation.js.map +1 -0
  132. package/build/ts/messageBatch/__tests__/messageBatch.controller.test.d.ts +2 -0
  133. package/build/ts/messageBatch/__tests__/messageBatch.controller.test.d.ts.map +1 -0
  134. package/build/ts/messageBatch/__tests__/messageBatch.controller.test.js +41 -0
  135. package/build/ts/messageBatch/__tests__/messageBatch.controller.test.js.map +1 -0
  136. package/build/ts/messageBatch/__tests__/messageBatch.repository.test.d.ts +2 -0
  137. package/build/ts/messageBatch/__tests__/messageBatch.repository.test.d.ts.map +1 -0
  138. package/build/ts/messageBatch/__tests__/messageBatch.repository.test.js +55 -0
  139. package/build/ts/messageBatch/__tests__/messageBatch.repository.test.js.map +1 -0
  140. package/build/ts/messageBatch/__tests__/messageBatch.service.test.d.ts +2 -0
  141. package/build/ts/messageBatch/__tests__/messageBatch.service.test.d.ts.map +1 -0
  142. package/build/ts/messageBatch/__tests__/messageBatch.service.test.js +66 -0
  143. package/build/ts/messageBatch/__tests__/messageBatch.service.test.js.map +1 -0
  144. package/build/ts/messageBatch/__tests__/utils.d.ts +5 -0
  145. package/build/ts/messageBatch/__tests__/utils.d.ts.map +1 -0
  146. package/build/ts/messageBatch/__tests__/utils.js +24 -0
  147. package/build/ts/messageBatch/__tests__/utils.js.map +1 -0
  148. package/build/ts/messageBatch/__tests__/validation.test.d.ts +2 -0
  149. package/build/ts/messageBatch/__tests__/validation.test.d.ts.map +1 -0
  150. package/build/ts/messageBatch/__tests__/validation.test.js +20 -0
  151. package/build/ts/messageBatch/__tests__/validation.test.js.map +1 -0
  152. package/build/ts/messageBatch/messageBatch.controller.d.ts +24 -0
  153. package/build/ts/messageBatch/messageBatch.controller.d.ts.map +1 -0
  154. package/build/ts/messageBatch/messageBatch.controller.js +77 -0
  155. package/build/ts/messageBatch/messageBatch.controller.js.map +1 -0
  156. package/build/ts/messageBatch/messageBatch.dto.d.ts +52 -0
  157. package/build/ts/messageBatch/messageBatch.dto.d.ts.map +1 -0
  158. package/build/ts/messageBatch/messageBatch.dto.js +168 -0
  159. package/build/ts/messageBatch/messageBatch.dto.js.map +1 -0
  160. package/build/ts/messageBatch/messageBatch.module.d.ts +3 -0
  161. package/build/ts/messageBatch/messageBatch.module.d.ts.map +1 -0
  162. package/build/ts/messageBatch/messageBatch.module.js +25 -0
  163. package/build/ts/messageBatch/messageBatch.module.js.map +1 -0
  164. package/build/ts/messageBatch/messageBatch.repository.d.ts +39 -0
  165. package/build/ts/messageBatch/messageBatch.repository.d.ts.map +1 -0
  166. package/build/ts/messageBatch/messageBatch.repository.js +72 -0
  167. package/build/ts/messageBatch/messageBatch.repository.js.map +1 -0
  168. package/build/ts/messageBatch/messageBatch.schema.d.ts +36 -0
  169. package/build/ts/messageBatch/messageBatch.schema.d.ts.map +1 -0
  170. package/build/ts/messageBatch/messageBatch.schema.js +45 -0
  171. package/build/ts/messageBatch/messageBatch.schema.js.map +1 -0
  172. package/build/ts/messageBatch/messageBatch.service.d.ts +41 -0
  173. package/build/ts/messageBatch/messageBatch.service.d.ts.map +1 -0
  174. package/build/ts/messageBatch/messageBatch.service.js +107 -0
  175. package/build/ts/messageBatch/messageBatch.service.js.map +1 -0
  176. package/build/ts/messageBatch/validation.d.ts +20 -0
  177. package/build/ts/messageBatch/validation.d.ts.map +1 -0
  178. package/build/ts/messageBatch/validation.js +38 -0
  179. package/build/ts/messageBatch/validation.js.map +1 -0
  180. package/build/tsconfig.build.tsbuildinfo +1 -0
  181. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../../../ts/message/__tests__/validation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { Keypair } from "@maci-protocol/domainobjs";
2
+ import { PublicKeyValidator } from "../validation.js";
3
+ describe("PublicKeyValidator", () => {
4
+ test("should validate valid public key", () => {
5
+ const keypair = new Keypair();
6
+ const validator = new PublicKeyValidator();
7
+ const result = validator.validate(keypair.pubKey.serialize());
8
+ expect(result).toBe(true);
9
+ });
10
+ test("should validate invalid public key", () => {
11
+ const validator = new PublicKeyValidator();
12
+ const result = validator.validate("invalid");
13
+ expect(result).toBe(false);
14
+ });
15
+ test("should return default message properly", () => {
16
+ const validator = new PublicKeyValidator();
17
+ const result = validator.defaultMessage();
18
+ expect(result).toBe("Public key is invalid");
19
+ });
20
+ });
21
+ //# sourceMappingURL=validation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../../../ts/message/__tests__/validation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { PublishMessagesDto } from "./message.dto.js";
2
+ import { Message } from "./message.schema.js";
3
+ import { MessageService } from "./message.service.js";
4
+ export declare class MessageController {
5
+ private readonly messageService;
6
+ /**
7
+ * Logger
8
+ */
9
+ private readonly logger;
10
+ /**
11
+ * Initialize MessageController
12
+ *
13
+ * @param messageService message service
14
+ */
15
+ constructor(messageService: MessageService);
16
+ /**
17
+ * Publish user messages api method.
18
+ * Saves messages batch and then send them onchain by calling `publishMessages` method via cron job.
19
+ *
20
+ * @param args publish messages dto
21
+ * @returns success or not
22
+ */
23
+ publish(args: PublishMessagesDto): Promise<Message[]>;
24
+ }
25
+ //# sourceMappingURL=message.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.controller.d.ts","sourceRoot":"","sources":["../../../ts/message/message.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAGa,iBAAiB;IAWhB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAV3C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAE7D;;;;OAIG;gBAC0B,cAAc,EAAE,cAAc;IAE3D;;;;;;OAMG;IAMG,OAAO,CAAS,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAMpE"}
@@ -0,0 +1,66 @@
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
+ };
13
+ var MessageController_1;
14
+ /* eslint-disable @typescript-eslint/no-shadow */
15
+ import { Body, Controller, HttpException, HttpStatus, Logger, Post, UseGuards } from "@nestjs/common";
16
+ import { ApiBody, ApiResponse, ApiTags } from "@nestjs/swagger";
17
+ import { PublishMessagesDto } from "./message.dto.js";
18
+ import { MessageGuard } from "./message.guard.js";
19
+ import { MessageService } from "./message.service.js";
20
+ let MessageController = MessageController_1 = class MessageController {
21
+ messageService;
22
+ /**
23
+ * Logger
24
+ */
25
+ logger = new Logger(MessageController_1.name);
26
+ /**
27
+ * Initialize MessageController
28
+ *
29
+ * @param messageService message service
30
+ */
31
+ constructor(messageService) {
32
+ this.messageService = messageService;
33
+ }
34
+ /**
35
+ * Publish user messages api method.
36
+ * Saves messages batch and then send them onchain by calling `publishMessages` method via cron job.
37
+ *
38
+ * @param args publish messages dto
39
+ * @returns success or not
40
+ */
41
+ async publish(args) {
42
+ return this.messageService.saveMessages(args).catch((error) => {
43
+ this.logger.error(`Error:`, error);
44
+ throw new HttpException(error.message, HttpStatus.BAD_REQUEST);
45
+ });
46
+ }
47
+ };
48
+ __decorate([
49
+ ApiBody({ type: PublishMessagesDto }),
50
+ ApiResponse({ status: HttpStatus.CREATED, description: "The messages have been successfully accepted" }),
51
+ ApiResponse({ status: HttpStatus.FORBIDDEN, description: "Forbidden" }),
52
+ ApiResponse({ status: HttpStatus.BAD_REQUEST, description: "BadRequest" }),
53
+ Post("publish"),
54
+ __param(0, Body()),
55
+ __metadata("design:type", Function),
56
+ __metadata("design:paramtypes", [PublishMessagesDto]),
57
+ __metadata("design:returntype", Promise)
58
+ ], MessageController.prototype, "publish", null);
59
+ MessageController = MessageController_1 = __decorate([
60
+ ApiTags("v1/messages"),
61
+ Controller("v1/messages"),
62
+ UseGuards(MessageGuard),
63
+ __metadata("design:paramtypes", [MessageService])
64
+ ], MessageController);
65
+ export { MessageController };
66
+ //# sourceMappingURL=message.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.controller.js","sourceRoot":"","sources":["../../../ts/message/message.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iDAAiD;AACjD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK/C,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAWC;IAV7B;;OAEG;IACc,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;OAIG;IACH,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAE/D;;;;;;OAMG;IAMG,AAAN,KAAK,CAAC,OAAO,CAAS,IAAwB;QAC5C,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;YACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AANO;IALL,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;IACxG,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC1E,IAAI,CAAC,SAAS,CAAC;IACD,WAAA,IAAI,EAAE,CAAA;;qCAAO,kBAAkB;;gDAK7C;AA9BU,iBAAiB;IAH7B,OAAO,CAAC,aAAa,CAAC;IACtB,UAAU,CAAC,aAAa,CAAC;IACzB,SAAS,CAAC,YAAY,CAAC;qCAYuB,cAAc;GAXhD,iBAAiB,CA+B7B"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Max messages per batch
3
+ */
4
+ export declare const MAX_MESSAGES: number;
5
+ /**
6
+ * Data transfer object for user message
7
+ */
8
+ export declare class MessageContractParamsDto {
9
+ /**
10
+ * Message data
11
+ */
12
+ data: string[];
13
+ /**
14
+ * Public key
15
+ */
16
+ publicKey: string;
17
+ }
18
+ /**
19
+ * Data transfer object for publish messages
20
+ */
21
+ export declare class PublishMessagesDto {
22
+ /**
23
+ * State leaf index
24
+ */
25
+ stateLeafIndex: number;
26
+ /**
27
+ * User poll joined proof
28
+ */
29
+ proof: string[];
30
+ /**
31
+ * Poll id
32
+ */
33
+ poll: number;
34
+ /**
35
+ * Maci contract address
36
+ */
37
+ maciContractAddress: string;
38
+ /**
39
+ * Messages
40
+ */
41
+ messages: MessageContractParamsDto[];
42
+ }
43
+ //# sourceMappingURL=message.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.dto.d.ts","sourceRoot":"","sources":["../../../ts/message/message.dto.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,eAAO,MAAM,YAAY,QAAmC,CAAC;AAE7D;;GAEG;AACH,qBAAa,wBAAwB;IACnC;;OAEG;IAWH,IAAI,EAAG,MAAM,EAAE,CAAC;IAEhB;;OAEG;IAMH,SAAS,EAAG,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IAQH,cAAc,EAAG,MAAM,CAAC;IAExB;;OAEG;IAYH,KAAK,EAAG,MAAM,EAAE,CAAC;IAEjB;;OAEG;IAQH,IAAI,EAAG,MAAM,CAAC;IAEd;;OAEG;IAMH,mBAAmB,EAAG,MAAM,CAAC;IAE7B;;OAEG;IAUH,QAAQ,EAAG,wBAAwB,EAAE,CAAC;CACvC"}
@@ -0,0 +1,132 @@
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
+ import { Message } from "@maci-protocol/domainobjs";
11
+ import { ApiProperty } from "@nestjs/swagger";
12
+ import { Type } from "class-transformer";
13
+ import { IsEthereumAddress, IsInt, Min, Validate, IsArray, ArrayMinSize, ArrayMaxSize, ValidateNested, ArrayNotEmpty, IsString, MaxLength, MinLength, } from "class-validator";
14
+ import { PublicKeyValidator } from "./validation.js";
15
+ /**
16
+ * Max messages per batch
17
+ */
18
+ export const MAX_MESSAGES = Number(process.env.MAX_MESSAGES);
19
+ /**
20
+ * Data transfer object for user message
21
+ */
22
+ export class MessageContractParamsDto {
23
+ /**
24
+ * Message data
25
+ */
26
+ data;
27
+ /**
28
+ * Public key
29
+ */
30
+ publicKey;
31
+ }
32
+ __decorate([
33
+ ApiProperty({
34
+ description: "Message data",
35
+ type: [String],
36
+ }),
37
+ IsArray(),
38
+ IsString({ each: true }),
39
+ MinLength(1, { each: true }),
40
+ MaxLength(256, { each: true }),
41
+ ArrayMinSize(Message.DATA_LENGTH),
42
+ ArrayMaxSize(Message.DATA_LENGTH),
43
+ __metadata("design:type", Array)
44
+ ], MessageContractParamsDto.prototype, "data", void 0);
45
+ __decorate([
46
+ ApiProperty({
47
+ description: "Public key",
48
+ type: String,
49
+ }),
50
+ Validate(PublicKeyValidator),
51
+ __metadata("design:type", String)
52
+ ], MessageContractParamsDto.prototype, "publicKey", void 0);
53
+ /**
54
+ * Data transfer object for publish messages
55
+ */
56
+ export class PublishMessagesDto {
57
+ /**
58
+ * State leaf index
59
+ */
60
+ stateLeafIndex;
61
+ /**
62
+ * User poll joined proof
63
+ */
64
+ proof;
65
+ /**
66
+ * Poll id
67
+ */
68
+ poll;
69
+ /**
70
+ * Maci contract address
71
+ */
72
+ maciContractAddress;
73
+ /**
74
+ * Messages
75
+ */
76
+ messages;
77
+ }
78
+ __decorate([
79
+ ApiProperty({
80
+ description: "State leaf index",
81
+ minimum: 0,
82
+ type: Number,
83
+ }),
84
+ IsInt(),
85
+ Min(0),
86
+ __metadata("design:type", Number)
87
+ ], PublishMessagesDto.prototype, "stateLeafIndex", void 0);
88
+ __decorate([
89
+ ApiProperty({
90
+ description: "User poll joined proof",
91
+ type: [String],
92
+ }),
93
+ IsArray(),
94
+ ArrayNotEmpty(),
95
+ ArrayMinSize(8),
96
+ ArrayMaxSize(8),
97
+ IsString({ each: true }),
98
+ MinLength(1, { each: true }),
99
+ MaxLength(256, { each: true }),
100
+ __metadata("design:type", Array)
101
+ ], PublishMessagesDto.prototype, "proof", void 0);
102
+ __decorate([
103
+ ApiProperty({
104
+ description: "Poll id",
105
+ minimum: 0,
106
+ type: Number,
107
+ }),
108
+ IsInt(),
109
+ Min(0),
110
+ __metadata("design:type", Number)
111
+ ], PublishMessagesDto.prototype, "poll", void 0);
112
+ __decorate([
113
+ ApiProperty({
114
+ description: "MACI contract address",
115
+ type: String,
116
+ }),
117
+ IsEthereumAddress(),
118
+ __metadata("design:type", String)
119
+ ], PublishMessagesDto.prototype, "maciContractAddress", void 0);
120
+ __decorate([
121
+ ApiProperty({
122
+ description: "User messages with public key",
123
+ type: [MessageContractParamsDto],
124
+ }),
125
+ IsArray(),
126
+ ArrayMinSize(1),
127
+ ArrayMaxSize(MAX_MESSAGES),
128
+ ValidateNested({ each: true }),
129
+ Type(() => MessageContractParamsDto),
130
+ __metadata("design:type", Array)
131
+ ], PublishMessagesDto.prototype, "messages", void 0);
132
+ //# sourceMappingURL=message.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.dto.js","sourceRoot":"","sources":["../../../ts/message/message.dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type CanActivate, type ExecutionContext, type CustomDecorator } from "@nestjs/common";
2
+ import { Reflector } from "@nestjs/core";
3
+ /**
4
+ * Public metadata key
5
+ */
6
+ export declare const PUBLIC_METADATA_KEY = "isPublic";
7
+ /**
8
+ * Public decorator to by-pass auth checks
9
+ *
10
+ * @returns public decorator
11
+ */
12
+ export declare const Public: () => CustomDecorator;
13
+ export declare class MessageGuard implements CanActivate {
14
+ private readonly reflector;
15
+ /**
16
+ * Logger
17
+ */
18
+ private readonly logger;
19
+ /**
20
+ * Initialized MessageGuard
21
+ *
22
+ * @param reflector Reflector
23
+ */
24
+ constructor(reflector: Reflector);
25
+ /**
26
+ * This function should return a boolean, indicating whether the request is allowed or not based on proof.
27
+ *
28
+ * @param ctx - execution context
29
+ * @returns whether the request is allowed or not
30
+ */
31
+ canActivate(ctx: ExecutionContext): Promise<boolean>;
32
+ }
33
+ //# sourceMappingURL=message.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.guard.d.ts","sourceRoot":"","sources":["../../../ts/message/message.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAGhB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAGrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAYzC;;GAEG;AACH,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,MAAM,QAAO,eAAyD,CAAC;AAEpF,qBACa,YAAa,YAAW,WAAW;IAWlC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAVtC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;OAIG;gBAC0B,SAAS,EAAE,SAAS;IAIjD;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAmD3D"}
@@ -0,0 +1,91 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var MessageGuard_1;
11
+ import { MACI__factory as MACIFactory, Poll__factory as PollFactory } from "@maci-protocol/sdk";
12
+ import { Logger, Injectable, SetMetadata, HttpException, HttpStatus, } from "@nestjs/common";
13
+ import { Reflector } from "@nestjs/core";
14
+ import { validate } from "class-validator";
15
+ import hardhat from "hardhat";
16
+ import flatMap from "lodash/flatMap.js";
17
+ import flatten from "lodash/flatten.js";
18
+ import map from "lodash/map.js";
19
+ import values from "lodash/values.js";
20
+ import { MAX_MESSAGES, MessageContractParamsDto, PublishMessagesDto } from "./message.dto.js";
21
+ /**
22
+ * Public metadata key
23
+ */
24
+ export const PUBLIC_METADATA_KEY = "isPublic";
25
+ /**
26
+ * Public decorator to by-pass auth checks
27
+ *
28
+ * @returns public decorator
29
+ */
30
+ export const Public = () => SetMetadata(PUBLIC_METADATA_KEY, true);
31
+ let MessageGuard = MessageGuard_1 = class MessageGuard {
32
+ reflector;
33
+ /**
34
+ * Logger
35
+ */
36
+ logger;
37
+ /**
38
+ * Initialized MessageGuard
39
+ *
40
+ * @param reflector Reflector
41
+ */
42
+ constructor(reflector) {
43
+ this.reflector = reflector;
44
+ this.logger = new Logger(MessageGuard_1.name);
45
+ }
46
+ /**
47
+ * This function should return a boolean, indicating whether the request is allowed or not based on proof.
48
+ *
49
+ * @param ctx - execution context
50
+ * @returns whether the request is allowed or not
51
+ */
52
+ async canActivate(ctx) {
53
+ const isPublic = this.reflector.get(PUBLIC_METADATA_KEY, ctx.getHandler());
54
+ if (isPublic) {
55
+ return true;
56
+ }
57
+ const request = ctx.switchToHttp().getRequest();
58
+ const messages = Array.isArray(request.body?.messages) && request.body.messages.length <= MAX_MESSAGES
59
+ ? request.body.messages
60
+ : [];
61
+ const messageErrors = await Promise.all(map(messages, (message) => validate(Object.assign(new MessageContractParamsDto(), message)))).then((errors) => flatten(errors));
62
+ const dto = Object.assign(new PublishMessagesDto(), request.body);
63
+ const dtoErrors = await validate(dto);
64
+ if (dtoErrors.length > 0 || messageErrors.length > 0) {
65
+ this.logger.warn("Invalid body: ", dtoErrors);
66
+ throw new HttpException({
67
+ error: "Bad Request",
68
+ message: flatMap(dtoErrors, (error) => values(error.constraints)).concat(flatMap(messageErrors, ({ constraints }) => values(constraints).map((value, index) => `messages.${index}.${value}`))),
69
+ statusCode: HttpStatus.BAD_REQUEST,
70
+ }, HttpStatus.BAD_REQUEST);
71
+ }
72
+ try {
73
+ const [signer] = await hardhat.ethers.getSigners();
74
+ const maciContract = MACIFactory.connect(dto.maciContractAddress, signer);
75
+ const pollAddresses = await maciContract.polls(dto.poll);
76
+ const pollContract = PollFactory.connect(pollAddresses.poll, signer);
77
+ const isValid = await pollContract.verifyJoinedPollProof(dto.stateLeafIndex, dto.proof);
78
+ return isValid;
79
+ }
80
+ catch (error) {
81
+ this.logger.error("Activate error: ", error);
82
+ return false;
83
+ }
84
+ }
85
+ };
86
+ MessageGuard = MessageGuard_1 = __decorate([
87
+ Injectable(),
88
+ __metadata("design:paramtypes", [Reflector])
89
+ ], MessageGuard);
90
+ export { MessageGuard };
91
+ //# sourceMappingURL=message.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.guard.js","sourceRoot":"","sources":["../../../ts/message/message.guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare class MessageModule {
2
+ }
3
+ //# sourceMappingURL=message.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.module.d.ts","sourceRoot":"","sources":["../../../ts/message/message.module.ts"],"names":[],"mappings":"AAUA,qBAKa,aAAa;CAAG"}
@@ -0,0 +1,24 @@
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
+ import { Module } from "@nestjs/common";
8
+ import { MongooseModule } from "@nestjs/mongoose";
9
+ import { MessageBatchModule } from "../messageBatch/messageBatch.module.js";
10
+ import { MessageController } from "./message.controller.js";
11
+ import { MessageRepository } from "./message.repository.js";
12
+ import { Message, MessageSchema } from "./message.schema.js";
13
+ import { MessageService } from "./message.service.js";
14
+ let MessageModule = class MessageModule {
15
+ };
16
+ MessageModule = __decorate([
17
+ Module({
18
+ imports: [MongooseModule.forFeature([{ name: Message.name, schema: MessageSchema }]), MessageBatchModule],
19
+ controllers: [MessageController],
20
+ providers: [MessageService, MessageRepository],
21
+ })
22
+ ], MessageModule);
23
+ export { MessageModule };
24
+ //# sourceMappingURL=message.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.module.js","sourceRoot":"","sources":["../../../ts/message/message.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO/C,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,aAAa;IALzB,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC;QACzG,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAChC,SAAS,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;KAC/C,CAAC;GACW,aAAa,CAAG"}
@@ -0,0 +1,37 @@
1
+ import { Model, RootFilterQuery } from "mongoose";
2
+ import type { ICreateMessages } from "./types.js";
3
+ import { Message } from "./message.schema.js";
4
+ /**
5
+ * Message repository is used to interact with the message collection
6
+ */
7
+ export declare class MessageRepository {
8
+ private MessageModel;
9
+ /**
10
+ * Logger
11
+ */
12
+ private readonly logger;
13
+ /**
14
+ * Initializes the message repository
15
+ *
16
+ * @param MessageModel message model
17
+ */
18
+ constructor(MessageModel: Model<Message>);
19
+ /**
20
+ * Create messages from dto
21
+ *
22
+ * @param dto publish messages dto
23
+ * @returns inserted messages
24
+ */
25
+ create(dto: ICreateMessages): Promise<Message[]>;
26
+ /**
27
+ * Find messages with filter query
28
+ *
29
+ * @param filter filter query
30
+ * @returns messages
31
+ */
32
+ find(filter: RootFilterQuery<Message>, { limit, skip }?: Partial<{
33
+ limit: number;
34
+ skip: number;
35
+ }>): Promise<Message[]>;
36
+ }
37
+ //# sourceMappingURL=message.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.repository.d.ts","sourceRoot":"","sources":["../../../ts/message/message.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAC;AAE9D;;GAEG;AACH,qBACa,iBAAiB;IAWW,OAAO,CAAC,YAAY;IAV3D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IAErE;;;;OAIG;gBAC4C,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;IAE3E;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAetD;;;;;OAKG;IACG,IAAI,CACR,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,EAAE,KAAsB,EAAE,IAAQ,EAAE,GAAE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAM,GAClF,OAAO,CAAC,OAAO,EAAE,CAAC;CAUtB"}
@@ -0,0 +1,77 @@
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
+ };
13
+ var MessageRepository_1;
14
+ import { Injectable, Logger } from "@nestjs/common";
15
+ import { InjectModel } from "@nestjs/mongoose";
16
+ import { Model } from "mongoose";
17
+ import { Message, MESSAGES_LIMIT } from "./message.schema.js";
18
+ /**
19
+ * Message repository is used to interact with the message collection
20
+ */
21
+ let MessageRepository = MessageRepository_1 = class MessageRepository {
22
+ MessageModel;
23
+ /**
24
+ * Logger
25
+ */
26
+ logger = new Logger(MessageRepository_1.name);
27
+ /**
28
+ * Initializes the message repository
29
+ *
30
+ * @param MessageModel message model
31
+ */
32
+ constructor(MessageModel) {
33
+ this.MessageModel = MessageModel;
34
+ }
35
+ /**
36
+ * Create messages from dto
37
+ *
38
+ * @param dto publish messages dto
39
+ * @returns inserted messages
40
+ */
41
+ async create(dto) {
42
+ const messages = dto.messages.map(({ data, publicKey, hash }) => ({
43
+ data,
44
+ publicKey,
45
+ maciContractAddress: dto.maciContractAddress,
46
+ hash,
47
+ poll: dto.poll,
48
+ }));
49
+ return this.MessageModel.insertMany(messages).catch((error) => {
50
+ this.logger.error(`Create messages error:`, error);
51
+ throw error;
52
+ });
53
+ }
54
+ /**
55
+ * Find messages with filter query
56
+ *
57
+ * @param filter filter query
58
+ * @returns messages
59
+ */
60
+ async find(filter, { limit = MESSAGES_LIMIT, skip = 0 } = {}) {
61
+ return this.MessageModel.find(filter)
62
+ .limit(limit)
63
+ .skip(skip)
64
+ .exec()
65
+ .catch((error) => {
66
+ this.logger.error(`Find messages error:`, error);
67
+ throw error;
68
+ });
69
+ }
70
+ };
71
+ MessageRepository = MessageRepository_1 = __decorate([
72
+ Injectable(),
73
+ __param(0, InjectModel(Message.name)),
74
+ __metadata("design:paramtypes", [Model])
75
+ ], MessageRepository);
76
+ export { MessageRepository };
77
+ //# sourceMappingURL=message.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.repository.js","sourceRoot":"","sources":["../../../ts/message/message.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAmB,MAAM,UAAU,CAAC;AAIlD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;GAEG;AAEI,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAWmB;IAV/C;;OAEG;IACc,MAAM,GAAW,IAAI,MAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAErE;;;;OAIG;IACH,YAA+C,YAA4B;QAA5B,iBAAY,GAAZ,YAAY,CAAgB;IAAG,CAAC;IAE/E;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,GAAoB;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI;YACJ,SAAS;YACT,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;YAC5C,IAAI;YACJ,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CACR,MAAgC,EAChC,EAAE,KAAK,GAAG,cAAc,EAAE,IAAI,GAAG,CAAC,KAA+C,EAAE;QAEnF,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;aAClC,KAAK,CAAC,KAAK,CAAC;aACZ,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,EAAE;aACN,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AArDY,iBAAiB;IAD7B,UAAU,EAAE;IAYE,WAAA,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;qCAAuB,KAAK;GAXvD,iBAAiB,CAqD7B"}