@maci-protocol/coordinator 0.0.0-ci.d0dddbc → 0.0.0-ci.d231815
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/README.md +64 -28
- package/build/hardhat.config.cjs +14 -9
- package/build/hardhat.config.cjs.map +1 -1
- package/build/hardhat.config.d.cts +12 -12
- package/build/hardhat.config.d.cts.map +1 -1
- package/build/scripts/generateKeypair.js +2 -2
- package/build/scripts/generateKeypair.js.map +1 -1
- package/build/tests/constants.d.ts +3 -3
- package/build/tests/constants.d.ts.map +1 -1
- package/build/tests/constants.js +5 -3
- package/build/tests/constants.js.map +1 -1
- package/build/tests/e2e.deploy.test.js +28 -43
- package/build/tests/e2e.deploy.test.js.map +1 -1
- package/build/tests/e2e.redis.test.d.ts +2 -0
- package/build/tests/e2e.redis.test.d.ts.map +1 -0
- package/build/tests/e2e.redis.test.js +118 -0
- package/build/tests/e2e.redis.test.js.map +1 -0
- package/build/tests/utils.d.ts +1 -1
- package/build/tests/utils.d.ts.map +1 -1
- package/build/tests/utils.js +5 -3
- package/build/tests/utils.js.map +1 -1
- package/build/ts/app.module.d.ts.map +1 -1
- package/build/ts/app.module.js +6 -0
- package/build/ts/app.module.js.map +1 -1
- package/build/ts/common/__tests__/common.test.js +40 -38
- package/build/ts/common/__tests__/common.test.js.map +1 -1
- package/build/ts/common/accountAbstraction.d.ts +5 -5
- package/build/ts/common/accountAbstraction.d.ts.map +1 -1
- package/build/ts/common/accountAbstraction.js +10 -8
- package/build/ts/common/accountAbstraction.js.map +1 -1
- package/build/ts/common/chain.d.ts +10 -4
- package/build/ts/common/chain.d.ts.map +1 -1
- package/build/ts/common/chain.js +15 -10
- package/build/ts/common/chain.js.map +1 -1
- package/build/ts/common/errors.d.ts +15 -11
- package/build/ts/common/errors.d.ts.map +1 -1
- package/build/ts/common/errors.js +15 -11
- package/build/ts/common/errors.js.map +1 -1
- package/build/ts/common/http.d.ts +6 -0
- package/build/ts/common/http.d.ts.map +1 -0
- package/build/ts/common/http.js +49 -0
- package/build/ts/common/http.js.map +1 -0
- package/build/ts/common/index.d.ts +1 -1
- package/build/ts/common/index.d.ts.map +1 -1
- package/build/ts/common/index.js +1 -1
- package/build/ts/common/index.js.map +1 -1
- package/build/ts/common/networks.d.ts +2 -21
- package/build/ts/common/networks.d.ts.map +1 -1
- package/build/ts/common/networks.js +39 -48
- package/build/ts/common/networks.js.map +1 -1
- package/build/ts/common/types.d.ts +2 -2
- package/build/ts/common/types.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/deployer.controller.test.js +23 -25
- package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -1
- package/build/ts/deployer/__tests__/deployer.service.test.js +186 -80
- package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
- package/build/ts/deployer/__tests__/utils.d.ts +8 -9
- package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/utils.js +13 -18
- package/build/ts/deployer/__tests__/utils.js.map +1 -1
- package/build/ts/deployer/deployer.controller.d.ts.map +1 -1
- package/build/ts/deployer/deployer.controller.js +19 -6
- package/build/ts/deployer/deployer.controller.js.map +1 -1
- package/build/ts/deployer/deployer.service.d.ts +17 -8
- package/build/ts/deployer/deployer.service.d.ts.map +1 -1
- package/build/ts/deployer/deployer.service.js +222 -62
- package/build/ts/deployer/deployer.service.js.map +1 -1
- package/build/ts/deployer/dto.d.ts +3 -3
- package/build/ts/deployer/dto.d.ts.map +1 -1
- package/build/ts/deployer/dto.js +5 -5
- package/build/ts/deployer/dto.js.map +1 -1
- package/build/ts/deployer/types.d.ts +38 -28
- package/build/ts/deployer/types.d.ts.map +1 -1
- package/build/ts/file/file.service.d.ts.map +1 -1
- package/build/ts/file/file.service.js +4 -3
- package/build/ts/file/file.service.js.map +1 -1
- 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 +52 -0
- package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
- package/build/ts/health/__tests__/health.service.test.d.ts +2 -0
- package/build/ts/health/__tests__/health.service.test.d.ts.map +1 -0
- package/build/ts/health/__tests__/health.service.test.js +101 -0
- package/build/ts/health/__tests__/health.service.test.js.map +1 -0
- package/build/ts/health/health.controller.d.ts +16 -0
- package/build/ts/health/health.controller.d.ts.map +1 -0
- package/build/ts/health/health.controller.js +43 -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 +22 -0
- package/build/ts/health/health.module.js.map +1 -0
- package/build/ts/health/health.service.d.ts +42 -0
- package/build/ts/health/health.service.d.ts.map +1 -0
- package/build/ts/health/health.service.js +176 -0
- package/build/ts/health/health.service.js.map +1 -0
- package/build/ts/health/types.d.ts +87 -0
- package/build/ts/health/types.d.ts.map +1 -0
- package/build/ts/health/types.js +2 -0
- package/build/ts/health/types.js.map +1 -0
- package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts +11 -0
- package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts.map +1 -0
- package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js +12 -0
- package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js.map +1 -0
- package/build/ts/main.js +1 -1
- package/build/ts/proof/__tests__/proof.controller.test.js +5 -6
- package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -1
- package/build/ts/proof/__tests__/proof.gateway.test.js +2 -3
- package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -1
- package/build/ts/proof/__tests__/proof.service.test.js +24 -55
- package/build/ts/proof/__tests__/proof.service.test.js.map +1 -1
- package/build/ts/proof/dto.d.ts +4 -5
- package/build/ts/proof/dto.d.ts.map +1 -1
- package/build/ts/proof/dto.js +7 -8
- package/build/ts/proof/dto.js.map +1 -1
- package/build/ts/proof/proof.controller.d.ts.map +1 -1
- package/build/ts/proof/proof.controller.js +37 -11
- package/build/ts/proof/proof.controller.js.map +1 -1
- package/build/ts/proof/proof.module.d.ts.map +1 -1
- package/build/ts/proof/proof.module.js +1 -0
- package/build/ts/proof/proof.module.js.map +1 -1
- package/build/ts/proof/proof.service.d.ts.map +1 -1
- package/build/ts/proof/proof.service.js.map +1 -1
- package/build/ts/proof/types.d.ts +4 -5
- package/build/ts/proof/types.d.ts.map +1 -1
- package/build/ts/proof/types.js.map +1 -1
- package/build/ts/redis/__tests__/redis.service.test.d.ts +2 -0
- package/build/ts/redis/__tests__/redis.service.test.d.ts.map +1 -0
- package/build/ts/redis/__tests__/redis.service.test.js +148 -0
- package/build/ts/redis/__tests__/redis.service.test.js.map +1 -0
- package/build/ts/redis/redis.module.d.ts +3 -0
- package/build/ts/redis/redis.module.d.ts.map +1 -0
- package/build/ts/redis/redis.module.js +18 -0
- package/build/ts/redis/redis.module.js.map +1 -0
- package/build/ts/redis/redis.service.d.ts +53 -0
- package/build/ts/redis/redis.service.d.ts.map +1 -0
- package/build/ts/redis/redis.service.js +99 -0
- package/build/ts/redis/redis.service.js.map +1 -0
- package/build/ts/redis/types.d.ts +66 -0
- package/build/ts/redis/types.d.ts.map +1 -0
- package/build/ts/redis/types.js +2 -0
- package/build/ts/redis/types.js.map +1 -0
- package/build/ts/redis/utils.d.ts +20 -0
- package/build/ts/redis/utils.d.ts.map +1 -0
- package/build/ts/redis/utils.js +27 -0
- package/build/ts/redis/utils.js.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.js +62 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.js +369 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
- package/build/ts/scheduler/dto.d.ts +41 -0
- package/build/ts/scheduler/dto.d.ts.map +1 -0
- package/build/ts/scheduler/dto.js +115 -0
- package/build/ts/scheduler/dto.js.map +1 -0
- package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
- package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.controller.js +118 -0
- package/build/ts/scheduler/scheduler.controller.js.map +1 -0
- package/build/ts/scheduler/scheduler.module.d.ts +3 -0
- package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.module.js +24 -0
- package/build/ts/scheduler/scheduler.module.js.map +1 -0
- package/build/ts/scheduler/scheduler.service.d.ts +71 -0
- package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.service.js +297 -0
- package/build/ts/scheduler/scheduler.service.js.map +1 -0
- package/build/ts/scheduler/types.d.ts +65 -0
- package/build/ts/scheduler/types.d.ts.map +1 -0
- package/build/ts/scheduler/types.js +2 -0
- package/build/ts/scheduler/types.js.map +1 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +2 -2
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -1
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +34 -19
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -1
- package/build/ts/sessionKeys/__tests__/utils.d.ts +1 -1
- package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -1
- package/build/ts/sessionKeys/__tests__/utils.js +7 -6
- package/build/ts/sessionKeys/__tests__/utils.js.map +1 -1
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts +1 -1
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts.map +1 -1
- package/build/ts/sessionKeys/sessionKeys.service.d.ts +4 -3
- package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -1
- package/build/ts/sessionKeys/sessionKeys.service.js +1 -2
- package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
- package/build/ts/subgraph/__tests__/subgraph.controller.test.js +3 -3
- package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -1
- package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +2 -2
- package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -1
- package/build/ts/subgraph/__tests__/subgraph.service.test.js +5 -5
- package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -1
- package/build/ts/subgraph/dto.d.ts +2 -2
- package/build/ts/subgraph/dto.d.ts.map +1 -1
- package/build/ts/subgraph/dto.js +3 -3
- package/build/ts/subgraph/dto.js.map +1 -1
- package/build/ts/subgraph/subgraph.controller.d.ts.map +1 -1
- package/build/ts/subgraph/subgraph.controller.js +8 -3
- package/build/ts/subgraph/subgraph.controller.js.map +1 -1
- package/build/ts/subgraph/subgraph.service.d.ts +4 -0
- package/build/ts/subgraph/subgraph.service.d.ts.map +1 -1
- package/build/ts/subgraph/subgraph.service.js +23 -10
- package/build/ts/subgraph/subgraph.service.js.map +1 -1
- package/build/ts/subgraph/types.d.ts +2 -2
- package/build/ts/subgraph/types.d.ts.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +40 -33
- package/build/tests/e2e.aa.test.d.ts +0 -2
- package/build/tests/e2e.aa.test.d.ts.map +0 -1
- package/build/tests/e2e.aa.test.js +0 -96
- package/build/tests/e2e.aa.test.js.map +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
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 SchedulerController_1;
|
|
14
|
+
import { Body, Controller, HttpException, HttpStatus, Logger, Post } from "@nestjs/common";
|
|
15
|
+
import { ApiResponse, ApiTags } from "@nestjs/swagger";
|
|
16
|
+
import { mapErrorToHttpStatus } from "../common/http";
|
|
17
|
+
import { IdentityScheduledPollDto, SchedulePollWithSignerDto } from "./dto";
|
|
18
|
+
import { SchedulerService } from "./scheduler.service";
|
|
19
|
+
let SchedulerController = SchedulerController_1 = class SchedulerController {
|
|
20
|
+
schedulerService;
|
|
21
|
+
/**
|
|
22
|
+
* Logger
|
|
23
|
+
*/
|
|
24
|
+
logger = new Logger(SchedulerController_1.name);
|
|
25
|
+
/**
|
|
26
|
+
* Initialize SchedulerController
|
|
27
|
+
*
|
|
28
|
+
* @param schedulerService - scheduler service
|
|
29
|
+
*/
|
|
30
|
+
constructor(schedulerService) {
|
|
31
|
+
this.schedulerService = schedulerService;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Register poll for finalization
|
|
35
|
+
*/
|
|
36
|
+
async register(args) {
|
|
37
|
+
const schedulePollWithSignerArgs = {
|
|
38
|
+
...args,
|
|
39
|
+
pollId: args.pollId.toString(),
|
|
40
|
+
endDate: 0,
|
|
41
|
+
merged: false,
|
|
42
|
+
proofsGenerated: false,
|
|
43
|
+
};
|
|
44
|
+
return this.schedulerService.registerPoll(schedulePollWithSignerArgs).catch((error) => {
|
|
45
|
+
this.logger.error(`Error:`, error);
|
|
46
|
+
throw new HttpException(error.message, mapErrorToHttpStatus(error));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if poll is scheduled for finalization
|
|
51
|
+
* @param args - poll id to check
|
|
52
|
+
* @returns true if poll is scheduled, false otherwise
|
|
53
|
+
*/
|
|
54
|
+
async status(args) {
|
|
55
|
+
const identityScheduledPoll = {
|
|
56
|
+
...args,
|
|
57
|
+
pollId: args.pollId.toString(),
|
|
58
|
+
};
|
|
59
|
+
return this.schedulerService.isPollScheduled(identityScheduledPoll).catch((error) => {
|
|
60
|
+
this.logger.error(`Error:`, error);
|
|
61
|
+
throw new HttpException(error.message, mapErrorToHttpStatus(error));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Delete scheduled poll
|
|
66
|
+
* @param args - poll id to delete
|
|
67
|
+
*/
|
|
68
|
+
async delete(args) {
|
|
69
|
+
const identityScheduledPoll = {
|
|
70
|
+
...args,
|
|
71
|
+
pollId: args.pollId.toString(),
|
|
72
|
+
};
|
|
73
|
+
return this.schedulerService.deleteScheduledPoll(identityScheduledPoll).catch((error) => {
|
|
74
|
+
this.logger.error(`Error:`, error);
|
|
75
|
+
throw new HttpException(error.message, mapErrorToHttpStatus(error));
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
__decorate([
|
|
80
|
+
ApiResponse({ status: HttpStatus.OK, description: "Poll finalization has been scheduled" }),
|
|
81
|
+
ApiResponse({ status: HttpStatus.BAD_REQUEST, description: "Invalid input" }),
|
|
82
|
+
ApiResponse({ status: HttpStatus.CONFLICT, description: "Poll already scheduled or already tallied" }),
|
|
83
|
+
ApiResponse({ status: HttpStatus.INTERNAL_SERVER_ERROR, description: "Failed to update scheduler state" }),
|
|
84
|
+
Post("register"),
|
|
85
|
+
__param(0, Body()),
|
|
86
|
+
__metadata("design:type", Function),
|
|
87
|
+
__metadata("design:paramtypes", [SchedulePollWithSignerDto]),
|
|
88
|
+
__metadata("design:returntype", Promise)
|
|
89
|
+
], SchedulerController.prototype, "register", null);
|
|
90
|
+
__decorate([
|
|
91
|
+
ApiResponse({ status: HttpStatus.OK, description: "Poll finalization status" }),
|
|
92
|
+
ApiResponse({ status: HttpStatus.NOT_FOUND, description: "Poll not found" }),
|
|
93
|
+
ApiResponse({ status: HttpStatus.CONFLICT, description: "Poll already tallied" }),
|
|
94
|
+
ApiResponse({ status: HttpStatus.INTERNAL_SERVER_ERROR, description: "Failed to read scheduler state" }),
|
|
95
|
+
Post("status"),
|
|
96
|
+
__param(0, Body()),
|
|
97
|
+
__metadata("design:type", Function),
|
|
98
|
+
__metadata("design:paramtypes", [IdentityScheduledPollDto]),
|
|
99
|
+
__metadata("design:returntype", Promise)
|
|
100
|
+
], SchedulerController.prototype, "status", null);
|
|
101
|
+
__decorate([
|
|
102
|
+
ApiResponse({ status: HttpStatus.OK, description: "Poll finalization has been deleted" }),
|
|
103
|
+
ApiResponse({ status: HttpStatus.NOT_FOUND, description: "Poll not found" }),
|
|
104
|
+
ApiResponse({ status: HttpStatus.CONFLICT, description: "Poll already tallied" }),
|
|
105
|
+
ApiResponse({ status: HttpStatus.INTERNAL_SERVER_ERROR, description: "Failed to update scheduler state" }),
|
|
106
|
+
Post("delete"),
|
|
107
|
+
__param(0, Body()),
|
|
108
|
+
__metadata("design:type", Function),
|
|
109
|
+
__metadata("design:paramtypes", [IdentityScheduledPollDto]),
|
|
110
|
+
__metadata("design:returntype", Promise)
|
|
111
|
+
], SchedulerController.prototype, "delete", null);
|
|
112
|
+
SchedulerController = SchedulerController_1 = __decorate([
|
|
113
|
+
ApiTags("v1/scheduler"),
|
|
114
|
+
Controller("v1/scheduler"),
|
|
115
|
+
__metadata("design:paramtypes", [SchedulerService])
|
|
116
|
+
], SchedulerController);
|
|
117
|
+
export { SchedulerController };
|
|
118
|
+
//# sourceMappingURL=scheduler.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.controller.js","sourceRoot":"","sources":["../../../ts/scheduler/scheduler.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.module.d.ts","sourceRoot":"","sources":["../../../ts/scheduler/scheduler.module.ts"],"names":[],"mappings":"AAUA,qBAKa,eAAe;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 { ScheduleModule } from "@nestjs/schedule";
|
|
9
|
+
import { ProofModule } from "../proof/proof.module";
|
|
10
|
+
import { RedisModule } from "../redis/redis.module";
|
|
11
|
+
import { SessionKeysModule } from "../sessionKeys/sessionKeys.module";
|
|
12
|
+
import { SchedulerController } from "./scheduler.controller";
|
|
13
|
+
import { SchedulerService } from "./scheduler.service";
|
|
14
|
+
let SchedulerModule = class SchedulerModule {
|
|
15
|
+
};
|
|
16
|
+
SchedulerModule = __decorate([
|
|
17
|
+
Module({
|
|
18
|
+
imports: [SessionKeysModule, RedisModule, ScheduleModule.forRoot(), ProofModule],
|
|
19
|
+
providers: [SchedulerService],
|
|
20
|
+
controllers: [SchedulerController],
|
|
21
|
+
})
|
|
22
|
+
], SchedulerModule);
|
|
23
|
+
export { SchedulerModule };
|
|
24
|
+
//# sourceMappingURL=scheduler.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.module.js","sourceRoot":"","sources":["../../../ts/scheduler/scheduler.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOhD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,eAAe;IAL3B,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC;QAChF,SAAS,EAAE,CAAC,gBAAgB,CAAC;QAC7B,WAAW,EAAE,CAAC,mBAAmB,CAAC;KACnC,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { OnModuleInit } from "@nestjs/common";
|
|
2
|
+
import { SchedulerRegistry } from "@nestjs/schedule";
|
|
3
|
+
import type { IIsPollScheduledResponse, IGetPollFinalizationData, IIdentityPollWithSignerArgs, ISchedulePollWithSignerArgs } from "./types";
|
|
4
|
+
import type { IIdentityScheduledPoll, IScheduledPoll } from "../redis/types";
|
|
5
|
+
import { ProofGeneratorService } from "../proof/proof.service";
|
|
6
|
+
import { RedisService } from "../redis/redis.service";
|
|
7
|
+
import { SessionKeysService } from "../sessionKeys/sessionKeys.service";
|
|
8
|
+
export declare class SchedulerService implements OnModuleInit {
|
|
9
|
+
private readonly sessionKeysService;
|
|
10
|
+
private readonly redisService;
|
|
11
|
+
private readonly schedulerRegistry;
|
|
12
|
+
private readonly proofService;
|
|
13
|
+
/**
|
|
14
|
+
* Logger
|
|
15
|
+
*/
|
|
16
|
+
private readonly logger;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new scheduler service instance.
|
|
19
|
+
* @param sessionKeysService - session keys service to manage session keys
|
|
20
|
+
* @param redisService - redis service to interact with Redis database
|
|
21
|
+
* @param schedulerRegistry - scheduler registry to manage scheduled tasks
|
|
22
|
+
*/
|
|
23
|
+
constructor(sessionKeysService: SessionKeysService, redisService: RedisService, schedulerRegistry: SchedulerRegistry, proofService: ProofGeneratorService);
|
|
24
|
+
/**
|
|
25
|
+
* Instantiate and schedule the saved polls in the database
|
|
26
|
+
* @dev it is a lifecycle hook provided by NestJS that is called after all dependencies
|
|
27
|
+
* are injected and the module is fully initialized.
|
|
28
|
+
* This ensures your service is ready and all dependencies are available.
|
|
29
|
+
*/
|
|
30
|
+
onModuleInit(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Check if poll is scheduled for finalization
|
|
33
|
+
* @param args - Arguments for checking poll finalization
|
|
34
|
+
* @returns true if poll is scheduled for finalization, false otherwise
|
|
35
|
+
*/
|
|
36
|
+
isPollScheduled(scheduledPoll: IIdentityScheduledPoll): Promise<IIsPollScheduledResponse>;
|
|
37
|
+
/**
|
|
38
|
+
* Return the poll end date and whether it is tallied
|
|
39
|
+
* @param args - Arguments to retrieve poll data
|
|
40
|
+
*/
|
|
41
|
+
getPollFinalizationData({ pollId, maciAddress, chain, sessionKeyAddress, approval, }: IIdentityPollWithSignerArgs): Promise<IGetPollFinalizationData>;
|
|
42
|
+
/**
|
|
43
|
+
* Finalize poll starting from any step
|
|
44
|
+
*
|
|
45
|
+
* @param args - generate proofs arguments
|
|
46
|
+
*/
|
|
47
|
+
finalizePoll(poll: IScheduledPoll): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Store poll information and schedule its finalization.
|
|
50
|
+
* @param args - Arguments for storing and scheduling poll finalization
|
|
51
|
+
* @return delay in milliseconds until the poll is scheduled for finalization
|
|
52
|
+
*/
|
|
53
|
+
private setupPollFinalization;
|
|
54
|
+
/**
|
|
55
|
+
* Schedule poll for finalization
|
|
56
|
+
* @param args - Arguments to register poll for finalization
|
|
57
|
+
* @returns Response object with isScheduled property indicating the poll is scheduled
|
|
58
|
+
*/
|
|
59
|
+
registerPoll({ maciAddress, pollId, chain, mode, deploymentBlockNumber, sessionKeyAddress, approval, }: ISchedulePollWithSignerArgs): Promise<IIsPollScheduledResponse>;
|
|
60
|
+
/**
|
|
61
|
+
* Delete scheduled poll
|
|
62
|
+
* @param args - Arguments to identify the scheduled poll
|
|
63
|
+
* @returns Response object with isScheduled property indicating the poll is no longer scheduled
|
|
64
|
+
*/
|
|
65
|
+
deleteScheduledPoll(scheduledPoll: IIdentityScheduledPoll): Promise<IIsPollScheduledResponse>;
|
|
66
|
+
/**
|
|
67
|
+
* Restore all scheduled timeouts from Redis
|
|
68
|
+
*/
|
|
69
|
+
private restoreTimeouts;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=scheduler.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.service.d.ts","sourceRoot":"","sources":["../../../ts/scheduler/scheduler.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAE5B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAIxE,qBACa,gBAAiB,YAAW,YAAY;IAajD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAf/B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBAEgB,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,qBAAqB;IAKtD;;;;;OAKG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;OAIG;IACG,eAAe,CAAC,aAAa,EAAE,sBAAsB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAiC/F;;;OAGG;IACG,uBAAuB,CAAC,EAC5B,MAAM,EACN,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,QAAQ,GACT,EAAE,2BAA2B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuBlE;;;;OAIG;IACG,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmFvD;;;;OAIG;YACW,qBAAqB;IA0BnC;;;;OAIG;IACG,YAAY,CAAC,EACjB,WAAW,EACX,MAAM,EACN,KAAK,EACL,IAAI,EACJ,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,GACT,EAAE,2BAA2B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAuClE;;;;OAIG;IACG,mBAAmB,CAAC,aAAa,EAAE,sBAAsB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAcnG;;OAEG;YACW,eAAe;CAsC9B"}
|
|
@@ -0,0 +1,297 @@
|
|
|
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 SchedulerService_1;
|
|
11
|
+
import { getPoll, isTallied } from "@maci-protocol/sdk";
|
|
12
|
+
import { Injectable, Logger } from "@nestjs/common";
|
|
13
|
+
import { SchedulerRegistry } from "@nestjs/schedule";
|
|
14
|
+
import { ErrorCodes } from "../common";
|
|
15
|
+
import { ProofGeneratorService } from "../proof/proof.service";
|
|
16
|
+
import { RedisService } from "../redis/redis.service";
|
|
17
|
+
import { getPollKeyFromObject } from "../redis/utils";
|
|
18
|
+
import { SessionKeysService } from "../sessionKeys/sessionKeys.service";
|
|
19
|
+
const BUFFER_TIMEOUT = 15 * 1000; // 15 seconds buffer for poll finalization
|
|
20
|
+
let SchedulerService = SchedulerService_1 = class SchedulerService {
|
|
21
|
+
sessionKeysService;
|
|
22
|
+
redisService;
|
|
23
|
+
schedulerRegistry;
|
|
24
|
+
proofService;
|
|
25
|
+
/**
|
|
26
|
+
* Logger
|
|
27
|
+
*/
|
|
28
|
+
logger;
|
|
29
|
+
/**
|
|
30
|
+
* Create a new scheduler service instance.
|
|
31
|
+
* @param sessionKeysService - session keys service to manage session keys
|
|
32
|
+
* @param redisService - redis service to interact with Redis database
|
|
33
|
+
* @param schedulerRegistry - scheduler registry to manage scheduled tasks
|
|
34
|
+
*/
|
|
35
|
+
constructor(sessionKeysService, redisService, schedulerRegistry, proofService) {
|
|
36
|
+
this.sessionKeysService = sessionKeysService;
|
|
37
|
+
this.redisService = redisService;
|
|
38
|
+
this.schedulerRegistry = schedulerRegistry;
|
|
39
|
+
this.proofService = proofService;
|
|
40
|
+
this.logger = new Logger(SchedulerService_1.name);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Instantiate and schedule the saved polls in the database
|
|
44
|
+
* @dev it is a lifecycle hook provided by NestJS that is called after all dependencies
|
|
45
|
+
* are injected and the module is fully initialized.
|
|
46
|
+
* This ensures your service is ready and all dependencies are available.
|
|
47
|
+
*/
|
|
48
|
+
async onModuleInit() {
|
|
49
|
+
await this.restoreTimeouts();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if poll is scheduled for finalization
|
|
53
|
+
* @param args - Arguments for checking poll finalization
|
|
54
|
+
* @returns true if poll is scheduled for finalization, false otherwise
|
|
55
|
+
*/
|
|
56
|
+
async isPollScheduled(scheduledPoll) {
|
|
57
|
+
const key = getPollKeyFromObject(scheduledPoll);
|
|
58
|
+
const { maciAddress, pollId, chain } = scheduledPoll;
|
|
59
|
+
const { isPollTallied } = await this.getPollFinalizationData({
|
|
60
|
+
maciAddress,
|
|
61
|
+
pollId,
|
|
62
|
+
chain,
|
|
63
|
+
});
|
|
64
|
+
if (isPollTallied) {
|
|
65
|
+
this.deleteScheduledPoll({ maciAddress, pollId, chain });
|
|
66
|
+
this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_TALLIED}, poll has already been tallied`);
|
|
67
|
+
throw new Error(ErrorCodes.POLL_ALREADY_TALLIED.toString());
|
|
68
|
+
}
|
|
69
|
+
const storedPoll = await this.redisService.get(key);
|
|
70
|
+
if (!storedPoll) {
|
|
71
|
+
return { isScheduled: false };
|
|
72
|
+
}
|
|
73
|
+
const isPollTimeoutScheduled = this.schedulerRegistry.doesExist("timeout", key);
|
|
74
|
+
if (!isPollTimeoutScheduled) {
|
|
75
|
+
// delete redis data so user has to reschedule again
|
|
76
|
+
await this.redisService.delete(key);
|
|
77
|
+
return { isScheduled: false };
|
|
78
|
+
}
|
|
79
|
+
return { isScheduled: true };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Return the poll end date and whether it is tallied
|
|
83
|
+
* @param args - Arguments to retrieve poll data
|
|
84
|
+
*/
|
|
85
|
+
async getPollFinalizationData({ pollId, maciAddress, chain, sessionKeyAddress, approval, }) {
|
|
86
|
+
const signer = await this.sessionKeysService.getCoordinatorSigner(chain, sessionKeyAddress, approval);
|
|
87
|
+
const [{ endDate, isMerged: isPollMerged }, isPollTallied] = await Promise.all([
|
|
88
|
+
getPoll({
|
|
89
|
+
maciAddress,
|
|
90
|
+
pollId: BigInt(pollId),
|
|
91
|
+
signer,
|
|
92
|
+
}),
|
|
93
|
+
isTallied({
|
|
94
|
+
maciAddress,
|
|
95
|
+
pollId: String(pollId),
|
|
96
|
+
signer,
|
|
97
|
+
}),
|
|
98
|
+
]);
|
|
99
|
+
return {
|
|
100
|
+
endDate: Number(endDate),
|
|
101
|
+
isPollTallied,
|
|
102
|
+
isPollMerged,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Finalize poll starting from any step
|
|
107
|
+
*
|
|
108
|
+
* @param args - generate proofs arguments
|
|
109
|
+
*/
|
|
110
|
+
async finalizePoll(poll) {
|
|
111
|
+
const { maciAddress, pollId, chain, deploymentBlockNumber, mode, merged, proofsGenerated } = poll;
|
|
112
|
+
const key = getPollKeyFromObject({ maciAddress, pollId, chain });
|
|
113
|
+
const { endDate, isPollMerged } = await this.getPollFinalizationData({
|
|
114
|
+
maciAddress,
|
|
115
|
+
pollId,
|
|
116
|
+
chain,
|
|
117
|
+
});
|
|
118
|
+
if (endDate * 1000 > Date.now()) {
|
|
119
|
+
this.logger.error(`Error finalizing poll ${pollId}: voting period is not over.`);
|
|
120
|
+
await this.deleteScheduledPoll({ maciAddress, pollId, chain });
|
|
121
|
+
await this.setupPollFinalization(poll);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (isPollMerged !== merged) {
|
|
125
|
+
this.logger.error(`Error finalizing poll ${pollId}: is poll merged mismatch. Updating database.`);
|
|
126
|
+
await this.deleteScheduledPoll({ maciAddress, pollId, chain });
|
|
127
|
+
await this.setupPollFinalization({ ...poll, merged: isPollMerged });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
if (!merged) {
|
|
132
|
+
await this.proofService
|
|
133
|
+
.merge({
|
|
134
|
+
maciContractAddress: maciAddress,
|
|
135
|
+
pollId: Number(pollId),
|
|
136
|
+
chain,
|
|
137
|
+
})
|
|
138
|
+
.then(() => this.redisService.set(key, JSON.stringify({ ...poll, merged: true })))
|
|
139
|
+
.catch(async (error) => {
|
|
140
|
+
await this.deleteScheduledPoll({ maciAddress, pollId, chain });
|
|
141
|
+
await this.setupPollFinalization(poll);
|
|
142
|
+
throw new Error(`Error merging poll ${pollId}: ${error.message}`);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (!proofsGenerated) {
|
|
146
|
+
await this.proofService
|
|
147
|
+
.generate({
|
|
148
|
+
maciContractAddress: maciAddress,
|
|
149
|
+
poll: Number(pollId),
|
|
150
|
+
chain,
|
|
151
|
+
mode,
|
|
152
|
+
startBlock: deploymentBlockNumber,
|
|
153
|
+
blocksPerBatch: Number(process.env.COORDINATOR_BLOCK_BATCH_SIZE || 1000),
|
|
154
|
+
})
|
|
155
|
+
.then(() => this.redisService.set(key, JSON.stringify({ ...poll, merged: true, proofsGenerated: true })))
|
|
156
|
+
.catch(async (error) => {
|
|
157
|
+
await this.deleteScheduledPoll({ maciAddress, pollId, chain });
|
|
158
|
+
await this.setupPollFinalization({ ...poll, merged: true });
|
|
159
|
+
throw new Error(`Error generating proofs for poll ${pollId}: ${error.message}`);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
await this.proofService
|
|
163
|
+
.submit({
|
|
164
|
+
maciContractAddress: maciAddress,
|
|
165
|
+
pollId: Number(pollId),
|
|
166
|
+
chain,
|
|
167
|
+
})
|
|
168
|
+
.then(() => this.deleteScheduledPoll({ maciAddress, pollId, chain }))
|
|
169
|
+
.catch(async (error) => {
|
|
170
|
+
await this.deleteScheduledPoll({ maciAddress, pollId, chain });
|
|
171
|
+
await this.setupPollFinalization({ ...poll, merged: true, proofsGenerated: true });
|
|
172
|
+
throw new Error(`Error submitting proofs for poll ${pollId}: ${error.message}`);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
this.logger.error(`Error finalizing poll ${pollId}: ${error.message}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Store poll information and schedule its finalization.
|
|
181
|
+
* @param args - Arguments for storing and scheduling poll finalization
|
|
182
|
+
* @return delay in milliseconds until the poll is scheduled for finalization
|
|
183
|
+
*/
|
|
184
|
+
async setupPollFinalization(poll) {
|
|
185
|
+
const { maciAddress, pollId, chain, endDate } = poll;
|
|
186
|
+
const key = getPollKeyFromObject({ maciAddress, pollId, chain });
|
|
187
|
+
await this.redisService.set(key, JSON.stringify(poll));
|
|
188
|
+
const shouldBeExecutedIn = endDate * 1000 - Date.now();
|
|
189
|
+
const toBeExecutedIn = shouldBeExecutedIn > 0 ? shouldBeExecutedIn : 0;
|
|
190
|
+
const delay = toBeExecutedIn + BUFFER_TIMEOUT;
|
|
191
|
+
const timeout = setTimeout(async () => {
|
|
192
|
+
await this.finalizePoll(poll);
|
|
193
|
+
}, delay);
|
|
194
|
+
const isPollTimeoutScheduled = this.schedulerRegistry.doesExist("timeout", key);
|
|
195
|
+
if (isPollTimeoutScheduled) {
|
|
196
|
+
this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_SCHEDULED}, poll is already scheduled`);
|
|
197
|
+
throw new Error(ErrorCodes.POLL_ALREADY_SCHEDULED.toString());
|
|
198
|
+
}
|
|
199
|
+
this.schedulerRegistry.addTimeout(key, timeout);
|
|
200
|
+
return { delay };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Schedule poll for finalization
|
|
204
|
+
* @param args - Arguments to register poll for finalization
|
|
205
|
+
* @returns Response object with isScheduled property indicating the poll is scheduled
|
|
206
|
+
*/
|
|
207
|
+
async registerPoll({ maciAddress, pollId, chain, mode, deploymentBlockNumber, sessionKeyAddress, approval, }) {
|
|
208
|
+
const { endDate, isPollTallied } = await this.getPollFinalizationData({
|
|
209
|
+
maciAddress,
|
|
210
|
+
pollId,
|
|
211
|
+
chain,
|
|
212
|
+
sessionKeyAddress,
|
|
213
|
+
approval,
|
|
214
|
+
});
|
|
215
|
+
if (isPollTallied) {
|
|
216
|
+
this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_TALLIED}, poll has already been tallied`);
|
|
217
|
+
throw new Error(ErrorCodes.POLL_ALREADY_TALLIED.toString());
|
|
218
|
+
}
|
|
219
|
+
const { isScheduled } = await this.isPollScheduled({
|
|
220
|
+
maciAddress,
|
|
221
|
+
pollId,
|
|
222
|
+
chain,
|
|
223
|
+
});
|
|
224
|
+
if (isScheduled) {
|
|
225
|
+
this.logger.error(`Error: ${ErrorCodes.POLL_ALREADY_SCHEDULED}, poll is already scheduled`);
|
|
226
|
+
throw new Error(ErrorCodes.POLL_ALREADY_SCHEDULED.toString());
|
|
227
|
+
}
|
|
228
|
+
await this.setupPollFinalization({
|
|
229
|
+
maciAddress,
|
|
230
|
+
pollId,
|
|
231
|
+
chain,
|
|
232
|
+
deploymentBlockNumber,
|
|
233
|
+
mode,
|
|
234
|
+
endDate,
|
|
235
|
+
merged: false,
|
|
236
|
+
proofsGenerated: false,
|
|
237
|
+
});
|
|
238
|
+
return { isScheduled: true };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Delete scheduled poll
|
|
242
|
+
* @param args - Arguments to identify the scheduled poll
|
|
243
|
+
* @returns Response object with isScheduled property indicating the poll is no longer scheduled
|
|
244
|
+
*/
|
|
245
|
+
async deleteScheduledPoll(scheduledPoll) {
|
|
246
|
+
const key = getPollKeyFromObject(scheduledPoll);
|
|
247
|
+
const isPollTimeoutScheduled = this.schedulerRegistry.doesExist("timeout", key);
|
|
248
|
+
if (isPollTimeoutScheduled) {
|
|
249
|
+
this.schedulerRegistry.deleteTimeout(key);
|
|
250
|
+
}
|
|
251
|
+
await this.redisService.delete(key);
|
|
252
|
+
return { isScheduled: false };
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Restore all scheduled timeouts from Redis
|
|
256
|
+
*/
|
|
257
|
+
async restoreTimeouts() {
|
|
258
|
+
const polls = await this.redisService.getAll();
|
|
259
|
+
await Promise.all(polls.map(async ({ key, value }) => {
|
|
260
|
+
this.logger.log(`Restoring timeout for poll key: ${key}`);
|
|
261
|
+
try {
|
|
262
|
+
if (!value) {
|
|
263
|
+
await this.redisService.delete(key);
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const poll = JSON.parse(value);
|
|
267
|
+
const { endDate, isPollTallied } = await this.getPollFinalizationData({
|
|
268
|
+
maciAddress: poll.maciAddress,
|
|
269
|
+
pollId: poll.pollId,
|
|
270
|
+
chain: poll.chain,
|
|
271
|
+
});
|
|
272
|
+
if (isPollTallied) {
|
|
273
|
+
await this.deleteScheduledPoll({
|
|
274
|
+
maciAddress: poll.maciAddress,
|
|
275
|
+
pollId: poll.pollId,
|
|
276
|
+
chain: poll.chain,
|
|
277
|
+
});
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const { delay } = await this.setupPollFinalization({ ...poll, endDate });
|
|
281
|
+
this.logger.log(`poll ${value} to be finalized at ${new Date(Date.now() + delay).toISOString()}`);
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
this.logger.error(`Error restoring timeout for poll key: ${key}`, error);
|
|
285
|
+
}
|
|
286
|
+
}));
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
SchedulerService = SchedulerService_1 = __decorate([
|
|
290
|
+
Injectable(),
|
|
291
|
+
__metadata("design:paramtypes", [SessionKeysService,
|
|
292
|
+
RedisService,
|
|
293
|
+
SchedulerRegistry,
|
|
294
|
+
ProofGeneratorService])
|
|
295
|
+
], SchedulerService);
|
|
296
|
+
export { SchedulerService };
|
|
297
|
+
//# sourceMappingURL=scheduler.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.service.js","sourceRoot":"","sources":["../../../ts/scheduler/scheduler.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { IIdentityScheduledPoll, IScheduledPoll } from "../redis/types";
|
|
2
|
+
import type { Hex } from "viem";
|
|
3
|
+
/**
|
|
4
|
+
* Identity scheduled poll arguments with required arguments for signer
|
|
5
|
+
*/
|
|
6
|
+
export interface IIdentityPollWithSignerArgs extends IIdentityScheduledPoll {
|
|
7
|
+
/**
|
|
8
|
+
* Approval for the session key
|
|
9
|
+
*/
|
|
10
|
+
approval?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Session key address
|
|
13
|
+
*/
|
|
14
|
+
sessionKeyAddress?: Hex;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Scheduled poll arguments with required arguments for signer
|
|
18
|
+
*/
|
|
19
|
+
export interface ISchedulePollWithSignerArgs extends IScheduledPoll {
|
|
20
|
+
/**
|
|
21
|
+
* Approval for the session key
|
|
22
|
+
*/
|
|
23
|
+
approval?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Session key address
|
|
26
|
+
*/
|
|
27
|
+
sessionKeyAddress?: Hex;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* poll end date and is tallied response
|
|
31
|
+
*/
|
|
32
|
+
export interface IGetPollFinalizationData {
|
|
33
|
+
/**
|
|
34
|
+
* End date of the poll
|
|
35
|
+
*/
|
|
36
|
+
endDate: number;
|
|
37
|
+
/**
|
|
38
|
+
* Indicates if the poll is tallied
|
|
39
|
+
*/
|
|
40
|
+
isPollTallied: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Indicates if the poll has been merged
|
|
43
|
+
*/
|
|
44
|
+
isPollMerged: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Is poll scheduled response
|
|
48
|
+
*/
|
|
49
|
+
export interface IIsPollScheduledResponse {
|
|
50
|
+
/**
|
|
51
|
+
* Indicates if the poll is scheduled
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
isScheduled: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Setup poll finalization response
|
|
58
|
+
*/
|
|
59
|
+
export interface ISetupPollFinalizationResponse {
|
|
60
|
+
/**
|
|
61
|
+
* delay in milliseconds until poll finalization is executed
|
|
62
|
+
*/
|
|
63
|
+
delay: number;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/scheduler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../ts/scheduler/types.ts"],"names":[],"mappings":""}
|
|
@@ -29,8 +29,8 @@ describe("SessionKeysController", () => {
|
|
|
29
29
|
jest.clearAllMocks();
|
|
30
30
|
});
|
|
31
31
|
describe("v1/session-keys/generate", () => {
|
|
32
|
-
test("should return a session key address", () => {
|
|
33
|
-
const data = sessionKeysController.generateSessionKey();
|
|
32
|
+
test("should return a session key address", async () => {
|
|
33
|
+
const data = await sessionKeysController.generateSessionKey();
|
|
34
34
|
expect(data).toStrictEqual(defaultGenerateSessionKeyReturn);
|
|
35
35
|
});
|
|
36
36
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionKeys.controller.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.controller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,qBAA4C,CAAC;IAEjD,MAAM,sBAAsB,GAAG;QAC7B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;KAChC,CAAC;IAEF,MAAM,+BAA+B,GAA8B;QACjE,iBAAiB,EAAE,WAAW;KAC/B,CAAC;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzC,WAAW,EAAE,CAAC,qBAAqB,CAAC;SACrC,CAAC;aACC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;gBACjC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;gBAC7F,OAAO,sBAAsB,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,qBAAqB,GAAG,GAAG,CAAC,GAAG,CAAwB,qBAAqB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,qCAAqC,EAAE,
|
|
1
|
+
{"version":3,"file":"sessionKeys.controller.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.controller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,qBAA4C,CAAC;IAEjD,MAAM,sBAAsB,GAAG;QAC7B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;KAChC,CAAC;IAEF,MAAM,+BAA+B,GAA8B;QACjE,iBAAiB,EAAE,WAAW;KAC/B,CAAC;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzC,WAAW,EAAE,CAAC,qBAAqB,CAAC;SACrC,CAAC;aACC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;gBACjC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;gBAC7F,OAAO,sBAAsB,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,qBAAqB,GAAG,GAAG,CAAC,GAAG,CAAwB,qBAAqB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,qBAAqB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|