@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.
- package/CHANGELOG.md +134 -0
- package/LICENSE +22 -0
- package/README.md +149 -0
- package/build/hardhat.config.cjs +31 -0
- package/build/hardhat.config.cjs.map +1 -0
- package/build/hardhat.config.d.cts +22 -0
- package/build/hardhat.config.d.cts.map +1 -0
- package/build/tests/app.test.d.ts +2 -0
- package/build/tests/app.test.d.ts.map +1 -0
- package/build/tests/app.test.js +30 -0
- package/build/tests/app.test.js.map +1 -0
- package/build/tests/constants.d.ts +19 -0
- package/build/tests/constants.d.ts.map +1 -0
- package/build/tests/constants.js +20 -0
- package/build/tests/constants.js.map +1 -0
- package/build/tests/messageBatches.test.d.ts +2 -0
- package/build/tests/messageBatches.test.d.ts.map +1 -0
- package/build/tests/messageBatches.test.js +109 -0
- package/build/tests/messageBatches.test.js.map +1 -0
- package/build/tests/messages.test.d.ts +2 -0
- package/build/tests/messages.test.d.ts.map +1 -0
- package/build/tests/messages.test.js +147 -0
- package/build/tests/messages.test.js.map +1 -0
- package/build/tests/onchain.test.d.ts +2 -0
- package/build/tests/onchain.test.d.ts.map +1 -0
- package/build/tests/onchain.test.js +101 -0
- package/build/tests/onchain.test.js.map +1 -0
- package/build/ts/app.module.d.ts +3 -0
- package/build/ts/app.module.d.ts.map +1 -0
- package/build/ts/app.module.js +51 -0
- package/build/ts/app.module.js.map +1 -0
- package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
- package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
- package/build/ts/health/__tests__/health.controller.test.js +22 -0
- package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
- package/build/ts/health/health.controller.d.ts +10 -0
- package/build/ts/health/health.controller.d.ts.map +1 -0
- package/build/ts/health/health.controller.js +36 -0
- package/build/ts/health/health.controller.js.map +1 -0
- package/build/ts/health/health.module.d.ts +3 -0
- package/build/ts/health/health.module.d.ts.map +1 -0
- package/build/ts/health/health.module.js +17 -0
- package/build/ts/health/health.module.js.map +1 -0
- package/build/ts/ipfs/__tests__/ipfs.service.test.d.ts +2 -0
- package/build/ts/ipfs/__tests__/ipfs.service.test.d.ts.map +1 -0
- package/build/ts/ipfs/__tests__/ipfs.service.test.js +23 -0
- package/build/ts/ipfs/__tests__/ipfs.service.test.js.map +1 -0
- package/build/ts/ipfs/ipfs.module.d.ts +3 -0
- package/build/ts/ipfs/ipfs.module.d.ts.map +1 -0
- package/build/ts/ipfs/ipfs.module.js +18 -0
- package/build/ts/ipfs/ipfs.module.js.map +1 -0
- package/build/ts/ipfs/ipfs.service.d.ts +50 -0
- package/build/ts/ipfs/ipfs.service.d.ts.map +1 -0
- package/build/ts/ipfs/ipfs.service.js +86 -0
- package/build/ts/ipfs/ipfs.service.js.map +1 -0
- package/build/ts/jest/mongo.d.ts +9 -0
- package/build/ts/jest/mongo.d.ts.map +1 -0
- package/build/ts/jest/mongo.js +16 -0
- package/build/ts/jest/mongo.js.map +1 -0
- package/build/ts/jest/setup.d.ts +8 -0
- package/build/ts/jest/setup.d.ts.map +1 -0
- package/build/ts/jest/setup.js +3 -0
- package/build/ts/jest/setup.js.map +1 -0
- package/build/ts/jest/transform.d.ts +8 -0
- package/build/ts/jest/transform.d.ts.map +1 -0
- package/build/ts/jest/transform.js +10 -0
- package/build/ts/jest/transform.js.map +1 -0
- package/build/ts/main.d.ts +2 -0
- package/build/ts/main.d.ts.map +1 -0
- package/build/ts/main.js +46 -0
- package/build/ts/main.js.map +1 -0
- package/build/ts/message/__tests__/message.controller.test.d.ts +2 -0
- package/build/ts/message/__tests__/message.controller.test.d.ts.map +1 -0
- package/build/ts/message/__tests__/message.controller.test.js +42 -0
- package/build/ts/message/__tests__/message.controller.test.js.map +1 -0
- package/build/ts/message/__tests__/message.guard.test.d.ts +2 -0
- package/build/ts/message/__tests__/message.guard.test.d.ts.map +1 -0
- package/build/ts/message/__tests__/message.guard.test.js +98 -0
- package/build/ts/message/__tests__/message.guard.test.js.map +1 -0
- package/build/ts/message/__tests__/message.repository.test.d.ts +2 -0
- package/build/ts/message/__tests__/message.repository.test.d.ts.map +1 -0
- package/build/ts/message/__tests__/message.repository.test.js +62 -0
- package/build/ts/message/__tests__/message.repository.test.js.map +1 -0
- package/build/ts/message/__tests__/message.service.test.d.ts +2 -0
- package/build/ts/message/__tests__/message.service.test.d.ts.map +1 -0
- package/build/ts/message/__tests__/message.service.test.js +71 -0
- package/build/ts/message/__tests__/message.service.test.js.map +1 -0
- package/build/ts/message/__tests__/utils.d.ts +6 -0
- package/build/ts/message/__tests__/utils.d.ts.map +1 -0
- package/build/ts/message/__tests__/utils.js +27 -0
- package/build/ts/message/__tests__/utils.js.map +1 -0
- package/build/ts/message/__tests__/validation.test.d.ts +2 -0
- package/build/ts/message/__tests__/validation.test.d.ts.map +1 -0
- package/build/ts/message/__tests__/validation.test.js +21 -0
- package/build/ts/message/__tests__/validation.test.js.map +1 -0
- package/build/ts/message/message.controller.d.ts +25 -0
- package/build/ts/message/message.controller.d.ts.map +1 -0
- package/build/ts/message/message.controller.js +66 -0
- package/build/ts/message/message.controller.js.map +1 -0
- package/build/ts/message/message.dto.d.ts +43 -0
- package/build/ts/message/message.dto.d.ts.map +1 -0
- package/build/ts/message/message.dto.js +132 -0
- package/build/ts/message/message.dto.js.map +1 -0
- package/build/ts/message/message.guard.d.ts +33 -0
- package/build/ts/message/message.guard.d.ts.map +1 -0
- package/build/ts/message/message.guard.js +91 -0
- package/build/ts/message/message.guard.js.map +1 -0
- package/build/ts/message/message.module.d.ts +3 -0
- package/build/ts/message/message.module.d.ts.map +1 -0
- package/build/ts/message/message.module.js +24 -0
- package/build/ts/message/message.module.js.map +1 -0
- package/build/ts/message/message.repository.d.ts +37 -0
- package/build/ts/message/message.repository.d.ts.map +1 -0
- package/build/ts/message/message.repository.js +77 -0
- package/build/ts/message/message.repository.js.map +1 -0
- package/build/ts/message/message.schema.d.ts +52 -0
- package/build/ts/message/message.schema.d.ts.map +1 -0
- package/build/ts/message/message.schema.js +77 -0
- package/build/ts/message/message.schema.js.map +1 -0
- package/build/ts/message/message.service.d.ts +37 -0
- package/build/ts/message/message.service.d.ts.map +1 -0
- package/build/ts/message/message.service.js +85 -0
- package/build/ts/message/message.service.js.map +1 -0
- package/build/ts/message/types.d.ts +35 -0
- package/build/ts/message/types.d.ts.map +1 -0
- package/build/ts/message/types.js +2 -0
- package/build/ts/message/types.js.map +1 -0
- package/build/ts/message/validation.d.ts +20 -0
- package/build/ts/message/validation.d.ts.map +1 -0
- package/build/ts/message/validation.js +41 -0
- package/build/ts/message/validation.js.map +1 -0
- package/build/ts/messageBatch/__tests__/messageBatch.controller.test.d.ts +2 -0
- package/build/ts/messageBatch/__tests__/messageBatch.controller.test.d.ts.map +1 -0
- package/build/ts/messageBatch/__tests__/messageBatch.controller.test.js +41 -0
- package/build/ts/messageBatch/__tests__/messageBatch.controller.test.js.map +1 -0
- package/build/ts/messageBatch/__tests__/messageBatch.repository.test.d.ts +2 -0
- package/build/ts/messageBatch/__tests__/messageBatch.repository.test.d.ts.map +1 -0
- package/build/ts/messageBatch/__tests__/messageBatch.repository.test.js +55 -0
- package/build/ts/messageBatch/__tests__/messageBatch.repository.test.js.map +1 -0
- package/build/ts/messageBatch/__tests__/messageBatch.service.test.d.ts +2 -0
- package/build/ts/messageBatch/__tests__/messageBatch.service.test.d.ts.map +1 -0
- package/build/ts/messageBatch/__tests__/messageBatch.service.test.js +66 -0
- package/build/ts/messageBatch/__tests__/messageBatch.service.test.js.map +1 -0
- package/build/ts/messageBatch/__tests__/utils.d.ts +5 -0
- package/build/ts/messageBatch/__tests__/utils.d.ts.map +1 -0
- package/build/ts/messageBatch/__tests__/utils.js +24 -0
- package/build/ts/messageBatch/__tests__/utils.js.map +1 -0
- package/build/ts/messageBatch/__tests__/validation.test.d.ts +2 -0
- package/build/ts/messageBatch/__tests__/validation.test.d.ts.map +1 -0
- package/build/ts/messageBatch/__tests__/validation.test.js +20 -0
- package/build/ts/messageBatch/__tests__/validation.test.js.map +1 -0
- package/build/ts/messageBatch/messageBatch.controller.d.ts +24 -0
- package/build/ts/messageBatch/messageBatch.controller.d.ts.map +1 -0
- package/build/ts/messageBatch/messageBatch.controller.js +77 -0
- package/build/ts/messageBatch/messageBatch.controller.js.map +1 -0
- package/build/ts/messageBatch/messageBatch.dto.d.ts +52 -0
- package/build/ts/messageBatch/messageBatch.dto.d.ts.map +1 -0
- package/build/ts/messageBatch/messageBatch.dto.js +168 -0
- package/build/ts/messageBatch/messageBatch.dto.js.map +1 -0
- package/build/ts/messageBatch/messageBatch.module.d.ts +3 -0
- package/build/ts/messageBatch/messageBatch.module.d.ts.map +1 -0
- package/build/ts/messageBatch/messageBatch.module.js +25 -0
- package/build/ts/messageBatch/messageBatch.module.js.map +1 -0
- package/build/ts/messageBatch/messageBatch.repository.d.ts +39 -0
- package/build/ts/messageBatch/messageBatch.repository.d.ts.map +1 -0
- package/build/ts/messageBatch/messageBatch.repository.js +72 -0
- package/build/ts/messageBatch/messageBatch.repository.js.map +1 -0
- package/build/ts/messageBatch/messageBatch.schema.d.ts +36 -0
- package/build/ts/messageBatch/messageBatch.schema.d.ts.map +1 -0
- package/build/ts/messageBatch/messageBatch.schema.js +45 -0
- package/build/ts/messageBatch/messageBatch.schema.js.map +1 -0
- package/build/ts/messageBatch/messageBatch.service.d.ts +41 -0
- package/build/ts/messageBatch/messageBatch.service.d.ts.map +1 -0
- package/build/ts/messageBatch/messageBatch.service.js +107 -0
- package/build/ts/messageBatch/messageBatch.service.js.map +1 -0
- package/build/ts/messageBatch/validation.d.ts +20 -0
- package/build/ts/messageBatch/validation.d.ts.map +1 -0
- package/build/ts/messageBatch/validation.js +38 -0
- package/build/ts/messageBatch/validation.js.map +1 -0
- package/build/tsconfig.build.tsbuildinfo +1 -0
- 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 @@
|
|
|
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"}
|