@maci-protocol/relayer 0.0.0-ci.26f28d6
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 +147 -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,52 @@
|
|
|
1
|
+
import mongoose, { HydratedDocument } from "mongoose";
|
|
2
|
+
import type { MessageBatch } from "../messageBatch/messageBatch.schema.js";
|
|
3
|
+
/**
|
|
4
|
+
* Message document type
|
|
5
|
+
*/
|
|
6
|
+
export type MessageDocument = HydratedDocument<Message>;
|
|
7
|
+
/**
|
|
8
|
+
* Messages limit
|
|
9
|
+
*/
|
|
10
|
+
export declare const MESSAGES_LIMIT = 100;
|
|
11
|
+
/**
|
|
12
|
+
* Message model
|
|
13
|
+
*/
|
|
14
|
+
export declare class Message {
|
|
15
|
+
/**
|
|
16
|
+
* Public key
|
|
17
|
+
*/
|
|
18
|
+
publicKey: string;
|
|
19
|
+
/**
|
|
20
|
+
* Message data
|
|
21
|
+
*/
|
|
22
|
+
data: string[];
|
|
23
|
+
/**
|
|
24
|
+
* Message hash
|
|
25
|
+
*/
|
|
26
|
+
hash: string;
|
|
27
|
+
/**
|
|
28
|
+
* MACI contract address
|
|
29
|
+
*/
|
|
30
|
+
maciContractAddress: string;
|
|
31
|
+
/**
|
|
32
|
+
* Poll ID
|
|
33
|
+
*/
|
|
34
|
+
poll: number;
|
|
35
|
+
/**
|
|
36
|
+
* Message batch
|
|
37
|
+
*/
|
|
38
|
+
messageBatch?: MessageBatch;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Message schema
|
|
42
|
+
*/
|
|
43
|
+
export declare const MessageSchema: mongoose.Schema<Message, mongoose.Model<Message, any, any, any, mongoose.Document<unknown, any, Message> & Message & {
|
|
44
|
+
_id: mongoose.Types.ObjectId;
|
|
45
|
+
} & {
|
|
46
|
+
__v: number;
|
|
47
|
+
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, Message, mongoose.Document<unknown, {}, mongoose.FlatRecord<Message>> & mongoose.FlatRecord<Message> & {
|
|
48
|
+
_id: mongoose.Types.ObjectId;
|
|
49
|
+
} & {
|
|
50
|
+
__v: number;
|
|
51
|
+
}>;
|
|
52
|
+
//# sourceMappingURL=message.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.schema.d.ts","sourceRoot":"","sources":["../../../ts/message/message.schema.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,EAAE,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC;;GAEG;AACH,qBACa,OAAO;IAClB;;OAEG;IAEH,SAAS,EAAG,MAAM,CAAC;IAEnB;;OAEG;IAEH,IAAI,EAAG,MAAM,EAAE,CAAC;IAEhB;;OAEG;IAEH,IAAI,EAAG,MAAM,CAAC;IAEd;;OAEG;IAEH,mBAAmB,EAAG,MAAM,CAAC;IAE7B;;OAEG;IAEH,IAAI,EAAG,MAAM,CAAC;IAEd;;OAEG;IAEH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;EAAwC,CAAC"}
|
|
@@ -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
|
+
import { Prop, Schema, SchemaFactory } from "@nestjs/mongoose";
|
|
11
|
+
import mongoose from "mongoose";
|
|
12
|
+
/**
|
|
13
|
+
* Messages limit
|
|
14
|
+
*/
|
|
15
|
+
export const MESSAGES_LIMIT = 100;
|
|
16
|
+
/**
|
|
17
|
+
* Message model
|
|
18
|
+
*/
|
|
19
|
+
let Message = class Message {
|
|
20
|
+
/**
|
|
21
|
+
* Public key
|
|
22
|
+
*/
|
|
23
|
+
publicKey;
|
|
24
|
+
/**
|
|
25
|
+
* Message data
|
|
26
|
+
*/
|
|
27
|
+
data;
|
|
28
|
+
/**
|
|
29
|
+
* Message hash
|
|
30
|
+
*/
|
|
31
|
+
hash;
|
|
32
|
+
/**
|
|
33
|
+
* MACI contract address
|
|
34
|
+
*/
|
|
35
|
+
maciContractAddress;
|
|
36
|
+
/**
|
|
37
|
+
* Poll ID
|
|
38
|
+
*/
|
|
39
|
+
poll;
|
|
40
|
+
/**
|
|
41
|
+
* Message batch
|
|
42
|
+
*/
|
|
43
|
+
messageBatch;
|
|
44
|
+
};
|
|
45
|
+
__decorate([
|
|
46
|
+
Prop({ required: true }),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], Message.prototype, "publicKey", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
Prop({ required: true }),
|
|
51
|
+
__metadata("design:type", Array)
|
|
52
|
+
], Message.prototype, "data", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
Prop({ required: true }),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], Message.prototype, "hash", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
Prop({ required: true }),
|
|
59
|
+
__metadata("design:type", String)
|
|
60
|
+
], Message.prototype, "maciContractAddress", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
Prop({ required: true }),
|
|
63
|
+
__metadata("design:type", Number)
|
|
64
|
+
], Message.prototype, "poll", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
Prop({ type: mongoose.Schema.Types.ObjectId, required: false }),
|
|
67
|
+
__metadata("design:type", Function)
|
|
68
|
+
], Message.prototype, "messageBatch", void 0);
|
|
69
|
+
Message = __decorate([
|
|
70
|
+
Schema()
|
|
71
|
+
], Message);
|
|
72
|
+
export { Message };
|
|
73
|
+
/**
|
|
74
|
+
* Message schema
|
|
75
|
+
*/
|
|
76
|
+
export const MessageSchema = SchemaFactory.createForClass(Message);
|
|
77
|
+
//# sourceMappingURL=message.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.schema.js","sourceRoot":"","sources":["../../../ts/message/message.schema.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,QAA8B,MAAM,UAAU,CAAC;AAStD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC;;GAEG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAO;IAClB;;OAEG;IAEH,SAAS,CAAU;IAEnB;;OAEG;IAEH,IAAI,CAAY;IAEhB;;OAEG;IAEH,IAAI,CAAU;IAEd;;OAEG;IAEH,mBAAmB,CAAU;IAE7B;;OAEG;IAEH,IAAI,CAAU;IAEd;;OAEG;IAEH,YAAY,CAAgB;CAC7B,CAAA;AA/BC;IADC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACN;AAMnB;IADC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qCACT;AAMhB;IADC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qCACX;AAMd;IADC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACI;AAM7B;IADC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qCACX;AAMd;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;6CACpC;AAnCjB,OAAO;IADnB,MAAM,EAAE;GACI,OAAO,CAoCnB;;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PublishMessagesDto } from "./message.dto.js";
|
|
2
|
+
import { MessageBatchService } from "../messageBatch/messageBatch.service.js";
|
|
3
|
+
import { MessageRepository } from "./message.repository.js";
|
|
4
|
+
import { Message } from "./message.schema.js";
|
|
5
|
+
/**
|
|
6
|
+
* MessageService is responsible for saving messages and send them onchain
|
|
7
|
+
*/
|
|
8
|
+
export declare class MessageService {
|
|
9
|
+
private readonly messageBatchService;
|
|
10
|
+
private readonly messageRepository;
|
|
11
|
+
/**
|
|
12
|
+
* Logger
|
|
13
|
+
*/
|
|
14
|
+
private readonly logger;
|
|
15
|
+
/**
|
|
16
|
+
* Initialize MessageService
|
|
17
|
+
*
|
|
18
|
+
* @param messageBatchService message batch service
|
|
19
|
+
* @param messageRepository message repository
|
|
20
|
+
*/
|
|
21
|
+
constructor(messageBatchService: MessageBatchService, messageRepository: MessageRepository);
|
|
22
|
+
/**
|
|
23
|
+
* Save messages
|
|
24
|
+
*
|
|
25
|
+
* @param args publish messages dto
|
|
26
|
+
* @returns success or not
|
|
27
|
+
*/
|
|
28
|
+
saveMessages(args: PublishMessagesDto): Promise<Message[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Publish messages onchain
|
|
31
|
+
*
|
|
32
|
+
* @param args publish messages dto
|
|
33
|
+
* @returns transaction and ipfs hashes
|
|
34
|
+
*/
|
|
35
|
+
publishMessages(): Promise<boolean>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=message.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.service.d.ts","sourceRoot":"","sources":["../../../ts/message/message.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;GAEG;AACH,qBACa,cAAc;IAavB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAbpC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAElE;;;;;OAKG;gBAEgB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB;IAGvD;;;;;OAKG;IACG,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqBhE;;;;;OAKG;IAEG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;CAc1C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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 MessageService_1;
|
|
11
|
+
import { PubKey } from "@maci-protocol/domainobjs";
|
|
12
|
+
import { getDefaultSigner, MACI__factory as MACIFactory, Poll__factory as PollFactory } from "@maci-protocol/sdk";
|
|
13
|
+
import { Injectable, Logger } from "@nestjs/common";
|
|
14
|
+
import { Cron, CronExpression } from "@nestjs/schedule";
|
|
15
|
+
import { MessageBatchService } from "../messageBatch/messageBatch.service.js";
|
|
16
|
+
import { MessageRepository } from "./message.repository.js";
|
|
17
|
+
/**
|
|
18
|
+
* MessageService is responsible for saving messages and send them onchain
|
|
19
|
+
*/
|
|
20
|
+
let MessageService = MessageService_1 = class MessageService {
|
|
21
|
+
messageBatchService;
|
|
22
|
+
messageRepository;
|
|
23
|
+
/**
|
|
24
|
+
* Logger
|
|
25
|
+
*/
|
|
26
|
+
logger = new Logger(MessageService_1.name);
|
|
27
|
+
/**
|
|
28
|
+
* Initialize MessageService
|
|
29
|
+
*
|
|
30
|
+
* @param messageBatchService message batch service
|
|
31
|
+
* @param messageRepository message repository
|
|
32
|
+
*/
|
|
33
|
+
constructor(messageBatchService, messageRepository) {
|
|
34
|
+
this.messageBatchService = messageBatchService;
|
|
35
|
+
this.messageRepository = messageRepository;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Save messages
|
|
39
|
+
*
|
|
40
|
+
* @param args publish messages dto
|
|
41
|
+
* @returns success or not
|
|
42
|
+
*/
|
|
43
|
+
async saveMessages(args) {
|
|
44
|
+
const signer = await getDefaultSigner();
|
|
45
|
+
const maciContract = MACIFactory.connect(args.maciContractAddress, signer);
|
|
46
|
+
const pollAddresses = await maciContract.polls(args.poll);
|
|
47
|
+
const pollContract = PollFactory.connect(pollAddresses.poll, signer);
|
|
48
|
+
const hashes = await Promise.all(args.messages.map(({ data, publicKey }) => pollContract.hashMessageAndEncPubKey({ data }, PubKey.deserialize(publicKey).asContractParam())));
|
|
49
|
+
const messages = args.messages.map((message, index) => ({ ...message, hash: hashes[index].toString() }));
|
|
50
|
+
return this.messageRepository.create({ ...args, messages }).catch((error) => {
|
|
51
|
+
this.logger.error(`Save messages error:`, error);
|
|
52
|
+
throw error;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Publish messages onchain
|
|
57
|
+
*
|
|
58
|
+
* @param args publish messages dto
|
|
59
|
+
* @returns transaction and ipfs hashes
|
|
60
|
+
*/
|
|
61
|
+
async publishMessages() {
|
|
62
|
+
const messages = await this.messageRepository.find({ messageBatch: { $exists: false } });
|
|
63
|
+
if (messages.length === 0) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
await this.messageBatchService.saveMessageBatches([{ messages }]).catch((error) => {
|
|
67
|
+
this.logger.error(`Save message batch error:`, error);
|
|
68
|
+
throw error;
|
|
69
|
+
});
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
__decorate([
|
|
74
|
+
Cron(process.env.CRON_EXPRESSION || CronExpression.EVERY_HOUR, { name: "publishMessages" }),
|
|
75
|
+
__metadata("design:type", Function),
|
|
76
|
+
__metadata("design:paramtypes", []),
|
|
77
|
+
__metadata("design:returntype", Promise)
|
|
78
|
+
], MessageService.prototype, "publishMessages", null);
|
|
79
|
+
MessageService = MessageService_1 = __decorate([
|
|
80
|
+
Injectable(),
|
|
81
|
+
__metadata("design:paramtypes", [MessageBatchService,
|
|
82
|
+
MessageRepository])
|
|
83
|
+
], MessageService);
|
|
84
|
+
export { MessageService };
|
|
85
|
+
//# sourceMappingURL=message.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.service.js","sourceRoot":"","sources":["../../../ts/message/message.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for saving messages
|
|
3
|
+
*/
|
|
4
|
+
export interface ICreateMessages {
|
|
5
|
+
/**
|
|
6
|
+
* Messages
|
|
7
|
+
*/
|
|
8
|
+
messages: ICreateMessageWithHash[];
|
|
9
|
+
/**
|
|
10
|
+
* MACI contract address
|
|
11
|
+
*/
|
|
12
|
+
maciContractAddress: string;
|
|
13
|
+
/**
|
|
14
|
+
* Poll id
|
|
15
|
+
*/
|
|
16
|
+
poll: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Interface for saved messages
|
|
20
|
+
*/
|
|
21
|
+
export interface ICreateMessageWithHash {
|
|
22
|
+
/**
|
|
23
|
+
* Message data
|
|
24
|
+
*/
|
|
25
|
+
data: string[];
|
|
26
|
+
/**
|
|
27
|
+
* Public key
|
|
28
|
+
*/
|
|
29
|
+
publicKey: string;
|
|
30
|
+
/**
|
|
31
|
+
* Message hash
|
|
32
|
+
*/
|
|
33
|
+
hash: string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/message/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IAEnC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../ts/message/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ValidatorConstraintInterface } from "class-validator";
|
|
2
|
+
/**
|
|
3
|
+
* Validate public key
|
|
4
|
+
*/
|
|
5
|
+
export declare class PublicKeyValidator implements ValidatorConstraintInterface {
|
|
6
|
+
/**
|
|
7
|
+
* Try to deserialize public key from text and return status of validation
|
|
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/message/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAEpF;;GAEG;AACH,qBACa,kBAAmB,YAAW,4BAA4B;IACrE;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAS/B;;;;OAIG;IACH,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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 { PubKey } from "@maci-protocol/domainobjs";
|
|
8
|
+
import { ValidatorConstraint } from "class-validator";
|
|
9
|
+
/**
|
|
10
|
+
* Validate public key
|
|
11
|
+
*/
|
|
12
|
+
let PublicKeyValidator = class PublicKeyValidator {
|
|
13
|
+
/**
|
|
14
|
+
* Try to deserialize public key from text and return status of validation
|
|
15
|
+
*
|
|
16
|
+
* @param text text to validate
|
|
17
|
+
* @returns status of validation
|
|
18
|
+
*/
|
|
19
|
+
validate(text) {
|
|
20
|
+
try {
|
|
21
|
+
const [x, y] = PubKey.deserialize(text).asArray();
|
|
22
|
+
return Boolean(new PubKey([x, y]));
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Return default validation message
|
|
30
|
+
*
|
|
31
|
+
* @returns default validation message
|
|
32
|
+
*/
|
|
33
|
+
defaultMessage() {
|
|
34
|
+
return "Public key is invalid";
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
PublicKeyValidator = __decorate([
|
|
38
|
+
ValidatorConstraint({ name: "publicKey", async: false })
|
|
39
|
+
], PublicKeyValidator);
|
|
40
|
+
export { PublicKeyValidator };
|
|
41
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../ts/message/validation.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAgC,MAAM,iBAAiB,CAAC;AAEpF;;GAEG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,OAAO,uBAAuB,CAAC;IACjC,CAAC;CACF,CAAA;AAxBY,kBAAkB;IAD9B,mBAAmB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;GAC5C,kBAAkB,CAwB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageBatch.controller.test.d.ts","sourceRoot":"","sources":["../../../../ts/messageBatch/__tests__/messageBatch.controller.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jest } from "@jest/globals";
|
|
2
|
+
import { HttpException, HttpStatus } from "@nestjs/common";
|
|
3
|
+
import { Test } from "@nestjs/testing";
|
|
4
|
+
import { MessageBatchController } from "../messageBatch.controller.js";
|
|
5
|
+
import { MessageBatchService } from "../messageBatch.service.js";
|
|
6
|
+
import { defaultGetMessageBatchesDto, defaultMessageBatches } from "./utils.js";
|
|
7
|
+
describe("MessageBatchController", () => {
|
|
8
|
+
let controller;
|
|
9
|
+
const mockMessageBatchService = {
|
|
10
|
+
findMessageBatches: jest.fn(),
|
|
11
|
+
};
|
|
12
|
+
beforeEach(async () => {
|
|
13
|
+
const app = await Test.createTestingModule({
|
|
14
|
+
controllers: [MessageBatchController],
|
|
15
|
+
})
|
|
16
|
+
.useMocker((token) => {
|
|
17
|
+
if (token === MessageBatchService) {
|
|
18
|
+
mockMessageBatchService.findMessageBatches.mockImplementation(() => Promise.resolve(defaultMessageBatches));
|
|
19
|
+
return mockMessageBatchService;
|
|
20
|
+
}
|
|
21
|
+
return jest.fn();
|
|
22
|
+
})
|
|
23
|
+
.compile();
|
|
24
|
+
controller = app.get(MessageBatchController);
|
|
25
|
+
});
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
jest.clearAllMocks();
|
|
28
|
+
});
|
|
29
|
+
describe("v1/messageBatches/get", () => {
|
|
30
|
+
test("should get message batches properly", async () => {
|
|
31
|
+
const data = await controller.get(defaultGetMessageBatchesDto);
|
|
32
|
+
expect(data).toStrictEqual(defaultMessageBatches);
|
|
33
|
+
});
|
|
34
|
+
test("should throw an error if fetching is failed", async () => {
|
|
35
|
+
const error = new Error("error");
|
|
36
|
+
mockMessageBatchService.findMessageBatches.mockImplementation(() => Promise.reject(error));
|
|
37
|
+
await expect(controller.get(defaultGetMessageBatchesDto)).rejects.toThrow(new HttpException(error.message, HttpStatus.BAD_REQUEST));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=messageBatch.controller.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageBatch.controller.test.js","sourceRoot":"","sources":["../../../../ts/messageBatch/__tests__/messageBatch.controller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,UAAkC,CAAC;IAEvC,MAAM,uBAAuB,GAAG;QAC9B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;KAC9B,CAAC;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzC,WAAW,EAAE,CAAC,sBAAsB,CAAC;SACtC,CAAC;aACC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;gBAClC,uBAAuB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAE5G,OAAO,uBAAuB,CAAC;YACjC,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,UAAU,GAAG,GAAG,CAAC,GAAG,CAAyB,sBAAsB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YAE/D,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,uBAAuB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAE3F,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACvE,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CACzD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageBatch.repository.test.d.ts","sourceRoot":"","sources":["../../../../ts/messageBatch/__tests__/messageBatch.repository.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jest } from "@jest/globals";
|
|
2
|
+
import { MessageBatchRepository } from "../messageBatch.repository.js";
|
|
3
|
+
import { defaultMessageBatches } from "./utils.js";
|
|
4
|
+
describe("MessageBatchRepository", () => {
|
|
5
|
+
const mockMessageBatchModel = {
|
|
6
|
+
find: jest.fn().mockReturnValue({
|
|
7
|
+
limit: jest.fn().mockReturnValue({
|
|
8
|
+
skip: jest
|
|
9
|
+
.fn()
|
|
10
|
+
.mockReturnValue({ exec: jest.fn().mockImplementation(() => Promise.resolve([defaultMessageBatches])) }),
|
|
11
|
+
}),
|
|
12
|
+
}),
|
|
13
|
+
insertMany: jest.fn().mockImplementation(() => Promise.resolve(defaultMessageBatches)),
|
|
14
|
+
};
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
mockMessageBatchModel.find = jest.fn().mockReturnValue({
|
|
17
|
+
limit: jest.fn().mockReturnValue({
|
|
18
|
+
skip: jest
|
|
19
|
+
.fn()
|
|
20
|
+
.mockReturnValue({ exec: jest.fn().mockImplementation(() => Promise.resolve([defaultMessageBatches])) }),
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
mockMessageBatchModel.insertMany = jest.fn().mockImplementation(() => Promise.resolve(defaultMessageBatches));
|
|
24
|
+
});
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
jest.clearAllMocks();
|
|
27
|
+
});
|
|
28
|
+
test("should create message batch properly", async () => {
|
|
29
|
+
const repository = new MessageBatchRepository(mockMessageBatchModel);
|
|
30
|
+
const result = await repository.create(defaultMessageBatches);
|
|
31
|
+
expect(result).toStrictEqual(defaultMessageBatches);
|
|
32
|
+
});
|
|
33
|
+
test("should throw an error if creation is failed", async () => {
|
|
34
|
+
const error = new Error("error");
|
|
35
|
+
mockMessageBatchModel.insertMany.mockImplementation(() => Promise.reject(error));
|
|
36
|
+
const repository = new MessageBatchRepository(mockMessageBatchModel);
|
|
37
|
+
await expect(repository.create(defaultMessageBatches)).rejects.toThrow(error);
|
|
38
|
+
});
|
|
39
|
+
test("should find message batches properly", async () => {
|
|
40
|
+
const repository = new MessageBatchRepository(mockMessageBatchModel);
|
|
41
|
+
const result = await repository.find({});
|
|
42
|
+
expect(result).toStrictEqual([defaultMessageBatches]);
|
|
43
|
+
});
|
|
44
|
+
test("should throw an error if find is failed", async () => {
|
|
45
|
+
const error = new Error("error");
|
|
46
|
+
mockMessageBatchModel.find.mockReturnValue({
|
|
47
|
+
limit: jest.fn().mockReturnValue({
|
|
48
|
+
skip: jest.fn().mockReturnValue({ exec: jest.fn().mockImplementation(() => Promise.reject(error)) }),
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
51
|
+
const repository = new MessageBatchRepository(mockMessageBatchModel);
|
|
52
|
+
await expect(repository.find({})).rejects.toThrow(error);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=messageBatch.repository.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageBatch.repository.test.js","sourceRoot":"","sources":["../../../../ts/messageBatch/__tests__/messageBatch.repository.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageBatch.service.test.d.ts","sourceRoot":"","sources":["../../../../ts/messageBatch/__tests__/messageBatch.service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jest } from "@jest/globals";
|
|
2
|
+
import { MessageBatchDto } from "../messageBatch.dto.js";
|
|
3
|
+
import { MessageBatchService } from "../messageBatch.service.js";
|
|
4
|
+
import { defaultIpfsHash, defaultMessageBatches } from "./utils.js";
|
|
5
|
+
jest.mock("@maci-protocol/sdk", () => ({
|
|
6
|
+
getDefaultSigner: jest.fn(),
|
|
7
|
+
relayMessages: jest.fn(),
|
|
8
|
+
}));
|
|
9
|
+
describe("MessageBatchService", () => {
|
|
10
|
+
const mockIpfsService = {
|
|
11
|
+
init: jest.fn(),
|
|
12
|
+
cidToBytes32: jest.fn().mockImplementation(() => Promise.resolve(defaultIpfsHash)),
|
|
13
|
+
add: jest.fn().mockImplementation(() => Promise.resolve(defaultIpfsHash)),
|
|
14
|
+
};
|
|
15
|
+
const mockRepository = {
|
|
16
|
+
create: jest.fn().mockImplementation(() => Promise.resolve(defaultMessageBatches)),
|
|
17
|
+
find: jest.fn().mockImplementation(() => Promise.resolve(defaultMessageBatches)),
|
|
18
|
+
};
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
mockRepository.create = jest.fn().mockImplementation(() => Promise.resolve(defaultMessageBatches));
|
|
21
|
+
mockRepository.find = jest.fn().mockImplementation(() => Promise.resolve(defaultMessageBatches));
|
|
22
|
+
mockIpfsService.add = jest.fn().mockImplementation(() => Promise.resolve(defaultIpfsHash));
|
|
23
|
+
mockIpfsService.cidToBytes32 = jest.fn().mockImplementation(() => Promise.resolve(defaultIpfsHash));
|
|
24
|
+
mockIpfsService.init = jest.fn();
|
|
25
|
+
});
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
jest.clearAllMocks();
|
|
28
|
+
});
|
|
29
|
+
test("should save and find message batches properly", async () => {
|
|
30
|
+
const service = new MessageBatchService(mockIpfsService, mockRepository);
|
|
31
|
+
const result = await service.saveMessageBatches(defaultMessageBatches);
|
|
32
|
+
const messageBatches = await service.findMessageBatches({});
|
|
33
|
+
expect(result).toStrictEqual(defaultMessageBatches);
|
|
34
|
+
expect(messageBatches).toStrictEqual(defaultMessageBatches);
|
|
35
|
+
});
|
|
36
|
+
test("should throw an error if can't find message batches", async () => {
|
|
37
|
+
const error = new Error("error");
|
|
38
|
+
mockRepository.find.mockImplementation(() => Promise.reject(error));
|
|
39
|
+
const service = new MessageBatchService(mockIpfsService, mockRepository);
|
|
40
|
+
await expect(service.findMessageBatches({})).rejects.toThrow(error);
|
|
41
|
+
});
|
|
42
|
+
test("should throw an error if can't save message batches", async () => {
|
|
43
|
+
const error = new Error("error");
|
|
44
|
+
mockRepository.create.mockImplementation(() => Promise.reject(error));
|
|
45
|
+
const service = new MessageBatchService(mockIpfsService, mockRepository);
|
|
46
|
+
await expect(service.saveMessageBatches(defaultMessageBatches)).rejects.toThrow(error);
|
|
47
|
+
});
|
|
48
|
+
test("should throw an error if can't update message batches to ipfs", async () => {
|
|
49
|
+
const error = new Error("error");
|
|
50
|
+
mockIpfsService.add.mockImplementation(() => Promise.reject(error));
|
|
51
|
+
const service = new MessageBatchService(mockIpfsService, mockRepository);
|
|
52
|
+
await expect(service.saveMessageBatches(defaultMessageBatches)).rejects.toThrow(error);
|
|
53
|
+
});
|
|
54
|
+
test("should throw an error if validation is failed", async () => {
|
|
55
|
+
const service = new MessageBatchService(mockIpfsService, mockRepository);
|
|
56
|
+
const invalidEmptyMessagesArgs = new MessageBatchDto();
|
|
57
|
+
invalidEmptyMessagesArgs.messages = [];
|
|
58
|
+
invalidEmptyMessagesArgs.ipfsHash = "invalid";
|
|
59
|
+
const invalidMessageArgs = new MessageBatchDto();
|
|
60
|
+
invalidMessageArgs.messages = [];
|
|
61
|
+
invalidMessageArgs.ipfsHash = "invalid";
|
|
62
|
+
await expect(service.saveMessageBatches([invalidEmptyMessagesArgs])).rejects.toThrow("Validation error");
|
|
63
|
+
await expect(service.saveMessageBatches([invalidMessageArgs])).rejects.toThrow("Validation error");
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=messageBatch.service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageBatch.service.test.js","sourceRoot":"","sources":["../../../../ts/messageBatch/__tests__/messageBatch.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GetMessageBatchesDto, MessageBatchDto } from "../messageBatch.dto.js";
|
|
2
|
+
export declare const defaultIpfsHash = "QmXj8v1qbwTqVp9RxkQR29Xjc6g5C1KL2m2gZ9b8t8THHj";
|
|
3
|
+
export declare const defaultMessageBatches: MessageBatchDto[];
|
|
4
|
+
export declare const defaultGetMessageBatchesDto: GetMessageBatchesDto;
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../ts/messageBatch/__tests__/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAgB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI7F,eAAO,MAAM,eAAe,mDAAmD,CAAC;AAYhF,eAAO,MAAM,qBAAqB,EAAE,eAAe,EAA0B,CAAC;AAE9E,eAAO,MAAM,2BAA2B,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Keypair } from "@maci-protocol/domainobjs";
|
|
2
|
+
import { ZeroAddress } from "ethers";
|
|
3
|
+
import { Message } from "../../message/message.schema.js";
|
|
4
|
+
import { GetMessageBatchesDto, MAX_MESSAGES, MessageBatchDto } from "../messageBatch.dto.js";
|
|
5
|
+
const keypair = new Keypair();
|
|
6
|
+
export const defaultIpfsHash = "QmXj8v1qbwTqVp9RxkQR29Xjc6g5C1KL2m2gZ9b8t8THHj";
|
|
7
|
+
const defaultMessageBatch = new MessageBatchDto();
|
|
8
|
+
const defaultMessage = new Message();
|
|
9
|
+
defaultMessage.data = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
10
|
+
defaultMessage.hash = "0";
|
|
11
|
+
defaultMessage.publicKey = keypair.pubKey.serialize();
|
|
12
|
+
defaultMessage.maciContractAddress = ZeroAddress;
|
|
13
|
+
defaultMessage.poll = 0;
|
|
14
|
+
defaultMessageBatch.messages = [defaultMessage];
|
|
15
|
+
defaultMessageBatch.ipfsHash = defaultIpfsHash;
|
|
16
|
+
export const defaultMessageBatches = [defaultMessageBatch];
|
|
17
|
+
export const defaultGetMessageBatchesDto = new GetMessageBatchesDto();
|
|
18
|
+
defaultGetMessageBatchesDto.limit = MAX_MESSAGES;
|
|
19
|
+
defaultGetMessageBatchesDto.maciContractAddress = ZeroAddress;
|
|
20
|
+
defaultGetMessageBatchesDto.poll = 0;
|
|
21
|
+
defaultGetMessageBatchesDto.ipfsHashes = [defaultIpfsHash];
|
|
22
|
+
defaultGetMessageBatchesDto.messageHashes = ["0"];
|
|
23
|
+
defaultGetMessageBatchesDto.publicKeys = [keypair.pubKey.serialize()];
|
|
24
|
+
//# sourceMappingURL=utils.js.map
|