@socket.tech/dl-common 1.0.6 → 1.0.7

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 (183) hide show
  1. package/dist/dl-common/constants/confirmations.d.ts +5 -0
  2. package/dist/dl-common/constants/confirmations.js +17 -0
  3. package/dist/dl-common/constants/enums.d.ts +44 -0
  4. package/dist/dl-common/constants/enums.js +52 -0
  5. package/dist/dl-common/constants/index.d.ts +3 -0
  6. package/dist/dl-common/constants/index.js +19 -0
  7. package/dist/dl-common/constants/types.d.ts +126 -0
  8. package/dist/dl-common/constants/types.js +45 -0
  9. package/dist/dl-common/constants/waitTime.d.ts +8 -0
  10. package/dist/dl-common/constants/waitTime.js +49 -0
  11. package/dist/dl-common/index.d.ts +4 -0
  12. package/dist/dl-common/index.js +20 -0
  13. package/dist/dl-common/models/attestSignature.d.ts +35 -0
  14. package/dist/dl-common/models/attestSignature.js +53 -0
  15. package/dist/dl-common/models/attestation.d.ts +70 -0
  16. package/dist/dl-common/models/attestation.js +86 -0
  17. package/dist/dl-common/models/index.d.ts +7 -0
  18. package/dist/dl-common/models/index.js +23 -0
  19. package/dist/dl-common/models/lastBlock.d.ts +28 -0
  20. package/dist/dl-common/models/lastBlock.js +27 -0
  21. package/dist/dl-common/models/message.d.ts +166 -0
  22. package/dist/dl-common/models/message.js +183 -0
  23. package/dist/dl-common/models/packet.d.ts +241 -0
  24. package/dist/dl-common/models/packet.js +250 -0
  25. package/dist/dl-common/models/proposal.d.ts +127 -0
  26. package/dist/dl-common/models/proposal.js +141 -0
  27. package/dist/dl-common/models/switchboard.d.ts +69 -0
  28. package/dist/dl-common/models/switchboard.js +92 -0
  29. package/dist/dl-common/models/transaction.d.ts +0 -0
  30. package/dist/dl-common/models/transaction.js +280 -0
  31. package/dist/dl-common/services/cacheService.d.ts +14 -0
  32. package/dist/dl-common/services/cacheService.js +77 -0
  33. package/dist/dl-common/services/eventBridgeService.d.ts +8 -0
  34. package/dist/dl-common/services/eventBridgeService.js +40 -0
  35. package/dist/dl-common/services/index.d.ts +3 -0
  36. package/dist/dl-common/services/index.js +20 -0
  37. package/dist/dl-common/services/queueService.d.ts +10 -0
  38. package/dist/dl-common/services/queueService.js +62 -0
  39. package/dist/dl-common/utils/address.d.ts +2 -0
  40. package/dist/dl-common/utils/address.js +8 -0
  41. package/dist/dl-common/utils/axios.d.ts +2 -0
  42. package/dist/dl-common/utils/axios.js +54 -0
  43. package/dist/dl-common/utils/dataStructHelper.d.ts +2 -0
  44. package/dist/dl-common/utils/dataStructHelper.js +10 -0
  45. package/dist/dl-common/utils/discord.d.ts +2 -0
  46. package/dist/dl-common/utils/discord.js +35 -0
  47. package/dist/dl-common/utils/ethersAwsKmsSigner.d.ts +2 -0
  48. package/dist/dl-common/utils/ethersAwsKmsSigner.js +26 -0
  49. package/dist/dl-common/utils/eventGetter.d.ts +4 -0
  50. package/dist/dl-common/utils/eventGetter.js +50 -0
  51. package/dist/dl-common/utils/extraUtils.d.ts +32 -0
  52. package/dist/dl-common/utils/extraUtils.js +103 -0
  53. package/dist/dl-common/utils/idUtils.d.ts +14 -0
  54. package/dist/dl-common/utils/idUtils.js +50 -0
  55. package/dist/dl-common/utils/index.d.ts +13 -0
  56. package/dist/dl-common/utils/index.js +29 -0
  57. package/dist/dl-common/utils/relaySigner.d.ts +21 -0
  58. package/dist/dl-common/utils/relaySigner.js +68 -0
  59. package/dist/dl-common/utils/s3Service.d.ts +5 -0
  60. package/dist/dl-common/utils/s3Service.js +45 -0
  61. package/dist/dl-common/utils/secretManagerService.d.ts +2 -0
  62. package/dist/dl-common/utils/secretManagerService.js +33 -0
  63. package/dist/dl-common/utils/signer/adapter.d.ts +18 -0
  64. package/dist/dl-common/utils/signer/adapter.js +71 -0
  65. package/dist/dl-common/utils/signer/address.d.ts +10 -0
  66. package/dist/dl-common/utils/signer/address.js +42 -0
  67. package/dist/dl-common/utils/signer/asn1-parser.d.ts +11 -0
  68. package/dist/dl-common/utils/signer/asn1-parser.js +80 -0
  69. package/dist/dl-common/utils/signer/crypto.d.ts +6 -0
  70. package/dist/dl-common/utils/signer/crypto.js +34 -0
  71. package/dist/dl-common/utils/signer/index.d.ts +4 -0
  72. package/dist/dl-common/utils/signer/index.js +20 -0
  73. package/dist/dl-common/utils/signer/kms-ethers-signer.d.ts +19 -0
  74. package/dist/dl-common/utils/signer/kms-ethers-signer.js +32 -0
  75. package/dist/dl-common/utils/signer/kms-signer.d.ts +14 -0
  76. package/dist/dl-common/utils/signer/kms-signer.js +46 -0
  77. package/dist/dl-common/utils/signer/signature.d.ts +17 -0
  78. package/dist/dl-common/utils/signer/signature.js +65 -0
  79. package/dist/dl-common/utils/signer/signer.d.ts +7 -0
  80. package/dist/dl-common/utils/signer/signer.js +2 -0
  81. package/dist/dl-common/utils/time.d.ts +2 -0
  82. package/dist/dl-common/utils/time.js +7 -0
  83. package/dist/index.js +30 -14
  84. package/dist/src/constants/batcherModes.d.ts +7 -0
  85. package/dist/src/constants/batcherModes.js +56 -0
  86. package/dist/src/constants/config.d.ts +39 -0
  87. package/dist/src/constants/config.js +77 -0
  88. package/dist/src/constants/enums.d.ts +21 -0
  89. package/dist/src/constants/enums.js +27 -0
  90. package/dist/src/constants/gasEstimation.d.ts +8 -0
  91. package/dist/src/constants/gasEstimation.js +61 -0
  92. package/dist/src/constants/index.d.ts +11 -0
  93. package/dist/src/constants/index.js +28 -0
  94. package/dist/src/constants/limits.d.ts +21 -0
  95. package/dist/src/constants/limits.js +91 -0
  96. package/dist/src/constants/prometheus.config.d.ts +43 -0
  97. package/dist/src/constants/prometheus.config.js +316 -0
  98. package/dist/src/constants/relayer.d.ts +6 -0
  99. package/dist/src/constants/relayer.js +15 -0
  100. package/dist/src/constants/s3Config.d.ts +13 -0
  101. package/dist/src/constants/s3Config.js +61 -0
  102. package/dist/src/constants/stageConfig.d.ts +7 -0
  103. package/dist/src/constants/stageConfig.js +24 -0
  104. package/dist/src/constants/types.d.ts +45 -0
  105. package/dist/src/constants/types.js +2 -0
  106. package/dist/src/constants/watchers.d.ts +15 -0
  107. package/dist/src/constants/watchers.js +137 -0
  108. package/dist/src/controllers/index.d.ts +0 -0
  109. package/dist/src/controllers/index.js +3 -0
  110. package/dist/src/db/associations.d.ts +1 -0
  111. package/dist/src/db/associations.js +46 -0
  112. package/dist/src/db/connection.d.ts +4 -0
  113. package/dist/src/db/connection.js +73 -0
  114. package/dist/src/db/index.d.ts +2 -0
  115. package/dist/src/db/index.js +18 -0
  116. package/dist/src/db/init.d.ts +2 -0
  117. package/dist/src/db/init.js +27 -0
  118. package/dist/src/handlers/common.d.ts +2 -0
  119. package/dist/src/handlers/common.js +59 -0
  120. package/dist/src/handlers/cronHandler.d.ts +10 -0
  121. package/dist/src/handlers/cronHandler.js +268 -0
  122. package/dist/src/handlers/executeHandler.d.ts +3 -0
  123. package/dist/src/handlers/executeHandler.js +66 -0
  124. package/dist/src/handlers/handler.d.ts +2 -0
  125. package/dist/src/handlers/handler.js +29 -0
  126. package/dist/src/handlers/proposeHandler.d.ts +3 -0
  127. package/dist/src/handlers/proposeHandler.js +69 -0
  128. package/dist/src/handlers/routes.d.ts +2 -0
  129. package/dist/src/handlers/routes.js +26 -0
  130. package/dist/src/handlers/sealHandler.d.ts +4 -0
  131. package/dist/src/handlers/sealHandler.js +245 -0
  132. package/dist/src/handlers/statusHandler.d.ts +5 -0
  133. package/dist/src/handlers/statusHandler.js +116 -0
  134. package/dist/src/handlers/taskHandler.d.ts +2 -0
  135. package/dist/src/handlers/taskHandler.js +110 -0
  136. package/dist/src/handlers/testHandler.d.ts +4 -0
  137. package/dist/src/handlers/testHandler.js +99 -0
  138. package/dist/src/main.d.ts +0 -0
  139. package/dist/src/main.js +12 -0
  140. package/dist/src/relayers/common.d.ts +7 -0
  141. package/dist/src/relayers/common.js +55 -0
  142. package/dist/src/relayers/index.d.ts +2 -0
  143. package/dist/src/relayers/index.js +19 -0
  144. package/dist/src/relayers/proposeRelayer.d.ts +7 -0
  145. package/dist/src/relayers/proposeRelayer.js +587 -0
  146. package/dist/src/relayers/sealRelayer.d.ts +8 -0
  147. package/dist/src/relayers/sealRelayer.js +276 -0
  148. package/dist/src/services/attestService.d.ts +45 -0
  149. package/dist/src/services/attestService.js +269 -0
  150. package/dist/src/services/batcherService.d.ts +9 -0
  151. package/dist/src/services/batcherService.js +197 -0
  152. package/dist/src/services/executeService.d.ts +16 -0
  153. package/dist/src/services/executeService.js +209 -0
  154. package/dist/src/services/gasEstimationService.d.ts +3 -0
  155. package/dist/src/services/gasEstimationService.js +12 -0
  156. package/dist/src/services/index.d.ts +4 -0
  157. package/dist/src/services/index.js +23 -0
  158. package/dist/src/services/indexSealService.d.ts +15 -0
  159. package/dist/src/services/indexSealService.js +120 -0
  160. package/dist/src/services/proposalCheckService.d.ts +9 -0
  161. package/dist/src/services/proposalCheckService.js +119 -0
  162. package/dist/src/services/sealService.d.ts +27 -0
  163. package/dist/src/services/sealService.js +190 -0
  164. package/dist/src/statusTrackers/failedMessage.d.ts +8 -0
  165. package/dist/src/statusTrackers/failedMessage.js +72 -0
  166. package/dist/src/statusTrackers/failedPacket.d.ts +13 -0
  167. package/dist/src/statusTrackers/failedPacket.js +110 -0
  168. package/dist/src/statusTrackers/index.d.ts +3 -0
  169. package/dist/src/statusTrackers/index.js +26 -0
  170. package/dist/src/statusTrackers/message.d.ts +4 -0
  171. package/dist/src/statusTrackers/message.js +257 -0
  172. package/dist/src/statusTrackers/packet.d.ts +33 -0
  173. package/dist/src/statusTrackers/packet.js +477 -0
  174. package/dist/src/utils/chain-utils.d.ts +5 -0
  175. package/dist/src/utils/chain-utils.js +42 -0
  176. package/dist/src/utils/index.d.ts +2 -0
  177. package/dist/src/utils/index.js +18 -0
  178. package/dist/src/utils/logger.d.ts +9 -0
  179. package/dist/src/utils/logger.js +9 -0
  180. package/dist/utils/s3Service.js +1 -1
  181. package/dist/utils/signer/socketSigner.d.ts +32 -0
  182. package/dist/utils/signer/socketSigner.js +121 -0
  183. package/package.json +1 -1
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.indexSealHandler = exports.relaySealHandler = exports.sealHandler = void 0;
4
+ const ll_common_1 = require("@socket.tech/ll-common");
5
+ const utils_1 = require("../utils");
6
+ const sealService_1 = require("../services/sealService");
7
+ const sealRelayer_1 = require("../relayers/sealRelayer");
8
+ const indexSealService_1 = require("../services/indexSealService");
9
+ const common_1 = require("./common");
10
+ const index_1 = require("../../dl-common/index");
11
+ const constants_1 = require("../constants");
12
+ const dl_core_1 = require("@socket.tech/dl-core");
13
+ const sealHandler = async (event, context) => {
14
+ context.callbackWaitsForEmptyEventLoop = false;
15
+ try {
16
+ if (!event.body) {
17
+ throw (0, index_1.BadRequestError)("No request data found");
18
+ }
19
+ const data = JSON.parse(event.body);
20
+ const { sealRequests } = data;
21
+ if (!(sealRequests === null || sealRequests === void 0 ? void 0 : sealRequests.length)) {
22
+ throw (0, index_1.BadRequestError)("no seal requests found");
23
+ }
24
+ await (0, common_1.initServices)();
25
+ sanitizeSealData(sealRequests);
26
+ const response = await (0, sealService_1.seal)(sealRequests);
27
+ return (0, ll_common_1.buildResponse)(200, { status: index_1.StatusCodes.SUCCESS, response });
28
+ }
29
+ catch (e) {
30
+ utils_1.logger.error("Error", e);
31
+ return (0, common_1.buildErrorResponse)(e);
32
+ }
33
+ };
34
+ exports.sealHandler = sealHandler;
35
+ const relaySealHandler = async (event, context) => {
36
+ context.callbackWaitsForEmptyEventLoop = false;
37
+ try {
38
+ if (!event.body) {
39
+ throw (0, index_1.BadRequestError)("No request data found");
40
+ }
41
+ const { chainSlug } = JSON.parse(event.body);
42
+ await (0, common_1.initServices)();
43
+ const response = await (0, sealRelayer_1.relaySeal)(chainSlug);
44
+ return (0, ll_common_1.buildResponse)(200, { status: index_1.StatusCodes.SUCCESS, response });
45
+ }
46
+ catch (e) {
47
+ utils_1.logger.error("Error", e);
48
+ return (0, common_1.buildErrorResponse)(e);
49
+ }
50
+ };
51
+ exports.relaySealHandler = relaySealHandler;
52
+ const indexSealHandler = async (event, context) => {
53
+ context.callbackWaitsForEmptyEventLoop = false;
54
+ try {
55
+ if (!event.body) {
56
+ throw (0, index_1.BadRequestError)("No request data found");
57
+ }
58
+ const data = JSON.parse(event.body);
59
+ const { sealIndexedUpdates } = data;
60
+ if (!(sealIndexedUpdates === null || sealIndexedUpdates === void 0 ? void 0 : sealIndexedUpdates.length)) {
61
+ throw (0, index_1.BadRequestError)("no seal index updates found");
62
+ }
63
+ await (0, common_1.initServices)();
64
+ sanitizeIndexSealData(sealIndexedUpdates);
65
+ const response = await (0, indexSealService_1.indexSeal)(sealIndexedUpdates);
66
+ return (0, ll_common_1.buildResponse)(200, { status: index_1.StatusCodes.SUCCESS, response });
67
+ }
68
+ catch (e) {
69
+ utils_1.logger.error("Error", e);
70
+ return (0, common_1.buildErrorResponse)(e);
71
+ }
72
+ };
73
+ exports.indexSealHandler = indexSealHandler;
74
+ const sanitizeSealData = (dataArray) => {
75
+ dataArray.forEach((data, index) => {
76
+ const { srcChainSlug, dstChainSlug, integrationType } = data;
77
+ (0, index_1.checkObjectFieldsAndType)(data, {
78
+ srcChainSlug: "number",
79
+ dstChainSlug: "number",
80
+ dstSwitchboard: "string",
81
+ srcSwitchboard: "string",
82
+ integrationType: "string",
83
+ message: {
84
+ messageId: "string",
85
+ srcPlug: "string",
86
+ destPlug: "string",
87
+ minMsgGasLimit: "string",
88
+ executionParams: "string",
89
+ transmissionParams: "string",
90
+ executionFee: "string",
91
+ transmissionFees: "string",
92
+ switchboardFees: "string",
93
+ fees: "string",
94
+ decapacitorProof: "string",
95
+ payload: "string",
96
+ packedMessage: "string",
97
+ outboundTxHash: "string",
98
+ outboundTime: "number",
99
+ capacitorMsgCount: "string",
100
+ },
101
+ packet: {
102
+ capacitorPacketCount: "string",
103
+ packetId: "string",
104
+ srcCapacitor: "string",
105
+ root: "string",
106
+ sealSignature: "string",
107
+ },
108
+ }, `sealRequests.${index}`);
109
+ if (!data.packet.sealSignature)
110
+ throw (0, index_1.BadRequestError)("seal signature missing");
111
+ if (!constants_1.supportedChainSlugs.includes(srcChainSlug)) {
112
+ throw (0, index_1.BadRequestError)(`srcChainSlug ${srcChainSlug} not supported`);
113
+ }
114
+ // should not check this during seal api call, as a wrong dstChainSlug can
115
+ // stop transmitter sync for source chain
116
+ // if (!supportedChainSlugs.includes(dstChainSlug)) {
117
+ // throw BadRequestError(`dstChainSlug ${dstChainSlug} not supported`);
118
+ // }
119
+ if (!Object.values(dl_core_1.IntegrationTypes).includes(integrationType)) {
120
+ throw (0, index_1.BadRequestError)("integrationType not supported");
121
+ }
122
+ });
123
+ };
124
+ // const sanitizeSealData = (dataArray: SealParams[]) => {
125
+ // dataArray.forEach((data) => {
126
+ // let {
127
+ // message,
128
+ // packet,
129
+ // srcChainSlug,
130
+ // dstChainSlug,
131
+ // dstSwitchboard, // address
132
+ // integrationType,
133
+ // } = data;
134
+ // checkMissingFieldsAndType({ message, packet }, { message:'object', packet:'object' });
135
+ // let {
136
+ // messageId,
137
+ // srcPlug,
138
+ // destPlug,
139
+ // minMsgGasLimit,
140
+ // executionParams,
141
+ // transmissionParams,
142
+ // executionFee,
143
+ // transmissionFees,
144
+ // switchboardFees,
145
+ // fees,
146
+ // decapacitorProof,
147
+ // payload,
148
+ // packedMessage,
149
+ // outboundTxHash,
150
+ // outboundTime,
151
+ // capacitorMsgCount,
152
+ // } = message;
153
+ // let {
154
+ // capacitorPacketCount,
155
+ // rootHash,
156
+ // packetId,
157
+ // srcCapacitor,
158
+ // root,
159
+ // sealSignature,
160
+ // } = packet;
161
+ // checkMissingFieldsAndType(
162
+ // {
163
+ // srcChainSlug,
164
+ // dstChainSlug,
165
+ // dstSwitchboard,
166
+ // messageId,
167
+ // srcPlug,
168
+ // destPlug,
169
+ // minMsgGasLimit,
170
+ // executionParams,
171
+ // transmissionParams,
172
+ // executionFee,
173
+ // transmissionFees,
174
+ // switchboardFees,
175
+ // fees,
176
+ // decapacitorProof,
177
+ // payload,
178
+ // packedMessage,
179
+ // outboundTxHash,
180
+ // outboundTime,
181
+ // capacitorMsgCount,
182
+ // capacitorPacketCount,
183
+ // rootHash,
184
+ // packetId,
185
+ // srcCapacitor,
186
+ // root,
187
+ // sealSignature,
188
+ // },
189
+ // {
190
+ // srcChainSlug: "number",
191
+ // dstChainSlug: "number",
192
+ // dstSwitchboard: "string",
193
+ // messageId: "string",
194
+ // srcPlug: "string",
195
+ // destPlug: "string",
196
+ // minMsgGasLimit: "string",
197
+ // executionParams: "string",
198
+ // transmissionParams: "string",
199
+ // executionFee: "string",
200
+ // transmissionFees: "string",
201
+ // switchboardFees: "stri–ng",
202
+ // fees: "string",
203
+ // decapacitorProof: "string",
204
+ // payload: "string",
205
+ // packedMessage: "string",
206
+ // outboundTxHash: "string",
207
+ // outboundTime: "number",
208
+ // capacitorMsgCount: "string",
209
+ // capacitorPacketCount: "string",
210
+ // rootHash: "string",
211
+ // packetId: "string",
212
+ // srcCapacitor: "string",
213
+ // root: "string",
214
+ // sealSignature: "string",
215
+ // }
216
+ // );
217
+ // if (!supportedChainSlugs.includes(srcChainSlug)) {
218
+ // throw BadRequestError("srcChainSlug not supported");
219
+ // }
220
+ // if (!supportedChainSlugs.includes(dstChainSlug)) {
221
+ // throw BadRequestError("dstChainSlug not supported");
222
+ // }
223
+ // if (!(integrationType in IntegrationTypes)) {
224
+ // throw BadRequestError("integrationType not supported");
225
+ // }
226
+ // });
227
+ // };
228
+ const sanitizeIndexSealData = (dataArray) => {
229
+ dataArray.forEach((data, index) => {
230
+ const { srcChainSlug } = data;
231
+ (0, index_1.checkObjectFieldsAndType)(data, {
232
+ srcChainSlug: "number",
233
+ sealer: "string",
234
+ sealTime: "number",
235
+ sealTxHash: "string",
236
+ rootSealed: "string",
237
+ dstSwitchboard: "string",
238
+ sealSignature: "string",
239
+ packetId: "string",
240
+ }, `sealIndexedUpdates.${index}`);
241
+ if (!constants_1.supportedChainSlugs.includes(srcChainSlug)) {
242
+ throw (0, index_1.BadRequestError)("srcChainSlug not supported");
243
+ }
244
+ });
245
+ };
@@ -0,0 +1,5 @@
1
+ import { type SQSEvent, type Context, type APIGatewayProxyEvent, type APIGatewayProxyResult } from "aws-lambda";
2
+ export declare const statusHandler: (event: SQSEvent, context: Context) => Promise<void>;
3
+ export declare const statusUpdateHandler: (event: APIGatewayProxyEvent, context: Context) => Promise<APIGatewayProxyResult>;
4
+ export declare const failedStatusUpdateHandler: (event: APIGatewayProxyEvent, context: Context) => Promise<APIGatewayProxyResult>;
5
+ export declare const relayerTxStatusUpdateHandler: (event: APIGatewayProxyEvent, context: Context) => Promise<APIGatewayProxyResult>;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.relayerTxStatusUpdateHandler = exports.failedStatusUpdateHandler = exports.statusUpdateHandler = exports.statusHandler = void 0;
4
+ const utils_1 = require("../utils");
5
+ const common_1 = require("./common");
6
+ const packet_1 = require("../statusTrackers/packet");
7
+ const message_1 = require("../statusTrackers/message");
8
+ const ll_common_1 = require("@socket.tech/ll-common");
9
+ const prometheus_config_1 = require("../constants/prometheus.config");
10
+ const index_1 = require("../../dl-common/index");
11
+ const constants_1 = require("../constants");
12
+ const failedPacket_1 = require("../statusTrackers/failedPacket");
13
+ const failedMessage_1 = require("../statusTrackers/failedMessage");
14
+ const statusHandler = async (event, context) => {
15
+ context.callbackWaitsForEmptyEventLoop = false;
16
+ try {
17
+ await (0, common_1.initServices)();
18
+ await (0, packet_1.checkAndUpdatePacketRelayStatus)();
19
+ await (0, message_1.checkAndUpdateMessageRelayStatus)();
20
+ }
21
+ catch (e) {
22
+ utils_1.logger.error("Error", e);
23
+ }
24
+ };
25
+ exports.statusHandler = statusHandler;
26
+ const statusUpdateHandler = async (event, context) => {
27
+ context.callbackWaitsForEmptyEventLoop = false;
28
+ try {
29
+ await (0, common_1.initServices)();
30
+ await (0, packet_1.checkAndUpdatePacketRelayStatus)();
31
+ await (0, message_1.checkAndUpdateMessageRelayStatus)();
32
+ const start = Date.now();
33
+ await (0, prometheus_config_1.pushToGateway)();
34
+ (0, utils_1.logInfo)({
35
+ info: "PUSHED_TO_GATEWAY",
36
+ time: Date.now() - start,
37
+ messageIds: [],
38
+ packetIds: [],
39
+ });
40
+ return (0, ll_common_1.buildResponse)(200, {
41
+ status: index_1.StatusCodes.SUCCESS,
42
+ message: "tx status updated",
43
+ });
44
+ }
45
+ catch (e) {
46
+ utils_1.logger.error("Error", e);
47
+ return (0, common_1.buildErrorResponse)(e);
48
+ }
49
+ };
50
+ exports.statusUpdateHandler = statusUpdateHandler;
51
+ const failedStatusUpdateHandler = async (event, context) => {
52
+ context.callbackWaitsForEmptyEventLoop = false;
53
+ try {
54
+ if (event.body == null)
55
+ throw Error("body missing");
56
+ const { packetIds, messageIds, dryRun } = JSON.parse(event.body);
57
+ await (0, common_1.initServices)();
58
+ const packetResponse = await (0, failedPacket_1.checkFailedPackets)(packetIds, dryRun);
59
+ const messageResponse = await (0, failedMessage_1.checkFailedMessages)(messageIds, dryRun);
60
+ return (0, ll_common_1.buildResponse)(200, {
61
+ status: index_1.StatusCodes.SUCCESS,
62
+ message: "tx status updated",
63
+ packetResponse,
64
+ messageResponse,
65
+ });
66
+ }
67
+ catch (e) {
68
+ utils_1.logger.error("Error", e);
69
+ return (0, common_1.buildErrorResponse)(e);
70
+ }
71
+ };
72
+ exports.failedStatusUpdateHandler = failedStatusUpdateHandler;
73
+ const relayerTxStatusUpdateHandler = async (event, context) => {
74
+ context.callbackWaitsForEmptyEventLoop = false;
75
+ try {
76
+ if (event.headers["x-api-key"] !== constants_1.relayerAPIKey) {
77
+ throw new index_1.ServerError(index_1.StatusCodes.UNAUTHORIZED, "invalid api key");
78
+ }
79
+ if (event.body == null) {
80
+ throw (0, index_1.BadRequestError)("No request data found");
81
+ }
82
+ const data = JSON.parse(event.body);
83
+ const { txStatusUpdates } = data;
84
+ if ((txStatusUpdates === null || txStatusUpdates === void 0 ? void 0 : txStatusUpdates.length) === 0) {
85
+ throw (0, index_1.BadRequestError)("no txStatusUpdates requests found");
86
+ }
87
+ sanitizeTxStatusUpdateData(txStatusUpdates);
88
+ await (0, common_1.initServices)();
89
+ await (0, packet_1.updatePacketTxStatus)(txStatusUpdates);
90
+ await (0, message_1.updateMessageTxStatus)(txStatusUpdates);
91
+ await (0, prometheus_config_1.pushToGateway)();
92
+ return (0, ll_common_1.buildResponse)(200, {
93
+ status: index_1.StatusCodes.SUCCESS,
94
+ message: "tx status updated",
95
+ });
96
+ }
97
+ catch (e) {
98
+ utils_1.logger.error("Error", e);
99
+ return (0, common_1.buildErrorResponse)(e);
100
+ }
101
+ };
102
+ exports.relayerTxStatusUpdateHandler = relayerTxStatusUpdateHandler;
103
+ const sanitizeTxStatusUpdateData = (dataArray) => {
104
+ dataArray.forEach((data, index) => {
105
+ const { status } = data;
106
+ (0, index_1.checkObjectFieldsAndType)(data, {
107
+ chainId: "number",
108
+ txId: "string",
109
+ txHash: "string",
110
+ confirmations: "number",
111
+ }, `txStatusUpdates.${index}`);
112
+ if (!Object.values(index_1.RelayerAPIStatus).includes(status)) {
113
+ throw (0, index_1.BadRequestError)("relayer tx status not supported");
114
+ }
115
+ });
116
+ };
@@ -0,0 +1,2 @@
1
+ import { type SQSEvent, type Context } from "aws-lambda";
2
+ export declare const taskHandler: (event: SQSEvent, context: Context) => Promise<void>;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.taskHandler = void 0;
27
+ const constants_1 = require("../constants");
28
+ const utils_1 = require("../utils");
29
+ const proposeRelayer_1 = require("../relayers/proposeRelayer");
30
+ const common_1 = require("./common");
31
+ const enums_1 = require("../constants/enums");
32
+ const relayers_1 = require("../relayers");
33
+ const executeService_1 = require("../services/executeService");
34
+ const cacheService = __importStar(require("../../dl-common/services/cacheService"));
35
+ const statusTrackers_1 = require("../statusTrackers");
36
+ const proposalCheckService_1 = require("../services/proposalCheckService");
37
+ const getLock = async (taskName, lockTime) => {
38
+ try {
39
+ const redisKey = "batcher_service_task_" + constants_1.deploymentMode + "_" + taskName;
40
+ const flag = await cacheService.lock(redisKey, lockTime);
41
+ return flag;
42
+ }
43
+ catch (error) {
44
+ console.log(error);
45
+ return false;
46
+ }
47
+ };
48
+ const releaseLock = async (taskName) => {
49
+ try {
50
+ const redisKey = "batcher_service_task_" + constants_1.deploymentMode + "_" + taskName;
51
+ const flag = await cacheService.unlock(redisKey);
52
+ return flag;
53
+ }
54
+ catch (error) {
55
+ console.log(error);
56
+ return false;
57
+ }
58
+ };
59
+ const checkLockAndExecute = async (taskName, lockTime, callback, args) => {
60
+ const success = await getLock(taskName, lockTime);
61
+ if (!success) {
62
+ (0, utils_1.logInfo)({
63
+ info: "TASK_ALREADY_RUNNING",
64
+ taskName,
65
+ messageIds: [],
66
+ packetIds: [],
67
+ });
68
+ return;
69
+ }
70
+ await callback(...args);
71
+ await releaseLock(taskName);
72
+ };
73
+ const taskHandler = async (event, context) => {
74
+ context.callbackWaitsForEmptyEventLoop = false;
75
+ try {
76
+ const { type, data } = JSON.parse(event.Records[0].body);
77
+ console.log("task received: ", type);
78
+ if (!type) {
79
+ console.log("type doesnt exist in task request");
80
+ return;
81
+ }
82
+ await (0, common_1.initServices)();
83
+ const { chainSlug } = data;
84
+ switch (type) {
85
+ case enums_1.TaskNames.RELAY_SEAL:
86
+ await checkLockAndExecute(enums_1.TaskNames.RELAY_SEAL, 5 * 60, relayers_1.relaySeal, [
87
+ chainSlug,
88
+ ]);
89
+ break;
90
+ case enums_1.TaskNames.RELAY_PROPOSE:
91
+ await checkLockAndExecute(enums_1.TaskNames.RELAY_PROPOSE, 5 * 60, proposeRelayer_1.relayPropose, [chainSlug]);
92
+ break;
93
+ case enums_1.TaskNames.STATUS_UPDATE:
94
+ await (0, statusTrackers_1.checkAndUpdateStatus)();
95
+ break;
96
+ case enums_1.TaskNames.SIMULATE_MESSAGES:
97
+ await (0, executeService_1.sendPendingSimulationRequest)();
98
+ break;
99
+ case enums_1.TaskNames.UPDATE_SELECTED_PROPOSAL_COUNT:
100
+ await (0, proposalCheckService_1.updateSelectedProposalCountForPackets)(chainSlug);
101
+ break;
102
+ default:
103
+ break;
104
+ }
105
+ }
106
+ catch (e) {
107
+ utils_1.logger.error("Error", e);
108
+ }
109
+ };
110
+ exports.taskHandler = taskHandler;
@@ -0,0 +1,4 @@
1
+ import { type APIGatewayProxyEvent, type APIGatewayProxyResult, type Context } from "aws-lambda";
2
+ export declare const main: (event: APIGatewayProxyEvent, context: Context) => Promise<APIGatewayProxyResult>;
3
+ export declare const deleteKeyHandler: (event: APIGatewayProxyEvent, context: Context) => Promise<APIGatewayProxyResult>;
4
+ export declare const chainSupportHandler: (event: APIGatewayProxyEvent, context: Context) => Promise<APIGatewayProxyResult>;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.chainSupportHandler = exports.deleteKeyHandler = exports.main = void 0;
27
+ /* eslint-disable @typescript-eslint/no-throw-literal */
28
+ const ll_common_1 = require("@socket.tech/ll-common");
29
+ const utils_1 = require("../utils");
30
+ const common_1 = require("./common");
31
+ const cacheService = __importStar(require("../../dl-common/services/cacheService"));
32
+ const dl_common_1 = require("../../dl-common");
33
+ const constants_1 = require("../constants");
34
+ const main = async (event, context) => {
35
+ context.callbackWaitsForEmptyEventLoop = false;
36
+ try {
37
+ await (0, common_1.initServices)();
38
+ console.log("services initialized");
39
+ const gasPrice = await (0, utils_1.getRPCGasPrice)(647);
40
+ const packet = await dl_common_1.Packet.findOne({
41
+ attributes: ["packetId", "srcChainSlug"],
42
+ });
43
+ console.log("db working");
44
+ await cacheService.setKey("test", "testValue", 60);
45
+ const cacheRespose = await cacheService.getKey("test");
46
+ console.log("cache working");
47
+ // relayMetrics.proposeRelay.counter.inc();
48
+ // await sendToDiscordWebhook("Test Message", {
49
+ // chain: ChainSlug.OPTIMISM,
50
+ // currentBalance: 90,
51
+ // threshold: 100,
52
+ // });
53
+ // console.log("discord working");
54
+ const response = { message: "API working", packet, cacheRespose, gasPrice };
55
+ // const response = { message: "API working" };
56
+ // await pushToGateway();
57
+ return (0, ll_common_1.buildResponse)(200, { status: dl_common_1.StatusCodes.SUCCESS, response });
58
+ }
59
+ catch (e) {
60
+ utils_1.logger.error("Error", e);
61
+ return (0, common_1.buildErrorResponse)(e);
62
+ }
63
+ };
64
+ exports.main = main;
65
+ const deleteKeyHandler = async (event, context) => {
66
+ context.callbackWaitsForEmptyEventLoop = false;
67
+ try {
68
+ await (0, common_1.initServices)();
69
+ if (!(event === null || event === void 0 ? void 0 : event.body))
70
+ throw (0, dl_common_1.BadRequestError)("No request data found");
71
+ const { key } = JSON.parse(event === null || event === void 0 ? void 0 : event.body);
72
+ await cacheService.deleteKey(key);
73
+ const response = { message: "key deleted" };
74
+ return (0, ll_common_1.buildResponse)(200, { status: dl_common_1.StatusCodes.SUCCESS, response });
75
+ }
76
+ catch (e) {
77
+ utils_1.logger.error("Error", e);
78
+ return (0, common_1.buildErrorResponse)(e);
79
+ }
80
+ };
81
+ exports.deleteKeyHandler = deleteKeyHandler;
82
+ const chainSupportHandler = async (event, context) => {
83
+ context.callbackWaitsForEmptyEventLoop = false;
84
+ try {
85
+ await (0, common_1.initServices)();
86
+ if (!(event === null || event === void 0 ? void 0 : event.body))
87
+ throw (0, dl_common_1.BadRequestError)("No request data found");
88
+ const { chainSlug } = JSON.parse(event === null || event === void 0 ? void 0 : event.body);
89
+ if (constants_1.supportedChainSlugs.includes(Number(chainSlug)))
90
+ return (0, ll_common_1.buildResponse)(200, { status: "supported" });
91
+ else
92
+ return (0, ll_common_1.buildResponse)(200, { status: "not supported" });
93
+ }
94
+ catch (e) {
95
+ utils_1.logger.error("Error", e);
96
+ return (0, common_1.buildErrorResponse)(e);
97
+ }
98
+ };
99
+ exports.chainSupportHandler = chainSupportHandler;
File without changes
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ // #!/usr/bin/env node
3
+ // import express from 'express';
4
+ // import { estimateFees, getMessageDetails, getMessagesFromSrcTx } from './controllers';
5
+ // const app = express();
6
+ // const port = 3000;
7
+ // app.get('/message', getMessageDetails);
8
+ // app.get('/messages-from-tx', getMessagesFromSrcTx);
9
+ // app.get('/estimate-fees', estimateFees);
10
+ // app.listen(port, () => {
11
+ // console.log(`Example app listening on port ${port}`);
12
+ // });
@@ -0,0 +1,7 @@
1
+ import { type ChainSlug } from "@socket.tech/dl-core";
2
+ import { Contract } from "ethers";
3
+ export declare const getSocketBatcher: (chainSlug: ChainSlug, metadata: object, sequential?: boolean) => Promise<Contract>;
4
+ export declare const getSocket: (chainSlug: ChainSlug, metadata: object, sequential?: boolean) => Promise<Contract>;
5
+ export declare const getFastSwitchboard: (chainSlug: ChainSlug, metadata: object, sequential?: boolean) => Promise<Contract>;
6
+ export declare const getSocketAddress: (chainSlug: ChainSlug) => string;
7
+ export declare const getFastSwitchboardAddress: (chainSlug: ChainSlug) => string;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getFastSwitchboardAddress = exports.getSocketAddress = exports.getFastSwitchboard = exports.getSocket = exports.getSocketBatcher = void 0;
7
+ const constants_1 = require("../constants");
8
+ const SocketBatcher_json_1 = __importDefault(require("@socket.tech/dl-core/artifacts/abi/SocketBatcher.json"));
9
+ const Socket_json_1 = __importDefault(require("@socket.tech/dl-core/artifacts/abi/Socket.json"));
10
+ const FastSwitchboard_json_1 = __importDefault(require("@socket.tech/dl-core/artifacts/abi/FastSwitchboard.json"));
11
+ const ethers_1 = require("ethers");
12
+ const utils_1 = require("../../dl-common/utils");
13
+ const getSocketBatcher = async (chainSlug, metadata, sequential = false) => {
14
+ var _a;
15
+ const relaySigner = new utils_1.SocketRelaySigner((0, constants_1.getProvider)(chainSlug), constants_1.ChainSlugToId[chainSlug], (0, constants_1.relayUrl)(), constants_1.relayerAPIKey, sequential, false, metadata);
16
+ const socketBatcherAddress = (_a = constants_1.addresses[chainSlug]) === null || _a === void 0 ? void 0 : _a.SocketBatcher;
17
+ if (!socketBatcherAddress) {
18
+ throw new Error("Socket batcher Address not present for chain: " + chainSlug);
19
+ }
20
+ const socketBatcher = new ethers_1.Contract(socketBatcherAddress, SocketBatcher_json_1.default, relaySigner);
21
+ return socketBatcher;
22
+ };
23
+ exports.getSocketBatcher = getSocketBatcher;
24
+ const getSocket = async (chainSlug, metadata, sequential = false) => {
25
+ const relaySigner = new utils_1.SocketRelaySigner((0, constants_1.getProvider)(chainSlug), constants_1.ChainSlugToId[chainSlug], (0, constants_1.relayUrl)(), constants_1.relayerAPIKey, sequential, false, metadata);
26
+ const socketAddress = (0, exports.getSocketAddress)(chainSlug);
27
+ const socket = new ethers_1.Contract(socketAddress, Socket_json_1.default, relaySigner);
28
+ return socket;
29
+ };
30
+ exports.getSocket = getSocket;
31
+ const getFastSwitchboard = async (chainSlug, metadata, sequential = false) => {
32
+ const relaySigner = new utils_1.SocketRelaySigner((0, constants_1.getProvider)(chainSlug), constants_1.ChainSlugToId[chainSlug], (0, constants_1.relayUrl)(), constants_1.relayerAPIKey, sequential, false, metadata);
33
+ const fastSwitchboardAddress = (0, exports.getFastSwitchboardAddress)(chainSlug);
34
+ const fastSwitchboard = new ethers_1.Contract(fastSwitchboardAddress, FastSwitchboard_json_1.default, relaySigner);
35
+ return fastSwitchboard;
36
+ };
37
+ exports.getFastSwitchboard = getFastSwitchboard;
38
+ const getSocketAddress = (chainSlug) => {
39
+ var _a;
40
+ const socketAddress = (_a = constants_1.addresses[chainSlug]) === null || _a === void 0 ? void 0 : _a.Socket;
41
+ if (!socketAddress) {
42
+ throw new Error("socket Address not present for chain: " + chainSlug);
43
+ }
44
+ return socketAddress;
45
+ };
46
+ exports.getSocketAddress = getSocketAddress;
47
+ const getFastSwitchboardAddress = (chainSlug) => {
48
+ var _a;
49
+ const fastSwitchboardAddress = (_a = constants_1.addresses[chainSlug]) === null || _a === void 0 ? void 0 : _a.FastSwitchboard;
50
+ if (!fastSwitchboardAddress) {
51
+ throw new Error("fastSwitchboardAddress not present for chain: " + chainSlug);
52
+ }
53
+ return fastSwitchboardAddress;
54
+ };
55
+ exports.getFastSwitchboardAddress = getFastSwitchboardAddress;
@@ -0,0 +1,2 @@
1
+ export * from "./sealRelayer";
2
+ export * from "./proposeRelayer";