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.
- package/{LICENSE → LICENSE.md} +1 -1
- package/README.md +3 -1
- package/browser/src/idbKeyService/idbKeyService.ts +61 -0
- package/browser/src/idbKeyService/private/getKeyPair.ts +39 -0
- package/browser/src/idbKeyService/private/openIdbConnection.ts +22 -0
- package/browser/src/idbKeyService/public/addKey.ts +32 -0
- package/browser/src/idbKeyService/public/clear.ts +14 -0
- package/browser/src/idbKeyService/public/hasKey.ts +9 -0
- package/browser/src/idbKeyService/public/removeKey.ts +26 -0
- package/browser/src/idbKeyService/public/signTransaction.ts +59 -0
- package/browser/types/idbKeyService/idbKeyService.ts +7 -0
- package/browser/types/natError.ts +5 -0
- package/dist/browser/index.d.ts +1365 -0
- package/dist/browser/index.js +4416 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/node/index.d.ts +1364 -0
- package/dist/node/index.js +4405 -0
- package/dist/node/index.js.map +1 -0
- package/dist/{index.d.ts → universal/index.d.ts} +881 -985
- package/dist/{index.js → universal/index.js} +2660 -2668
- package/dist/universal/index.js.map +1 -0
- package/node/src/fileKeyService/fileKeyService.ts +76 -0
- package/node/src/fileKeyService/private/getKeyPair.ts +20 -0
- package/node/src/fileKeyService/public/addKeyPair.ts +30 -0
- package/node/src/fileKeyService/public/clear.ts +16 -0
- package/node/src/fileKeyService/public/hasKeyPair.ts +10 -0
- package/node/src/fileKeyService/public/removeKeyPair.ts +16 -0
- package/node/src/fileKeyService/public/signTransaction.ts +58 -0
- package/node/types/fileKeyService/fileKeyService.ts +7 -0
- package/node/types/natError.ts +5 -0
- package/package.json +54 -28
- package/{src → universal/src}/_common/natError.ts +5 -5
- package/{src → universal/src}/_common/schemas/borsh/transaction.ts +8 -8
- package/{src → universal/src}/_common/schemas/zod/client.ts +1 -4
- package/{src → universal/src}/_common/schemas/zod/common/accountId.ts +1 -1
- package/{src → universal/src}/_common/schemas/zod/common/common.ts +1 -1
- package/{src → universal/src}/_common/schemas/zod/common/cryptoHash.ts +2 -2
- package/{src → universal/src}/_common/schemas/zod/common/curveString.ts +3 -3
- package/{src → universal/src}/_common/schemas/zod/common/privateKey.ts +2 -2
- package/{src → universal/src}/_common/schemas/zod/common/publicKey.ts +2 -2
- package/{src → universal/src}/_common/schemas/zod/common/signature.ts +2 -2
- package/{src → universal/src}/_common/schemas/zod/transaction/actions/addKey.ts +4 -4
- package/{src → universal/src}/_common/schemas/zod/transaction/actions/deleteAccount.ts +1 -1
- package/{src → universal/src}/_common/schemas/zod/transaction/actions/deleteKey.ts +1 -1
- package/{src → universal/src}/_common/schemas/zod/transaction/actions/functionCall.ts +3 -3
- package/{src → universal/src}/_common/schemas/zod/transaction/actions/stake.ts +2 -2
- package/{src → universal/src}/_common/schemas/zod/transaction/actions/transfer.ts +1 -1
- package/{src → universal/src}/_common/schemas/zod/transaction/transaction.ts +13 -16
- package/{src → universal/src}/_common/transformers/toBorshBytes/transaction.ts +4 -13
- package/{src → universal/src}/_common/transformers/toCurveString.ts +1 -4
- package/{src → universal/src}/_common/transformers/toNative/actions/addKey.ts +3 -3
- package/{src → universal/src}/_common/transformers/toNative/actions/createAccount.ts +1 -1
- package/{src → universal/src}/_common/transformers/toNative/actions/deleteAccount.ts +2 -2
- package/universal/src/_common/transformers/toNative/actions/deleteKey.ts +11 -0
- package/universal/src/_common/transformers/toNative/actions/deployContract.ts +8 -0
- package/{src → universal/src}/_common/transformers/toNative/actions/functionCall.ts +3 -3
- package/{src → universal/src}/_common/transformers/toNative/actions/stake.ts +3 -3
- package/{src → universal/src}/_common/transformers/toNative/actions/transfer.ts +2 -2
- package/{src → universal/src}/_common/transformers/toNative/blockReference.ts +1 -1
- package/{src → universal/src}/_common/transformers/toNative/publicKey.ts +2 -2
- package/{src → universal/src}/_common/transformers/toNative/signature.ts +2 -2
- package/{src → universal/src}/_common/transformers/toNative/transaction.ts +12 -20
- package/{src → universal/src}/_common/utils/asThrowable.ts +1 -1
- package/{src → universal/src}/_common/utils/getTransactionHash.ts +3 -3
- package/{src → universal/src}/_common/utils/repackError.ts +4 -3
- package/{src → universal/src}/_common/utils/result.ts +1 -1
- package/{src → universal/src}/_common/utils/sleep.ts +2 -2
- package/{src → universal/src}/_common/utils/wrapInternalError.ts +7 -7
- package/{src → universal/src}/client/cache/createCache.ts +2 -2
- package/{src → universal/src}/client/cache/getRecentBlockHash.ts +22 -24
- package/{src → universal/src}/client/cache/getStoragePricePerByte.ts +15 -11
- package/{src → universal/src}/client/createClient.ts +10 -16
- package/{src → universal/src}/client/methods/account/_common/transformAccessKey.ts +3 -3
- package/universal/src/client/methods/account/getAccountAccessKey/getAccountAccessKey.ts +61 -0
- package/{src → universal/src}/client/methods/account/getAccountAccessKey/handleError.ts +7 -12
- package/{src → universal/src}/client/methods/account/getAccountAccessKey/handleResult.ts +8 -8
- package/universal/src/client/methods/account/getAccountAccessKeys/getAccountAccessKeys.ts +58 -0
- package/{src → universal/src}/client/methods/account/getAccountAccessKeys/handleError.ts +7 -12
- package/{src → universal/src}/client/methods/account/getAccountAccessKeys/handleResult.ts +8 -8
- package/universal/src/client/methods/account/getAccountInfo/getAccountInfo.ts +71 -0
- package/{src → universal/src}/client/methods/account/getAccountInfo/handleError.ts +7 -13
- package/{src → universal/src}/client/methods/account/getAccountInfo/handleResult/calculateAccountBalance.ts +2 -2
- package/{src → universal/src}/client/methods/account/getAccountInfo/handleResult/handleResult.ts +9 -12
- package/universal/src/client/methods/block/getBlock/getBlock.ts +52 -0
- package/{src → universal/src}/client/methods/block/getBlock/handleError.ts +8 -13
- package/{src → universal/src}/client/methods/block/getBlock/handleResult.ts +6 -6
- package/{src → universal/src}/client/methods/contract/callContractReadFunction/callContractReadFunction.ts +17 -21
- package/{src → universal/src}/client/methods/contract/callContractReadFunction/handleError.ts +7 -13
- package/{src → universal/src}/client/methods/contract/callContractReadFunction/handleResult/deserializeCallResult.ts +7 -7
- package/{src → universal/src}/client/methods/contract/callContractReadFunction/handleResult/handleResult.ts +8 -8
- package/{src → universal/src}/client/methods/contract/callContractReadFunction/serializeFunctionArgs.ts +8 -8
- package/{src → universal/src}/client/methods/contract/getContractState.ts +4 -11
- package/{src → universal/src}/client/methods/protocol/getGasPrice.ts +2 -8
- package/{src → universal/src}/client/methods/protocol/getProtocolConfig.ts +3 -7
- package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleError/handleError.ts +7 -12
- package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleError/handleInvalidTransaction.ts +9 -14
- package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleResult/handleActionError.ts +6 -11
- package/{src → universal/src}/client/methods/transaction/sendSignedTransaction/handleResult/handleResult.ts +7 -7
- package/universal/src/client/methods/transaction/sendSignedTransaction/sendSignedTransaction.ts +60 -0
- package/{src → universal/src}/client/transport/createTransport.ts +3 -10
- package/{src → universal/src}/client/transport/rpcEndpoints.ts +1 -4
- package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/_common/getAvailableRpcs.ts +6 -10
- package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/createExternalAbortSignal.ts +2 -2
- package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/createRequestTimeout.ts +4 -4
- package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/createSendRequest.ts +30 -21
- package/{src → universal/src}/client/transport/sendRequest/1-createSendRequest/handleMaybeUnknownBlock.ts +7 -7
- package/{src → universal/src}/client/transport/sendRequest/2-tryMultipleRounds/tryMultipleRounds.ts +15 -16
- package/{src → universal/src}/client/transport/sendRequest/3-tryOneRound/tryOneRound.ts +15 -16
- package/{src → universal/src}/client/transport/sendRequest/4-sendWithRetry/sendWithRetry.ts +11 -12
- package/{src → universal/src}/client/transport/sendRequest/5-sendOnce/extractRpcErrors.ts +15 -14
- package/{src → universal/src}/client/transport/sendRequest/5-sendOnce/fetchData/createAttemptTimeout.ts +4 -4
- package/{src → universal/src}/client/transport/sendRequest/5-sendOnce/fetchData/fetchData.ts +14 -14
- package/universal/src/client/transport/sendRequest/5-sendOnce/parseJsonResponse.ts +27 -0
- package/universal/src/client/transport/sendRequest/5-sendOnce/sendOnce.ts +68 -0
- package/{src → universal/src}/client/transport/transportPolicy.ts +29 -21
- package/{src → universal/src}/helpers/actionCreators/addFullAccessKey.ts +6 -9
- package/{src → universal/src}/helpers/actionCreators/addFunctionCallKey.ts +9 -12
- package/{src → universal/src}/helpers/actionCreators/createAccount.ts +1 -1
- package/{src → universal/src}/helpers/actionCreators/deleteAccount.ts +6 -9
- package/{src → universal/src}/helpers/actionCreators/deleteKey.ts +6 -9
- package/{src → universal/src}/helpers/actionCreators/deployContract.ts +6 -9
- package/{src → universal/src}/helpers/actionCreators/functionCall.ts +10 -17
- package/{src → universal/src}/helpers/actionCreators/stake.ts +7 -10
- package/{src → universal/src}/helpers/actionCreators/transfer.ts +6 -9
- package/{src → universal/src}/helpers/keyPair/_common/signByEd25519Key.ts +4 -4
- package/{src → universal/src}/helpers/keyPair/_common/signBySecp256k1Key.ts +4 -4
- package/{src → universal/src}/helpers/keyPair/keyPair.ts +13 -26
- package/{src → universal/src}/helpers/keyPair/randomEd25519KeyPair.ts +6 -9
- package/{src → universal/src}/helpers/keyPair/randomSecp256k1KeyPair.ts +7 -10
- package/{src → universal/src}/helpers/nearGas.ts +9 -25
- package/{src → universal/src}/helpers/tokens/nearToken.ts +10 -26
- package/{src → universal/src}/helpers/tokens/tokenConverter/convertTokensToUnits.ts +1 -1
- package/{src → universal/src}/keyServices/memoryKeyService/createFindKeyPair.ts +6 -6
- package/{src → universal/src}/keyServices/memoryKeyService/createMemoryKeyService.ts +8 -14
- package/{src → universal/src}/keyServices/memoryKeyService/createSignTransaction.ts +7 -7
- package/{src → universal/src}/keyServices/memoryKeyService/getKeyPairs.ts +1 -1
- package/{src → universal/src}/signers/memorySigner/createExecuteTransaction.ts +11 -8
- package/{src → universal/src}/signers/memorySigner/createMemorySigner.ts +14 -19
- package/{src → universal/src}/signers/memorySigner/createSignTransaction.ts +6 -6
- package/{src → universal/src}/signers/memorySigner/keyPool/createFindKeyForTask.ts +3 -10
- package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/createFullAccessPoolKeys.ts +4 -7
- package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/createFunctionCallPoolKeys.ts +4 -7
- package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/createGetPoolKeys.ts +6 -9
- package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/getAllowedAccessKeys.ts +2 -2
- package/{src → universal/src}/signers/memorySigner/keyPool/createGetPoolKeys/keyUtils.ts +2 -2
- package/{src → universal/src}/signers/memorySigner/keyPool/createIsKeyForTaskExist.ts +4 -11
- package/{src → universal/src}/signers/memorySigner/keyPool/createKeyPool.ts +2 -5
- package/{src → universal/src}/signers/memorySigner/taskQueue/createFindTaskForKey.ts +2 -7
- package/{src → universal/src}/signers/memorySigner/taskQueue/createTaskQueue.ts +2 -7
- package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/_common/addTask.ts +3 -6
- package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/_common/getAccessTypePriority.ts +4 -4
- package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/createAddExecuteTransactionTask.ts +2 -2
- package/{src → universal/src}/signers/memorySigner/taskQueue/taskCreators/createAddSignTransactionTask.ts +2 -2
- package/{src → universal/src}/signers/memorySigner/tasker/createTasker.ts +3 -8
- package/{src → universal/src}/signers/memorySigner/tasker/executeTask/executeTask.ts +2 -5
- package/{src → universal/src}/signers/memorySigner/tasker/executeTask/executors/executeTransaction.ts +10 -10
- package/{src → universal/src}/signers/memorySigner/tasker/executeTask/executors/signTransaction.ts +8 -8
- package/{types → universal/types}/_common/accountAccessKey.ts +3 -7
- package/{types → universal/types}/_common/crypto.ts +2 -6
- package/{types → universal/types}/_common/curveString.ts +1 -1
- package/universal/types/_common/keyPair/keyPair.ts +43 -0
- package/{types → universal/types}/_common/keyPair/randomEd25519KeyPair.ts +4 -19
- package/{types → universal/types}/_common/keyPair/randomSecp256k1KeyPair.ts +4 -19
- package/{types → universal/types}/_common/nearGas.ts +12 -32
- package/{types → universal/types}/_common/nearToken.ts +12 -32
- package/universal/types/_common/transaction/rpcTransactionErrorContext.ts +61 -0
- package/{types → universal/types/_common/transaction}/transaction.ts +10 -37
- package/universal/types/actions/actions.ts +16 -0
- package/{types → universal/types}/actions/addKey.ts +12 -34
- package/{types → universal/types}/actions/deleteAccount.ts +8 -19
- package/{types → universal/types}/actions/deleteKey.ts +9 -20
- package/{types → universal/types}/actions/deployContract.ts +8 -19
- package/{types → universal/types}/actions/functionCall.ts +17 -29
- package/{types → universal/types}/actions/stake.ts +10 -20
- package/{types → universal/types}/actions/transfer.ts +9 -20
- package/{types → universal/types}/client/cache/cache.ts +5 -5
- package/universal/types/client/cache/getRecentBlockHash.ts +41 -0
- package/universal/types/client/client.ts +53 -0
- package/universal/types/client/createClient.ts +24 -0
- package/universal/types/client/methods/_common/common.ts +14 -0
- package/universal/types/client/methods/account/getAccountAccessKey.ts +76 -0
- package/universal/types/client/methods/account/getAccountAccessKeys.ts +67 -0
- package/universal/types/client/methods/account/getAccountInfo.ts +89 -0
- package/universal/types/client/methods/block/getBlock.ts +51 -0
- package/{types → universal/types}/client/methods/contract/callContractReadFunction.ts +40 -48
- package/{types → universal/types}/client/methods/contract/getContractState.ts +3 -9
- package/{types → universal/types}/client/methods/protocol/getGasPrice.ts +4 -4
- package/{types → universal/types}/client/methods/protocol/getProtocolConfig.ts +4 -4
- package/universal/types/client/methods/transaction/sendSignedTransaction.ts +84 -0
- package/universal/types/client/transport/sendRequest.ts +83 -0
- package/{types → universal/types}/client/transport/transport.ts +2 -10
- package/{types → universal/types}/keyServices/memoryKeyService/createFindKeyPair.ts +4 -4
- package/{types → universal/types}/keyServices/memoryKeyService/createMemoryKeyService.ts +4 -4
- package/{types → universal/types}/keyServices/memoryKeyService/createSignTransaction.ts +3 -3
- package/universal/types/keyServices/memoryKeyService/memoryKeyService.ts +33 -0
- package/universal/types/natError.ts +52 -0
- package/universal/types/signers/memorySigner/_common/errorContext.ts +27 -0
- package/{types/signers/memorySigner → universal/types/signers/memorySigner/inner}/keyPool.ts +14 -44
- package/{types/signers/memorySigner → universal/types/signers/memorySigner/inner}/taskQueue.ts +15 -33
- package/{types/signers/memorySigner → universal/types/signers/memorySigner/inner}/tasker.ts +4 -4
- package/universal/types/signers/memorySigner/memorySigner.ts +38 -0
- package/universal/types/signers/memorySigner/public/createExecuteTransaction.ts +72 -0
- package/{types/signers/memorySigner → universal/types/signers/memorySigner/public}/createMemorySigner.ts +12 -15
- package/universal/types/signers/memorySigner/public/createSignTransaction.ts +39 -0
- package/dist/index.js.map +0 -1
- package/src/_common/transformers/toNative/actions/deleteKey.ts +0 -11
- package/src/_common/transformers/toNative/actions/deployContract.ts +0 -8
- package/src/client/methods/account/getAccountAccessKey/getAccountAccessKey.ts +0 -62
- package/src/client/methods/account/getAccountAccessKeys/getAccountAccessKeys.ts +0 -59
- package/src/client/methods/account/getAccountInfo/getAccountInfo.ts +0 -70
- package/src/client/methods/block/getBlock/getBlock.ts +0 -53
- package/src/client/methods/transaction/sendSignedTransaction/sendSignedTransaction.ts +0 -57
- package/src/client/transport/sendRequest/5-sendOnce/parseJsonResponse.ts +0 -27
- package/src/client/transport/sendRequest/5-sendOnce/sendOnce.ts +0 -65
- package/src/index.ts +0 -110
- package/types/_common/keyPair/keyPair.ts +0 -54
- package/types/_common/sharedTransactionErrors.ts +0 -63
- package/types/client/_common/sendRequestErrorVariant.ts +0 -49
- package/types/client/cache/getRecentBlockHash.ts +0 -44
- package/types/client/client.ts +0 -100
- package/types/client/createClient.ts +0 -34
- package/types/client/methods/_common/common.ts +0 -26
- package/types/client/methods/_common/query.ts +0 -25
- package/types/client/methods/account/getAccountAccessKey.ts +0 -75
- package/types/client/methods/account/getAccountAccessKeys.ts +0 -63
- package/types/client/methods/account/getAccountInfo.ts +0 -93
- package/types/client/methods/block/getBlock.ts +0 -48
- package/types/client/methods/transaction/sendSignedTransaction.ts +0 -90
- package/types/client/transport/sendRequest.ts +0 -131
- package/types/keyServices/memoryKeyService/memoryKeyService.ts +0 -68
- package/types/natError.ts +0 -122
- package/types/signers/memorySigner/createExecuteTransaction.ts +0 -67
- package/types/signers/memorySigner/createSignTransaction.ts +0 -51
- package/types/signers/memorySigner/memorySigner.ts +0 -60
- package/{src → universal/src}/_common/configs/constants.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/addKey.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/createAccount.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/deleteAccount.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/deleteKey.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/deployContract.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/deployGlobalContract.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/functionCall.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/signedDelegate.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/stake.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/transfer.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/actions/useGlobalContract.ts +0 -0
- package/{src → universal/src}/_common/schemas/borsh/delegateAction.ts +6 -6
- /package/{src → universal/src}/_common/schemas/borsh/index.ts +0 -0
- /package/{src → universal/src}/_common/schemas/borsh/publicKey.ts +0 -0
- /package/{src → universal/src}/_common/schemas/borsh/signature.ts +0 -0
- /package/{src → universal/src}/_common/schemas/zod/common/nearGas.ts +0 -0
- /package/{src → universal/src}/_common/schemas/zod/common/nearToken.ts +0 -0
- /package/{src → universal/src}/_common/schemas/zod/rpc.ts +0 -0
- /package/{src → universal/src}/_common/schemas/zod/transaction/actions/createAccount.ts +0 -0
- /package/{src → universal/src}/_common/schemas/zod/transaction/actions/deployContract.ts +0 -0
- /package/{src → universal/src}/_common/utils/addTo.ts +0 -0
- /package/{src → universal/src}/_common/utils/common.ts +0 -0
- /package/{src → universal/src}/_common/utils/snakeToCamelCase.ts +0 -0
- /package/{src → universal/src}/client/presets/mainnet.ts +0 -0
- /package/{src → universal/src}/client/presets/testnet.ts +0 -0
- /package/{src → universal/src}/helpers/tokens/tokenConverter/convertUnitsToTokens.ts +0 -0
- /package/{src → universal/src}/helpers/tokens/tokenConverter/helpers.ts +0 -0
- /package/{types → universal/types}/_common/common.ts +0 -0
- /package/{types → universal/types}/actions/createAccount.ts +0 -0
- /package/{types → universal/types}/utils.ts +0 -0
package/{LICENSE → LICENSE.md}
RENAMED
|
@@ -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,
|
|
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
|
+
}
|