@ledgerhq/coin-ton 0.5.2 → 0.5.3
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/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +14 -0
- package/lib/__tests__/fixtures/api.fixtures.d.ts +1 -1
- package/lib/__tests__/fixtures/api.fixtures.d.ts.map +1 -1
- package/lib/__tests__/fixtures/common.fixtures.js +4 -1
- package/lib/__tests__/fixtures/common.fixtures.js.map +1 -1
- package/lib/__tests__/integration/bridge.integration.test.js +2 -3
- package/lib/__tests__/integration/bridge.integration.test.js.map +1 -1
- package/lib/__tests__/unit/api.unit.test.js +18 -27
- package/lib/__tests__/unit/api.unit.test.js.map +1 -1
- package/lib/__tests__/unit/broadcast.unit.test.js +10 -13
- package/lib/__tests__/unit/broadcast.unit.test.js.map +1 -1
- package/lib/__tests__/unit/createTransaction.unit.test.js +2 -11
- package/lib/__tests__/unit/createTransaction.unit.test.js.map +1 -1
- package/lib/__tests__/unit/deviceTransactionConfig.unit.test.js +19 -22
- package/lib/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -1
- package/lib/__tests__/unit/estimateMaxSpendable.unit.test.js +6 -15
- package/lib/__tests__/unit/estimateMaxSpendable.unit.test.js.map +1 -1
- package/lib/__tests__/unit/getTransactionStatus.unit.test.js +58 -48
- package/lib/__tests__/unit/getTransactionStatus.unit.test.js.map +1 -1
- package/lib/__tests__/unit/hw-getAddress.unit.test.js +12 -25
- package/lib/__tests__/unit/hw-getAddress.unit.test.js.map +1 -1
- package/lib/__tests__/unit/prepareTransaction.unit.test.js +46 -34
- package/lib/__tests__/unit/prepareTransaction.unit.test.js.map +1 -1
- package/lib/__tests__/unit/signOperation.unit.test.js +11 -22
- package/lib/__tests__/unit/signOperation.unit.test.js.map +1 -1
- package/lib/__tests__/unit/txn.unit.test.js +32 -39
- package/lib/__tests__/unit/txn.unit.test.js.map +1 -1
- package/lib/__tests__/unit/utils.unit.test.js +22 -8
- package/lib/__tests__/unit/utils.unit.test.js.map +1 -1
- package/lib/bridge/bridgeHelpers/api.js +65 -88
- package/lib/bridge/bridgeHelpers/api.js.map +1 -1
- package/lib/bridge/bridgeHelpers/txn.js +52 -66
- package/lib/bridge/bridgeHelpers/txn.js.map +1 -1
- package/lib/bridge/js.js +1 -10
- package/lib/bridge/js.js.map +1 -1
- package/lib/broadcast.js +3 -12
- package/lib/broadcast.js.map +1 -1
- package/lib/cli-transaction.js +6 -1
- package/lib/cli-transaction.js.map +1 -1
- package/lib/config.js +1 -1
- package/lib/config.js.map +1 -1
- package/lib/estimateMaxSpendable.js +7 -16
- package/lib/estimateMaxSpendable.js.map +1 -1
- package/lib/getTransactionStatus.js +14 -18
- package/lib/getTransactionStatus.js.map +1 -1
- package/lib/hw-getAddress.js +6 -15
- package/lib/hw-getAddress.js.map +1 -1
- package/lib/hw-signMessage.js +3 -12
- package/lib/hw-signMessage.js.map +1 -1
- package/lib/prepareTransaction.js +5 -15
- package/lib/prepareTransaction.js.map +1 -1
- package/lib/signOperation.js +23 -35
- package/lib/signOperation.js.map +1 -1
- package/lib/specs.js +12 -18
- package/lib/specs.js.map +1 -1
- package/lib/synchronisation.js +46 -55
- package/lib/synchronisation.js.map +1 -1
- package/lib/transaction.js +13 -2
- package/lib/transaction.js.map +1 -1
- package/lib/utils.js +11 -20
- package/lib/utils.js.map +1 -1
- package/lib-es/__tests__/fixtures/api.fixtures.d.ts +1 -1
- package/lib-es/__tests__/fixtures/api.fixtures.d.ts.map +1 -1
- package/lib-es/__tests__/fixtures/common.fixtures.js +4 -1
- package/lib-es/__tests__/fixtures/common.fixtures.js.map +1 -1
- package/lib-es/__tests__/integration/bridge.integration.test.js +2 -3
- package/lib-es/__tests__/integration/bridge.integration.test.js.map +1 -1
- package/lib-es/__tests__/unit/api.unit.test.js +18 -27
- package/lib-es/__tests__/unit/api.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/broadcast.unit.test.js +10 -13
- package/lib-es/__tests__/unit/broadcast.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/createTransaction.unit.test.js +2 -11
- package/lib-es/__tests__/unit/createTransaction.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.js +19 -22
- package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.js +6 -15
- package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/getTransactionStatus.unit.test.js +58 -48
- package/lib-es/__tests__/unit/getTransactionStatus.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/hw-getAddress.unit.test.js +12 -25
- package/lib-es/__tests__/unit/hw-getAddress.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/prepareTransaction.unit.test.js +46 -34
- package/lib-es/__tests__/unit/prepareTransaction.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/signOperation.unit.test.js +11 -22
- package/lib-es/__tests__/unit/signOperation.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/txn.unit.test.js +32 -39
- package/lib-es/__tests__/unit/txn.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/utils.unit.test.js +22 -8
- package/lib-es/__tests__/unit/utils.unit.test.js.map +1 -1
- package/lib-es/bridge/bridgeHelpers/api.js +65 -88
- package/lib-es/bridge/bridgeHelpers/api.js.map +1 -1
- package/lib-es/bridge/bridgeHelpers/txn.js +52 -66
- package/lib-es/bridge/bridgeHelpers/txn.js.map +1 -1
- package/lib-es/bridge/js.js +1 -10
- package/lib-es/bridge/js.js.map +1 -1
- package/lib-es/broadcast.js +3 -12
- package/lib-es/broadcast.js.map +1 -1
- package/lib-es/cli-transaction.js +6 -1
- package/lib-es/cli-transaction.js.map +1 -1
- package/lib-es/config.js +1 -1
- package/lib-es/config.js.map +1 -1
- package/lib-es/estimateMaxSpendable.js +7 -16
- package/lib-es/estimateMaxSpendable.js.map +1 -1
- package/lib-es/getTransactionStatus.js +14 -18
- package/lib-es/getTransactionStatus.js.map +1 -1
- package/lib-es/hw-getAddress.js +6 -15
- package/lib-es/hw-getAddress.js.map +1 -1
- package/lib-es/hw-signMessage.js +3 -12
- package/lib-es/hw-signMessage.js.map +1 -1
- package/lib-es/prepareTransaction.js +5 -15
- package/lib-es/prepareTransaction.js.map +1 -1
- package/lib-es/signOperation.js +23 -35
- package/lib-es/signOperation.js.map +1 -1
- package/lib-es/specs.js +12 -18
- package/lib-es/specs.js.map +1 -1
- package/lib-es/synchronisation.js +46 -55
- package/lib-es/synchronisation.js.map +1 -1
- package/lib-es/transaction.js +13 -2
- package/lib-es/transaction.js.map +1 -1
- package/lib-es/utils.js +11 -20
- package/lib-es/utils.js.map +1 -1
- package/package.json +4 -4
- package/tsconfig.json +0 -1
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -59,16 +50,15 @@ const validateSender = (account) => {
|
|
|
59
50
|
return [errors];
|
|
60
51
|
};
|
|
61
52
|
const validateAmount = (account, transaction, totalSpent) => {
|
|
62
|
-
var _a;
|
|
63
53
|
const errors = {};
|
|
64
54
|
const warnings = {};
|
|
65
|
-
const subAccount = (0, index_1.findSubAccountById)(account,
|
|
55
|
+
const subAccount = (0, index_1.findSubAccountById)(account, transaction.subAccountId ?? "");
|
|
66
56
|
const tokenTransfer = Boolean(subAccount && (0, index_1.isTokenAccount)(subAccount));
|
|
67
57
|
// if no amount or 0
|
|
68
58
|
if (!transaction.amount || transaction.amount.isZero()) {
|
|
69
59
|
errors.amount = new errors_1.AmountRequired(); // "Amount required"
|
|
70
60
|
}
|
|
71
|
-
else if (totalSpent.isGreaterThan(tokenTransfer && subAccount ? subAccount
|
|
61
|
+
else if (totalSpent.isGreaterThan(tokenTransfer && subAccount ? subAccount?.spendableBalance : account.balance)) {
|
|
72
62
|
// if not enough to make the transaction
|
|
73
63
|
errors.amount = new errors_1.NotEnoughBalance(); // "Sorry, insufficient funds"
|
|
74
64
|
}
|
|
@@ -97,9 +87,8 @@ const validateComment = (transaction) => {
|
|
|
97
87
|
}
|
|
98
88
|
return [errors];
|
|
99
89
|
};
|
|
100
|
-
const getTransactionStatus = (account, transaction) =>
|
|
101
|
-
|
|
102
|
-
const subAccount = (0, index_1.findSubAccountById)(account, (_a = transaction.subAccountId) !== null && _a !== void 0 ? _a : "");
|
|
90
|
+
const getTransactionStatus = async (account, transaction) => {
|
|
91
|
+
const subAccount = (0, index_1.findSubAccountById)(account, transaction.subAccountId ?? "");
|
|
103
92
|
const tokenTransfer = Boolean(subAccount && (0, index_1.isTokenAccount)(subAccount));
|
|
104
93
|
const totalSpent = tokenTransfer ? transaction.amount : transaction.amount.plus(transaction.fees);
|
|
105
94
|
// Recipient related errors and warnings
|
|
@@ -110,8 +99,15 @@ const getTransactionStatus = (account, transaction) => __awaiter(void 0, void 0,
|
|
|
110
99
|
const [amountErr, amountWarn] = validateAmount(account, transaction, totalSpent);
|
|
111
100
|
// Transaction related errors and warnings
|
|
112
101
|
const [transactionErr] = validateComment(transaction);
|
|
113
|
-
const errors =
|
|
114
|
-
|
|
102
|
+
const errors = {
|
|
103
|
+
...recipientErr,
|
|
104
|
+
...senderErr,
|
|
105
|
+
...amountErr,
|
|
106
|
+
...transactionErr,
|
|
107
|
+
};
|
|
108
|
+
const warnings = {
|
|
109
|
+
...amountWarn,
|
|
110
|
+
};
|
|
115
111
|
return {
|
|
116
112
|
amount: transaction.amount,
|
|
117
113
|
errors,
|
|
@@ -119,7 +115,7 @@ const getTransactionStatus = (account, transaction) => __awaiter(void 0, void 0,
|
|
|
119
115
|
estimatedFees: transaction.fees,
|
|
120
116
|
totalSpent,
|
|
121
117
|
};
|
|
122
|
-
}
|
|
118
|
+
};
|
|
123
119
|
exports.getTransactionStatus = getTransactionStatus;
|
|
124
120
|
exports.default = exports.getTransactionStatus;
|
|
125
121
|
//# sourceMappingURL=getTransactionStatus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../src/getTransactionStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../src/getTransactionStatus.ts"],"names":[],"mappings":"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"}
|
package/lib/hw-getAddress.js
CHANGED
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
const utils_1 = require("./utils");
|
|
13
4
|
const resolver = (signerContext) => {
|
|
14
|
-
return
|
|
5
|
+
return async (deviceId, { path, verify }) => {
|
|
15
6
|
const ledgerPath = (0, utils_1.getLedgerTonPath)(path);
|
|
16
|
-
const sig =
|
|
7
|
+
const sig = await signerContext(deviceId, async (signer) => {
|
|
17
8
|
return verify
|
|
18
|
-
?
|
|
19
|
-
:
|
|
20
|
-
})
|
|
9
|
+
? await signer.validateAddress(ledgerPath, { bounceable: false })
|
|
10
|
+
: await signer.getAddress(ledgerPath, { bounceable: false });
|
|
11
|
+
});
|
|
21
12
|
if (!sig.address || !sig.publicKey.length)
|
|
22
13
|
throw Error(`[ton] Response is empty ${sig.address} ${sig.publicKey}`);
|
|
23
14
|
return {
|
|
@@ -25,7 +16,7 @@ const resolver = (signerContext) => {
|
|
|
25
16
|
publicKey: sig.publicKey.toString("hex"),
|
|
26
17
|
path,
|
|
27
18
|
};
|
|
28
|
-
}
|
|
19
|
+
};
|
|
29
20
|
};
|
|
30
21
|
exports.default = resolver;
|
|
31
22
|
//# sourceMappingURL=hw-getAddress.js.map
|
package/lib/hw-getAddress.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hw-getAddress.js","sourceRoot":"","sources":["../src/hw-getAddress.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hw-getAddress.js","sourceRoot":"","sources":["../src/hw-getAddress.ts"],"names":[],"mappings":";;AAIA,mCAA2C;AAE3C,MAAM,QAAQ,GAAG,CAAC,aAAuC,EAAgB,EAAE;IACzE,OAAO,KAAK,EAAE,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAqB,EAAE,EAAE;QACrE,MAAM,UAAU,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;YACvD,OAAO,MAAM;gBACX,CAAC,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBACjE,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM;YACvC,MAAM,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxC,IAAI;SACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
package/lib/hw-signMessage.js
CHANGED
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.signMessage = void 0;
|
|
13
4
|
const utils_1 = require("./utils");
|
|
14
|
-
const signMessage = (signerContext) =>
|
|
5
|
+
const signMessage = (signerContext) => async (deviceId, account, { message }) => {
|
|
15
6
|
if (typeof message !== "string")
|
|
16
7
|
throw new Error("Invalid message value");
|
|
17
8
|
const parsedMessage = JSON.parse(message);
|
|
18
9
|
const ledgerPath = (0, utils_1.getLedgerTonPath)(account.freshAddressPath);
|
|
19
|
-
const sig =
|
|
10
|
+
const sig = await signerContext(deviceId, signer => signer.signTransaction(ledgerPath, parsedMessage));
|
|
20
11
|
if (!sig) {
|
|
21
12
|
throw new Error("No signature");
|
|
22
13
|
}
|
|
@@ -28,6 +19,6 @@ const signMessage = (signerContext) => (deviceId_1, account_1, _a) => __awaiter(
|
|
|
28
19
|
},
|
|
29
20
|
signature: sig.toString(),
|
|
30
21
|
};
|
|
31
|
-
}
|
|
22
|
+
};
|
|
32
23
|
exports.signMessage = signMessage;
|
|
33
24
|
//# sourceMappingURL=hw-signMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hw-signMessage.js","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hw-signMessage.js","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":";;;AAIA,mCAA2C;AAEpC,MAAM,WAAW,GACtB,CAAC,aAAuC,EAAE,EAAE,CAC5C,KAAK,EAAE,QAAgB,EAAE,OAAgB,EAAE,EAAE,OAAO,EAAc,EAAE,EAAE;IACpE,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE1E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CACjD,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,aAA+B,CAAC,CACpE,CAAC;IAEF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,GAAG,EAAE;YACH,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,CAAC;SACL;QACD,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE;KAC1B,CAAC;AACJ,CAAC,CAAC;AAxBS,QAAA,WAAW,eAwBpB"}
|
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
const index_1 = require("@ledgerhq/coin-framework/account/index");
|
|
13
4
|
const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
|
|
14
5
|
const api_1 = require("./bridge/bridgeHelpers/api");
|
|
15
6
|
const utils_1 = require("./utils");
|
|
16
|
-
const prepareTransaction = (account, transaction) =>
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
const subAccount = (0, index_1.findSubAccountById)(account, (_a = transaction.subAccountId) !== null && _a !== void 0 ? _a : "");
|
|
7
|
+
const prepareTransaction = async (account, transaction) => {
|
|
8
|
+
const accountInfo = await (0, api_1.fetchAccountInfo)(account.freshAddress);
|
|
9
|
+
const subAccount = (0, index_1.findSubAccountById)(account, transaction.subAccountId ?? "");
|
|
20
10
|
const simpleTx = (0, utils_1.buildTonTransaction)(transaction, accountInfo.seqno, account);
|
|
21
|
-
const fees =
|
|
11
|
+
const fees = await (0, utils_1.getTonEstimatedFees)(account, accountInfo.status === "uninit", simpleTx);
|
|
22
12
|
let amount;
|
|
23
13
|
if (transaction.useAllAmount) {
|
|
24
14
|
amount = subAccount ? subAccount.spendableBalance : account.spendableBalance.minus(fees);
|
|
@@ -27,6 +17,6 @@ const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, v
|
|
|
27
17
|
amount = transaction.amount;
|
|
28
18
|
}
|
|
29
19
|
return (0, jsHelpers_1.updateTransaction)(transaction, { fees, amount });
|
|
30
|
-
}
|
|
20
|
+
};
|
|
31
21
|
exports.default = prepareTransaction;
|
|
32
22
|
//# sourceMappingURL=prepareTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":";;AAAA,kEAA4E;AAC5E,yEAA8E;AAE9E,oDAA8D;AAE9D,mCAAmE;AAEnE,MAAM,kBAAkB,GAA8D,KAAK,EACzF,OAAgB,EAChB,WAAwB,EACF,EAAE;IACxB,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAgB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,IAAA,0BAAkB,EAAC,OAAO,EAAE,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE/E,MAAM,QAAQ,GAAG,IAAA,2BAAmB,EAAC,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAG,MAAM,IAAA,2BAAmB,EAAC,OAAO,EAAE,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE3F,IAAI,MAAM,CAAC;IACX,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QAC7B,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,OAAO,IAAA,6BAAiB,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
|
package/lib/signOperation.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -22,11 +13,10 @@ const api_1 = require("./bridge/bridgeHelpers/api");
|
|
|
22
13
|
const constants_1 = require("./constants");
|
|
23
14
|
const utils_1 = require("./utils");
|
|
24
15
|
const packTransaction = (account, needsInit, signature) => {
|
|
25
|
-
var _a;
|
|
26
16
|
const { address } = core_1.Address.parseFriendly(account.freshAddress);
|
|
27
17
|
let init = null;
|
|
28
18
|
if (needsInit) {
|
|
29
|
-
if (
|
|
19
|
+
if (account.xpub?.length !== 64)
|
|
30
20
|
throw Error("[ton] xpub can't be found");
|
|
31
21
|
const wallet = ton_1.WalletContractV4.create({
|
|
32
22
|
workchain: 0,
|
|
@@ -42,29 +32,27 @@ const packTransaction = (account, needsInit, signature) => {
|
|
|
42
32
|
*/
|
|
43
33
|
const buildSignOperation = (signerContext) => ({ account, transaction, deviceId, }) => new rxjs_1.Observable(o => {
|
|
44
34
|
let cancelled = false;
|
|
45
|
-
function main() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
},
|
|
67
|
-
});
|
|
35
|
+
async function main() {
|
|
36
|
+
const address = account.freshAddress;
|
|
37
|
+
const accountInfo = await (0, api_1.fetchAccountInfo)(address);
|
|
38
|
+
const tonTx = (0, utils_1.buildTonTransaction)(transaction, accountInfo.seqno, account);
|
|
39
|
+
const ledgerPath = (0, utils_1.getLedgerTonPath)(account.freshAddressPath);
|
|
40
|
+
o.next({ type: "device-signature-requested" });
|
|
41
|
+
const sig = await signerContext(deviceId, signer => signer.signTransaction(ledgerPath, tonTx));
|
|
42
|
+
if (cancelled)
|
|
43
|
+
return;
|
|
44
|
+
o.next({ type: "device-signature-granted" });
|
|
45
|
+
if (!sig) {
|
|
46
|
+
throw new Error("No signature");
|
|
47
|
+
}
|
|
48
|
+
const signature = packTransaction(account, accountInfo.status === "uninit", sig);
|
|
49
|
+
const operation = (0, exports.buildOptimisticOperation)(account, transaction);
|
|
50
|
+
o.next({
|
|
51
|
+
type: "signed",
|
|
52
|
+
signedOperation: {
|
|
53
|
+
operation,
|
|
54
|
+
signature,
|
|
55
|
+
},
|
|
68
56
|
});
|
|
69
57
|
}
|
|
70
58
|
main().then(() => o.complete(), e => o.error(e));
|
|
@@ -76,7 +64,7 @@ exports.buildSignOperation = buildSignOperation;
|
|
|
76
64
|
const buildOptimisticOperation = (account, transaction) => {
|
|
77
65
|
const { recipient, amount, fees, comment, useAllAmount, subAccountId } = transaction;
|
|
78
66
|
const { id: accountId } = account;
|
|
79
|
-
const subAccount = (0, index_1.findSubAccountById)(account, subAccountId
|
|
67
|
+
const subAccount = (0, index_1.findSubAccountById)(account, subAccountId ?? "");
|
|
80
68
|
const tokenTransfer = Boolean(subAccount && (0, index_1.isTokenAccount)(subAccount));
|
|
81
69
|
const value = tokenTransfer
|
|
82
70
|
? (0, bignumber_js_1.default)((0, core_1.toNano)(constants_1.TOKEN_TRANSFER_MAX_FEE).toString())
|
package/lib/signOperation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"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"}
|
package/lib/specs.js
CHANGED
|
@@ -14,21 +14,17 @@ const speculos_deviceActions_1 = require("./speculos-deviceActions");
|
|
|
14
14
|
const utils_1 = require("./utils");
|
|
15
15
|
const MIN_SAFE = new bignumber_js_1.default(1.5e7); // approx two txs' fees (0.015 TON)
|
|
16
16
|
const testDestination = ({ destination, destinationBeforeTransaction, sendingOperation, }) => {
|
|
17
|
-
var _a;
|
|
18
17
|
const amount = sendingOperation.value;
|
|
19
18
|
const inOp = destination.operations.find(op => op.hash === sendingOperation.hash && op.type === "IN");
|
|
20
|
-
const inFees =
|
|
19
|
+
const inFees = inOp?.fee ?? (0, bignumber_js_1.default)(0);
|
|
21
20
|
(0, specs_1.botTest)("account balance increased with transaction amount", () => (0, expect_1.default)(destination.balance.toString()).toBe(destinationBeforeTransaction.balance.plus(amount).minus(inFees).toString()));
|
|
22
|
-
(0, specs_1.botTest)("operation amount is consistent with sendingOperation", () => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
amount: amount.toString(),
|
|
30
|
-
});
|
|
31
|
-
});
|
|
21
|
+
(0, specs_1.botTest)("operation amount is consistent with sendingOperation", () => (0, expect_1.default)({
|
|
22
|
+
type: inOp?.type,
|
|
23
|
+
amount: inOp?.value?.toString(),
|
|
24
|
+
}).toMatchObject({
|
|
25
|
+
type: "IN",
|
|
26
|
+
amount: amount.toString(),
|
|
27
|
+
}));
|
|
32
28
|
};
|
|
33
29
|
exports.testDestination = testDestination;
|
|
34
30
|
const tonSpecs = {
|
|
@@ -105,9 +101,8 @@ const tonSpecs = {
|
|
|
105
101
|
maxRun: 1,
|
|
106
102
|
deviceAction: (0, speculos_deviceActions_1.generateDeviceActionFlow)(utils_1.BotScenario.TOKEN_TRANSFER),
|
|
107
103
|
transaction: ({ account, bridge, maxSpendable, siblings }) => {
|
|
108
|
-
var _a;
|
|
109
104
|
(0, invariant_1.default)(maxSpendable.gt(0), "Spendable balance is too low");
|
|
110
|
-
const subAccount =
|
|
105
|
+
const subAccount = account.subAccounts?.find(a => a.type === "TokenAccount" && a.spendableBalance.gt(0));
|
|
111
106
|
const recipient = siblings[0].freshAddress;
|
|
112
107
|
(0, invariant_1.default)(subAccount && subAccount.type === "TokenAccount", "no subAccount with jUSDT");
|
|
113
108
|
const amount = subAccount.balance.div(1.9 + 0.2 * Math.random()).integerValue();
|
|
@@ -130,11 +125,10 @@ const tonSpecs = {
|
|
|
130
125
|
};
|
|
131
126
|
},
|
|
132
127
|
test: ({ account, accountBeforeTransaction, operation, transaction, status }) => {
|
|
133
|
-
var _a, _b;
|
|
134
128
|
const subAccountId = transaction.subAccountId;
|
|
135
|
-
const subAccount =
|
|
136
|
-
const subAccountBeforeTransaction =
|
|
137
|
-
(0, specs_1.botTest)("subAccount balance moved with the tx status amount", () => (0, expect_1.default)(subAccount
|
|
129
|
+
const subAccount = account.subAccounts?.find(sa => sa.id === subAccountId);
|
|
130
|
+
const subAccountBeforeTransaction = accountBeforeTransaction.subAccounts?.find(sa => sa.id === subAccountId);
|
|
131
|
+
(0, specs_1.botTest)("subAccount balance moved with the tx status amount", () => (0, expect_1.default)(subAccount?.balance.toString()).toBe(subAccountBeforeTransaction?.balance.minus(status.amount).toString()));
|
|
138
132
|
(0, specs_1.botTest)("operation comment", () => (0, expect_1.default)(operation.extra).toMatchObject({
|
|
139
133
|
comment: transaction.comment,
|
|
140
134
|
}));
|
package/lib/specs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../src/specs.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA2E;AAE3E,yDAA+D;AAC/D,+CAAkD;AAElD,gEAAqC;AACrC,oDAA4B;AAC5B,0DAAkC;AAClC,qEAAoE;AAEpE,mCAAsC;AAEtC,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,mCAAmC;AAEnE,MAAM,eAAe,GAAG,CAAI,EACjC,WAAW,EACX,4BAA4B,EAC5B,gBAAgB,GACmB,EAAQ,EAAE
|
|
1
|
+
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../src/specs.ts"],"names":[],"mappings":"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"}
|
package/lib/synchronisation.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -22,11 +13,10 @@ const flatMap_1 = __importDefault(require("lodash/flatMap"));
|
|
|
22
13
|
const api_1 = require("./bridge/bridgeHelpers/api");
|
|
23
14
|
const txn_1 = require("./bridge/bridgeHelpers/txn");
|
|
24
15
|
const logic_1 = require("./logic");
|
|
25
|
-
const getAccountShape =
|
|
26
|
-
var _b;
|
|
16
|
+
const getAccountShape = async (info, { blacklistedTokenIds }) => {
|
|
27
17
|
const { address, rest, currency, derivationMode, initialAccount } = info;
|
|
28
|
-
const publicKey = reconciliatePubkey(rest
|
|
29
|
-
const blockHeight =
|
|
18
|
+
const publicKey = reconciliatePubkey(rest?.publicKey, initialAccount);
|
|
19
|
+
const blockHeight = await (0, api_1.fetchLastBlockNumber)();
|
|
30
20
|
const accountId = (0, index_1.encodeAccountId)({
|
|
31
21
|
type: "js",
|
|
32
22
|
version: "2",
|
|
@@ -35,32 +25,32 @@ const getAccountShape = (info_1, _a) => __awaiter(void 0, [info_1, _a], void 0,
|
|
|
35
25
|
derivationMode,
|
|
36
26
|
});
|
|
37
27
|
(0, logs_1.log)("debug", `Generation account shape for ${address}`);
|
|
38
|
-
const syncHash = (0, logic_1.getSyncHash)(currency, blacklistedTokenIds
|
|
39
|
-
const shouldSyncFromScratch = syncHash !==
|
|
28
|
+
const syncHash = (0, logic_1.getSyncHash)(currency, blacklistedTokenIds ?? []);
|
|
29
|
+
const shouldSyncFromScratch = syncHash !== initialAccount?.syncHash;
|
|
40
30
|
const newTxs = { transactions: [], address_book: {} };
|
|
41
31
|
const newJettonTxs = [];
|
|
42
|
-
const oldOps = (
|
|
43
|
-
const { last_transaction_lt, balance } =
|
|
32
|
+
const oldOps = (initialAccount?.operations ?? []);
|
|
33
|
+
const { last_transaction_lt, balance } = await (0, api_1.fetchAccountInfo)(address);
|
|
44
34
|
// if last_transaction_lt is empty, then there are no transactions in account (as well in token accounts)
|
|
45
35
|
if (last_transaction_lt != null) {
|
|
46
36
|
if (oldOps.length === 0 || shouldSyncFromScratch) {
|
|
47
|
-
const [tmpTxs, tmpJettonTxs] =
|
|
37
|
+
const [tmpTxs, tmpJettonTxs] = await Promise.all([
|
|
48
38
|
(0, txn_1.getTransactions)(address),
|
|
49
39
|
(0, txn_1.getJettonTransfers)(address),
|
|
50
40
|
]);
|
|
51
41
|
newTxs.transactions.push(...tmpTxs.transactions);
|
|
52
|
-
newTxs.address_book =
|
|
42
|
+
newTxs.address_book = { ...newTxs.address_book, ...tmpTxs.address_book };
|
|
53
43
|
newJettonTxs.push(...tmpJettonTxs);
|
|
54
44
|
}
|
|
55
45
|
else {
|
|
56
46
|
// if they are the same, we have no new ops (including tokens)
|
|
57
47
|
if (oldOps[0].extra.lt !== last_transaction_lt) {
|
|
58
|
-
const [tmpTxs, tmpJettonTxs] =
|
|
48
|
+
const [tmpTxs, tmpJettonTxs] = await Promise.all([
|
|
59
49
|
(0, txn_1.getTransactions)(address, oldOps[0].extra.lt),
|
|
60
50
|
(0, txn_1.getJettonTransfers)(address, oldOps[0].extra.lt),
|
|
61
51
|
]);
|
|
62
52
|
newTxs.transactions.push(...tmpTxs.transactions);
|
|
63
|
-
newTxs.address_book =
|
|
53
|
+
newTxs.address_book = { ...newTxs.address_book, ...tmpTxs.address_book };
|
|
64
54
|
newJettonTxs.push(...tmpJettonTxs);
|
|
65
55
|
}
|
|
66
56
|
}
|
|
@@ -68,7 +58,7 @@ const getAccountShape = (info_1, _a) => __awaiter(void 0, [info_1, _a], void 0,
|
|
|
68
58
|
const newOps = (0, flatMap_1.default)(newTxs.transactions, (0, txn_1.mapTxToOps)(accountId, address, newTxs.address_book));
|
|
69
59
|
const newJettonOps = (0, flatMap_1.default)(newJettonTxs, (0, txn_1.mapJettonTxToOps)(accountId, address, newTxs.address_book));
|
|
70
60
|
const operations = shouldSyncFromScratch ? newOps : (0, jsHelpers_1.mergeOps)(oldOps, newOps);
|
|
71
|
-
const subAccounts =
|
|
61
|
+
const subAccounts = await getSubAccounts(info, accountId, newJettonOps, blacklistedTokenIds, shouldSyncFromScratch);
|
|
72
62
|
const toReturn = {
|
|
73
63
|
id: accountId,
|
|
74
64
|
balance: new bignumber_js_1.default(balance),
|
|
@@ -81,19 +71,18 @@ const getAccountShape = (info_1, _a) => __awaiter(void 0, [info_1, _a], void 0,
|
|
|
81
71
|
lastSyncDate: new Date(),
|
|
82
72
|
};
|
|
83
73
|
return toReturn;
|
|
84
|
-
}
|
|
74
|
+
};
|
|
85
75
|
exports.getAccountShape = getAccountShape;
|
|
86
|
-
const getSubAccountShape = (info, parentId, token, ops, shouldSyncFromScratch) =>
|
|
87
|
-
var _c, _d, _e;
|
|
76
|
+
const getSubAccountShape = async (info, parentId, token, ops, shouldSyncFromScratch) => {
|
|
88
77
|
const tokenAccountId = (0, index_1.encodeTokenAccountId)(parentId, token);
|
|
89
|
-
const walletsInfo =
|
|
78
|
+
const walletsInfo = await (0, api_1.fetchJettonWallets)({
|
|
90
79
|
address: info.address,
|
|
91
80
|
jettonMaster: token.contractAddress,
|
|
92
81
|
});
|
|
93
82
|
if (walletsInfo.length !== 1)
|
|
94
83
|
throw new Error("[ton] unexpected api response");
|
|
95
84
|
const { balance, address: jettonWalletAddress } = walletsInfo[0];
|
|
96
|
-
const oldOps =
|
|
85
|
+
const oldOps = info.initialAccount?.subAccounts?.find(a => a.id === tokenAccountId)?.operations;
|
|
97
86
|
const operations = !oldOps || shouldSyncFromScratch ? ops : (0, jsHelpers_1.mergeOps)(oldOps, ops);
|
|
98
87
|
const maybeExistingSubAccount = info.initialAccount &&
|
|
99
88
|
info.initialAccount.subAccounts &&
|
|
@@ -102,7 +91,7 @@ const getSubAccountShape = (info, parentId, token, ops, shouldSyncFromScratch) =
|
|
|
102
91
|
type: "TokenAccount",
|
|
103
92
|
id: tokenAccountId,
|
|
104
93
|
parentId,
|
|
105
|
-
token:
|
|
94
|
+
token: { ...token, contractAddress: jettonWalletAddress }, // the contract address is replaced for the jetton wallet address, it will be use for the token transfer
|
|
106
95
|
balance: new bignumber_js_1.default(balance),
|
|
107
96
|
spendableBalance: new bignumber_js_1.default(balance),
|
|
108
97
|
operations,
|
|
@@ -112,29 +101,25 @@ const getSubAccountShape = (info, parentId, token, ops, shouldSyncFromScratch) =
|
|
|
112
101
|
balanceHistoryCache: index_1.emptyHistoryCache, // calculated in the jsHelpers
|
|
113
102
|
swapHistory: [],
|
|
114
103
|
};
|
|
115
|
-
}
|
|
116
|
-
function getSubAccounts(
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const { token } = (0, index_1.decodeTokenAccountId)(tokenAccountId);
|
|
122
|
-
if (!token || blacklistedTokenIds.includes(token.id))
|
|
123
|
-
return acc;
|
|
124
|
-
if (!acc.has(token))
|
|
125
|
-
acc.set(token, []);
|
|
126
|
-
(_a = acc.get(token)) === null || _a === void 0 ? void 0 : _a.push(op);
|
|
104
|
+
};
|
|
105
|
+
async function getSubAccounts(info, accountId, newOps, blacklistedTokenIds = [], shouldSyncFromScratch) {
|
|
106
|
+
const opsPerToken = newOps.reduce((acc, op) => {
|
|
107
|
+
const { accountId: tokenAccountId } = (0, operation_1.decodeOperationId)(op.id);
|
|
108
|
+
const { token } = (0, index_1.decodeTokenAccountId)(tokenAccountId);
|
|
109
|
+
if (!token || blacklistedTokenIds.includes(token.id))
|
|
127
110
|
return acc;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
111
|
+
if (!acc.has(token))
|
|
112
|
+
acc.set(token, []);
|
|
113
|
+
acc.get(token)?.push(op);
|
|
114
|
+
return acc;
|
|
115
|
+
}, new Map());
|
|
116
|
+
const subAccountsPromises = [];
|
|
117
|
+
for (const [token, ops] of opsPerToken.entries()) {
|
|
118
|
+
subAccountsPromises.push(getSubAccountShape(info, accountId, token, ops, shouldSyncFromScratch));
|
|
119
|
+
}
|
|
120
|
+
return Promise.all(subAccountsPromises);
|
|
135
121
|
}
|
|
136
122
|
const postSync = (initial, synced) => {
|
|
137
|
-
var _a;
|
|
138
123
|
// Set of ids from the already existing subAccount from previous sync
|
|
139
124
|
const initialSubAccountsIds = new Set();
|
|
140
125
|
for (const subAccount of initial.subAccounts || []) {
|
|
@@ -148,23 +133,29 @@ const postSync = (initial, synced) => {
|
|
|
148
133
|
for (const op of pendingOperations) {
|
|
149
134
|
coinPendingOperationsHashes.add(op.hash);
|
|
150
135
|
}
|
|
151
|
-
return
|
|
136
|
+
return {
|
|
137
|
+
...synced,
|
|
138
|
+
pendingOperations,
|
|
139
|
+
subAccounts: synced.subAccounts?.map(subAccount => {
|
|
152
140
|
// If the subAccount is new, just return the freshly synced subAccount
|
|
153
141
|
if (!initialSubAccountsIds.has(subAccount.id))
|
|
154
142
|
return subAccount;
|
|
155
|
-
return
|
|
143
|
+
return {
|
|
144
|
+
...subAccount,
|
|
145
|
+
pendingOperations: subAccount.pendingOperations.filter(tokenPendingOperation =>
|
|
156
146
|
// if the pending operation got removed from the main account, remove it as well
|
|
157
147
|
coinPendingOperationsHashes.has(tokenPendingOperation.hash) &&
|
|
158
148
|
// if the transaction has been confirmed, remove it
|
|
159
|
-
!subAccount.operations.some(op => op.id === tokenPendingOperation.id))
|
|
160
|
-
|
|
149
|
+
!subAccount.operations.some(op => op.id === tokenPendingOperation.id)),
|
|
150
|
+
};
|
|
151
|
+
}),
|
|
152
|
+
};
|
|
161
153
|
};
|
|
162
154
|
function reconciliatePubkey(publicKey, initialAccount) {
|
|
163
|
-
|
|
164
|
-
if ((publicKey === null || publicKey === void 0 ? void 0 : publicKey.length) === 64)
|
|
155
|
+
if (publicKey?.length === 64)
|
|
165
156
|
return publicKey;
|
|
166
157
|
if (initialAccount) {
|
|
167
|
-
if (
|
|
158
|
+
if (initialAccount.xpub?.length === 64)
|
|
168
159
|
return initialAccount.xpub;
|
|
169
160
|
const { xpubOrAddress } = (0, index_1.decodeAccountId)(initialAccount.id);
|
|
170
161
|
if (xpubOrAddress.length === 64)
|