@maci-protocol/relayer 0.0.0-ci.1e276ed

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,41 @@
1
+ import type { MessageBatch } from "./messageBatch.schema.js";
2
+ import type { RootFilterQuery } from "mongoose";
3
+ import { IpfsService } from "../ipfs/ipfs.service.js";
4
+ import { type MessageBatchDto } from "./messageBatch.dto.js";
5
+ import { MessageBatchRepository } from "./messageBatch.repository.js";
6
+ /**
7
+ * MessageBatchService is responsible for saving message batches and send them to ipfs
8
+ */
9
+ export declare class MessageBatchService {
10
+ private readonly ipfsService;
11
+ private readonly messageBatchRepository;
12
+ /**
13
+ * Logger
14
+ */
15
+ private readonly logger;
16
+ /**
17
+ * Initialize MessageBatchService
18
+ *
19
+ * @param ipfsService ipfs service
20
+ * @param messageBatchRepository message batch repository
21
+ */
22
+ constructor(ipfsService: IpfsService, messageBatchRepository: MessageBatchRepository);
23
+ /**
24
+ * Find message batches
25
+ *
26
+ * @param filter filter query
27
+ * @param limit limit
28
+ */
29
+ findMessageBatches(filter: RootFilterQuery<MessageBatch>, { limit, skip }?: Partial<{
30
+ limit: number;
31
+ skip: number;
32
+ }>): Promise<MessageBatch[]>;
33
+ /**
34
+ * Save messages batch
35
+ *
36
+ * @param args publish messages dto
37
+ * @returns success or not
38
+ */
39
+ saveMessageBatches(args: Omit<MessageBatchDto, "ipfsHash">[]): Promise<MessageBatch[]>;
40
+ }
41
+ //# sourceMappingURL=messageBatch.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBatch.service.d.ts","sourceRoot":"","sources":["../../../ts/messageBatch/messageBatch.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE;;GAEG;AACH,qBACa,mBAAmB;IAa5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAbzC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgD;IAEvE;;;;;OAKG;gBAEgB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,sBAAsB;IAKjE;;;;;OAKG;IACG,kBAAkB,CACtB,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,EACrC,EAAE,KAAoB,EAAE,IAAQ,EAAE,GAAE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAM,GAChF,OAAO,CAAC,YAAY,EAAE,CAAC;IAO1B;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAwD7F"}
@@ -0,0 +1,107 @@
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 MessageBatchService_1;
11
+ import { PubKey } from "@maci-protocol/domainobjs";
12
+ import { Injectable, Logger } from "@nestjs/common";
13
+ import { validate } from "class-validator";
14
+ import flatten from "lodash/flatten.js";
15
+ import uniqBy from "lodash/uniqBy.js";
16
+ import { IpfsService } from "../ipfs/ipfs.service.js";
17
+ import { MAX_MESSAGES } from "./messageBatch.dto.js";
18
+ import { MessageBatchRepository } from "./messageBatch.repository.js";
19
+ /**
20
+ * MessageBatchService is responsible for saving message batches and send them to ipfs
21
+ */
22
+ let MessageBatchService = MessageBatchService_1 = class MessageBatchService {
23
+ ipfsService;
24
+ messageBatchRepository;
25
+ /**
26
+ * Logger
27
+ */
28
+ logger = new Logger(MessageBatchService_1.name);
29
+ /**
30
+ * Initialize MessageBatchService
31
+ *
32
+ * @param ipfsService ipfs service
33
+ * @param messageBatchRepository message batch repository
34
+ */
35
+ constructor(ipfsService, messageBatchRepository) {
36
+ this.ipfsService = ipfsService;
37
+ this.messageBatchRepository = messageBatchRepository;
38
+ ipfsService.init();
39
+ }
40
+ /**
41
+ * Find message batches
42
+ *
43
+ * @param filter filter query
44
+ * @param limit limit
45
+ */
46
+ async findMessageBatches(filter, { limit = MAX_MESSAGES, skip = 0 } = {}) {
47
+ return this.messageBatchRepository.find(filter, { limit, skip }).catch((error) => {
48
+ this.logger.error(`Find message batches error:`, error);
49
+ throw error;
50
+ });
51
+ }
52
+ /**
53
+ * Save messages batch
54
+ *
55
+ * @param args publish messages dto
56
+ * @returns success or not
57
+ */
58
+ async saveMessageBatches(args) {
59
+ const validationErrors = await Promise.all(args.map((values) => validate(values))).then((result) => result.reduce((acc, errors) => {
60
+ acc.push(...errors);
61
+ return acc;
62
+ }, []));
63
+ if (validationErrors.length > 0) {
64
+ this.logger.error(`Validation error:`, validationErrors);
65
+ throw new Error("Validation error");
66
+ }
67
+ const allMessages = flatten(args.map((item) => item.messages)).map((message) => ({
68
+ poll: message.poll,
69
+ data: message.data,
70
+ hash: message.hash,
71
+ maciAddress: message.maciContractAddress,
72
+ publicKey: PubKey.deserialize(message.publicKey).asArray().map(String),
73
+ }));
74
+ const ipfsHash = await this.ipfsService.add(allMessages).catch((error) => {
75
+ this.logger.error(`Upload message batches to ipfs error:`, error);
76
+ throw error;
77
+ });
78
+ const messageBatches = await this.messageBatchRepository
79
+ .create(args.map(({ messages }) => ({ messages, ipfsHash })))
80
+ .catch((error) => {
81
+ this.logger.error(`Save message batch error:`, error);
82
+ throw error;
83
+ });
84
+ const [{ maciContractAddress, pollId }] = uniqBy(allMessages.map(({ maciAddress, poll }) => ({
85
+ maciContractAddress: maciAddress,
86
+ pollId: poll,
87
+ })), "maciContractAddress");
88
+ const { getDefaultSigner, relayMessages } = await import("@maci-protocol/sdk");
89
+ const signer = await getDefaultSigner();
90
+ const bytes32IpfsHash = await this.ipfsService.cidToBytes32(ipfsHash);
91
+ await relayMessages({
92
+ maciAddress: maciContractAddress,
93
+ pollId,
94
+ ipfsHash: bytes32IpfsHash,
95
+ messages: allMessages,
96
+ signer,
97
+ });
98
+ return messageBatches;
99
+ }
100
+ };
101
+ MessageBatchService = MessageBatchService_1 = __decorate([
102
+ Injectable(),
103
+ __metadata("design:paramtypes", [IpfsService,
104
+ MessageBatchRepository])
105
+ ], MessageBatchService);
106
+ export { MessageBatchService };
107
+ //# sourceMappingURL=messageBatch.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBatch.service.js","sourceRoot":"","sources":["../../../ts/messageBatch/messageBatch.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ValidatorConstraintInterface } from "class-validator";
2
+ /**
3
+ * Validate public key
4
+ */
5
+ export declare class IpfsHashValidator implements ValidatorConstraintInterface {
6
+ /**
7
+ * Validate ipfs hash
8
+ *
9
+ * @param text text to validate
10
+ * @returns status of validation
11
+ */
12
+ validate(text: string): boolean;
13
+ /**
14
+ * Return default validation message
15
+ *
16
+ * @returns default validation message
17
+ */
18
+ defaultMessage(): string;
19
+ }
20
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../ts/messageBatch/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAOpF;;GAEG;AACH,qBACa,iBAAkB,YAAW,4BAA4B;IACpE;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B;;;;OAIG;IACH,cAAc,IAAI,MAAM;CAGzB"}
@@ -0,0 +1,38 @@
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 { ValidatorConstraint } from "class-validator";
8
+ /**
9
+ * Check if the string is a valid base58 encoded CIDv1 hash
10
+ */
11
+ const IPFS_REGEX = /^Qm[a-zA-Z0-9]{44}$/;
12
+ /**
13
+ * Validate public key
14
+ */
15
+ let IpfsHashValidator = class IpfsHashValidator {
16
+ /**
17
+ * Validate ipfs hash
18
+ *
19
+ * @param text text to validate
20
+ * @returns status of validation
21
+ */
22
+ validate(text) {
23
+ return IPFS_REGEX.test(text);
24
+ }
25
+ /**
26
+ * Return default validation message
27
+ *
28
+ * @returns default validation message
29
+ */
30
+ defaultMessage() {
31
+ return "IPFS hash is invalid";
32
+ }
33
+ };
34
+ IpfsHashValidator = __decorate([
35
+ ValidatorConstraint({ name: "ipfsHash", async: false })
36
+ ], IpfsHashValidator);
37
+ export { IpfsHashValidator };
38
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../ts/messageBatch/validation.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAgC,MAAM,iBAAiB,CAAC;AAEpF;;GAEG;AACH,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC;;GAEG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,IAAY;QACnB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,OAAO,sBAAsB,CAAC;IAChC,CAAC;CACF,CAAA;AAnBY,iBAAiB;IAD7B,mBAAmB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;GAC3C,iBAAiB,CAmB7B"}