ox 0.0.1 → 0.1.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 (756) hide show
  1. package/Abi/package.json +6 -0
  2. package/Abi.ts +163 -0
  3. package/AbiConstructor/package.json +6 -0
  4. package/AbiConstructor.ts +413 -0
  5. package/AbiError/package.json +6 -0
  6. package/AbiError.ts +719 -0
  7. package/AbiEvent/package.json +6 -0
  8. package/AbiEvent.ts +1284 -0
  9. package/AbiFunction/package.json +6 -0
  10. package/AbiFunction.ts +813 -0
  11. package/AbiItem/package.json +6 -0
  12. package/AbiItem.ts +779 -0
  13. package/AbiParameters/package.json +6 -0
  14. package/AbiParameters.ts +712 -0
  15. package/AccessList/package.json +6 -0
  16. package/AccessList.ts +124 -0
  17. package/AccountProof/package.json +6 -0
  18. package/AccountProof.ts +35 -0
  19. package/Address/package.json +6 -0
  20. package/Address.ts +359 -0
  21. package/AesGcm/package.json +6 -0
  22. package/AesGcm.ts +220 -0
  23. package/Authorization/package.json +6 -0
  24. package/Authorization.ts +639 -0
  25. package/Base58/package.json +6 -0
  26. package/Base58.ts +180 -0
  27. package/Base64/package.json +6 -0
  28. package/Base64.ts +333 -0
  29. package/Blobs/package.json +6 -0
  30. package/Blobs.ts +982 -0
  31. package/Block/package.json +6 -0
  32. package/Block.ts +317 -0
  33. package/Bloom/package.json +6 -0
  34. package/Bloom.ts +80 -0
  35. package/Bls/package.json +6 -0
  36. package/Bls.ts +496 -0
  37. package/BlsPoint/package.json +6 -0
  38. package/BlsPoint.ts +232 -0
  39. package/Bytes/package.json +6 -0
  40. package/Bytes.ts +963 -0
  41. package/CHANGELOG.md +7 -0
  42. package/Caches/package.json +6 -0
  43. package/Caches.ts +21 -0
  44. package/ContractAddress/package.json +6 -0
  45. package/ContractAddress.ts +181 -0
  46. package/Ens/package.json +6 -0
  47. package/Ens.ts +116 -0
  48. package/Errors/package.json +6 -0
  49. package/Errors.ts +95 -0
  50. package/Fee/package.json +6 -0
  51. package/Fee.ts +57 -0
  52. package/Filter/package.json +6 -0
  53. package/Filter.ts +144 -0
  54. package/Hash/package.json +6 -0
  55. package/Hash.ts +210 -0
  56. package/HdKey/package.json +6 -0
  57. package/HdKey.ts +175 -0
  58. package/Hex/package.json +6 -0
  59. package/Hex.ts +1040 -0
  60. package/Json/package.json +6 -0
  61. package/Json.ts +84 -0
  62. package/Kzg/package.json +6 -0
  63. package/Kzg.ts +51 -0
  64. package/LICENSE +21 -0
  65. package/Log/package.json +6 -0
  66. package/Log.ts +248 -0
  67. package/Mnemonic/package.json +6 -0
  68. package/Mnemonic.ts +249 -0
  69. package/P256/package.json +6 -0
  70. package/P256.ts +230 -0
  71. package/PersonalMessage/package.json +6 -0
  72. package/PersonalMessage.ts +70 -0
  73. package/Provider/package.json +6 -0
  74. package/Provider.ts +354 -0
  75. package/PublicKey/package.json +6 -0
  76. package/PublicKey.ts +545 -0
  77. package/README.md +75 -26
  78. package/Rlp/package.json +6 -0
  79. package/Rlp.ts +390 -0
  80. package/RpcRequest/package.json +6 -0
  81. package/RpcRequest.ts +192 -0
  82. package/RpcResponse/package.json +6 -0
  83. package/RpcResponse.ts +389 -0
  84. package/RpcSchema/package.json +6 -0
  85. package/RpcSchema.ts +273 -0
  86. package/RpcTransport/package.json +6 -0
  87. package/RpcTransport.ts +198 -0
  88. package/Secp256k1/package.json +6 -0
  89. package/Secp256k1.ts +304 -0
  90. package/Signature/package.json +6 -0
  91. package/Signature.ts +909 -0
  92. package/Siwe/package.json +6 -0
  93. package/Siwe.ts +516 -0
  94. package/Solidity/package.json +6 -0
  95. package/Solidity.ts +109 -0
  96. package/Transaction/package.json +6 -0
  97. package/Transaction.ts +429 -0
  98. package/TransactionEnvelope/package.json +6 -0
  99. package/TransactionEnvelope.ts +205 -0
  100. package/TransactionEnvelopeEip1559/package.json +6 -0
  101. package/TransactionEnvelopeEip1559.ts +656 -0
  102. package/TransactionEnvelopeEip2930/package.json +6 -0
  103. package/TransactionEnvelopeEip2930.ts +624 -0
  104. package/TransactionEnvelopeEip4844/package.json +6 -0
  105. package/TransactionEnvelopeEip4844.ts +764 -0
  106. package/TransactionEnvelopeEip7702/package.json +6 -0
  107. package/TransactionEnvelopeEip7702.ts +639 -0
  108. package/TransactionEnvelopeLegacy/package.json +6 -0
  109. package/TransactionEnvelopeLegacy.ts +674 -0
  110. package/TransactionReceipt/package.json +6 -0
  111. package/TransactionReceipt.ts +341 -0
  112. package/TransactionRequest/package.json +6 -0
  113. package/TransactionRequest.ts +151 -0
  114. package/TypedData/package.json +6 -0
  115. package/TypedData.ts +931 -0
  116. package/ValidatorData/package.json +6 -0
  117. package/ValidatorData.ts +87 -0
  118. package/Value/package.json +6 -0
  119. package/Value.ts +242 -0
  120. package/WebAuthnP256/package.json +6 -0
  121. package/WebAuthnP256.ts +803 -0
  122. package/WebCryptoP256/package.json +6 -0
  123. package/WebCryptoP256.ts +190 -0
  124. package/Withdrawal/package.json +6 -0
  125. package/Withdrawal.ts +95 -0
  126. package/_cjs/Abi.js +17 -0
  127. package/_cjs/Abi.js.map +1 -0
  128. package/_cjs/AbiConstructor.js +42 -0
  129. package/_cjs/AbiConstructor.js.map +1 -0
  130. package/_cjs/AbiError.js +98 -0
  131. package/_cjs/AbiError.js.map +1 -0
  132. package/_cjs/AbiEvent.js +338 -0
  133. package/_cjs/AbiEvent.js.map +1 -0
  134. package/_cjs/AbiFunction.js +85 -0
  135. package/_cjs/AbiFunction.js.map +1 -0
  136. package/_cjs/AbiItem.js +180 -0
  137. package/_cjs/AbiItem.js.map +1 -0
  138. package/_cjs/AbiParameters.js +229 -0
  139. package/_cjs/AbiParameters.js.map +1 -0
  140. package/_cjs/AccessList.js +51 -0
  141. package/_cjs/AccessList.js.map +1 -0
  142. package/_cjs/AccountProof.js +3 -0
  143. package/_cjs/AccountProof.js.map +1 -0
  144. package/_cjs/Address.js +121 -0
  145. package/_cjs/Address.js.map +1 -0
  146. package/_cjs/AesGcm.js +55 -0
  147. package/_cjs/AesGcm.js.map +1 -0
  148. package/_cjs/Authorization.js +99 -0
  149. package/_cjs/Authorization.js.map +1 -0
  150. package/_cjs/Base58.js +52 -0
  151. package/_cjs/Base58.js.map +1 -0
  152. package/_cjs/Base64.js +76 -0
  153. package/_cjs/Base64.js.map +1 -0
  154. package/_cjs/Blobs.js +255 -0
  155. package/_cjs/Blobs.js.map +1 -0
  156. package/_cjs/Block.js +87 -0
  157. package/_cjs/Block.js.map +1 -0
  158. package/_cjs/Bloom.js +23 -0
  159. package/_cjs/Bloom.js.map +1 -0
  160. package/_cjs/Bls.js +79 -0
  161. package/_cjs/Bls.js.map +1 -0
  162. package/_cjs/BlsPoint.js +32 -0
  163. package/_cjs/BlsPoint.js.map +1 -0
  164. package/_cjs/Bytes.js +279 -0
  165. package/_cjs/Bytes.js.map +1 -0
  166. package/_cjs/Caches.js +14 -0
  167. package/_cjs/Caches.js.map +1 -0
  168. package/_cjs/ContractAddress.js +39 -0
  169. package/_cjs/ContractAddress.js.map +1 -0
  170. package/_cjs/Ens.js +37 -0
  171. package/_cjs/Ens.js.map +1 -0
  172. package/_cjs/Errors.js +99 -0
  173. package/_cjs/Errors.js.map +1 -0
  174. package/_cjs/Fee.js +3 -0
  175. package/_cjs/Fee.js.map +1 -0
  176. package/_cjs/Filter.js +43 -0
  177. package/_cjs/Filter.js.map +1 -0
  178. package/_cjs/Hash.js +40 -0
  179. package/_cjs/Hash.js.map +1 -0
  180. package/_cjs/HdKey.js +30 -0
  181. package/_cjs/HdKey.js.map +1 -0
  182. package/_cjs/Hex.js +324 -0
  183. package/_cjs/Hex.js.map +1 -0
  184. package/_cjs/Json.js +25 -0
  185. package/_cjs/Json.js.map +1 -0
  186. package/_cjs/Kzg.js +14 -0
  187. package/_cjs/Kzg.js.map +1 -0
  188. package/_cjs/Log.js +35 -0
  189. package/_cjs/Log.js.map +1 -0
  190. package/_cjs/Mnemonic.js +56 -0
  191. package/_cjs/Mnemonic.js.map +1 -0
  192. package/_cjs/P256.js +52 -0
  193. package/_cjs/P256.js.map +1 -0
  194. package/_cjs/PersonalMessage.js +16 -0
  195. package/_cjs/PersonalMessage.js.map +1 -0
  196. package/_cjs/Provider.js +90 -0
  197. package/_cjs/Provider.js.map +1 -0
  198. package/_cjs/PublicKey.js +192 -0
  199. package/_cjs/PublicKey.js.map +1 -0
  200. package/_cjs/Rlp.js +179 -0
  201. package/_cjs/Rlp.js.map +1 -0
  202. package/_cjs/RpcRequest.js +27 -0
  203. package/_cjs/RpcRequest.js.map +1 -0
  204. package/_cjs/RpcResponse.js +368 -0
  205. package/_cjs/RpcResponse.js.map +1 -0
  206. package/_cjs/RpcSchema.js +7 -0
  207. package/_cjs/RpcSchema.js.map +1 -0
  208. package/_cjs/RpcTransport.js +95 -0
  209. package/_cjs/RpcTransport.js.map +1 -0
  210. package/_cjs/Secp256k1.js +57 -0
  211. package/_cjs/Secp256k1.js.map +1 -0
  212. package/_cjs/Signature.js +305 -0
  213. package/_cjs/Signature.js.map +1 -0
  214. package/_cjs/Siwe.js +231 -0
  215. package/_cjs/Siwe.js.map +1 -0
  216. package/_cjs/Solidity.js +104 -0
  217. package/_cjs/Solidity.js.map +1 -0
  218. package/_cjs/Transaction.js +106 -0
  219. package/_cjs/Transaction.js.map +1 -0
  220. package/_cjs/TransactionEnvelope.js +80 -0
  221. package/_cjs/TransactionEnvelope.js.map +1 -0
  222. package/_cjs/TransactionEnvelopeEip1559.js +182 -0
  223. package/_cjs/TransactionEnvelopeEip1559.js.map +1 -0
  224. package/_cjs/TransactionEnvelopeEip2930.js +166 -0
  225. package/_cjs/TransactionEnvelopeEip2930.js.map +1 -0
  226. package/_cjs/TransactionEnvelopeEip4844.js +224 -0
  227. package/_cjs/TransactionEnvelopeEip4844.js.map +1 -0
  228. package/_cjs/TransactionEnvelopeEip7702.js +156 -0
  229. package/_cjs/TransactionEnvelopeEip7702.js.map +1 -0
  230. package/_cjs/TransactionEnvelopeLegacy.js +221 -0
  231. package/_cjs/TransactionEnvelopeLegacy.js.map +1 -0
  232. package/_cjs/TransactionReceipt.js +76 -0
  233. package/_cjs/TransactionReceipt.js.map +1 -0
  234. package/_cjs/TransactionRequest.js +51 -0
  235. package/_cjs/TransactionRequest.js.map +1 -0
  236. package/_cjs/TypedData.js +318 -0
  237. package/_cjs/TypedData.js.map +1 -0
  238. package/_cjs/ValidatorData.js +16 -0
  239. package/_cjs/ValidatorData.js.map +1 -0
  240. package/_cjs/Value.js +96 -0
  241. package/_cjs/Value.js.map +1 -0
  242. package/_cjs/WebAuthnP256.js +245 -0
  243. package/_cjs/WebAuthnP256.js.map +1 -0
  244. package/_cjs/WebCryptoP256.js +46 -0
  245. package/_cjs/WebCryptoP256.js.map +1 -0
  246. package/_cjs/Withdrawal.js +24 -0
  247. package/_cjs/Withdrawal.js.map +1 -0
  248. package/_cjs/index.js +66 -0
  249. package/_cjs/index.js.map +1 -0
  250. package/_cjs/internal/abi.js +11 -0
  251. package/_cjs/internal/abi.js.map +1 -0
  252. package/_cjs/internal/abiConstructor.js +3 -0
  253. package/_cjs/internal/abiConstructor.js.map +1 -0
  254. package/_cjs/internal/abiError.js +3 -0
  255. package/_cjs/internal/abiError.js.map +1 -0
  256. package/_cjs/internal/abiEvent.js +3 -0
  257. package/_cjs/internal/abiEvent.js.map +1 -0
  258. package/_cjs/internal/abiFunction.js +3 -0
  259. package/_cjs/internal/abiFunction.js.map +1 -0
  260. package/_cjs/internal/abiItem.js +110 -0
  261. package/_cjs/internal/abiItem.js.map +1 -0
  262. package/_cjs/internal/abiParameters.js +376 -0
  263. package/_cjs/internal/abiParameters.js.map +1 -0
  264. package/_cjs/internal/base58.js +89 -0
  265. package/_cjs/internal/base58.js.map +1 -0
  266. package/_cjs/internal/bytes.js +88 -0
  267. package/_cjs/internal/bytes.js.map +1 -0
  268. package/_cjs/internal/cursor.js +210 -0
  269. package/_cjs/internal/cursor.js.map +1 -0
  270. package/_cjs/internal/ens.js +43 -0
  271. package/_cjs/internal/ens.js.map +1 -0
  272. package/_cjs/internal/errors.js +28 -0
  273. package/_cjs/internal/errors.js.map +1 -0
  274. package/_cjs/internal/hdKey.js +19 -0
  275. package/_cjs/internal/hdKey.js.map +1 -0
  276. package/_cjs/internal/hex.js +66 -0
  277. package/_cjs/internal/hex.js.map +1 -0
  278. package/_cjs/internal/lru.js +34 -0
  279. package/_cjs/internal/lru.js.map +1 -0
  280. package/_cjs/internal/mnemonic/wordlists.js +24 -0
  281. package/_cjs/internal/mnemonic/wordlists.js.map +1 -0
  282. package/_cjs/internal/promise.js +49 -0
  283. package/_cjs/internal/promise.js.map +1 -0
  284. package/_cjs/internal/register.js +3 -0
  285. package/_cjs/internal/register.js.map +1 -0
  286. package/_cjs/internal/rpcSchema.js +3 -0
  287. package/_cjs/internal/rpcSchema.js.map +1 -0
  288. package/_cjs/internal/rpcSchemas/eth.js +3 -0
  289. package/_cjs/internal/rpcSchemas/eth.js.map +1 -0
  290. package/_cjs/internal/rpcSchemas/wallet.js +3 -0
  291. package/_cjs/internal/rpcSchemas/wallet.js.map +1 -0
  292. package/_cjs/internal/rpcTransport.js +19 -0
  293. package/_cjs/internal/rpcTransport.js.map +1 -0
  294. package/_cjs/internal/types.js +3 -0
  295. package/_cjs/internal/types.js.map +1 -0
  296. package/_cjs/internal/uid.js +17 -0
  297. package/_cjs/internal/uid.js.map +1 -0
  298. package/_cjs/internal/webauthn.js +28 -0
  299. package/_cjs/internal/webauthn.js.map +1 -0
  300. package/_cjs/package.json +1 -0
  301. package/_cjs/trusted-setups/Paths.js +6 -0
  302. package/_cjs/trusted-setups/Paths.js.map +1 -0
  303. package/_cjs/trusted-setups/index.js +5 -0
  304. package/_cjs/trusted-setups/index.js.map +1 -0
  305. package/_cjs/trusted-setups/internal/paths.js +11 -0
  306. package/_cjs/trusted-setups/internal/paths.js.map +1 -0
  307. package/_cjs/version.js +5 -0
  308. package/_cjs/version.js.map +1 -0
  309. package/_cjs/window/index.js +3 -0
  310. package/_cjs/window/index.js.map +1 -0
  311. package/_esm/Abi.js +19 -0
  312. package/_esm/Abi.js.map +1 -0
  313. package/_esm/AbiConstructor.js +102 -0
  314. package/_esm/AbiConstructor.js.map +1 -0
  315. package/_esm/AbiError.js +364 -0
  316. package/_esm/AbiError.js.map +1 -0
  317. package/_esm/AbiEvent.js +1038 -0
  318. package/_esm/AbiEvent.js.map +1 -0
  319. package/_esm/AbiFunction.js +549 -0
  320. package/_esm/AbiFunction.js.map +1 -0
  321. package/_esm/AbiItem.js +574 -0
  322. package/_esm/AbiItem.js.map +1 -0
  323. package/_esm/AbiParameters.js +543 -0
  324. package/_esm/AbiParameters.js.map +1 -0
  325. package/_esm/AccessList.js +105 -0
  326. package/_esm/AccessList.js.map +1 -0
  327. package/_esm/AccountProof.js +2 -0
  328. package/_esm/AccountProof.js.map +1 -0
  329. package/_esm/Address.js +268 -0
  330. package/_esm/Address.js.map +1 -0
  331. package/_esm/AesGcm.js +124 -0
  332. package/_esm/AesGcm.js.map +1 -0
  333. package/_esm/Authorization.js +441 -0
  334. package/_esm/Authorization.js.map +1 -0
  335. package/_esm/Base58.js +142 -0
  336. package/_esm/Base58.js.map +1 -0
  337. package/_esm/Base64.js +236 -0
  338. package/_esm/Base64.js.map +1 -0
  339. package/_esm/Blobs.js +624 -0
  340. package/_esm/Blobs.js.map +1 -0
  341. package/_esm/Block.js +177 -0
  342. package/_esm/Block.js.map +1 -0
  343. package/_esm/Bloom.js +57 -0
  344. package/_esm/Bloom.js.map +1 -0
  345. package/_esm/Bls.js +141 -0
  346. package/_esm/Bls.js.map +1 -0
  347. package/_esm/BlsPoint.js +59 -0
  348. package/_esm/BlsPoint.js.map +1 -0
  349. package/_esm/Bytes.js +719 -0
  350. package/_esm/Bytes.js.map +1 -0
  351. package/_esm/Caches.js +19 -0
  352. package/_esm/Caches.js.map +1 -0
  353. package/_esm/ContractAddress.js +110 -0
  354. package/_esm/ContractAddress.js.map +1 -0
  355. package/_esm/Ens.js +84 -0
  356. package/_esm/Ens.js.map +1 -0
  357. package/_esm/Errors.js +105 -0
  358. package/_esm/Errors.js.map +1 -0
  359. package/_esm/Fee.js +2 -0
  360. package/_esm/Fee.js.map +1 -0
  361. package/_esm/Filter.js +100 -0
  362. package/_esm/Filter.js.map +1 -0
  363. package/_esm/Hash.js +126 -0
  364. package/_esm/Hash.js.map +1 -0
  365. package/_esm/HdKey.js +107 -0
  366. package/_esm/HdKey.js.map +1 -0
  367. package/_esm/Hex.js +763 -0
  368. package/_esm/Hex.js.map +1 -0
  369. package/_esm/Json.js +62 -0
  370. package/_esm/Json.js.map +1 -0
  371. package/_esm/Kzg.js +30 -0
  372. package/_esm/Kzg.js.map +1 -0
  373. package/_esm/Log.js +181 -0
  374. package/_esm/Log.js.map +1 -0
  375. package/_esm/Mnemonic.js +154 -0
  376. package/_esm/Mnemonic.js.map +1 -0
  377. package/_esm/P256.js +131 -0
  378. package/_esm/P256.js.map +1 -0
  379. package/_esm/PersonalMessage.js +46 -0
  380. package/_esm/PersonalMessage.js.map +1 -0
  381. package/_esm/Provider.js +122 -0
  382. package/_esm/Provider.js.map +1 -0
  383. package/_esm/PublicKey.js +395 -0
  384. package/_esm/PublicKey.js.map +1 -0
  385. package/_esm/Rlp.js +267 -0
  386. package/_esm/Rlp.js.map +1 -0
  387. package/_esm/RpcRequest.js +131 -0
  388. package/_esm/RpcRequest.js.map +1 -0
  389. package/_esm/RpcResponse.js +457 -0
  390. package/_esm/RpcResponse.js.map +1 -0
  391. package/_esm/RpcSchema.js +46 -0
  392. package/_esm/RpcSchema.js.map +1 -0
  393. package/_esm/RpcTransport.js +110 -0
  394. package/_esm/RpcTransport.js.map +1 -0
  395. package/_esm/Secp256k1.js +173 -0
  396. package/_esm/Secp256k1.js.map +1 -0
  397. package/_esm/Signature.js +696 -0
  398. package/_esm/Signature.js.map +1 -0
  399. package/_esm/Siwe.js +374 -0
  400. package/_esm/Siwe.js.map +1 -0
  401. package/_esm/Solidity.js +104 -0
  402. package/_esm/Solidity.js.map +1 -0
  403. package/_esm/Transaction.js +176 -0
  404. package/_esm/Transaction.js.map +1 -0
  405. package/_esm/TransactionEnvelope.js +139 -0
  406. package/_esm/TransactionEnvelope.js.map +1 -0
  407. package/_esm/TransactionEnvelopeEip1559.js +455 -0
  408. package/_esm/TransactionEnvelopeEip1559.js.map +1 -0
  409. package/_esm/TransactionEnvelopeEip2930.js +439 -0
  410. package/_esm/TransactionEnvelopeEip2930.js.map +1 -0
  411. package/_esm/TransactionEnvelopeEip4844.js +542 -0
  412. package/_esm/TransactionEnvelopeEip4844.js.map +1 -0
  413. package/_esm/TransactionEnvelopeEip7702.js +442 -0
  414. package/_esm/TransactionEnvelopeEip7702.js.map +1 -0
  415. package/_esm/TransactionEnvelopeLegacy.js +495 -0
  416. package/_esm/TransactionEnvelopeLegacy.js.map +1 -0
  417. package/_esm/TransactionReceipt.js +229 -0
  418. package/_esm/TransactionReceipt.js.map +1 -0
  419. package/_esm/TransactionRequest.js +89 -0
  420. package/_esm/TransactionRequest.js.map +1 -0
  421. package/_esm/TypedData.js +635 -0
  422. package/_esm/TypedData.js.map +1 -0
  423. package/_esm/ValidatorData.js +52 -0
  424. package/_esm/ValidatorData.js.map +1 -0
  425. package/_esm/Value.js +196 -0
  426. package/_esm/Value.js.map +1 -0
  427. package/_esm/WebAuthnP256.js +471 -0
  428. package/_esm/WebAuthnP256.js.map +1 -0
  429. package/_esm/WebCryptoP256.js +116 -0
  430. package/_esm/WebCryptoP256.js.map +1 -0
  431. package/_esm/Withdrawal.js +72 -0
  432. package/_esm/Withdrawal.js.map +1 -0
  433. package/_esm/index.js +3366 -0
  434. package/_esm/index.js.map +1 -0
  435. package/_esm/internal/abi.js +9 -0
  436. package/_esm/internal/abi.js.map +1 -0
  437. package/_esm/internal/abiConstructor.js +2 -0
  438. package/_esm/internal/abiConstructor.js.map +1 -0
  439. package/_esm/internal/abiError.js +2 -0
  440. package/_esm/internal/abiError.js.map +1 -0
  441. package/_esm/internal/abiEvent.js +2 -0
  442. package/_esm/internal/abiEvent.js.map +1 -0
  443. package/_esm/internal/abiFunction.js +2 -0
  444. package/_esm/internal/abiFunction.js.map +1 -0
  445. package/_esm/internal/abiItem.js +122 -0
  446. package/_esm/internal/abiItem.js.map +1 -0
  447. package/_esm/internal/abiParameters.js +419 -0
  448. package/_esm/internal/abiParameters.js.map +1 -0
  449. package/_esm/internal/base58.js +91 -0
  450. package/_esm/internal/base58.js.map +1 -0
  451. package/_esm/internal/bytes.js +86 -0
  452. package/_esm/internal/bytes.js.map +1 -0
  453. package/_esm/internal/cursor.js +207 -0
  454. package/_esm/internal/cursor.js.map +1 -0
  455. package/_esm/internal/ens.js +47 -0
  456. package/_esm/internal/ens.js.map +1 -0
  457. package/_esm/internal/errors.js +26 -0
  458. package/_esm/internal/errors.js.map +1 -0
  459. package/_esm/internal/hdKey.js +17 -0
  460. package/_esm/internal/hdKey.js.map +1 -0
  461. package/_esm/internal/hex.js +64 -0
  462. package/_esm/internal/hex.js.map +1 -0
  463. package/_esm/internal/lru.js +36 -0
  464. package/_esm/internal/lru.js.map +1 -0
  465. package/_esm/internal/mnemonic/wordlists.js +11 -0
  466. package/_esm/internal/mnemonic/wordlists.js.map +1 -0
  467. package/_esm/internal/promise.js +52 -0
  468. package/_esm/internal/promise.js.map +1 -0
  469. package/_esm/internal/register.js +2 -0
  470. package/_esm/internal/register.js.map +1 -0
  471. package/_esm/internal/rpcSchema.js +2 -0
  472. package/_esm/internal/rpcSchema.js.map +1 -0
  473. package/_esm/internal/rpcSchemas/eth.js +2 -0
  474. package/_esm/internal/rpcSchemas/eth.js.map +1 -0
  475. package/_esm/internal/rpcSchemas/wallet.js +2 -0
  476. package/_esm/internal/rpcSchemas/wallet.js.map +1 -0
  477. package/_esm/internal/rpcTransport.js +20 -0
  478. package/_esm/internal/rpcTransport.js.map +1 -0
  479. package/_esm/internal/types.js +2 -0
  480. package/_esm/internal/types.js.map +1 -0
  481. package/_esm/internal/uid.js +15 -0
  482. package/_esm/internal/uid.js.map +1 -0
  483. package/_esm/internal/webauthn.js +35 -0
  484. package/_esm/internal/webauthn.js.map +1 -0
  485. package/_esm/package.json +1 -0
  486. package/_esm/trusted-setups/Paths.js +3 -0
  487. package/_esm/trusted-setups/Paths.js.map +1 -0
  488. package/_esm/trusted-setups/index.js +2 -0
  489. package/_esm/trusted-setups/index.js.map +1 -0
  490. package/_esm/trusted-setups/internal/paths.js +12 -0
  491. package/_esm/trusted-setups/internal/paths.js.map +1 -0
  492. package/_esm/version.js +3 -0
  493. package/_esm/version.js.map +1 -0
  494. package/_esm/window/index.js +2 -0
  495. package/_esm/window/index.js.map +1 -0
  496. package/_test/Abi.test-d/package.json +6 -0
  497. package/_test/AbiConstructor.test-d/package.json +6 -0
  498. package/_test/AbiError.test-d/package.json +6 -0
  499. package/_test/AbiEvent.snap-d/package.json +6 -0
  500. package/_test/AbiEvent.snap-d.ts +329 -0
  501. package/_test/AbiFunction.snap-d/package.json +6 -0
  502. package/_test/AbiFunction.snap-d.ts +262 -0
  503. package/_test/AbiItem.snap-d/package.json +6 -0
  504. package/_test/AbiItem.snap-d.ts +131 -0
  505. package/_test/AbiParameters.bench/package.json +6 -0
  506. package/_test/AbiParameters.snap-d/package.json +6 -0
  507. package/_test/AbiParameters.snap-d.ts +66 -0
  508. package/_test/Address.bench/package.json +6 -0
  509. package/_test/Base58.bench/package.json +6 -0
  510. package/_test/Hex.bench/package.json +6 -0
  511. package/_test/Hex.test-d/package.json +6 -0
  512. package/_test/PublicKey.test-d/package.json +6 -0
  513. package/_test/Rlp.bench/package.json +6 -0
  514. package/_test/Rlp.test-d/package.json +6 -0
  515. package/_test/Signature.snap-d/package.json +6 -0
  516. package/_test/Signature.snap-d.ts +96 -0
  517. package/_test/TransactionEnvelopeEip1559.test-d/package.json +6 -0
  518. package/_test/TransactionEnvelopeEip2930.test-d/package.json +6 -0
  519. package/_test/TransactionEnvelopeEip4844.test-d/package.json +6 -0
  520. package/_test/TransactionEnvelopeEip7702.test-d/package.json +6 -0
  521. package/_test/TransactionEnvelopeLegacy.test-d/package.json +6 -0
  522. package/_test/TypedData.test-d/package.json +6 -0
  523. package/_types/Abi.d.ts +137 -0
  524. package/_types/Abi.d.ts.map +1 -0
  525. package/_types/AbiConstructor.d.ts +305 -0
  526. package/_types/AbiConstructor.d.ts.map +1 -0
  527. package/_types/AbiError.d.ts +522 -0
  528. package/_types/AbiError.d.ts.map +1 -0
  529. package/_types/AbiEvent.d.ts +892 -0
  530. package/_types/AbiEvent.d.ts.map +1 -0
  531. package/_types/AbiFunction.d.ts +602 -0
  532. package/_types/AbiFunction.d.ts.map +1 -0
  533. package/_types/AbiItem.d.ts +544 -0
  534. package/_types/AbiItem.d.ts.map +1 -0
  535. package/_types/AbiParameters.d.ts +466 -0
  536. package/_types/AbiParameters.d.ts.map +1 -0
  537. package/_types/AccessList.d.ts +83 -0
  538. package/_types/AccessList.d.ts.map +1 -0
  539. package/_types/AccountProof.d.ts +32 -0
  540. package/_types/AccountProof.d.ts.map +1 -0
  541. package/_types/Address.d.ts +244 -0
  542. package/_types/Address.d.ts.map +1 -0
  543. package/_types/AesGcm.d.ts +116 -0
  544. package/_types/AesGcm.d.ts.map +1 -0
  545. package/_types/Authorization.d.ts +461 -0
  546. package/_types/Authorization.d.ts.map +1 -0
  547. package/_types/Base58.d.ts +131 -0
  548. package/_types/Base58.d.ts.map +1 -0
  549. package/_types/Base64.d.ts +244 -0
  550. package/_types/Base64.d.ts.map +1 -0
  551. package/_types/Blobs.d.ts +556 -0
  552. package/_types/Blobs.d.ts.map +1 -0
  553. package/_types/Block.d.ts +190 -0
  554. package/_types/Block.d.ts.map +1 -0
  555. package/_types/Bloom.d.ts +54 -0
  556. package/_types/Bloom.d.ts.map +1 -0
  557. package/_types/Bls.d.ts +365 -0
  558. package/_types/Bls.d.ts.map +1 -0
  559. package/_types/BlsPoint.d.ts +187 -0
  560. package/_types/BlsPoint.d.ts.map +1 -0
  561. package/_types/Bytes.d.ts +674 -0
  562. package/_types/Bytes.d.ts.map +1 -0
  563. package/_types/Caches.d.ts +13 -0
  564. package/_types/Caches.d.ts.map +1 -0
  565. package/_types/ContractAddress.d.ts +115 -0
  566. package/_types/ContractAddress.d.ts.map +1 -0
  567. package/_types/Ens.d.ts +72 -0
  568. package/_types/Ens.d.ts.map +1 -0
  569. package/_types/Errors.d.ts +33 -0
  570. package/_types/Errors.d.ts.map +1 -0
  571. package/_types/Fee.d.ts +41 -0
  572. package/_types/Fee.d.ts.map +1 -0
  573. package/_types/Filter.d.ts +100 -0
  574. package/_types/Filter.d.ts.map +1 -0
  575. package/_types/Hash.d.ts +135 -0
  576. package/_types/Hash.d.ts.map +1 -0
  577. package/_types/HdKey.d.ts +146 -0
  578. package/_types/HdKey.d.ts.map +1 -0
  579. package/_types/Hex.d.ts +711 -0
  580. package/_types/Hex.d.ts.map +1 -0
  581. package/_types/Json.d.ts +53 -0
  582. package/_types/Json.d.ts.map +1 -0
  583. package/_types/Kzg.d.ts +42 -0
  584. package/_types/Kzg.d.ts.map +1 -0
  585. package/_types/Log.d.ts +194 -0
  586. package/_types/Log.d.ts.map +1 -0
  587. package/_types/Mnemonic.d.ts +176 -0
  588. package/_types/Mnemonic.d.ts.map +1 -0
  589. package/_types/P256.d.ts +207 -0
  590. package/_types/P256.d.ts.map +1 -0
  591. package/_types/PersonalMessage.d.ts +49 -0
  592. package/_types/PersonalMessage.d.ts.map +1 -0
  593. package/_types/Provider.d.ts +268 -0
  594. package/_types/Provider.d.ts.map +1 -0
  595. package/_types/PublicKey.d.ts +327 -0
  596. package/_types/PublicKey.d.ts.map +1 -0
  597. package/_types/Rlp.d.ts +153 -0
  598. package/_types/Rlp.d.ts.map +1 -0
  599. package/_types/RpcRequest.d.ts +144 -0
  600. package/_types/RpcRequest.d.ts.map +1 -0
  601. package/_types/RpcResponse.d.ts +266 -0
  602. package/_types/RpcResponse.d.ts.map +1 -0
  603. package/_types/RpcSchema.d.ts +248 -0
  604. package/_types/RpcSchema.d.ts.map +1 -0
  605. package/_types/RpcTransport.d.ts +65 -0
  606. package/_types/RpcTransport.d.ts.map +1 -0
  607. package/_types/Secp256k1.d.ts +277 -0
  608. package/_types/Secp256k1.d.ts.map +1 -0
  609. package/_types/Signature.d.ts +601 -0
  610. package/_types/Signature.d.ts.map +1 -0
  611. package/_types/Siwe.d.ts +249 -0
  612. package/_types/Siwe.d.ts.map +1 -0
  613. package/_types/Solidity.d.ts +100 -0
  614. package/_types/Solidity.d.ts.map +1 -0
  615. package/_types/Transaction.d.ts +235 -0
  616. package/_types/Transaction.d.ts.map +1 -0
  617. package/_types/TransactionEnvelope.d.ts +141 -0
  618. package/_types/TransactionEnvelope.d.ts.map +1 -0
  619. package/_types/TransactionEnvelopeEip1559.d.ts +367 -0
  620. package/_types/TransactionEnvelopeEip1559.d.ts.map +1 -0
  621. package/_types/TransactionEnvelopeEip2930.d.ts +364 -0
  622. package/_types/TransactionEnvelopeEip2930.d.ts.map +1 -0
  623. package/_types/TransactionEnvelopeEip4844.d.ts +419 -0
  624. package/_types/TransactionEnvelopeEip4844.d.ts.map +1 -0
  625. package/_types/TransactionEnvelopeEip7702.d.ts +377 -0
  626. package/_types/TransactionEnvelopeEip7702.d.ts.map +1 -0
  627. package/_types/TransactionEnvelopeLegacy.d.ts +358 -0
  628. package/_types/TransactionEnvelopeLegacy.d.ts.map +1 -0
  629. package/_types/TransactionReceipt.d.ts +271 -0
  630. package/_types/TransactionReceipt.d.ts.map +1 -0
  631. package/_types/TransactionRequest.d.ts +92 -0
  632. package/_types/TransactionRequest.d.ts.map +1 -0
  633. package/_types/TypedData.d.ts +496 -0
  634. package/_types/TypedData.d.ts.map +1 -0
  635. package/_types/ValidatorData.d.ts +64 -0
  636. package/_types/ValidatorData.d.ts.map +1 -0
  637. package/_types/Value.d.ts +159 -0
  638. package/_types/Value.d.ts.map +1 -0
  639. package/_types/WebAuthnP256.d.ts +445 -0
  640. package/_types/WebAuthnP256.d.ts.map +1 -0
  641. package/_types/WebCryptoP256.d.ts +119 -0
  642. package/_types/WebCryptoP256.d.ts.map +1 -0
  643. package/_types/Withdrawal.d.ts +74 -0
  644. package/_types/Withdrawal.d.ts.map +1 -0
  645. package/_types/index.d.ts +3367 -0
  646. package/_types/index.d.ts.map +1 -0
  647. package/_types/internal/abi.d.ts +4 -0
  648. package/_types/internal/abi.d.ts.map +1 -0
  649. package/_types/internal/abiConstructor.d.ts +11 -0
  650. package/_types/internal/abiConstructor.d.ts.map +1 -0
  651. package/_types/internal/abiError.d.ts +11 -0
  652. package/_types/internal/abiError.d.ts.map +1 -0
  653. package/_types/internal/abiEvent.d.ts +60 -0
  654. package/_types/internal/abiEvent.d.ts.map +1 -0
  655. package/_types/internal/abiFunction.d.ts +11 -0
  656. package/_types/internal/abiFunction.d.ts.map +1 -0
  657. package/_types/internal/abiItem.d.ts +100 -0
  658. package/_types/internal/abiItem.d.ts.map +1 -0
  659. package/_types/internal/abiParameters.d.ts +169 -0
  660. package/_types/internal/abiParameters.d.ts.map +1 -0
  661. package/_types/internal/base58.d.ts +17 -0
  662. package/_types/internal/base58.d.ts.map +1 -0
  663. package/_types/internal/bytes.d.ts +52 -0
  664. package/_types/internal/bytes.d.ts.map +1 -0
  665. package/_types/internal/cursor.d.ts +70 -0
  666. package/_types/internal/cursor.d.ts.map +1 -0
  667. package/_types/internal/ens.d.ts +23 -0
  668. package/_types/internal/ens.d.ts.map +1 -0
  669. package/_types/internal/errors.d.ts +7 -0
  670. package/_types/internal/errors.d.ts.map +1 -0
  671. package/_types/internal/hdKey.d.ts +10 -0
  672. package/_types/internal/hdKey.d.ts.map +1 -0
  673. package/_types/internal/hex.d.ts +39 -0
  674. package/_types/internal/hex.d.ts.map +1 -0
  675. package/_types/internal/lru.d.ts +13 -0
  676. package/_types/internal/lru.d.ts.map +1 -0
  677. package/_types/internal/mnemonic/wordlists.d.ts +11 -0
  678. package/_types/internal/mnemonic/wordlists.d.ts.map +1 -0
  679. package/_types/internal/promise.d.ts +27 -0
  680. package/_types/internal/promise.d.ts.map +1 -0
  681. package/_types/internal/register.d.ts +13 -0
  682. package/_types/internal/register.d.ts.map +1 -0
  683. package/_types/internal/rpcSchema.d.ts +12 -0
  684. package/_types/internal/rpcSchema.d.ts.map +1 -0
  685. package/_types/internal/rpcSchemas/eth.d.ts +718 -0
  686. package/_types/internal/rpcSchemas/eth.d.ts.map +1 -0
  687. package/_types/internal/rpcSchemas/wallet.d.ts +416 -0
  688. package/_types/internal/rpcSchemas/wallet.d.ts.map +1 -0
  689. package/_types/internal/rpcTransport.d.ts +38 -0
  690. package/_types/internal/rpcTransport.d.ts.map +1 -0
  691. package/_types/internal/types.d.ts +284 -0
  692. package/_types/internal/types.d.ts.map +1 -0
  693. package/_types/internal/uid.d.ts +3 -0
  694. package/_types/internal/uid.d.ts.map +1 -0
  695. package/_types/internal/webauthn.d.ts +127 -0
  696. package/_types/internal/webauthn.d.ts.map +1 -0
  697. package/_types/trusted-setups/Paths.d.ts +2 -0
  698. package/_types/trusted-setups/Paths.d.ts.map +1 -0
  699. package/_types/trusted-setups/index.d.ts +2 -0
  700. package/_types/trusted-setups/index.d.ts.map +1 -0
  701. package/_types/trusted-setups/internal/paths.d.ts +3 -0
  702. package/_types/trusted-setups/internal/paths.d.ts.map +1 -0
  703. package/_types/version.d.ts +3 -0
  704. package/_types/version.d.ts.map +1 -0
  705. package/_types/window/index.d.ts +7 -0
  706. package/_types/window/index.d.ts.map +1 -0
  707. package/index.ts +3427 -0
  708. package/internal/abi.ts +11 -0
  709. package/internal/abiConstructor.ts +32 -0
  710. package/internal/abiError.ts +30 -0
  711. package/internal/abiEvent.ts +154 -0
  712. package/internal/abiFunction.ts +32 -0
  713. package/internal/abiItem.ts +593 -0
  714. package/internal/abiParameters.ts +741 -0
  715. package/internal/base58.ts +106 -0
  716. package/internal/bytes.ts +152 -0
  717. package/internal/cursor.ts +252 -0
  718. package/internal/ens.ts +64 -0
  719. package/internal/errors.ts +26 -0
  720. package/internal/hdKey.ts +25 -0
  721. package/internal/hex.ts +123 -0
  722. package/internal/lru.ts +34 -0
  723. package/internal/mnemonic/wordlists.ts +10 -0
  724. package/internal/promise.ts +66 -0
  725. package/internal/register.ts +15 -0
  726. package/internal/rpcSchema.ts +20 -0
  727. package/internal/rpcSchemas/eth.ts +727 -0
  728. package/internal/rpcSchemas/wallet.ts +428 -0
  729. package/internal/rpcTransport.ts +74 -0
  730. package/internal/types.ts +414 -0
  731. package/internal/uid.ts +15 -0
  732. package/internal/webauthn.ts +198 -0
  733. package/package.json +500 -20
  734. package/trusted-setups/Paths/package.json +6 -0
  735. package/trusted-setups/Paths.ts +3 -0
  736. package/trusted-setups/index.ts +1 -0
  737. package/trusted-setups/internal/paths.ts +13 -0
  738. package/trusted-setups/internal/setups/mainnet.json +8265 -0
  739. package/trusted-setups/internal/setups/mainnet.txt +4163 -0
  740. package/trusted-setups/package.json +6 -0
  741. package/tsdoc.json +4 -0
  742. package/version/package.json +6 -0
  743. package/version.ts +2 -0
  744. package/window/index.ts +7 -0
  745. package/window/package.json +6 -0
  746. package/cl/ansiesc.js +0 -25
  747. package/cl/deps.js +0 -7
  748. package/cl/editor.js +0 -141
  749. package/cl/index.html +0 -19
  750. package/cl/ox.js +0 -44
  751. package/cl/socket.io.js +0 -1922
  752. package/cl/style.css +0 -37
  753. package/srv/deps.js +0 -88
  754. package/srv/httpSrv.js +0 -82
  755. package/srv/ox.js +0 -44
  756. package/srv/remoteXtermReq.js +0 -70
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/Siwe.d.ts",
4
+ "main": "../_cjs/Siwe.js",
5
+ "module": "../_esm/Siwe.js"
6
+ }
package/Siwe.ts ADDED
@@ -0,0 +1,516 @@
1
+ import * as Address from './Address.js'
2
+ import * as Errors from './Errors.js'
3
+ import type { ExactPartial } from './internal/types.js'
4
+ import { uid } from './internal/uid.js'
5
+
6
+ export const domainRegex =
7
+ /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(:[0-9]{1,5})?$/
8
+
9
+ export const ipRegex =
10
+ /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:[0-9]{1,5})?$/
11
+
12
+ export const localhostRegex = /^localhost(:[0-9]{1,5})?$/
13
+
14
+ export const nonceRegex = /^[a-zA-Z0-9]{8,}$/
15
+
16
+ export const schemeRegex = /^([a-zA-Z][a-zA-Z0-9+-.]*)$/
17
+
18
+ // https://regexr.com/80gdj
19
+ export const prefixRegex =
20
+ /^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?<address>0x[a-fA-F0-9]{40})\n\n(?:(?<statement>.*)\n\n)?/
21
+
22
+ // https://regexr.com/80gf9
23
+ export const suffixRegex =
24
+ /(?:URI: (?<uri>.+))\n(?:Version: (?<version>.+))\n(?:Chain ID: (?<chainId>\d+))\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\n(?:Issued At: (?<issuedAt>.+))(?:\nExpiration Time: (?<expirationTime>.+))?(?:\nNot Before: (?<notBefore>.+))?(?:\nRequest ID: (?<requestId>.+))?/
25
+
26
+ /** [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) message fields. */
27
+ export type Message = {
28
+ /**
29
+ * The Ethereum address performing the signing.
30
+ */
31
+ address: Address.Address
32
+ /**
33
+ * The [EIP-155](https://eips.ethereum.org/EIPS/eip-155) Chain ID to which the session is bound,
34
+ */
35
+ chainId: number
36
+ /**
37
+ * [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986) authority that is requesting the signing.
38
+ */
39
+ domain: string
40
+ /**
41
+ * Time when the signed authentication message is no longer valid.
42
+ */
43
+ expirationTime?: Date | undefined
44
+ /**
45
+ * Time when the message was generated, typically the current time.
46
+ */
47
+ issuedAt?: Date | undefined
48
+ /**
49
+ * A random string typically chosen by the relying party and used to prevent replay attacks.
50
+ */
51
+ nonce: string
52
+ /**
53
+ * Time when the signed authentication message will become valid.
54
+ */
55
+ notBefore?: Date | undefined
56
+ /**
57
+ * A system-specific identifier that may be used to uniquely refer to the sign-in request.
58
+ */
59
+ requestId?: string | undefined
60
+ /**
61
+ * A list of information or references to information the user wishes to have resolved as part of authentication by the relying party.
62
+ */
63
+ resources?: string[] | undefined
64
+ /**
65
+ * [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) URI scheme of the origin of the request.
66
+ */
67
+ scheme?: string | undefined
68
+ /**
69
+ * A human-readable ASCII assertion that the user will sign.
70
+ */
71
+ statement?: string | undefined
72
+ /**
73
+ * [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986) URI referring to the resource that is the subject of the signing (as in the subject of a claim).
74
+ */
75
+ uri: string
76
+ /**
77
+ * The current version of the SIWE Message.
78
+ */
79
+ version: '1'
80
+ }
81
+
82
+ /**
83
+ * Creates [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message.
84
+ *
85
+ * @example
86
+ * ```ts twoslash
87
+ * import { Siwe } from 'ox'
88
+ *
89
+ * Siwe.createMessage({
90
+ * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
91
+ * chainId: 1,
92
+ * domain: 'example.com',
93
+ * nonce: 'foobarbaz',
94
+ * uri: 'https://example.com/path',
95
+ * version: '1',
96
+ * })
97
+ * // @log: "example.com wants you to sign in with your Ethereum account:
98
+ * // @log: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e
99
+ * // @log:
100
+ * // @log:
101
+ * // @log: URI: https://example.com/path
102
+ * // @log: Version: 1
103
+ * // @log: Chain ID: 1
104
+ * // @log: Nonce: foobarbaz
105
+ * // @log: Issued At: 2023-02-01T00:00:00.000Z"
106
+ * ```
107
+ *
108
+ * @param value - Values to use when creating EIP-4361 formatted message.
109
+ * @returns EIP-4361 formatted message.
110
+ */
111
+ export function createMessage(value: Message): string {
112
+ const {
113
+ chainId,
114
+ domain,
115
+ expirationTime,
116
+ issuedAt = new Date(),
117
+ nonce,
118
+ notBefore,
119
+ requestId,
120
+ resources,
121
+ scheme,
122
+ uri,
123
+ version,
124
+ } = value
125
+
126
+ // Validate fields
127
+ {
128
+ // Required fields
129
+ if (chainId !== Math.floor(chainId))
130
+ throw new InvalidMessageFieldError({
131
+ field: 'chainId',
132
+ metaMessages: [
133
+ '- Chain ID must be a EIP-155 chain ID.',
134
+ '- See https://eips.ethereum.org/EIPS/eip-155',
135
+ '',
136
+ `Provided value: ${chainId}`,
137
+ ],
138
+ })
139
+ if (
140
+ !(
141
+ domainRegex.test(domain) ||
142
+ ipRegex.test(domain) ||
143
+ localhostRegex.test(domain)
144
+ )
145
+ )
146
+ throw new InvalidMessageFieldError({
147
+ field: 'domain',
148
+ metaMessages: [
149
+ '- Domain must be an RFC 3986 authority.',
150
+ '- See https://www.rfc-editor.org/rfc/rfc3986',
151
+ '',
152
+ `Provided value: ${domain}`,
153
+ ],
154
+ })
155
+ if (!nonceRegex.test(nonce))
156
+ throw new InvalidMessageFieldError({
157
+ field: 'nonce',
158
+ metaMessages: [
159
+ '- Nonce must be at least 8 characters.',
160
+ '- Nonce must be alphanumeric.',
161
+ '',
162
+ `Provided value: ${nonce}`,
163
+ ],
164
+ })
165
+ if (!isUri(uri))
166
+ throw new InvalidMessageFieldError({
167
+ field: 'uri',
168
+ metaMessages: [
169
+ '- URI must be a RFC 3986 URI referring to the resource that is the subject of the signing.',
170
+ '- See https://www.rfc-editor.org/rfc/rfc3986',
171
+ '',
172
+ `Provided value: ${uri}`,
173
+ ],
174
+ })
175
+ if (version !== '1')
176
+ throw new InvalidMessageFieldError({
177
+ field: 'version',
178
+ metaMessages: [
179
+ "- Version must be '1'.",
180
+ '',
181
+ `Provided value: ${version}`,
182
+ ],
183
+ })
184
+
185
+ // Optional fields
186
+ if (scheme && !schemeRegex.test(scheme))
187
+ throw new InvalidMessageFieldError({
188
+ field: 'scheme',
189
+ metaMessages: [
190
+ '- Scheme must be an RFC 3986 URI scheme.',
191
+ '- See https://www.rfc-editor.org/rfc/rfc3986#section-3.1',
192
+ '',
193
+ `Provided value: ${scheme}`,
194
+ ],
195
+ })
196
+ const statement = value.statement
197
+ if (statement?.includes('\n'))
198
+ throw new InvalidMessageFieldError({
199
+ field: 'statement',
200
+ metaMessages: [
201
+ "- Statement must not include '\\n'.",
202
+ '',
203
+ `Provided value: ${statement}`,
204
+ ],
205
+ })
206
+ }
207
+
208
+ // Construct message
209
+ const address = Address.from(value.address)
210
+ const origin = (() => {
211
+ if (scheme) return `${scheme}://${domain}`
212
+ return domain
213
+ })()
214
+ const statement = (() => {
215
+ if (!value.statement) return ''
216
+ return `${value.statement}\n`
217
+ })()
218
+ const prefix = `${origin} wants you to sign in with your Ethereum account:\n${address}\n\n${statement}`
219
+
220
+ let suffix = `URI: ${uri}\nVersion: ${version}\nChain ID: ${chainId}\nNonce: ${nonce}\nIssued At: ${issuedAt.toISOString()}`
221
+
222
+ if (expirationTime)
223
+ suffix += `\nExpiration Time: ${expirationTime.toISOString()}`
224
+ if (notBefore) suffix += `\nNot Before: ${notBefore.toISOString()}`
225
+ if (requestId) suffix += `\nRequest ID: ${requestId}`
226
+ if (resources) {
227
+ let content = '\nResources:'
228
+ for (const resource of resources) {
229
+ if (!isUri(resource))
230
+ throw new InvalidMessageFieldError({
231
+ field: 'resources',
232
+ metaMessages: [
233
+ '- Every resource must be a RFC 3986 URI.',
234
+ '- See https://www.rfc-editor.org/rfc/rfc3986',
235
+ '',
236
+ `Provided value: ${resource}`,
237
+ ],
238
+ })
239
+ content += `\n- ${resource}`
240
+ }
241
+ suffix += content
242
+ }
243
+
244
+ return `${prefix}\n${suffix}`
245
+ }
246
+
247
+ export declare namespace createMessage {
248
+ type ErrorType =
249
+ | Address.from.ErrorType
250
+ | InvalidMessageFieldError
251
+ | Errors.GlobalErrorType
252
+ }
253
+
254
+ createMessage.parseError = (error: unknown) =>
255
+ /* v8 ignore next */
256
+ error as createMessage.ErrorType
257
+
258
+ /**
259
+ * Generates random [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) nonce.
260
+ *
261
+ * @example
262
+ * ```ts twoslash
263
+ * import { Siwe } from 'ox'
264
+ *
265
+ * Siwe.generateNonce()
266
+ * // @log: '65ed4681d4efe0270b923ff5f4b097b1c95974dc33aeebecd5724c42fd86dfd25dc70b27ef836b2aa22e68f19ebcccc1'
267
+ * ```
268
+ *
269
+ * @returns Random nonce.
270
+ */
271
+ export function generateNonce(): string {
272
+ return uid(96)
273
+ }
274
+
275
+ /**
276
+ * Check if the given URI is a valid [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986) URI.
277
+ *
278
+ * @example
279
+ * ```ts twoslash
280
+ * import { Siwe } from 'ox'
281
+ *
282
+ * Siwe.isUri('https://example.com/foo')
283
+ * // @log: true
284
+ * ```
285
+ *
286
+ * @param value - Value to check.
287
+ * @returns `false` if invalid, otherwise the valid URI.
288
+ */
289
+ // based on https://github.com/ogt/valid-url
290
+ export function isUri(value: string): false | string {
291
+ // check for illegal characters
292
+ if (/[^a-z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\.\-\_\~\%]/i.test(value))
293
+ return false
294
+
295
+ // check for hex escapes that aren't complete
296
+ if (/%[^0-9a-f]/i.test(value)) return false
297
+ if (/%[0-9a-f](:?[^0-9a-f]|$)/i.test(value)) return false
298
+
299
+ // from RFC 3986
300
+ const splitted = splitUri(value)
301
+ const scheme = splitted[1]
302
+ const authority = splitted[2]
303
+ const path = splitted[3]
304
+ const query = splitted[4]
305
+ const fragment = splitted[5]
306
+
307
+ // scheme and path are required, though the path can be empty
308
+ if (!(scheme?.length && path && path.length >= 0)) return false
309
+
310
+ // if authority is present, the path must be empty or begin with a /
311
+ if (authority?.length) {
312
+ if (!(path.length === 0 || /^\//.test(path))) return false
313
+ } else {
314
+ // if authority is not present, the path must not start with //
315
+ if (/^\/\//.test(path)) return false
316
+ }
317
+
318
+ // scheme must begin with a letter, then consist of letters, digits, +, ., or -
319
+ if (!/^[a-z][a-z0-9\+\-\.]*$/.test(scheme.toLowerCase())) return false
320
+
321
+ let out = ''
322
+ // re-assemble the URL per section 5.3 in RFC 3986
323
+ out += `${scheme}:`
324
+ if (authority?.length) out += `//${authority}`
325
+
326
+ out += path
327
+
328
+ if (query?.length) out += `?${query}`
329
+ if (fragment?.length) out += `#${fragment}`
330
+
331
+ return out
332
+ }
333
+
334
+ function splitUri(value: string) {
335
+ return value.match(
336
+ /(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,
337
+ )!
338
+ }
339
+
340
+ /**
341
+ * [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message into message fields object.
342
+ *
343
+ * @example
344
+ * ```ts twoslash
345
+ * import { Siwe } from 'ox'
346
+ *
347
+ * Siwe.parseMessage(`example.com wants you to sign in with your Ethereum account:
348
+ * 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e
349
+ *
350
+ * I accept the ExampleOrg Terms of Service: https://example.com/tos
351
+ *
352
+ * URI: https://example.com/path
353
+ * Version: 1
354
+ * Chain ID: 1
355
+ * Nonce: foobarbaz
356
+ * Issued At: 2023-02-01T00:00:00.000Z`)
357
+ * // @log: {
358
+ * // @log: address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
359
+ * // @log: chainId: 1,
360
+ * // @log: domain: 'example.com',
361
+ * // @log: issuedAt: '2023-02-01T00:00:00.000Z',
362
+ * // @log: nonce: 'foobarbaz',
363
+ * // @log: statement: 'I accept the ExampleOrg Terms of Service: https://example.com/tos',
364
+ * // @log: uri: 'https://example.com/path',
365
+ * // @log: version: '1',
366
+ * // @log: }
367
+ * ```
368
+ *
369
+ * @param message - [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message.
370
+ * @returns Message fields object.
371
+ */
372
+ export function parseMessage(message: string): ExactPartial<Message> {
373
+ const { scheme, statement, ...prefix } = (message.match(prefixRegex)
374
+ ?.groups ?? {}) as {
375
+ address: Address.Address
376
+ domain: string
377
+ scheme?: string
378
+ statement?: string
379
+ }
380
+ const { chainId, expirationTime, issuedAt, notBefore, requestId, ...suffix } =
381
+ (message.match(suffixRegex)?.groups ?? {}) as {
382
+ chainId: string
383
+ expirationTime?: string
384
+ issuedAt?: string
385
+ nonce: string
386
+ notBefore?: string
387
+ requestId?: string
388
+ uri: string
389
+ version: '1'
390
+ }
391
+ const resources = message.split('Resources:')[1]?.split('\n- ').slice(1)
392
+ return {
393
+ ...prefix,
394
+ ...suffix,
395
+ ...(chainId ? { chainId: Number(chainId) } : {}),
396
+ ...(expirationTime ? { expirationTime: new Date(expirationTime) } : {}),
397
+ ...(issuedAt ? { issuedAt: new Date(issuedAt) } : {}),
398
+ ...(notBefore ? { notBefore: new Date(notBefore) } : {}),
399
+ ...(requestId ? { requestId } : {}),
400
+ ...(resources ? { resources } : {}),
401
+ ...(scheme ? { scheme } : {}),
402
+ ...(statement ? { statement } : {}),
403
+ }
404
+ }
405
+
406
+ /**
407
+ * Validates [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) message.
408
+ *
409
+ * @example
410
+ * ```ts twoslash
411
+ * import { Siwe } from 'ox'
412
+ *
413
+ * Siwe.validateMessage({
414
+ * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
415
+ * domain: 'example.com',
416
+ * message: {
417
+ * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
418
+ * chainId: 1,
419
+ * domain: 'example.com',
420
+ * nonce: 'foobarbaz',
421
+ * uri: 'https://example.com/path',
422
+ * version: '1',
423
+ * },
424
+ * nonce: 'foobarbaz',
425
+ * })
426
+ * // @log: true
427
+ * ```
428
+ *
429
+ * @param value - Values to use when validating EIP-4361 formatted message.
430
+ * @returns Whether the message is valid.
431
+ */
432
+ export function validateMessage(value: validateMessage.Value): boolean {
433
+ const { address, domain, message, nonce, scheme, time = new Date() } = value
434
+
435
+ if (domain && message.domain !== domain) return false
436
+ if (nonce && message.nonce !== nonce) return false
437
+ if (scheme && message.scheme !== scheme) return false
438
+
439
+ if (message.expirationTime && time >= message.expirationTime) return false
440
+ if (message.notBefore && time < message.notBefore) return false
441
+
442
+ try {
443
+ if (!message.address) return false
444
+ if (address && !Address.isEqual(message.address, address)) return false
445
+ } catch {
446
+ return false
447
+ }
448
+
449
+ return true
450
+ }
451
+
452
+ export declare namespace validateMessage {
453
+ interface Value {
454
+ /**
455
+ * Ethereum address to check against.
456
+ */
457
+ address?: Address.Address | undefined
458
+ /**
459
+ * [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986) authority to check against.
460
+ */
461
+ domain?: string | undefined
462
+ /**
463
+ * EIP-4361 message fields.
464
+ */
465
+ message: ExactPartial<Message>
466
+ /**
467
+ * Random string to check against.
468
+ */
469
+ nonce?: string | undefined
470
+ /**
471
+ * [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) URI scheme to check against.
472
+ */
473
+ scheme?: string | undefined
474
+ /**
475
+ * Current time to check optional `expirationTime` and `notBefore` fields.
476
+ *
477
+ * @default new Date()
478
+ */
479
+ time?: Date | undefined
480
+ }
481
+ }
482
+
483
+ /**
484
+ * Thrown when a field in a SIWE Message is invalid.
485
+ *
486
+ * @example
487
+ * ```ts twoslash
488
+ * import { Siwe } from 'ox'
489
+ *
490
+ * Siwe.createMessage({
491
+ * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
492
+ * chainId: 1.1,
493
+ * domain: 'example.com',
494
+ * nonce: 'foobarbaz',
495
+ * uri: 'https://example.com/path',
496
+ * version: '1',
497
+ * })
498
+ * // @error: Siwe.InvalidMessageFieldError: Invalid Sign-In with Ethereum message field "chainId".
499
+ * // @error: - Chain ID must be a EIP-155 chain ID.
500
+ * // @error: - See https://eips.ethereum.org/EIPS/eip-155
501
+ * // @error: Provided value: 1.1
502
+ * ```
503
+ */
504
+ export class InvalidMessageFieldError extends Errors.BaseError {
505
+ override readonly name = 'Siwe.InvalidMessageFieldError'
506
+
507
+ constructor(parameters: {
508
+ field: string
509
+ metaMessages?: string[] | undefined
510
+ }) {
511
+ const { field, metaMessages } = parameters
512
+ super(`Invalid Sign-In with Ethereum message field "${field}".`, {
513
+ metaMessages,
514
+ })
515
+ }
516
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/Solidity.d.ts",
4
+ "main": "../_cjs/Solidity.js",
5
+ "module": "../_esm/Solidity.js"
6
+ }
package/Solidity.ts ADDED
@@ -0,0 +1,109 @@
1
+ export const arrayRegex = /^(.*)\[([0-9]*)\]$/
2
+
3
+ // `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`
4
+ // https://regexr.com/6va55
5
+ export const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/
6
+
7
+ // `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`
8
+ // https://regexr.com/6v8hp
9
+ export const integerRegex =
10
+ /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/
11
+
12
+ export const maxInt8 = 2n ** (8n - 1n) - 1n
13
+ export const maxInt16 = 2n ** (16n - 1n) - 1n
14
+ export const maxInt24 = 2n ** (24n - 1n) - 1n
15
+ export const maxInt32 = 2n ** (32n - 1n) - 1n
16
+ export const maxInt40 = 2n ** (40n - 1n) - 1n
17
+ export const maxInt48 = 2n ** (48n - 1n) - 1n
18
+ export const maxInt56 = 2n ** (56n - 1n) - 1n
19
+ export const maxInt64 = 2n ** (64n - 1n) - 1n
20
+ export const maxInt72 = 2n ** (72n - 1n) - 1n
21
+ export const maxInt80 = 2n ** (80n - 1n) - 1n
22
+ export const maxInt88 = 2n ** (88n - 1n) - 1n
23
+ export const maxInt96 = 2n ** (96n - 1n) - 1n
24
+ export const maxInt104 = 2n ** (104n - 1n) - 1n
25
+ export const maxInt112 = 2n ** (112n - 1n) - 1n
26
+ export const maxInt120 = 2n ** (120n - 1n) - 1n
27
+ export const maxInt128 = 2n ** (128n - 1n) - 1n
28
+ export const maxInt136 = 2n ** (136n - 1n) - 1n
29
+ export const maxInt144 = 2n ** (144n - 1n) - 1n
30
+ export const maxInt152 = 2n ** (152n - 1n) - 1n
31
+ export const maxInt160 = 2n ** (160n - 1n) - 1n
32
+ export const maxInt168 = 2n ** (168n - 1n) - 1n
33
+ export const maxInt176 = 2n ** (176n - 1n) - 1n
34
+ export const maxInt184 = 2n ** (184n - 1n) - 1n
35
+ export const maxInt192 = 2n ** (192n - 1n) - 1n
36
+ export const maxInt200 = 2n ** (200n - 1n) - 1n
37
+ export const maxInt208 = 2n ** (208n - 1n) - 1n
38
+ export const maxInt216 = 2n ** (216n - 1n) - 1n
39
+ export const maxInt224 = 2n ** (224n - 1n) - 1n
40
+ export const maxInt232 = 2n ** (232n - 1n) - 1n
41
+ export const maxInt240 = 2n ** (240n - 1n) - 1n
42
+ export const maxInt248 = 2n ** (248n - 1n) - 1n
43
+ export const maxInt256 = 2n ** (256n - 1n) - 1n
44
+
45
+ export const minInt8 = -(2n ** (8n - 1n))
46
+ export const minInt16 = -(2n ** (16n - 1n))
47
+ export const minInt24 = -(2n ** (24n - 1n))
48
+ export const minInt32 = -(2n ** (32n - 1n))
49
+ export const minInt40 = -(2n ** (40n - 1n))
50
+ export const minInt48 = -(2n ** (48n - 1n))
51
+ export const minInt56 = -(2n ** (56n - 1n))
52
+ export const minInt64 = -(2n ** (64n - 1n))
53
+ export const minInt72 = -(2n ** (72n - 1n))
54
+ export const minInt80 = -(2n ** (80n - 1n))
55
+ export const minInt88 = -(2n ** (88n - 1n))
56
+ export const minInt96 = -(2n ** (96n - 1n))
57
+ export const minInt104 = -(2n ** (104n - 1n))
58
+ export const minInt112 = -(2n ** (112n - 1n))
59
+ export const minInt120 = -(2n ** (120n - 1n))
60
+ export const minInt128 = -(2n ** (128n - 1n))
61
+ export const minInt136 = -(2n ** (136n - 1n))
62
+ export const minInt144 = -(2n ** (144n - 1n))
63
+ export const minInt152 = -(2n ** (152n - 1n))
64
+ export const minInt160 = -(2n ** (160n - 1n))
65
+ export const minInt168 = -(2n ** (168n - 1n))
66
+ export const minInt176 = -(2n ** (176n - 1n))
67
+ export const minInt184 = -(2n ** (184n - 1n))
68
+ export const minInt192 = -(2n ** (192n - 1n))
69
+ export const minInt200 = -(2n ** (200n - 1n))
70
+ export const minInt208 = -(2n ** (208n - 1n))
71
+ export const minInt216 = -(2n ** (216n - 1n))
72
+ export const minInt224 = -(2n ** (224n - 1n))
73
+ export const minInt232 = -(2n ** (232n - 1n))
74
+ export const minInt240 = -(2n ** (240n - 1n))
75
+ export const minInt248 = -(2n ** (248n - 1n))
76
+ export const minInt256 = -(2n ** (256n - 1n))
77
+
78
+ export const maxUint8 = 2n ** 8n - 1n
79
+ export const maxUint16 = 2n ** 16n - 1n
80
+ export const maxUint24 = 2n ** 24n - 1n
81
+ export const maxUint32 = 2n ** 32n - 1n
82
+ export const maxUint40 = 2n ** 40n - 1n
83
+ export const maxUint48 = 2n ** 48n - 1n
84
+ export const maxUint56 = 2n ** 56n - 1n
85
+ export const maxUint64 = 2n ** 64n - 1n
86
+ export const maxUint72 = 2n ** 72n - 1n
87
+ export const maxUint80 = 2n ** 80n - 1n
88
+ export const maxUint88 = 2n ** 88n - 1n
89
+ export const maxUint96 = 2n ** 96n - 1n
90
+ export const maxUint104 = 2n ** 104n - 1n
91
+ export const maxUint112 = 2n ** 112n - 1n
92
+ export const maxUint120 = 2n ** 120n - 1n
93
+ export const maxUint128 = 2n ** 128n - 1n
94
+ export const maxUint136 = 2n ** 136n - 1n
95
+ export const maxUint144 = 2n ** 144n - 1n
96
+ export const maxUint152 = 2n ** 152n - 1n
97
+ export const maxUint160 = 2n ** 160n - 1n
98
+ export const maxUint168 = 2n ** 168n - 1n
99
+ export const maxUint176 = 2n ** 176n - 1n
100
+ export const maxUint184 = 2n ** 184n - 1n
101
+ export const maxUint192 = 2n ** 192n - 1n
102
+ export const maxUint200 = 2n ** 200n - 1n
103
+ export const maxUint208 = 2n ** 208n - 1n
104
+ export const maxUint216 = 2n ** 216n - 1n
105
+ export const maxUint224 = 2n ** 224n - 1n
106
+ export const maxUint232 = 2n ** 232n - 1n
107
+ export const maxUint240 = 2n ** 240n - 1n
108
+ export const maxUint248 = 2n ** 248n - 1n
109
+ export const maxUint256 = 2n ** 256n - 1n
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/Transaction.d.ts",
4
+ "main": "../_cjs/Transaction.js",
5
+ "module": "../_esm/Transaction.js"
6
+ }