@maci-protocol/coordinator 0.0.0-ci.4c6d4e8 → 0.0.0-ci.4d0e3a3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/CHANGELOG.md +224 -0
  2. package/LICENSE +1 -2
  3. package/README.md +71 -10
  4. package/build/hardhat.config.cjs +17 -9
  5. package/build/hardhat.config.cjs.map +1 -1
  6. package/build/hardhat.config.d.cts +15 -12
  7. package/build/hardhat.config.d.cts.map +1 -1
  8. package/build/scripts/generateKeypair.js +2 -2
  9. package/build/scripts/generateKeypair.js.map +1 -1
  10. package/build/scripts/generateMaciKeyPair.js +2 -2
  11. package/build/scripts/generateMaciKeyPair.js.map +1 -1
  12. package/build/tests/constants.d.ts +3 -4
  13. package/build/tests/constants.d.ts.map +1 -1
  14. package/build/tests/constants.js +5 -4
  15. package/build/tests/constants.js.map +1 -1
  16. package/build/tests/e2e.deploy.test.js +133 -103
  17. package/build/tests/e2e.deploy.test.js.map +1 -1
  18. package/build/tests/e2e.redis.test.d.ts +2 -0
  19. package/build/tests/e2e.redis.test.d.ts.map +1 -0
  20. package/build/tests/e2e.redis.test.js +118 -0
  21. package/build/tests/e2e.redis.test.js.map +1 -0
  22. package/build/tests/utils.d.ts +7 -1
  23. package/build/tests/utils.d.ts.map +1 -1
  24. package/build/tests/utils.js +17 -6
  25. package/build/tests/utils.js.map +1 -1
  26. package/build/ts/app.module.d.ts.map +1 -1
  27. package/build/ts/app.module.js +6 -0
  28. package/build/ts/app.module.js.map +1 -1
  29. package/build/ts/common/__tests__/common.test.js +44 -46
  30. package/build/ts/common/__tests__/common.test.js.map +1 -1
  31. package/build/ts/common/accountAbstraction.d.ts +7 -24
  32. package/build/ts/common/accountAbstraction.d.ts.map +1 -1
  33. package/build/ts/common/accountAbstraction.js +22 -49
  34. package/build/ts/common/accountAbstraction.js.map +1 -1
  35. package/build/ts/common/chain.d.ts +22 -0
  36. package/build/ts/common/chain.d.ts.map +1 -0
  37. package/build/ts/common/chain.js +37 -0
  38. package/build/ts/common/chain.js.map +1 -0
  39. package/build/ts/common/coordinatorKeypair.d.ts +7 -0
  40. package/build/ts/common/coordinatorKeypair.d.ts.map +1 -0
  41. package/build/ts/common/coordinatorKeypair.js +14 -0
  42. package/build/ts/common/coordinatorKeypair.js.map +1 -0
  43. package/build/ts/common/errors.d.ts +13 -10
  44. package/build/ts/common/errors.d.ts.map +1 -1
  45. package/build/ts/common/errors.js +12 -9
  46. package/build/ts/common/errors.js.map +1 -1
  47. package/build/ts/common/http.d.ts +6 -0
  48. package/build/ts/common/http.d.ts.map +1 -0
  49. package/build/ts/common/http.js +49 -0
  50. package/build/ts/common/http.js.map +1 -0
  51. package/build/ts/common/index.d.ts +3 -1
  52. package/build/ts/common/index.d.ts.map +1 -1
  53. package/build/ts/common/index.js +3 -1
  54. package/build/ts/common/index.js.map +1 -1
  55. package/build/ts/common/networks.d.ts +2 -21
  56. package/build/ts/common/networks.d.ts.map +1 -1
  57. package/build/ts/common/networks.js +39 -48
  58. package/build/ts/common/networks.js.map +1 -1
  59. package/build/ts/common/types.d.ts +3 -4
  60. package/build/ts/common/types.d.ts.map +1 -1
  61. package/build/ts/deployer/__tests__/deployer.controller.test.js +23 -25
  62. package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -1
  63. package/build/ts/deployer/__tests__/deployer.service.test.js +184 -337
  64. package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
  65. package/build/ts/deployer/__tests__/utils.d.ts +31 -6
  66. package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
  67. package/build/ts/deployer/__tests__/utils.js +48 -24
  68. package/build/ts/deployer/__tests__/utils.js.map +1 -1
  69. package/build/ts/deployer/deployer.controller.d.ts.map +1 -1
  70. package/build/ts/deployer/deployer.controller.js +19 -6
  71. package/build/ts/deployer/deployer.controller.js.map +1 -1
  72. package/build/ts/deployer/deployer.service.d.ts +26 -53
  73. package/build/ts/deployer/deployer.service.d.ts.map +1 -1
  74. package/build/ts/deployer/deployer.service.js +343 -469
  75. package/build/ts/deployer/deployer.service.js.map +1 -1
  76. package/build/ts/deployer/dto.d.ts +7 -7
  77. package/build/ts/deployer/dto.d.ts.map +1 -1
  78. package/build/ts/deployer/dto.js +14 -6
  79. package/build/ts/deployer/dto.js.map +1 -1
  80. package/build/ts/deployer/types.d.ts +84 -47
  81. package/build/ts/deployer/types.d.ts.map +1 -1
  82. package/build/ts/file/__tests__/file.service.test.js +12 -11
  83. package/build/ts/file/__tests__/file.service.test.js.map +1 -1
  84. package/build/ts/file/file.service.d.ts +4 -3
  85. package/build/ts/file/file.service.d.ts.map +1 -1
  86. package/build/ts/file/file.service.js +16 -10
  87. package/build/ts/file/file.service.js.map +1 -1
  88. package/build/ts/file/types.d.ts +2 -2
  89. package/build/ts/file/types.d.ts.map +1 -1
  90. package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
  91. package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
  92. package/build/ts/health/__tests__/health.controller.test.js +52 -0
  93. package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
  94. package/build/ts/health/__tests__/health.service.test.d.ts +2 -0
  95. package/build/ts/health/__tests__/health.service.test.d.ts.map +1 -0
  96. package/build/ts/health/__tests__/health.service.test.js +101 -0
  97. package/build/ts/health/__tests__/health.service.test.js.map +1 -0
  98. package/build/ts/health/health.controller.d.ts +16 -0
  99. package/build/ts/health/health.controller.d.ts.map +1 -0
  100. package/build/ts/health/health.controller.js +43 -0
  101. package/build/ts/health/health.controller.js.map +1 -0
  102. package/build/ts/health/health.module.d.ts +3 -0
  103. package/build/ts/health/health.module.d.ts.map +1 -0
  104. package/build/ts/health/health.module.js +22 -0
  105. package/build/ts/health/health.module.js.map +1 -0
  106. package/build/ts/health/health.service.d.ts +42 -0
  107. package/build/ts/health/health.service.d.ts.map +1 -0
  108. package/build/ts/health/health.service.js +176 -0
  109. package/build/ts/health/health.service.js.map +1 -0
  110. package/build/ts/health/types.d.ts +87 -0
  111. package/build/ts/health/types.d.ts.map +1 -0
  112. package/build/ts/health/types.js +2 -0
  113. package/build/ts/health/types.js.map +1 -0
  114. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts +11 -0
  115. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts.map +1 -0
  116. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js +12 -0
  117. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js.map +1 -0
  118. package/build/ts/main.js +1 -1
  119. package/build/ts/proof/__tests__/proof.controller.test.js +8 -7
  120. package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -1
  121. package/build/ts/proof/__tests__/proof.gateway.test.js +5 -3
  122. package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -1
  123. package/build/ts/proof/__tests__/proof.service.test.js +31 -75
  124. package/build/ts/proof/__tests__/proof.service.test.js.map +1 -1
  125. package/build/ts/proof/dto.d.ts +15 -18
  126. package/build/ts/proof/dto.d.ts.map +1 -1
  127. package/build/ts/proof/dto.js +55 -49
  128. package/build/ts/proof/dto.js.map +1 -1
  129. package/build/ts/proof/proof.controller.d.ts +3 -2
  130. package/build/ts/proof/proof.controller.d.ts.map +1 -1
  131. package/build/ts/proof/proof.controller.js +38 -15
  132. package/build/ts/proof/proof.controller.js.map +1 -1
  133. package/build/ts/proof/proof.module.d.ts.map +1 -1
  134. package/build/ts/proof/proof.module.js +1 -0
  135. package/build/ts/proof/proof.module.js.map +1 -1
  136. package/build/ts/proof/proof.service.d.ts +4 -6
  137. package/build/ts/proof/proof.service.d.ts.map +1 -1
  138. package/build/ts/proof/proof.service.js +48 -130
  139. package/build/ts/proof/proof.service.js.map +1 -1
  140. package/build/ts/proof/types.d.ts +21 -17
  141. package/build/ts/proof/types.d.ts.map +1 -1
  142. package/build/ts/proof/types.js.map +1 -1
  143. package/build/ts/redis/__tests__/redis.service.test.d.ts +2 -0
  144. package/build/ts/redis/__tests__/redis.service.test.d.ts.map +1 -0
  145. package/build/ts/redis/__tests__/redis.service.test.js +148 -0
  146. package/build/ts/redis/__tests__/redis.service.test.js.map +1 -0
  147. package/build/ts/redis/redis.module.d.ts +3 -0
  148. package/build/ts/redis/redis.module.d.ts.map +1 -0
  149. package/build/ts/redis/redis.module.js +18 -0
  150. package/build/ts/redis/redis.module.js.map +1 -0
  151. package/build/ts/redis/redis.service.d.ts +53 -0
  152. package/build/ts/redis/redis.service.d.ts.map +1 -0
  153. package/build/ts/redis/redis.service.js +99 -0
  154. package/build/ts/redis/redis.service.js.map +1 -0
  155. package/build/ts/redis/types.d.ts +66 -0
  156. package/build/ts/redis/types.d.ts.map +1 -0
  157. package/build/ts/redis/types.js +2 -0
  158. package/build/ts/redis/types.js.map +1 -0
  159. package/build/ts/redis/utils.d.ts +20 -0
  160. package/build/ts/redis/utils.d.ts.map +1 -0
  161. package/build/ts/redis/utils.js +27 -0
  162. package/build/ts/redis/utils.js.map +1 -0
  163. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
  164. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
  165. package/build/ts/scheduler/__tests__/scheduler.controller.test.js +62 -0
  166. package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
  167. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
  168. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
  169. package/build/ts/scheduler/__tests__/scheduler.service.test.js +369 -0
  170. package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
  171. package/build/ts/scheduler/dto.d.ts +41 -0
  172. package/build/ts/scheduler/dto.d.ts.map +1 -0
  173. package/build/ts/scheduler/dto.js +115 -0
  174. package/build/ts/scheduler/dto.js.map +1 -0
  175. package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
  176. package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
  177. package/build/ts/scheduler/scheduler.controller.js +118 -0
  178. package/build/ts/scheduler/scheduler.controller.js.map +1 -0
  179. package/build/ts/scheduler/scheduler.module.d.ts +3 -0
  180. package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
  181. package/build/ts/scheduler/scheduler.module.js +24 -0
  182. package/build/ts/scheduler/scheduler.module.js.map +1 -0
  183. package/build/ts/scheduler/scheduler.service.d.ts +71 -0
  184. package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
  185. package/build/ts/scheduler/scheduler.service.js +297 -0
  186. package/build/ts/scheduler/scheduler.service.js.map +1 -0
  187. package/build/ts/scheduler/types.d.ts +65 -0
  188. package/build/ts/scheduler/types.d.ts.map +1 -0
  189. package/build/ts/scheduler/types.js +2 -0
  190. package/build/ts/scheduler/types.js.map +1 -0
  191. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +2 -2
  192. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -1
  193. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +34 -19
  194. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -1
  195. package/build/ts/sessionKeys/__tests__/utils.d.ts +1 -1
  196. package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -1
  197. package/build/ts/sessionKeys/__tests__/utils.js +7 -6
  198. package/build/ts/sessionKeys/__tests__/utils.js.map +1 -1
  199. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts +53 -0
  200. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts.map +1 -0
  201. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js +105 -0
  202. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js.map +1 -0
  203. package/build/ts/sessionKeys/sessionKeys.service.d.ts +16 -4
  204. package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -1
  205. package/build/ts/sessionKeys/sessionKeys.service.js +23 -6
  206. package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
  207. package/build/ts/subgraph/__tests__/subgraph.controller.test.js +3 -3
  208. package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -1
  209. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +2 -2
  210. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -1
  211. package/build/ts/subgraph/__tests__/subgraph.service.test.js +5 -5
  212. package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -1
  213. package/build/ts/subgraph/dto.d.ts +2 -2
  214. package/build/ts/subgraph/dto.d.ts.map +1 -1
  215. package/build/ts/subgraph/dto.js +3 -3
  216. package/build/ts/subgraph/dto.js.map +1 -1
  217. package/build/ts/subgraph/subgraph.controller.d.ts.map +1 -1
  218. package/build/ts/subgraph/subgraph.controller.js +8 -3
  219. package/build/ts/subgraph/subgraph.controller.js.map +1 -1
  220. package/build/ts/subgraph/subgraph.service.d.ts +4 -0
  221. package/build/ts/subgraph/subgraph.service.d.ts.map +1 -1
  222. package/build/ts/subgraph/subgraph.service.js +23 -10
  223. package/build/ts/subgraph/subgraph.service.js.map +1 -1
  224. package/build/ts/subgraph/types.d.ts +2 -2
  225. package/build/ts/subgraph/types.d.ts.map +1 -1
  226. package/build/tsconfig.build.tsbuildinfo +1 -1
  227. package/package.json +46 -39
  228. package/build/tests/e2e.aa.test.d.ts +0 -2
  229. package/build/tests/e2e.aa.test.d.ts.map +0 -1
  230. package/build/tests/e2e.aa.test.js +0 -103
  231. package/build/tests/e2e.aa.test.js.map +0 -1
  232. package/build/ts/deployer/utils.d.ts +0 -8
  233. package/build/ts/deployer/utils.d.ts.map +0 -1
  234. package/build/ts/deployer/utils.js +0 -9
  235. package/build/ts/deployer/utils.js.map +0 -1
@@ -1,59 +1,57 @@
1
- // To only run this file: pnpm exec jest --testPathPattern=tests/e2e.deploy.test.ts
2
- import { genRandomSalt } from "@maci-protocol/crypto";
3
1
  import { Keypair } from "@maci-protocol/domainobjs";
4
- import { joinPoll, publish, signup, sleep } from "@maci-protocol/sdk";
2
+ import { isArm, joinPoll, signup, sleepUntil, ESupportedChains, ContractStorage } from "@maci-protocol/sdk";
5
3
  import { ValidationPipe } from "@nestjs/common";
6
4
  import { Test } from "@nestjs/testing";
7
5
  import dotenv from "dotenv";
8
- import hardhat from "hardhat";
9
6
  import { io } from "socket.io-client";
10
7
  import { zeroAddress } from "viem";
8
+ import path from "path";
11
9
  import { AppModule } from "../ts/app.module";
12
- import { ESupportedNetworks } from "../ts/common";
13
- import { getPublicClient } from "../ts/common/accountAbstraction";
14
- import { testMaciDeploymentConfig, testPollDeploymentConfig } from "../ts/deployer/__tests__/utils";
10
+ import { getSigner } from "../ts/common";
11
+ import { pollDuration, pollStartDateExtraSeconds, testMaciDeploymentConfig, testPollDeploymentConfig, } from "../ts/deployer/__tests__/utils";
12
+ import { DeployerModule } from "../ts/deployer/deployer.module";
15
13
  import { FileModule } from "../ts/file/file.module";
16
- import { generateApproval, getKernelAccount } from "../ts/sessionKeys/__tests__/utils";
17
- import { pollDuration, pollJoiningTestZkeyPath, testPollJoiningWasmPath, testPollJoiningWitnessPath, testRapidsnarkPath, zeroUint256Encoded, } from "./constants";
18
- import { getAuthorizationHeader, rechargeGasIfNeeded } from "./utils";
14
+ import { ProofModule } from "../ts/proof/proof.module";
15
+ import { SessionKeysModule } from "../ts/sessionKeys/sessionKeys.module";
16
+ import { pollJoiningTestZkeyPath, testPollJoiningWasmPath, testPollJoiningWitnessPath, testRapidsnarkPath, zeroUint256Encoded, } from "./constants";
17
+ import { getAuthorizationHeader } from "./utils";
19
18
  dotenv.config();
20
- const LOCALHOST = "http://localhost:3000";
19
+ jest.setTimeout(700000); // Sets timeout to 700 seconds
20
+ const PORT = process.env.COORDINATOR_PORT || 3001;
21
+ const TEST_URL = `http://localhost:${PORT}/v1`;
22
+ const CHAIN = ESupportedChains.Localhost;
23
+ const REGEX_SUBGRAPH = /^https:\/\/api\.studio\.thegraph\.com\/query\/\d+\/maci-subgraph\/v0\.0\.\d+$/;
21
24
  const NUM_USERS = 1;
22
- const voteOptions = {
25
+ const VOTE_OPTIONS = {
23
26
  "0": 0,
24
27
  "1": 0,
25
28
  };
29
+ const useWasm = isArm();
26
30
  describe("E2E Deployment Tests", () => {
27
31
  let signer;
28
32
  let encryptedHeader;
29
- let coordinatorKeypair;
30
- let sessionKeyAddress;
31
- let approval;
32
33
  let app;
33
34
  let socket;
34
- const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
35
35
  let maciAddress;
36
+ let maciCreatedAt;
36
37
  let pollId;
37
38
  // set up coordinator address
38
39
  beforeAll(async () => {
39
- [signer] = await hardhat.ethers.getSigners();
40
+ signer = await getSigner(CHAIN);
40
41
  encryptedHeader = await getAuthorizationHeader(signer);
41
- coordinatorKeypair = new Keypair();
42
42
  process.env.COORDINATOR_ADDRESSES = await signer.getAddress();
43
- await rechargeGasIfNeeded(process.env.COORDINATOR_ADDRESSES, "0.007", "0.007");
44
- });
45
- // set up NestJS app
46
- beforeAll(async () => {
47
43
  const moduleFixture = await Test.createTestingModule({
48
- imports: [AppModule, FileModule],
44
+ imports: [AppModule, FileModule, DeployerModule, ProofModule, SessionKeysModule],
49
45
  }).compile();
50
46
  app = moduleFixture.createNestApplication();
51
47
  app.useGlobalPipes(new ValidationPipe({ transform: true }));
52
48
  await app.init();
53
- await app.listen(3000);
49
+ await app.listen(PORT);
54
50
  });
55
51
  afterAll(async () => {
56
52
  await app.close();
53
+ const storageInstance = ContractStorage.getInstance(path.join(process.cwd(), "deployed-contracts.json"));
54
+ storageInstance.cleanup(CHAIN);
57
55
  });
58
56
  // set up auth header in WS connection
59
57
  beforeEach(async () => {
@@ -74,9 +72,24 @@ describe("E2E Deployment Tests", () => {
74
72
  afterEach(() => {
75
73
  socket.disconnect();
76
74
  });
77
- // run tests
75
+ test("should return true in the health check", async () => {
76
+ const response = await fetch(`${TEST_URL}/health/check`, { method: "GET" });
77
+ const body = (await response.json());
78
+ expect(response.status).toBe(200);
79
+ expect(body.rapidsnark.rapidsnarkIsExecutable).toBe(true);
80
+ expect(body.zkeysDirectory.zkeysDirectoryExists).toBe(true);
81
+ expect(body.coordinatorWalletFunds.fundsInNetworks[0].address).not.toBe(zeroAddress);
82
+ });
83
+ test("should retrieve RSA public key", async () => {
84
+ const response = await fetch(`${TEST_URL}/proof/publicKey`, {
85
+ method: "GET",
86
+ });
87
+ const body = (await response.json());
88
+ expect(response.status).toBe(200);
89
+ expect(body.publicKey).toBeDefined();
90
+ });
78
91
  test("should retrieve the session key address", async () => {
79
- const response = await fetch(`${LOCALHOST}/v1/session-keys/generate`, {
92
+ const response = await fetch(`${TEST_URL}/session-keys/generate`, {
80
93
  method: "GET",
81
94
  headers: {
82
95
  Authorization: encryptedHeader,
@@ -85,54 +98,41 @@ describe("E2E Deployment Tests", () => {
85
98
  const body = (await response.json());
86
99
  expect(response.status).toBe(200);
87
100
  expect(body.sessionKeyAddress).not.toBe(zeroAddress);
88
- // save them for next tests
89
- sessionKeyAddress = body.sessionKeyAddress;
90
- approval = await generateApproval(sessionKeyAddress);
91
- const sessionKeyAccount = await getKernelAccount(sessionKeyAddress);
92
- await rechargeGasIfNeeded(sessionKeyAccount.address, "0.03", "0.03");
93
101
  });
94
102
  test("should deploy MACI correctly", async () => {
95
- const config = testMaciDeploymentConfig;
96
- config.VkRegistry.args.stateTreeDepth = config.VkRegistry.args.stateTreeDepth.toString();
97
- config.VkRegistry.args.intStateTreeDepth = config.VkRegistry.args.intStateTreeDepth.toString();
98
- config.VkRegistry.args.voteOptionTreeDepth = config.VkRegistry.args.voteOptionTreeDepth.toString();
99
- const response = await fetch(`${LOCALHOST}/v1/deploy/maci`, {
103
+ const response = await fetch(`${TEST_URL}/deploy/maci`, {
100
104
  method: "POST",
101
105
  headers: {
102
106
  Authorization: encryptedHeader,
103
107
  "Content-Type": "application/json",
104
108
  },
105
109
  body: JSON.stringify({
106
- approval,
107
- sessionKeyAddress,
108
- chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
109
- config,
110
+ chain: CHAIN,
111
+ config: testMaciDeploymentConfig,
110
112
  }),
111
113
  });
112
114
  const body = (await response.json());
113
115
  expect(response.status).toBe(201);
114
116
  expect(body.address).not.toBe(zeroAddress);
115
117
  // save them for next tests
118
+ const blockNumber = await signer.provider.getBlockNumber();
119
+ maciCreatedAt = BigInt(blockNumber);
116
120
  maciAddress = body.address;
117
121
  });
118
122
  test("should deploy a poll correctly", async () => {
119
- const config = testPollDeploymentConfig;
120
- config.coordinatorPubkey = coordinatorKeypair.pubKey.serialize();
121
- config.voteOptions = config.voteOptions.toString();
122
- const startDate = Math.floor(Date.now() / 1000) + 10;
123
- config.startDate = startDate;
124
- config.endDate = startDate + pollDuration;
125
- const response = await fetch(`${LOCALHOST}/v1/deploy/poll`, {
123
+ testPollDeploymentConfig.voteOptions = testPollDeploymentConfig.voteOptions.toString();
124
+ const startDate = Math.floor(Date.now() / 1000) + pollStartDateExtraSeconds;
125
+ testPollDeploymentConfig.startDate = startDate;
126
+ testPollDeploymentConfig.endDate = startDate + pollDuration;
127
+ const response = await fetch(`${TEST_URL}/deploy/poll`, {
126
128
  method: "POST",
127
129
  headers: {
128
130
  Authorization: encryptedHeader,
129
131
  "Content-Type": "application/json",
130
132
  },
131
133
  body: JSON.stringify({
132
- approval,
133
- sessionKeyAddress,
134
- chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
135
- config,
134
+ chain: CHAIN,
135
+ config: testPollDeploymentConfig,
136
136
  }),
137
137
  });
138
138
  const body = (await response.json());
@@ -141,41 +141,19 @@ describe("E2E Deployment Tests", () => {
141
141
  // save them for next tests
142
142
  pollId = BigInt(body.pollId);
143
143
  });
144
- test("should deploy a subgraph correctly", async () => {
145
- const blockNumber = Number(await publicClient.getBlockNumber());
146
- const response = await fetch(`${LOCALHOST}/v1/subgraph/deploy`, {
147
- method: "POST",
148
- headers: {
149
- Authorization: encryptedHeader,
150
- "Content-Type": "application/json",
151
- },
152
- body: JSON.stringify({
153
- maciContractAddress: maciAddress,
154
- startBlock: blockNumber,
155
- network: ESupportedNetworks.OPTIMISM_SEPOLIA,
156
- name: process.env.SUBGRAPH_NAME,
157
- tag: `v0.0.${blockNumber}`, // different versions per test using block number
158
- }),
159
- });
160
- const body = (await response.json());
161
- const { url } = body;
162
- const regex = /^https:\/\/api\.studio\.thegraph\.com\/query\/\d+\/maci-subgraph\/v0\.0\.\d+$/;
163
- expect(response.status).toBe(201);
164
- expect(body.url).toBeDefined();
165
- expect(regex.test(url)).toBe(true);
166
- });
167
144
  test("should allow voting on a poll", async () => {
145
+ await sleepUntil(testPollDeploymentConfig.startDate * 1000);
168
146
  for (let i = 0; i < NUM_USERS; i += 1) {
169
147
  const keypairUser = new Keypair();
170
- const pubkeyUser = keypairUser.pubKey.serialize();
171
- const privkeyUser = keypairUser.privKey.serialize();
148
+ const userPublicKey = keypairUser.publicKey.serialize();
149
+ const userPrivateKey = keypairUser.privateKey.serialize();
172
150
  const vote = i % 2;
173
- voteOptions[String(vote)] += 1;
151
+ VOTE_OPTIONS[String(vote)] += 1;
174
152
  // user signs up to MACI
175
153
  // eslint-disable-next-line no-await-in-loop
176
154
  await signup({
177
155
  maciAddress,
178
- maciPubKey: pubkeyUser,
156
+ maciPublicKey: userPublicKey,
179
157
  sgData: zeroUint256Encoded,
180
158
  signer,
181
159
  });
@@ -183,38 +161,51 @@ describe("E2E Deployment Tests", () => {
183
161
  // eslint-disable-next-line no-await-in-loop
184
162
  await joinPoll({
185
163
  maciAddress,
186
- privateKey: privkeyUser,
187
- stateIndex: 1n,
164
+ privateKey: userPrivateKey,
188
165
  pollId: BigInt(pollId),
189
166
  pollJoiningZkey: pollJoiningTestZkeyPath,
190
- useWasm: true,
191
- pollWasm: testPollJoiningWasmPath,
192
- pollWitgen: testPollJoiningWitnessPath,
167
+ useWasm,
168
+ pollJoiningWasm: testPollJoiningWasmPath,
169
+ pollWitnessGenerator: testPollJoiningWitnessPath,
193
170
  rapidsnark: testRapidsnarkPath,
194
171
  sgDataArg: zeroUint256Encoded,
195
172
  ivcpDataArg: zeroUint256Encoded,
196
173
  signer,
197
174
  });
198
- // user publishes a vote
199
- // eslint-disable-next-line no-await-in-loop
200
- const publishData = await publish({
201
- pubkey: pubkeyUser,
202
- stateIndex: 1n,
203
- voteOptionIndex: BigInt(vote),
204
- nonce: 1n,
205
- pollId: BigInt(pollId),
206
- newVoteWeight: 1n,
207
- maciAddress,
208
- salt: genRandomSalt(),
209
- privateKey: privkeyUser,
210
- signer,
211
- });
212
- expect(publishData.hash).not.toBe(zeroAddress);
213
175
  }
214
176
  });
177
+ test("should deploy a subgraph correctly", async () => {
178
+ const response = await fetch(`${TEST_URL}/subgraph/deploy`, {
179
+ method: "POST",
180
+ headers: {
181
+ Authorization: encryptedHeader,
182
+ "Content-Type": "application/json",
183
+ },
184
+ body: JSON.stringify({
185
+ maciContractAddress: maciAddress,
186
+ startBlock: Number(maciCreatedAt),
187
+ network: ESupportedChains.OptimismSepolia,
188
+ name: process.env.SUBGRAPH_NAME,
189
+ tag: `v0.0.${+new Date()}`, // different versions per test using timestamp
190
+ }),
191
+ });
192
+ const body = await response.json();
193
+ if (response.status === 400) {
194
+ const errorMessage = body.message;
195
+ if (errorMessage.includes("api.thegraph.com | 502: Bad gateway")) {
196
+ // eslint-disable-next-line no-console
197
+ console.info("It looks like there was a problem with The Graph endpoint. We are passing this test.");
198
+ return;
199
+ }
200
+ }
201
+ const { url } = body;
202
+ expect(response.status).toBe(201);
203
+ expect(url).toBeDefined();
204
+ expect(REGEX_SUBGRAPH.test(url)).toBe(true);
205
+ });
215
206
  test("should merge correctly", async () => {
216
- await sleep(10000);
217
- const response = await fetch(`${LOCALHOST}/v1/proof/merge`, {
207
+ await sleepUntil((testPollDeploymentConfig.endDate + 13) * 1000); // 13 seconds of grace time after the poll end date
208
+ const response = await fetch(`${TEST_URL}/proof/merge`, {
218
209
  method: "POST",
219
210
  headers: {
220
211
  Authorization: encryptedHeader,
@@ -223,9 +214,48 @@ describe("E2E Deployment Tests", () => {
223
214
  body: JSON.stringify({
224
215
  maciContractAddress: maciAddress,
225
216
  pollId: Number(pollId),
226
- approval,
227
- sessionKeyAddress,
228
- chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
217
+ chain: CHAIN,
218
+ }),
219
+ });
220
+ expect(response.status).toBe(201);
221
+ });
222
+ test("should generate proofs correctly", async () => {
223
+ const response = await fetch(`${TEST_URL}/proof/generate`, {
224
+ method: "POST",
225
+ headers: {
226
+ Authorization: encryptedHeader,
227
+ "Content-Type": "application/json",
228
+ },
229
+ body: JSON.stringify({
230
+ poll: Number(pollId),
231
+ maciContractAddress: maciAddress,
232
+ mode: testPollDeploymentConfig.mode,
233
+ startBlock: Number(maciCreatedAt),
234
+ blocksPerBatch: 500,
235
+ chain: CHAIN,
236
+ useWasm,
237
+ }),
238
+ });
239
+ const body = (await response.json());
240
+ expect(response.status).toBe(201);
241
+ expect(body.processProofs).toBeDefined();
242
+ expect(body.processProofs.length).toBeGreaterThan(0);
243
+ expect(body.tallyProofs).toBeDefined();
244
+ expect(body.tallyProofs.length).toBeGreaterThan(0);
245
+ expect(body.tallyData).toBeDefined();
246
+ expect(body.tallyData.results).toBeDefined();
247
+ });
248
+ test("should submit results on-chain correctly", async () => {
249
+ const response = await fetch(`${TEST_URL}/proof/submit`, {
250
+ method: "POST",
251
+ headers: {
252
+ Authorization: encryptedHeader,
253
+ "Content-Type": "application/json",
254
+ },
255
+ body: JSON.stringify({
256
+ pollId: Number(pollId),
257
+ maciContractAddress: maciAddress,
258
+ chain: CHAIN,
229
259
  }),
230
260
  });
231
261
  expect(response.status).toBe(201);
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.deploy.test.js","sourceRoot":"","sources":["../../tests/e2e.deploy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2e.deploy.test.js","sourceRoot":"","sources":["../../tests/e2e.deploy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=e2e.redis.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.redis.test.d.ts","sourceRoot":"","sources":["../../tests/e2e.redis.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import { EMode, ESupportedChains } from "@maci-protocol/sdk";
2
+ import { createClient } from "@redis/client";
3
+ import dotenv from "dotenv";
4
+ import { RedisService } from "../ts/redis/redis.service";
5
+ import { getPollKeyFromObject } from "../ts/redis/utils";
6
+ const REDIS__GET_ALL_PREFIX = "*-test";
7
+ const scheduledPoll = {
8
+ maciAddress: "0xb83074Ac11fc569AC12F1b7D0C0a6809c3dc355b",
9
+ pollId: "5",
10
+ mode: EMode.NON_QV,
11
+ chain: ESupportedChains.Sepolia,
12
+ endDate: 1752534000,
13
+ deploymentBlockNumber: 1,
14
+ merged: false,
15
+ proofsGenerated: false,
16
+ };
17
+ dotenv.config();
18
+ describe("RedisService", () => {
19
+ let redisClient;
20
+ let service;
21
+ beforeAll(async () => {
22
+ redisClient = createClient({
23
+ url: `redis://${process.env.COORDINATOR_REDIS_HOST}:${process.env.COORDINATOR_REDIS_PORT}`,
24
+ disableOfflineQueue: true,
25
+ });
26
+ await redisClient.connect();
27
+ service = new RedisService();
28
+ await service.onModuleInit();
29
+ });
30
+ afterEach(async () => {
31
+ // Clean up after each test
32
+ const keys = await redisClient.keys(REDIS__GET_ALL_PREFIX);
33
+ await Promise.all(keys.map((key) => redisClient.del(key)));
34
+ });
35
+ afterAll(async () => {
36
+ await redisClient.quit();
37
+ });
38
+ test("should connect to Redis without issues", () => {
39
+ expect(service.isOpen()).toBe(true);
40
+ });
41
+ test("should set and get a value, and parse it as IScheduledPoll", async () => {
42
+ const key = getPollKeyFromObject(scheduledPoll, true);
43
+ const value = JSON.stringify(scheduledPoll);
44
+ await service.set(key, value);
45
+ const stored = await service.get(key);
46
+ expect(stored).not.toBeNull();
47
+ const parsed = JSON.parse(stored);
48
+ expect(parsed).toEqual(scheduledPoll);
49
+ });
50
+ test("should return null when non-existent key is requested", async () => {
51
+ const nonExistentKey = "non-existent-key";
52
+ const result = await service.get(nonExistentKey);
53
+ expect(result).toBeNull();
54
+ });
55
+ test("should set and get multiple values", async () => {
56
+ const pollOne = { ...scheduledPoll };
57
+ pollOne.pollId = "1";
58
+ const pollKeyOne = getPollKeyFromObject(pollOne, true);
59
+ await service.set(pollKeyOne, JSON.stringify(pollOne));
60
+ const pollTwo = { ...scheduledPoll };
61
+ pollTwo.pollId = "2";
62
+ const pollKeyTwo = getPollKeyFromObject(pollTwo, true);
63
+ await service.set(pollKeyTwo, JSON.stringify(pollTwo));
64
+ const pollThree = { ...scheduledPoll };
65
+ pollThree.pollId = "3";
66
+ const pollKeyThree = getPollKeyFromObject(pollThree, true);
67
+ await service.set(pollKeyThree, JSON.stringify(pollThree));
68
+ const [storedPollOne, storedPollTwo, storedPollThree] = await Promise.all([
69
+ service.get(pollKeyOne),
70
+ service.get(pollKeyTwo),
71
+ service.get(pollKeyThree),
72
+ ]);
73
+ expect(pollOne).toEqual(JSON.parse(storedPollOne || "{}"));
74
+ expect(pollTwo).toEqual(JSON.parse(storedPollTwo || "{}"));
75
+ expect(pollThree).toEqual(JSON.parse(storedPollThree || "{}"));
76
+ });
77
+ test("should retrieve all values using getAll", async () => {
78
+ const pollOne = { ...scheduledPoll };
79
+ pollOne.pollId = "1";
80
+ const pollKeyOne = getPollKeyFromObject(pollOne, true);
81
+ await service.set(pollKeyOne, JSON.stringify(pollOne));
82
+ const pollTwo = { ...scheduledPoll };
83
+ pollTwo.pollId = "2";
84
+ const pollKeyTwo = getPollKeyFromObject(pollTwo, true);
85
+ await service.set(pollKeyTwo, JSON.stringify(pollTwo));
86
+ const pollThree = { ...scheduledPoll };
87
+ pollThree.pollId = "3";
88
+ const pollKeyThree = getPollKeyFromObject(pollThree, true);
89
+ await service.set(pollKeyThree, JSON.stringify(pollThree));
90
+ const all = await service.getAll(REDIS__GET_ALL_PREFIX);
91
+ expect(all.length).toBe(3);
92
+ });
93
+ test("should delete a value and return one as confirmation", async () => {
94
+ const key = "delete-me";
95
+ await service.set(key, '{"bye":"now"}');
96
+ const deleted = await service.delete(key);
97
+ const value = await service.get(key);
98
+ expect(deleted).toBe(1);
99
+ expect(value).toBeNull();
100
+ });
101
+ test("should not throw and return zero when deleting non-existent value", async () => {
102
+ const key = "non-existent-key";
103
+ const deleted = await service.delete(key);
104
+ expect(deleted).toBe(0);
105
+ });
106
+ test("should update a value using set with same key", async () => {
107
+ const key = getPollKeyFromObject(scheduledPoll, true);
108
+ const valuePoll = JSON.stringify(scheduledPoll);
109
+ await service.set(key, valuePoll);
110
+ const updatedPoll = { ...scheduledPoll, endDate: 1 };
111
+ const updatedPollValue = JSON.stringify(updatedPoll);
112
+ await service.set(key, updatedPollValue);
113
+ const stored = await service.get(key);
114
+ const parsed = JSON.parse(stored);
115
+ expect(parsed.endDate).toBe(updatedPoll.endDate);
116
+ });
117
+ });
118
+ //# sourceMappingURL=e2e.redis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.redis.test.js","sourceRoot":"","sources":["../../tests/e2e.redis.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import { type Signer } from "ethers";
2
- import { Hex } from "viem";
2
+ import { type Hex } from "viem";
3
+ /**
4
+ * Encrypt a message using the coordinator's public key
5
+ * @param message to encrypt
6
+ * @returns encrypted message (ciphertext)
7
+ */
8
+ export declare const encryptWithCoordinatorRSAPublicKey: (message: string) => Promise<string>;
3
9
  /**
4
10
  * Sign a message with a wallet and encrypt it using the coordinator's public key
5
11
  * @param signer
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,GAAG,EAAoB,MAAM,MAAM,CAAC;AAY9E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAM3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,GAAG,EACZ,qBAAqB,MAAM,EAC3B,oBAAoB,MAAM,KACzB,OAAO,CAAC,IAAI,CAgBd,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,KAAK,GAAG,EAAoB,MAAM,MAAM,CAAC;AAYnF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAIxF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAK3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,GAAG,EACZ,qBAAqB,MAAM,EAC3B,oBAAoB,MAAM,KACzB,OAAO,CAAC,IAAI,CAoBd,CAAC"}
@@ -1,35 +1,46 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
1
2
  import dotenv from "dotenv";
2
3
  import { getBytes, hashMessage } from "ethers";
3
4
  import { createWalletClient, formatEther, http, parseEther } from "viem";
4
5
  import { privateKeyToAccount } from "viem/accounts";
5
6
  import { optimismSepolia } from "viem/chains";
6
7
  import fs from "fs";
7
- import { ESupportedNetworks } from "../ts/common";
8
8
  import { getPublicClient } from "../ts/common/accountAbstraction";
9
+ import { getWallet } from "../ts/common/chain";
9
10
  import { CryptoService } from "../ts/crypto/crypto.service";
10
11
  dotenv.config();
12
+ /**
13
+ * Encrypt a message using the coordinator's public key
14
+ * @param message to encrypt
15
+ * @returns encrypted message (ciphertext)
16
+ */
17
+ export const encryptWithCoordinatorRSAPublicKey = async (message) => {
18
+ const cryptoService = new CryptoService();
19
+ const publicKey = await fs.promises.readFile(process.env.COORDINATOR_PUBLIC_KEY_PATH);
20
+ return cryptoService.encrypt(publicKey, message);
21
+ };
11
22
  /**
12
23
  * Sign a message with a wallet and encrypt it using the coordinator's public key
13
24
  * @param signer
14
25
  * @returns Authorization header
15
26
  */
16
27
  export const getAuthorizationHeader = async (signer) => {
17
- const cryptoService = new CryptoService();
18
- const publicKey = await fs.promises.readFile(process.env.COORDINATOR_PUBLIC_KEY_PATH);
19
28
  const signature = await signer.signMessage("message");
20
29
  const digest = Buffer.from(getBytes(hashMessage("message"))).toString("hex");
21
- return `Bearer ${cryptoService.encrypt(publicKey, `${signature}:${digest}`)}`;
30
+ const encrypted = await encryptWithCoordinatorRSAPublicKey(`${signature}:${digest}`);
31
+ return `Bearer ${encrypted}`;
22
32
  };
23
33
  /**
24
34
  * Reloads with ETH in case the smart account is out of gas (less than 0.05)
25
35
  * @param sessionKeyAddress
26
36
  */
27
37
  export const rechargeGasIfNeeded = async (address, minimumValueOfEther, valueToSendOfEther) => {
28
- const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
38
+ const publicClient = await getPublicClient(ESupportedChains.Localhost);
29
39
  const balance = await publicClient.getBalance({ address });
30
40
  const balanceAsEther = formatEther(balance);
31
41
  if (balanceAsEther <= minimumValueOfEther) {
32
- const testAccount = privateKeyToAccount(process.env.TEST_PRIVATE_KEY);
42
+ const wallet = getWallet();
43
+ const testAccount = privateKeyToAccount(wallet.privateKey);
33
44
  const walletClient = createWalletClient({
34
45
  chain: optimismSepolia,
35
46
  transport: http(),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAe,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAO,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,MAAc,EAAmB,EAAE;IAC9E,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA4B,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,OAAO,UAAU,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAY,EACZ,mBAA2B,EAC3B,kBAA0B,EACX,EAAE;IACjB,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAwB,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,eAAe,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAe,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAY,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IAC3F,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA4B,CAAC,CAAC;IACvF,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,MAAc,EAAmB,EAAE;IAC9E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;IACrF,OAAO,UAAU,SAAS,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAY,EACZ,mBAA2B,EAC3B,kBAA0B,EACX,EAAE;IACjB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAiB,CAAC,CAAC;QAElE,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;QAEH,MAAM,YAAY,CAAC,eAAe,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../../ts/app.module.ts"],"names":[],"mappings":"AAUA,qBAgBa,SAAS;CAAG"}
1
+ {"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../../ts/app.module.ts"],"names":[],"mappings":"AAaA,qBAmBa,SAAS;CAAG"}