@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.
Files changed (159) hide show
  1. package/CHANGELOG.md +216 -337
  2. package/README.md +16 -9
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/account/base.js +36 -120
  11. package/es/account/base.js.map +1 -1
  12. package/es/account/memory.js +17 -19
  13. package/es/account/memory.js.map +1 -1
  14. package/es/account/multiple.js +79 -156
  15. package/es/account/multiple.js.map +1 -1
  16. package/es/ae/aens.js +205 -626
  17. package/es/ae/aens.js.map +1 -1
  18. package/es/ae/contract.js +114 -918
  19. package/es/ae/contract.js.map +1 -1
  20. package/es/ae/index.js +90 -250
  21. package/es/ae/index.js.map +1 -1
  22. package/es/ae/oracle.js +136 -504
  23. package/es/ae/oracle.js.map +1 -1
  24. package/es/ae/universal.js.map +1 -1
  25. package/es/chain/index.js +12 -27
  26. package/es/chain/index.js.map +1 -1
  27. package/es/chain/node.js +289 -1020
  28. package/es/chain/node.js.map +1 -1
  29. package/es/channel/handlers.js +597 -1086
  30. package/es/channel/handlers.js.map +1 -1
  31. package/es/channel/index.js +238 -465
  32. package/es/channel/index.js.map +1 -1
  33. package/es/channel/internal.js +129 -301
  34. package/es/channel/internal.js.map +1 -1
  35. package/es/contract/aci/index.js +328 -495
  36. package/es/contract/aci/index.js.map +1 -1
  37. package/es/contract/aci/transformation.js +35 -711
  38. package/es/contract/aci/transformation.js.map +1 -1
  39. package/es/contract/compiler.js +131 -203
  40. package/es/contract/compiler.js.map +1 -1
  41. package/es/contract/ga/helpers.js +17 -122
  42. package/es/contract/ga/helpers.js.map +1 -1
  43. package/es/contract/ga/index.js +108 -249
  44. package/es/contract/ga/index.js.map +1 -1
  45. package/es/contract/index.js +7 -3
  46. package/es/contract/index.js.map +1 -1
  47. package/es/index.js +3 -3
  48. package/es/index.js.map +1 -1
  49. package/es/node-pool/index.js +57 -74
  50. package/es/node-pool/index.js.map +1 -1
  51. package/es/node.js +65 -161
  52. package/es/node.js.map +1 -1
  53. package/es/other.d.ts +1 -1
  54. package/es/tx/builder/helpers.js +62 -115
  55. package/es/tx/builder/helpers.js.map +1 -1
  56. package/es/tx/builder/index.js +218 -309
  57. package/es/tx/builder/index.js.map +1 -1
  58. package/es/tx/builder/schema.js +586 -573
  59. package/es/tx/builder/schema.js.map +1 -1
  60. package/es/tx/index.js +102 -13
  61. package/es/tx/index.js.map +1 -1
  62. package/es/tx/tx-object.js +114 -138
  63. package/es/tx/tx-object.js.map +1 -1
  64. package/es/tx/tx.js +810 -1586
  65. package/es/tx/tx.js.map +1 -1
  66. package/es/tx/validator.js +191 -426
  67. package/es/tx/validator.js.map +1 -1
  68. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +20 -23
  69. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
  70. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +53 -80
  71. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
  72. package/es/utils/aepp-wallet-communication/connection/index.js +2 -1
  73. package/es/utils/aepp-wallet-communication/connection/index.js.map +1 -1
  74. package/es/utils/aepp-wallet-communication/content-script-bridge.js +24 -19
  75. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
  76. package/es/utils/aepp-wallet-communication/helpers.js +60 -105
  77. package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
  78. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +191 -514
  79. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
  80. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +78 -93
  81. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
  82. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +381 -613
  83. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
  84. package/es/utils/aepp-wallet-communication/schema.js +43 -39
  85. package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
  86. package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
  87. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
  88. package/es/utils/amount-formatter.js +41 -61
  89. package/es/utils/amount-formatter.js.map +1 -1
  90. package/es/utils/async-init.js +28 -64
  91. package/es/utils/async-init.js.map +1 -1
  92. package/es/utils/bignumber.js +3 -11
  93. package/es/utils/bignumber.js.map +1 -1
  94. package/es/utils/bytes.js +5 -9
  95. package/es/utils/bytes.js.map +1 -1
  96. package/es/utils/crypto.js +41 -106
  97. package/es/utils/crypto.js.map +1 -1
  98. package/es/utils/hd-wallet.js +45 -81
  99. package/es/utils/hd-wallet.js.map +1 -1
  100. package/es/utils/json-big.js +16 -49
  101. package/es/utils/json-big.js.map +1 -1
  102. package/es/utils/keystore.js +81 -246
  103. package/es/utils/keystore.js.map +1 -1
  104. package/es/utils/mptree.js +88 -134
  105. package/es/utils/mptree.js.map +1 -1
  106. package/es/utils/other.js +10 -60
  107. package/es/utils/other.js.map +1 -1
  108. package/es/utils/semver-satisfies.js +9 -28
  109. package/es/utils/semver-satisfies.js.map +1 -1
  110. package/es/utils/string.js +4 -13
  111. package/es/utils/string.js.map +1 -1
  112. package/es/utils/swagger.js +87 -224
  113. package/es/utils/swagger.js.map +1 -1
  114. package/package.json +51 -44
  115. package/src/account/base.js +11 -10
  116. package/src/account/multiple.js +24 -18
  117. package/src/ae/aens.js +64 -61
  118. package/src/ae/contract.js +71 -248
  119. package/src/ae/index.js +34 -9
  120. package/src/ae/oracle.js +30 -22
  121. package/src/ae/universal.js +3 -1
  122. package/src/chain/index.js +10 -16
  123. package/src/chain/node.js +38 -38
  124. package/src/channel/handlers.js +10 -4
  125. package/src/channel/index.js +44 -20
  126. package/src/contract/aci/index.js +234 -112
  127. package/src/contract/aci/transformation.js +30 -422
  128. package/src/contract/compiler.js +50 -5
  129. package/src/contract/ga/helpers.js +6 -14
  130. package/src/contract/ga/index.js +28 -28
  131. package/src/contract/index.js +6 -2
  132. package/src/index.js +4 -4
  133. package/src/node-pool/index.js +24 -13
  134. package/src/node.js +29 -30
  135. package/src/tx/builder/helpers.js +31 -56
  136. package/src/tx/builder/index.js +67 -28
  137. package/src/tx/builder/schema.js +79 -121
  138. package/src/tx/index.js +101 -12
  139. package/src/tx/tx-object.js +25 -8
  140. package/src/tx/tx.js +229 -150
  141. package/src/tx/validator.js +134 -202
  142. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
  143. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +25 -7
  144. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  145. package/src/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
  146. package/src/utils/aepp-wallet-communication/helpers.js +4 -2
  147. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +33 -12
  148. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
  149. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +59 -29
  150. package/src/utils/aepp-wallet-communication/schema.js +1 -3
  151. package/src/utils/aepp-wallet-communication/wallet-detector.js +4 -1
  152. package/src/utils/amount-formatter.ts +1 -1
  153. package/src/utils/bignumber.ts +2 -1
  154. package/src/utils/crypto.js +4 -68
  155. package/src/utils/keystore.js +10 -2
  156. package/src/utils/other.ts +1 -1
  157. package/src/utils/semver-satisfies.ts +1 -1
  158. package/src/utils/swagger.js +22 -10
  159. package/src/contract/aci/helpers.js +0 -140
@@ -1,14 +1,28 @@
1
- import _typeof from "@babel/runtime-corejs3/helpers/typeof";
2
- import _fromPairs from "ramda/src/fromPairs";
3
- import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
4
- import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
5
- import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
6
- import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
7
- import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
8
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
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 { assertedType } from '../utils/crypto';
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({ accounts: [ MemmoryAccount({ keypair: 'keypair_object' }) ] })
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
- init: function init(_ref) {
37
- var _this = this;
38
-
39
- return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
40
- var _ref$accounts, accounts, address;
41
-
42
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
43
- while (1) {
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
- address: function address() {
99
- var _arguments = arguments,
100
- _this2 = this;
101
-
102
- return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
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
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
128
- while (1) {
129
- switch (_context4.prev = _context4.next) {
130
- case 0:
131
- _ref4 = _arguments2.length > 1 && _arguments2[1] !== undefined ? _arguments2[1] : {}, _ref4$onAccount = _ref4.onAccount, onAccount = _ref4$onAccount === void 0 ? _this3.selectedAddress : _ref4$onAccount;
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: function addresses() {
152
- return _Object$keys(this.accounts);
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
- addAccount: function addAccount(account) {
168
- var _arguments3 = arguments,
169
- _this4 = this;
170
-
171
- return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
172
- var _ref5, select, address;
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: function removeAccount(address) {
125
+ removeAccount(address) {
206
126
  if (!this.accounts[address]) {
207
- console.warn("removeAccount: Account for ".concat(address, " not available"));
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: function selectAccount(address) {
224
- assertedType(address, 'ak');
225
- if (!this.accounts[address]) throw new Error("Account for ".concat(address, " not available"));
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 can be account address (should exist in sdk instance), MemoryAccount or keypair
151
+ * @param account account address (should exist in sdk instance), MemoryAccount or keypair
232
152
  * @returns {AccountBase}
233
153
  * @private
234
154
  */
235
- _resolveAccount: function _resolveAccount(account) {
236
- var _context6;
237
-
238
- switch (_typeof(account)) {
239
- case 'string':
240
- assertedType(account, 'ak');
241
- if (!this.accounts[account]) throw new Error("Account for ".concat(account, " not available"));
242
- return this.accounts[account];
243
-
244
- case 'object':
245
- return isAccountBase(account) ? account : MemoryAccount({
246
- keypair: account
247
- });
248
-
249
- default:
250
- throw new Error(_concatInstanceProperty(_context6 = "Unknown account type: ".concat(_typeof(account), " (account: ")).call(_context6, account, ")"));
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","assertedType","AccountBase","isAccountBase","compose","init","accounts","address","all","a","selectedAddress","props","deepProps","methods","onAccount","_resolveAccount","sign","data","addresses","addAccount","account","select","selectAccount","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 * as R from 'ramda'\nimport AsyncInit from '../utils/async-init'\nimport MemoryAccount from './memory'\nimport { assertedType } from '../utils/crypto'\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 = R.fromPairs(await Promise.all(accounts.map(async a => [await a.address(), a])))\n if (!address) address = Object.keys(this.accounts)[0]\n assertedType(address, 'ak')\n this.selectedAddress = 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 assertedType(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 switch (typeof account) {\n case 'string':\n assertedType(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"],"file":"multiple.js"}
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({\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"}