@aeternity/aepp-sdk 8.2.1 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +216 -337
- package/README.md +16 -9
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
- 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 +36 -120
- package/es/account/base.js.map +1 -1
- package/es/account/memory.js +17 -19
- package/es/account/memory.js.map +1 -1
- package/es/account/multiple.js +79 -156
- package/es/account/multiple.js.map +1 -1
- package/es/ae/aens.js +205 -626
- package/es/ae/aens.js.map +1 -1
- package/es/ae/contract.js +114 -918
- package/es/ae/contract.js.map +1 -1
- package/es/ae/index.js +90 -250
- package/es/ae/index.js.map +1 -1
- package/es/ae/oracle.js +136 -504
- package/es/ae/oracle.js.map +1 -1
- package/es/ae/universal.js.map +1 -1
- package/es/chain/index.js +12 -27
- package/es/chain/index.js.map +1 -1
- package/es/chain/node.js +289 -1020
- package/es/chain/node.js.map +1 -1
- package/es/channel/handlers.js +597 -1086
- package/es/channel/handlers.js.map +1 -1
- package/es/channel/index.js +238 -465
- package/es/channel/index.js.map +1 -1
- package/es/channel/internal.js +129 -301
- package/es/channel/internal.js.map +1 -1
- package/es/contract/aci/index.js +328 -495
- package/es/contract/aci/index.js.map +1 -1
- package/es/contract/aci/transformation.js +35 -711
- package/es/contract/aci/transformation.js.map +1 -1
- package/es/contract/compiler.js +131 -203
- package/es/contract/compiler.js.map +1 -1
- package/es/contract/ga/helpers.js +17 -122
- package/es/contract/ga/helpers.js.map +1 -1
- package/es/contract/ga/index.js +108 -249
- package/es/contract/ga/index.js.map +1 -1
- package/es/contract/index.js +7 -3
- package/es/contract/index.js.map +1 -1
- package/es/index.js +3 -3
- package/es/index.js.map +1 -1
- package/es/node-pool/index.js +57 -74
- package/es/node-pool/index.js.map +1 -1
- package/es/node.js +65 -161
- package/es/node.js.map +1 -1
- package/es/other.d.ts +1 -1
- package/es/tx/builder/helpers.js +62 -115
- package/es/tx/builder/helpers.js.map +1 -1
- package/es/tx/builder/index.js +218 -309
- package/es/tx/builder/index.js.map +1 -1
- package/es/tx/builder/schema.js +586 -573
- package/es/tx/builder/schema.js.map +1 -1
- package/es/tx/index.js +102 -13
- package/es/tx/index.js.map +1 -1
- package/es/tx/tx-object.js +114 -138
- package/es/tx/tx-object.js.map +1 -1
- package/es/tx/tx.js +810 -1586
- package/es/tx/tx.js.map +1 -1
- package/es/tx/validator.js +191 -426
- package/es/tx/validator.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +20 -23
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +53 -80
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/index.js +2 -1
- package/es/utils/aepp-wallet-communication/connection/index.js.map +1 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +24 -19
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
- package/es/utils/aepp-wallet-communication/helpers.js +60 -105
- package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +191 -514
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +78 -93
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +381 -613
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/schema.js +43 -39
- package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
- package/es/utils/amount-formatter.js +41 -61
- package/es/utils/amount-formatter.js.map +1 -1
- package/es/utils/async-init.js +28 -64
- package/es/utils/async-init.js.map +1 -1
- package/es/utils/bignumber.js +3 -11
- package/es/utils/bignumber.js.map +1 -1
- package/es/utils/bytes.js +5 -9
- package/es/utils/bytes.js.map +1 -1
- package/es/utils/crypto.js +41 -106
- package/es/utils/crypto.js.map +1 -1
- package/es/utils/hd-wallet.js +45 -81
- package/es/utils/hd-wallet.js.map +1 -1
- package/es/utils/json-big.js +16 -49
- package/es/utils/json-big.js.map +1 -1
- package/es/utils/keystore.js +81 -246
- package/es/utils/keystore.js.map +1 -1
- package/es/utils/mptree.js +88 -134
- package/es/utils/mptree.js.map +1 -1
- package/es/utils/other.js +10 -60
- package/es/utils/other.js.map +1 -1
- package/es/utils/semver-satisfies.js +9 -28
- package/es/utils/semver-satisfies.js.map +1 -1
- package/es/utils/string.js +4 -13
- package/es/utils/string.js.map +1 -1
- package/es/utils/swagger.js +87 -224
- package/es/utils/swagger.js.map +1 -1
- package/package.json +51 -44
- package/src/account/base.js +11 -10
- package/src/account/multiple.js +24 -18
- package/src/ae/aens.js +64 -61
- package/src/ae/contract.js +71 -248
- package/src/ae/index.js +34 -9
- package/src/ae/oracle.js +30 -22
- package/src/ae/universal.js +3 -1
- package/src/chain/index.js +10 -16
- package/src/chain/node.js +38 -38
- package/src/channel/handlers.js +10 -4
- package/src/channel/index.js +44 -20
- package/src/contract/aci/index.js +234 -112
- package/src/contract/aci/transformation.js +30 -422
- package/src/contract/compiler.js +50 -5
- package/src/contract/ga/helpers.js +6 -14
- package/src/contract/ga/index.js +28 -28
- package/src/contract/index.js +6 -2
- package/src/index.js +4 -4
- package/src/node-pool/index.js +24 -13
- package/src/node.js +29 -30
- package/src/tx/builder/helpers.js +31 -56
- package/src/tx/builder/index.js +67 -28
- package/src/tx/builder/schema.js +79 -121
- package/src/tx/index.js +101 -12
- package/src/tx/tx-object.js +25 -8
- package/src/tx/tx.js +229 -150
- package/src/tx/validator.js +134 -202
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +25 -7
- package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
- package/src/utils/aepp-wallet-communication/helpers.js +4 -2
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +33 -12
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +59 -29
- package/src/utils/aepp-wallet-communication/schema.js +1 -3
- package/src/utils/aepp-wallet-communication/wallet-detector.js +4 -1
- package/src/utils/amount-formatter.ts +1 -1
- package/src/utils/bignumber.ts +2 -1
- package/src/utils/crypto.js +4 -68
- package/src/utils/keystore.js +10 -2
- package/src/utils/other.ts +1 -1
- package/src/utils/semver-satisfies.ts +1 -1
- package/src/utils/swagger.js +22 -10
- package/src/contract/aci/helpers.js +0 -140
package/es/account/multiple.js
CHANGED
|
@@ -1,14 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/*
|
|
2
|
+
* ISC License (ISC)
|
|
3
|
+
* Copyright (c) 2018 aeternity developers
|
|
4
|
+
*
|
|
5
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
* copyright notice and this permission notice appear in all copies.
|
|
8
|
+
*
|
|
9
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
+
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
+
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
+
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
+
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
+
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
+
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* AccountMultiple module
|
|
20
|
+
* @module @aeternity/aepp-sdk/es/accounts/multiple
|
|
21
|
+
* @export AccountMultiple
|
|
22
|
+
*/
|
|
9
23
|
import AsyncInit from '../utils/async-init';
|
|
10
24
|
import MemoryAccount from './memory';
|
|
11
|
-
import {
|
|
25
|
+
import { decode } from '../tx/builder/helpers';
|
|
12
26
|
import AccountBase, { isAccountBase } from './base';
|
|
13
27
|
/**
|
|
14
28
|
* AccountMultiple stamp
|
|
@@ -25,7 +39,9 @@ import AccountBase, { isAccountBase } from './base';
|
|
|
25
39
|
* @param {String} [options.address] - Address of account to select
|
|
26
40
|
* @return {Object} AccountMultiple instance
|
|
27
41
|
* @example
|
|
28
|
-
* const accounts = await AccountMultiple({
|
|
42
|
+
* const accounts = await AccountMultiple({
|
|
43
|
+
* accounts: [MemoryAccount({ keypair: 'keypair_object' })]
|
|
44
|
+
* })
|
|
29
45
|
* await accounts.addAccount(account, { select: true }) // Add account and make it selected
|
|
30
46
|
* accounts.removeAccount(address) // Remove account
|
|
31
47
|
* accounts.selectAccount(address) // Select account
|
|
@@ -33,61 +49,16 @@ import AccountBase, { isAccountBase } from './base';
|
|
|
33
49
|
*/
|
|
34
50
|
|
|
35
51
|
export default AccountBase.compose(AsyncInit, {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
switch (_context2.prev = _context2.next) {
|
|
45
|
-
case 0:
|
|
46
|
-
_ref$accounts = _ref.accounts, accounts = _ref$accounts === void 0 ? [] : _ref$accounts, address = _ref.address;
|
|
47
|
-
_context2.t0 = _fromPairs;
|
|
48
|
-
_context2.next = 4;
|
|
49
|
-
return _Promise.all(_mapInstanceProperty(accounts).call(accounts, /*#__PURE__*/function () {
|
|
50
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(a) {
|
|
51
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
52
|
-
while (1) {
|
|
53
|
-
switch (_context.prev = _context.next) {
|
|
54
|
-
case 0:
|
|
55
|
-
_context.next = 2;
|
|
56
|
-
return a.address();
|
|
57
|
-
|
|
58
|
-
case 2:
|
|
59
|
-
_context.t0 = _context.sent;
|
|
60
|
-
_context.t1 = a;
|
|
61
|
-
return _context.abrupt("return", [_context.t0, _context.t1]);
|
|
62
|
-
|
|
63
|
-
case 5:
|
|
64
|
-
case "end":
|
|
65
|
-
return _context.stop();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}, _callee);
|
|
69
|
-
}));
|
|
70
|
-
|
|
71
|
-
return function (_x) {
|
|
72
|
-
return _ref2.apply(this, arguments);
|
|
73
|
-
};
|
|
74
|
-
}()));
|
|
75
|
-
|
|
76
|
-
case 4:
|
|
77
|
-
_context2.t1 = _context2.sent;
|
|
78
|
-
_this.accounts = (0, _context2.t0)(_context2.t1);
|
|
79
|
-
if (!address) address = _Object$keys(_this.accounts)[0];
|
|
80
|
-
assertedType(address, 'ak');
|
|
81
|
-
_this.selectedAddress = address;
|
|
82
|
-
|
|
83
|
-
case 9:
|
|
84
|
-
case "end":
|
|
85
|
-
return _context2.stop();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}, _callee2);
|
|
89
|
-
}))();
|
|
52
|
+
async init(_ref) {
|
|
53
|
+
let {
|
|
54
|
+
accounts = [],
|
|
55
|
+
address
|
|
56
|
+
} = _ref;
|
|
57
|
+
this.accounts = Object.fromEntries(await Promise.all(accounts.map(async a => [await a.address(), a])));
|
|
58
|
+
address = address || Object.keys(this.accounts)[0];
|
|
59
|
+
if (address) this.selectAccount(address);
|
|
90
60
|
},
|
|
61
|
+
|
|
91
62
|
props: {
|
|
92
63
|
accounts: {}
|
|
93
64
|
},
|
|
@@ -95,49 +66,18 @@ export default AccountBase.compose(AsyncInit, {
|
|
|
95
66
|
selectedAddress: null
|
|
96
67
|
},
|
|
97
68
|
methods: {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return
|
|
103
|
-
var _ref3, _ref3$onAccount, onAccount;
|
|
104
|
-
|
|
105
|
-
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
106
|
-
while (1) {
|
|
107
|
-
switch (_context3.prev = _context3.next) {
|
|
108
|
-
case 0:
|
|
109
|
-
_ref3 = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {}, _ref3$onAccount = _ref3.onAccount, onAccount = _ref3$onAccount === void 0 ? _this2.selectedAddress : _ref3$onAccount;
|
|
110
|
-
return _context3.abrupt("return", _this2._resolveAccount(onAccount).address());
|
|
111
|
-
|
|
112
|
-
case 2:
|
|
113
|
-
case "end":
|
|
114
|
-
return _context3.stop();
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}, _callee3);
|
|
118
|
-
}))();
|
|
69
|
+
async address() {
|
|
70
|
+
let {
|
|
71
|
+
onAccount = this.selectedAddress
|
|
72
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
73
|
+
return this._resolveAccount(onAccount).address();
|
|
119
74
|
},
|
|
120
|
-
sign: function sign(data) {
|
|
121
|
-
var _arguments2 = arguments,
|
|
122
|
-
_this3 = this;
|
|
123
|
-
|
|
124
|
-
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
125
|
-
var _ref4, _ref4$onAccount, onAccount;
|
|
126
75
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return _context4.abrupt("return", _this3._resolveAccount(onAccount).sign(data));
|
|
133
|
-
|
|
134
|
-
case 2:
|
|
135
|
-
case "end":
|
|
136
|
-
return _context4.stop();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}, _callee4);
|
|
140
|
-
}))();
|
|
76
|
+
async sign(data) {
|
|
77
|
+
let {
|
|
78
|
+
onAccount = this.selectedAddress
|
|
79
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
80
|
+
return this._resolveAccount(onAccount).sign(data);
|
|
141
81
|
},
|
|
142
82
|
|
|
143
83
|
/**
|
|
@@ -148,8 +88,8 @@ export default AccountBase.compose(AsyncInit, {
|
|
|
148
88
|
* @return {String[]}
|
|
149
89
|
* @example addresses()
|
|
150
90
|
*/
|
|
151
|
-
addresses
|
|
152
|
-
return
|
|
91
|
+
addresses() {
|
|
92
|
+
return Object.keys(this.accounts);
|
|
153
93
|
},
|
|
154
94
|
|
|
155
95
|
/**
|
|
@@ -164,33 +104,13 @@ export default AccountBase.compose(AsyncInit, {
|
|
|
164
104
|
* @return {void}
|
|
165
105
|
* @example addAccount(account)
|
|
166
106
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
return _regeneratorRuntime.wrap(function _callee5$(_context5) {
|
|
175
|
-
while (1) {
|
|
176
|
-
switch (_context5.prev = _context5.next) {
|
|
177
|
-
case 0:
|
|
178
|
-
_ref5 = _arguments3.length > 1 && _arguments3[1] !== undefined ? _arguments3[1] : {}, select = _ref5.select;
|
|
179
|
-
_context5.next = 3;
|
|
180
|
-
return account.address();
|
|
181
|
-
|
|
182
|
-
case 3:
|
|
183
|
-
address = _context5.sent;
|
|
184
|
-
_this4.accounts[address] = account;
|
|
185
|
-
if (select) _this4.selectAccount(address);
|
|
186
|
-
|
|
187
|
-
case 6:
|
|
188
|
-
case "end":
|
|
189
|
-
return _context5.stop();
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}, _callee5);
|
|
193
|
-
}))();
|
|
107
|
+
async addAccount(account) {
|
|
108
|
+
let {
|
|
109
|
+
select
|
|
110
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
111
|
+
const address = await account.address();
|
|
112
|
+
this.accounts[address] = account;
|
|
113
|
+
if (select) this.selectAccount(address);
|
|
194
114
|
},
|
|
195
115
|
|
|
196
116
|
/**
|
|
@@ -202,9 +122,9 @@ export default AccountBase.compose(AsyncInit, {
|
|
|
202
122
|
* @return {void}
|
|
203
123
|
* @example removeAccount(address)
|
|
204
124
|
*/
|
|
205
|
-
removeAccount
|
|
125
|
+
removeAccount(address) {
|
|
206
126
|
if (!this.accounts[address]) {
|
|
207
|
-
console.warn(
|
|
127
|
+
console.warn(`removeAccount: Account for ${address} not available`);
|
|
208
128
|
return;
|
|
209
129
|
}
|
|
210
130
|
|
|
@@ -220,36 +140,39 @@ export default AccountBase.compose(AsyncInit, {
|
|
|
220
140
|
* @param {String} address - Address of account to select
|
|
221
141
|
* @example selectAccount('ak_xxxxxxxx')
|
|
222
142
|
*/
|
|
223
|
-
selectAccount
|
|
224
|
-
|
|
225
|
-
if (!this.accounts[address]) throw new Error(
|
|
143
|
+
selectAccount(address) {
|
|
144
|
+
decode(address, 'ak');
|
|
145
|
+
if (!this.accounts[address]) throw new Error(`Account for ${address} not available`);
|
|
226
146
|
this.selectedAddress = address;
|
|
227
147
|
},
|
|
228
148
|
|
|
229
149
|
/**
|
|
230
150
|
* Resolves an account
|
|
231
|
-
* @param account
|
|
151
|
+
* @param account account address (should exist in sdk instance), MemoryAccount or keypair
|
|
232
152
|
* @returns {AccountBase}
|
|
233
153
|
* @private
|
|
234
154
|
*/
|
|
235
|
-
_resolveAccount
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
155
|
+
_resolveAccount(account) {
|
|
156
|
+
if (account === null) {
|
|
157
|
+
throw new Error('No account or wallet configured');
|
|
158
|
+
} else {
|
|
159
|
+
switch (typeof account) {
|
|
160
|
+
case 'string':
|
|
161
|
+
decode(account, 'ak');
|
|
162
|
+
if (!this.accounts[account]) throw new Error(`Account for ${account} not available`);
|
|
163
|
+
return this.accounts[account];
|
|
164
|
+
|
|
165
|
+
case 'object':
|
|
166
|
+
return isAccountBase(account) ? account : MemoryAccount({
|
|
167
|
+
keypair: account
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
default:
|
|
171
|
+
throw new Error(`Unknown account type: ${typeof account} (account: ${account})`);
|
|
172
|
+
}
|
|
251
173
|
}
|
|
252
174
|
}
|
|
175
|
+
|
|
253
176
|
}
|
|
254
177
|
});
|
|
255
178
|
//# sourceMappingURL=multiple.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/account/multiple.js"],"names":["AsyncInit","MemoryAccount","
|
|
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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA,OAAOA,SAAP,MAAsB,qBAAtB;AACA,OAAOC,aAAP,MAA0B,UAA1B;AACA,SAASC,MAAT,QAAuB,uBAAvB;AACA,OAAOC,WAAP,IAAsBC,aAAtB,QAA2C,QAA3C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAeD,WAAW,CAACE,OAAZ,CAAoBL,SAApB,EAA+B;AAC5C,QAAMM,IAAN,OAAwC;AAAA,QAA5B;AAAEC,MAAAA,QAAQ,GAAG,EAAb;AAAiBC,MAAAA;AAAjB,KAA4B;AACtC,SAAKD,QAAL,GAAgBE,MAAM,CAACC,WAAP,CAAmB,MAAMC,OAAO,CAACC,GAAR,CACvCL,QAAQ,CAACM,GAAT,CAAa,MAAMC,CAAN,IAAW,CAAC,MAAMA,CAAC,CAACN,OAAF,EAAP,EAAoBM,CAApB,CAAxB,CADuC,CAAzB,CAAhB;AAGAN,IAAAA,OAAO,GAAGA,OAAO,IAAIC,MAAM,CAACM,IAAP,CAAY,KAAKR,QAAjB,EAA2B,CAA3B,CAArB;AACA,QAAIC,OAAJ,EAAa,KAAKQ,aAAL,CAAmBR,OAAnB;AACd,GAP2C;;AAQ5CS,EAAAA,KAAK,EAAE;AACLV,IAAAA,QAAQ,EAAE;AADL,GARqC;AAW5CW,EAAAA,SAAS,EAAE;AACTC,IAAAA,eAAe,EAAE;AADR,GAXiC;AAc5CC,EAAAA,OAAO,EAAE;AACP,UAAMZ,OAAN,GAA0D;AAAA,UAA3C;AAAEa,QAAAA,SAAS,GAAG,KAAKF;AAAnB,OAA2C,uEAAJ,EAAI;AACxD,aAAO,KAAKG,eAAL,CAAqBD,SAArB,EAAgCb,OAAhC,EAAP;AACD,KAHM;;AAIP,UAAMe,IAAN,CAAYC,IAAZ,EAA6D;AAAA,UAA3C;AAAEH,QAAAA,SAAS,GAAG,KAAKF;AAAnB,OAA2C,uEAAJ,EAAI;AAC3D,aAAO,KAAKG,eAAL,CAAqBD,SAArB,EAAgCE,IAAhC,CAAqCC,IAArC,CAAP;AACD,KANM;;AAOP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,GAAI;AACX,aAAOhB,MAAM,CAACM,IAAP,CAAY,KAAKR,QAAjB,CAAP;AACD,KAjBM;;AAkBP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,UAAMmB,UAAN,CAAkBC,OAAlB,EAA4C;AAAA,UAAjB;AAAEC,QAAAA;AAAF,OAAiB,uEAAJ,EAAI;AAC1C,YAAMpB,OAAO,GAAG,MAAMmB,OAAO,CAACnB,OAAR,EAAtB;AACA,WAAKD,QAAL,CAAcC,OAAd,IAAyBmB,OAAzB;AACA,UAAIC,MAAJ,EAAY,KAAKZ,aAAL,CAAmBR,OAAnB;AACb,KAlCM;;AAmCP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIqB,IAAAA,aAAa,CAAErB,OAAF,EAAW;AACtB,UAAI,CAAC,KAAKD,QAAL,CAAcC,OAAd,CAAL,EAA6B;AAC3BsB,QAAAA,OAAO,CAACC,IAAR,CAAc,8BAA6BvB,OAAQ,gBAAnD;AACA;AACD;;AACD,aAAO,KAAKD,QAAL,CAAcC,OAAd,CAAP;AACA,UAAI,KAAKW,eAAL,KAAyBX,OAA7B,EAAsC,KAAKW,eAAL,GAAuB,IAAvB;AACvC,KAnDM;;AAoDP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIH,IAAAA,aAAa,CAAER,OAAF,EAAW;AACtBN,MAAAA,MAAM,CAACM,OAAD,EAAU,IAAV,CAAN;AACA,UAAI,CAAC,KAAKD,QAAL,CAAcC,OAAd,CAAL,EAA6B,MAAM,IAAIwB,KAAJ,CAAW,eAAcxB,OAAQ,gBAAjC,CAAN;AAC7B,WAAKW,eAAL,GAAuBX,OAAvB;AACD,KAhEM;;AAiEP;AACJ;AACA;AACA;AACA;AACA;AACIc,IAAAA,eAAe,CAAEK,OAAF,EAAW;AACxB,UAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,cAAM,IAAIK,KAAJ,CAAU,iCAAV,CAAN;AACD,OAFD,MAEO;AACL,gBAAQ,OAAOL,OAAf;AACE,eAAK,QAAL;AACEzB,YAAAA,MAAM,CAACyB,OAAD,EAAU,IAAV,CAAN;AACA,gBAAI,CAAC,KAAKpB,QAAL,CAAcoB,OAAd,CAAL,EAA6B,MAAM,IAAIK,KAAJ,CAAW,eAAcL,OAAQ,gBAAjC,CAAN;AAC7B,mBAAO,KAAKpB,QAAL,CAAcoB,OAAd,CAAP;;AACF,eAAK,QAAL;AACE,mBAAOvB,aAAa,CAACuB,OAAD,CAAb,GAAyBA,OAAzB,GAAmC1B,aAAa,CAAC;AAAEgC,cAAAA,OAAO,EAAEN;AAAX,aAAD,CAAvD;;AACF;AACE,kBAAM,IAAIK,KAAJ,CAAW,yBAAwB,OAAOL,OAAQ,cAAaA,OAAQ,GAAvE,CAAN;AARJ;AAUD;AACF;;AAtFM;AAdmC,CAA/B,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 * 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({\n * accounts: [MemoryAccount({ keypair: 'keypair_object' })]\n * })\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 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"}
|