@maci-protocol/coordinator 0.0.0-ci.5209133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/LICENSE +22 -0
- package/README.md +42 -0
- package/build/hardhat.config.cjs +31 -0
- package/build/hardhat.config.cjs.map +1 -0
- package/build/hardhat.config.d.cts +24 -0
- package/build/hardhat.config.d.cts.map +1 -0
- package/build/scripts/generateKeypair.d.ts +2 -0
- package/build/scripts/generateKeypair.d.ts.map +1 -0
- package/build/scripts/generateKeypair.js +25 -0
- package/build/scripts/generateKeypair.js.map +1 -0
- package/build/scripts/generateMaciKeyPair.d.ts +2 -0
- package/build/scripts/generateMaciKeyPair.d.ts.map +1 -0
- package/build/scripts/generateMaciKeyPair.js +3 -0
- package/build/scripts/generateMaciKeyPair.js.map +1 -0
- package/build/scripts/getAuthHeader.d.ts +2 -0
- package/build/scripts/getAuthHeader.d.ts.map +1 -0
- package/build/scripts/getAuthHeader.js +31 -0
- package/build/scripts/getAuthHeader.js.map +1 -0
- package/build/tests/constants.d.ts +8 -0
- package/build/tests/constants.d.ts.map +1 -0
- package/build/tests/constants.js +10 -0
- package/build/tests/constants.js.map +1 -0
- package/build/tests/e2e.aa.test.d.ts +2 -0
- package/build/tests/e2e.aa.test.d.ts.map +1 -0
- package/build/tests/e2e.aa.test.js +103 -0
- package/build/tests/e2e.aa.test.js.map +1 -0
- package/build/tests/e2e.deploy.test.d.ts +2 -0
- package/build/tests/e2e.deploy.test.d.ts.map +1 -0
- package/build/tests/e2e.deploy.test.js +234 -0
- package/build/tests/e2e.deploy.test.js.map +1 -0
- package/build/tests/utils.d.ts +14 -0
- package/build/tests/utils.d.ts.map +1 -0
- package/build/tests/utils.js +44 -0
- package/build/tests/utils.js.map +1 -0
- package/build/ts/app.module.d.ts +3 -0
- package/build/ts/app.module.d.ts.map +1 -0
- package/build/ts/app.module.js +36 -0
- package/build/ts/app.module.js.map +1 -0
- package/build/ts/auth/AccountSignatureGuard.service.d.ts +44 -0
- package/build/ts/auth/AccountSignatureGuard.service.d.ts.map +1 -0
- package/build/ts/auth/AccountSignatureGuard.service.js +96 -0
- package/build/ts/auth/AccountSignatureGuard.service.js.map +1 -0
- package/build/ts/auth/__tests__/AccountSignatureGuard.test.d.ts +2 -0
- package/build/ts/auth/__tests__/AccountSignatureGuard.test.d.ts.map +1 -0
- package/build/ts/auth/__tests__/AccountSignatureGuard.test.js +113 -0
- package/build/ts/auth/__tests__/AccountSignatureGuard.test.js.map +1 -0
- package/build/ts/common/__tests__/common.test.d.ts +2 -0
- package/build/ts/common/__tests__/common.test.d.ts.map +1 -0
- package/build/ts/common/__tests__/common.test.js +79 -0
- package/build/ts/common/__tests__/common.test.js.map +1 -0
- package/build/ts/common/accountAbstraction.d.ts +55 -0
- package/build/ts/common/accountAbstraction.d.ts.map +1 -0
- package/build/ts/common/accountAbstraction.js +110 -0
- package/build/ts/common/accountAbstraction.js.map +1 -0
- package/build/ts/common/errors.d.ts +33 -0
- package/build/ts/common/errors.d.ts.map +1 -0
- package/build/ts/common/errors.js +34 -0
- package/build/ts/common/errors.js.map +1 -0
- package/build/ts/common/index.d.ts +4 -0
- package/build/ts/common/index.d.ts.map +1 -0
- package/build/ts/common/index.js +4 -0
- package/build/ts/common/index.js.map +1 -0
- package/build/ts/common/networks.d.ts +29 -0
- package/build/ts/common/networks.d.ts.map +1 -0
- package/build/ts/common/networks.js +70 -0
- package/build/ts/common/networks.js.map +1 -0
- package/build/ts/common/types.d.ts +9 -0
- package/build/ts/common/types.d.ts.map +1 -0
- package/build/ts/common/types.js +2 -0
- package/build/ts/common/types.js.map +1 -0
- package/build/ts/crypto/__tests__/crypto.service.test.d.ts +2 -0
- package/build/ts/crypto/__tests__/crypto.service.test.d.ts.map +1 -0
- package/build/ts/crypto/__tests__/crypto.service.test.js +26 -0
- package/build/ts/crypto/__tests__/crypto.service.test.js.map +1 -0
- package/build/ts/crypto/crypto.module.d.ts +3 -0
- package/build/ts/crypto/crypto.module.d.ts.map +1 -0
- package/build/ts/crypto/crypto.module.js +18 -0
- package/build/ts/crypto/crypto.module.js.map +1 -0
- package/build/ts/crypto/crypto.service.d.ts +31 -0
- package/build/ts/crypto/crypto.service.d.ts.map +1 -0
- package/build/ts/crypto/crypto.service.js +68 -0
- package/build/ts/crypto/crypto.service.js.map +1 -0
- package/build/ts/deployer/__tests__/deployer.controller.test.d.ts +2 -0
- package/build/ts/deployer/__tests__/deployer.controller.test.d.ts.map +1 -0
- package/build/ts/deployer/__tests__/deployer.controller.test.js +84 -0
- package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -0
- package/build/ts/deployer/__tests__/deployer.service.test.d.ts +2 -0
- package/build/ts/deployer/__tests__/deployer.service.test.d.ts.map +1 -0
- package/build/ts/deployer/__tests__/deployer.service.test.js +425 -0
- package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -0
- package/build/ts/deployer/__tests__/utils.d.ts +36 -0
- package/build/ts/deployer/__tests__/utils.d.ts.map +1 -0
- package/build/ts/deployer/__tests__/utils.js +96 -0
- package/build/ts/deployer/__tests__/utils.js.map +1 -0
- package/build/ts/deployer/constants.d.ts +13 -0
- package/build/ts/deployer/constants.d.ts.map +1 -0
- package/build/ts/deployer/constants.js +13 -0
- package/build/ts/deployer/constants.js.map +1 -0
- package/build/ts/deployer/deployer.controller.d.ts +34 -0
- package/build/ts/deployer/deployer.controller.d.ts.map +1 -0
- package/build/ts/deployer/deployer.controller.js +89 -0
- package/build/ts/deployer/deployer.controller.js.map +1 -0
- package/build/ts/deployer/deployer.module.d.ts +3 -0
- package/build/ts/deployer/deployer.module.d.ts.map +1 -0
- package/build/ts/deployer/deployer.module.js +23 -0
- package/build/ts/deployer/deployer.module.js.map +1 -0
- package/build/ts/deployer/deployer.service.d.ts +112 -0
- package/build/ts/deployer/deployer.service.d.ts.map +1 -0
- package/build/ts/deployer/deployer.service.js +628 -0
- package/build/ts/deployer/deployer.service.js.map +1 -0
- package/build/ts/deployer/dto.d.ts +46 -0
- package/build/ts/deployer/dto.d.ts.map +1 -0
- package/build/ts/deployer/dto.js +117 -0
- package/build/ts/deployer/dto.js.map +1 -0
- package/build/ts/deployer/types.d.ts +306 -0
- package/build/ts/deployer/types.d.ts.map +1 -0
- package/build/ts/deployer/types.js +2 -0
- package/build/ts/deployer/types.js.map +1 -0
- package/build/ts/deployer/utils.d.ts +8 -0
- package/build/ts/deployer/utils.d.ts.map +1 -0
- package/build/ts/deployer/utils.js +9 -0
- package/build/ts/deployer/utils.js.map +1 -0
- package/build/ts/file/__tests__/file.service.test.d.ts +2 -0
- package/build/ts/file/__tests__/file.service.test.d.ts.map +1 -0
- package/build/ts/file/__tests__/file.service.test.js +76 -0
- package/build/ts/file/__tests__/file.service.test.js.map +1 -0
- package/build/ts/file/file.module.d.ts +3 -0
- package/build/ts/file/file.module.d.ts.map +1 -0
- package/build/ts/file/file.module.js +18 -0
- package/build/ts/file/file.module.js.map +1 -0
- package/build/ts/file/file.service.d.ts +62 -0
- package/build/ts/file/file.service.d.ts.map +1 -0
- package/build/ts/file/file.service.js +115 -0
- package/build/ts/file/file.service.js.map +1 -0
- package/build/ts/file/types.d.ts +36 -0
- package/build/ts/file/types.d.ts.map +1 -0
- package/build/ts/file/types.js +2 -0
- package/build/ts/file/types.js.map +1 -0
- package/build/ts/jest/setup.d.ts +8 -0
- package/build/ts/jest/setup.d.ts.map +1 -0
- package/build/ts/jest/setup.js +2 -0
- package/build/ts/jest/setup.js.map +1 -0
- package/build/ts/jest/transform.d.ts +8 -0
- package/build/ts/jest/transform.d.ts.map +1 -0
- package/build/ts/jest/transform.js +10 -0
- package/build/ts/jest/transform.js.map +1 -0
- package/build/ts/main.d.ts +2 -0
- package/build/ts/main.d.ts.map +1 -0
- package/build/ts/main.js +46 -0
- package/build/ts/main.js.map +1 -0
- package/build/ts/proof/__tests__/proof.controller.test.d.ts +2 -0
- package/build/ts/proof/__tests__/proof.controller.test.d.ts.map +1 -0
- package/build/ts/proof/__tests__/proof.controller.test.js +89 -0
- package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -0
- package/build/ts/proof/__tests__/proof.gateway.test.d.ts +2 -0
- package/build/ts/proof/__tests__/proof.gateway.test.d.ts.map +1 -0
- package/build/ts/proof/__tests__/proof.gateway.test.js +61 -0
- package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -0
- package/build/ts/proof/__tests__/proof.service.test.d.ts +2 -0
- package/build/ts/proof/__tests__/proof.service.test.d.ts.map +1 -0
- package/build/ts/proof/__tests__/proof.service.test.js +128 -0
- package/build/ts/proof/__tests__/proof.service.test.js.map +1 -0
- package/build/ts/proof/dto.d.ts +73 -0
- package/build/ts/proof/dto.d.ts.map +1 -0
- package/build/ts/proof/dto.js +255 -0
- package/build/ts/proof/dto.js.map +1 -0
- package/build/ts/proof/proof.controller.d.ts +46 -0
- package/build/ts/proof/proof.controller.d.ts.map +1 -0
- package/build/ts/proof/proof.controller.js +135 -0
- package/build/ts/proof/proof.controller.js.map +1 -0
- package/build/ts/proof/proof.gateway.d.ts +35 -0
- package/build/ts/proof/proof.gateway.d.ts.map +1 -0
- package/build/ts/proof/proof.gateway.js +93 -0
- package/build/ts/proof/proof.gateway.js.map +1 -0
- package/build/ts/proof/proof.module.d.ts +3 -0
- package/build/ts/proof/proof.module.d.ts.map +1 -0
- package/build/ts/proof/proof.module.js +24 -0
- package/build/ts/proof/proof.module.js.map +1 -0
- package/build/ts/proof/proof.service.d.ts +54 -0
- package/build/ts/proof/proof.service.d.ts.map +1 -0
- package/build/ts/proof/proof.service.js +246 -0
- package/build/ts/proof/proof.service.js.map +1 -0
- package/build/ts/proof/types.d.ts +140 -0
- package/build/ts/proof/types.d.ts.map +1 -0
- package/build/ts/proof/types.js +11 -0
- package/build/ts/proof/types.js.map +1 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.d.ts +2 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.d.ts.map +1 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +44 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.d.ts +2 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.d.ts.map +1 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +61 -0
- package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -0
- package/build/ts/sessionKeys/__tests__/utils.d.ts +25 -0
- package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -0
- package/build/ts/sessionKeys/__tests__/utils.js +64 -0
- package/build/ts/sessionKeys/__tests__/utils.js.map +1 -0
- package/build/ts/sessionKeys/dto.d.ts +11 -0
- package/build/ts/sessionKeys/dto.d.ts.map +1 -0
- package/build/ts/sessionKeys/dto.js +29 -0
- package/build/ts/sessionKeys/dto.js.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.controller.d.ts +26 -0
- package/build/ts/sessionKeys/sessionKeys.controller.d.ts.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.controller.js +74 -0
- package/build/ts/sessionKeys/sessionKeys.controller.js.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.module.d.ts +3 -0
- package/build/ts/sessionKeys/sessionKeys.module.d.ts.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.module.js +23 -0
- package/build/ts/sessionKeys/sessionKeys.module.js.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.service.d.ts +50 -0
- package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.service.js +104 -0
- package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -0
- package/build/ts/sessionKeys/types.d.ts +11 -0
- package/build/ts/sessionKeys/types.d.ts.map +1 -0
- package/build/ts/sessionKeys/types.js +2 -0
- package/build/ts/sessionKeys/types.js.map +1 -0
- package/build/ts/subgraph/__tests__/subgraph.controller.test.d.ts +2 -0
- package/build/ts/subgraph/__tests__/subgraph.controller.test.d.ts.map +1 -0
- package/build/ts/subgraph/__tests__/subgraph.controller.test.js +50 -0
- package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -0
- package/build/ts/subgraph/__tests__/subgraph.gateway.test.d.ts +2 -0
- package/build/ts/subgraph/__tests__/subgraph.gateway.test.d.ts.map +1 -0
- package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +83 -0
- package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -0
- package/build/ts/subgraph/__tests__/subgraph.service.test.d.ts +2 -0
- package/build/ts/subgraph/__tests__/subgraph.service.test.d.ts.map +1 -0
- package/build/ts/subgraph/__tests__/subgraph.service.test.js +58 -0
- package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -0
- package/build/ts/subgraph/dto.d.ts +27 -0
- package/build/ts/subgraph/dto.d.ts.map +1 -0
- package/build/ts/subgraph/dto.js +83 -0
- package/build/ts/subgraph/dto.js.map +1 -0
- package/build/ts/subgraph/subgraph.controller.d.ts +24 -0
- package/build/ts/subgraph/subgraph.controller.d.ts.map +1 -0
- package/build/ts/subgraph/subgraph.controller.js +66 -0
- package/build/ts/subgraph/subgraph.controller.js.map +1 -0
- package/build/ts/subgraph/subgraph.gateway.d.ts +35 -0
- package/build/ts/subgraph/subgraph.gateway.d.ts.map +1 -0
- package/build/ts/subgraph/subgraph.gateway.js +93 -0
- package/build/ts/subgraph/subgraph.gateway.js.map +1 -0
- package/build/ts/subgraph/subgraph.module.d.ts +3 -0
- package/build/ts/subgraph/subgraph.module.d.ts.map +1 -0
- package/build/ts/subgraph/subgraph.module.js +23 -0
- package/build/ts/subgraph/subgraph.module.js.map +1 -0
- package/build/ts/subgraph/subgraph.service.d.ts +20 -0
- package/build/ts/subgraph/subgraph.service.d.ts.map +1 -0
- package/build/ts/subgraph/subgraph.service.js +106 -0
- package/build/ts/subgraph/subgraph.service.js.map +1 -0
- package/build/ts/subgraph/types.d.ts +93 -0
- package/build/ts/subgraph/types.d.ts.map +1 -0
- package/build/ts/subgraph/types.js +24 -0
- package/build/ts/subgraph/types.js.map +1 -0
- package/build/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Test } from "@nestjs/testing";
|
|
2
|
+
import { zeroAddress } from "viem";
|
|
3
|
+
import { SessionKeysController } from "../sessionKeys.controller";
|
|
4
|
+
import { SessionKeysService } from "../sessionKeys.service";
|
|
5
|
+
describe("SessionKeysController", () => {
|
|
6
|
+
let sessionKeysController;
|
|
7
|
+
const mockSessionKeysService = {
|
|
8
|
+
generateSessionKey: jest.fn(),
|
|
9
|
+
deactivateSessionKey: jest.fn(),
|
|
10
|
+
};
|
|
11
|
+
const defaultGenerateSessionKeyReturn = {
|
|
12
|
+
sessionKeyAddress: zeroAddress,
|
|
13
|
+
};
|
|
14
|
+
beforeEach(async () => {
|
|
15
|
+
const app = await Test.createTestingModule({
|
|
16
|
+
controllers: [SessionKeysController],
|
|
17
|
+
})
|
|
18
|
+
.useMocker((token) => {
|
|
19
|
+
if (token === SessionKeysService) {
|
|
20
|
+
mockSessionKeysService.generateSessionKey.mockResolvedValue(defaultGenerateSessionKeyReturn);
|
|
21
|
+
return mockSessionKeysService;
|
|
22
|
+
}
|
|
23
|
+
return jest.fn();
|
|
24
|
+
})
|
|
25
|
+
.compile();
|
|
26
|
+
sessionKeysController = app.get(SessionKeysController);
|
|
27
|
+
});
|
|
28
|
+
afterEach(() => {
|
|
29
|
+
jest.clearAllMocks();
|
|
30
|
+
});
|
|
31
|
+
describe("v1/session-keys/generate", () => {
|
|
32
|
+
test("should return a session key address", () => {
|
|
33
|
+
const data = sessionKeysController.generateSessionKey();
|
|
34
|
+
expect(data).toStrictEqual(defaultGenerateSessionKeyReturn);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe("v1/session-keys/delete", () => {
|
|
38
|
+
test("should delete a session key", () => {
|
|
39
|
+
sessionKeysController.deactivateSessionKey({ sessionKeyAddress: zeroAddress });
|
|
40
|
+
expect(mockSessionKeysService.deactivateSessionKey).toHaveBeenCalledWith(zeroAddress);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=sessionKeys.controller.test.js.map
|
|
@@ -0,0 +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,GAAG,EAAE;YAC/C,MAAM,IAAI,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;YACxD,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.service.test.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import dotenv from "dotenv";
|
|
2
|
+
import { zeroAddress } from "viem";
|
|
3
|
+
import { ErrorCodes, ESupportedNetworks } from "../../common";
|
|
4
|
+
import { FileService } from "../../file/file.service";
|
|
5
|
+
import { SessionKeysService } from "../sessionKeys.service";
|
|
6
|
+
import { generateApproval } from "./utils";
|
|
7
|
+
dotenv.config();
|
|
8
|
+
describe("SessionKeysService", () => {
|
|
9
|
+
const fileService = new FileService();
|
|
10
|
+
let sessionKeysService;
|
|
11
|
+
beforeAll(() => {
|
|
12
|
+
sessionKeysService = new SessionKeysService(fileService);
|
|
13
|
+
});
|
|
14
|
+
describe("generateSessionKey", () => {
|
|
15
|
+
test("should generate and store a session key", async () => {
|
|
16
|
+
const sessionKeyAddress = await sessionKeysService.generateSessionKey();
|
|
17
|
+
expect(sessionKeyAddress).toBeDefined();
|
|
18
|
+
expect(sessionKeyAddress).not.toEqual(zeroAddress);
|
|
19
|
+
const sessionKey = fileService.getSessionKey(sessionKeyAddress.sessionKeyAddress);
|
|
20
|
+
expect(sessionKey).toBeDefined();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe("deactivateSessionKey", () => {
|
|
24
|
+
test("should delete a session key", async () => {
|
|
25
|
+
const sessionKeyAddress = await sessionKeysService.generateSessionKey();
|
|
26
|
+
expect(sessionKeyAddress).toBeDefined();
|
|
27
|
+
expect(sessionKeyAddress).not.toEqual(zeroAddress);
|
|
28
|
+
const sessionKey = fileService.getSessionKey(sessionKeyAddress.sessionKeyAddress);
|
|
29
|
+
expect(sessionKey).toBeDefined();
|
|
30
|
+
sessionKeysService.deactivateSessionKey(sessionKeyAddress.sessionKeyAddress);
|
|
31
|
+
const sessionKeyDeleted = fileService.getSessionKey(sessionKeyAddress.sessionKeyAddress);
|
|
32
|
+
expect(sessionKeyDeleted).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("generateClientFromSessionKey", () => {
|
|
36
|
+
test("should fail to generate a client with an invalid approval", async () => {
|
|
37
|
+
const sessionKeyAddress = await sessionKeysService.generateSessionKey();
|
|
38
|
+
await expect(sessionKeysService.generateClientFromSessionKey(sessionKeyAddress.sessionKeyAddress, "0xinvalid", ESupportedNetworks.OPTIMISM_SEPOLIA)).rejects.toThrow(ErrorCodes.INVALID_APPROVAL.toString());
|
|
39
|
+
});
|
|
40
|
+
test("should throw when given a non existent session key address", async () => {
|
|
41
|
+
const approval = await generateApproval(zeroAddress);
|
|
42
|
+
await expect(sessionKeysService.generateClientFromSessionKey(zeroAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA)).rejects.toThrow(ErrorCodes.SESSION_KEY_NOT_FOUND.toString());
|
|
43
|
+
});
|
|
44
|
+
test("should generate a client from a session key", async () => {
|
|
45
|
+
jest.mock("@zerodev/sdk", () => ({
|
|
46
|
+
...jest.requireActual("@zerodev/sdk"),
|
|
47
|
+
createKernelAccountClient: jest.fn().mockReturnValue({ mockedKernelClient: true }),
|
|
48
|
+
}));
|
|
49
|
+
const mockGenerateClientFromSessionKey = jest.fn().mockResolvedValue({ mockedClient: true });
|
|
50
|
+
jest
|
|
51
|
+
.spyOn(SessionKeysService.prototype, "generateClientFromSessionKey")
|
|
52
|
+
.mockImplementation(mockGenerateClientFromSessionKey);
|
|
53
|
+
const sessionKeyAddress = await sessionKeysService.generateSessionKey();
|
|
54
|
+
const approval = await generateApproval(sessionKeyAddress.sessionKeyAddress);
|
|
55
|
+
const client = await sessionKeysService.generateClientFromSessionKey(sessionKeyAddress.sessionKeyAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA);
|
|
56
|
+
expect(mockGenerateClientFromSessionKey).toHaveBeenCalledWith(sessionKeyAddress.sessionKeyAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA);
|
|
57
|
+
expect(client).toEqual({ mockedClient: true });
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=sessionKeys.service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.service.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type Policy } from "@zerodev/permissions";
|
|
2
|
+
import { CreateKernelAccountReturnType } from "@zerodev/sdk";
|
|
3
|
+
import { type Hex } from "viem";
|
|
4
|
+
export declare const ENTRY_POINT: import("@zerodev/sdk/types").EntryPointType<"0.7">;
|
|
5
|
+
export declare const KERNEL_VERSION: import("@zerodev/sdk/types").KERNEL_V3_VERSION_TYPE;
|
|
6
|
+
/**
|
|
7
|
+
* Generate a timestamp policy
|
|
8
|
+
* @param endTime - The end time of the policy
|
|
9
|
+
* @param start - The start time of the policy
|
|
10
|
+
* @returns The timestamp policy
|
|
11
|
+
*/
|
|
12
|
+
export declare const generateTimestampPolicy: (endTime: number, start?: number) => Policy;
|
|
13
|
+
/**
|
|
14
|
+
* Get smart contract kernel account
|
|
15
|
+
* @param sessionKeyAddress - the session key address
|
|
16
|
+
* @returns - the kernel account
|
|
17
|
+
*/
|
|
18
|
+
export declare const getKernelAccount: (sessionKeyAddress: Hex) => Promise<CreateKernelAccountReturnType>;
|
|
19
|
+
/**
|
|
20
|
+
* Generate an approval for a session key
|
|
21
|
+
* @param sessionKeyAddress - the session key address
|
|
22
|
+
* @returns - the approval
|
|
23
|
+
*/
|
|
24
|
+
export declare const generateApproval: (sessionKeyAddress: Hex) => Promise<string>;
|
|
25
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,sBAAsB,CAAC;AAGtG,OAAO,EAA8C,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAGzG,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAQhC,eAAO,MAAM,WAAW,oDAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,qDAAc,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,MAItE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,6BAA6B,CA6BpG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,MAAM,CAG7E,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { signerToEcdsaValidator } from "@zerodev/ecdsa-validator";
|
|
2
|
+
import { serializePermissionAccount, toPermissionValidator } from "@zerodev/permissions";
|
|
3
|
+
import { toSudoPolicy, toTimestampPolicy } from "@zerodev/permissions/policies";
|
|
4
|
+
import { toECDSASigner } from "@zerodev/permissions/signers";
|
|
5
|
+
import { addressToEmptyAccount, createKernelAccount } from "@zerodev/sdk";
|
|
6
|
+
import { getEntryPoint, KERNEL_V3_1 } from "@zerodev/sdk/constants";
|
|
7
|
+
import dotenv from "dotenv";
|
|
8
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
9
|
+
import { ESupportedNetworks } from "../../common";
|
|
10
|
+
import { getPublicClient } from "../../common/accountAbstraction";
|
|
11
|
+
dotenv.config();
|
|
12
|
+
export const ENTRY_POINT = getEntryPoint("0.7");
|
|
13
|
+
export const KERNEL_VERSION = KERNEL_V3_1;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a timestamp policy
|
|
16
|
+
* @param endTime - The end time of the policy
|
|
17
|
+
* @param start - The start time of the policy
|
|
18
|
+
* @returns The timestamp policy
|
|
19
|
+
*/
|
|
20
|
+
export const generateTimestampPolicy = (endTime, start) => toTimestampPolicy({
|
|
21
|
+
validAfter: start,
|
|
22
|
+
validUntil: endTime,
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Get smart contract kernel account
|
|
26
|
+
* @param sessionKeyAddress - the session key address
|
|
27
|
+
* @returns - the kernel account
|
|
28
|
+
*/
|
|
29
|
+
export const getKernelAccount = async (sessionKeyAddress) => {
|
|
30
|
+
const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
|
|
31
|
+
const sessionKeySigner = privateKeyToAccount(process.env.TEST_PRIVATE_KEY);
|
|
32
|
+
const ecdsaValidator = await signerToEcdsaValidator(publicClient, {
|
|
33
|
+
signer: sessionKeySigner,
|
|
34
|
+
entryPoint: ENTRY_POINT,
|
|
35
|
+
kernelVersion: KERNEL_VERSION,
|
|
36
|
+
});
|
|
37
|
+
const emptyAccount = addressToEmptyAccount(sessionKeyAddress);
|
|
38
|
+
const emptySessionKeySigner = await toECDSASigner({ signer: emptyAccount });
|
|
39
|
+
const permissionPlugin = await toPermissionValidator(publicClient, {
|
|
40
|
+
entryPoint: ENTRY_POINT,
|
|
41
|
+
kernelVersion: KERNEL_VERSION,
|
|
42
|
+
signer: emptySessionKeySigner,
|
|
43
|
+
policies: [toSudoPolicy({})],
|
|
44
|
+
});
|
|
45
|
+
const sessionKeyAccount = await createKernelAccount(publicClient, {
|
|
46
|
+
entryPoint: ENTRY_POINT,
|
|
47
|
+
kernelVersion: KERNEL_VERSION,
|
|
48
|
+
plugins: {
|
|
49
|
+
sudo: ecdsaValidator,
|
|
50
|
+
regular: permissionPlugin,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return sessionKeyAccount;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Generate an approval for a session key
|
|
57
|
+
* @param sessionKeyAddress - the session key address
|
|
58
|
+
* @returns - the approval
|
|
59
|
+
*/
|
|
60
|
+
export const generateApproval = async (sessionKeyAddress) => {
|
|
61
|
+
const sessionKeyAccount = await getKernelAccount(sessionKeyAddress);
|
|
62
|
+
return serializePermissionAccount(sessionKeyAccount);
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAe,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAiC,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAE,KAAc,EAAU,EAAE,CACjF,iBAAiB,CAAC;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,OAAO;CACpB,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAA0C,EAAE;IACvG,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAwB,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,YAAY,EAAE;QAChE,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,qBAAqB,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE;QACjE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE;QAChE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE;YACP,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,gBAAgB;SAC1B;KACF,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAAmB,EAAE;IAChF,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACpE,OAAO,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACvD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../../ts/sessionKeys/dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;GAEG;AACH,qBAAa,uBAAuB;IAClC;;OAEG;IAMH,iBAAiB,EAAG,GAAG,CAAC;CACzB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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 { ApiProperty } from "@nestjs/swagger";
|
|
11
|
+
import { IsEthereumAddress } from "class-validator";
|
|
12
|
+
/**
|
|
13
|
+
* Data transfer object for Deactivate session key
|
|
14
|
+
*/
|
|
15
|
+
export class DeactivateSessionKeyDto {
|
|
16
|
+
/**
|
|
17
|
+
* Session key address
|
|
18
|
+
*/
|
|
19
|
+
sessionKeyAddress;
|
|
20
|
+
}
|
|
21
|
+
__decorate([
|
|
22
|
+
ApiProperty({
|
|
23
|
+
description: "Session key address",
|
|
24
|
+
type: String,
|
|
25
|
+
}),
|
|
26
|
+
IsEthereumAddress(),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], DeactivateSessionKeyDto.prototype, "sessionKeyAddress", void 0);
|
|
29
|
+
//# sourceMappingURL=dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../../ts/sessionKeys/dto.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAClC;;OAEG;IAMH,iBAAiB,CAAO;CACzB;AADC;IALC,WAAW,CAAC;QACX,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,MAAM;KACb,CAAC;IACD,iBAAiB,EAAE;;kEACI"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { IGenerateSessionKeyReturn } from "./types";
|
|
2
|
+
import { DeactivateSessionKeyDto } from "./dto";
|
|
3
|
+
import { SessionKeysService } from "./sessionKeys.service";
|
|
4
|
+
export declare class SessionKeysController {
|
|
5
|
+
private readonly sessionKeysService;
|
|
6
|
+
/**
|
|
7
|
+
* Initialize SessionKeysController
|
|
8
|
+
*
|
|
9
|
+
* @param sessionKeysService - session keys service
|
|
10
|
+
*/
|
|
11
|
+
constructor(sessionKeysService: SessionKeysService);
|
|
12
|
+
/**
|
|
13
|
+
* Generate a session key api method
|
|
14
|
+
*
|
|
15
|
+
* @returns generated session key address
|
|
16
|
+
*/
|
|
17
|
+
generateSessionKey(): Promise<IGenerateSessionKeyReturn>;
|
|
18
|
+
/**
|
|
19
|
+
* Delete a session key api method
|
|
20
|
+
*
|
|
21
|
+
* @param args - delete session key dto
|
|
22
|
+
* @returns deleted session key address
|
|
23
|
+
*/
|
|
24
|
+
deactivateSessionKey(args: DeactivateSessionKeyDto): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sessionKeys.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.controller.d.ts","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAIzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,qBAIa,qBAAqB;IAMpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAL/C;;;;OAIG;gBAC0B,kBAAkB,EAAE,kBAAkB;IAEnE;;;;OAIG;IAKG,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAI9D;;;;;OAKG;IAMH,oBAAoB,CAAS,IAAI,EAAE,uBAAuB,GAAG,IAAI;CAGlE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
import { Body, Controller, Delete, Get, HttpStatus, UseGuards } from "@nestjs/common";
|
|
14
|
+
import { ApiBearerAuth, ApiBody, ApiResponse, ApiTags } from "@nestjs/swagger";
|
|
15
|
+
import { AccountSignatureGuard } from "../auth/AccountSignatureGuard.service";
|
|
16
|
+
import { DeactivateSessionKeyDto } from "./dto";
|
|
17
|
+
import { SessionKeysService } from "./sessionKeys.service";
|
|
18
|
+
let SessionKeysController = class SessionKeysController {
|
|
19
|
+
sessionKeysService;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize SessionKeysController
|
|
22
|
+
*
|
|
23
|
+
* @param sessionKeysService - session keys service
|
|
24
|
+
*/
|
|
25
|
+
constructor(sessionKeysService) {
|
|
26
|
+
this.sessionKeysService = sessionKeysService;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generate a session key api method
|
|
30
|
+
*
|
|
31
|
+
* @returns generated session key address
|
|
32
|
+
*/
|
|
33
|
+
async generateSessionKey() {
|
|
34
|
+
return this.sessionKeysService.generateSessionKey();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Delete a session key api method
|
|
38
|
+
*
|
|
39
|
+
* @param args - delete session key dto
|
|
40
|
+
* @returns deleted session key address
|
|
41
|
+
*/
|
|
42
|
+
deactivateSessionKey(args) {
|
|
43
|
+
this.sessionKeysService.deactivateSessionKey(args.sessionKeyAddress);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
__decorate([
|
|
47
|
+
ApiResponse({ status: HttpStatus.OK, description: "The session key was successfully generated" }),
|
|
48
|
+
ApiResponse({ status: HttpStatus.FORBIDDEN, description: "Forbidden" }),
|
|
49
|
+
ApiResponse({ status: HttpStatus.BAD_REQUEST, description: "BadRequest" }),
|
|
50
|
+
Get("generate"),
|
|
51
|
+
__metadata("design:type", Function),
|
|
52
|
+
__metadata("design:paramtypes", []),
|
|
53
|
+
__metadata("design:returntype", Promise)
|
|
54
|
+
], SessionKeysController.prototype, "generateSessionKey", null);
|
|
55
|
+
__decorate([
|
|
56
|
+
ApiBody({ type: DeactivateSessionKeyDto }),
|
|
57
|
+
ApiResponse({ status: HttpStatus.CREATED, description: "The session key was successfully deactivated" }),
|
|
58
|
+
ApiResponse({ status: HttpStatus.FORBIDDEN, description: "Forbidden" }),
|
|
59
|
+
ApiResponse({ status: HttpStatus.BAD_REQUEST, description: "BadRequest" }),
|
|
60
|
+
Delete("delete"),
|
|
61
|
+
__param(0, Body()),
|
|
62
|
+
__metadata("design:type", Function),
|
|
63
|
+
__metadata("design:paramtypes", [DeactivateSessionKeyDto]),
|
|
64
|
+
__metadata("design:returntype", void 0)
|
|
65
|
+
], SessionKeysController.prototype, "deactivateSessionKey", null);
|
|
66
|
+
SessionKeysController = __decorate([
|
|
67
|
+
ApiTags("v1/session-keys"),
|
|
68
|
+
ApiBearerAuth(),
|
|
69
|
+
Controller("v1/session-keys"),
|
|
70
|
+
UseGuards(AccountSignatureGuard),
|
|
71
|
+
__metadata("design:paramtypes", [SessionKeysService])
|
|
72
|
+
], SessionKeysController);
|
|
73
|
+
export { SessionKeysController };
|
|
74
|
+
//# sourceMappingURL=sessionKeys.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.controller.js","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAMpD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAMH;IAL7B;;;;OAIG;IACH,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE;;;;OAIG;IAKG,AAAN,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IAMH,oBAAoB,CAAS,IAA6B;QACxD,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvE,CAAC;CACF,CAAA;AAlBO;IAJL,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;IACjG,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC1E,GAAG,CAAC,UAAU,CAAC;;;;+DAGf;AAaD;IALC,OAAO,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;IACxG,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC1E,MAAM,CAAC,QAAQ,CAAC;IACK,WAAA,IAAI,EAAE,CAAA;;qCAAO,uBAAuB;;iEAEzD;AAlCU,qBAAqB;IAJjC,OAAO,CAAC,iBAAiB,CAAC;IAC1B,aAAa,EAAE;IACf,UAAU,CAAC,iBAAiB,CAAC;IAC7B,SAAS,CAAC,qBAAqB,CAAC;qCAOkB,kBAAkB;GANxD,qBAAqB,CAmCjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.module.d.ts","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.module.ts"],"names":[],"mappings":"AAQA,qBAMa,iBAAiB;CAAG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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 { CryptoService } from "../crypto/crypto.service";
|
|
9
|
+
import { FileModule } from "../file/file.module";
|
|
10
|
+
import { SessionKeysController } from "./sessionKeys.controller";
|
|
11
|
+
import { SessionKeysService } from "./sessionKeys.service";
|
|
12
|
+
let SessionKeysModule = class SessionKeysModule {
|
|
13
|
+
};
|
|
14
|
+
SessionKeysModule = __decorate([
|
|
15
|
+
Module({
|
|
16
|
+
imports: [FileModule],
|
|
17
|
+
controllers: [SessionKeysController],
|
|
18
|
+
providers: [SessionKeysService, CryptoService],
|
|
19
|
+
exports: [SessionKeysService],
|
|
20
|
+
})
|
|
21
|
+
], SessionKeysModule);
|
|
22
|
+
export { SessionKeysModule };
|
|
23
|
+
//# sourceMappingURL=sessionKeys.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.module.js","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQpD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAN7B,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,WAAW,EAAE,CAAC,qBAAqB,CAAC;QACpC,SAAS,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC;QAC9C,OAAO,EAAE,CAAC,kBAAkB,CAAC;KAC9B,CAAC;GACW,iBAAiB,CAAG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { JsonRpcSigner } from "ethers";
|
|
2
|
+
import type { Hex } from "viem";
|
|
3
|
+
import { ESupportedNetworks, KernelClientType } from "../common";
|
|
4
|
+
import { FileService } from "../file/file.service";
|
|
5
|
+
import { IGenerateSessionKeyReturn } from "./types";
|
|
6
|
+
/**
|
|
7
|
+
* SessionKeysService is responsible for generating and managing session keys.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SessionKeysService {
|
|
10
|
+
private readonly fileService;
|
|
11
|
+
/**
|
|
12
|
+
* Logger
|
|
13
|
+
*/
|
|
14
|
+
private readonly logger;
|
|
15
|
+
/**
|
|
16
|
+
* Create a new instance of SessionKeysService
|
|
17
|
+
*
|
|
18
|
+
* @param fileService - file service
|
|
19
|
+
*/
|
|
20
|
+
constructor(fileService: FileService);
|
|
21
|
+
/**
|
|
22
|
+
* Generate a session key
|
|
23
|
+
*
|
|
24
|
+
* @returns session key address
|
|
25
|
+
*/
|
|
26
|
+
generateSessionKey(): Promise<IGenerateSessionKeyReturn>;
|
|
27
|
+
/**
|
|
28
|
+
* Generate a KernelClient from a session key and an approval
|
|
29
|
+
*
|
|
30
|
+
* @param sessionKeyAddress - the address of the session key
|
|
31
|
+
* @param approval - the approval string
|
|
32
|
+
* @param chain - the chain to use
|
|
33
|
+
* @returns a KernelAccountClient
|
|
34
|
+
*/
|
|
35
|
+
generateClientFromSessionKey(sessionKeyAddress: Hex, approval: string, chain: ESupportedNetworks): Promise<KernelClientType>;
|
|
36
|
+
/**
|
|
37
|
+
* Get a signer from a kernel client (that could be generated from a session key)
|
|
38
|
+
*
|
|
39
|
+
* @param kernelClient - kernel client
|
|
40
|
+
* @returns signer
|
|
41
|
+
*/
|
|
42
|
+
getKernelClientSigner(kernelClient: KernelClientType): Promise<JsonRpcSigner>;
|
|
43
|
+
/**
|
|
44
|
+
* Deactivate a session key
|
|
45
|
+
*
|
|
46
|
+
* @param sessionKeyAddress - key address
|
|
47
|
+
*/
|
|
48
|
+
deactivateSessionKey(sessionKeyAddress: Hex): void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=sessionKeys.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.service.d.ts","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAc,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,qBACa,kBAAkB;IAWjB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAVxC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;OAIG;gBAC0B,WAAW,EAAE,WAAW;IAIrD;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAiB9D;;;;;;;OAOG;IACG,4BAA4B,CAChC,iBAAiB,EAAE,GAAG,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAkB5B;;;;;OAKG;IACG,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAOnF;;;;OAIG;IACH,oBAAoB,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI;CAGnD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
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 SessionKeysService_1;
|
|
11
|
+
import { Injectable, Logger } from "@nestjs/common";
|
|
12
|
+
import { toECDSASigner } from "@zerodev/permissions/signers";
|
|
13
|
+
import { KernelEIP1193Provider } from "@zerodev/sdk";
|
|
14
|
+
import { BrowserProvider } from "ethers";
|
|
15
|
+
import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
|
|
16
|
+
import { ErrorCodes } from "../common";
|
|
17
|
+
import { getKernelClient } from "../common/accountAbstraction";
|
|
18
|
+
import { FileService } from "../file/file.service";
|
|
19
|
+
/**
|
|
20
|
+
* SessionKeysService is responsible for generating and managing session keys.
|
|
21
|
+
*/
|
|
22
|
+
let SessionKeysService = SessionKeysService_1 = class SessionKeysService {
|
|
23
|
+
fileService;
|
|
24
|
+
/**
|
|
25
|
+
* Logger
|
|
26
|
+
*/
|
|
27
|
+
logger;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new instance of SessionKeysService
|
|
30
|
+
*
|
|
31
|
+
* @param fileService - file service
|
|
32
|
+
*/
|
|
33
|
+
constructor(fileService) {
|
|
34
|
+
this.fileService = fileService;
|
|
35
|
+
this.logger = new Logger(SessionKeysService_1.name);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Generate a session key
|
|
39
|
+
*
|
|
40
|
+
* @returns session key address
|
|
41
|
+
*/
|
|
42
|
+
async generateSessionKey() {
|
|
43
|
+
const sessionPrivateKey = generatePrivateKey();
|
|
44
|
+
const sessionKeySigner = await toECDSASigner({
|
|
45
|
+
signer: privateKeyToAccount(sessionPrivateKey),
|
|
46
|
+
});
|
|
47
|
+
const sessionKeyAddress = sessionKeySigner.account.address;
|
|
48
|
+
// save the key
|
|
49
|
+
this.fileService.storeSessionKey(sessionPrivateKey, sessionKeyAddress);
|
|
50
|
+
return {
|
|
51
|
+
sessionKeyAddress,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generate a KernelClient from a session key and an approval
|
|
56
|
+
*
|
|
57
|
+
* @param sessionKeyAddress - the address of the session key
|
|
58
|
+
* @param approval - the approval string
|
|
59
|
+
* @param chain - the chain to use
|
|
60
|
+
* @returns a KernelAccountClient
|
|
61
|
+
*/
|
|
62
|
+
async generateClientFromSessionKey(sessionKeyAddress, approval, chain) {
|
|
63
|
+
// retrieve the session key from the file service
|
|
64
|
+
const sessionKey = this.fileService.getSessionKey(sessionKeyAddress);
|
|
65
|
+
if (!sessionKey) {
|
|
66
|
+
this.logger.error(`Session key not found: ${sessionKeyAddress}`);
|
|
67
|
+
throw new Error(ErrorCodes.SESSION_KEY_NOT_FOUND.toString());
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const kernelClient = getKernelClient(sessionKey, approval, chain);
|
|
71
|
+
return kernelClient;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
this.logger.error(`Error: ${ErrorCodes.INVALID_APPROVAL}`, error);
|
|
75
|
+
throw new Error(ErrorCodes.INVALID_APPROVAL.toString());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get a signer from a kernel client (that could be generated from a session key)
|
|
80
|
+
*
|
|
81
|
+
* @param kernelClient - kernel client
|
|
82
|
+
* @returns signer
|
|
83
|
+
*/
|
|
84
|
+
async getKernelClientSigner(kernelClient) {
|
|
85
|
+
const kernelProvider = new KernelEIP1193Provider(kernelClient);
|
|
86
|
+
const ethersProvider = new BrowserProvider(kernelProvider);
|
|
87
|
+
const signer = await ethersProvider.getSigner();
|
|
88
|
+
return signer;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Deactivate a session key
|
|
92
|
+
*
|
|
93
|
+
* @param sessionKeyAddress - key address
|
|
94
|
+
*/
|
|
95
|
+
deactivateSessionKey(sessionKeyAddress) {
|
|
96
|
+
this.fileService.deleteSessionKey(sessionKeyAddress);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
SessionKeysService = SessionKeysService_1 = __decorate([
|
|
100
|
+
Injectable(),
|
|
101
|
+
__metadata("design:paramtypes", [FileService])
|
|
102
|
+
], SessionKeysService);
|
|
103
|
+
export { SessionKeysService };
|
|
104
|
+
//# sourceMappingURL=sessionKeys.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeys.service.js","sourceRoot":"","sources":["../../../ts/sessionKeys/sessionKeys.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,eAAe,EAAiB,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAIxE,OAAO,EAAE,UAAU,EAAwC,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD;;GAEG;AAEI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAWA;IAV7B;;OAEG;IACc,MAAM,CAAS;IAEhC;;;;OAIG;IACH,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,iBAAiB,GAAG,kBAAkB,EAAE,CAAC;QAE/C,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC;YAC3C,MAAM,EAAE,mBAAmB,CAAC,iBAAiB,CAAC;SAC/C,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;QAE3D,eAAe;QACf,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAEvE,OAAO;YACL,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,4BAA4B,CAChC,iBAAsB,EACtB,QAAgB,EAChB,KAAyB;QAEzB,iDAAiD;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAErE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,iBAAiB,EAAE,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,UAAU,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,qBAAqB,CAAC,YAA8B;QACxD,MAAM,cAAc,GAAG,IAAI,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,iBAAsB;QACzC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC;CACF,CAAA;AAxFY,kBAAkB;IAD9B,UAAU,EAAE;qCAY+B,WAAW;GAX1C,kBAAkB,CAwF9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/sessionKeys/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../ts/sessionKeys/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subgraph.controller.test.d.ts","sourceRoot":"","sources":["../../../../ts/subgraph/__tests__/subgraph.controller.test.ts"],"names":[],"mappings":""}
|