@aeternity/aepp-sdk 9.0.1 → 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.
- 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 +30 -122
- 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 +73 -164
- package/es/account/multiple.js.map +1 -1
- package/es/ae/aens.js +164 -599
- package/es/ae/aens.js.map +1 -1
- package/es/ae/contract.js +82 -759
- package/es/ae/contract.js.map +1 -1
- package/es/ae/index.js +78 -315
- package/es/ae/index.js.map +1 -1
- package/es/ae/oracle.js +130 -498
- package/es/ae/oracle.js.map +1 -1
- package/es/chain/index.js +1 -1
- package/es/chain/index.js.map +1 -1
- package/es/chain/node.js +288 -1008
- 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 +203 -451
- 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 +319 -480
- 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 +129 -203
- package/es/contract/compiler.js.map +1 -1
- package/es/contract/ga/helpers.js +16 -114
- package/es/contract/ga/helpers.js.map +1 -1
- package/es/contract/ga/index.js +101 -242
- package/es/contract/ga/index.js.map +1 -1
- package/es/contract/index.js +1 -1
- package/es/contract/index.js.map +1 -1
- package/es/index.js +1 -2
- package/es/index.js.map +1 -1
- package/es/node-pool/index.js +54 -73
- package/es/node-pool/index.js.map +1 -1
- package/es/node.js +56 -157
- package/es/node.js.map +1 -1
- package/es/other.d.ts +1 -1
- package/es/tx/builder/helpers.js +38 -75
- package/es/tx/builder/helpers.js.map +1 -1
- package/es/tx/builder/index.js +196 -294
- package/es/tx/builder/index.js.map +1 -1
- package/es/tx/builder/schema.js +577 -459
- package/es/tx/builder/schema.js.map +1 -1
- package/es/tx/index.js +1 -1
- package/es/tx/index.js.map +1 -1
- package/es/tx/tx-object.js +105 -132
- package/es/tx/tx-object.js.map +1 -1
- package/es/tx/tx.js +808 -1628
- package/es/tx/tx.js.map +1 -1
- package/es/tx/validator.js +132 -268
- package/es/tx/validator.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +17 -21
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +38 -74
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +14 -15
- 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 +179 -510
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +70 -89
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +353 -600
- 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 +47 -62
- 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 +85 -224
- package/es/utils/swagger.js.map +1 -1
- package/package.json +44 -40
- package/src/account/multiple.js +18 -19
- package/src/ae/aens.js +25 -21
- package/src/ae/contract.js +32 -163
- package/src/ae/index.js +3 -3
- package/src/ae/oracle.js +18 -14
- package/src/chain/node.js +2 -4
- package/src/channel/handlers.js +0 -1
- package/src/channel/index.js +4 -5
- package/src/contract/aci/index.js +221 -102
- package/src/contract/aci/transformation.js +30 -422
- package/src/contract/compiler.js +45 -4
- package/src/contract/ga/helpers.js +1 -8
- package/src/contract/ga/index.js +13 -11
- package/src/index.js +0 -2
- package/src/node-pool/index.js +21 -12
- package/src/node.js +22 -26
- package/src/tx/builder/index.js +2 -1
- package/src/tx/builder/schema.js +2 -1
- package/src/tx/tx.js +147 -143
- package/src/tx/validator.js +9 -7
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +1 -3
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +3 -3
- package/src/utils/aepp-wallet-communication/schema.js +1 -3
- package/src/utils/bignumber.ts +2 -1
- package/src/utils/other.ts +1 -1
- package/src/utils/semver-satisfies.ts +1 -1
- package/src/utils/swagger.js +14 -7
- package/src/contract/aci/helpers.js +0 -140
package/es/tx/tx-object.js
CHANGED
|
@@ -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
|
|
@@ -40,34 +19,32 @@ import { isHex } from '../utils/string';
|
|
|
40
19
|
* @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, params: Object, type: String }}
|
|
41
20
|
*/
|
|
42
21
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (typeof type !== 'string' || !_includesInstanceProperty(_context = _Object$values(TX_TYPE)).call(_context, type)) throw new Error("Unknown transaction type ".concat(type));
|
|
49
|
-
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, {
|
|
50
27
|
gas: params.gas,
|
|
51
|
-
params
|
|
28
|
+
params,
|
|
52
29
|
vsn: params.vsn
|
|
53
30
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
+
});
|
|
65
42
|
return {
|
|
66
|
-
rlpEncoded
|
|
67
|
-
binary
|
|
68
|
-
encodedTx
|
|
43
|
+
rlpEncoded,
|
|
44
|
+
binary,
|
|
45
|
+
encodedTx,
|
|
69
46
|
params: txObject,
|
|
70
|
-
type
|
|
47
|
+
type
|
|
71
48
|
};
|
|
72
49
|
};
|
|
73
50
|
/**
|
|
@@ -79,38 +56,38 @@ var buildTransaction = function buildTransaction(type, params) {
|
|
|
79
56
|
*/
|
|
80
57
|
|
|
81
58
|
|
|
82
|
-
|
|
83
|
-
if (!tx) throw new Error(
|
|
59
|
+
const unpackTransaction = tx => {
|
|
60
|
+
if (!tx) throw new Error(`Invalid transaction: ${tx}`);
|
|
84
61
|
|
|
85
62
|
if (typeof tx === 'string') {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
63
|
+
const {
|
|
64
|
+
txType: type,
|
|
65
|
+
tx: params,
|
|
66
|
+
rlpEncoded,
|
|
67
|
+
binary
|
|
68
|
+
} = unpackTx(tx);
|
|
92
69
|
return {
|
|
93
70
|
encodedTx: tx,
|
|
94
|
-
type
|
|
95
|
-
params
|
|
96
|
-
rlpEncoded
|
|
97
|
-
binary
|
|
71
|
+
type,
|
|
72
|
+
params,
|
|
73
|
+
rlpEncoded,
|
|
74
|
+
binary
|
|
98
75
|
};
|
|
99
76
|
}
|
|
100
77
|
|
|
101
78
|
if (Buffer.isBuffer(tx)) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
79
|
+
const {
|
|
80
|
+
txType: type,
|
|
81
|
+
tx: params,
|
|
82
|
+
rlpEncoded,
|
|
83
|
+
binary
|
|
84
|
+
} = unpackTx(tx, true);
|
|
108
85
|
return {
|
|
109
86
|
encodedTx: encode(tx, 'tx'),
|
|
110
|
-
type
|
|
111
|
-
params
|
|
112
|
-
rlpEncoded
|
|
113
|
-
binary
|
|
87
|
+
type,
|
|
88
|
+
params,
|
|
89
|
+
rlpEncoded,
|
|
90
|
+
binary
|
|
114
91
|
};
|
|
115
92
|
}
|
|
116
93
|
};
|
|
@@ -127,14 +104,13 @@ var unpackTransaction = function unpackTransaction(tx) {
|
|
|
127
104
|
*/
|
|
128
105
|
|
|
129
106
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
107
|
+
const initTransaction = function () {
|
|
108
|
+
let {
|
|
109
|
+
tx,
|
|
110
|
+
params,
|
|
111
|
+
type,
|
|
112
|
+
options = {}
|
|
113
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
138
114
|
if (params && type) return buildTransaction(type, params, options);
|
|
139
115
|
if (tx) return unpackTransaction(tx);
|
|
140
116
|
throw new Error('Invalid TxObject arguments. Please provide one of { tx: "tx_asdasd23..." } or { type: "spendTx", params: {...} }');
|
|
@@ -156,37 +132,38 @@ var initTransaction = function initTransaction() {
|
|
|
156
132
|
*/
|
|
157
133
|
|
|
158
134
|
|
|
159
|
-
export
|
|
160
|
-
init
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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] : {};
|
|
168
143
|
this.options = options;
|
|
169
144
|
this.signatures = [];
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
options: options
|
|
145
|
+
Object.assign(this, initTransaction({
|
|
146
|
+
tx,
|
|
147
|
+
params,
|
|
148
|
+
type,
|
|
149
|
+
options
|
|
176
150
|
}));
|
|
177
151
|
|
|
178
152
|
if (this.type === TX_TYPE.signed) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
txType
|
|
183
|
-
|
|
153
|
+
const {
|
|
154
|
+
signatures,
|
|
155
|
+
encodedTx: {
|
|
156
|
+
txType,
|
|
157
|
+
tx
|
|
158
|
+
}
|
|
159
|
+
} = this.params;
|
|
184
160
|
this.signatures = signatures;
|
|
185
|
-
this.params =
|
|
161
|
+
this.params = tx;
|
|
186
162
|
this.type = txType;
|
|
187
163
|
this.isSigned = true;
|
|
188
164
|
}
|
|
189
165
|
},
|
|
166
|
+
|
|
190
167
|
statics: {
|
|
191
168
|
/**
|
|
192
169
|
* Create txObject from base64c RLP encoded transaction string with 'tx_' prefix
|
|
@@ -195,11 +172,9 @@ export var TxObject = stampit({
|
|
|
195
172
|
* @param {String} tx Transaction string (tx_23fsdgsdfg...)
|
|
196
173
|
* @return {TxObject}
|
|
197
174
|
*/
|
|
198
|
-
fromString:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
});
|
|
202
|
-
},
|
|
175
|
+
fromString: tx => TxObject({
|
|
176
|
+
tx
|
|
177
|
+
}),
|
|
203
178
|
|
|
204
179
|
/**
|
|
205
180
|
* Create txObject from transaction RLP binary
|
|
@@ -208,11 +183,9 @@ export var TxObject = stampit({
|
|
|
208
183
|
* @param {Buffer} tx Transaction RLP binary
|
|
209
184
|
* @return {TxObject}
|
|
210
185
|
*/
|
|
211
|
-
fromRlp:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
});
|
|
215
|
-
}
|
|
186
|
+
fromRlp: tx => TxObject({
|
|
187
|
+
tx
|
|
188
|
+
})
|
|
216
189
|
},
|
|
217
190
|
methods: {
|
|
218
191
|
/**
|
|
@@ -222,17 +195,18 @@ export var TxObject = stampit({
|
|
|
222
195
|
* @param options
|
|
223
196
|
* @return {TxObject}
|
|
224
197
|
*/
|
|
225
|
-
setProp
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
if (
|
|
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');
|
|
229
202
|
this.isSigned = false;
|
|
230
203
|
this.signatures = [];
|
|
231
|
-
|
|
232
|
-
|
|
204
|
+
Object.assign(this, buildTransaction(this.type, { ...this.params,
|
|
205
|
+
...props,
|
|
233
206
|
fee: null
|
|
234
|
-
}
|
|
235
|
-
|
|
207
|
+
}, { ...this.options,
|
|
208
|
+
...options
|
|
209
|
+
}));
|
|
236
210
|
return this;
|
|
237
211
|
},
|
|
238
212
|
|
|
@@ -241,7 +215,7 @@ export var TxObject = stampit({
|
|
|
241
215
|
* @alias module:@aeternity/aepp-sdk/es/tx/tx-object
|
|
242
216
|
* @return {Array} Array of signatures
|
|
243
217
|
*/
|
|
244
|
-
getSignatures
|
|
218
|
+
getSignatures() {
|
|
245
219
|
if (!this.isSigned) throw new Error('Signature not found, transaction is not signed');
|
|
246
220
|
return this.signatures;
|
|
247
221
|
},
|
|
@@ -252,22 +226,20 @@ export var TxObject = stampit({
|
|
|
252
226
|
* @param {Buffer|String} signature Signature to add ( Can be: Buffer | Uint8Array | HexString )
|
|
253
227
|
* @return {void}
|
|
254
228
|
*/
|
|
255
|
-
addSignature
|
|
256
|
-
var _context2;
|
|
257
|
-
|
|
229
|
+
addSignature(signature) {
|
|
258
230
|
signature = isHex(signature) ? Buffer.from(signature, 'hex') : signature;
|
|
259
231
|
if (!Buffer.isBuffer(signature) && !(signature instanceof Uint8Array)) throw new Error('Invalid signature, signature must be of type Buffer or Uint8Array');
|
|
260
|
-
|
|
261
|
-
_Object$assign(this, buildTransaction(TX_TYPE.signed, {
|
|
232
|
+
Object.assign(this, buildTransaction(TX_TYPE.signed, {
|
|
262
233
|
encodedTx: this.rlpEncoded,
|
|
263
|
-
signatures: [
|
|
234
|
+
signatures: [[...this.signatures, signature]]
|
|
264
235
|
}));
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
236
|
+
const {
|
|
237
|
+
signatures,
|
|
238
|
+
encodedTx: {
|
|
239
|
+
txType,
|
|
240
|
+
tx
|
|
241
|
+
}
|
|
242
|
+
} = this.params;
|
|
271
243
|
this.signatures = signatures;
|
|
272
244
|
this.params = tx;
|
|
273
245
|
this.type = txType;
|
|
@@ -280,17 +252,18 @@ export var TxObject = stampit({
|
|
|
280
252
|
* @param {Object} props
|
|
281
253
|
* @return {String} fee
|
|
282
254
|
*/
|
|
283
|
-
calculateMinFee
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
255
|
+
calculateMinFee() {
|
|
256
|
+
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
257
|
+
const params = { ...this.params,
|
|
258
|
+
...props
|
|
259
|
+
};
|
|
288
260
|
return calculateFee(0, this.type, {
|
|
289
261
|
gas: params.gas,
|
|
290
|
-
params
|
|
262
|
+
params,
|
|
291
263
|
vsn: params.vsn
|
|
292
264
|
});
|
|
293
265
|
}
|
|
266
|
+
|
|
294
267
|
}
|
|
295
268
|
});
|
|
296
269
|
export default TxObject;
|
package/es/tx/tx-object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tx/tx-object.js"],"names":["stampit","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 { 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"}
|
|
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"}
|