tronwb 6.0.0

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 (318) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/dist/TronWeb.js +3 -0
  4. package/dist/TronWeb.js.LICENSE.txt +12 -0
  5. package/dist/TronWeb.js.map +1 -0
  6. package/dist/TronWeb.node.js +2 -0
  7. package/dist/TronWeb.node.js.map +1 -0
  8. package/kj9btptx.cjs +1 -0
  9. package/lib/commonjs/index.d.ts +64 -0
  10. package/lib/commonjs/index.js +37 -0
  11. package/lib/commonjs/index.js.map +1 -0
  12. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.d.ts +127 -0
  13. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.js +1771 -0
  14. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.js.map +1 -0
  15. package/lib/commonjs/lib/TransactionBuilder/helper.d.ts +28 -0
  16. package/lib/commonjs/lib/TransactionBuilder/helper.js +122 -0
  17. package/lib/commonjs/lib/TransactionBuilder/helper.js.map +1 -0
  18. package/lib/commonjs/lib/contract/index.d.ts +29 -0
  19. package/lib/commonjs/lib/contract/index.js +124 -0
  20. package/lib/commonjs/lib/contract/index.js.map +1 -0
  21. package/lib/commonjs/lib/contract/method.d.ts +50 -0
  22. package/lib/commonjs/lib/contract/method.js +238 -0
  23. package/lib/commonjs/lib/contract/method.js.map +1 -0
  24. package/lib/commonjs/lib/event.d.ts +85 -0
  25. package/lib/commonjs/lib/event.js +137 -0
  26. package/lib/commonjs/lib/event.js.map +1 -0
  27. package/lib/commonjs/lib/plugin.d.ts +28 -0
  28. package/lib/commonjs/lib/plugin.js +84 -0
  29. package/lib/commonjs/lib/plugin.js.map +1 -0
  30. package/lib/commonjs/lib/providers/HttpProvider.d.ts +15 -0
  31. package/lib/commonjs/lib/providers/HttpProvider.js +63 -0
  32. package/lib/commonjs/lib/providers/HttpProvider.js.map +1 -0
  33. package/lib/commonjs/lib/providers/index.d.ts +6 -0
  34. package/lib/commonjs/lib/providers/index.js +8 -0
  35. package/lib/commonjs/lib/providers/index.js.map +1 -0
  36. package/lib/commonjs/lib/trx.d.ts +315 -0
  37. package/lib/commonjs/lib/trx.js +965 -0
  38. package/lib/commonjs/lib/trx.js.map +1 -0
  39. package/lib/commonjs/package.json +1 -0
  40. package/lib/commonjs/paramValidator/index.d.ts +19 -0
  41. package/lib/commonjs/paramValidator/index.js +110 -0
  42. package/lib/commonjs/paramValidator/index.js.map +1 -0
  43. package/lib/commonjs/protocol/core/Tron_pb.cjs +7524 -0
  44. package/lib/commonjs/protocol/core/contract/account_contract_pb.cjs +961 -0
  45. package/lib/commonjs/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  46. package/lib/commonjs/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  47. package/lib/commonjs/protocol/core/contract/common_pb.cjs +34 -0
  48. package/lib/commonjs/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  49. package/lib/commonjs/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  50. package/lib/commonjs/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  51. package/lib/commonjs/protocol/core/contract/storage_contract_pb.cjs +848 -0
  52. package/lib/commonjs/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  53. package/lib/commonjs/protocol/core/contract/witness_contract_pb.cjs +956 -0
  54. package/lib/commonjs/tronweb.d.ts +111 -0
  55. package/lib/commonjs/tronweb.js +365 -0
  56. package/lib/commonjs/tronweb.js.map +1 -0
  57. package/lib/commonjs/types/ABI.d.ts +59 -0
  58. package/lib/commonjs/types/ABI.js +3 -0
  59. package/lib/commonjs/types/ABI.js.map +1 -0
  60. package/lib/commonjs/types/APIResponse.d.ts +31 -0
  61. package/lib/commonjs/types/APIResponse.js +3 -0
  62. package/lib/commonjs/types/APIResponse.js.map +1 -0
  63. package/lib/commonjs/types/Contract.d.ts +287 -0
  64. package/lib/commonjs/types/Contract.js +63 -0
  65. package/lib/commonjs/types/Contract.js.map +1 -0
  66. package/lib/commonjs/types/Providers.d.ts +8 -0
  67. package/lib/commonjs/types/Providers.js +3 -0
  68. package/lib/commonjs/types/Providers.js.map +1 -0
  69. package/lib/commonjs/types/Transaction.d.ts +65 -0
  70. package/lib/commonjs/types/Transaction.js +3 -0
  71. package/lib/commonjs/types/Transaction.js.map +1 -0
  72. package/lib/commonjs/types/TransactionBuilder.d.ts +270 -0
  73. package/lib/commonjs/types/TransactionBuilder.js +3 -0
  74. package/lib/commonjs/types/TransactionBuilder.js.map +1 -0
  75. package/lib/commonjs/types/TronWeb.d.ts +20 -0
  76. package/lib/commonjs/types/TronWeb.js +3 -0
  77. package/lib/commonjs/types/TronWeb.js.map +1 -0
  78. package/lib/commonjs/types/Trx.d.ts +263 -0
  79. package/lib/commonjs/types/Trx.js +42 -0
  80. package/lib/commonjs/types/Trx.js.map +1 -0
  81. package/lib/commonjs/types/UtilsTypes.d.ts +23 -0
  82. package/lib/commonjs/types/UtilsTypes.js +3 -0
  83. package/lib/commonjs/types/UtilsTypes.js.map +1 -0
  84. package/lib/commonjs/types/index.d.ts +9 -0
  85. package/lib/commonjs/types/index.js +13 -0
  86. package/lib/commonjs/types/index.js.map +1 -0
  87. package/lib/commonjs/utils/abi.d.ts +5 -0
  88. package/lib/commonjs/utils/abi.js +251 -0
  89. package/lib/commonjs/utils/abi.js.map +1 -0
  90. package/lib/commonjs/utils/accounts.d.ts +22 -0
  91. package/lib/commonjs/utils/accounts.js +51 -0
  92. package/lib/commonjs/utils/accounts.js.map +1 -0
  93. package/lib/commonjs/utils/address.d.ts +12 -0
  94. package/lib/commonjs/utils/address.js +91 -0
  95. package/lib/commonjs/utils/address.js.map +1 -0
  96. package/lib/commonjs/utils/base58.d.ts +3 -0
  97. package/lib/commonjs/utils/base58.js +68 -0
  98. package/lib/commonjs/utils/base58.js.map +1 -0
  99. package/lib/commonjs/utils/base64.d.ts +10 -0
  100. package/lib/commonjs/utils/base64.js +173 -0
  101. package/lib/commonjs/utils/base64.js.map +1 -0
  102. package/lib/commonjs/utils/bytes.d.ts +7 -0
  103. package/lib/commonjs/utils/bytes.js +61 -0
  104. package/lib/commonjs/utils/bytes.js.map +1 -0
  105. package/lib/commonjs/utils/code.d.ts +12 -0
  106. package/lib/commonjs/utils/code.js +166 -0
  107. package/lib/commonjs/utils/code.js.map +1 -0
  108. package/lib/commonjs/utils/crypto.d.ts +25 -0
  109. package/lib/commonjs/utils/crypto.js +222 -0
  110. package/lib/commonjs/utils/crypto.js.map +1 -0
  111. package/lib/commonjs/utils/ethersUtils.d.ts +14 -0
  112. package/lib/commonjs/utils/ethersUtils.js +39 -0
  113. package/lib/commonjs/utils/ethersUtils.js.map +1 -0
  114. package/lib/commonjs/utils/fragments.d.ts +465 -0
  115. package/lib/commonjs/utils/fragments.js +1342 -0
  116. package/lib/commonjs/utils/fragments.js.map +1 -0
  117. package/lib/commonjs/utils/help.d.ts +8 -0
  118. package/lib/commonjs/utils/help.js +61 -0
  119. package/lib/commonjs/utils/help.js.map +1 -0
  120. package/lib/commonjs/utils/index.d.ts +56 -0
  121. package/lib/commonjs/utils/index.js +43 -0
  122. package/lib/commonjs/utils/index.js.map +1 -0
  123. package/lib/commonjs/utils/interface.d.ts +381 -0
  124. package/lib/commonjs/utils/interface.js +1121 -0
  125. package/lib/commonjs/utils/interface.js.map +1 -0
  126. package/lib/commonjs/utils/message.d.ts +4 -0
  127. package/lib/commonjs/utils/message.js +38 -0
  128. package/lib/commonjs/utils/message.js.map +1 -0
  129. package/lib/commonjs/utils/transaction.d.ts +17 -0
  130. package/lib/commonjs/utils/transaction.js +678 -0
  131. package/lib/commonjs/utils/transaction.js.map +1 -0
  132. package/lib/commonjs/utils/typedData.d.ts +148 -0
  133. package/lib/commonjs/utils/typedData.js +498 -0
  134. package/lib/commonjs/utils/typedData.js.map +1 -0
  135. package/lib/commonjs/utils/validations.d.ts +22 -0
  136. package/lib/commonjs/utils/validations.js +128 -0
  137. package/lib/commonjs/utils/validations.js.map +1 -0
  138. package/lib/esm/index.d.ts +64 -0
  139. package/lib/esm/index.js +33 -0
  140. package/lib/esm/index.js.map +1 -0
  141. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.d.ts +127 -0
  142. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.js +1767 -0
  143. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.js.map +1 -0
  144. package/lib/esm/lib/TransactionBuilder/helper.d.ts +28 -0
  145. package/lib/esm/lib/TransactionBuilder/helper.js +112 -0
  146. package/lib/esm/lib/TransactionBuilder/helper.js.map +1 -0
  147. package/lib/esm/lib/contract/index.d.ts +29 -0
  148. package/lib/esm/lib/contract/index.js +118 -0
  149. package/lib/esm/lib/contract/index.js.map +1 -0
  150. package/lib/esm/lib/contract/method.d.ts +50 -0
  151. package/lib/esm/lib/contract/method.js +233 -0
  152. package/lib/esm/lib/contract/method.js.map +1 -0
  153. package/lib/esm/lib/event.d.ts +85 -0
  154. package/lib/esm/lib/event.js +132 -0
  155. package/lib/esm/lib/event.js.map +1 -0
  156. package/lib/esm/lib/plugin.d.ts +28 -0
  157. package/lib/esm/lib/plugin.js +79 -0
  158. package/lib/esm/lib/plugin.js.map +1 -0
  159. package/lib/esm/lib/providers/HttpProvider.d.ts +15 -0
  160. package/lib/esm/lib/providers/HttpProvider.js +59 -0
  161. package/lib/esm/lib/providers/HttpProvider.js.map +1 -0
  162. package/lib/esm/lib/providers/index.d.ts +6 -0
  163. package/lib/esm/lib/providers/index.js +4 -0
  164. package/lib/esm/lib/providers/index.js.map +1 -0
  165. package/lib/esm/lib/trx.d.ts +315 -0
  166. package/lib/esm/lib/trx.js +960 -0
  167. package/lib/esm/lib/trx.js.map +1 -0
  168. package/lib/esm/package.json +1 -0
  169. package/lib/esm/paramValidator/index.d.ts +19 -0
  170. package/lib/esm/paramValidator/index.js +106 -0
  171. package/lib/esm/paramValidator/index.js.map +1 -0
  172. package/lib/esm/protocol/core/Tron_pb.cjs +7524 -0
  173. package/lib/esm/protocol/core/contract/account_contract_pb.cjs +961 -0
  174. package/lib/esm/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  175. package/lib/esm/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  176. package/lib/esm/protocol/core/contract/common_pb.cjs +34 -0
  177. package/lib/esm/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  178. package/lib/esm/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  179. package/lib/esm/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  180. package/lib/esm/protocol/core/contract/storage_contract_pb.cjs +848 -0
  181. package/lib/esm/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  182. package/lib/esm/protocol/core/contract/witness_contract_pb.cjs +956 -0
  183. package/lib/esm/tronweb.d.ts +111 -0
  184. package/lib/esm/tronweb.js +360 -0
  185. package/lib/esm/tronweb.js.map +1 -0
  186. package/lib/esm/types/ABI.d.ts +59 -0
  187. package/lib/esm/types/ABI.js +2 -0
  188. package/lib/esm/types/ABI.js.map +1 -0
  189. package/lib/esm/types/APIResponse.d.ts +31 -0
  190. package/lib/esm/types/APIResponse.js +2 -0
  191. package/lib/esm/types/APIResponse.js.map +1 -0
  192. package/lib/esm/types/Contract.d.ts +287 -0
  193. package/lib/esm/types/Contract.js +60 -0
  194. package/lib/esm/types/Contract.js.map +1 -0
  195. package/lib/esm/types/Providers.d.ts +8 -0
  196. package/lib/esm/types/Providers.js +2 -0
  197. package/lib/esm/types/Providers.js.map +1 -0
  198. package/lib/esm/types/Transaction.d.ts +65 -0
  199. package/lib/esm/types/Transaction.js +2 -0
  200. package/lib/esm/types/Transaction.js.map +1 -0
  201. package/lib/esm/types/TransactionBuilder.d.ts +270 -0
  202. package/lib/esm/types/TransactionBuilder.js +2 -0
  203. package/lib/esm/types/TransactionBuilder.js.map +1 -0
  204. package/lib/esm/types/TronWeb.d.ts +20 -0
  205. package/lib/esm/types/TronWeb.js +2 -0
  206. package/lib/esm/types/TronWeb.js.map +1 -0
  207. package/lib/esm/types/Trx.d.ts +263 -0
  208. package/lib/esm/types/Trx.js +39 -0
  209. package/lib/esm/types/Trx.js.map +1 -0
  210. package/lib/esm/types/UtilsTypes.d.ts +23 -0
  211. package/lib/esm/types/UtilsTypes.js +2 -0
  212. package/lib/esm/types/UtilsTypes.js.map +1 -0
  213. package/lib/esm/types/index.d.ts +9 -0
  214. package/lib/esm/types/index.js +10 -0
  215. package/lib/esm/types/index.js.map +1 -0
  216. package/lib/esm/utils/abi.d.ts +5 -0
  217. package/lib/esm/utils/abi.js +245 -0
  218. package/lib/esm/utils/abi.js.map +1 -0
  219. package/lib/esm/utils/accounts.d.ts +22 -0
  220. package/lib/esm/utils/accounts.js +46 -0
  221. package/lib/esm/utils/accounts.js.map +1 -0
  222. package/lib/esm/utils/address.d.ts +12 -0
  223. package/lib/esm/utils/address.js +82 -0
  224. package/lib/esm/utils/address.js.map +1 -0
  225. package/lib/esm/utils/base58.d.ts +3 -0
  226. package/lib/esm/utils/base58.js +64 -0
  227. package/lib/esm/utils/base58.js.map +1 -0
  228. package/lib/esm/utils/base64.d.ts +10 -0
  229. package/lib/esm/utils/base64.js +169 -0
  230. package/lib/esm/utils/base64.js.map +1 -0
  231. package/lib/esm/utils/bytes.d.ts +7 -0
  232. package/lib/esm/utils/bytes.js +53 -0
  233. package/lib/esm/utils/bytes.js.map +1 -0
  234. package/lib/esm/utils/code.d.ts +12 -0
  235. package/lib/esm/utils/code.js +149 -0
  236. package/lib/esm/utils/code.js.map +1 -0
  237. package/lib/esm/utils/crypto.d.ts +25 -0
  238. package/lib/esm/utils/crypto.js +198 -0
  239. package/lib/esm/utils/crypto.js.map +1 -0
  240. package/lib/esm/utils/ethersUtils.d.ts +14 -0
  241. package/lib/esm/utils/ethersUtils.js +17 -0
  242. package/lib/esm/utils/ethersUtils.js.map +1 -0
  243. package/lib/esm/utils/fragments.d.ts +465 -0
  244. package/lib/esm/utils/fragments.js +1330 -0
  245. package/lib/esm/utils/fragments.js.map +1 -0
  246. package/lib/esm/utils/help.d.ts +8 -0
  247. package/lib/esm/utils/help.js +51 -0
  248. package/lib/esm/utils/help.js.map +1 -0
  249. package/lib/esm/utils/index.d.ts +56 -0
  250. package/lib/esm/utils/index.js +40 -0
  251. package/lib/esm/utils/index.js.map +1 -0
  252. package/lib/esm/utils/interface.d.ts +381 -0
  253. package/lib/esm/utils/interface.js +1112 -0
  254. package/lib/esm/utils/interface.js.map +1 -0
  255. package/lib/esm/utils/message.d.ts +4 -0
  256. package/lib/esm/utils/message.js +32 -0
  257. package/lib/esm/utils/message.js.map +1 -0
  258. package/lib/esm/utils/transaction.d.ts +17 -0
  259. package/lib/esm/utils/transaction.js +669 -0
  260. package/lib/esm/utils/transaction.js.map +1 -0
  261. package/lib/esm/utils/typedData.d.ts +148 -0
  262. package/lib/esm/utils/typedData.js +493 -0
  263. package/lib/esm/utils/typedData.js.map +1 -0
  264. package/lib/esm/utils/validations.d.ts +22 -0
  265. package/lib/esm/utils/validations.js +108 -0
  266. package/lib/esm/utils/validations.js.map +1 -0
  267. package/package.json +110 -0
  268. package/src/index.ts +42 -0
  269. package/src/lib/TransactionBuilder/TransactionBuilder.ts +2272 -0
  270. package/src/lib/TransactionBuilder/helper.ts +139 -0
  271. package/src/lib/contract/index.ts +151 -0
  272. package/src/lib/contract/method.ts +336 -0
  273. package/src/lib/event.ts +248 -0
  274. package/src/lib/plugin.ts +102 -0
  275. package/src/lib/providers/HttpProvider.ts +66 -0
  276. package/src/lib/providers/index.ts +6 -0
  277. package/src/lib/trx.ts +1463 -0
  278. package/src/paramValidator/index.ts +136 -0
  279. package/src/protocol/core/Tron_pb.cjs +7524 -0
  280. package/src/protocol/core/contract/account_contract_pb.cjs +961 -0
  281. package/src/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  282. package/src/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  283. package/src/protocol/core/contract/common_pb.cjs +34 -0
  284. package/src/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  285. package/src/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  286. package/src/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  287. package/src/protocol/core/contract/storage_contract_pb.cjs +848 -0
  288. package/src/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  289. package/src/protocol/core/contract/witness_contract_pb.cjs +956 -0
  290. package/src/tronweb.ts +437 -0
  291. package/src/types/ABI.ts +82 -0
  292. package/src/types/APIResponse.ts +34 -0
  293. package/src/types/Contract.ts +352 -0
  294. package/src/types/Providers.ts +7 -0
  295. package/src/types/Transaction.ts +70 -0
  296. package/src/types/TransactionBuilder.ts +281 -0
  297. package/src/types/TronWeb.ts +23 -0
  298. package/src/types/Trx.ts +285 -0
  299. package/src/types/UtilsTypes.ts +25 -0
  300. package/src/types/index.ts +9 -0
  301. package/src/types/interface.d.ts +1 -0
  302. package/src/utils/abi.ts +257 -0
  303. package/src/utils/accounts.ts +60 -0
  304. package/src/utils/address.ts +89 -0
  305. package/src/utils/base58.ts +78 -0
  306. package/src/utils/base64.ts +200 -0
  307. package/src/utils/bytes.ts +68 -0
  308. package/src/utils/code.ts +172 -0
  309. package/src/utils/crypto.ts +264 -0
  310. package/src/utils/ethersUtils.ts +60 -0
  311. package/src/utils/fragments.ts +1738 -0
  312. package/src/utils/help.ts +59 -0
  313. package/src/utils/index.ts +42 -0
  314. package/src/utils/interface.ts +1362 -0
  315. package/src/utils/message.ts +38 -0
  316. package/src/utils/transaction.ts +991 -0
  317. package/src/utils/typedData.ts +688 -0
  318. package/src/utils/validations.ts +130 -0
@@ -0,0 +1,498 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypedDataEncoder = void 0;
4
+ exports.verifyTypedData = verifyTypedData;
5
+ const tronweb_js_1 = require("../tronweb.js");
6
+ const ethers_1 = require("ethers");
7
+ const address_js_1 = require("./address.js");
8
+ function getAddress(address) {
9
+ return tronweb_js_1.TronWeb.address.toHex(address).replace(address_js_1.ADDRESS_PREFIX_REGEX, '0x');
10
+ }
11
+ function getTronAddress(address) {
12
+ return tronweb_js_1.TronWeb.address.toHex(address);
13
+ }
14
+ const padding = new Uint8Array(32);
15
+ padding.fill(0);
16
+ const BN__1 = BigInt(-1);
17
+ const BN_0 = BigInt(0);
18
+ const BN_1 = BigInt(1);
19
+ const BN_MAX_UINT256 = BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
20
+ function hexPadRight(value) {
21
+ const bytes = (0, ethers_1.getBytes)(value);
22
+ const padOffset = bytes.length % 32;
23
+ if (padOffset) {
24
+ return (0, ethers_1.concat)([bytes, padding.slice(padOffset)]);
25
+ }
26
+ return (0, ethers_1.hexlify)(bytes);
27
+ }
28
+ const hexTrue = (0, ethers_1.toBeHex)(BN_1, 32);
29
+ const hexFalse = (0, ethers_1.toBeHex)(BN_0, 32);
30
+ const domainFieldTypes = {
31
+ name: 'string',
32
+ version: 'string',
33
+ chainId: 'uint256',
34
+ verifyingContract: 'address',
35
+ salt: 'bytes32',
36
+ };
37
+ const domainFieldNames = ['name', 'version', 'chainId', 'verifyingContract', 'salt'];
38
+ function checkString(key) {
39
+ return function (value) {
40
+ (0, ethers_1.assertArgument)(typeof value === 'string', `invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);
41
+ return value;
42
+ };
43
+ }
44
+ const domainChecks = {
45
+ name: checkString('name'),
46
+ version: checkString('version'),
47
+ chainId: function (_value) {
48
+ const value = (0, ethers_1.getBigInt)(_value, 'domain.chainId');
49
+ (0, ethers_1.assertArgument)(value >= 0, 'invalid chain ID', 'domain.chainId', _value);
50
+ if (Number.isSafeInteger(value)) {
51
+ return Number(value);
52
+ }
53
+ return (0, ethers_1.toQuantity)(value);
54
+ },
55
+ verifyingContract: function (value) {
56
+ try {
57
+ return getTronAddress(value).toLowerCase();
58
+ }
59
+ catch (error) {
60
+ //
61
+ }
62
+ (0, ethers_1.assertArgument)(false, `invalid domain value "verifyingContract"`, 'domain.verifyingContract', value);
63
+ },
64
+ salt: function (value) {
65
+ const bytes = (0, ethers_1.getBytes)(value, 'domain.salt');
66
+ (0, ethers_1.assertArgument)(bytes.length === 32, `invalid domain value "salt"`, 'domain.salt', value);
67
+ return (0, ethers_1.hexlify)(bytes);
68
+ },
69
+ };
70
+ function getBaseEncoder(type) {
71
+ // intXX and uintXX
72
+ {
73
+ const match = type.match(/^(u?)int(\d*)$/);
74
+ if (match) {
75
+ const signed = match[1] === '';
76
+ const width = parseInt(match[2] || '256');
77
+ (0, ethers_1.assertArgument)(width % 8 === 0 && width !== 0 && width <= 256 && (match[2] == null || match[2] === String(width)), 'invalid numeric width', 'type', type);
78
+ const boundsUpper = (0, ethers_1.mask)(BN_MAX_UINT256, signed ? width - 1 : width);
79
+ const boundsLower = signed ? (boundsUpper + BN_1) * BN__1 : BN_0;
80
+ return function (_value) {
81
+ const value = (0, ethers_1.getBigInt)(_value, 'value');
82
+ (0, ethers_1.assertArgument)(value >= boundsLower && value <= boundsUpper, `value out-of-bounds for ${type}`, 'value', value);
83
+ return (0, ethers_1.toBeHex)(signed ? (0, ethers_1.toTwos)(value, 256) : value, 32);
84
+ };
85
+ }
86
+ }
87
+ // bytesXX
88
+ {
89
+ const match = type.match(/^bytes(\d+)$/);
90
+ if (match) {
91
+ const width = parseInt(match[1]);
92
+ (0, ethers_1.assertArgument)(width !== 0 && width <= 32 && match[1] === String(width), 'invalid bytes width', 'type', type);
93
+ return function (value) {
94
+ const bytes = (0, ethers_1.getBytes)(value);
95
+ (0, ethers_1.assertArgument)(bytes.length === width, `invalid length for ${type}`, 'value', value);
96
+ return hexPadRight(value);
97
+ };
98
+ }
99
+ }
100
+ switch (type) {
101
+ case 'trcToken':
102
+ return getBaseEncoder('uint256');
103
+ case 'address':
104
+ return function (value) {
105
+ return (0, ethers_1.zeroPadValue)(getAddress(value), 32);
106
+ };
107
+ case 'bool':
108
+ return function (value) {
109
+ return !value ? hexFalse : hexTrue;
110
+ };
111
+ case 'bytes':
112
+ return function (value) {
113
+ return (0, ethers_1.keccak256)(value);
114
+ };
115
+ case 'string':
116
+ return function (value) {
117
+ return (0, ethers_1.id)(value);
118
+ };
119
+ }
120
+ return null;
121
+ }
122
+ function encodeType(name, fields) {
123
+ return `${name}(${fields.map(({ name, type }) => type + ' ' + name).join(',')})`;
124
+ }
125
+ /**
126
+ * A **TypedDataEncode** prepares and encodes [[link-eip-712]] payloads
127
+ * for signed typed data.
128
+ *
129
+ * This is useful for those that wish to compute various components of a
130
+ * typed data hash, primary types, or sub-components, but generally the
131
+ * higher level [[Signer-signTypedData]] is more useful.
132
+ */
133
+ class TypedDataEncoder {
134
+ /**
135
+ * The primary type for the structured [[types]].
136
+ *
137
+ * This is derived automatically from the [[types]], since no
138
+ * recursion is possible, once the DAG for the types is consturcted
139
+ * internally, the primary type must be the only remaining type with
140
+ * no parent nodes.
141
+ */
142
+ primaryType;
143
+ #types;
144
+ /**
145
+ * The types.
146
+ */
147
+ get types() {
148
+ return JSON.parse(this.#types);
149
+ }
150
+ #fullTypes;
151
+ #encoderCache;
152
+ /**
153
+ * Create a new **TypedDataEncoder** for %%types%%.
154
+ *
155
+ * This performs all necessary checking that types are valid and
156
+ * do not violate the [[link-eip-712]] structural constraints as
157
+ * well as computes the [[primaryType]].
158
+ */
159
+ constructor(types) {
160
+ this.#types = JSON.stringify(types);
161
+ this.#fullTypes = new Map();
162
+ this.#encoderCache = new Map();
163
+ // Link struct types to their direct child structs
164
+ const links = new Map();
165
+ // Link structs to structs which contain them as a child
166
+ const parents = new Map();
167
+ // Link all subtypes within a given struct
168
+ const subtypes = new Map();
169
+ Object.keys(types).forEach((type) => {
170
+ links.set(type, new Set());
171
+ parents.set(type, []);
172
+ subtypes.set(type, new Set());
173
+ });
174
+ for (const name in types) {
175
+ const uniqueNames = new Set();
176
+ for (const field of types[name]) {
177
+ // Check each field has a unique name
178
+ (0, ethers_1.assertArgument)(!uniqueNames.has(field.name), `duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, 'types', types);
179
+ uniqueNames.add(field.name);
180
+ // Get the base type (drop any array specifiers)
181
+ const baseType = field.type.match(/^([^\x5b]*)(\x5b|$)/)[1] || null;
182
+ (0, ethers_1.assertArgument)(baseType !== name, `circular type reference to ${JSON.stringify(baseType)}`, 'types', types);
183
+ // Is this a base encoding type?
184
+ const encoder = getBaseEncoder(baseType);
185
+ if (encoder) {
186
+ continue;
187
+ }
188
+ (0, ethers_1.assertArgument)(parents.has(baseType), `unknown type ${JSON.stringify(baseType)}`, 'types', types);
189
+ // Add linkage
190
+ parents.get(baseType).push(name);
191
+ links.get(name).add(baseType);
192
+ }
193
+ }
194
+ // Deduce the primary type
195
+ const primaryTypes = Array.from(parents.keys()).filter((n) => parents.get(n).length === 0);
196
+ (0, ethers_1.assertArgument)(primaryTypes.length !== 0, 'missing primary type', 'types', types);
197
+ (0, ethers_1.assertArgument)(primaryTypes.length === 1, `ambiguous primary types or unused types: ${primaryTypes.map((t) => JSON.stringify(t)).join(', ')}`, 'types', types);
198
+ (0, ethers_1.defineProperties)(this, { primaryType: primaryTypes[0] });
199
+ // Check for circular type references
200
+ function checkCircular(type, found) {
201
+ (0, ethers_1.assertArgument)(!found.has(type), `circular type reference to ${JSON.stringify(type)}`, 'types', types);
202
+ found.add(type);
203
+ for (const child of links.get(type)) {
204
+ if (!parents.has(child)) {
205
+ continue;
206
+ }
207
+ // Recursively check children
208
+ checkCircular(child, found);
209
+ // Mark all ancestors as having this decendant
210
+ for (const subtype of found) {
211
+ subtypes.get(subtype).add(child);
212
+ }
213
+ }
214
+ found.delete(type);
215
+ }
216
+ checkCircular(this.primaryType, new Set());
217
+ // Compute each fully describe type
218
+ for (const [name, set] of subtypes) {
219
+ const st = Array.from(set);
220
+ st.sort();
221
+ this.#fullTypes.set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(''));
222
+ }
223
+ }
224
+ /**
225
+ * Returnthe encoder for the specific %%type%%.
226
+ */
227
+ getEncoder(type) {
228
+ let encoder = this.#encoderCache.get(type);
229
+ if (!encoder) {
230
+ encoder = this.#getEncoder(type);
231
+ this.#encoderCache.set(type, encoder);
232
+ }
233
+ return encoder;
234
+ }
235
+ #getEncoder(type) {
236
+ // Basic encoder type (address, bool, uint256, etc)
237
+ {
238
+ const encoder = getBaseEncoder(type);
239
+ if (encoder) {
240
+ return encoder;
241
+ }
242
+ }
243
+ // Array
244
+ const match = type.match(/^(.*)(\x5b(\d*)\x5d)$/);
245
+ if (match) {
246
+ const subtype = match[1];
247
+ const subEncoder = this.getEncoder(subtype);
248
+ return (value) => {
249
+ (0, ethers_1.assertArgument)(!match[3] || parseInt(match[3]) === value.length, `array length mismatch; expected length ${parseInt(match[3])}`, 'value', value);
250
+ let result = value.map(subEncoder);
251
+ if (this.#fullTypes.has(subtype)) {
252
+ result = result.map(ethers_1.keccak256);
253
+ }
254
+ return (0, ethers_1.keccak256)((0, ethers_1.concat)(result));
255
+ };
256
+ }
257
+ // Struct
258
+ const fields = this.types[type];
259
+ if (fields) {
260
+ const encodedType = (0, ethers_1.id)(this.#fullTypes.get(type));
261
+ return (value) => {
262
+ const values = fields.map(({ name, type }) => {
263
+ const result = this.getEncoder(type)(value[name]);
264
+ if (this.#fullTypes.has(type)) {
265
+ return (0, ethers_1.keccak256)(result);
266
+ }
267
+ return result;
268
+ });
269
+ values.unshift(encodedType);
270
+ return (0, ethers_1.concat)(values);
271
+ };
272
+ }
273
+ (0, ethers_1.assertArgument)(false, `unknown type: ${type}`, 'type', type);
274
+ }
275
+ /**
276
+ * Return the full type for %%name%%.
277
+ */
278
+ encodeType(name) {
279
+ const result = this.#fullTypes.get(name);
280
+ (0, ethers_1.assertArgument)(result, `unknown type: ${JSON.stringify(name)}`, 'name', name);
281
+ return result;
282
+ }
283
+ /**
284
+ * Return the encoded %%value%% for the %%type%%.
285
+ */
286
+ encodeData(type, value) {
287
+ return this.getEncoder(type)(value);
288
+ }
289
+ /**
290
+ * Returns the hash of %%value%% for the type of %%name%%.
291
+ */
292
+ hashStruct(name, value) {
293
+ return (0, ethers_1.keccak256)(this.encodeData(name, value));
294
+ }
295
+ /**
296
+ * Return the fulled encoded %%value%% for the [[types]].
297
+ */
298
+ encode(value) {
299
+ return this.encodeData(this.primaryType, value);
300
+ }
301
+ /**
302
+ * Return the hash of the fully encoded %%value%% for the [[types]].
303
+ */
304
+ hash(value) {
305
+ return this.hashStruct(this.primaryType, value);
306
+ }
307
+ /**
308
+ * @_ignore:
309
+ */
310
+ _visit(type, value, callback) {
311
+ // Basic encoder type (address, bool, uint256, etc)
312
+ {
313
+ const encoder = getBaseEncoder(type);
314
+ if (encoder) {
315
+ return callback(type, value);
316
+ }
317
+ }
318
+ // Array
319
+ const match = type.match(/^(.*)(\x5b(\d*)\x5d)$/);
320
+ if (match) {
321
+ (0, ethers_1.assertArgument)(!match[3] || parseInt(match[3]) === value.length, `array length mismatch; expected length ${parseInt(match[3])}`, 'value', value);
322
+ return value.map((v) => this._visit(match[1], v, callback));
323
+ }
324
+ // Struct
325
+ const fields = this.types[type];
326
+ if (fields) {
327
+ return fields.reduce((accum, { name, type }) => {
328
+ accum[name] = this._visit(type, value[name], callback);
329
+ return accum;
330
+ }, {});
331
+ }
332
+ (0, ethers_1.assertArgument)(false, `unknown type: ${type}`, 'type', type);
333
+ }
334
+ /**
335
+ * Call %%calback%% for each value in %%value%%, passing the type and
336
+ * component within %%value%%.
337
+ *
338
+ * This is useful for replacing addresses or other transformation that
339
+ * may be desired on each component, based on its type.
340
+ */
341
+ visit(value, callback) {
342
+ return this._visit(this.primaryType, value, callback);
343
+ }
344
+ /**
345
+ * Create a new **TypedDataEncoder** for %%types%%.
346
+ */
347
+ static from(types) {
348
+ return new TypedDataEncoder(types);
349
+ }
350
+ /**
351
+ * Return the primary type for %%types%%.
352
+ */
353
+ static getPrimaryType(types) {
354
+ return TypedDataEncoder.from(types).primaryType;
355
+ }
356
+ /**
357
+ * Return the hashed struct for %%value%% using %%types%% and %%name%%.
358
+ */
359
+ static hashStruct(name, types, value) {
360
+ return TypedDataEncoder.from(types).hashStruct(name, value);
361
+ }
362
+ /**
363
+ * Return the domain hash for %%domain%%.
364
+ */
365
+ static hashDomain(domain) {
366
+ const domainFields = [];
367
+ for (const name in domain) {
368
+ if (domain[name] == null) {
369
+ continue;
370
+ }
371
+ const type = domainFieldTypes[name];
372
+ (0, ethers_1.assertArgument)(type, `invalid typed-data domain key: ${JSON.stringify(name)}`, 'domain', domain);
373
+ domainFields.push({ name, type });
374
+ }
375
+ domainFields.sort((a, b) => {
376
+ return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);
377
+ });
378
+ return TypedDataEncoder.hashStruct('EIP712Domain', { EIP712Domain: domainFields }, domain);
379
+ }
380
+ /**
381
+ * Return the fully encoded [[link-eip-712]] %%value%% for %%types%% with %%domain%%.
382
+ */
383
+ static encode(domain, types, value) {
384
+ return (0, ethers_1.concat)(['0x1901', TypedDataEncoder.hashDomain(domain), TypedDataEncoder.from(types).hash(value)]);
385
+ }
386
+ /**
387
+ * Return the hash of the fully encoded [[link-eip-712]] %%value%% for %%types%% with %%domain%%.
388
+ */
389
+ static hash(domain, types, value) {
390
+ return (0, ethers_1.keccak256)(TypedDataEncoder.encode(domain, types, value));
391
+ }
392
+ // Replaces all address types with ENS names with their looked up address
393
+ /**
394
+ * Resolves to the value from resolving all addresses in %%value%% for
395
+ * %%types%% and the %%domain%%.
396
+ */
397
+ static async resolveNames(domain, types, value, resolveName) {
398
+ // Make a copy to isolate it from the object passed in
399
+ domain = Object.assign({}, domain);
400
+ // Allow passing null to ignore value
401
+ for (const key in domain) {
402
+ if (domain[key] == null) {
403
+ delete domain[key];
404
+ }
405
+ }
406
+ // Look up all ENS names
407
+ const ensCache = {};
408
+ // Do we need to look up the domain's verifyingContract?
409
+ if (domain.verifyingContract && !(0, ethers_1.isHexString)(domain.verifyingContract, 20)) {
410
+ ensCache[domain.verifyingContract] = '0x';
411
+ }
412
+ // We are going to use the encoder to visit all the base values
413
+ const encoder = TypedDataEncoder.from(types);
414
+ // Get a list of all the addresses
415
+ encoder.visit(value, (type, value) => {
416
+ if (type === 'address' && !(0, ethers_1.isHexString)(value, 20)) {
417
+ ensCache[value] = '0x';
418
+ }
419
+ return value;
420
+ });
421
+ // Lookup each name
422
+ for (const name in ensCache) {
423
+ ensCache[name] = await resolveName(name);
424
+ }
425
+ // Replace the domain verifyingContract if needed
426
+ if (domain.verifyingContract && ensCache[domain.verifyingContract]) {
427
+ domain.verifyingContract = ensCache[domain.verifyingContract];
428
+ }
429
+ // Replace all ENS names with their address
430
+ value = encoder.visit(value, (type, value) => {
431
+ if (type === 'address' && ensCache[value]) {
432
+ return ensCache[value];
433
+ }
434
+ return value;
435
+ });
436
+ return { domain, value };
437
+ }
438
+ /**
439
+ * Returns the JSON-encoded payload expected by nodes which implement
440
+ * the JSON-RPC [[link-eip-712]] method.
441
+ */
442
+ static getPayload(domain, types, value) {
443
+ // Validate the domain fields
444
+ TypedDataEncoder.hashDomain(domain);
445
+ // Derive the EIP712Domain Struct reference type
446
+ const domainValues = {};
447
+ const domainTypes = [];
448
+ domainFieldNames.forEach((name) => {
449
+ const value = domain[name];
450
+ if (value == null) {
451
+ return;
452
+ }
453
+ domainValues[name] = domainChecks[name](value);
454
+ domainTypes.push({ name, type: domainFieldTypes[name] });
455
+ });
456
+ const encoder = TypedDataEncoder.from(types);
457
+ const typesWithDomain = Object.assign({}, types);
458
+ (0, ethers_1.assertArgument)(typesWithDomain.EIP712Domain == null, 'types must not contain EIP712Domain type', 'types.EIP712Domain', types);
459
+ typesWithDomain.EIP712Domain = domainTypes;
460
+ // Validate the data structures and types
461
+ encoder.encode(value);
462
+ return {
463
+ types: typesWithDomain,
464
+ domain: domainValues,
465
+ primaryType: encoder.primaryType,
466
+ message: encoder.visit(value, (type, value) => {
467
+ // bytes
468
+ if (type.match(/^bytes(\d*)/)) {
469
+ return (0, ethers_1.hexlify)((0, ethers_1.getBytes)(value));
470
+ }
471
+ // uint or int
472
+ if (type.match(/^u?int/)) {
473
+ return (0, ethers_1.getBigInt)(value).toString();
474
+ }
475
+ switch (type) {
476
+ case 'trcToken':
477
+ return (0, ethers_1.getBigInt)(value).toString();
478
+ case 'address':
479
+ return value.toLowerCase();
480
+ case 'bool':
481
+ return !!value;
482
+ case 'string':
483
+ (0, ethers_1.assertArgument)(typeof value === 'string', 'invalid string', 'value', value);
484
+ return value;
485
+ }
486
+ (0, ethers_1.assertArgument)(false, 'unsupported type', 'type', type);
487
+ }),
488
+ };
489
+ }
490
+ }
491
+ exports.TypedDataEncoder = TypedDataEncoder;
492
+ /**
493
+ * Compute the address used to sign the typed data for the %%signature%%.
494
+ */
495
+ function verifyTypedData(domain, types, value, signature) {
496
+ return (0, ethers_1.recoverAddress)(TypedDataEncoder.hash(domain, types, value), signature);
497
+ }
498
+ //# sourceMappingURL=typedData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedData.js","sourceRoot":"","sources":["../../../src/utils/typedData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { AbiParamsCommon } from '../types/ABI.js';
2
+ import { IBigNumber } from '../types/TronWeb.js';
3
+ import type { EventQueryDataType, MapEventQueryDataType } from '../types/UtilsTypes.js';
4
+ export declare function isValidURL(url: string): boolean;
5
+ export declare function isObject(obj: unknown): obj is Record<number | string | symbol, unknown>;
6
+ export declare function isArray(array: unknown): array is unknown[];
7
+ export declare function isJson(string: string): boolean;
8
+ export declare function isBoolean(bool: unknown): bool is boolean;
9
+ export declare function isBigNumber(number: unknown): number is IBigNumber;
10
+ export declare function isString(string: unknown): string is string;
11
+ export declare function isFunction(obj: unknown): obj is (...args: unknown[]) => unknown;
12
+ export declare function isHex(string: string): string is string;
13
+ export declare function isInteger(number: unknown): number is number;
14
+ export declare function hasProperty(obj: object, property: string | number | symbol): boolean;
15
+ export declare function hasProperties(obj: object, ...properties: (string | number | symbol)[]): boolean | 0;
16
+ export declare function mapEvent(event: EventQueryDataType): MapEventQueryDataType;
17
+ export declare function parseEvent(event: EventQueryDataType, { inputs: abi }: {
18
+ inputs: ReadonlyArray<AbiParamsCommon>;
19
+ }): EventQueryDataType;
20
+ export declare function padLeft(input: string | number, padding: string, amount: number): string;
21
+ export declare function isNotNullOrUndefined(val: unknown): boolean;
22
+ export declare function sleep(millis?: number): Promise<any>;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidURL = isValidURL;
4
+ exports.isObject = isObject;
5
+ exports.isArray = isArray;
6
+ exports.isJson = isJson;
7
+ exports.isBoolean = isBoolean;
8
+ exports.isBigNumber = isBigNumber;
9
+ exports.isString = isString;
10
+ exports.isFunction = isFunction;
11
+ exports.isHex = isHex;
12
+ exports.isInteger = isInteger;
13
+ exports.hasProperty = hasProperty;
14
+ exports.hasProperties = hasProperties;
15
+ exports.mapEvent = mapEvent;
16
+ exports.parseEvent = parseEvent;
17
+ exports.padLeft = padLeft;
18
+ exports.isNotNullOrUndefined = isNotNullOrUndefined;
19
+ exports.sleep = sleep;
20
+ const tslib_1 = require("tslib");
21
+ const bignumber_js_1 = require("bignumber.js");
22
+ const validator_1 = tslib_1.__importDefault(require("validator"));
23
+ const address_js_1 = require("./address.js");
24
+ function isValidURL(url) {
25
+ if (typeof url !== 'string')
26
+ return false;
27
+ return validator_1.default.isURL(url.toString(), {
28
+ protocols: ['http', 'https'],
29
+ require_tld: false,
30
+ });
31
+ }
32
+ function isObject(obj) {
33
+ return obj === Object(obj) && Object.prototype.toString.call(obj) !== '[object Array]';
34
+ }
35
+ function isArray(array) {
36
+ return Array.isArray(array);
37
+ }
38
+ function isJson(string) {
39
+ try {
40
+ return !!JSON.parse(string);
41
+ }
42
+ catch (ex) {
43
+ return false;
44
+ }
45
+ }
46
+ function isBoolean(bool) {
47
+ return typeof bool === 'boolean';
48
+ }
49
+ function isBigNumber(number) {
50
+ return !!number && (number instanceof bignumber_js_1.BigNumber || (number.constructor && number.constructor.name === 'BigNumber'));
51
+ }
52
+ function isString(string) {
53
+ return typeof string === 'string' || (!!string && string.constructor && string.constructor.name === 'String');
54
+ }
55
+ function isFunction(obj) {
56
+ return typeof obj === 'function';
57
+ }
58
+ function isHex(string) {
59
+ return typeof string === 'string' && !isNaN(parseInt(string, 16)) && /^(0x|)[a-fA-F0-9]+$/.test(string);
60
+ }
61
+ function isInteger(number) {
62
+ if (number === null)
63
+ return false;
64
+ return Number.isInteger(Number(number));
65
+ }
66
+ function hasProperty(obj, property) {
67
+ return Object.prototype.hasOwnProperty.call(obj, property);
68
+ }
69
+ function hasProperties(obj, ...properties) {
70
+ return (properties.length &&
71
+ !properties
72
+ .map((property) => {
73
+ return hasProperty(obj, property);
74
+ })
75
+ .includes(false));
76
+ }
77
+ function mapEvent(event) {
78
+ const data = {
79
+ block: event.block_number,
80
+ timestamp: event.block_timestamp,
81
+ contract: event.contract_address,
82
+ name: event.event_name,
83
+ transaction: event.transaction_id,
84
+ result: event.result,
85
+ resourceNode: event.resource_Node || (event._unconfirmed ? 'fullNode' : 'solidityNode'),
86
+ };
87
+ if (event._unconfirmed) {
88
+ data.unconfirmed = event._unconfirmed;
89
+ }
90
+ if (event._fingerprint) {
91
+ data.fingerprint = event._fingerprint;
92
+ }
93
+ return data;
94
+ }
95
+ function parseEvent(event, { inputs: abi }) {
96
+ if (!event.result)
97
+ return event;
98
+ if (isObject(event.result)) {
99
+ for (let i = 0; i < abi.length; i++) {
100
+ const obj = abi[i];
101
+ if (obj.type == 'address' && obj.name in event.result)
102
+ event.result[obj.name] = address_js_1.ADDRESS_PREFIX + event.result[obj.name].substr(2).toLowerCase();
103
+ }
104
+ }
105
+ else if (isArray(event.result)) {
106
+ event.result = event.result.reduce((obj, result, index) => {
107
+ const { name, type } = abi[index];
108
+ if (type == 'address')
109
+ result = address_js_1.ADDRESS_PREFIX + result.substr(2).toLowerCase();
110
+ obj[name] = result;
111
+ return obj;
112
+ }, {});
113
+ }
114
+ return event;
115
+ }
116
+ function padLeft(input, padding, amount) {
117
+ let res = input.toString();
118
+ while (res.length < amount)
119
+ res = padding + res;
120
+ return res;
121
+ }
122
+ function isNotNullOrUndefined(val) {
123
+ return val !== null && typeof val !== 'undefined';
124
+ }
125
+ async function sleep(millis = 1000) {
126
+ return new Promise((resolve) => setTimeout(resolve, millis));
127
+ }
128
+ //# sourceMappingURL=validations.js.map