@aeternity/aepp-sdk 8.2.0 → 10.0.0-beta.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.
Files changed (145) hide show
  1. package/README.md +16 -9
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -9
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/account/base.js +33 -119
  10. package/es/account/base.js.map +1 -1
  11. package/es/account/memory.js +17 -19
  12. package/es/account/memory.js.map +1 -1
  13. package/es/account/multiple.js +75 -154
  14. package/es/account/multiple.js.map +1 -1
  15. package/es/ae/aens.js +164 -599
  16. package/es/ae/aens.js.map +1 -1
  17. package/es/ae/contract.js +108 -916
  18. package/es/ae/contract.js.map +1 -1
  19. package/es/ae/index.js +89 -250
  20. package/es/ae/index.js.map +1 -1
  21. package/es/ae/oracle.js +132 -500
  22. package/es/ae/oracle.js.map +1 -1
  23. package/es/chain/index.js +4 -23
  24. package/es/chain/index.js.map +1 -1
  25. package/es/chain/node.js +292 -1018
  26. package/es/chain/node.js.map +1 -1
  27. package/es/channel/handlers.js +597 -1086
  28. package/es/channel/handlers.js.map +1 -1
  29. package/es/channel/index.js +203 -451
  30. package/es/channel/index.js.map +1 -1
  31. package/es/channel/internal.js +129 -301
  32. package/es/channel/internal.js.map +1 -1
  33. package/es/contract/aci/index.js +319 -491
  34. package/es/contract/aci/index.js.map +1 -1
  35. package/es/contract/aci/transformation.js +35 -711
  36. package/es/contract/aci/transformation.js.map +1 -1
  37. package/es/contract/compiler.js +129 -203
  38. package/es/contract/compiler.js.map +1 -1
  39. package/es/contract/ga/helpers.js +17 -122
  40. package/es/contract/ga/helpers.js.map +1 -1
  41. package/es/contract/ga/index.js +102 -247
  42. package/es/contract/ga/index.js.map +1 -1
  43. package/es/contract/index.js +1 -1
  44. package/es/contract/index.js.map +1 -1
  45. package/es/index.js +2 -3
  46. package/es/index.js.map +1 -1
  47. package/es/node-pool/index.js +54 -73
  48. package/es/node-pool/index.js.map +1 -1
  49. package/es/node.js +56 -157
  50. package/es/node.js.map +1 -1
  51. package/es/other.d.ts +1 -1
  52. package/es/tx/builder/helpers.js +49 -89
  53. package/es/tx/builder/helpers.js.map +1 -1
  54. package/es/tx/builder/index.js +205 -303
  55. package/es/tx/builder/index.js.map +1 -1
  56. package/es/tx/builder/schema.js +585 -573
  57. package/es/tx/builder/schema.js.map +1 -1
  58. package/es/tx/index.js +1 -1
  59. package/es/tx/index.js.map +1 -1
  60. package/es/tx/tx-object.js +105 -135
  61. package/es/tx/tx-object.js.map +1 -1
  62. package/es/tx/tx.js +810 -1586
  63. package/es/tx/tx.js.map +1 -1
  64. package/es/tx/validator.js +191 -426
  65. package/es/tx/validator.js.map +1 -1
  66. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +17 -21
  67. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
  68. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +38 -74
  69. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
  70. package/es/utils/aepp-wallet-communication/content-script-bridge.js +14 -15
  71. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
  72. package/es/utils/aepp-wallet-communication/helpers.js +60 -105
  73. package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
  74. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +179 -510
  75. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
  76. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +70 -89
  77. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
  78. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +354 -603
  79. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
  80. package/es/utils/aepp-wallet-communication/schema.js +43 -39
  81. package/es/utils/aepp-wallet-communication/schema.js.map +1 -1
  82. package/es/utils/aepp-wallet-communication/wallet-detector.js +32 -58
  83. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
  84. package/es/utils/amount-formatter.js +41 -61
  85. package/es/utils/amount-formatter.js.map +1 -1
  86. package/es/utils/async-init.js +28 -64
  87. package/es/utils/async-init.js.map +1 -1
  88. package/es/utils/bignumber.js +3 -11
  89. package/es/utils/bignumber.js.map +1 -1
  90. package/es/utils/bytes.js +5 -9
  91. package/es/utils/bytes.js.map +1 -1
  92. package/es/utils/crypto.js +49 -75
  93. package/es/utils/crypto.js.map +1 -1
  94. package/es/utils/hd-wallet.js +45 -81
  95. package/es/utils/hd-wallet.js.map +1 -1
  96. package/es/utils/json-big.js +16 -49
  97. package/es/utils/json-big.js.map +1 -1
  98. package/es/utils/keystore.js +81 -246
  99. package/es/utils/keystore.js.map +1 -1
  100. package/es/utils/mptree.js +88 -134
  101. package/es/utils/mptree.js.map +1 -1
  102. package/es/utils/other.js +10 -60
  103. package/es/utils/other.js.map +1 -1
  104. package/es/utils/semver-satisfies.js +9 -28
  105. package/es/utils/semver-satisfies.js.map +1 -1
  106. package/es/utils/string.js +4 -13
  107. package/es/utils/string.js.map +1 -1
  108. package/es/utils/swagger.js +85 -218
  109. package/es/utils/swagger.js.map +1 -1
  110. package/package.json +52 -43
  111. package/src/account/base.js +8 -9
  112. package/src/account/multiple.js +20 -16
  113. package/src/ae/aens.js +25 -21
  114. package/src/ae/contract.js +65 -246
  115. package/src/ae/index.js +31 -7
  116. package/src/ae/oracle.js +21 -17
  117. package/src/chain/index.js +2 -12
  118. package/src/chain/node.js +26 -29
  119. package/src/channel/handlers.js +0 -1
  120. package/src/channel/index.js +4 -5
  121. package/src/contract/aci/index.js +221 -106
  122. package/src/contract/aci/transformation.js +30 -422
  123. package/src/contract/compiler.js +45 -4
  124. package/src/contract/ga/helpers.js +2 -12
  125. package/src/contract/ga/index.js +22 -26
  126. package/src/index.js +2 -4
  127. package/src/node-pool/index.js +21 -12
  128. package/src/node.js +22 -26
  129. package/src/tx/builder/helpers.js +12 -24
  130. package/src/tx/builder/index.js +18 -15
  131. package/src/tx/builder/schema.js +43 -108
  132. package/src/tx/tx-object.js +0 -2
  133. package/src/tx/tx.js +157 -144
  134. package/src/tx/validator.js +134 -202
  135. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +1 -3
  136. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +9 -10
  137. package/src/utils/aepp-wallet-communication/schema.js +1 -3
  138. package/src/utils/amount-formatter.ts +1 -1
  139. package/src/utils/bignumber.ts +2 -1
  140. package/src/utils/crypto.js +4 -17
  141. package/src/utils/other.ts +1 -1
  142. package/src/utils/semver-satisfies.ts +1 -1
  143. package/src/utils/swagger.js +24 -7
  144. package/CHANGELOG.md +0 -1716
  145. package/src/contract/aci/helpers.js +0 -140
@@ -1,24 +1,3 @@
1
- import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
- import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
- import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
- import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
5
- import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
6
- import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
7
- import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
8
- import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
9
- import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
10
- import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
11
- import _typeof from "@babel/runtime-corejs3/helpers/typeof";
12
-
13
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) { symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
-
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context3; _forEachInstanceProperty(_context3 = ownKeys(Object(source), true)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context4; _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
-
17
- import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
18
- import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
19
- import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
20
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
21
-
22
1
  /**
23
2
  * TxObject module
24
3
  * @module @aeternity/aepp-sdk/es/tx/tx-object
@@ -26,7 +5,6 @@ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/insta
26
5
  * @example import TxObject from '@aeternity/aepp-sdk/es/tx/tx-object'
27
6
  */
28
7
  import stampit from '@stamp/it';
29
- import { assertedType } from '../utils/crypto';
30
8
  import { buildTx, calculateFee, unpackTx } from './builder';
31
9
  import { TX_TYPE } from './builder/schema';
32
10
  import { encode } from './builder/helpers';
@@ -41,34 +19,32 @@ import { isHex } from '../utils/string';
41
19
  * @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, params: Object, type: String }}
42
20
  */
43
21
 
44
- var buildTransaction = function buildTransaction(type, params) {
45
- var _context;
46
-
47
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
48
- if (_typeof(params) !== 'object') throw new Error('"params" should be an object');
49
- if (typeof type !== 'string' || !_includesInstanceProperty(_context = _Object$values(TX_TYPE)).call(_context, type)) throw new Error("Unknown transaction type ".concat(type));
50
- var fee = calculateFee(params.fee, type, {
22
+ const buildTransaction = function (type, params) {
23
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
24
+ if (typeof params !== 'object') throw new Error('"params" should be an object');
25
+ if (typeof type !== 'string' || !Object.values(TX_TYPE).includes(type)) throw new Error(`Unknown transaction type ${type}`);
26
+ const fee = calculateFee(params.fee, type, {
51
27
  gas: params.gas,
52
- params: params,
28
+ params,
53
29
  vsn: params.vsn
54
30
  });
55
-
56
- var _buildTx = buildTx(_objectSpread(_objectSpread({}, params), {}, {
57
- fee: fee
58
- }), type, _objectSpread({
59
- vsn: params.vsn
60
- }, options)),
61
- rlpEncoded = _buildTx.rlpEncoded,
62
- binary = _buildTx.binary,
63
- encodedTx = _buildTx.tx,
64
- txObject = _buildTx.txObject;
65
-
31
+ const {
32
+ rlpEncoded,
33
+ binary,
34
+ tx: encodedTx,
35
+ txObject
36
+ } = buildTx({ ...params,
37
+ fee
38
+ }, type, {
39
+ vsn: params.vsn,
40
+ ...options
41
+ });
66
42
  return {
67
- rlpEncoded: rlpEncoded,
68
- binary: binary,
69
- encodedTx: encodedTx,
43
+ rlpEncoded,
44
+ binary,
45
+ encodedTx,
70
46
  params: txObject,
71
- type: type
47
+ type
72
48
  };
73
49
  };
74
50
  /**
@@ -80,40 +56,38 @@ var buildTransaction = function buildTransaction(type, params) {
80
56
  */
81
57
 
82
58
 
83
- var unpackTransaction = function unpackTransaction(tx) {
84
- if (!tx) throw new Error("Invalid transaction: ".concat(tx));
59
+ const unpackTransaction = tx => {
60
+ if (!tx) throw new Error(`Invalid transaction: ${tx}`);
85
61
 
86
62
  if (typeof tx === 'string') {
87
- if (!assertedType(tx, 'tx', true)) throw new Error('Invalid transaction string. Tx should be `tx` prefixed base58c string');
88
-
89
- var _unpackTx = unpackTx(tx),
90
- type = _unpackTx.txType,
91
- params = _unpackTx.tx,
92
- rlpEncoded = _unpackTx.rlpEncoded,
93
- binary = _unpackTx.binary;
94
-
63
+ const {
64
+ txType: type,
65
+ tx: params,
66
+ rlpEncoded,
67
+ binary
68
+ } = unpackTx(tx);
95
69
  return {
96
70
  encodedTx: tx,
97
- type: type,
98
- params: params,
99
- rlpEncoded: rlpEncoded,
100
- binary: binary
71
+ type,
72
+ params,
73
+ rlpEncoded,
74
+ binary
101
75
  };
102
76
  }
103
77
 
104
78
  if (Buffer.isBuffer(tx)) {
105
- var _unpackTx2 = unpackTx(tx, true),
106
- _type = _unpackTx2.txType,
107
- _params = _unpackTx2.tx,
108
- _rlpEncoded = _unpackTx2.rlpEncoded,
109
- _binary = _unpackTx2.binary;
110
-
79
+ const {
80
+ txType: type,
81
+ tx: params,
82
+ rlpEncoded,
83
+ binary
84
+ } = unpackTx(tx, true);
111
85
  return {
112
86
  encodedTx: encode(tx, 'tx'),
113
- type: _type,
114
- params: _params,
115
- rlpEncoded: _rlpEncoded,
116
- binary: _binary
87
+ type,
88
+ params,
89
+ rlpEncoded,
90
+ binary
117
91
  };
118
92
  }
119
93
  };
@@ -130,14 +104,13 @@ var unpackTransaction = function unpackTransaction(tx) {
130
104
  */
131
105
 
132
106
 
133
- var initTransaction = function initTransaction() {
134
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
135
- tx = _ref.tx,
136
- params = _ref.params,
137
- type = _ref.type,
138
- _ref$options = _ref.options,
139
- options = _ref$options === void 0 ? {} : _ref$options;
140
-
107
+ const initTransaction = function () {
108
+ let {
109
+ tx,
110
+ params,
111
+ type,
112
+ options = {}
113
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
141
114
  if (params && type) return buildTransaction(type, params, options);
142
115
  if (tx) return unpackTransaction(tx);
143
116
  throw new Error('Invalid TxObject arguments. Please provide one of { tx: "tx_asdasd23..." } or { type: "spendTx", params: {...} }');
@@ -159,37 +132,38 @@ var initTransaction = function initTransaction() {
159
132
  */
160
133
 
161
134
 
162
- export var TxObject = stampit({
163
- init: function init() {
164
- var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
165
- tx = _ref2.tx,
166
- params = _ref2.params,
167
- type = _ref2.type,
168
- _ref2$options = _ref2.options,
169
- options = _ref2$options === void 0 ? {} : _ref2$options;
170
-
135
+ export const TxObject = stampit({
136
+ init() {
137
+ let {
138
+ tx,
139
+ params,
140
+ type,
141
+ options = {}
142
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
171
143
  this.options = options;
172
144
  this.signatures = [];
173
-
174
- _Object$assign(this, initTransaction({
175
- tx: tx,
176
- params: params,
177
- type: type,
178
- options: options
145
+ Object.assign(this, initTransaction({
146
+ tx,
147
+ params,
148
+ type,
149
+ options
179
150
  }));
180
151
 
181
152
  if (this.type === TX_TYPE.signed) {
182
- var _this$params = this.params,
183
- signatures = _this$params.signatures,
184
- _this$params$encodedT = _this$params.encodedTx,
185
- txType = _this$params$encodedT.txType,
186
- _tx = _this$params$encodedT.tx;
153
+ const {
154
+ signatures,
155
+ encodedTx: {
156
+ txType,
157
+ tx
158
+ }
159
+ } = this.params;
187
160
  this.signatures = signatures;
188
- this.params = _tx;
161
+ this.params = tx;
189
162
  this.type = txType;
190
163
  this.isSigned = true;
191
164
  }
192
165
  },
166
+
193
167
  statics: {
194
168
  /**
195
169
  * Create txObject from base64c RLP encoded transaction string with 'tx_' prefix
@@ -198,11 +172,9 @@ export var TxObject = stampit({
198
172
  * @param {String} tx Transaction string (tx_23fsdgsdfg...)
199
173
  * @return {TxObject}
200
174
  */
201
- fromString: function fromString(tx) {
202
- return TxObject({
203
- tx: tx
204
- });
205
- },
175
+ fromString: tx => TxObject({
176
+ tx
177
+ }),
206
178
 
207
179
  /**
208
180
  * Create txObject from transaction RLP binary
@@ -211,11 +183,9 @@ export var TxObject = stampit({
211
183
  * @param {Buffer} tx Transaction RLP binary
212
184
  * @return {TxObject}
213
185
  */
214
- fromRlp: function fromRlp(tx) {
215
- return TxObject({
216
- tx: tx
217
- });
218
- }
186
+ fromRlp: tx => TxObject({
187
+ tx
188
+ })
219
189
  },
220
190
  methods: {
221
191
  /**
@@ -225,17 +195,18 @@ export var TxObject = stampit({
225
195
  * @param options
226
196
  * @return {TxObject}
227
197
  */
228
- setProp: function setProp() {
229
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
230
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
231
- if (_typeof(props) !== 'object') throw new Error('Props should be an object');
198
+ setProp() {
199
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
200
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
201
+ if (typeof props !== 'object') throw new Error('Props should be an object');
232
202
  this.isSigned = false;
233
203
  this.signatures = [];
234
-
235
- _Object$assign(this, buildTransaction(this.type, _objectSpread(_objectSpread(_objectSpread({}, this.params), props), {}, {
204
+ Object.assign(this, buildTransaction(this.type, { ...this.params,
205
+ ...props,
236
206
  fee: null
237
- }), _objectSpread(_objectSpread({}, this.options), options)));
238
-
207
+ }, { ...this.options,
208
+ ...options
209
+ }));
239
210
  return this;
240
211
  },
241
212
 
@@ -244,7 +215,7 @@ export var TxObject = stampit({
244
215
  * @alias module:@aeternity/aepp-sdk/es/tx/tx-object
245
216
  * @return {Array} Array of signatures
246
217
  */
247
- getSignatures: function getSignatures() {
218
+ getSignatures() {
248
219
  if (!this.isSigned) throw new Error('Signature not found, transaction is not signed');
249
220
  return this.signatures;
250
221
  },
@@ -255,22 +226,20 @@ export var TxObject = stampit({
255
226
  * @param {Buffer|String} signature Signature to add ( Can be: Buffer | Uint8Array | HexString )
256
227
  * @return {void}
257
228
  */
258
- addSignature: function addSignature(signature) {
259
- var _context2;
260
-
229
+ addSignature(signature) {
261
230
  signature = isHex(signature) ? Buffer.from(signature, 'hex') : signature;
262
231
  if (!Buffer.isBuffer(signature) && !(signature instanceof Uint8Array)) throw new Error('Invalid signature, signature must be of type Buffer or Uint8Array');
263
-
264
- _Object$assign(this, buildTransaction(TX_TYPE.signed, {
232
+ Object.assign(this, buildTransaction(TX_TYPE.signed, {
265
233
  encodedTx: this.rlpEncoded,
266
- signatures: [_concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(this.signatures), [signature])]
234
+ signatures: [[...this.signatures, signature]]
267
235
  }));
268
-
269
- var _this$params2 = this.params,
270
- signatures = _this$params2.signatures,
271
- _this$params2$encoded = _this$params2.encodedTx,
272
- txType = _this$params2$encoded.txType,
273
- tx = _this$params2$encoded.tx;
236
+ const {
237
+ signatures,
238
+ encodedTx: {
239
+ txType,
240
+ tx
241
+ }
242
+ } = this.params;
274
243
  this.signatures = signatures;
275
244
  this.params = tx;
276
245
  this.type = txType;
@@ -283,17 +252,18 @@ export var TxObject = stampit({
283
252
  * @param {Object} props
284
253
  * @return {String} fee
285
254
  */
286
- calculateMinFee: function calculateMinFee() {
287
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
288
-
289
- var params = _objectSpread(_objectSpread({}, this.params), props);
290
-
255
+ calculateMinFee() {
256
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
257
+ const params = { ...this.params,
258
+ ...props
259
+ };
291
260
  return calculateFee(0, this.type, {
292
261
  gas: params.gas,
293
- params: params,
262
+ params,
294
263
  vsn: params.vsn
295
264
  });
296
265
  }
266
+
297
267
  }
298
268
  });
299
269
  export default TxObject;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tx/tx-object.js"],"names":["stampit","assertedType","buildTx","calculateFee","unpackTx","TX_TYPE","encode","isHex","buildTransaction","type","params","options","Error","fee","gas","vsn","rlpEncoded","binary","encodedTx","tx","txObject","unpackTransaction","txType","Buffer","isBuffer","initTransaction","TxObject","init","signatures","signed","isSigned","statics","fromString","fromRlp","methods","setProp","props","getSignatures","addSignature","signature","from","Uint8Array","calculateMinFee"],"mappings":"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","sourcesContent":["/**\n * TxObject module\n * @module @aeternity/aepp-sdk/es/tx/tx-object\n * @export TxObject\n * @example import TxObject from '@aeternity/aepp-sdk/es/tx/tx-object'\n */\nimport stampit from '@stamp/it'\nimport { assertedType } from '../utils/crypto'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { TX_TYPE } from './builder/schema'\nimport { encode } from './builder/helpers'\nimport { isHex } from '../utils/string'\n\n/**\n * Build transaction from object\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {String} type Transaction type\n * @param {Object} params Transaction params\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, params: Object, type: String }}\n */\nconst buildTransaction = (type, params, options = {}) => {\n if (typeof params !== 'object') throw new Error('\"params\" should be an object')\n if (typeof type !== 'string' || !Object.values(TX_TYPE).includes(type)) throw new Error(`Unknown transaction type ${type}`)\n const fee = calculateFee(params.fee, type, { gas: params.gas, params, vsn: params.vsn })\n const { rlpEncoded, binary, tx: encodedTx, txObject } = buildTx({ ...params, fee }, type, { vsn: params.vsn, ...options })\n return { rlpEncoded, binary, encodedTx, params: txObject, type }\n}\n\n/**\n * Unpack transaction from RLP encoded binary or base64c string\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} tx RLP encoded binary or base64c(rlpBinary) string\n * @throws {Error} Arguments validation error's\n * @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object }}\n */\nconst unpackTransaction = (tx) => {\n if (!tx) throw new Error(`Invalid transaction: ${tx}`)\n if (typeof tx === 'string') {\n if (!assertedType(tx, 'tx', true)) throw new Error('Invalid transaction string. Tx should be `tx` prefixed base58c string')\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx)\n return { encodedTx: tx, type, params, rlpEncoded, binary }\n }\n if (Buffer.isBuffer(tx)) {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx, true)\n return { encodedTx: encode(tx, 'tx'), type, params, rlpEncoded, binary }\n }\n}\n\n/**\n * Helper which build or unpack transaction base on constructor arguments\n * Need to provide one of arguments: [tx] -> unpack flow or [params, type] -> build flow\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} [tx] Transaction rlp binary or vase64c string\n * @param {Object} params Transaction params\n * @param {String} type Transaction type\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object}}\n */\nconst initTransaction = ({ tx, params, type, options = {} } = {}) => {\n if (params && type) return buildTransaction(type, params, options)\n if (tx) return unpackTransaction(tx)\n throw new Error('Invalid TxObject arguments. Please provide one of { tx: \"tx_asdasd23...\" } or { type: \"spendTx\", params: {...} }')\n}\n\n/**\n * Transaction Validator Stamp\n * This stamp give us possibility to unpack and validate some of transaction properties,\n * to make sure we can post it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Buffer|String} [options.tx] - Rlp binary or base64c transaction\n * @param {Object} [options.params] - Transaction params\n * @param {String} [options.type] - Transaction type\n * @param {Object} [options.options] - Build options\n * @return {Object} TxObject instance\n * @example TxObject({ params: {...}, type: 'spendTx' })\n */\nexport const TxObject = stampit({\n init ({ tx, params, type, options = {} } = {}) {\n this.options = options\n this.signatures = []\n Object.assign(this, initTransaction({ tx, params, type, options }))\n\n if (this.type === TX_TYPE.signed) {\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n }\n },\n statics: {\n /**\n * Create txObject from base64c RLP encoded transaction string with 'tx_' prefix\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {String} tx Transaction string (tx_23fsdgsdfg...)\n * @return {TxObject}\n */\n fromString: (tx) => TxObject({ tx }),\n /**\n * Create txObject from transaction RLP binary\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {Buffer} tx Transaction RLP binary\n * @return {TxObject}\n */\n fromRlp: (tx) => TxObject({ tx })\n },\n methods: {\n /**\n * Rebuild transaction with new params and recalculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props Transaction properties for update\n * @param options\n * @return {TxObject}\n */\n setProp (props = {}, options = {}) {\n if (typeof props !== 'object') throw new Error('Props should be an object')\n this.isSigned = false\n this.signatures = []\n Object.assign(this, buildTransaction(this.type, { ...this.params, ...props, fee: null }, { ...this.options, ...options }))\n return this\n },\n /**\n * Get signatures\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @return {Array} Array of signatures\n */\n getSignatures () {\n if (!this.isSigned) throw new Error('Signature not found, transaction is not signed')\n return this.signatures\n },\n /**\n * Add signature\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} signature Signature to add ( Can be: Buffer | Uint8Array | HexString )\n * @return {void}\n */\n addSignature (signature) {\n signature = isHex(signature) ? Buffer.from(signature, 'hex') : signature\n if (!Buffer.isBuffer(signature) && !(signature instanceof Uint8Array)) throw new Error('Invalid signature, signature must be of type Buffer or Uint8Array')\n Object.assign(this, buildTransaction(TX_TYPE.signed, { encodedTx: this.rlpEncoded, signatures: [[...this.signatures, signature]] }))\n\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n },\n /**\n * Calculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props\n * @return {String} fee\n */\n calculateMinFee (props = {}) {\n const params = { ...this.params, ...props }\n return calculateFee(0, this.type, { gas: params.gas, params, vsn: params.vsn })\n }\n }\n})\n\nexport default TxObject\n"],"file":"tx-object.js"}
1
+ {"version":3,"sources":["../../src/tx/tx-object.js"],"names":["stampit","buildTx","calculateFee","unpackTx","TX_TYPE","encode","isHex","buildTransaction","type","params","options","Error","Object","values","includes","fee","gas","vsn","rlpEncoded","binary","tx","encodedTx","txObject","unpackTransaction","txType","Buffer","isBuffer","initTransaction","TxObject","init","signatures","assign","signed","isSigned","statics","fromString","fromRlp","methods","setProp","props","getSignatures","addSignature","signature","from","Uint8Array","calculateMinFee"],"mappings":"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","sourcesContent":["/**\n * TxObject module\n * @module @aeternity/aepp-sdk/es/tx/tx-object\n * @export TxObject\n * @example import TxObject from '@aeternity/aepp-sdk/es/tx/tx-object'\n */\nimport stampit from '@stamp/it'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { TX_TYPE } from './builder/schema'\nimport { encode } from './builder/helpers'\nimport { isHex } from '../utils/string'\n\n/**\n * Build transaction from object\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {String} type Transaction type\n * @param {Object} params Transaction params\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, params: Object, type: String }}\n */\nconst buildTransaction = (type, params, options = {}) => {\n if (typeof params !== 'object') throw new Error('\"params\" should be an object')\n if (typeof type !== 'string' || !Object.values(TX_TYPE).includes(type)) throw new Error(`Unknown transaction type ${type}`)\n const fee = calculateFee(params.fee, type, { gas: params.gas, params, vsn: params.vsn })\n const { rlpEncoded, binary, tx: encodedTx, txObject } = buildTx({ ...params, fee }, type, { vsn: params.vsn, ...options })\n return { rlpEncoded, binary, encodedTx, params: txObject, type }\n}\n\n/**\n * Unpack transaction from RLP encoded binary or base64c string\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} tx RLP encoded binary or base64c(rlpBinary) string\n * @throws {Error} Arguments validation error's\n * @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object }}\n */\nconst unpackTransaction = (tx) => {\n if (!tx) throw new Error(`Invalid transaction: ${tx}`)\n if (typeof tx === 'string') {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx)\n return { encodedTx: tx, type, params, rlpEncoded, binary }\n }\n if (Buffer.isBuffer(tx)) {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx, true)\n return { encodedTx: encode(tx, 'tx'), type, params, rlpEncoded, binary }\n }\n}\n\n/**\n * Helper which build or unpack transaction base on constructor arguments\n * Need to provide one of arguments: [tx] -> unpack flow or [params, type] -> build flow\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} [tx] Transaction rlp binary or vase64c string\n * @param {Object} params Transaction params\n * @param {String} type Transaction type\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object}}\n */\nconst initTransaction = ({ tx, params, type, options = {} } = {}) => {\n if (params && type) return buildTransaction(type, params, options)\n if (tx) return unpackTransaction(tx)\n throw new Error('Invalid TxObject arguments. Please provide one of { tx: \"tx_asdasd23...\" } or { type: \"spendTx\", params: {...} }')\n}\n\n/**\n * Transaction Validator Stamp\n * This stamp give us possibility to unpack and validate some of transaction properties,\n * to make sure we can post it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Buffer|String} [options.tx] - Rlp binary or base64c transaction\n * @param {Object} [options.params] - Transaction params\n * @param {String} [options.type] - Transaction type\n * @param {Object} [options.options] - Build options\n * @return {Object} TxObject instance\n * @example TxObject({ params: {...}, type: 'spendTx' })\n */\nexport const TxObject = stampit({\n init ({ tx, params, type, options = {} } = {}) {\n this.options = options\n this.signatures = []\n Object.assign(this, initTransaction({ tx, params, type, options }))\n\n if (this.type === TX_TYPE.signed) {\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n }\n },\n statics: {\n /**\n * Create txObject from base64c RLP encoded transaction string with 'tx_' prefix\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {String} tx Transaction string (tx_23fsdgsdfg...)\n * @return {TxObject}\n */\n fromString: (tx) => TxObject({ tx }),\n /**\n * Create txObject from transaction RLP binary\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {Buffer} tx Transaction RLP binary\n * @return {TxObject}\n */\n fromRlp: (tx) => TxObject({ tx })\n },\n methods: {\n /**\n * Rebuild transaction with new params and recalculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props Transaction properties for update\n * @param options\n * @return {TxObject}\n */\n setProp (props = {}, options = {}) {\n if (typeof props !== 'object') throw new Error('Props should be an object')\n this.isSigned = false\n this.signatures = []\n Object.assign(this, buildTransaction(this.type, { ...this.params, ...props, fee: null }, { ...this.options, ...options }))\n return this\n },\n /**\n * Get signatures\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @return {Array} Array of signatures\n */\n getSignatures () {\n if (!this.isSigned) throw new Error('Signature not found, transaction is not signed')\n return this.signatures\n },\n /**\n * Add signature\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} signature Signature to add ( Can be: Buffer | Uint8Array | HexString )\n * @return {void}\n */\n addSignature (signature) {\n signature = isHex(signature) ? Buffer.from(signature, 'hex') : signature\n if (!Buffer.isBuffer(signature) && !(signature instanceof Uint8Array)) throw new Error('Invalid signature, signature must be of type Buffer or Uint8Array')\n Object.assign(this, buildTransaction(TX_TYPE.signed, { encodedTx: this.rlpEncoded, signatures: [[...this.signatures, signature]] }))\n\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n },\n /**\n * Calculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props\n * @return {String} fee\n */\n calculateMinFee (props = {}) {\n const params = { ...this.params, ...props }\n return calculateFee(0, this.type, { gas: params.gas, params, vsn: params.vsn })\n }\n }\n})\n\nexport default TxObject\n"],"file":"tx-object.js"}