@ledgerhq/coin-xrp 7.23.3 → 7.23.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @ledgerhq/coin-xrp
2
2
 
3
+ ## 7.23.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#693](https://github.com/LedgerHQ/coin-modules/pull/693) [`87ecc66`](https://github.com/LedgerHQ/coin-modules/commit/87ecc6689b689b0309fe6ee16423e6ed0c448b40) Thanks [@YazhuEth](https://github.com/YazhuEth)! - Block XRP transactions before broadcast when the recipient account requires a destination tag (`requireDestinationTag` flag) and none is provided. `validateIntent` now returns a `XrpDestinationTagRequired` error in that case.
8
+
9
+ ## 7.23.4
10
+
11
+ ### Patch Changes
12
+
13
+ - [#682](https://github.com/LedgerHQ/coin-modules/pull/682) [`8ea8ae8`](https://github.com/LedgerHQ/coin-modules/commit/8ea8ae80445979267c5cdbbdb5575713ea5a640f) Thanks [@YazhuEth](https://github.com/YazhuEth)! - test: exercise the all-scope wallet PR full catalog state
14
+
15
+ - Updated dependencies [[`8ea8ae8`](https://github.com/LedgerHQ/coin-modules/commit/8ea8ae80445979267c5cdbbdb5575713ea5a640f)]:
16
+ - @ledgerhq/coin-module-framework@3.5.1
17
+
3
18
  ## 7.23.3
4
19
 
5
20
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntent.d.ts","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACR,MAAM,2CAA2C,CAAA;AAclD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAMrC,eAAO,MAAM,cAAc,GACzB,mBAAmB,iBAAiB,CAAC,UAAU,CAAC,EAChD,UAAU,OAAO,EAAE,EACnB,aAAa,aAAa,KACzB,OAAO,CAAC,qBAAqB,CA4E/B,CAAA"}
1
+ {"version":3,"file":"validateIntent.d.ts","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACR,MAAM,2CAA2C,CAAA;AAclD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAKrC,eAAO,MAAM,cAAc,GACzB,mBAAmB,iBAAiB,CAAC,UAAU,CAAC,EAChD,UAAU,OAAO,EAAE,EACnB,aAAa,aAAa,KACzB,OAAO,CAAC,qBAAqB,CAkF/B,CAAA"}
@@ -7,7 +7,6 @@ const index_1 = require("@ledgerhq/coin-module-framework/currencies/index");
7
7
  const errors_1 = require("@ledgerhq/errors");
8
8
  const ripple_address_codec_1 = require("ripple-address-codec");
9
9
  const network_1 = require("../network");
10
- const utils_1 = require("../utils");
11
10
  const common_1 = require("../utils/common");
12
11
  const errors_2 = require("../utils/errors");
13
12
  const validateMemo_1 = require("../utils/validateMemo");
@@ -19,6 +18,9 @@ const validateIntent = async (transactionIntent, balances, customFees) => {
19
18
  const estimatedFees = customFees?.value || 0n;
20
19
  const totalSpent = transactionIntent.amount + estimatedFees;
21
20
  const amount = transactionIntent.amount;
21
+ const recipientInfo = transactionIntent.recipient && (0, ripple_address_codec_1.isValidClassicAddress)(transactionIntent.recipient)
22
+ ? await (0, network_1.getAccountInfo)(transactionIntent.recipient)
23
+ : undefined;
22
24
  if (amount > 0 && estimatedFees * 10n > amount) {
23
25
  warnings.feeTooHigh = new errors_1.FeeTooHigh();
24
26
  }
@@ -40,8 +42,7 @@ const validateIntent = async (transactionIntent, balances, customFees) => {
40
42
  : 'Unknown unit',
41
43
  });
42
44
  }
43
- else if (transactionIntent.recipient &&
44
- (await (0, utils_1.recipientIsNew)(transactionIntent.recipient)) &&
45
+ else if (recipientInfo?.isNewAccount &&
45
46
  transactionIntent.amount < BigInt(reserveBaseXRP.toString())) {
46
47
  errors.amount = new errors_1.NotEnoughBalanceBecauseDestinationNotCreated('', {
47
48
  minimalAmount: transactionIntent.asset.unit
@@ -67,12 +68,16 @@ const validateIntent = async (transactionIntent, balances, customFees) => {
67
68
  if (!errors.amount && amount === 0n) {
68
69
  errors.amount = new errors_1.AmountRequired();
69
70
  }
70
- const destinationTag = transactionIntent.memo?.memos
71
- ? transactionIntent.memo.memos.get('destinationTag')
72
- : undefined;
73
- if (destinationTag && typeof destinationTag === 'string' && !(0, validateMemo_1.validateMemo)(destinationTag)) {
71
+ const destinationTag = transactionIntent.memo?.memos?.get('destinationTag');
72
+ if (destinationTag !== undefined && typeof destinationTag !== 'string') {
74
73
  errors.transaction = new errors_2.XrpInvalidMemoError();
75
74
  }
75
+ else if (destinationTag && !(0, validateMemo_1.validateMemo)(destinationTag)) {
76
+ errors.transaction = new errors_2.XrpInvalidMemoError();
77
+ }
78
+ else if (!errors.recipient && !destinationTag && recipientInfo?.requireDestinationTag) {
79
+ errors.transaction = new errors_2.XrpDestinationTagRequired();
80
+ }
76
81
  return {
77
82
  errors,
78
83
  warnings,
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntent.js","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateIntent.js","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAIjD,OAAO,EACL,gBAAgB,EAGhB,MAAM,EAEN,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,yBAAyB,gBAAgB,CAAA;AAGtD,eAAO,MAAM,MAAM,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,CAErE,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,UAAU,OAAO,KAChB,OAAO,CAAC,WAAW,CAwCrB,CAAA;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,kBAAkB,CAEjE,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IAIf,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,SAAS,sBAAsB,GAAG,SAAS,KAC1C,OAAO,CAAC,iBAAiB,CAW3B,CAAA;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAEzD;AAYD,eAAO,MAAM,gBAAgB,wFAI5B,CAAA;AAED,eAAO,MAAM,oBAAoB,sFAIhC,CAAA;AAUD,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAItD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAIjD,OAAO,EACL,gBAAgB,EAGhB,MAAM,EAEN,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,yBAAyB,gBAAgB,CAAA;AAGtD,eAAO,MAAM,MAAM,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,CAErE,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,UAAU,OAAO,KAChB,OAAO,CAAC,WAAW,CA0CrB,CAAA;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,kBAAkB,CAEjE,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IAIf,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,SAAS,sBAAsB,GAAG,SAAS,KAC1C,OAAO,CAAC,iBAAiB,CAW3B,CAAA;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAEzD;AAYD,eAAO,MAAM,gBAAgB,wFAI5B,CAAA;AAED,eAAO,MAAM,oBAAoB,sFAIhC,CAAA;AAUD,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAItD"}
@@ -44,6 +44,7 @@ const getAccountInfo = async (recipient, current) => {
44
44
  balance: '0',
45
45
  ownerCount: 0,
46
46
  sequence: 0,
47
+ requireDestinationTag: false,
47
48
  };
48
49
  }
49
50
  else {
@@ -52,6 +53,7 @@ const getAccountInfo = async (recipient, current) => {
52
53
  balance: result.account_data.Balance,
53
54
  ownerCount: result.account_data.OwnerCount,
54
55
  sequence: result.account_data.Sequence,
56
+ requireDestinationTag: result.account_flags?.requireDestinationTag ?? false,
55
57
  };
56
58
  }
57
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export type AccountInfo = {
13
13
  balance: string;
14
14
  ownerCount: number;
15
15
  sequence: number;
16
+ requireDestinationTag: boolean;
16
17
  };
17
18
  export type XrpMemo = {
18
19
  data?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAA;AACxE,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;AAEtD,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAElC,MAAM,MAAM,qBAAqB,GAAG;IAElC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAA;AACxE,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;AAEtD,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAElC,MAAM,MAAM,qBAAqB,GAAG;IAElC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA"}
@@ -1,4 +1,7 @@
1
1
  export declare const XrpInvalidMemoError: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
2
2
  [key: string]: unknown;
3
3
  }>;
4
+ export declare const XrpDestinationTagRequired: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
5
+ [key: string]: unknown;
6
+ }>;
4
7
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB;;EAA2C,CAAA"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB;;EAA2C,CAAA;AAE3E,eAAO,MAAM,yBAAyB;;EAAsD,CAAA"}
@@ -2,7 +2,8 @@
2
2
  // SPDX-FileCopyrightText: © 2024 LEDGER SAS
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.XrpInvalidMemoError = void 0;
5
+ exports.XrpDestinationTagRequired = exports.XrpInvalidMemoError = void 0;
6
6
  const errors_1 = require("@ledgerhq/errors");
7
7
  exports.XrpInvalidMemoError = (0, errors_1.createCustomErrorClass)('XrpInvalidMemo');
8
+ exports.XrpDestinationTagRequired = (0, errors_1.createCustomErrorClass)('XrpDestinationTagRequired');
8
9
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,sCAAsC;;;AAEtC,6CAAyD;AAE5C,QAAA,mBAAmB,GAAG,IAAA,+BAAsB,EAAC,gBAAgB,CAAC,CAAA"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,sCAAsC;;;AAEtC,6CAAyD;AAE5C,QAAA,mBAAmB,GAAG,IAAA,+BAAsB,EAAC,gBAAgB,CAAC,CAAA;AAE9D,QAAA,yBAAyB,GAAG,IAAA,+BAAsB,EAAC,2BAA2B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntent.d.ts","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACR,MAAM,2CAA2C,CAAA;AAclD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAMrC,eAAO,MAAM,cAAc,GACzB,mBAAmB,iBAAiB,CAAC,UAAU,CAAC,EAChD,UAAU,OAAO,EAAE,EACnB,aAAa,aAAa,KACzB,OAAO,CAAC,qBAAqB,CA4E/B,CAAA"}
1
+ {"version":3,"file":"validateIntent.d.ts","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACR,MAAM,2CAA2C,CAAA;AAclD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAKrC,eAAO,MAAM,cAAc,GACzB,mBAAmB,iBAAiB,CAAC,UAAU,CAAC,EAChD,UAAU,OAAO,EAAE,EACnB,aAAa,aAAa,KACzB,OAAO,CAAC,qBAAqB,CAkF/B,CAAA"}
@@ -3,10 +3,9 @@
3
3
  import { formatCurrencyUnit } from '@ledgerhq/coin-module-framework/currencies/index';
4
4
  import { AmountRequired, FeeNotLoaded, FeeTooHigh, InvalidAddress, InvalidAddressBecauseDestinationIsAlsoSource, NotEnoughBalanceBecauseDestinationNotCreated, NotEnoughSpendableBalance, RecipientRequired, } from '@ledgerhq/errors';
5
5
  import { isValidClassicAddress } from 'ripple-address-codec';
6
- import { getServerInfos } from '../network';
7
- import { recipientIsNew } from '../utils';
6
+ import { getAccountInfo, getServerInfos } from '../network';
8
7
  import { parseAPIValue } from '../utils/common';
9
- import { XrpInvalidMemoError } from '../utils/errors';
8
+ import { XrpDestinationTagRequired, XrpInvalidMemoError } from '../utils/errors';
10
9
  import { validateMemo } from '../utils/validateMemo';
11
10
  export const validateIntent = async (transactionIntent, balances, customFees) => {
12
11
  const errors = {};
@@ -16,6 +15,9 @@ export const validateIntent = async (transactionIntent, balances, customFees) =>
16
15
  const estimatedFees = customFees?.value || 0n;
17
16
  const totalSpent = transactionIntent.amount + estimatedFees;
18
17
  const amount = transactionIntent.amount;
18
+ const recipientInfo = transactionIntent.recipient && isValidClassicAddress(transactionIntent.recipient)
19
+ ? await getAccountInfo(transactionIntent.recipient)
20
+ : undefined;
19
21
  if (amount > 0 && estimatedFees * 10n > amount) {
20
22
  warnings.feeTooHigh = new FeeTooHigh();
21
23
  }
@@ -37,8 +39,7 @@ export const validateIntent = async (transactionIntent, balances, customFees) =>
37
39
  : 'Unknown unit',
38
40
  });
39
41
  }
40
- else if (transactionIntent.recipient &&
41
- (await recipientIsNew(transactionIntent.recipient)) &&
42
+ else if (recipientInfo?.isNewAccount &&
42
43
  transactionIntent.amount < BigInt(reserveBaseXRP.toString())) {
43
44
  errors.amount = new NotEnoughBalanceBecauseDestinationNotCreated('', {
44
45
  minimalAmount: transactionIntent.asset.unit
@@ -64,12 +65,16 @@ export const validateIntent = async (transactionIntent, balances, customFees) =>
64
65
  if (!errors.amount && amount === 0n) {
65
66
  errors.amount = new AmountRequired();
66
67
  }
67
- const destinationTag = transactionIntent.memo?.memos
68
- ? transactionIntent.memo.memos.get('destinationTag')
69
- : undefined;
70
- if (destinationTag && typeof destinationTag === 'string' && !validateMemo(destinationTag)) {
68
+ const destinationTag = transactionIntent.memo?.memos?.get('destinationTag');
69
+ if (destinationTag !== undefined && typeof destinationTag !== 'string') {
71
70
  errors.transaction = new XrpInvalidMemoError();
72
71
  }
72
+ else if (destinationTag && !validateMemo(destinationTag)) {
73
+ errors.transaction = new XrpInvalidMemoError();
74
+ }
75
+ else if (!errors.recipient && !destinationTag && recipientInfo?.requireDestinationTag) {
76
+ errors.transaction = new XrpDestinationTagRequired();
77
+ }
73
78
  return {
74
79
  errors,
75
80
  warnings,
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntent.js","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sCAAsC;AAQtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAA;AACrF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,UAAU,EACV,cAAc,EACd,4CAA4C,EAC5C,4CAA4C,EAC5C,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,iBAAgD,EAChD,QAAmB,EACnB,UAA0B,EACM,EAAE;IAClC,MAAM,MAAM,GAA0B,EAAE,CAAA;IACxC,MAAM,QAAQ,GAA0B,EAAE,CAAA;IAC1C,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAA;IAC1C,MAAM,cAAc,GAAG,aAAa,CAClC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAC9D,CAAA;IACD,MAAM,aAAa,GAAG,UAAU,EAAE,KAAK,IAAI,EAAE,CAAA;IAC7C,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,GAAG,aAAa,CAAA;IAC3D,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAA;IAEvC,IAAI,MAAM,GAAG,CAAC,IAAI,aAAa,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC;QAC/C,QAAQ,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;IACxC,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;IACrE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,GAAG,IAAI,YAAY,EAAE,CAAA;IACjC,CAAC;SAAM,IAAI,UAAU,GAAG,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QAChF,MAAM,CAAC,MAAM,GAAG,IAAI,yBAAyB,CAAC,EAAE,EAAE;YAChD,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI;gBACzC,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE;oBAC/D,eAAe,EAAE,IAAI;oBACrB,WAAW,EAAE,KAAK;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC;gBACJ,CAAC,CAAC,cAAc;SACnB,CAAC,CAAA;IACJ,CAAC;SAAM,IACL,iBAAiB,CAAC,SAAS;QAC3B,CAAC,MAAM,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACnD,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EAC5D,CAAC;QACD,MAAM,CAAC,MAAM,GAAG,IAAI,4CAA4C,CAAC,EAAE,EAAE;YACnE,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI;gBACzC,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE;oBAC/D,eAAe,EAAE,IAAI;oBACrB,WAAW,EAAE,KAAK;oBAClB,QAAQ,EAAE,IAAI;iBACf,CAAC;gBACJ,CAAC,CAAC,cAAc;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAC9C,CAAC;SAAM,IAAI,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;QACpE,MAAM,CAAC,SAAS,GAAG,IAAI,4CAA4C,EAAE,CAAA;IACvE,CAAC;SAAM,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE;YACxC,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;SACjD,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAA;IACtC,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK;QAClD,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACpD,CAAC,CAAC,SAAS,CAAA;IACb,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1F,MAAM,CAAC,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAA;IAChD,CAAC;IAED,OAAO;QACL,MAAM;QACN,QAAQ;QACR,aAAa;QACb,MAAM;QACN,UAAU;KACX,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"validateIntent.js","sourceRoot":"","sources":["../../src/api/validateIntent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAIjD,OAAO,EACL,gBAAgB,EAGhB,MAAM,EAEN,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,yBAAyB,gBAAgB,CAAA;AAGtD,eAAO,MAAM,MAAM,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,CAErE,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,UAAU,OAAO,KAChB,OAAO,CAAC,WAAW,CAwCrB,CAAA;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,kBAAkB,CAEjE,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IAIf,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,SAAS,sBAAsB,GAAG,SAAS,KAC1C,OAAO,CAAC,iBAAiB,CAW3B,CAAA;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAEzD;AAYD,eAAO,MAAM,gBAAgB,2FAI5B,CAAA;AAED,eAAO,MAAM,oBAAoB,yFAIhC,CAAA;AAUD,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAItD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAIjD,OAAO,EACL,gBAAgB,EAGhB,MAAM,EAEN,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,yBAAyB,gBAAgB,CAAA;AAGtD,eAAO,MAAM,MAAM,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,CAErE,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,UAAU,OAAO,KAChB,OAAO,CAAC,WAAW,CA0CrB,CAAA;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,kBAAkB,CAEjE,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IAIf,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,EACf,SAAS,sBAAsB,GAAG,SAAS,KAC1C,OAAO,CAAC,iBAAiB,CAW3B,CAAA;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAEzD;AAYD,eAAO,MAAM,gBAAgB,2FAI5B,CAAA;AAED,eAAO,MAAM,oBAAoB,yFAIhC,CAAA;AAUD,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAItD"}
@@ -35,6 +35,7 @@ export const getAccountInfo = async (recipient, current) => {
35
35
  balance: '0',
36
36
  ownerCount: 0,
37
37
  sequence: 0,
38
+ requireDestinationTag: false,
38
39
  };
39
40
  }
40
41
  else {
@@ -43,6 +44,7 @@ export const getAccountInfo = async (recipient, current) => {
43
44
  balance: result.account_data.Balance,
44
45
  ownerCount: result.account_data.OwnerCount,
45
46
  sequence: result.account_data.Sequence,
47
+ requireDestinationTag: result.account_flags?.requireDestinationTag ?? false,
46
48
  };
47
49
  }
48
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export type AccountInfo = {
13
13
  balance: string;
14
14
  ownerCount: number;
15
15
  sequence: number;
16
+ requireDestinationTag: boolean;
16
17
  };
17
18
  export type XrpMemo = {
18
19
  data?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAA;AACxE,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;AAEtD,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAElC,MAAM,MAAM,qBAAqB,GAAG;IAElC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAA;AACxE,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;AAEtD,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAElC,MAAM,MAAM,qBAAqB,GAAG;IAElC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA"}
@@ -1,4 +1,7 @@
1
1
  export declare const XrpInvalidMemoError: import("@ledgerhq/errors/lib-es/helpers").LedgerErrorConstructor<{
2
2
  [key: string]: unknown;
3
3
  }>;
4
+ export declare const XrpDestinationTagRequired: import("@ledgerhq/errors/lib-es/helpers").LedgerErrorConstructor<{
5
+ [key: string]: unknown;
6
+ }>;
4
7
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB;;EAA2C,CAAA"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB;;EAA2C,CAAA;AAE3E,eAAO,MAAM,yBAAyB;;EAAsD,CAAA"}
@@ -2,4 +2,5 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { createCustomErrorClass } from '@ledgerhq/errors';
4
4
  export const XrpInvalidMemoError = createCustomErrorClass('XrpInvalidMemo');
5
+ export const XrpDestinationTagRequired = createCustomErrorClass('XrpDestinationTagRequired');
5
6
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sCAAsC;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sCAAsC;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC,2BAA2B,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-xrp",
3
- "version": "7.23.3",
3
+ "version": "7.23.5",
4
4
  "description": "Ledger XRP Coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -72,7 +72,7 @@
72
72
  "invariant": "^2.2.4",
73
73
  "ripple-address-codec": "^5.0.0",
74
74
  "ripple-binary-codec": "^1.3.0",
75
- "@ledgerhq/coin-module-framework": "^3.4.2"
75
+ "@ledgerhq/coin-module-framework": "^3.5.1"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@faker-js/faker": "^8.4.1",
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { TransactionIntent } from '@ledgerhq/coin-module-framework/api/types'
5
5
  import { XrpMapMemo } from '../types'
6
- import { XrpInvalidMemoError } from '../utils/errors'
6
+ import { XrpDestinationTagRequired, XrpInvalidMemoError } from '../utils/errors'
7
7
  import * as logicValidateMemo from '../utils/validateMemo'
8
8
  import { validateIntent } from './validateIntent'
9
9
 
@@ -12,6 +12,17 @@ const mockGetBalance = jest.fn()
12
12
  const mockGetServerInfos = jest.fn()
13
13
 
14
14
  const RECIPIENT_NEW = 'rDKsbvy9uaNpPtvVFraJyNGfjvTw8xivgK'
15
+ const RECIPIENT_TAG_REQUIRED = 'rwnYLUsoBQX3ECa1A5bSKLdbPoHKnqf63J'
16
+
17
+ const mockGetAccountInfo = jest.fn((addr: string) =>
18
+ Promise.resolve({
19
+ isNewAccount: addr === RECIPIENT_NEW,
20
+ balance: '0',
21
+ ownerCount: 0,
22
+ sequence: 0,
23
+ requireDestinationTag: addr === RECIPIENT_TAG_REQUIRED,
24
+ })
25
+ )
15
26
 
16
27
  jest.mock('./getBalance', () => ({
17
28
  getBalance: () => mockGetBalance(),
@@ -19,16 +30,7 @@ jest.mock('./getBalance', () => ({
19
30
 
20
31
  jest.mock('../network', () => ({
21
32
  getServerInfos: () => mockGetServerInfos(),
22
- }))
23
-
24
- jest.mock('../utils', () => ({
25
- ...jest.requireActual('../utils'),
26
- recipientIsNew: jest.fn((addr: string) => {
27
- if (addr === RECIPIENT_NEW) {
28
- return Promise.resolve(true)
29
- }
30
- return Promise.resolve(false)
31
- }),
33
+ getAccountInfo: (addr: string) => mockGetAccountInfo(addr),
32
34
  }))
33
35
 
34
36
  jest.mock('../utils/validateMemo')
@@ -418,4 +420,96 @@ describe('validateIntent', () => {
418
420
 
419
421
  expect(spiedValidateMemo).toHaveBeenCalledWith(memos.get('destinationTag'))
420
422
  })
423
+
424
+ it('errors when destinationTag is not a single string value', async () => {
425
+ mockGetServerInfos.mockResolvedValue({
426
+ info: {
427
+ validated_ledger: {
428
+ reserve_base_xrp: reserveBase / 1_000_000n,
429
+ },
430
+ },
431
+ })
432
+
433
+ const memos = new Map<string, string | string[]>()
434
+ memos.set('destinationTag', ['12345', '67890'])
435
+
436
+ const status = await validateIntent(
437
+ {
438
+ intentType: 'transaction',
439
+ sender: SENDER,
440
+ asset: { unit: { code: 'XRP', magnitude: 6 } },
441
+ amount: 1_000_000n,
442
+ recipient: RECIPIENT,
443
+ memo: {
444
+ type: '',
445
+ memos,
446
+ },
447
+ } as TransactionIntent<XrpMapMemo>,
448
+ [{ value: 50_000_000n, asset: { type: 'native' }, locked: 0n }],
449
+ { value: 10_000n } // fees
450
+ )
451
+
452
+ expect(status.errors.transaction).toBeInstanceOf(XrpInvalidMemoError)
453
+ })
454
+
455
+ it('errors when recipient requires a destination tag and none is provided', async () => {
456
+ mockGetServerInfos.mockResolvedValue({
457
+ info: {
458
+ validated_ledger: {
459
+ reserve_base_xrp: reserveBase / 1_000_000n,
460
+ },
461
+ },
462
+ })
463
+
464
+ const status = await validateIntent(
465
+ {
466
+ intentType: 'transaction',
467
+ sender: SENDER,
468
+ asset: { unit: { code: 'XRP', magnitude: 6 } },
469
+ amount: 20_000_000n,
470
+ recipient: RECIPIENT_TAG_REQUIRED,
471
+ memo: {
472
+ type: '',
473
+ memos: new Map<string, string | string[]>(),
474
+ },
475
+ } as TransactionIntent<XrpMapMemo>,
476
+ [{ value: 50_000_000n, asset: { type: 'native' }, locked: 0n }],
477
+ { value: 10_000n } // fees
478
+ )
479
+
480
+ expect(status.errors.transaction).toBeInstanceOf(XrpDestinationTagRequired)
481
+ })
482
+
483
+ it('does not error when recipient requires a destination tag and one is provided', async () => {
484
+ mockGetServerInfos.mockResolvedValue({
485
+ info: {
486
+ validated_ledger: {
487
+ reserve_base_xrp: reserveBase / 1_000_000n,
488
+ },
489
+ },
490
+ })
491
+
492
+ spiedValidateMemo.mockReturnValueOnce(true)
493
+
494
+ const memos = new Map<string, string | string[]>()
495
+ memos.set('destinationTag', '12345')
496
+
497
+ const status = await validateIntent(
498
+ {
499
+ intentType: 'transaction',
500
+ sender: SENDER,
501
+ asset: { unit: { code: 'XRP', magnitude: 6 } },
502
+ amount: 20_000_000n,
503
+ recipient: RECIPIENT_TAG_REQUIRED,
504
+ memo: {
505
+ type: '',
506
+ memos,
507
+ },
508
+ } as TransactionIntent<XrpMapMemo>,
509
+ [{ value: 50_000_000n, asset: { type: 'native' }, locked: 0n }],
510
+ { value: 10_000n } // fees
511
+ )
512
+
513
+ expect(status.errors.transaction).not.toBeDefined()
514
+ })
421
515
  })
@@ -19,11 +19,10 @@ import {
19
19
  RecipientRequired,
20
20
  } from '@ledgerhq/errors'
21
21
  import { isValidClassicAddress } from 'ripple-address-codec'
22
- import { getServerInfos } from '../network'
22
+ import { getAccountInfo, getServerInfos } from '../network'
23
23
  import { XrpMapMemo } from '../types'
24
- import { recipientIsNew } from '../utils'
25
24
  import { parseAPIValue } from '../utils/common'
26
- import { XrpInvalidMemoError } from '../utils/errors'
25
+ import { XrpDestinationTagRequired, XrpInvalidMemoError } from '../utils/errors'
27
26
  import { validateMemo } from '../utils/validateMemo'
28
27
 
29
28
  export const validateIntent = async (
@@ -41,6 +40,11 @@ export const validateIntent = async (
41
40
  const totalSpent = transactionIntent.amount + estimatedFees
42
41
  const amount = transactionIntent.amount
43
42
 
43
+ const recipientInfo =
44
+ transactionIntent.recipient && isValidClassicAddress(transactionIntent.recipient)
45
+ ? await getAccountInfo(transactionIntent.recipient)
46
+ : undefined
47
+
44
48
  if (amount > 0 && estimatedFees * 10n > amount) {
45
49
  warnings.feeTooHigh = new FeeTooHigh()
46
50
  }
@@ -63,8 +67,7 @@ export const validateIntent = async (
63
67
  : 'Unknown unit',
64
68
  })
65
69
  } else if (
66
- transactionIntent.recipient &&
67
- (await recipientIsNew(transactionIntent.recipient)) &&
70
+ recipientInfo?.isNewAccount &&
68
71
  transactionIntent.amount < BigInt(reserveBaseXRP.toString())
69
72
  ) {
70
73
  errors.amount = new NotEnoughBalanceBecauseDestinationNotCreated('', {
@@ -92,11 +95,13 @@ export const validateIntent = async (
92
95
  errors.amount = new AmountRequired()
93
96
  }
94
97
 
95
- const destinationTag = transactionIntent.memo?.memos
96
- ? transactionIntent.memo.memos.get('destinationTag')
97
- : undefined
98
- if (destinationTag && typeof destinationTag === 'string' && !validateMemo(destinationTag)) {
98
+ const destinationTag = transactionIntent.memo?.memos?.get('destinationTag')
99
+ if (destinationTag !== undefined && typeof destinationTag !== 'string') {
100
+ errors.transaction = new XrpInvalidMemoError()
101
+ } else if (destinationTag && !validateMemo(destinationTag)) {
99
102
  errors.transaction = new XrpInvalidMemoError()
103
+ } else if (!errors.recipient && !destinationTag && recipientInfo?.requireDestinationTag) {
104
+ errors.transaction = new XrpDestinationTagRequired()
100
105
  }
101
106
 
102
107
  return {
@@ -49,6 +49,7 @@ describe('getAccountInfo', () => {
49
49
  balance: '0',
50
50
  ownerCount: 0,
51
51
  sequence: 0,
52
+ requireDestinationTag: false,
52
53
  })
53
54
  })
54
55
 
@@ -86,9 +87,40 @@ describe('getAccountInfo', () => {
86
87
  balance: '999441667919804',
87
88
  ownerCount: 0,
88
89
  sequence: 153743,
90
+ requireDestinationTag: false,
89
91
  })
90
92
  })
91
93
 
94
+ it('returns requireDestinationTag true when the account_flags flag is set', async () => {
95
+ const address = 'rwnYLUsoBQX3ECa1A5bSKLdbPoHKnqf63J'
96
+ ;(network as jest.Mock).mockResolvedValue({
97
+ data: {
98
+ result: {
99
+ account_data: {
100
+ Account: address,
101
+ Balance: '100000000',
102
+ Flags: 131072,
103
+ LedgerEntryType: 'AccountRoot',
104
+ OwnerCount: 0,
105
+ Sequence: 100,
106
+ index: 'BC0DAE09C0BFBC4A49AA94B849266588BFD6E1F554B184B5788AC55D6E07EB95',
107
+ },
108
+ account_flags: {
109
+ requireDestinationTag: true,
110
+ },
111
+ ledger_hash: '93E952B2770233B0ABFBFBBFBC3E2E2159DCABD07FEB5F4C49174027935D9FBB',
112
+ ledger_index: 1908009,
113
+ status: 'success',
114
+ validated: true,
115
+ },
116
+ },
117
+ })
118
+
119
+ const result = await getAccountInfo(address)
120
+
121
+ expect(result.requireDestinationTag).toBe(true)
122
+ })
123
+
92
124
  it('throws an error when backend returns any other error', async () => {
93
125
  // Given
94
126
  const invalidAddress = 'rNCgVpHinUDjXP2vHDFDMjm7ssBwpveHyaa'
@@ -61,6 +61,7 @@ export const getAccountInfo = async (
61
61
  balance: '0',
62
62
  ownerCount: 0,
63
63
  sequence: 0,
64
+ requireDestinationTag: false,
64
65
  }
65
66
  } else {
66
67
  return {
@@ -68,6 +69,7 @@ export const getAccountInfo = async (
68
69
  balance: result.account_data.Balance,
69
70
  ownerCount: result.account_data.OwnerCount,
70
71
  sequence: result.account_data.Sequence,
72
+ requireDestinationTag: result.account_flags?.requireDestinationTag ?? false,
71
73
  }
72
74
  }
73
75
  }
@@ -19,6 +19,7 @@ export type AccountInfo = {
19
19
  balance: string
20
20
  ownerCount: number
21
21
  sequence: number
22
+ requireDestinationTag: boolean
22
23
  }
23
24
 
24
25
  export type XrpMemo = {
@@ -4,3 +4,5 @@
4
4
  import { createCustomErrorClass } from '@ledgerhq/errors'
5
5
 
6
6
  export const XrpInvalidMemoError = createCustomErrorClass('XrpInvalidMemo')
7
+
8
+ export const XrpDestinationTagRequired = createCustomErrorClass('XrpDestinationTagRequired')