@aeternity/aepp-sdk 10.0.0-beta.1 → 11.0.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/README.md +15 -14
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +7 -27
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/account/{base.js → base.mjs} +23 -11
- package/es/account/base.mjs.map +1 -0
- package/es/account/{memory.js → memory.mjs} +29 -14
- package/es/account/memory.mjs.map +1 -0
- package/es/account/{multiple.js → multiple.mjs} +14 -11
- package/es/account/multiple.mjs.map +1 -0
- package/es/ae/{aens.js → aens.mjs} +69 -59
- package/es/ae/aens.mjs.map +1 -0
- package/es/ae/{aepp.js → aepp.mjs} +9 -9
- package/es/ae/aepp.mjs.map +1 -0
- package/es/ae/contract.mjs +159 -0
- package/es/ae/contract.mjs.map +1 -0
- package/es/ae/{index.js → index.mjs} +12 -10
- package/es/ae/index.mjs.map +1 -0
- package/es/ae/{oracle.js → oracle.mjs} +37 -20
- package/es/ae/oracle.mjs.map +1 -0
- package/es/ae/{universal.js → universal.mjs} +10 -10
- package/es/ae/universal.mjs.map +1 -0
- package/es/ae/{wallet.js → wallet.mjs} +10 -10
- package/es/ae/wallet.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +74 -0
- package/es/bignumber.d.ts +1 -7
- package/es/chain/{index.js → index.mjs} +28 -8
- package/es/chain/index.mjs.map +1 -0
- package/es/chain/{node.js → node.mjs} +133 -90
- package/es/chain/node.mjs.map +1 -0
- package/es/channel/{handlers.js → handlers.mjs} +18 -20
- package/es/channel/handlers.mjs.map +1 -0
- package/es/channel/{index.js → index.mjs} +43 -22
- package/es/channel/index.mjs.map +1 -0
- package/es/channel/{internal.js → internal.mjs} +51 -35
- package/es/channel/internal.mjs.map +1 -0
- package/es/contract/aci.mjs +477 -0
- package/es/contract/aci.mjs.map +1 -0
- package/es/contract/compiler.mjs +115 -0
- package/es/contract/compiler.mjs.map +1 -0
- package/es/contract/ga/helpers.mjs +30 -0
- package/es/contract/ga/helpers.mjs.map +1 -0
- package/es/contract/ga/{index.js → index.mjs} +40 -28
- package/es/contract/ga/index.mjs.map +1 -0
- package/es/encoder.d.ts +26 -0
- package/es/errors.d.ts +284 -0
- package/es/index.mjs +57 -0
- package/es/index.mjs.map +1 -0
- package/es/node-pool/{index.js → index.mjs} +15 -12
- package/es/node-pool/index.mjs.map +1 -0
- package/es/{node.js → node.mjs} +17 -11
- package/es/node.mjs.map +1 -0
- package/es/tx/builder/constants.mjs +108 -0
- package/es/tx/builder/constants.mjs.map +1 -0
- package/es/tx/builder/field-types.mjs +74 -0
- package/es/tx/builder/field-types.mjs.map +1 -0
- package/es/tx/builder/helpers.mjs +321 -0
- package/es/tx/builder/helpers.mjs.map +1 -0
- package/es/tx/builder/{index.js → index.mjs} +92 -74
- package/es/tx/builder/index.mjs.map +1 -0
- package/es/tx/builder/{schema.js → schema.mjs} +16 -172
- package/es/tx/builder/schema.mjs.map +1 -0
- package/es/tx/{index.js → index.mjs} +106 -14
- package/es/tx/index.mjs.map +1 -0
- package/es/tx/{tx-object.js → tx-object.mjs} +31 -18
- package/es/tx/tx-object.mjs.map +1 -0
- package/es/tx/{tx.js → tx.mjs} +15 -14
- package/es/tx/tx.mjs.map +1 -0
- package/es/tx/{validator.js → validator.mjs} +72 -33
- package/es/tx/validator.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs +2 -0
- package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
- package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +10 -8
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/connection/{browser-window-message.js → browser-window-message.mjs} +25 -17
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +7 -3
- package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +15 -8
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/{helpers.js → helpers.mjs} +3 -14
- package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/{aepp-rpc.js → aepp-rpc.mjs} +126 -72
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/{rpc-client.js → rpc-client.mjs} +23 -14
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/{wallet-rpc.js → wallet-rpc.mjs} +116 -91
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
- package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/{wallet-detector.js → wallet-detector.mjs} +6 -5
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/utils/{amount-formatter.js → amount-formatter.mjs} +14 -7
- package/es/utils/amount-formatter.mjs.map +1 -0
- package/es/utils/{async-init.js → async-init.mjs} +8 -11
- package/es/utils/async-init.mjs.map +1 -0
- package/es/utils/{bignumber.js → bignumber.mjs} +2 -9
- package/es/utils/bignumber.mjs.map +1 -0
- package/es/utils/{bytes.js → bytes.mjs} +16 -8
- package/es/utils/bytes.mjs.map +1 -0
- package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
- package/es/utils/crypto-ts.mjs.map +1 -0
- package/es/utils/{crypto.js → crypto.mjs} +42 -156
- package/es/utils/crypto.mjs.map +1 -0
- package/es/utils/encoder.mjs +106 -0
- package/es/utils/encoder.mjs.map +1 -0
- package/es/utils/errors.mjs +689 -0
- package/es/utils/errors.mjs.map +1 -0
- package/es/utils/{hd-wallet.js → hd-wallet.mjs} +33 -34
- package/es/utils/hd-wallet.mjs.map +1 -0
- package/es/utils/{json-big.js → json-big.mjs} +1 -1
- package/es/utils/{json-big.js.map → json-big.mjs.map} +1 -1
- package/es/utils/{keystore.js → keystore.mjs} +63 -51
- package/es/utils/keystore.mjs.map +1 -0
- package/es/utils/{mptree.js → mptree.mjs} +21 -12
- package/es/utils/mptree.mjs.map +1 -0
- package/es/utils/{other.js → other.mjs} +2 -2
- package/es/utils/other.mjs.map +1 -0
- package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
- package/es/utils/{semver-satisfies.js.map → semver-satisfies.mjs.map} +1 -1
- package/es/utils/{string.js → string.mjs} +1 -1
- package/es/utils/{string.js.map → string.mjs.map} +1 -1
- package/es/utils/{swagger.js → swagger.mjs} +49 -15
- package/es/utils/swagger.mjs.map +1 -0
- package/package.json +49 -58
- package/src/account/base.js +3 -1
- package/src/account/memory.js +13 -8
- package/src/account/multiple.js +16 -6
- package/src/ae/aens.js +52 -58
- package/src/ae/aepp.js +2 -2
- package/src/ae/contract.js +21 -154
- package/src/ae/index.js +6 -4
- package/src/ae/oracle.js +33 -14
- package/src/ae/universal.js +4 -2
- package/src/ae/wallet.js +2 -2
- package/src/chain/index.js +29 -6
- package/src/chain/node.js +95 -65
- package/src/channel/handlers.js +30 -20
- package/src/channel/index.js +46 -16
- package/src/channel/internal.js +35 -30
- package/src/contract/aci.js +376 -0
- package/src/contract/compiler.js +22 -113
- package/src/contract/ga/helpers.js +10 -6
- package/src/contract/ga/index.js +31 -24
- package/src/index.js +9 -8
- package/src/node-pool/index.js +13 -10
- package/src/node.js +11 -10
- package/src/tx/builder/constants.js +100 -0
- package/src/tx/builder/field-types.js +61 -0
- package/src/tx/builder/helpers.js +99 -103
- package/src/tx/builder/index.js +81 -40
- package/src/tx/builder/schema.js +44 -132
- package/src/tx/index.js +101 -12
- package/src/tx/tx-object.js +35 -15
- package/src/tx/tx.js +110 -35
- package/src/tx/validator.js +25 -5
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +11 -5
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +35 -13
- package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +14 -7
- package/src/utils/aepp-wallet-communication/helpers.js +6 -14
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +106 -57
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +24 -11
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +95 -53
- package/src/utils/aepp-wallet-communication/schema.ts +80 -0
- package/src/utils/aepp-wallet-communication/wallet-detector.js +6 -2
- package/src/utils/amount-formatter.ts +4 -3
- package/src/utils/async-init.js +10 -6
- package/src/utils/bignumber.ts +1 -9
- package/src/utils/bytes.ts +3 -2
- package/src/utils/crypto-ts.ts +2 -2
- package/src/utils/crypto.js +11 -155
- package/src/utils/encoder.ts +101 -0
- package/src/utils/errors.ts +683 -0
- package/src/utils/hd-wallet.js +11 -26
- package/src/utils/keystore.js +57 -53
- package/src/utils/mptree.ts +12 -6
- package/src/utils/swagger.js +68 -45
- package/es/account/base.js.map +0 -1
- package/es/account/memory.js.map +0 -1
- package/es/account/multiple.js.map +0 -1
- package/es/ae/aens.js.map +0 -1
- package/es/ae/aepp.js.map +0 -1
- package/es/ae/contract.js +0 -308
- package/es/ae/contract.js.map +0 -1
- package/es/ae/index.js.map +0 -1
- package/es/ae/oracle.js.map +0 -1
- package/es/ae/universal.js.map +0 -1
- package/es/ae/wallet.js.map +0 -1
- package/es/chain/index.js.map +0 -1
- package/es/chain/node.js.map +0 -1
- package/es/channel/handlers.js.map +0 -1
- package/es/channel/index.js.map +0 -1
- package/es/channel/internal.js.map +0 -1
- package/es/contract/aci/helpers.js +0 -298
- package/es/contract/aci/helpers.js.map +0 -1
- package/es/contract/aci/index.js +0 -356
- package/es/contract/aci/index.js.map +0 -1
- package/es/contract/aci/transformation.js +0 -66
- package/es/contract/aci/transformation.js.map +0 -1
- package/es/contract/compiler.js +0 -242
- package/es/contract/compiler.js.map +0 -1
- package/es/contract/ga/helpers.js +0 -22
- package/es/contract/ga/helpers.js.map +0 -1
- package/es/contract/ga/index.js.map +0 -1
- package/es/contract/index.js +0 -158
- package/es/contract/index.js.map +0 -1
- package/es/index.js +0 -56
- package/es/index.js.map +0 -1
- package/es/node-pool/index.js.map +0 -1
- package/es/node.js.map +0 -1
- package/es/tx/builder/helpers.js +0 -318
- package/es/tx/builder/helpers.js.map +0 -1
- package/es/tx/builder/index.js.map +0 -1
- package/es/tx/builder/schema.js.map +0 -1
- package/es/tx/index.js.map +0 -1
- package/es/tx/tx-object.js.map +0 -1
- package/es/tx/tx.js.map +0 -1
- package/es/tx/validator.js.map +0 -1
- package/es/typings/blakejs/index.d.js +0 -2
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.js +0 -107
- package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
- package/es/utils/amount-formatter.js.map +0 -1
- package/es/utils/async-init.js.map +0 -1
- package/es/utils/bignumber.js.map +0 -1
- package/es/utils/bytes.js.map +0 -1
- package/es/utils/crypto-ts.js.map +0 -1
- package/es/utils/crypto.js.map +0 -1
- package/es/utils/hd-wallet.js.map +0 -1
- package/es/utils/keystore.js.map +0 -1
- package/es/utils/mptree.js.map +0 -1
- package/es/utils/other.js.map +0 -1
- package/es/utils/swagger.js.map +0 -1
- package/src/contract/aci/index.js +0 -310
- package/src/contract/aci/transformation.js +0 -72
- package/src/contract/index.js +0 -159
- package/src/utils/aepp-wallet-communication/schema.js +0 -108
package/src/utils/hd-wallet.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import nacl from 'tweetnacl'
|
|
2
2
|
import { full as hmac } from 'tweetnacl-auth'
|
|
3
3
|
import { fromString } from 'bip32-path'
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { decryptKey, encryptKey } from './crypto'
|
|
5
|
+
import { encode } from '../tx/builder/helpers'
|
|
6
|
+
import {
|
|
7
|
+
InvalidDerivationPathError, NotHardenedSegmentError, UnsupportedChildIndexError
|
|
8
|
+
} from './errors'
|
|
6
9
|
|
|
7
10
|
const ED25519_CURVE = Buffer.from('ed25519 seed')
|
|
8
11
|
const HARDENED_OFFSET = 0x80000000
|
|
@@ -13,7 +16,7 @@ export function derivePathFromKey (path, key) {
|
|
|
13
16
|
const segments = path === '' ? [] : fromString(path).toPathArray()
|
|
14
17
|
segments.forEach((segment, i) => {
|
|
15
18
|
if (segment < HARDENED_OFFSET) {
|
|
16
|
-
throw new
|
|
19
|
+
throw new NotHardenedSegmentError(`Segment #${i + 1} is not hardened`)
|
|
17
20
|
}
|
|
18
21
|
})
|
|
19
22
|
|
|
@@ -22,7 +25,7 @@ export function derivePathFromKey (path, key) {
|
|
|
22
25
|
|
|
23
26
|
export function derivePathFromSeed (path, seed) {
|
|
24
27
|
if (!['m', 'm/'].includes(path.slice(0, 2))) {
|
|
25
|
-
throw new
|
|
28
|
+
throw new InvalidDerivationPathError()
|
|
26
29
|
}
|
|
27
30
|
const masterKey = getMasterKeyFromSeed(seed)
|
|
28
31
|
return derivePathFromKey(path.slice(2), masterKey)
|
|
@@ -32,7 +35,7 @@ function formatAccount (keys) {
|
|
|
32
35
|
const { secretKey, publicKey } = keys
|
|
33
36
|
return {
|
|
34
37
|
secretKey: toHex(secretKey),
|
|
35
|
-
publicKey:
|
|
38
|
+
publicKey: encode(publicKey, 'ak')
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
|
|
@@ -40,10 +43,6 @@ export function getKeyPair (secretKey) {
|
|
|
40
43
|
return nacl.sign.keyPair.fromSeed(secretKey)
|
|
41
44
|
}
|
|
42
45
|
|
|
43
|
-
export function generateMnemonic () {
|
|
44
|
-
return genMnemonic()
|
|
45
|
-
}
|
|
46
|
-
|
|
47
46
|
export function getMasterKeyFromSeed (seed) {
|
|
48
47
|
const I = hmac(seed, ED25519_CURVE)
|
|
49
48
|
const IL = I.slice(0, 32)
|
|
@@ -56,7 +55,7 @@ export function getMasterKeyFromSeed (seed) {
|
|
|
56
55
|
|
|
57
56
|
export function deriveChild ({ secretKey, chainCode }, index) {
|
|
58
57
|
if (index < HARDENED_OFFSET) {
|
|
59
|
-
throw new
|
|
58
|
+
throw new UnsupportedChildIndexError(index)
|
|
60
59
|
}
|
|
61
60
|
const indexBuffer = Buffer.allocUnsafe(4)
|
|
62
61
|
indexBuffer.writeUInt32BE(index, 0)
|
|
@@ -72,11 +71,7 @@ export function deriveChild ({ secretKey, chainCode }, index) {
|
|
|
72
71
|
}
|
|
73
72
|
}
|
|
74
73
|
|
|
75
|
-
export function
|
|
76
|
-
if (!validateMnemonic(mnemonic)) {
|
|
77
|
-
throw new Error('Invalid mnemonic')
|
|
78
|
-
}
|
|
79
|
-
const seed = mnemonicToSeed(mnemonic)
|
|
74
|
+
export function generateSaveHDWalletFromSeed (seed, password) {
|
|
80
75
|
const walletKey = derivePathFromSeed('m/44h/457h', seed)
|
|
81
76
|
return {
|
|
82
77
|
secretKey: toHex(encryptKey(password, walletKey.secretKey)),
|
|
@@ -94,8 +89,7 @@ export function getSaveHDWalletAccounts (saveHDWallet, password, accountCount) {
|
|
|
94
89
|
formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)))
|
|
95
90
|
}
|
|
96
91
|
|
|
97
|
-
export const
|
|
98
|
-
const seed = mnemonicToSeed(mnemonic)
|
|
92
|
+
export const getHdWalletAccountFromSeed = (seed, accountIdx) => {
|
|
99
93
|
const walletKey = derivePathFromSeed('m/44h/457h', seed)
|
|
100
94
|
const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey)
|
|
101
95
|
const keyPair = getKeyPair(derived.secretKey)
|
|
@@ -104,12 +98,3 @@ export const getHdWalletAccountFromMnemonic = (mnemonic, accountIdx) => {
|
|
|
104
98
|
idx: accountIdx
|
|
105
99
|
}
|
|
106
100
|
}
|
|
107
|
-
|
|
108
|
-
export default {
|
|
109
|
-
getHdWalletAccountFromMnemonic,
|
|
110
|
-
getSaveHDWalletAccounts,
|
|
111
|
-
generateSaveHDWallet,
|
|
112
|
-
generateMnemonic,
|
|
113
|
-
deriveChild,
|
|
114
|
-
getMasterKeyFromSeed
|
|
115
|
-
}
|
package/src/utils/keystore.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import nacl from 'tweetnacl'
|
|
2
|
-
import { v4 as uuid } from 'uuid'
|
|
3
|
-
|
|
4
|
-
import {
|
|
2
|
+
import { v4 as uuid } from '@aeternity/uuid'
|
|
3
|
+
import { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js'
|
|
4
|
+
import { encode } from '../tx/builder/helpers'
|
|
5
5
|
import { str2buf } from './bytes'
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
ArgumentError, InvalidKeyError, UnsupportedAlgorithmError, InvalidPasswordError
|
|
8
|
+
} from './errors'
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* KeyStore module
|
|
@@ -31,24 +32,18 @@ const DERIVED_KEY_FUNCTIONS = {
|
|
|
31
32
|
argon2id: deriveKeyUsingArgon2id
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
export async function deriveKeyUsingArgon2id (
|
|
35
|
-
const { memlimit_kib:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
timeCost,
|
|
47
|
-
memoryCost * 1024,
|
|
48
|
-
sodium.crypto_pwhash_ALG_ARGON2ID13
|
|
49
|
-
)
|
|
50
|
-
return Buffer.from(result)
|
|
51
|
-
})
|
|
35
|
+
export async function deriveKeyUsingArgon2id (pass, salt, options) {
|
|
36
|
+
const { memlimit_kib: mem, opslimit: time } = options.kdf_params
|
|
37
|
+
|
|
38
|
+
const result = (await hash({
|
|
39
|
+
hashLen: 32,
|
|
40
|
+
pass,
|
|
41
|
+
salt,
|
|
42
|
+
time,
|
|
43
|
+
mem,
|
|
44
|
+
type: ArgonType.Argon2id
|
|
45
|
+
})).hash
|
|
46
|
+
return Buffer.from(result)
|
|
52
47
|
}
|
|
53
48
|
|
|
54
49
|
// CRYPTO PART
|
|
@@ -62,65 +57,66 @@ function encryptXsalsa20Poly1305 ({ plaintext, key, nonce }) {
|
|
|
62
57
|
|
|
63
58
|
function decryptXsalsa20Poly1305 ({ ciphertext, key, nonce }) {
|
|
64
59
|
const res = nacl.secretbox.open(ciphertext, nonce, key)
|
|
65
|
-
if (!res) throw new
|
|
60
|
+
if (!res) throw new InvalidPasswordError('Invalid password or nonce')
|
|
66
61
|
return res
|
|
67
62
|
}
|
|
68
63
|
|
|
69
64
|
/**
|
|
70
65
|
* Symmetric private key encryption using secret (derived) key.
|
|
71
|
-
* @param {
|
|
72
|
-
* @param {
|
|
73
|
-
* @param {
|
|
66
|
+
* @param {Buffer|string} plaintext Data to be encrypted.
|
|
67
|
+
* @param {Buffer|string} key Secret key.
|
|
68
|
+
* @param {Buffer|string} nonce Randomly generated nonce.
|
|
74
69
|
* @param {string=} algo Encryption algorithm (default: DEFAULTS.crypto.symmetric_alg).
|
|
75
|
-
* @return {
|
|
70
|
+
* @return {Buffer} Encrypted data.
|
|
76
71
|
*/
|
|
77
72
|
function encrypt (plaintext, key, nonce, algo = DEFAULTS.crypto.symmetric_alg) {
|
|
78
|
-
if (!CRYPTO_FUNCTIONS[algo]) throw new
|
|
73
|
+
if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)
|
|
79
74
|
return CRYPTO_FUNCTIONS[algo].encrypt({ plaintext, nonce, key })
|
|
80
75
|
}
|
|
81
76
|
|
|
82
77
|
/**
|
|
83
78
|
* Symmetric private key decryption using secret (derived) key.
|
|
84
|
-
* @param {
|
|
85
|
-
* @param {
|
|
86
|
-
* @param {
|
|
79
|
+
* @param {Buffer|Uint8Array} ciphertext Data to be decrypted.
|
|
80
|
+
* @param {Buffer|Uint8Array} key Secret key.
|
|
81
|
+
* @param {Buffer|Uint8Array} nonce Nonce from key-object.
|
|
87
82
|
* @param {string=} algo Encryption algorithm.
|
|
88
|
-
* @return {
|
|
83
|
+
* @return {Buffer} Decrypted data.
|
|
89
84
|
*/
|
|
90
85
|
function decrypt (ciphertext, key, nonce, algo) {
|
|
91
|
-
if (!CRYPTO_FUNCTIONS[algo]) throw new
|
|
86
|
+
if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)
|
|
92
87
|
return CRYPTO_FUNCTIONS[algo].decrypt({ ciphertext, nonce, key })
|
|
93
88
|
}
|
|
94
89
|
|
|
95
90
|
/**
|
|
96
91
|
* Derive secret key from password with key derivation function.
|
|
97
92
|
* @param {string} password User-supplied password.
|
|
98
|
-
* @param {
|
|
93
|
+
* @param {Buffer|Uint8Array} nonce Randomly generated nonce.
|
|
99
94
|
* @param {Object=} options Encryption parameters.
|
|
100
95
|
* @param {string=} options.kdf Key derivation function (default: DEFAULTS.crypto.kdf).
|
|
101
96
|
* @param {Object=} options.kdf_params KDF parameters (default: DEFAULTS.crypto.kdf_params).
|
|
102
|
-
* @return {
|
|
97
|
+
* @return {Buffer} Secret key derived from password.
|
|
103
98
|
*/
|
|
104
99
|
async function deriveKey (password, nonce, options = {
|
|
105
100
|
kdf_params: DEFAULTS.crypto.kdf_params,
|
|
106
101
|
kdf: DEFAULTS.crypto.kdf
|
|
107
102
|
}) {
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
}
|
|
103
|
+
if (!nonce) throw new ArgumentError('nonce', 'provided', nonce)
|
|
104
|
+
if (password == null) throw new ArgumentError('password', 'provided', password)
|
|
111
105
|
|
|
112
|
-
if (!Object.prototype.hasOwnProperty.call(DERIVED_KEY_FUNCTIONS, options.kdf))
|
|
106
|
+
if (!Object.prototype.hasOwnProperty.call(DERIVED_KEY_FUNCTIONS, options.kdf)) {
|
|
107
|
+
throw new UnsupportedAlgorithmError(options.kdf)
|
|
108
|
+
}
|
|
113
109
|
|
|
114
110
|
return DERIVED_KEY_FUNCTIONS[options.kdf](password, nonce, options)
|
|
115
111
|
}
|
|
116
112
|
|
|
117
113
|
/**
|
|
118
114
|
* Assemble key data object in secret-storage format.
|
|
119
|
-
* @param {
|
|
120
|
-
* @param {
|
|
121
|
-
* @param {
|
|
122
|
-
* @param {
|
|
123
|
-
* @param {
|
|
115
|
+
* @param {Buffer} name Key name.
|
|
116
|
+
* @param {Buffer} derivedKey Password-derived secret key.
|
|
117
|
+
* @param {Buffer} privateKey Private key.
|
|
118
|
+
* @param {Buffer} nonce Randomly generated 24byte nonce.
|
|
119
|
+
* @param {Buffer} salt Randomly generated 16byte salt.
|
|
124
120
|
* @param {Object=} options Encryption parameters.
|
|
125
121
|
* @param {string=} options.kdf Key derivation function (default: argon2id).
|
|
126
122
|
* @param {string=} options.cipher Symmetric cipher (default: constants.cipher).
|
|
@@ -148,7 +144,7 @@ function marshal (name, derivedKey, privateKey, nonce, salt, options = {}) {
|
|
|
148
144
|
export function getAddressFromPriv (secret) {
|
|
149
145
|
const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))
|
|
150
146
|
const publicBuffer = Buffer.from(keys.publicKey)
|
|
151
|
-
return
|
|
147
|
+
return encode(publicBuffer, 'ak')
|
|
152
148
|
}
|
|
153
149
|
|
|
154
150
|
/**
|
|
@@ -170,7 +166,7 @@ export async function recover (password, keyObject) {
|
|
|
170
166
|
nonce,
|
|
171
167
|
keyObject.crypto.symmetric_alg
|
|
172
168
|
)
|
|
173
|
-
if (!key) throw new
|
|
169
|
+
if (!key) throw new InvalidPasswordError('Invalid password')
|
|
174
170
|
|
|
175
171
|
if (Buffer.from(key).length === 64) return Buffer.from(key).toString('hex')
|
|
176
172
|
return Buffer.from(key).toString('utf-8')
|
|
@@ -180,7 +176,7 @@ export async function recover (password, keyObject) {
|
|
|
180
176
|
* Export private key to keystore secret-storage format.
|
|
181
177
|
* @param {String} name Key name.
|
|
182
178
|
* @param {String} password User-supplied password.
|
|
183
|
-
* @param {String} privateKey Private key.
|
|
179
|
+
* @param {String|Buffer} privateKey Private key as hex-string or a Buffer.
|
|
184
180
|
* @param {Buffer} nonce Randomly generated 24byte nonce.
|
|
185
181
|
* @param {Buffer} salt Randomly generated 16byte salt.
|
|
186
182
|
* @param {Object=} options Encryption parameters.
|
|
@@ -189,12 +185,19 @@ export async function recover (password, keyObject) {
|
|
|
189
185
|
* @param {Object=} options.kdfparams KDF parameters (default: constants.<kdf>).
|
|
190
186
|
* @return {Object}
|
|
191
187
|
*/
|
|
192
|
-
export async function dump (
|
|
188
|
+
export async function dump (
|
|
189
|
+
name,
|
|
190
|
+
password,
|
|
191
|
+
privateKey,
|
|
192
|
+
nonce = nacl.randomBytes(24),
|
|
193
|
+
salt = nacl.randomBytes(16),
|
|
194
|
+
options = {}
|
|
195
|
+
) {
|
|
193
196
|
const opt = Object.assign({}, DEFAULTS.crypto, options)
|
|
194
197
|
return marshal(
|
|
195
198
|
name,
|
|
196
199
|
await deriveKey(password, salt, opt),
|
|
197
|
-
privateKey,
|
|
200
|
+
typeof privateKey === 'string' ? Buffer.from(privateKey, 'hex') : privateKey,
|
|
198
201
|
nonce,
|
|
199
202
|
salt,
|
|
200
203
|
opt
|
|
@@ -206,10 +209,11 @@ export function validateKeyObj (obj) {
|
|
|
206
209
|
const cryptoKeys = ['cipher_params', 'ciphertext', 'symmetric_alg', 'kdf', 'kdf_params']
|
|
207
210
|
|
|
208
211
|
const missingRootKeys = root.filter(key => !Object.prototype.hasOwnProperty.call(obj, key))
|
|
209
|
-
if (missingRootKeys.length) throw new
|
|
212
|
+
if (missingRootKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingRootKeys}`)
|
|
210
213
|
|
|
211
|
-
const missingCryptoKeys = cryptoKeys
|
|
212
|
-
|
|
214
|
+
const missingCryptoKeys = cryptoKeys
|
|
215
|
+
.filter(key => !Object.prototype.hasOwnProperty.call(obj.crypto, key))
|
|
216
|
+
if (missingCryptoKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingCryptoKeys}`)
|
|
213
217
|
|
|
214
218
|
return true
|
|
215
219
|
}
|
package/src/utils/mptree.ts
CHANGED
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
import { encode as rlpEncode } from 'rlp'
|
|
19
19
|
import type { Input } from 'rlp'
|
|
20
20
|
import { hash } from './crypto-ts'
|
|
21
|
+
import {
|
|
22
|
+
MerkleTreeHashMismatchError,
|
|
23
|
+
MissingNodeInTreeError,
|
|
24
|
+
UnknownPathNibbleError,
|
|
25
|
+
UnknownNodeLengthError
|
|
26
|
+
} from './errors'
|
|
21
27
|
|
|
22
28
|
enum NodeType {
|
|
23
29
|
Branch,
|
|
@@ -47,9 +53,9 @@ export default class MPTree {
|
|
|
47
53
|
binary[1].map((node) => [node[0].toString('hex'), node[1]])
|
|
48
54
|
)
|
|
49
55
|
|
|
50
|
-
if (this.nodes[this.rootHash] === undefined) throw new
|
|
56
|
+
if (this.nodes[this.rootHash] === undefined) throw new MissingNodeInTreeError('Can\'t find a node by root hash')
|
|
51
57
|
Object.entries(this.nodes).forEach(([key, node]) => {
|
|
52
|
-
if (MPTree.nodeHash(node) !== key) throw new
|
|
58
|
+
if (MPTree.nodeHash(node) !== key) throw new MerkleTreeHashMismatchError()
|
|
53
59
|
const { type, payload } = MPTree.parseNode(node)
|
|
54
60
|
switch (type) {
|
|
55
61
|
case NodeType.Branch:
|
|
@@ -58,13 +64,13 @@ export default class MPTree {
|
|
|
58
64
|
.filter(n => n.length)
|
|
59
65
|
.forEach((n) => {
|
|
60
66
|
if (this.nodes[n.toString('hex')] === undefined) {
|
|
61
|
-
throw new
|
|
67
|
+
throw new MissingNodeInTreeError('Can\'t find a node by hash in branch node')
|
|
62
68
|
}
|
|
63
69
|
})
|
|
64
70
|
break
|
|
65
71
|
case NodeType.Extension:
|
|
66
72
|
if (this.nodes[payload[0].toString('hex')] === undefined) {
|
|
67
|
-
throw new
|
|
73
|
+
throw new MissingNodeInTreeError('Can\'t find a node by hash in extension node')
|
|
68
74
|
}
|
|
69
75
|
}
|
|
70
76
|
})
|
|
@@ -81,13 +87,13 @@ export default class MPTree {
|
|
|
81
87
|
case 2: {
|
|
82
88
|
const path = node[0].toString('hex')
|
|
83
89
|
const nibble = parseInt(path[0], 16)
|
|
84
|
-
if (nibble > 3) throw new
|
|
90
|
+
if (nibble > 3) throw new UnknownPathNibbleError(nibble)
|
|
85
91
|
const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf
|
|
86
92
|
const slice = [0, 2].includes(nibble) ? 2 : 1
|
|
87
93
|
return { type, payload: [node[1]], path: path.slice(slice) }
|
|
88
94
|
}
|
|
89
95
|
default:
|
|
90
|
-
throw new
|
|
96
|
+
throw new UnknownNodeLengthError(node.length)
|
|
91
97
|
}
|
|
92
98
|
}
|
|
93
99
|
|
package/src/utils/swagger.js
CHANGED
|
@@ -25,6 +25,8 @@ import SwaggerClient from 'swagger-client'
|
|
|
25
25
|
import fetch from 'cross-fetch'
|
|
26
26
|
import JsonBig from './json-big'
|
|
27
27
|
import { snakizeKeys, pascalizeKeys, mapObject, filterObject } from './other'
|
|
28
|
+
import { ArgumentCountMismatchError } from './errors'
|
|
29
|
+
import { snakeToPascal } from './string'
|
|
28
30
|
|
|
29
31
|
let warnedAboutInternalApiUsage = false
|
|
30
32
|
|
|
@@ -50,23 +52,29 @@ export default async (
|
|
|
50
52
|
spec = spec || await (await fetch(specUrl)).json()
|
|
51
53
|
const jsonImp = disableBigNumbers ? JSON : JsonBig
|
|
52
54
|
|
|
53
|
-
if (
|
|
54
|
-
[
|
|
55
|
-
'https://compiler.aepps.com',
|
|
56
|
-
'https://latest.compiler.aepps.com'
|
|
57
|
-
].includes(new URL(specUrl).origin) ||
|
|
58
|
-
new URL(specUrl).origin.includes('https://')
|
|
59
|
-
) {
|
|
60
|
-
spec.schemes = ['https']
|
|
61
|
-
}
|
|
62
|
-
|
|
63
55
|
const [external, internal] = await Promise.all([specUrl, internalUrl].map((url) => {
|
|
64
56
|
if (!url) return null
|
|
57
|
+
const pendingGetRequests = {}
|
|
65
58
|
return SwaggerClient({
|
|
66
59
|
url,
|
|
67
60
|
spec,
|
|
61
|
+
requestInterceptor: request => {
|
|
62
|
+
if (request.method !== 'GET') return
|
|
63
|
+
return {
|
|
64
|
+
...request,
|
|
65
|
+
userFetch: async (url, request) => {
|
|
66
|
+
const key = JSON.stringify({ ...request, url })
|
|
67
|
+
pendingGetRequests[key] ??= fetch(url, request)
|
|
68
|
+
try {
|
|
69
|
+
return (await pendingGetRequests[key]).clone()
|
|
70
|
+
} finally {
|
|
71
|
+
delete pendingGetRequests[key]
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
68
76
|
responseInterceptor: response => {
|
|
69
|
-
if (
|
|
77
|
+
if (response.text === '' || response.text?.size === 0) return response
|
|
70
78
|
const body = jsonImp.parse(response.text)
|
|
71
79
|
Object.assign(response, {
|
|
72
80
|
body: disableCaseConversion ? body : pascalizeKeys(body)
|
|
@@ -76,8 +84,9 @@ export default async (
|
|
|
76
84
|
})
|
|
77
85
|
}))
|
|
78
86
|
|
|
79
|
-
const combinedApi =
|
|
80
|
-
|
|
87
|
+
const combinedApi = Object.assign(
|
|
88
|
+
{},
|
|
89
|
+
...external.apis.external ? [external.apis.external] : Object.values(external.apis),
|
|
81
90
|
mapObject(internal?.apis.internal || {}, ([key, handler]) => [key, (...args) => {
|
|
82
91
|
if (!warnedAboutInternalApiUsage) {
|
|
83
92
|
console.warn(
|
|
@@ -89,45 +98,59 @@ export default async (
|
|
|
89
98
|
}
|
|
90
99
|
return handler(...args)
|
|
91
100
|
}])
|
|
92
|
-
|
|
101
|
+
)
|
|
93
102
|
|
|
94
103
|
const opSpecs = Object.values(spec.paths)
|
|
95
104
|
.map(paths => Object.values(paths))
|
|
96
105
|
.flat()
|
|
97
106
|
.reduce((acc, n) => ({ ...acc, [n.operationId]: n }), {})
|
|
98
107
|
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
args
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
disableCaseConversion ? value : snakizeKeys(value),
|
|
124
|
-
([key]) => rootKeys.includes(key)
|
|
108
|
+
const requestQueues = {}
|
|
109
|
+
const api = mapObject(combinedApi, ([opId, handler]) => {
|
|
110
|
+
const functionName = opId.slice(0, 1).toLowerCase() + snakeToPascal(opId.slice(1))
|
|
111
|
+
return [
|
|
112
|
+
functionName,
|
|
113
|
+
async (...args) => {
|
|
114
|
+
const opSpec = opSpecs[opId]
|
|
115
|
+
const parameters = [
|
|
116
|
+
...opSpec.parameters,
|
|
117
|
+
...opSpec.requestBody
|
|
118
|
+
? [{
|
|
119
|
+
required: opSpec.requestBody.required,
|
|
120
|
+
schema: Object.values(opSpec.requestBody.content)[0].schema,
|
|
121
|
+
name: '__requestBody'
|
|
122
|
+
}]
|
|
123
|
+
: []
|
|
124
|
+
]
|
|
125
|
+
const required = parameters.filter(param => param.required).map(p => p.name)
|
|
126
|
+
if (![0, 1].includes(args.length - required.length)) {
|
|
127
|
+
throw new ArgumentCountMismatchError(functionName, required.length, args.length)
|
|
128
|
+
}
|
|
129
|
+
const values = required.reduce(
|
|
130
|
+
(acc, req, idx) => ({ ...acc, [req]: args[idx] }),
|
|
131
|
+
args[required.length] || {}
|
|
125
132
|
)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
133
|
+
const { __requestBody, __queue, ...stringified } = mapObject(values, ([param, value]) => {
|
|
134
|
+
if (typeof value !== 'object') return [param, value]
|
|
135
|
+
const rootKeys = Object.keys(parameters.find(p => p.name === param).schema.properties)
|
|
136
|
+
const filteredValue = filterObject(
|
|
137
|
+
disableCaseConversion ? value : snakizeKeys(value),
|
|
138
|
+
([key]) => rootKeys.includes(key)
|
|
139
|
+
)
|
|
140
|
+
return [param, jsonImp.stringify(filteredValue)]
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
const request = async () => (await handler(stringified, { requestBody: __requestBody }))
|
|
144
|
+
.body
|
|
145
|
+
if (!__queue) return request()
|
|
146
|
+
const res = (requestQueues[__queue] ?? Promise.resolve()).then(request, request)
|
|
147
|
+
// TODO: remove after fixing https://github.com/aeternity/aeternity/issues/3803
|
|
148
|
+
// gap to ensure that node won't reject the nonce
|
|
149
|
+
requestQueues[__queue] = res.then(() => new Promise(resolve => setTimeout(resolve, 750)))
|
|
150
|
+
return res
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
})
|
|
131
154
|
|
|
132
155
|
return Object.assign(external, { api })
|
|
133
156
|
}
|
package/es/account/base.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/account/base.js"],"names":["stampit","required","messageToHash","verifyMessage","verifyMessageCrypto","hash","buildTx","decode","TX_TYPE","getNetworkId","isAccountBase","acc","find","f","signTransaction","tx","opt","prefixes","innerTx","push","rlpBinaryTx","txWithNetworkId","Buffer","concat","from","join","signatures","sign","encodedTx","signed","signMessage","message","returnHex","sig","toString","signature","address","init","networkId","methods"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountBase module\n * @module @aeternity/aepp-sdk/es/account/base\n * @export AccountBase\n * @export isAccountBase\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\nimport { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto'\nimport { buildTx } from '../tx/builder'\nimport { decode } from '../tx/builder/helpers'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport { getNetworkId } from '../node'\n\n/**\n * Check is provided object looks like an instance of AccountBase\n * @rtype (Object) => Boolean\n * @param {Object} acc - Object to check\n * @return {Boolean}\n */\nexport const isAccountBase = (acc) => !['sign', 'address'].find(f => typeof acc[f] !== 'function')\n\n/**\n * Sign encoded transaction\n * @instance\n * @category async\n * @rtype (tx: String) => tx: Promise[String], throws: Error\n * @param {String} tx - Transaction to sign\n * @param {Object} opt - Options\n * @param {Object} [opt.innerTx] - Sign as inner transaction for PayingFor\n * @return {String} Signed transaction\n */\nasync function signTransaction (tx, opt = {}) {\n const prefixes = [this.getNetworkId(opt)]\n if (opt.innerTx) prefixes.push('inner_tx')\n const rlpBinaryTx = decode(tx, 'tx')\n const txWithNetworkId = Buffer.concat([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)])\n\n const signatures = [await this.sign(txWithNetworkId, opt)]\n return buildTx({ encodedTx: rlpBinaryTx, signatures }, TX_TYPE.signed).tx\n}\n\n/**\n * Get network Id\n * @instance\n * @function getNetworkId\n * @category async\n * @rtype () => networkId: String\n * @return {String} Network Id\n */\n\n/**\n * Sign message\n * @instance\n * @category async\n * @rtype (msg: String) => signature: Promise[String], throws: Error\n * @param {String} message - Message to sign\n * @param {Object} opt - Options\n * @return {String} Signature\n */\nasync function signMessage (message, opt = { returnHex: false }) {\n const sig = await this.sign(messageToHash(message), opt)\n return opt.returnHex ? Buffer.from(sig).toString('hex') : sig\n}\n\n/**\n * Verify message\n * @instance\n * @category async\n * @rtype (msg: String, signature: String, publicKey: String) => signature: Promise[String], throws: Error\n * @param {String} message - Message to verify\n * @param {String} signature - Signature\n * @param {Object} opt - Options\n * @return {Boolean}\n */\nasync function verifyMessage (message, signature, opt = {}) {\n return verifyMessageCrypto(\n message,\n typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,\n decode(await this.address(opt))\n )\n}\n\n/**\n * AccountBase Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Account is one of the three basic building blocks of an\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} client and provides access to a\n * signing key pair.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} options.networkId - NETWORK_ID using for signing transaction's\n * @return {Object} Account instance\n */\nexport default stampit({\n init ({ networkId }) { // NETWORK_ID using for signing transaction's\n if (!this.networkId && networkId) {\n this.networkId = networkId\n }\n },\n methods: { signTransaction, getNetworkId, signMessage, verifyMessage }\n}, required({\n methods: {\n sign: required,\n address: required\n }\n}))\n\n/**\n * Sign data blob\n * @function sign\n * @instance\n * @abstract\n * @category async\n * @rtype (data: String) => data: Promise[String]\n * @param {String} data - Data blob to sign\n * @return {String} Signed data blob\n */\n\n/**\n * Obtain account address\n * @function address\n * @instance\n * @abstract\n * @category async\n * @rtype () => address: Promise[String]\n * @return {String} Public account address\n */\n"],"file":"base.js"}
|
package/es/account/memory.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/account/memory.js"],"names":["AccountBase","sign","isAddressValid","isValidKeypair","isHex","decode","secrets","WeakMap","compose","init","keypair","gaId","isGa","Error","set","publicKey","secretKey","indexOf","Buffer","isBuffer","pubBuffer","from","props","methods","data","Promise","resolve","get","address"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Memory Account module\n * @module @aeternity/aepp-sdk/es/account/memory\n * @export MemoryAccount\n * @example import { MemoryAccount } from '@aeternity/aepp-sdk'\n */\n\nimport AccountBase from './base'\nimport { sign, isAddressValid, isValidKeypair } from '../utils/crypto'\nimport { isHex } from '../utils/string'\nimport { decode } from '../tx/builder/helpers'\n\nconst secrets = new WeakMap()\n\n/**\n * In-memory account stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account/memory\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Object} options.keypair - Key pair to use\n * @param {String} options.keypair.publicKey - Public key\n * @param {String} options.keypair.secretKey - Private key\n * @return {Account}\n */\nexport default AccountBase.compose({\n init ({ keypair, gaId }) {\n this.isGa = !!gaId\n if (gaId) {\n if (!isAddressValid(gaId)) throw new Error('Invalid GA address')\n secrets.set(this, { publicKey: gaId })\n return\n }\n\n if (!keypair || typeof keypair !== 'object') throw new Error('KeyPair must be an object')\n if (!keypair.secretKey || !keypair.publicKey) throw new Error('KeyPair must must have \"secretKey\", \"publicKey\" properties')\n if (typeof keypair.publicKey !== 'string' || keypair.publicKey.indexOf('ak_') === -1) throw new Error('Public Key must be a base58c string with \"ak_\" prefix')\n if (\n !Buffer.isBuffer(keypair.secretKey) &&\n (typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey))\n ) throw new Error('Secret key must be hex string or Buffer')\n\n const pubBuffer = Buffer.from(decode(keypair.publicKey, 'ak'))\n if (!isValidKeypair(Buffer.from(keypair.secretKey, 'hex'), pubBuffer)) throw new Error('Invalid Key Pair')\n\n secrets.set(this, {\n secretKey: Buffer.isBuffer(keypair.secretKey) ? keypair.secretKey : Buffer.from(keypair.secretKey, 'hex'),\n publicKey: keypair.publicKey\n })\n },\n props: { isGa: false },\n methods: {\n sign (data) {\n if (this.isGa) throw new Error('You are trying to sign data using GA account without keypair')\n return Promise.resolve(sign(data, secrets.get(this).secretKey))\n },\n address () {\n return Promise.resolve(secrets.get(this).publicKey)\n }\n }\n})\n"],"file":"memory.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/account/multiple.js"],"names":["AsyncInit","MemoryAccount","decode","AccountBase","isAccountBase","compose","init","accounts","address","Object","fromEntries","Promise","all","map","a","keys","selectAccount","props","deepProps","selectedAddress","methods","onAccount","_resolveAccount","sign","data","addresses","addAccount","account","select","removeAccount","console","warn","Error","keypair"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountMultiple module\n * @module @aeternity/aepp-sdk/es/accounts/multiple\n * @export AccountMultiple\n */\n\nimport AsyncInit from '../utils/async-init'\nimport MemoryAccount from './memory'\nimport { decode } from '../tx/builder/helpers'\nimport AccountBase, { isAccountBase } from './base'\n\n/**\n * AccountMultiple stamp\n *\n * The purpose of this stamp is to wrap up implementations of\n * {@link module:@aeternity/aepp-sdk/es/account/base--AccountBase} objects and provide a\n * common interface to all of them. List are a substantial part of\n * {@link module:@aeternity/aepp-sdk/es/ae/wallet--Wallet}s.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.accounts] - Accounts array\n * @param {String} [options.address] - Address of account to select\n * @return {Object} AccountMultiple instance\n * @example\n * const accounts = await AccountMultiple({ accounts: [ MemmoryAccount({ keypair: 'keypair_object' }) ] })\n * await accounts.addAccount(account, { select: true }) // Add account and make it selected\n * accounts.removeAccount(address) // Remove account\n * accounts.selectAccount(address) // Select account\n * accounts.addresses() // Get available accounts\n */\nexport default AccountBase.compose(AsyncInit, {\n async init ({ accounts = [], address }) {\n this.accounts = Object.fromEntries(await Promise.all(\n accounts.map(async a => [await a.address(), a])\n ))\n address = address || Object.keys(this.accounts)[0]\n if (address) this.selectAccount(address)\n },\n props: {\n accounts: {}\n },\n deepProps: {\n selectedAddress: null\n },\n methods: {\n async address ({ onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).address()\n },\n async sign (data, { onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).sign(data)\n },\n /**\n * Get accounts addresses\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype () => String[]\n * @return {String[]}\n * @example addresses()\n */\n addresses () {\n return Object.keys(this.accounts)\n },\n /**\n * Add specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @category async\n * @rtype (account: Account, { select: Boolean }) => void\n * @param {Object} account - Account instance\n * @param {Object} [options={}] - Options\n * @param {Boolean} [options.select] - Select account\n * @return {void}\n * @example addAccount(account)\n */\n async addAccount (account, { select } = {}) {\n const address = await account.address()\n this.accounts[address] = account\n if (select) this.selectAccount(address)\n },\n /**\n * Remove specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype (address: String) => void\n * @param {String} address - Address of account to remove\n * @return {void}\n * @example removeAccount(address)\n */\n removeAccount (address) {\n if (!this.accounts[address]) {\n console.warn(`removeAccount: Account for ${address} not available`)\n return\n }\n delete this.accounts[address]\n if (this.selectedAddress === address) this.selectedAddress = null\n },\n /**\n * Select specific account\n * @alias module:@aeternity/aepp-sdk/es/account/selector\n * @instance\n * @rtype (address: String) => void\n * @param {String} address - Address of account to select\n * @example selectAccount('ak_xxxxxxxx')\n */\n selectAccount (address) {\n decode(address, 'ak')\n if (!this.accounts[address]) throw new Error(`Account for ${address} not available`)\n this.selectedAddress = address\n },\n /**\n * Resolves an account\n * @param account can be account address (should exist in sdk instance), MemoryAccount or keypair\n * @returns {AccountBase}\n * @private\n */\n _resolveAccount (account) {\n if (account === null) {\n throw new Error('No account or wallet configured')\n } else {\n switch (typeof account) {\n case 'string':\n decode(account, 'ak')\n if (!this.accounts[account]) throw new Error(`Account for ${account} not available`)\n return this.accounts[account]\n case 'object':\n return isAccountBase(account) ? account : MemoryAccount({ keypair: account })\n default:\n throw new Error(`Unknown account type: ${typeof account} (account: ${account})`)\n }\n }\n }\n }\n})\n"],"file":"multiple.js"}
|
package/es/ae/aens.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ae/aens.js"],"names":["salt","commitmentHash","ensureNameValid","getMinimumNameFee","classify","isAuctionName","validatePointers","encode","produceNameId","Ae","CLIENT_TTL","NAME_FEE","NAME_TTL","revoke","name","options","opt","defaults","nameRevokeTx","nameId","accountId","address","send","update","pointers","extendPointers","Error","getName","map","p","Object","fromEntries","reduce","acc","el","filter","key","nameUpdateTx","transfer","account","nameTransferTx","recipientId","query","o","freeze","assign","aensUpdate","aensQuery","aensTransfer","aensRevoke","extendTtl","nameTtl","id","claim","minNameFee","nameFee","gt","claimTx","nameClaimTx","nameSalt","result","nameInter","waitMined","preclaim","_salt","height","commitmentId","preclaimTx","namePreclaimTx","aensClaim","onAccount","bid","vsn","Aens","compose","methods","aensPreclaim","aensBid","deepProps","clientTtl"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aens module - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n * @module @aeternity/aepp-sdk/es/ae/aens\n * @export Aens\n * @example import { Aens } from '@aeternity/aepp-sdk'\n */\n\nimport { salt } from '../utils/crypto'\nimport {\n commitmentHash,\n ensureNameValid,\n getMinimumNameFee,\n classify,\n isAuctionName,\n validatePointers, encode, produceNameId\n} from '../tx/builder/helpers'\nimport Ae from './'\nimport { CLIENT_TTL, NAME_FEE, NAME_TTL } from '../tx/builder/schema'\n\n/**\n * Revoke a name\n * @instance\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @category async\n * @param {String} name Name hash\n * @param {Object} [options={}] options\n * @param {(String|Object)} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {(Number|String|BigNumber)} [options.fee] fee\n * @param {(Number|String|BigNumber)} [options.ttl] ttl\n * @param {(Number|String|BigNumber)} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })\n * // or\n * await nameObject.revoke({ fee, ttl, nonce })\n */\nasync function revoke (name, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const nameRevokeTx = await this.nameRevokeTx({\n ...opt,\n nameId: produceNameId(name),\n accountId: await this.address(opt)\n })\n\n return this.send(nameRevokeTx, opt)\n}\n\n/**\n * Update a name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {String[]} pointers Array of name pointers. Can be oracle|account|contract|channel public key\n * @param {Object} [options={}]\n * @param {Boolean} [options.extendPointers=false] extendPointers Get the pointers from the node and merge with provided one. Pointers with the same type will be overwrited\n * @param {(String|Object)} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {(Number|String|BigNumber)} [options.fee] fee\n * @param {(Number|String|BigNumber)} [options.ttl] ttl\n * @param {(Number|String|BigNumber)} [options.nonce] nonce\n * @param {(Number|String|BigNumber)} [options.nameTtl=50000] nameTtl Name ttl represented in number of blocks (Max value is 50000 blocks)\n * @param {(Number|String|BigNumber)} [options.clientTtl=84600] clientTtl a suggestion as to how long any clients should cache this information\n * @return {Promise<Object>}\n * @throws Invalid pointer array error\n * @example\n * const name = 'test.chain'\n * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n * // or\n * await nameObject.update(pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n */\nasync function update (name, pointers = [], options = { extendPointers: false }) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n if (!validatePointers(pointers)) throw new Error('Invalid pointers array')\n\n pointers = [\n ...options.extendPointers ? (await this.getName(name)).pointers : [],\n ...pointers.map(p => Object.fromEntries([['id', p], ['key', classify(p)]]))\n ].reduce((acc, el) => [...acc.filter(p => p.key !== el.key), el], [])\n const nameUpdateTx = await this.nameUpdateTx({\n ...opt,\n nameId: produceNameId(name),\n accountId: await this.address(opt),\n pointers\n })\n\n return this.send(nameUpdateTx, opt)\n}\n\n/**\n * Transfer a domain to another account\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {String} account Recipient account publick key\n * @param {Object} [options={}]\n * @param {(String|Object)} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {(Number|String|BigNumber)} [options.fee] fee\n * @param {(Number|String|BigNumber)} [options.ttl] ttl\n * @param {(Number|String|BigNumber)} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const recipientPub = 'ak_asd23dasdas...'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })\n * // or\n * await nameObject.transfer(recipientPub, { ttl, fee, nonce })\n */\nasync function transfer (name, account, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const nameTransferTx = await this.nameTransferTx({\n ...opt,\n nameId: produceNameId(name),\n accountId: await this.address(opt),\n recipientId: account\n })\n\n return this.send(nameTransferTx, opt)\n}\n\n/**\n * Query the AENS name info from the node\n * and return the object with info and predefined functions for manipulating name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} opt Options\n * @return {Promise<Object>}\n * @example\n * const nameObject = sdkInstance.aensQuery('test.chain')\n * console.log(nameObject)\n * {\n * id, // name hash\n * pointers, // array of pointers\n * update, // Update name function\n * extendTtl, // Extend Ttl name function\n * transfer, // Transfer name function\n * revoke // Revoke name function\n * }\n */\nasync function query (name, opt = {}) {\n ensureNameValid(name)\n const o = await this.getName(name)\n\n return Object.freeze(Object.assign(o, {\n pointers: o.pointers || [],\n update: async (pointers = [], options = {}) => {\n return {\n ...(await this.aensUpdate(name, pointers, { ...opt, ...options })),\n ...(await this.aensQuery(name))\n }\n },\n transfer: async (account, options = {}) => {\n return {\n ...(await this.aensTransfer(name, account, { ...opt, ...options })),\n ...(await this.aensQuery(name))\n }\n },\n revoke: async (options = {}) => this.aensRevoke(name, { ...opt, ...options }),\n extendTtl: async (nameTtl = NAME_TTL, options = {}) => {\n if (!nameTtl || typeof nameTtl !== 'number' || nameTtl > NAME_TTL) throw new Error('Ttl must be an number and less then 180000 blocks')\n\n return {\n ...(await this.aensUpdate(name, o.pointers.map(p => p.id), { ...opt, ...options, nameTtl })),\n ...(await this.aensQuery(name))\n }\n }\n }))\n}\n\n/**\n * Claim a previously preclaimed registration. This can only be done after the\n * preclaim step\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Number} salt Salt from pre-claim, or 0 if it's a bid\n * @param {Object} [options] options\n * @param {String|Object} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @param {Number|String} [options.nameFee] Name Fee (By default calculated by sdk)\n * @return {Promise<Object>} the result of the claim\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })\n */\nasync function claim (name, salt, options) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const minNameFee = getMinimumNameFee(name)\n if (opt.nameFee !== this.Ae.defaults.nameFee && minNameFee.gt(opt.nameFee)) {\n throw new Error(`the provided fee ${opt.nameFee} is not enough to execute the claim, required: ${minNameFee}`)\n }\n opt.nameFee = opt.nameFee !== this.Ae.defaults.nameFee ? opt.nameFee : minNameFee\n const claimTx = await this.nameClaimTx({\n ...opt,\n accountId: await this.address(opt),\n nameSalt: salt,\n name: encode(name, 'nm')\n })\n\n const result = await this.send(claimTx, opt)\n if (!isAuctionName(name)) {\n const nameInter = opt.waitMined ? await this.aensQuery(name, opt) : {}\n return Object.assign(result, nameInter)\n }\n return { ...result, nameFee: opt.nameFee }\n}\n\n/**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>}\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })\n * {\n * ...transactionResult,\n * claim, // Claim function (options={}) => claimTransactionResult\n * salt,\n * commitmentId\n * }\n */\nasync function preclaim (name, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n const _salt = salt()\n const height = await this.height()\n const commitmentId = commitmentHash(name, _salt)\n\n const preclaimTx = await this.namePreclaimTx({\n ...opt,\n accountId: await this.address(opt),\n commitmentId\n })\n\n const result = await this.send(preclaimTx, opt)\n\n return Object.freeze({\n ...result,\n height,\n claim: options => this.aensClaim(name, _salt, { ...options, onAccount: opt.onAccount }),\n salt: _salt,\n commitmentId\n })\n}\n\n/**\n * Bid to name auction\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name Domain name\n * @param {String|Number} nameFee Name fee (bid fee)\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const bidFee = computeBidFee(name, startFee, incrementPercentage)\n *\n * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })\n */\nasync function bid (name, nameFee = NAME_FEE, options = {}) {\n return this.aensClaim(name, 0, { ...options, nameFee, vsn: 2 })\n}\n\n/**\n * Aens Stamp\n *\n * Aens provides name-system related methods atop\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aens instance\n */\nconst Aens = Ae.compose({\n methods: {\n aensQuery: query,\n aensPreclaim: preclaim,\n aensClaim: claim,\n aensUpdate: update,\n aensTransfer: transfer,\n aensRevoke: revoke,\n aensBid: bid\n },\n deepProps: {\n Ae: {\n defaults: {\n clientTtl: CLIENT_TTL,\n nameTtl: NAME_TTL, // aec_governance:name_claim_max_expiration() => 50000\n nameFee: NAME_FEE\n }\n }\n }\n})\n\nexport default Aens\n"],"file":"aens.js"}
|
package/es/ae/aepp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ae/aepp.js"],"names":["Ae","Aens","ContractWithCompiler","Contract","AeppRpc","Chain","Tx","Oracle","compose"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,EAAP,MAAe,IAAf;AACA,OAAOC,IAAP,MAAiB,QAAjB;AACA,SAASC,oBAAoB,IAAIC,QAAjC,QAAiD,YAAjD;AACA,OAAOC,OAAP,MAAoB,iDAApB;AACA,OAAOC,KAAP,MAAkB,eAAlB;AACA,OAAOC,EAAP,MAAe,UAAf;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeP,EAAE,CAACQ,OAAH,CAAWF,EAAX,EAAeC,MAAf,EAAuBJ,QAAvB,EAAiCF,IAAjC,EAAuCI,KAAvC,EAA8CD,OAA9C,CAAf","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aepp module\n * @module @aeternity/aepp-sdk/es/ae/aepp\n * @export Aepp\n * @example import { RpcAepp } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Aens from './aens'\nimport { ContractWithCompiler as Contract } from './contract'\nimport AeppRpc from '../utils/aepp-wallet-communication/rpc/aepp-rpc'\nimport Chain from '../chain/node'\nimport Tx from '../tx/tx'\nimport Oracle from './oracle'\n\n/**\n * Aepp Stamp\n *\n * Aepp provides base functionality.\n * Expected to use this stamp with a Wallet.\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aepp\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aepp instance\n */\nexport default Ae.compose(Tx, Oracle, Contract, Aens, Chain, AeppRpc)\n"],"file":"aepp.js"}
|