Compare commits

..

2 Commits

Author SHA1 Message Date
Denis Angell
5ad3d963f6 Publish
- @transia/xrpl@2.7.3-alpha.8
2023-07-19 06:29:02 +02:00
Wo Jake
2a35ac24c9 fix: enable the removal of a signer list (#2377)
`SignerQuorum` field has to be 0 and the `SignerEntrys` field has to be `undefined`

Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
2023-07-19 06:28:22 +02:00
3 changed files with 24 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@transia/xrpl",
"version": "2.7.3-alpha.7",
"version": "2.7.3-alpha.8",
"license": "ISC",
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
"files": [

View File

@@ -23,7 +23,7 @@ export interface SignerListSet extends BaseTransaction {
* more than 32 members. No address may appear more than once in the list, nor
* may the Account submitting the transaction appear in the list.
*/
SignerEntries: SignerEntry[]
SignerEntries?: SignerEntry[]
}
const MAX_SIGNERS = 32
@@ -36,6 +36,7 @@ const HEX_WALLET_LOCATOR_REGEX = /^[0-9A-Fa-f]{64}$/u
* @param tx - An SignerListSet Transaction.
* @throws When the SignerListSet is Malformed.
*/
// eslint-disable-next-line complexity -- validation can be complex
export function validateSignerListSet(tx: Record<string, unknown>): void {
validateBaseTransaction(tx)
@@ -47,6 +48,11 @@ export function validateSignerListSet(tx: Record<string, unknown>): void {
throw new ValidationError('SignerListSet: invalid SignerQuorum')
}
// All other checks are for if SignerQuorum is greater than 0
if (tx.SignerQuorum === 0) {
return
}
if (tx.SignerEntries === undefined) {
throw new ValidationError('SignerListSet: missing field SignerEntries')
}

View File

@@ -18,8 +18,9 @@ describe('SignerListSet', function () {
})
afterEach(async () => teardownClient(testContext))
// Add signerlist
it(
'base',
'add',
async () => {
const tx: SignerListSet = {
TransactionType: 'SignerListSet',
@@ -44,4 +45,18 @@ describe('SignerListSet', function () {
},
TIMEOUT,
)
// Remove signerlist
it(
'remove',
async () => {
const tx: SignerListSet = {
TransactionType: 'SignerListSet',
Account: testContext.wallet.classicAddress,
SignerQuorum: 0,
}
await testTransaction(testContext.client, tx, testContext.wallet)
},
TIMEOUT,
)
})