Skip to content

Commit

Permalink
make validate functions more readable
Browse files Browse the repository at this point in the history
  • Loading branch information
mvadari committed Sep 21, 2023
1 parent 84a8048 commit 6594c19
Show file tree
Hide file tree
Showing 10 changed files with 218 additions and 468 deletions.
49 changes: 7 additions & 42 deletions packages/xrpl/src/models/transactions/XChainAccountCreateCommit.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import { ValidationError } from '../../errors'
import { isString } from 'lodash'

import { Amount, XChainBridge } from '../common'

import {
BaseTransaction,
isAmount,
isXChainBridge,
validateBaseTransaction,
validateRequiredField,
} from './common'

/**
Expand Down Expand Up @@ -52,53 +54,16 @@ export interface XChainAccountCreateCommit extends BaseTransaction {
* @param tx - An XChainAccountCreateCommit Transaction.
* @throws When the XChainAccountCreateCommit is malformed.
*/
// eslint-disable-next-line max-lines-per-function -- okay for this function, there's a lot of things to check
export function validateXChainAccountCreateCommit(
tx: Record<string, unknown>,
): void {
validateBaseTransaction(tx)

if (tx.XChainBridge == null) {
throw new ValidationError(
'XChainAccountCreateCommit: missing field XChainBridge',
)
}

if (!isXChainBridge(tx.XChainBridge)) {
throw new ValidationError(
'XChainAccountCreateCommit: invalid field XChainBridge',
)
}

if (tx.SignatureReward == null) {
throw new ValidationError(
'XChainAccountCreateCommit: missing field SignatureReward',
)
}

if (!isAmount(tx.SignatureReward)) {
throw new ValidationError(
'XChainAccountCreateCommit: invalid field SignatureReward',
)
}

if (tx.Destination == null) {
throw new ValidationError(
'XChainAccountCreateCommit: missing field Destination',
)
}
validateRequiredField(tx, 'XChainBridge', isXChainBridge)

if (typeof tx.Destination !== 'string') {
throw new ValidationError(
'XChainAccountCreateCommit: invalid field Destination',
)
}
validateRequiredField(tx, 'SignatureReward', isAmount)

if (tx.Amount == null) {
throw new ValidationError('XChainAccountCreateCommit: missing field Amount')
}
validateRequiredField(tx, 'Destination', isString)

if (!isAmount(tx.Amount)) {
throw new ValidationError('XChainAccountCreateCommit: invalid field Amount')
}
validateRequiredField(tx, 'Amount', isAmount)
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import { ValidationError } from '../../errors'
import { Amount, XChainBridge } from '../common'

import {
BaseTransaction,
isAmount,
isNumber,
isString,
isXChainBridge,
validateBaseTransaction,
validateRequiredField,
} from './common'

/**
Expand Down Expand Up @@ -82,144 +84,38 @@ export interface XChainAddAccountCreateAttestation extends BaseTransaction {
* @param tx - An XChainAddAccountCreateAttestation Transaction.
* @throws When the XChainAddAccountCreateAttestation is malformed.
*/
// eslint-disable-next-line max-lines-per-function, max-statements -- okay for this function, lots of things to check
export function validateXChainAddAccountCreateAttestation(
tx: Record<string, unknown>,
): void {
validateBaseTransaction(tx)

if (tx.Amount == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field Amount',
)
}

if (!isAmount(tx.Amount)) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field Amount',
)
}

if (tx.AttestationRewardAccount == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field AttestationRewardAccount',
)
}

if (typeof tx.AttestationRewardAccount !== 'string') {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field AttestationRewardAccount',
)
}

if (tx.AttestationSignerAccount == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field AttestationSignerAccount',
)
}

if (typeof tx.AttestationSignerAccount !== 'string') {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field AttestationSignerAccount',
)
}

if (tx.Destination == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field Destination',
)
}

if (typeof tx.Destination !== 'string') {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field Destination',
)
}

if (tx.OtherChainSource == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field OtherChainSource',
)
}

if (typeof tx.OtherChainSource !== 'string') {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field OtherChainSource',
)
}

if (tx.PublicKey == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field PublicKey',
)
}

if (typeof tx.PublicKey !== 'string') {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field PublicKey',
)
}

if (tx.Signature == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field Signature',
)
}

if (typeof tx.Signature !== 'string') {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field Signature',
)
}

if (tx.SignatureReward == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field SignatureReward',
)
}

if (!isAmount(tx.SignatureReward)) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field SignatureReward',
)
}

if (tx.WasLockingChainSend == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field WasLockingChainSend',
)
}

if (tx.WasLockingChainSend !== 0 && tx.WasLockingChainSend !== 1) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field WasLockingChainSend',
)
}

if (tx.XChainAccountCreateCount == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field XChainAccountCreateCount',
)
}

if (
typeof tx.XChainAccountCreateCount !== 'number' &&
typeof tx.XChainAccountCreateCount !== 'string'
) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field XChainAccountCreateCount',
)
}

if (tx.XChainBridge == null) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: missing field XChainBridge',
)
}

if (!isXChainBridge(tx.XChainBridge)) {
throw new ValidationError(
'XChainAddAccountCreateAttestation: invalid field XChainBridge',
)
}
validateRequiredField(tx, 'Amount', isAmount)

validateRequiredField(tx, 'AttestationRewardAccount', isString)

validateRequiredField(tx, 'AttestationSignerAccount', isString)

validateRequiredField(tx, 'Destination', isString)

validateRequiredField(tx, 'OtherChainSource', isString)

validateRequiredField(tx, 'PublicKey', isString)

validateRequiredField(tx, 'Signature', isString)

validateRequiredField(tx, 'SignatureReward', isAmount)

validateRequiredField(
tx,
'WasLockingChainSend',
(inp) => inp === 0 || inp === 1,
)

validateRequiredField(
tx,
'XChainAccountCreateCount',
(inp) => isNumber(inp) || isString(inp),
)

validateRequiredField(tx, 'XChainBridge', isXChainBridge)
}
Loading

0 comments on commit 6594c19

Please sign in to comment.