@maci-protocol/coordinator 0.0.0-ci.4d3abe4 → 0.0.0-ci.4edbce2
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/build/scripts/generateKeypair.js +2 -2
- package/build/scripts/generateKeypair.js.map +1 -1
- package/build/tests/e2e.deploy.test.js +20 -17
- 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 +114 -0
- package/build/tests/e2e.redis.test.js.map +1 -0
- package/build/tests/utils.d.ts.map +1 -1
- package/build/tests/utils.js.map +1 -1
- package/build/ts/app.module.d.ts.map +1 -1
- package/build/ts/app.module.js +2 -0
- package/build/ts/app.module.js.map +1 -1
- package/build/ts/common/__tests__/common.test.js +1 -11
- package/build/ts/common/__tests__/common.test.js.map +1 -1
- package/build/ts/common/chain.d.ts.map +1 -1
- package/build/ts/common/chain.js +3 -1
- package/build/ts/common/chain.js.map +1 -1
- package/build/ts/deployer/__tests__/deployer.controller.test.js +7 -7
- package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -1
- package/build/ts/deployer/__tests__/deployer.service.test.js +54 -8
- package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
- package/build/ts/deployer/__tests__/utils.d.ts +0 -1
- package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/utils.js +2 -3
- package/build/ts/deployer/__tests__/utils.js.map +1 -1
- package/build/ts/deployer/deployer.service.d.ts +5 -6
- package/build/ts/deployer/deployer.service.d.ts.map +1 -1
- package/build/ts/deployer/deployer.service.js +175 -51
- package/build/ts/deployer/deployer.service.js.map +1 -1
- package/build/ts/deployer/types.d.ts +16 -10
- package/build/ts/deployer/types.d.ts.map +1 -1
- package/build/ts/health/__tests__/health.controller.test.js +8 -2
- package/build/ts/health/__tests__/health.controller.test.js.map +1 -1
- package/build/ts/health/__tests__/health.service.test.js +12 -1
- package/build/ts/health/__tests__/health.service.test.js.map +1 -1
- package/build/ts/health/health.module.d.ts.map +1 -1
- package/build/ts/health/health.module.js +2 -1
- package/build/ts/health/health.module.js.map +1 -1
- package/build/ts/health/health.service.d.ts +8 -1
- package/build/ts/health/health.service.d.ts.map +1 -1
- package/build/ts/health/health.service.js +15 -2
- package/build/ts/health/health.service.js.map +1 -1
- package/build/ts/health/types.d.ts +4 -0
- package/build/ts/health/types.d.ts.map +1 -1
- package/build/ts/proof/__tests__/proof.service.test.js +28 -54
- package/build/ts/proof/__tests__/proof.service.test.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 +128 -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 +52 -0
- package/build/ts/redis/redis.service.d.ts.map +1 -0
- package/build/ts/redis/redis.service.js +97 -0
- package/build/ts/redis/redis.service.js.map +1 -0
- package/build/ts/redis/types.d.ts +57 -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 +24 -0
- package/build/ts/redis/utils.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/subgraph/__tests__/subgraph.service.test.js +2 -3
- package/build/ts/subgraph/__tests__/subgraph.service.test.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 +16 -5
- package/build/ts/subgraph/subgraph.service.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +18 -17
- 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,97 @@
|
|
|
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 { Injectable } from "@nestjs/common";
|
|
11
|
+
import { createClient } from "@redis/client";
|
|
12
|
+
/**
|
|
13
|
+
* Redis service to interact with the Redis database.
|
|
14
|
+
*/
|
|
15
|
+
let RedisService = class RedisService {
|
|
16
|
+
/**
|
|
17
|
+
* Client instance used to interact with the Redis database.
|
|
18
|
+
*/
|
|
19
|
+
client;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new instance of the RedisService.
|
|
22
|
+
* The Redis configuration is set up here
|
|
23
|
+
*/
|
|
24
|
+
constructor() {
|
|
25
|
+
this.client = createClient({
|
|
26
|
+
url: `redis://${process.env.COORDINATOR_REDIS_HOST}:${process.env.COORDINATOR_REDIS_PORT}`,
|
|
27
|
+
disableOfflineQueue: true,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initializes the Redis client connection when the module has been uploaded.
|
|
32
|
+
* @dev it is a lifecycle hook provided by NestJS that is called after all dependencies
|
|
33
|
+
* are injected and the module is fully initialized.
|
|
34
|
+
* This ensures your service is ready and all dependencies are available.
|
|
35
|
+
*/
|
|
36
|
+
async onModuleInit() {
|
|
37
|
+
await this.client.connect();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Saves a new key-value pair in Redis.
|
|
41
|
+
* @param key key for the Redis entry
|
|
42
|
+
* @param value value to be stored in Redis
|
|
43
|
+
*/
|
|
44
|
+
async set(key, value) {
|
|
45
|
+
// we are not using @redis/json because we dont need complex search capabilities
|
|
46
|
+
// we store a string (lightweight) and parse it to use the object
|
|
47
|
+
await this.client.set(key, value);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Retrieves a value from Redis by its key.
|
|
51
|
+
* @param key key for the Redis entry
|
|
52
|
+
* @returns the value stored as string in Redis or null if the key does not exist
|
|
53
|
+
*/
|
|
54
|
+
async get(key) {
|
|
55
|
+
return this.client.get(key);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Retrieves all keys from Redis that match a specific pattern.
|
|
59
|
+
* @param match optional pattern to match keys in Redis
|
|
60
|
+
* @dev if no match is provided, it will return all keys
|
|
61
|
+
* @returns the array of string values stored in Redis that match the pattern
|
|
62
|
+
*/
|
|
63
|
+
async getAll(match) {
|
|
64
|
+
let result = [];
|
|
65
|
+
let currentCursor = "0";
|
|
66
|
+
do {
|
|
67
|
+
// using a cursor is recommended to be use in production environment
|
|
68
|
+
// eslint-disable-next-line no-await-in-loop
|
|
69
|
+
const { cursor, keys } = await this.client.scan(currentCursor, { MATCH: match || "*", COUNT: 100 });
|
|
70
|
+
// eslint-disable-next-line no-await-in-loop
|
|
71
|
+
const values = await Promise.all(keys.map((key) => this.get(key)));
|
|
72
|
+
result = result.concat(values.filter((value) => value !== null));
|
|
73
|
+
currentCursor = cursor;
|
|
74
|
+
} while (currentCursor !== "0");
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Deletes a key from Redis.
|
|
79
|
+
* @param key key to be deleted from Redis
|
|
80
|
+
*/
|
|
81
|
+
async delete(key) {
|
|
82
|
+
return this.client.del(key);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if the connection to Redis is open
|
|
86
|
+
* @return true if the connection is open, false otherwise
|
|
87
|
+
*/
|
|
88
|
+
isOpen() {
|
|
89
|
+
return this.client.isOpen;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
RedisService = __decorate([
|
|
93
|
+
Injectable(),
|
|
94
|
+
__metadata("design:paramtypes", [])
|
|
95
|
+
], RedisService);
|
|
96
|
+
export { RedisService };
|
|
97
|
+
//# sourceMappingURL=redis.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../ts/redis/redis.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAgB,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAmB,MAAM,eAAe,CAAC;AAE9D;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB;;OAEG;IACK,MAAM,CAAkB;IAEhC;;;OAGG;IACH;QACE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YACzB,GAAG,EAAE,WAAW,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE;YAC1F,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;QAClC,gFAAgF;QAChF,iEAAiE;QACjE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAc;QACzB,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,aAAa,GAAG,GAAG,CAAC;QAExB,GAAG,CAAC;YACF,oEAAoE;YACpE,4CAA4C;YAC5C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAEpG,4CAA4C;YAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;YAEjE,aAAa,GAAG,MAAM,CAAC;QACzB,CAAC,QAAQ,aAAa,KAAK,GAAG,EAAE;QAEhC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF,CAAA;AAvFY,YAAY;IADxB,UAAU,EAAE;;GACA,YAAY,CAuFxB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ESupportedNetworks } from "../common";
|
|
2
|
+
import type { EMode } from "@maci-protocol/sdk";
|
|
3
|
+
/**
|
|
4
|
+
* Interface for scheduled polls stored in Redis
|
|
5
|
+
*/
|
|
6
|
+
export interface IScheduledPoll {
|
|
7
|
+
/**
|
|
8
|
+
* Maci contract address
|
|
9
|
+
*/
|
|
10
|
+
maciAddress: string;
|
|
11
|
+
/**
|
|
12
|
+
* Poll id (unique identifier)
|
|
13
|
+
*/
|
|
14
|
+
pollId: string;
|
|
15
|
+
/**
|
|
16
|
+
* Voting mode
|
|
17
|
+
*/
|
|
18
|
+
mode: EMode;
|
|
19
|
+
/**
|
|
20
|
+
* Chain in which the poll is deployed
|
|
21
|
+
*/
|
|
22
|
+
chain: ESupportedNetworks;
|
|
23
|
+
/**
|
|
24
|
+
* End date
|
|
25
|
+
*/
|
|
26
|
+
endDate: number;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the MACI contract's state root has been merged
|
|
29
|
+
*/
|
|
30
|
+
merged: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Whether the proofs has been generated
|
|
33
|
+
*/
|
|
34
|
+
proofsGenerated: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* getPollKeyForRedis parameters
|
|
38
|
+
*/
|
|
39
|
+
export interface IGetPollKeyForRedisParams {
|
|
40
|
+
/**
|
|
41
|
+
* Chain in which the poll is deployed
|
|
42
|
+
*/
|
|
43
|
+
chain: ESupportedNetworks;
|
|
44
|
+
/**
|
|
45
|
+
* Maci contract address
|
|
46
|
+
*/
|
|
47
|
+
maciAddress: string;
|
|
48
|
+
/**
|
|
49
|
+
* Poll id (unique identifier)
|
|
50
|
+
*/
|
|
51
|
+
pollId: string;
|
|
52
|
+
/**
|
|
53
|
+
* Test environment flag (optional)
|
|
54
|
+
*/
|
|
55
|
+
test?: boolean;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/redis/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;IAE1B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;IAE1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../ts/redis/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { IGetPollKeyForRedisParams, IScheduledPoll } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Generates a Redis key for a poll based on its attributes
|
|
4
|
+
*
|
|
5
|
+
* @param chain - chain where the poll is deployed
|
|
6
|
+
* @param maciAddress - maci contract where the poll was created
|
|
7
|
+
* @param pollId - poll ID
|
|
8
|
+
* @param test - Optional flag to indicate if this is a test environment
|
|
9
|
+
* @returns key for Redis
|
|
10
|
+
*/
|
|
11
|
+
export declare const getPollKeyForRedis: ({ chain, maciAddress, pollId, test }: IGetPollKeyForRedisParams) => string;
|
|
12
|
+
/**
|
|
13
|
+
* Generates a Redis key for a poll object
|
|
14
|
+
*
|
|
15
|
+
* @param scheduledPoll - poll object to generate the key from
|
|
16
|
+
* @param test - Optional flag to indicate if this is a test environment
|
|
17
|
+
* @returns key for Redis
|
|
18
|
+
*/
|
|
19
|
+
export declare const getPollKeyFromObject: (scheduledPoll: IScheduledPoll, test?: boolean) => string;
|
|
20
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/redis/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,sCAA8C,yBAAyB,KAAG,MAC7C,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,eAAe,cAAc,EAAE,OAAO,OAAO,KAAG,MAMjF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a Redis key for a poll based on its attributes
|
|
3
|
+
*
|
|
4
|
+
* @param chain - chain where the poll is deployed
|
|
5
|
+
* @param maciAddress - maci contract where the poll was created
|
|
6
|
+
* @param pollId - poll ID
|
|
7
|
+
* @param test - Optional flag to indicate if this is a test environment
|
|
8
|
+
* @returns key for Redis
|
|
9
|
+
*/
|
|
10
|
+
export const getPollKeyForRedis = ({ chain, maciAddress, pollId, test = false }) => `${chain}-${maciAddress}-poll-${pollId}${test ? `-test` : ""}`;
|
|
11
|
+
/**
|
|
12
|
+
* Generates a Redis key for a poll object
|
|
13
|
+
*
|
|
14
|
+
* @param scheduledPoll - poll object to generate the key from
|
|
15
|
+
* @param test - Optional flag to indicate if this is a test environment
|
|
16
|
+
* @returns key for Redis
|
|
17
|
+
*/
|
|
18
|
+
export const getPollKeyFromObject = (scheduledPoll, test) => getPollKeyForRedis({
|
|
19
|
+
chain: scheduledPoll.chain,
|
|
20
|
+
maciAddress: scheduledPoll.maciAddress,
|
|
21
|
+
pollId: scheduledPoll.pollId,
|
|
22
|
+
test,
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/redis/utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,EAA6B,EAAU,EAAE,CACpH,GAAG,KAAK,IAAI,WAAW,SAAS,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,aAA6B,EAAE,IAAc,EAAU,EAAE,CAC5F,kBAAkB,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC,KAAK;IAC1B,WAAW,EAAE,aAAa,CAAC,WAAW;IACtC,MAAM,EAAE,aAAa,CAAC,MAAM;IAC5B,IAAI;CACL,CAAC,CAAC"}
|
|
@@ -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"}
|
|
@@ -40,12 +40,11 @@ describe("SubgraphService", () => {
|
|
|
40
40
|
await expect(service.deploy(defaultArgs)).rejects.toThrow(ErrorCodes.SUBGRAPH_DEPLOY.toString());
|
|
41
41
|
});
|
|
42
42
|
test("should throw error if network is invalid", async () => {
|
|
43
|
-
childProcess.execFile.mockRejectedValue(new Error());
|
|
44
43
|
const service = new SubgraphService();
|
|
45
|
-
await expect(service.deploy({ ...defaultArgs, network: "unknown" })).rejects.toThrow(ErrorCodes.
|
|
44
|
+
await expect(service.deploy({ ...defaultArgs, network: "unknown" })).rejects.toThrow(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
46
45
|
});
|
|
47
46
|
test("should throw error if there is no subgraph url", async () => {
|
|
48
|
-
childProcess.execFile.mockResolvedValue({ stdout: "" });
|
|
47
|
+
childProcess.execFile.mockResolvedValue({ stdout: "", stderr: "" });
|
|
49
48
|
const service = new SubgraphService();
|
|
50
49
|
await expect(service.deploy(defaultArgs)).rejects.toThrow(ErrorCodes.SUBGRAPH_DEPLOY.toString());
|
|
51
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraph.service.test.js","sourceRoot":"","sources":["../../../../ts/subgraph/__tests__/subgraph.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAY,EAAE,CAAC,CAAC;IACzC,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;IACtC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;CACpB,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAY,EAAE,CAAC,CAAC;IAC9B,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC3B,QAAQ,EAAE;QACR,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;KACrB;CACF,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAY,EAAE,CAAC,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC;CAC9C,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,WAAW,GAAwB;QACvC,mBAAmB,EAAE,4CAA4C;QACjE,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,kBAAkB,CAAC,gBAAgB;QAC5C,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,QAAQ;KACd,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,QAAiC,CAAC,iBAAiB,CAAC;YAChE,MAAM,EAAE,uCAAuC;SAChD,CAAC,CAAC;QAEF,EAAE,CAAC,QAAQ,CAAC,SAAuB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACvD,YAAY,CAAC,QAAiC,CAAC,iBAAiB,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAE/E,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;QAEtC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"subgraph.service.test.js","sourceRoot":"","sources":["../../../../ts/subgraph/__tests__/subgraph.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraph.service.d.ts","sourceRoot":"","sources":["../../../ts/subgraph/subgraph.service.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,qBACa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"subgraph.service.d.ts","sourceRoot":"","sources":["../../../ts/subgraph/subgraph.service.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,qBACa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;OAEG;;IAKH;;;;;;;OAOG;IACG,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA4FpG"}
|
|
@@ -4,6 +4,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
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
|
+
};
|
|
7
10
|
var SubgraphService_1;
|
|
8
11
|
import { Injectable, Logger } from "@nestjs/common";
|
|
9
12
|
import childProcess from "child_process";
|
|
@@ -21,7 +24,13 @@ let SubgraphService = SubgraphService_1 = class SubgraphService {
|
|
|
21
24
|
/**
|
|
22
25
|
* Logger
|
|
23
26
|
*/
|
|
24
|
-
logger
|
|
27
|
+
logger;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize service
|
|
30
|
+
*/
|
|
31
|
+
constructor() {
|
|
32
|
+
this.logger = new Logger(SubgraphService_1.name);
|
|
33
|
+
}
|
|
25
34
|
/**
|
|
26
35
|
* Generate proofs for message processing and tally
|
|
27
36
|
*
|
|
@@ -33,7 +42,7 @@ let SubgraphService = SubgraphService_1 = class SubgraphService {
|
|
|
33
42
|
async deploy(args, options) {
|
|
34
43
|
try {
|
|
35
44
|
if (!Object.values(ESupportedNetworks).includes(args.network)) {
|
|
36
|
-
throw new Error(
|
|
45
|
+
throw new Error(ErrorCodes.UNSUPPORTED_NETWORK.toString());
|
|
37
46
|
}
|
|
38
47
|
const subgraphManifestPath = path.resolve(process.env.SUBGRAPH_FOLDER, "subgraph.yaml");
|
|
39
48
|
await execFile("cp", [
|
|
@@ -93,14 +102,16 @@ let SubgraphService = SubgraphService_1 = class SubgraphService {
|
|
|
93
102
|
return { url };
|
|
94
103
|
}
|
|
95
104
|
catch (error) {
|
|
96
|
-
|
|
105
|
+
const errorMessage = error.message || ErrorCodes.SUBGRAPH_DEPLOY.toString();
|
|
106
|
+
this.logger.error("Error: ", errorMessage);
|
|
97
107
|
options?.onFail(error);
|
|
98
|
-
throw new Error(error
|
|
108
|
+
throw new Error(errorMessage, { cause: error });
|
|
99
109
|
}
|
|
100
110
|
}
|
|
101
111
|
};
|
|
102
112
|
SubgraphService = SubgraphService_1 = __decorate([
|
|
103
|
-
Injectable()
|
|
113
|
+
Injectable(),
|
|
114
|
+
__metadata("design:paramtypes", [])
|
|
104
115
|
], SubgraphService);
|
|
105
116
|
export { SubgraphService };
|
|
106
117
|
//# sourceMappingURL=subgraph.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraph.service.js","sourceRoot":"","sources":["../../../ts/subgraph/subgraph.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"subgraph.service.js","sourceRoot":"","sources":["../../../ts/subgraph/subgraph.service.ts"],"names":[],"mappings":"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"}
|