near-api-ts 0.6.0 → 0.7.1

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 (265) hide show
  1. package/{LICENSE → LICENSE.md} +1 -1
  2. package/README.md +3 -1
  3. package/browser/src/idbKeyService/idbKeyService.ts +61 -0
  4. package/browser/src/idbKeyService/private/getKeyPair.ts +39 -0
  5. package/browser/src/idbKeyService/private/openIdbConnection.ts +22 -0
  6. package/browser/src/idbKeyService/public/addKey.ts +32 -0
  7. package/browser/src/idbKeyService/public/clear.ts +14 -0
  8. package/browser/src/idbKeyService/public/hasKey.ts +9 -0
  9. package/browser/src/idbKeyService/public/removeKey.ts +26 -0
  10. package/browser/src/idbKeyService/public/signTransaction.ts +59 -0
  11. package/browser/types/idbKeyService/idbKeyService.ts +7 -0
  12. package/browser/types/natError.ts +5 -0
  13. package/dist/browser/index.d.ts +1365 -0
  14. package/dist/browser/index.js +4416 -0
  15. package/dist/browser/index.js.map +1 -0
  16. package/dist/node/index.d.ts +1364 -0
  17. package/dist/node/index.js +4405 -0
  18. package/dist/node/index.js.map +1 -0
  19. package/dist/{index.d.ts → universal/index.d.ts} +881 -985
  20. package/dist/{index.js → universal/index.js} +2660 -2668
  21. package/dist/universal/index.js.map +1 -0
  22. package/node/src/fileKeyService/fileKeyService.ts +76 -0
  23. package/node/src/fileKeyService/private/getKeyPair.ts +20 -0
  24. package/node/src/fileKeyService/public/addKeyPair.ts +30 -0
  25. package/node/src/fileKeyService/public/clear.ts +16 -0
  26. package/node/src/fileKeyService/public/hasKeyPair.ts +10 -0
  27. package/node/src/fileKeyService/public/removeKeyPair.ts +16 -0
  28. package/node/src/fileKeyService/public/signTransaction.ts +58 -0
  29. package/node/types/fileKeyService/fileKeyService.ts +7 -0
  30. package/node/types/natError.ts +5 -0
  31. package/package.json +54 -28
  32. package/{src → universal/src}/_common/natError.ts +5 -5
  33. package/{src → universal/src}/_common/schemas/borsh/transaction.ts +8 -8
  34. package/{src → universal/src}/_common/schemas/zod/client.ts +1 -4
  35. package/{src → universal/src}/_common/schemas/zod/common/accountId.ts +1 -1
  36. package/{src → universal/src}/_common/schemas/zod/common/common.ts +1 -1
  37. package/{src → universal/src}/_common/schemas/zod/common/cryptoHash.ts +2 -2
  38. package/{src → universal/src}/_common/schemas/zod/common/curveString.ts +3 -3
  39. package/{src → universal/src}/_common/schemas/zod/common/privateKey.ts +2 -2
  40. package/{src → universal/src}/_common/schemas/zod/common/publicKey.ts +2 -2
  41. package/{src → universal/src}/_common/schemas/zod/common/signature.ts +2 -2
  42. package/{src → universal/src}/_common/schemas/zod/transaction/actions/addKey.ts +4 -4
  43. package/{src → universal/src}/_common/schemas/zod/transaction/actions/deleteAccount.ts +1 -1
  44. package/{src → universal/src}/_common/schemas/zod/transaction/actions/deleteKey.ts +1 -1
  45. package/{src → universal/src}/_common/schemas/zod/transaction/actions/functionCall.ts +3 -3
  46. package/{src → universal/src}/_common/schemas/zod/transaction/actions/stake.ts +2 -2
  47. package/{src → universal/src}/_common/schemas/zod/transaction/actions/transfer.ts +1 -1
  48. package/{src → universal/src}/_common/schemas/zod/transaction/transaction.ts +13 -16
  49. package/{src → universal/src}/_common/transformers/toBorshBytes/transaction.ts +4 -13
  50. package/{src → universal/src}/_common/transformers/toCurveString.ts +1 -4
  51. package/{src → universal/src}/_common/transformers/toNative/actions/addKey.ts +3 -3
  52. package/{src → universal/src}/_common/transformers/toNative/actions/createAccount.ts +1 -1
  53. package/{src → universal/src}/_common/transformers/toNative/actions/deleteAccount.ts +2 -2
  54. package/universal/src/_common/transformers/toNative/actions/deleteKey.ts +11 -0
  55. package/universal/src/_common/transformers/toNative/actions/deployContract.ts +8 -0
  56. package/{src → universal/src}/_common/transformers/toNative/actions/functionCall.ts +3 -3
  57. package/{src → universal/src}/_common/transformers/toNative/actions/stake.ts +3 -3
  58. package/{src → universal/src}/_common/transformers/toNative/actions/transfer.ts +2 -2
  59. package/{src → universal/src}/_common/transformers/toNative/blockReference.ts +1 -1
  60. package/{src → universal/src}/_common/transformers/toNative/publicKey.ts +2 -2
  61. package/{src → universal/src}/_common/transformers/toNative/signature.ts +2 -2
  62. package/{src → universal/src}/_common/transformers/toNative/transaction.ts +12 -20
  63. package/{src → universal/src}/_common/utils/asThrowable.ts +1 -1
  64. package/{src → universal/src}/_common/utils/getTransactionHash.ts +3 -3
  65. package/{src → universal/src}/_common/utils/repackError.ts +4 -3
  66. package/{src → universal/src}/_common/utils/result.ts +1 -1
  67. package/{src → universal/src}/_common/utils/sleep.ts +2 -2
  68. package/{src → universal/src}/_common/utils/wrapInternalError.ts +7 -7
  69. package/{src → universal/src}/client/cache/createCache.ts +2 -2
  70. package/{src → universal/src}/client/cache/getRecentBlockHash.ts +22 -24
  71. package/{src → universal/src}/client/cache/getStoragePricePerByte.ts +15 -11
  72. package/{src → universal/src}/client/createClient.ts +10 -16
  73. package/{src → universal/src}/client/methods/account/_common/transformAccessKey.ts +3 -3
  74. package/universal/src/client/methods/account/getAccountAccessKey/getAccountAccessKey.ts +61 -0
  75. package/{src → universal/src}/client/methods/account/getAccountAccessKey/handleError.ts +7 -12
  76. package/{src → universal/src}/client/methods/account/getAccountAccessKey/handleResult.ts +8 -8
  77. package/universal/src/client/methods/account/getAccountAccessKeys/getAccountAccessKeys.ts +58 -0
  78. package/{src → universal/src}/client/methods/account/getAccountAccessKeys/handleError.ts +7 -12
  79. package/{src → universal/src}/client/methods/account/getAccountAccessKeys/handleResult.ts +8 -8
  80. package/universal/src/client/methods/account/getAccountInfo/getAccountInfo.ts +71 -0
  81. package/{src → universal/src}/client/methods/account/getAccountInfo/handleError.ts +7 -13
  82. package/{src → universal/src}/client/methods/account/getAccountInfo/handleResult/calculateAccountBalance.ts +2 -2
  83. package/{src → universal/src}/client/methods/account/getAccountInfo/handleResult/handleResult.ts +9 -12
  84. package/universal/src/client/methods/block/getBlock/getBlock.ts +52 -0
  85. package/{src → universal/src}/client/methods/block/getBlock/handleError.ts +8 -13
  86. package/{src → universal/src}/client/methods/block/getBlock/handleResult.ts +6 -6
  87. package/{src → universal/src}/client/methods/contract/callContractReadFunction/callContractReadFunction.ts +17 -21
  88. package/{src → universal/src}/client/methods/contract/callContractReadFunction/handleError.ts +7 -13
  89. package/{src → universal/src}/client/methods/contract/callContractReadFunction/handleResult/deserializeCallResult.ts +7 -7
  90. package/{src → universal/src}/client/methods/contract/callContractReadFunction/handleResult/handleResult.ts +8 -8
  91. package/{src → universal/src}/client/methods/contract/callContractReadFunction/serializeFunctionArgs.ts +8 -8
  92. package/{src → universal/src}/client/methods/contract/getContractState.ts +4 -11
  93. package/{src → universal/src}/client/methods/protocol/getGasPrice.ts +2 -8
  94. package/{src → universal/src}/client/methods/protocol/getProtocolConfig.ts +3 -7
  95. package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleError/handleError.ts +7 -12
  96. package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleError/handleInvalidTransaction.ts +9 -14
  97. package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleResult/handleActionError.ts +6 -11
  98. package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleResult/handleResult.ts +7 -7
  99. package/universal/src/client/methods/transaction/sendSignedTransaction/sendSignedTransaction.ts +60 -0
  100. package/{src → universal/src}/client/transport/createTransport.ts +3 -10
  101. package/{src → universal/src}/client/transport/rpcEndpoints.ts +1 -4
  102. package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/_common/getAvailableRpcs.ts +6 -10
  103. package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/createExternalAbortSignal.ts +2 -2
  104. package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/createRequestTimeout.ts +4 -4
  105. package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/createSendRequest.ts +30 -21
  106. package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/handleMaybeUnknownBlock.ts +7 -7
  107. package/{src → universal/src}/client/transport/sendRequest/2-tryMultipleRounds/tryMultipleRounds.ts +15 -16
  108. package/{src → universal/src}/client/transport/sendRequest/3-tryOneRound/tryOneRound.ts +15 -16
  109. package/{src → universal/src}/client/transport/sendRequest/4-sendWithRetry/sendWithRetry.ts +11 -12
  110. package/{src → universal/src}/client/transport/sendRequest/5-sendOnce/extractRpcErrors.ts +15 -14
  111. package/{src → universal/src}/client/transport/sendRequest/5-sendOnce/fetchData/createAttemptTimeout.ts +4 -4
  112. package/{src → universal/src}/client/transport/sendRequest/5-sendOnce/fetchData/fetchData.ts +14 -14
  113. package/universal/src/client/transport/sendRequest/5-sendOnce/parseJsonResponse.ts +27 -0
  114. package/universal/src/client/transport/sendRequest/5-sendOnce/sendOnce.ts +68 -0
  115. package/{src → universal/src}/client/transport/transportPolicy.ts +29 -21
  116. package/{src → universal/src}/helpers/actionCreators/addFullAccessKey.ts +6 -9
  117. package/{src → universal/src}/helpers/actionCreators/addFunctionCallKey.ts +9 -12
  118. package/{src → universal/src}/helpers/actionCreators/createAccount.ts +1 -1
  119. package/{src → universal/src}/helpers/actionCreators/deleteAccount.ts +6 -9
  120. package/{src → universal/src}/helpers/actionCreators/deleteKey.ts +6 -9
  121. package/{src → universal/src}/helpers/actionCreators/deployContract.ts +6 -9
  122. package/{src → universal/src}/helpers/actionCreators/functionCall.ts +10 -17
  123. package/{src → universal/src}/helpers/actionCreators/stake.ts +7 -10
  124. package/{src → universal/src}/helpers/actionCreators/transfer.ts +6 -9
  125. package/{src → universal/src}/helpers/keyPair/_common/signByEd25519Key.ts +4 -4
  126. package/{src → universal/src}/helpers/keyPair/_common/signBySecp256k1Key.ts +4 -4
  127. package/{src → universal/src}/helpers/keyPair/keyPair.ts +13 -26
  128. package/{src → universal/src}/helpers/keyPair/randomEd25519KeyPair.ts +6 -9
  129. package/{src → universal/src}/helpers/keyPair/randomSecp256k1KeyPair.ts +7 -10
  130. package/{src → universal/src}/helpers/nearGas.ts +9 -25
  131. package/{src → universal/src}/helpers/tokens/nearToken.ts +10 -26
  132. package/{src → universal/src}/helpers/tokens/tokenConverter/convertTokensToUnits.ts +1 -1
  133. package/{src → universal/src}/keyServices/memoryKeyService/createFindKeyPair.ts +6 -6
  134. package/{src → universal/src}/keyServices/memoryKeyService/createMemoryKeyService.ts +8 -14
  135. package/{src → universal/src}/keyServices/memoryKeyService/createSignTransaction.ts +7 -7
  136. package/{src → universal/src}/keyServices/memoryKeyService/getKeyPairs.ts +1 -1
  137. package/{src → universal/src}/signers/memorySigner/createExecuteTransaction.ts +11 -8
  138. package/{src → universal/src}/signers/memorySigner/createMemorySigner.ts +14 -19
  139. package/{src → universal/src}/signers/memorySigner/createSignTransaction.ts +6 -6
  140. package/{src → universal/src}/signers/memorySigner/keyPool/createFindKeyForTask.ts +3 -10
  141. package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/createFullAccessPoolKeys.ts +4 -7
  142. package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/createFunctionCallPoolKeys.ts +4 -7
  143. package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/createGetPoolKeys.ts +6 -9
  144. package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/getAllowedAccessKeys.ts +2 -2
  145. package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/keyUtils.ts +2 -2
  146. package/{src → universal/src}/signers/memorySigner/keyPool/createIsKeyForTaskExist.ts +4 -11
  147. package/{src → universal/src}/signers/memorySigner/keyPool/createKeyPool.ts +2 -5
  148. package/{src → universal/src}/signers/memorySigner/taskQueue/createFindTaskForKey.ts +2 -7
  149. package/{src → universal/src}/signers/memorySigner/taskQueue/createTaskQueue.ts +2 -7
  150. package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/_common/addTask.ts +3 -6
  151. package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/_common/getAccessTypePriority.ts +4 -4
  152. package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/createAddExecuteTransactionTask.ts +2 -2
  153. package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/createAddSignTransactionTask.ts +2 -2
  154. package/{src → universal/src}/signers/memorySigner/tasker/createTasker.ts +3 -8
  155. package/{src → universal/src}/signers/memorySigner/tasker/executeTask/executeTask.ts +2 -5
  156. package/{src → universal/src}/signers/memorySigner/tasker/executeTask/executors/executeTransaction.ts +10 -10
  157. package/{src → universal/src}/signers/memorySigner/tasker/executeTask/executors/signTransaction.ts +8 -8
  158. package/{types → universal/types}/_common/accountAccessKey.ts +3 -7
  159. package/{types → universal/types}/_common/crypto.ts +2 -6
  160. package/{types → universal/types}/_common/curveString.ts +1 -1
  161. package/universal/types/_common/keyPair/keyPair.ts +43 -0
  162. package/{types → universal/types}/_common/keyPair/randomEd25519KeyPair.ts +4 -19
  163. package/{types → universal/types}/_common/keyPair/randomSecp256k1KeyPair.ts +4 -19
  164. package/{types → universal/types}/_common/nearGas.ts +12 -32
  165. package/{types → universal/types}/_common/nearToken.ts +12 -32
  166. package/universal/types/_common/transaction/rpcTransactionErrorContext.ts +61 -0
  167. package/{types → universal/types/_common/transaction}/transaction.ts +10 -37
  168. package/universal/types/actions/actions.ts +16 -0
  169. package/{types → universal/types}/actions/addKey.ts +12 -34
  170. package/{types → universal/types}/actions/deleteAccount.ts +8 -19
  171. package/{types → universal/types}/actions/deleteKey.ts +9 -20
  172. package/{types → universal/types}/actions/deployContract.ts +8 -19
  173. package/{types → universal/types}/actions/functionCall.ts +17 -29
  174. package/{types → universal/types}/actions/stake.ts +10 -20
  175. package/{types → universal/types}/actions/transfer.ts +9 -20
  176. package/{types → universal/types}/client/cache/cache.ts +5 -5
  177. package/universal/types/client/cache/getRecentBlockHash.ts +41 -0
  178. package/universal/types/client/client.ts +53 -0
  179. package/universal/types/client/createClient.ts +24 -0
  180. package/universal/types/client/methods/_common/common.ts +14 -0
  181. package/universal/types/client/methods/account/getAccountAccessKey.ts +76 -0
  182. package/universal/types/client/methods/account/getAccountAccessKeys.ts +67 -0
  183. package/universal/types/client/methods/account/getAccountInfo.ts +89 -0
  184. package/universal/types/client/methods/block/getBlock.ts +51 -0
  185. package/{types → universal/types}/client/methods/contract/callContractReadFunction.ts +40 -48
  186. package/{types → universal/types}/client/methods/contract/getContractState.ts +3 -9
  187. package/{types → universal/types}/client/methods/protocol/getGasPrice.ts +4 -4
  188. package/{types → universal/types}/client/methods/protocol/getProtocolConfig.ts +4 -4
  189. package/universal/types/client/methods/transaction/sendSignedTransaction.ts +84 -0
  190. package/universal/types/client/transport/sendRequest.ts +83 -0
  191. package/{types → universal/types}/client/transport/transport.ts +2 -10
  192. package/{types → universal/types}/keyServices/memoryKeyService/createFindKeyPair.ts +4 -4
  193. package/{types → universal/types}/keyServices/memoryKeyService/createMemoryKeyService.ts +4 -4
  194. package/{types → universal/types}/keyServices/memoryKeyService/createSignTransaction.ts +3 -3
  195. package/universal/types/keyServices/memoryKeyService/memoryKeyService.ts +33 -0
  196. package/universal/types/natError.ts +52 -0
  197. package/universal/types/signers/memorySigner/_common/errorContext.ts +27 -0
  198. package/{types/signers/memorySigner → universal/types/signers/memorySigner/inner}/keyPool.ts +14 -44
  199. package/{types/signers/memorySigner → universal/types/signers/memorySigner/inner}/taskQueue.ts +15 -33
  200. package/{types/signers/memorySigner → universal/types/signers/memorySigner/inner}/tasker.ts +4 -4
  201. package/universal/types/signers/memorySigner/memorySigner.ts +38 -0
  202. package/universal/types/signers/memorySigner/public/createExecuteTransaction.ts +72 -0
  203. package/{types/signers/memorySigner → universal/types/signers/memorySigner/public}/createMemorySigner.ts +12 -15
  204. package/universal/types/signers/memorySigner/public/createSignTransaction.ts +39 -0
  205. package/dist/index.js.map +0 -1
  206. package/src/_common/transformers/toNative/actions/deleteKey.ts +0 -11
  207. package/src/_common/transformers/toNative/actions/deployContract.ts +0 -8
  208. package/src/client/methods/account/getAccountAccessKey/getAccountAccessKey.ts +0 -62
  209. package/src/client/methods/account/getAccountAccessKeys/getAccountAccessKeys.ts +0 -59
  210. package/src/client/methods/account/getAccountInfo/getAccountInfo.ts +0 -70
  211. package/src/client/methods/block/getBlock/getBlock.ts +0 -53
  212. package/src/client/methods/transaction/sendSignedTransaction/sendSignedTransaction.ts +0 -57
  213. package/src/client/transport/sendRequest/5-sendOnce/parseJsonResponse.ts +0 -27
  214. package/src/client/transport/sendRequest/5-sendOnce/sendOnce.ts +0 -65
  215. package/src/index.ts +0 -110
  216. package/types/_common/keyPair/keyPair.ts +0 -54
  217. package/types/_common/sharedTransactionErrors.ts +0 -63
  218. package/types/client/_common/sendRequestErrorVariant.ts +0 -49
  219. package/types/client/cache/getRecentBlockHash.ts +0 -44
  220. package/types/client/client.ts +0 -100
  221. package/types/client/createClient.ts +0 -34
  222. package/types/client/methods/_common/common.ts +0 -26
  223. package/types/client/methods/_common/query.ts +0 -25
  224. package/types/client/methods/account/getAccountAccessKey.ts +0 -75
  225. package/types/client/methods/account/getAccountAccessKeys.ts +0 -63
  226. package/types/client/methods/account/getAccountInfo.ts +0 -93
  227. package/types/client/methods/block/getBlock.ts +0 -48
  228. package/types/client/methods/transaction/sendSignedTransaction.ts +0 -90
  229. package/types/client/transport/sendRequest.ts +0 -131
  230. package/types/keyServices/memoryKeyService/memoryKeyService.ts +0 -68
  231. package/types/natError.ts +0 -122
  232. package/types/signers/memorySigner/createExecuteTransaction.ts +0 -67
  233. package/types/signers/memorySigner/createSignTransaction.ts +0 -51
  234. package/types/signers/memorySigner/memorySigner.ts +0 -60
  235. package/{src → universal/src}/_common/configs/constants.ts +0 -0
  236. package/{src → universal/src}/_common/schemas/borsh/actions/addKey.ts +0 -0
  237. package/{src → universal/src}/_common/schemas/borsh/actions/createAccount.ts +0 -0
  238. package/{src → universal/src}/_common/schemas/borsh/actions/deleteAccount.ts +0 -0
  239. package/{src → universal/src}/_common/schemas/borsh/actions/deleteKey.ts +0 -0
  240. package/{src → universal/src}/_common/schemas/borsh/actions/deployContract.ts +0 -0
  241. package/{src → universal/src}/_common/schemas/borsh/actions/deployGlobalContract.ts +0 -0
  242. package/{src → universal/src}/_common/schemas/borsh/actions/functionCall.ts +0 -0
  243. package/{src → universal/src}/_common/schemas/borsh/actions/signedDelegate.ts +0 -0
  244. package/{src → universal/src}/_common/schemas/borsh/actions/stake.ts +0 -0
  245. package/{src → universal/src}/_common/schemas/borsh/actions/transfer.ts +0 -0
  246. package/{src → universal/src}/_common/schemas/borsh/actions/useGlobalContract.ts +0 -0
  247. package/{src → universal/src}/_common/schemas/borsh/delegateAction.ts +6 -6
  248. /package/{src → universal/src}/_common/schemas/borsh/index.ts +0 -0
  249. /package/{src → universal/src}/_common/schemas/borsh/publicKey.ts +0 -0
  250. /package/{src → universal/src}/_common/schemas/borsh/signature.ts +0 -0
  251. /package/{src → universal/src}/_common/schemas/zod/common/nearGas.ts +0 -0
  252. /package/{src → universal/src}/_common/schemas/zod/common/nearToken.ts +0 -0
  253. /package/{src → universal/src}/_common/schemas/zod/rpc.ts +0 -0
  254. /package/{src → universal/src}/_common/schemas/zod/transaction/actions/createAccount.ts +0 -0
  255. /package/{src → universal/src}/_common/schemas/zod/transaction/actions/deployContract.ts +0 -0
  256. /package/{src → universal/src}/_common/utils/addTo.ts +0 -0
  257. /package/{src → universal/src}/_common/utils/common.ts +0 -0
  258. /package/{src → universal/src}/_common/utils/snakeToCamelCase.ts +0 -0
  259. /package/{src → universal/src}/client/presets/mainnet.ts +0 -0
  260. /package/{src → universal/src}/client/presets/testnet.ts +0 -0
  261. /package/{src → universal/src}/helpers/tokens/tokenConverter/convertUnitsToTokens.ts +0 -0
  262. /package/{src → universal/src}/helpers/tokens/tokenConverter/helpers.ts +0 -0
  263. /package/{types → universal/types}/_common/common.ts +0 -0
  264. /package/{types → universal/types}/actions/createAccount.ts +0 -0
  265. /package/{types → universal/types}/utils.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright(c) 2025 Volodymyr Bilyk (volodymyr@lantstool.dev)
3
+ Copyright(c) 2025–2026 Volodymyr Bilyk (volodymyr@lantstool.dev)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,14 +1,16 @@
1
1
  ## NEAR API TS
2
+
2
3
  TypeScript library for interactions with Near Protocol in the browser or Node.js
3
4
 
4
5
  [GitHub Repository](https://github.com/eclipseeer/near-api-ts/tree/main)
5
6
 
6
7
  **Installation**
8
+
7
9
  ```text
8
10
  pnpm add near-api-ts
9
11
  ```
10
12
 
11
- **Node.js (esm, 22+) / Browser**
13
+ **Node.js (esm, 24+) / Browser**
12
14
 
13
15
  ```ts
14
16
  import {
@@ -0,0 +1,61 @@
1
+ // import * as z from 'zod/mini';
2
+ import { asThrowable } from '@universal/src/_common/utils/asThrowable';
3
+ import { result } from '@universal/src/_common/utils/result';
4
+ import { wrapInternalError } from '@universal/src/_common/utils/wrapInternalError';
5
+ import type { Result } from '@universal/types/_common/common';
6
+ import type { PublicKey } from '@universal/types/_common/crypto';
7
+ import type { KeyPair } from '@universal/types/_common/keyPair/keyPair';
8
+ import { createGetKeyPair } from './private/getKeyPair';
9
+ import { openIdbConnection } from './private/openIdbConnection';
10
+ import { createSafeAddKey } from './public/addKey';
11
+ import { createSafeClear } from './public/clear';
12
+ import { createSafeHasKey } from './public/hasKey';
13
+ import { createSafeRemoveKey } from './public/removeKey';
14
+ import { createSafeSignTransaction } from './public/signTransaction';
15
+
16
+ export type IdbKeyServiceContext = {
17
+ idbName: string;
18
+ idb?: IDBDatabase;
19
+ keyPairs: Map<PublicKey, KeyPair>;
20
+ getKeyPair: (publicKey: PublicKey) => Promise<Result<KeyPair, any>>;
21
+ };
22
+
23
+ export const safeCreateIdbKeyService: any = wrapInternalError(
24
+ 'CreateIdbKeyService.Internal',
25
+ (args?: any) => {
26
+ // validate
27
+
28
+ const context = {
29
+ idbName: args?.idbName ?? 'near-api-ts',
30
+ idb: undefined,
31
+ keyPairs: new Map(),
32
+ } as IdbKeyServiceContext;
33
+
34
+ openIdbConnection(context);
35
+
36
+ context.getKeyPair = createGetKeyPair(context);
37
+
38
+ const safeAddKey = createSafeAddKey(context);
39
+ const safeHasKey = createSafeHasKey(context);
40
+ const safeRemoveKey = createSafeRemoveKey(context);
41
+ const safeClear = createSafeClear(context);
42
+ const safeSignTransaction = createSafeSignTransaction(context);
43
+
44
+ return result.ok({
45
+ addKey: asThrowable(safeAddKey),
46
+ hasKey: asThrowable(safeHasKey),
47
+ removeKey: asThrowable(safeRemoveKey),
48
+ clear: asThrowable(safeClear),
49
+ signTransaction: asThrowable(safeSignTransaction),
50
+ safeAddKey,
51
+ safeHasKey,
52
+ safeRemoveKey,
53
+ safeClear,
54
+ safeSignTransaction,
55
+ });
56
+ },
57
+ );
58
+
59
+ export const throwableCreateIdbKeyService: any = asThrowable(
60
+ safeCreateIdbKeyService,
61
+ );
@@ -0,0 +1,39 @@
1
+ import { safeKeyPair } from '@universal/index';
2
+ import { result } from '@universal/src/_common/utils/result';
3
+ import type { IdbKeyServiceContext } from '../idbKeyService';
4
+
5
+ export const createGetKeyPair =
6
+ (context: IdbKeyServiceContext) =>
7
+ async (publicKey: any): Promise<any> => {
8
+ // 1. If the key pair is already in the cache, return it
9
+ if (context.keyPairs.has(publicKey))
10
+ return result.ok(context.keyPairs.get(publicKey));
11
+
12
+ if (!context.idb) return result.err(false); // TODO wait until idb is ready
13
+
14
+ // 2. Read the private key from the idb
15
+ const request = context.idb
16
+ .transaction('keyPairs', 'readonly')
17
+ .objectStore('keyPairs')
18
+ .get(publicKey);
19
+
20
+ return new Promise((resolve) => {
21
+ request.onsuccess = () => {
22
+ console.log('Key:', request.result);
23
+ if (!request.result) return resolve(result.err(false)); //Key.NotFound
24
+
25
+ // Try to create a key pair from the stored private key
26
+ const kp = safeKeyPair(request.result);
27
+ if (!kp.ok) return resolve(result.err(kp.error)); // Internal, should never happen
28
+
29
+ context.keyPairs.set(kp.value.publicKey, kp.value);
30
+ resolve(result.ok(kp.value));
31
+ };
32
+
33
+ // https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/get#exceptions
34
+ request.onerror = () => {
35
+ console.log('Error while getting key', request.error);
36
+ resolve(result.err(request.error)); // Internal
37
+ };
38
+ });
39
+ };
@@ -0,0 +1,22 @@
1
+ export const openIdbConnection = (context: any) => {
2
+ const dBOpenRequest = indexedDB.open(context.idbName, 1);
3
+
4
+ dBOpenRequest.onupgradeneeded = (event) => {
5
+ const idb = dBOpenRequest.result;
6
+ console.log('onupgradeneeded');
7
+ // Initialize Idb if it's not initialized yet
8
+ if (event.oldVersion === 0) {
9
+ idb.createObjectStore('keyPairs');
10
+ }
11
+ };
12
+
13
+ dBOpenRequest.onsuccess = () => {
14
+ console.log('onsuccess - 3');
15
+ context.idb = dBOpenRequest.result;
16
+ };
17
+
18
+ dBOpenRequest.onerror = () => {
19
+ console.log('onerror');
20
+ // Internal error
21
+ };
22
+ };
@@ -0,0 +1,32 @@
1
+ import { keyPair } from '@universal/index';
2
+ import { result } from '@universal/src/_common/utils/result';
3
+ import type { IdbKeyServiceContext } from '../idbKeyService';
4
+
5
+ export const createSafeAddKey =
6
+ (context: IdbKeyServiceContext) => async (args: any) => {
7
+ if (!context.idb) return result.err(false); // TODO wait until idb is ready
8
+
9
+ const kp = keyPair(args.privateKey);
10
+
11
+ // 2. Put the private key to the Idb
12
+ const request = context.idb
13
+ .transaction(['keyPairs'], 'readwrite')
14
+ .objectStore('keyPairs')
15
+ .put(kp.privateKey, kp.publicKey);
16
+
17
+ await new Promise((resolve, reject) => {
18
+ request.onsuccess = () => {
19
+ console.log('Key added', request.result);
20
+ context.keyPairs.set(kp.publicKey, kp);
21
+
22
+ resolve(result.ok(request.result));
23
+ };
24
+
25
+ request.onerror = () => {
26
+ console.log('Error while adding key', request.error);
27
+ reject(request.error);
28
+ };
29
+ });
30
+
31
+ return result.ok(kp);
32
+ };
@@ -0,0 +1,14 @@
1
+ import { result } from '@universal/src/_common/utils/result';
2
+ import type { IdbKeyServiceContext } from '../idbKeyService';
3
+
4
+ export const createSafeClear = (context: IdbKeyServiceContext) => async () => {
5
+ if (!context.idb) return result.err(false); // TODO wait until idb is ready
6
+
7
+ const transaction = context.idb.transaction(['keyPairs'], 'readwrite');
8
+ const keyPairs = transaction.objectStore('keyPairs');
9
+
10
+ keyPairs.clear();
11
+ context.keyPairs.clear();
12
+
13
+ return result.ok(true);
14
+ };
@@ -0,0 +1,9 @@
1
+ import { result } from '@universal/src/_common/utils/result';
2
+ import type { IdbKeyServiceContext } from '../idbKeyService';
3
+
4
+ export const createSafeHasKey =
5
+ (context: IdbKeyServiceContext) => async (args: any) => {
6
+ const keyPair = await context.getKeyPair(args.publicKey);
7
+ /// TODO rework
8
+ return result.ok(keyPair.ok);
9
+ };
@@ -0,0 +1,26 @@
1
+ import { result } from '@universal/src/_common/utils/result';
2
+ import type { IdbKeyServiceContext } from '../idbKeyService';
3
+
4
+ export const createSafeRemoveKey =
5
+ (context: IdbKeyServiceContext) =>
6
+ async (args: any): Promise<any> => {
7
+ if (!context.idb) return result.err(false); // TODO wait until idb is ready
8
+
9
+ const request = context.idb
10
+ .transaction('keyPairs', 'readwrite')
11
+ .objectStore('keyPairs')
12
+ .delete(args.publicKey);
13
+
14
+ return new Promise((resolve) => {
15
+ request.onsuccess = () => {
16
+ console.log('Key deleted', request.result);
17
+ context.keyPairs.delete(args.publicKey);
18
+ resolve(result.ok(request.result));
19
+ };
20
+
21
+ request.onerror = () => {
22
+ console.log('Error while deleting key', request.error);
23
+ resolve(result.err(request.error));
24
+ };
25
+ });
26
+ };
@@ -0,0 +1,59 @@
1
+ import { createNatError } from '@universal/src/_common/natError';
2
+ import { TransactionSchema } from '@universal/src/_common/schemas/zod/transaction/transaction';
3
+ import { getTransactionHash } from '@universal/src/_common/utils/getTransactionHash';
4
+ import { result } from '@universal/src/_common/utils/result';
5
+ import { wrapInternalError } from '@universal/src/_common/utils/wrapInternalError';
6
+ import * as z from 'zod/mini';
7
+ import type { IdbKeyServiceContext } from '../idbKeyService';
8
+
9
+ const SignTransactionArgsSchema = z.object({
10
+ transaction: TransactionSchema,
11
+ });
12
+
13
+ export const createSafeSignTransaction: any = (context: IdbKeyServiceContext) =>
14
+ wrapInternalError(
15
+ `IdbKeyService.SignTransaction.Internal`,
16
+ async (args: any) => {
17
+ const validArgs = SignTransactionArgsSchema.safeParse(args);
18
+
19
+ if (!validArgs.success)
20
+ return result.err(
21
+ createNatError({
22
+ kind: `IdbKeyService.SignTransaction.Args.InvalidSchema`,
23
+ context: { zodError: validArgs.error },
24
+ }),
25
+ );
26
+
27
+ const { transaction: innerTransaction } = validArgs.data;
28
+
29
+ const keyPair = await context.getKeyPair(
30
+ innerTransaction.signerPublicKey.publicKey,
31
+ );
32
+
33
+ // TODO Think if it's possible to wrap into some helper function
34
+ if (!keyPair.ok) {
35
+ // if (keyPair.error.kind === 'MemoryKeyService.FindKeyPair.NotFound')
36
+ // return result.err(
37
+ // createNatError({
38
+ // kind: 'MemoryKeyService.SignTransaction.SigningKeyPair.NotFound',
39
+ // context: {
40
+ // signerPublicKey: innerTransaction.signerPublicKey.publicKey,
41
+ // },
42
+ // }),
43
+ // );
44
+ console.log(keyPair);
45
+ throw keyPair.error;
46
+ }
47
+
48
+ const { transactionHash, u8TransactionHash } =
49
+ getTransactionHash(innerTransaction);
50
+
51
+ const { signature } = keyPair.value.sign(u8TransactionHash); // todo make async?
52
+
53
+ return result.ok({
54
+ transaction: args.transaction,
55
+ transactionHash,
56
+ signature,
57
+ });
58
+ },
59
+ );
@@ -0,0 +1,7 @@
1
+ import type { InternalErrorContext, InvalidSchemaErrorContext } from '@universal/types/natError';
2
+
3
+ export interface IdbKeyServicePublicErrorRegister {
4
+ 'CreateIdbKeyService.Internal': InternalErrorContext;
5
+ 'IdbKeyService.SignTransaction.Args.InvalidSchema': InvalidSchemaErrorContext;
6
+ 'IdbKeyService.SignTransaction.Internal': InternalErrorContext;
7
+ }
@@ -0,0 +1,5 @@
1
+ import type { IdbKeyServicePublicErrorRegister } from './idbKeyService/idbKeyService';
2
+
3
+ declare module '@universal/types/natError' {
4
+ interface NatPublicErrorRegistry extends IdbKeyServicePublicErrorRegister {}
5
+ }