@aeternity/aepp-sdk 12.0.0 → 12.1.2
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/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -15
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +2 -1
- package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +20765 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +7 -7
- package/es/AeSdk.mjs.map +1 -1
- package/es/AeSdkAepp.d.ts +4 -3
- package/es/AeSdkAepp.mjs +2 -1
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkBase.d.ts +22 -21
- package/es/AeSdkBase.mjs +25 -21
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkWallet.d.ts +4 -3
- package/es/AeSdkWallet.mjs +5 -1
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/Node.d.ts +7 -10
- package/es/Node.mjs +63 -57
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +7 -4
- package/es/account/Base.mjs +3 -3
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Memory.d.ts +5 -4
- package/es/account/Memory.mjs +24 -2
- package/es/account/Memory.mjs.map +1 -1
- package/es/account/Rpc.d.ts +6 -6
- package/es/account/Rpc.mjs +3 -2
- package/es/account/Rpc.mjs.map +1 -1
- package/es/aens.d.ts +27 -14
- package/es/aens.mjs +27 -21
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/Browser.d.ts +2 -1
- package/es/aepp-wallet-communication/connection/Browser.mjs +5 -2
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +5 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection-proxy.d.ts +1 -0
- package/es/aepp-wallet-communication/connection-proxy.mjs +1 -0
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -5
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/types.d.ts +8 -8
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
- package/es/aepp-wallet-communication/schema.d.ts +17 -2
- package/es/aepp-wallet-communication/schema.mjs +54 -17
- package/es/aepp-wallet-communication/schema.mjs.map +1 -1
- package/es/aepp-wallet-communication/wallet-detector.d.ts +2 -1
- package/es/aepp-wallet-communication/wallet-detector.mjs +2 -3
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
- package/es/apis/node/models/index.d.ts +6 -2
- package/es/apis/node/models/index.mjs.map +1 -1
- package/es/apis/node/models/mappers.mjs +4 -2
- package/es/apis/node/models/mappers.mjs.map +1 -1
- package/es/chain.d.ts +92 -64
- package/es/chain.mjs +190 -154
- package/es/chain.mjs.map +1 -1
- package/es/channel/handlers.d.ts +3 -3
- package/es/channel/handlers.mjs +42 -44
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/index.d.ts +43 -52
- package/es/channel/index.mjs +46 -49
- package/es/channel/index.mjs.map +1 -1
- package/es/channel/internal.d.ts +16 -15
- package/es/channel/internal.mjs +67 -62
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Compiler.d.ts +1 -0
- package/es/contract/Compiler.mjs +5 -4
- package/es/contract/Compiler.mjs.map +1 -1
- package/es/contract/aci.d.ts +17 -15
- package/es/contract/aci.mjs +58 -45
- package/es/contract/aci.mjs.map +1 -1
- package/es/contract/ga.d.ts +16 -15
- package/es/contract/ga.mjs +12 -7
- package/es/contract/ga.mjs.map +1 -1
- package/es/contract/methods.d.ts +9 -6
- package/es/contract/methods.mjs +9 -6
- package/es/contract/methods.mjs.map +1 -1
- package/es/deprecated/index.d.ts +143 -0
- package/es/deprecated/index.mjs +162 -0
- package/es/deprecated/index.mjs.map +1 -0
- package/es/deprecated/methods.d.ts +18 -0
- package/es/deprecated/methods.mjs +26 -0
- package/es/deprecated/methods.mjs.map +1 -0
- package/es/index.d.ts +4 -1
- package/es/index.mjs +4 -1
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +69 -62
- package/es/oracle.mjs +121 -103
- package/es/oracle.mjs.map +1 -1
- package/es/spend.d.ts +16 -15
- package/es/spend.mjs +19 -30
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/address.d.ts +25 -0
- package/es/tx/builder/address.mjs +45 -0
- package/es/tx/builder/address.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +55 -26
- package/es/tx/builder/constants.mjs +60 -38
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
- package/es/tx/builder/field-types/coin-amount.mjs +26 -0
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
- package/es/tx/builder/field-types/deposit.d.ts +15 -0
- package/es/tx/builder/field-types/deposit.mjs +19 -0
- package/es/tx/builder/field-types/deposit.mjs.map +1 -0
- package/es/tx/builder/field-types/fee.d.ts +25 -0
- package/es/tx/{min-fee.mjs → builder/field-types/fee.mjs} +62 -60
- package/es/tx/builder/field-types/fee.mjs.map +1 -0
- package/es/tx/builder/field-types/field.d.ts +6 -0
- package/es/tx/builder/field-types/field.mjs +15 -0
- package/es/tx/builder/field-types/field.mjs.map +1 -0
- package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
- package/es/tx/builder/field-types/gas-limit.mjs +33 -0
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
- package/es/tx/builder/field-types/gas-price.d.ts +8 -0
- package/es/tx/builder/field-types/gas-price.mjs +18 -0
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
- package/es/tx/builder/field-types/index.d.ts +70 -0
- package/es/tx/builder/field-types/index.mjs +25 -0
- package/es/tx/builder/field-types/index.mjs.map +1 -0
- package/es/tx/builder/field-types/name-fee.d.ts +20 -0
- package/es/tx/builder/field-types/name-fee.mjs +24 -0
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
- package/es/tx/builder/field-types/name-id.d.ts +14 -0
- package/es/tx/builder/field-types/name-id.mjs +19 -0
- package/es/tx/builder/field-types/name-id.mjs.map +1 -0
- package/es/tx/builder/field-types/name.d.ts +13 -0
- package/es/tx/builder/field-types/name.mjs +18 -0
- package/es/tx/builder/field-types/name.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
- package/es/tx/builder/field-types/short-u-int.mjs +12 -0
- package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
- package/es/tx/builder/field-types/u-int.d.ts +8 -0
- package/es/tx/builder/field-types/u-int.mjs +14 -0
- package/es/tx/builder/field-types/u-int.mjs.map +1 -0
- package/es/tx/builder/helpers.d.ts +27 -33
- package/es/tx/builder/helpers.mjs +41 -47
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +25 -12
- package/es/tx/builder/index.mjs +74 -83
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +995 -144
- package/es/tx/builder/schema.mjs +121 -170
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +28 -27
- package/es/tx/index.mjs +97 -117
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/validator.d.ts +4 -3
- package/es/tx/validator.mjs +79 -92
- package/es/tx/validator.mjs.map +1 -1
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -1
- package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -1
- package/es/typings/bip32-path/index.d.mjs.map +1 -1
- package/es/typings/blakejs/index.d.mjs.map +1 -1
- package/es/typings/sha-js/index.d.mjs +2 -0
- package/es/typings/sha-js/index.d.mjs.map +1 -0
- package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -1
- package/es/utils/amount-formatter.d.ts +9 -9
- package/es/utils/amount-formatter.mjs +17 -17
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.mjs +7 -7
- package/es/utils/autorest.mjs.map +1 -1
- package/es/utils/bignumber.mjs +2 -1
- package/es/utils/bignumber.mjs.map +1 -1
- package/es/utils/bytes.mjs +1 -1
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +8 -23
- package/es/utils/crypto.mjs +15 -41
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder-types.d.ts +61 -0
- package/es/utils/encoder-types.mjs +36 -0
- package/es/utils/encoder-types.mjs.map +1 -0
- package/es/utils/encoder.d.ts +6 -7
- package/es/utils/encoder.mjs +42 -26
- package/es/utils/encoder.mjs.map +1 -1
- package/es/utils/errors.d.ts +1 -11
- package/es/utils/errors.mjs +4 -20
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +18 -2
- package/es/utils/hd-wallet.mjs +64 -34
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.mjs +2 -2
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.mjs +4 -2
- package/es/utils/keystore.mjs.map +1 -1
- package/es/utils/mptree.d.ts +2 -2
- package/es/utils/mptree.mjs +11 -6
- package/es/utils/mptree.mjs.map +1 -1
- package/es/utils/other.d.ts +8 -2
- package/es/utils/other.mjs +15 -3
- package/es/utils/other.mjs.map +1 -1
- package/es/utils/semver-satisfies.d.ts +1 -1
- package/es/utils/semver-satisfies.mjs +2 -2
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/es/utils/string.mjs.map +1 -1
- package/package.json +36 -34
- package/src/AeSdk.ts +30 -27
- package/src/AeSdkAepp.ts +93 -84
- package/src/AeSdkBase.ts +148 -130
- package/src/AeSdkWallet.ts +172 -156
- package/src/Node.ts +108 -102
- package/src/account/Base.ts +42 -32
- package/src/account/Memory.ts +45 -30
- package/src/account/Rpc.ts +32 -30
- package/src/aens.ts +124 -108
- package/src/aepp-wallet-communication/connection/Browser.ts +18 -15
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +22 -21
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +63 -52
- package/src/aepp-wallet-communication/connection-proxy.ts +8 -7
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +67 -61
- package/src/aepp-wallet-communication/rpc/types.ts +32 -32
- package/src/aepp-wallet-communication/schema.ts +117 -74
- package/src/aepp-wallet-communication/wallet-detector.ts +29 -28
- package/src/apis/node/code-model-v4.yaml +54 -20
- package/src/apis/node/models/index.ts +6 -2
- package/src/apis/node/models/mappers.ts +4 -2
- package/src/chain.ts +286 -228
- package/src/channel/handlers.ts +424 -372
- package/src/channel/index.ts +285 -251
- package/src/channel/internal.ts +248 -232
- package/src/contract/Compiler.ts +22 -21
- package/src/contract/aci.ts +267 -258
- package/src/contract/ga.ts +93 -72
- package/src/contract/methods.ts +32 -27
- package/src/deprecated/index.ts +172 -0
- package/src/deprecated/methods.ts +25 -0
- package/src/index.ts +37 -32
- package/src/oracle.ts +211 -189
- package/src/spend.ts +82 -70
- package/src/tx/builder/address.ts +50 -0
- package/src/tx/builder/constants.ts +82 -52
- package/src/tx/builder/field-types/coin-amount.ts +27 -0
- package/src/tx/builder/field-types/deposit.ts +21 -0
- package/src/tx/builder/field-types/fee.ts +143 -0
- package/src/tx/builder/field-types/field.ts +9 -0
- package/src/tx/builder/field-types/gas-limit.ts +41 -0
- package/src/tx/builder/field-types/gas-price.ts +16 -0
- package/src/tx/builder/field-types/index.ts +45 -0
- package/src/tx/builder/field-types/name-fee.ts +32 -0
- package/src/tx/builder/field-types/name-id.ts +20 -0
- package/src/tx/builder/field-types/name.ts +18 -0
- package/src/tx/builder/field-types/short-u-int.ts +11 -0
- package/src/tx/builder/field-types/u-int.ts +16 -0
- package/src/tx/builder/helpers.ts +112 -117
- package/src/tx/builder/index.ts +203 -197
- package/src/tx/builder/schema.ts +421 -465
- package/src/tx/index.ts +128 -135
- package/src/tx/validator.ts +165 -161
- package/src/typings/@aeternity__argon2-browser/index.d.ts +1 -1
- package/src/typings/@aeternity__uuid/index.d.ts +3 -1
- package/src/typings/bip32-path/index.d.ts +6 -6
- package/src/typings/blakejs/index.d.ts +4 -32
- package/src/typings/sha-js/index.d.ts +5 -0
- package/src/typings/tweetnacl-auth/index.d.ts +2 -2
- package/src/utils/amount-formatter.ts +41 -41
- package/src/utils/autorest.ts +57 -54
- package/src/utils/bignumber.ts +7 -6
- package/src/utils/bytes.ts +19 -19
- package/src/utils/crypto.ts +82 -94
- package/src/utils/encoder-types.ts +63 -0
- package/src/utils/encoder.ts +104 -56
- package/src/utils/errors.ts +246 -264
- package/src/utils/hd-wallet.ts +114 -82
- package/src/utils/json-big.ts +16 -15
- package/src/utils/keystore.ts +65 -62
- package/src/utils/mptree.ts +59 -56
- package/src/utils/other.ts +26 -18
- package/src/utils/semver-satisfies.ts +15 -11
- package/src/utils/string.ts +10 -10
- package/es/tx/builder/field-types.d.ts +0 -62
- package/es/tx/builder/field-types.mjs +0 -126
- package/es/tx/builder/field-types.mjs.map +0 -1
- package/es/tx/min-fee.d.ts +0 -20
- package/es/tx/min-fee.mjs.map +0 -1
- package/src/tx/builder/field-types.ts +0 -111
- package/src/tx/min-fee.ts +0 -136
package/src/utils/encoder.ts
CHANGED
|
@@ -1,71 +1,118 @@
|
|
|
1
|
-
import { encode as bs58Encode, decode as bs58Decode } from 'bs58'
|
|
2
|
-
|
|
1
|
+
import { encode as bs58Encode, decode as bs58Decode } from 'bs58';
|
|
2
|
+
// js extension is required for mjs build, not importing the whole package to reduce bundle size
|
|
3
|
+
// eslint-disable-next-line import/extensions
|
|
4
|
+
import Sha256 from 'sha.js/sha256.js';
|
|
3
5
|
import {
|
|
4
6
|
DecodeError,
|
|
5
7
|
ArgumentError,
|
|
6
8
|
InvalidChecksumError,
|
|
7
|
-
PayloadLengthError
|
|
8
|
-
} from './errors'
|
|
9
|
-
import { concatBuffers } from './other'
|
|
9
|
+
PayloadLengthError,
|
|
10
|
+
} from './errors';
|
|
11
|
+
import { concatBuffers, isKeyOfObject } from './other';
|
|
12
|
+
import * as Encoded from './encoder-types';
|
|
13
|
+
import { Encoding } from './encoder-types';
|
|
14
|
+
|
|
15
|
+
export { Encoded, Encoding };
|
|
10
16
|
|
|
11
17
|
/**
|
|
12
18
|
* Calculate SHA256 hash of `input`
|
|
13
19
|
* @param input - Data to hash
|
|
14
20
|
* @returns Hash
|
|
21
|
+
* @deprecated use `SubtleCrypto.digest` or `sha.js` package instead
|
|
15
22
|
*/
|
|
16
|
-
export function sha256hash
|
|
17
|
-
return new Sha256().update(input).digest()
|
|
23
|
+
export function sha256hash(input: Uint8Array | string): Buffer {
|
|
24
|
+
return new Sha256().update(input).digest();
|
|
18
25
|
}
|
|
19
26
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
/**
|
|
28
|
+
* @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L177-L202}
|
|
29
|
+
*/
|
|
30
|
+
const base64Types = [
|
|
31
|
+
Encoding.ContractBytearray,
|
|
32
|
+
Encoding.ContractStoreKey,
|
|
33
|
+
Encoding.ContractStoreValue,
|
|
34
|
+
Encoding.Transaction,
|
|
35
|
+
Encoding.OracleQuery,
|
|
36
|
+
Encoding.OracleResponse,
|
|
37
|
+
Encoding.State,
|
|
38
|
+
Encoding.Poi,
|
|
39
|
+
Encoding.StateTrees,
|
|
40
|
+
Encoding.CallStateTree,
|
|
41
|
+
Encoding.Bytearray,
|
|
42
|
+
] as const;
|
|
43
|
+
const base58Types = [
|
|
44
|
+
Encoding.KeyBlockHash,
|
|
45
|
+
Encoding.MicroBlockHash,
|
|
46
|
+
Encoding.BlockPofHash,
|
|
47
|
+
Encoding.BlockTxHash,
|
|
48
|
+
Encoding.BlockStateHash,
|
|
49
|
+
Encoding.Channel,
|
|
50
|
+
Encoding.ContractAddress,
|
|
51
|
+
Encoding.TxHash,
|
|
52
|
+
Encoding.OracleAddress,
|
|
53
|
+
Encoding.OracleQueryId,
|
|
54
|
+
Encoding.AccountAddress,
|
|
55
|
+
Encoding.Signature,
|
|
56
|
+
Encoding.Commitment,
|
|
57
|
+
Encoding.PeerPubkey,
|
|
58
|
+
Encoding.Name,
|
|
59
|
+
] as const;
|
|
23
60
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
61
|
+
/**
|
|
62
|
+
* @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L261-L286}
|
|
63
|
+
*/
|
|
64
|
+
const byteSizeForType = {
|
|
65
|
+
[Encoding.KeyBlockHash]: 32,
|
|
66
|
+
[Encoding.MicroBlockHash]: 32,
|
|
67
|
+
[Encoding.BlockPofHash]: 32,
|
|
68
|
+
[Encoding.BlockTxHash]: 32,
|
|
69
|
+
[Encoding.BlockStateHash]: 32,
|
|
70
|
+
[Encoding.Channel]: 32,
|
|
71
|
+
[Encoding.ContractAddress]: 32,
|
|
72
|
+
[Encoding.TxHash]: 32,
|
|
73
|
+
[Encoding.OracleAddress]: 32,
|
|
74
|
+
[Encoding.OracleQueryId]: 32,
|
|
75
|
+
[Encoding.AccountAddress]: 32,
|
|
76
|
+
[Encoding.Signature]: 64,
|
|
77
|
+
[Encoding.Commitment]: 32,
|
|
78
|
+
[Encoding.PeerPubkey]: 32,
|
|
79
|
+
[Encoding.State]: 32,
|
|
80
|
+
} as const;
|
|
32
81
|
|
|
33
|
-
function ensureValidLength
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
82
|
+
function ensureValidLength(data: Uint8Array, type: Encoding): void {
|
|
83
|
+
if (!isKeyOfObject(type, byteSizeForType)) return;
|
|
84
|
+
const reqLen = byteSizeForType[type];
|
|
85
|
+
if (reqLen == null || data.length === reqLen) return;
|
|
86
|
+
throw new PayloadLengthError(`Payload should be ${reqLen} bytes, got ${data.length} instead`);
|
|
37
87
|
}
|
|
38
88
|
|
|
39
|
-
const getChecksum = (payload: Uint8Array): Buffer =>
|
|
40
|
-
sha256hash(sha256hash(payload)).slice(0, 4)
|
|
89
|
+
const getChecksum = (payload: Uint8Array): Buffer => sha256hash(sha256hash(payload)).slice(0, 4);
|
|
41
90
|
|
|
42
|
-
const addChecksum = (payload: Uint8Array): Buffer =>
|
|
43
|
-
return concatBuffers([payload, getChecksum(payload)])
|
|
44
|
-
}
|
|
91
|
+
const addChecksum = (payload: Uint8Array): Buffer => concatBuffers([payload, getChecksum(payload)]);
|
|
45
92
|
|
|
46
|
-
function getPayload
|
|
47
|
-
const payload = buffer.slice(0, -4)
|
|
48
|
-
if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError()
|
|
49
|
-
return payload
|
|
93
|
+
function getPayload(buffer: Buffer): Buffer {
|
|
94
|
+
const payload = buffer.slice(0, -4);
|
|
95
|
+
if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError();
|
|
96
|
+
return payload;
|
|
50
97
|
}
|
|
51
98
|
|
|
52
99
|
const base64 = {
|
|
53
100
|
encode: (buffer: Uint8Array) => addChecksum(buffer).toString('base64'),
|
|
54
|
-
decode: (string: string) => getPayload(Buffer.from(string, 'base64'))
|
|
55
|
-
}
|
|
101
|
+
decode: (string: string) => getPayload(Buffer.from(string, 'base64')),
|
|
102
|
+
};
|
|
56
103
|
|
|
57
104
|
const base58 = {
|
|
58
105
|
encode: (buffer: Uint8Array) => bs58Encode(addChecksum(buffer)),
|
|
59
|
-
decode: (string: string) => getPayload(Buffer.from(bs58Decode(string)))
|
|
60
|
-
}
|
|
106
|
+
decode: (string: string) => getPayload(Buffer.from(bs58Decode(string))),
|
|
107
|
+
};
|
|
61
108
|
|
|
62
|
-
const parseType = (maybeType: unknown): [
|
|
63
|
-
const base64Type = base64Types.find(t => t === maybeType)
|
|
64
|
-
if (base64Type != null) return [base64Type, base64]
|
|
65
|
-
const base58Type = base58Types.find(t => t === maybeType)
|
|
66
|
-
if (base58Type != null) return [base58Type, base58]
|
|
67
|
-
throw new ArgumentError('prefix', `one of ${[...base58Types, ...base64Types].join(', ')}`, maybeType)
|
|
68
|
-
}
|
|
109
|
+
const parseType = (maybeType: unknown): [Encoding, typeof base64] => {
|
|
110
|
+
const base64Type = base64Types.find((t) => t === maybeType);
|
|
111
|
+
if (base64Type != null) return [base64Type, base64];
|
|
112
|
+
const base58Type = base58Types.find((t) => t === maybeType);
|
|
113
|
+
if (base58Type != null) return [base58Type, base58];
|
|
114
|
+
throw new ArgumentError('prefix', `one of ${[...base58Types, ...base64Types].join(', ')}`, maybeType);
|
|
115
|
+
};
|
|
69
116
|
|
|
70
117
|
/**
|
|
71
118
|
* Decode data using the default encoding/decoding algorithm
|
|
@@ -73,14 +120,14 @@ const parseType = (maybeType: unknown): [EncodingType, typeof base64] => {
|
|
|
73
120
|
* (ex tx_..., sg_..., ak_....)
|
|
74
121
|
* @returns Decoded data
|
|
75
122
|
*/
|
|
76
|
-
export function decode
|
|
77
|
-
const [prefix, encodedPayload, extra] = data.split('_')
|
|
78
|
-
if (encodedPayload == null) throw new DecodeError(`Encoded string missing payload: ${data}`)
|
|
79
|
-
if (extra != null) throw new DecodeError(`Encoded string have extra parts: ${data}`)
|
|
80
|
-
const [type,
|
|
81
|
-
const payload = decode(encodedPayload)
|
|
82
|
-
ensureValidLength(payload, type)
|
|
83
|
-
return payload
|
|
123
|
+
export function decode(data: Encoded.Any): Buffer {
|
|
124
|
+
const [prefix, encodedPayload, extra] = data.split('_');
|
|
125
|
+
if (encodedPayload == null) throw new DecodeError(`Encoded string missing payload: ${data}`);
|
|
126
|
+
if (extra != null) throw new DecodeError(`Encoded string have extra parts: ${data}`);
|
|
127
|
+
const [type, encoder] = parseType(prefix);
|
|
128
|
+
const payload = encoder.decode(encodedPayload);
|
|
129
|
+
ensureValidLength(payload, type);
|
|
130
|
+
return payload;
|
|
84
131
|
}
|
|
85
132
|
|
|
86
133
|
/**
|
|
@@ -89,10 +136,11 @@ export function decode (data: EncodedData<EncodingType>): Buffer {
|
|
|
89
136
|
* @param type - Prefix of Transaction
|
|
90
137
|
* @returns Encoded string Base58check or Base64check data
|
|
91
138
|
*/
|
|
92
|
-
export function encode<Type extends
|
|
93
|
-
data: Uint8Array,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
139
|
+
export function encode<Type extends Encoding>(
|
|
140
|
+
data: Uint8Array,
|
|
141
|
+
type: Type,
|
|
142
|
+
): Encoded.Generic<Type> {
|
|
143
|
+
const [, encoder] = parseType(type);
|
|
144
|
+
ensureValidLength(data, type);
|
|
145
|
+
return `${type}_${encoder.encode(data)}`;
|
|
98
146
|
}
|