Compare commits

...

17 Commits

Author SHA1 Message Date
Denis Angell
f292d9e716 Publish
- @transia/ripple-address-codec@4.2.8-alpha.0
 - @transia/ripple-binary-codec@1.4.6-alpha.0
 - @transia/ripple-keypairs@1.1.8-alpha.0
 - @transia/xrpl@2.7.3-alpha.0
2023-05-29 17:02:01 +00:00
Denis Angell
c167b3a22d reset version 2023-05-29 17:01:12 +00:00
Denis Angell
baae6b9a9a Publish
- @transia/xrpl@2.7.2-alpha.0
2023-05-29 16:50:36 +00:00
Denis Angell
25ab1d08fc revert version 2023-05-29 16:48:55 +00:00
Denis Angell
9a0e2aa8f8 bump version 2023-05-29 16:47:13 +00:00
Denis Angell
8779ef41d7 Publish
- @transia/ripple-address-codec@4.2.7-alpha.0
 - @transia/ripple-binary-codec@1.4.5-alpha.0
 - @transia/ripple-keypairs@1.1.7-alpha.0
 - @transia/xrpl@2.7.1-alpha.0
2023-05-29 16:42:09 +00:00
Denis Angell
606babe01a add hook executions 2023-05-17 21:42:07 +00:00
Denis Angell
4fbd5383c4 missing fields 2023-05-17 21:32:28 +00:00
Denis Angell
a97c7bb21b rename repo 2023-05-17 21:32:17 +00:00
Denis Angell
c00e36bf50 rename packages 2023-05-17 06:35:54 +00:00
Denis Angell
c24197f202 add fields 2023-05-17 06:28:14 +00:00
Denis Angell
d50417acbc update package.json for @transia 2023-03-28 20:36:54 +00:00
Denis Angell
f8b7c6ab15 Merge branch 'beta' into hooks 2023-03-28 20:33:17 +00:00
Denis Angell
4447a7af09 NetworkID (#11)
* update definitions

* add network id to base transaction

* update server info

* update base tx

* add network id to autofill

* update tests and fixtures

* network id option 3

fixup

add network id to server info fixture

fixup!

Revert "update tests and fixtures"

This reverts commit a5deee1274.

* update autofill

* update getNetworkID

* remove set network func

* fixup!

remove autoset network id

remove my mistake

fixup!
2023-03-28 20:27:38 +00:00
Denis Angell
678c5f5fda update definitions
update definitions

update definitions
2023-03-28 20:24:22 +00:00
Denis Angell
6264c5f3f7 update tests 2023-03-28 19:30:48 +00:00
Caleb Kniffen
62a39c69ce chore: bump codeql-analysis (#2246) 2023-03-27 18:32:54 -04:00
51 changed files with 2393 additions and 2243 deletions

View File

@@ -39,7 +39,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -50,7 +50,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -64,4 +64,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2

4294
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,10 +13,10 @@
"update:confirm": "npx npm-check-updates --configFileName .ncurc.json -u"
},
"dependencies": {
"ripple-address-codec": "file:packages/ripple-address-codec",
"ripple-binary-codec": "file:packages/ripple-binary-codec",
"ripple-keypairs": "file:packages/ripple-keypairs",
"xrpl": "file:packages/xrpl"
"@transia/ripple-address-codec": "file:packages/ripple-address-codec",
"@transia/ripple-binary-codec": "file:packages/ripple-binary-codec",
"@transia/ripple-keypairs": "file:packages/ripple-keypairs",
"@transia/xrpl": "file:packages/xrpl"
},
"devDependencies": {
"@types/brorand": "^1.0.30",

View File

@@ -1,12 +1,12 @@
{
"name": "ripple-address-codec",
"version": "4.2.5",
"version": "4.2.8-alpha.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ripple-address-codec",
"version": "4.2.4",
"version": "4.2.8-alpha.0",
"license": "ISC",
"dependencies": {
"base-x": "^3.0.9",

View File

@@ -1,6 +1,6 @@
{
"name": "ripple-address-codec",
"version": "4.2.5",
"name": "@transia/ripple-address-codec",
"version": "4.2.8-alpha.0",
"description": "encodes/decodes base58 encoded XRP Ledger identifiers",
"files": [
"dist/*",
@@ -15,7 +15,7 @@
},
"repository": {
"type": "git",
"url": "git@github.com:XRPLF/xrpl.js.git"
"url": "git@github.com/Transia-RnD/xrpl.js/tree/beta"
},
"prepublish": "tsc -b",
"prepublishOnly": "tslint -b ./ && jest",

View File

@@ -1,6 +1,6 @@
{
"name": "ripple-binary-codec",
"version": "1.4.3",
"name": "@transia/ripple-binary-codec",
"version": "1.4.6-alpha.0",
"description": "XRP Ledger binary codec",
"files": [
"dist/*",
@@ -12,12 +12,12 @@
"test": "test"
},
"dependencies": {
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
"assert": "^2.0.0",
"big-integer": "^1.6.48",
"buffer": "5.6.0",
"create-hash": "^1.2.0",
"decimal.js": "^10.2.0",
"ripple-address-codec": "^4.2.5"
"decimal.js": "^10.2.0"
},
"scripts": {
"build": "tsc -b && copyfiles ./src/enums/definitions.json ./dist/enums/",
@@ -28,7 +28,7 @@
},
"repository": {
"type": "git",
"url": "git@github.com:XRPLF/xrpl.js.git"
"url": "git@github.com/Transia-RnD/xrpl.js/tree/beta"
},
"bugs": {
"url": "https://github.com/XRPLF/xrpl.js/issues"

View File

@@ -44,6 +44,7 @@
"NegativeUNL": 78,
"NFTokenPage": 80,
"NFTokenOffer": 55,
"URIToken": 85,
"Any": -3,
"Child": -2,
"Nickname": 110,
@@ -778,7 +779,7 @@
[
"LockCount",
{
"nth": 47,
"nth": 49,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
@@ -1325,6 +1326,16 @@
"type": "Hash256"
}
],
[
"URITokenID",
{
"nth": 36,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "Hash256"
}
],
[
"Amount",
{
@@ -2304,10 +2315,10 @@
"temSEQ_AND_TICKET": -263,
"temBAD_NFTOKEN_TRANSFER_FEE": -262,
"temAMM_BAD_TOKENS": -261,
"temEQUAL_DOOR_ACCOUNTS": -260,
"temBAD_XCHAIN_PROOF": -259,
"temSIDECHAIN_BAD_ISSUES": -258,
"temSIDECHAIN_NONDOOR_OWNER": -257,
"temXCHAIN_EQUAL_DOOR_ACCOUNTS": -260,
"temXCHAIN_BAD_PROOF": -259,
"temXCHAIN_BRIDGE_BAD_ISSUES": -258,
"temXCHAIN_BRIDGE_NONDOOR_OWNER": -257,
"temXCHAIN_BRIDGE_BAD_MIN_ACCOUNT_CREATE_AMOUNT": -256,
"temXCHAIN_BRIDGE_BAD_REWARD_AMOUNT": -255,
"temXCHAIN_TOO_MANY_ATTESTATIONS": -254,
@@ -2348,7 +2359,8 @@
"terNO_RIPPLE": -90,
"terQUEUED": -89,
"terPRE_TICKET": -88,
"terNO_HOOK": -87,
"terNO_AMM": -87,
"terNO_HOOK": -86,
"tesSUCCESS": 0,
@@ -2455,6 +2467,11 @@
"NFTokenCreateOffer": 27,
"NFTokenCancelOffer": 28,
"NFTokenAcceptOffer": 29,
"URITokenMint": 45,
"URITokenBurn": 46,
"URITokenBuy": 47,
"URITokenCreateSellOffer": 48,
"URITokenCancelSellOffer": 49,
"Invoke": 99,
"EnableAmendment": 100,
"SetFee": 101,

View File

@@ -3,7 +3,7 @@ import {
encodeAccountID,
isValidXAddress,
xAddressToClassicAddress,
} from 'ripple-address-codec'
} from '@transia/ripple-address-codec'
import { Hash160 } from './hash-160'
import { Buffer } from 'buffer/'

View File

@@ -5,7 +5,7 @@ import {
XrplDefinitionsBase,
} from '../enums'
import { SerializedType, JsonObject } from './serialized-type'
import { xAddressToClassicAddress, isValidXAddress } from 'ripple-address-codec'
import { xAddressToClassicAddress, isValidXAddress } from '@transia/ripple-address-codec'
import { BinaryParser } from '../serdes/binary-parser'
import { BinarySerializer, BytesList } from '../serdes/binary-serializer'
import { Buffer } from 'buffer/'

View File

@@ -1,7 +1,7 @@
const { coreTypes } = require('../src/types')
const Decimal = require('decimal.js')
const { encodeAccountID } = require('ripple-address-codec')
const { encodeAccountID } = require('@transia/ripple-address-codec')
const { binary } = require('../src/coretypes')
const { Amount, Hash160 } = coreTypes
const { makeParser, readJSON } = binary

View File

@@ -1,6 +1,6 @@
{
"name": "ripple-keypairs",
"version": "1.1.5",
"name": "@transia/ripple-keypairs",
"version": "1.1.8-alpha.0",
"description": "Cryptographic key pairs for the XRP Ledger",
"scripts": {
"build": "tsc -b",
@@ -17,15 +17,15 @@
"test": "test"
},
"dependencies": {
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
"bn.js": "^5.1.1",
"brorand": "^1.0.5",
"elliptic": "^6.5.4",
"hash.js": "^1.0.3",
"ripple-address-codec": "^4.2.5"
"hash.js": "^1.0.3"
},
"repository": {
"type": "git",
"url": "git@github.com:XRPLF/xrpl.js.git"
"url": "git@github.com/Transia-RnD/xrpl.js/tree/beta"
},
"license": "ISC",
"prettier": "@xrplf/prettier-config",

View File

@@ -3,7 +3,7 @@ import brorand = require('brorand')
import * as hashjs from 'hash.js'
import * as elliptic from 'elliptic'
import * as addressCodec from 'ripple-address-codec'
import * as addressCodec from '@transia/ripple-address-codec'
import { derivePrivateKey, accountPublicFromPublicGenerator } from './secp256k1'
import * as utils from './utils'

View File

@@ -1,5 +1,5 @@
import assert from 'assert'
import * as api from 'ripple-address-codec'
import * as api from '@transia/ripple-address-codec'
function toHex(bytes) {
return Buffer.from(bytes).toString('hex').toUpperCase()

View File

@@ -1,5 +1,5 @@
import assert from 'assert'
import * as api from 'ripple-address-codec'
import * as api from '@transia/ripple-address-codec'
function toHex(bytes: Buffer) {
return Buffer.from(bytes).toString('hex').toUpperCase()

View File

@@ -1,6 +1,6 @@
{
"name": "xrpl",
"version": "2.7.0",
"name": "@transia/xrpl",
"version": "2.7.3-alpha.0",
"license": "ISC",
"description": "A TypeScript/JavaScript API for interacting with the XRP Ledger in Node.js and the browser",
"files": [
@@ -22,14 +22,14 @@
"https-proxy-agent": false
},
"dependencies": {
"@transia/ripple-address-codec": "^4.2.8-alpha.0",
"@transia/ripple-binary-codec": "^1.4.6-alpha.0",
"@transia/ripple-keypairs": "^1.1.8-alpha.0",
"bignumber.js": "^9.0.0",
"bip32": "^2.0.6",
"bip39": "^3.0.4",
"https-proxy-agent": "^5.0.0",
"lodash": "^4.17.4",
"ripple-address-codec": "^4.2.5",
"ripple-binary-codec": "^1.4.3",
"ripple-keypairs": "^1.1.5",
"ws": "^8.2.2"
},
"devDependencies": {
@@ -75,7 +75,7 @@
"prettier": "@xrplf/prettier-config",
"repository": {
"type": "git",
"url": "git@github.com:XRPLF/xrpl.js.git"
"url": "git@github.com/Transia-RnD/xrpl.js/tree/beta"
},
"readmeFilename": "README.md",
"engines": {

View File

@@ -1,7 +1,7 @@
import { IncomingMessage } from 'http'
import { request as httpsRequest, RequestOptions } from 'https'
import { isValidClassicAddress } from 'ripple-address-codec'
import { isValidClassicAddress } from '@transia/ripple-address-codec'
import type { Client } from '../client'
import { RippledError, XRPLFaucetError } from '../errors'

View File

@@ -9,20 +9,20 @@ import {
isValidXAddress,
xAddressToClassicAddress,
encodeSeed,
} from 'ripple-address-codec'
} from '@transia/ripple-address-codec'
import {
decode,
encodeForSigning,
encodeForMultisigning,
encode,
} from 'ripple-binary-codec'
} from '@transia/ripple-binary-codec'
import {
deriveAddress,
deriveKeypair,
generateSeed,
verify,
sign,
} from 'ripple-keypairs'
} from '@transia/ripple-keypairs'
import ECDSA from '../ECDSA'
import { ValidationError, XrplError } from '../errors'

View File

@@ -1,13 +1,13 @@
import { BigNumber } from 'bignumber.js'
import { flatMap } from 'lodash'
import { decodeAccountID } from 'ripple-address-codec'
import { decodeAccountID } from '@transia/ripple-address-codec'
import {
decode,
encode,
encodeForSigning,
encodeForSigningClaim,
} from 'ripple-binary-codec'
import { sign as signWithKeypair, verify } from 'ripple-keypairs'
} from '@transia/ripple-binary-codec'
import { sign as signWithKeypair, verify } from '@transia/ripple-keypairs'
import { ValidationError } from '../errors'
import { Signer } from '../models/common'

View File

@@ -101,6 +101,7 @@ import {
getXrpBalance,
submit,
submitAndWait,
getNetworkID,
} from '../sugar'
import fundWallet from '../Wallet/fundWallet'
@@ -200,6 +201,13 @@ class Client extends EventEmitter {
*/
public readonly maxFeeXRP: string
/**
* Network ID of the server this sdk is connected to
*
* @category Fee
*/
public networkID: number
/**
* Creates a new Client with a websocket connection to a rippled server.
*
@@ -218,6 +226,7 @@ class Client extends EventEmitter {
this.feeCushion = options.feeCushion ?? DEFAULT_FEE_CUSHION
this.maxFeeXRP = options.maxFeeXRP ?? DEFAULT_MAX_FEE_XRP
this.networkID = 1
this.connection = new Connection(server, options)
@@ -634,6 +643,11 @@ class Client extends EventEmitter {
*/
public getLedgerIndex = getLedgerIndex
/**
* @category Abstraction
*/
public getNetworkID = getNetworkID
/**
* @category Faucet
*/

View File

@@ -1,5 +1,5 @@
import BigNumber from 'bignumber.js'
import { decode } from 'ripple-binary-codec'
import { decode } from '@transia/ripple-binary-codec'
import type {
AccountTxResponse,

View File

@@ -97,14 +97,15 @@ export interface Hook {
* The object that describes the hook in Hooks.
*/
Hook: {
HookHash?: string
/**
* The code that is executed when the hook is triggered.
*/
CreateCode: string
CreateCode?: string
/**
* The flags that are set on the hook.
*/
Flags: number
Flags?: number
/**
* The transactions that triggers the hook. Represented as a 256Hash
*/

View File

@@ -136,6 +136,10 @@ export interface ServerInfoResponse extends BaseResponse {
* overall network's load factor.
*/
load_factor?: number
/**
* The network id of the server.
*/
network_id?: number
/**
* Current multiplier to the transaction cost based on
* load to this server.

View File

@@ -1,6 +1,6 @@
/* eslint-disable complexity -- Necessary for validateAccountSet */
import { isValidClassicAddress } from 'ripple-address-codec'
import { isValidClassicAddress } from '@transia/ripple-address-codec'
import { ValidationError } from '../../errors'

View File

@@ -1,10 +1,16 @@
/* eslint-disable max-lines-per-function -- Necessary for validateBaseTransaction */
/* eslint-disable complexity -- Necessary for validateBaseTransaction */
/* eslint-disable max-statements -- Necessary for validateBaseTransaction */
import { TRANSACTION_TYPES } from 'ripple-binary-codec'
import { TRANSACTION_TYPES } from '@transia/ripple-binary-codec'
import { ValidationError } from '../../errors'
import { Amount, IssuedCurrencyAmount, Memo, Signer } from '../common'
import {
Amount,
HookParameter,
IssuedCurrencyAmount,
Memo,
Signer,
} from '../common'
import { onlyHasFields } from '../utils'
const MEMO_SIZE = 3
@@ -159,6 +165,14 @@ export interface BaseTransaction {
* account it says it is from.
*/
TxnSignature?: string
/**
* The network id of the transaction.
*/
NetworkID?: number
/**
* The hook parameters of the transaction.
*/
HookParameters?: HookParameter[]
}
/**
@@ -252,6 +266,9 @@ export function validateBaseTransaction(common: Record<string, unknown>): void {
) {
throw new ValidationError('BaseTransaction: invalid TxnSignature')
}
if (common.NetworkID !== undefined && typeof common.NetworkID !== 'number') {
throw new ValidationError('BaseTransaction: invalid NetworkID')
}
}
/**

View File

@@ -43,7 +43,7 @@ export {
export { PaymentChannelCreate } from './paymentChannelCreate'
export { PaymentChannelFund } from './paymentChannelFund'
export { SetRegularKey } from './setRegularKey'
export { SetHook } from './setHook'
export { SetHookFlagsInterface, SetHookFlags, SetHook } from './setHook'
export { SignerListSet } from './signerListSet'
export { TicketCreate } from './ticketCreate'
export { TrustSetFlagsInterface, TrustSetFlags, TrustSet } from './trustSet'

View File

@@ -13,6 +13,10 @@ export interface Invoke extends BaseTransaction {
* If present, invokes the Hook on the Destination account.
*/
Destination?: string
/**
* Hex value representing a VL Blob.
*/
Blob?: string
}
/**

View File

@@ -1,5 +1,19 @@
import { Amount } from '../common'
export interface HookExecution {
HookExecution: {
HookAccount: string
HookEmitCount: number
HookExecutionIndex: number
HookHash: string
HookInstructionCount: string
HookResult: number
HookReturnCode: number
HookReturnString: string
HookStateChangeCount: number
}
}
export interface CreatedNode {
CreatedNode: {
LedgerEntryType: string
@@ -60,6 +74,7 @@ export function isDeletedNode(node: Node): node is DeletedNode {
}
export interface TransactionMetadata {
HookExecutions: HookExecution[]
AffectedNodes: Node[]
DeliveredAmount?: Amount
// "unavailable" possible for transactions before 2014-01-20

View File

@@ -1,7 +1,30 @@
import { ValidationError } from '../../errors'
import { Hook } from '../common'
import { BaseTransaction, validateBaseTransaction } from './common'
import { BaseTransaction, GlobalFlags, validateBaseTransaction } from './common'
/**
* Enum representing values for Set Hook Transaction Flags.
*
* @category Transaction Flags
*/
export enum SetHookFlags {
/**
*/
hsfOverride = 0x00000001,
/**
*/
hsfNSDelete = 0x00000010,
/**
*/
hsfCollect = 0x00000100,
}
export interface SetHookFlagsInterface extends GlobalFlags {
hsfOverride?: boolean
hsfNSDelete?: boolean
hsfCollect?: boolean
}
/**
*
@@ -14,6 +37,8 @@ export interface SetHook extends BaseTransaction {
*
*/
Hooks: Hook[]
Flags?: number | SetHookFlagsInterface
}
const MAX_HOOKS = 4

View File

@@ -13,6 +13,7 @@ import { DepositPreauth, validateDepositPreauth } from './depositPreauth'
import { EscrowCancel, validateEscrowCancel } from './escrowCancel'
import { EscrowCreate, validateEscrowCreate } from './escrowCreate'
import { EscrowFinish, validateEscrowFinish } from './escrowFinish'
import { Invoke, validateInvoke } from './invoke'
import { TransactionMetadata } from './metadata'
import {
NFTokenAcceptOffer,
@@ -62,6 +63,7 @@ export type Transaction =
| EscrowCancel
| EscrowCreate
| EscrowFinish
| Invoke
| NFTokenAcceptOffer
| NFTokenBurn
| NFTokenCancelOffer
@@ -142,6 +144,10 @@ export function validate(transaction: Record<string, unknown>): void {
validateEscrowFinish(tx)
break
case 'Invoke':
validateInvoke(tx)
break
case 'NFTokenAcceptOffer':
validateNFTokenAcceptOffer(tx)
break

View File

@@ -20,6 +20,7 @@ import {
PaymentChannelClaimFlagsInterface,
PaymentChannelClaimFlags,
} from '../transactions/paymentChannelClaim'
import { SetHookFlagsInterface, SetHookFlags } from '../transactions/setHook'
import type { Transaction } from '../transactions/transaction'
import { TrustSetFlagsInterface, TrustSetFlags } from '../transactions/trustSet'
@@ -75,6 +76,15 @@ export function setTransactionFlagsToNumber(tx: Transaction): void {
case 'TrustSet':
tx.Flags = convertTrustSetFlagsToNumber(tx.Flags)
return
case 'SetHook':
tx.Flags = convertSetHookFlagsToNumber(tx.Flags)
tx.Hooks.forEach((h) => {
h.Hook.Flags = convertSetHookFlagsToNumber(
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- idk
h.Hook.Flags as SetHookFlagsInterface,
)
})
return
default:
tx.Flags = 0
}
@@ -108,6 +118,10 @@ function convertTrustSetFlagsToNumber(flags: TrustSetFlagsInterface): number {
return reduceFlags(flags, TrustSetFlags)
}
function convertSetHookFlagsToNumber(flags: SetHookFlagsInterface): number {
return reduceFlags(flags, SetHookFlags)
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- added ValidationError check for flagEnum
function reduceFlags(flags: GlobalFlags, flagEnum: any): number {
return Object.keys(flags).reduce((resultFlags, flag) => {

View File

@@ -1,5 +1,5 @@
import BigNumber from 'bignumber.js'
import { xAddressToClassicAddress, isValidXAddress } from 'ripple-address-codec'
import { xAddressToClassicAddress, isValidXAddress } from '@transia/ripple-address-codec'
import type { Client } from '..'
import { ValidationError, XrplError } from '../errors'
@@ -12,6 +12,7 @@ import { getFeeXrp } from './getFeeXrp'
// Expire unconfirmed transactions after 20 ledger versions, approximately 1 minute, by default
const LEDGER_OFFSET = 20
const RESTRICTED_NETWORKS = 1024
interface ClassicAccountAndTag {
classicAccount: string
tag: number | false | undefined
@@ -39,8 +40,10 @@ async function autofill<T extends Transaction>(
setValidAddresses(tx)
setTransactionFlagsToNumber(tx)
const promises: Array<Promise<void>> = []
if (this.networkID > RESTRICTED_NETWORKS && tx.NetworkID == null) {
tx.NetworkID = this.networkID
}
if (tx.Sequence == null) {
promises.push(setNextValidSequenceNumber(this, tx))
}

View File

@@ -0,0 +1,15 @@
import type { Client } from '..'
// import { XrplError } from '../errors'
/**
* Returns the network ID of the rippled server.
*
* @param this - The Client used to connect to the ledger.
* @returns The network id.
*/
export default async function getNetworkID(this: Client): Promise<number> {
const response = await this.request({
command: 'server_info',
})
return response.result.info.network_id ?? 1
}

View File

@@ -7,6 +7,8 @@ export { default as getLedgerIndex } from './getLedgerIndex'
export { default as getOrderbook } from './getOrderbook'
export { getFeeXrp, getFeeEstimateXrp } from './getFeeXrp'
export { default as getNetworkID } from './getNetworkID'
export * from './submit'
export * from './utils'

View File

@@ -1,4 +1,4 @@
import { decode, encode } from 'ripple-binary-codec'
import { decode, encode } from '@transia/ripple-binary-codec'
import type { Client, SubmitRequest, SubmitResponse, Wallet } from '..'
import { ValidationError, XrplError } from '../errors'

View File

@@ -1,4 +1,4 @@
import { xAddressToClassicAddress, isValidXAddress } from 'ripple-address-codec'
import { xAddressToClassicAddress, isValidXAddress } from '@transia/ripple-address-codec'
/**
* If an address is an X-Address, converts it to a classic address.

View File

@@ -1,5 +1,5 @@
import { classicAddressToXAddress } from 'ripple-address-codec'
import { deriveKeypair, deriveAddress } from 'ripple-keypairs'
import { classicAddressToXAddress } from '@transia/ripple-address-codec'
import { deriveKeypair, deriveAddress } from '@transia/ripple-keypairs'
/**
* Derive an X-Address from a public key and a destination tag.

View File

@@ -4,7 +4,7 @@
bitwise operators for and-ing numbers with a mask and bit shifting. */
import BigNumber from 'bignumber.js'
import { decode, encode } from 'ripple-binary-codec'
import { decode, encode } from '@transia/ripple-binary-codec'
import { ValidationError, XrplError } from '../../errors'
import type { Ledger } from '../../models/ledger'

View File

@@ -4,7 +4,7 @@
bitwise operators for and-ing numbers with a mask and bit shifting. */
import BigNumber from 'bignumber.js'
import { decodeAccountID } from 'ripple-address-codec'
import { decodeAccountID } from '@transia/ripple-address-codec'
import hashLedger, {
hashLedgerHeader,

View File

@@ -4,9 +4,11 @@
* This module contains the transaction types and the function to calculate the hook on
*/
// eslint-disable-next-line @typescript-eslint/no-require-imports -- Required
import {
TRANSACTION_TYPES,
TRANSACTION_TYPE_MAP,
} from '@transia/ripple-binary-codec'
import createHash = require('create-hash')
import { TRANSACTION_TYPES, TRANSACTION_TYPE_MAP } from 'ripple-binary-codec'
import { XrplError } from '../errors'
import { HookParameter } from '../models/common'
@@ -42,7 +44,7 @@ export function calculateHookOn(arr: Array<keyof TTS>): string {
`invalid transaction type '${String(nth)}' in HookOn array`,
)
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Required
const tts: Record<string, number> = TRANSACTION_TYPE_MAP
let value = BigInt(hash)
// eslint-disable-next-line no-bitwise -- Required
@@ -84,6 +86,14 @@ export async function hexNamespace(namespace: string): Promise<string> {
return (await sha256(namespace)).toUpperCase()
}
function isHex(value: string): boolean {
return /^[0-9A-F]+$/iu.test(value)
}
function hexValue(value: string): string {
return Buffer.from(value, 'utf8').toString('hex').toUpperCase()
}
/**
* Calculate the hex of the hook parameters
*
@@ -93,20 +103,21 @@ export async function hexNamespace(namespace: string): Promise<string> {
export function hexHookParameters(data: HookParameter[]): HookParameter[] {
const hookParameters: HookParameter[] = []
for (const parameter of data) {
let hookPName = parameter.HookParameter.HookParameterName
let hookPValue = parameter.HookParameter.HookParameterValue
if (!isHex(hookPName)) {
hookPName = hexValue(hookPName)
}
if (!isHex(hookPValue)) {
hookPValue = hexValue(hookPValue)
}
hookParameters.push({
HookParameter: {
HookParameterName: Buffer.from(
parameter.HookParameter.HookParameterName,
'utf8',
)
.toString('hex')
.toUpperCase(),
HookParameterValue: Buffer.from(
parameter.HookParameter.HookParameterValue,
'utf8',
)
.toString('hex')
.toUpperCase(),
HookParameterName: hookPName,
HookParameterValue: hookPValue,
},
})
}

View File

@@ -13,9 +13,9 @@ import {
isValidClassicAddress,
isValidXAddress,
xAddressToClassicAddress,
} from 'ripple-address-codec'
import * as rbc from 'ripple-binary-codec'
import { verify as verifyKeypairSignature } from 'ripple-keypairs'
} from '@transia/ripple-address-codec'
import * as rbc from '@transia/ripple-binary-codec'
import { verify as verifyKeypairSignature } from '@transia/ripple-keypairs'
import { LedgerEntry } from '../models/ledger'
import { Response } from '../models/methods'

View File

@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-magic-numbers -- Doing hex string parsing. */
import BigNumber from 'bignumber.js'
import { encodeAccountID } from 'ripple-address-codec'
import { encodeAccountID } from '@transia/ripple-address-codec'
import { XrplError } from '../errors'

View File

@@ -1,5 +1,5 @@
import { encodeForSigningClaim } from 'ripple-binary-codec'
import { sign } from 'ripple-keypairs'
import { encodeForSigningClaim } from '@transia/ripple-binary-codec'
import { sign } from '@transia/ripple-keypairs'
import { xrpToDrops } from './xrpConversion'

View File

@@ -1,5 +1,5 @@
import { encodeForSigningClaim } from 'ripple-binary-codec'
import { verify } from 'ripple-keypairs'
import { encodeForSigningClaim } from '@transia/ripple-binary-codec'
import { verify } from '@transia/ripple-keypairs'
import { xrpToDrops } from './xrpConversion'

View File

@@ -1,5 +1,5 @@
import { assert } from 'chai'
import { decode } from 'ripple-binary-codec'
import { decode } from '@transia/ripple-binary-codec'
import {
AccountSet,

View File

@@ -1,5 +1,5 @@
import { assert } from 'chai'
import { decode } from 'ripple-binary-codec'
import { decode } from '@transia/ripple-binary-codec'
import {
AccountSet,

View File

@@ -1,7 +1,7 @@
import { assert } from 'chai'
import omit from 'lodash/omit'
import throttle from 'lodash/throttle'
import { decode } from 'ripple-binary-codec'
import { decode } from '@transia/ripple-binary-codec'
import {
Client,

View File

@@ -23,7 +23,7 @@ describe('SetHook', function () {
CreateCode:
'0061736D01000000011C0460057F7F7F7F7F017E60037F7F7E017E60027F7F017F60017F017E02230303656E76057472616365000003656E7606616363657074000103656E76025F670002030201030503010002062B077F0141B088040B7F004180080B7F0041A6080B7F004180080B7F0041B088040B7F0041000B7F0041010B07080104686F6F6B00030AC4800001C0800001017F230041106B220124002001200036020C41920841134180084112410010001A410022002000420010011A41012200200010021A200141106A240042000B0B2C01004180080B254163636570742E633A2043616C6C65642E00224163636570742E633A2043616C6C65642E22',
HookOn:
'000000000000000000000000000000000000000000000000000000003E3FF5B7',
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFF7',
Flags: 1,
HookApiVersion: 0,
HookNamespace:
@@ -76,7 +76,7 @@ describe('SetHook', function () {
CreateCode:
'0061736D01000000011C0460057F7F7F7F7F017E60037F7F7E017E60027F7F017F60017F017E02230303656E76057472616365000003656E7606616363657074000103656E76025F670002030201030503010002062B077F0141B088040B7F004180080B7F0041A6080B7F004180080B7F0041B088040B7F0041000B7F0041010B07080104686F6F6B00030AC4800001C0800001017F230041106B220124002001200036020C41920841134180084112410010001A410022002000420010011A41012200200010021A200141106A240042000B0B2C01004180080B254163636570742E633A2043616C6C65642E00224163636570742E633A2043616C6C65642E22',
HookOn:
'000000000000000000000000000000000000000000000000000000003E3FF5B7',
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFF7',
Flags: 1,
HookApiVersion: 0,
HookNamespace:
@@ -131,7 +131,7 @@ describe('SetHook', function () {
CreateCode:
'0061736D01000000011C0460057F7F7F7F7F017E60037F7F7E017E60027F7F017F60017F017E02230303656E76057472616365000003656E7606616363657074000103656E76025F670002030201030503010002062B077F0141B088040B7F004180080B7F0041A6080B7F004180080B7F0041B088040B7F0041000B7F0041010B07080104686F6F6B00030AC4800001C0800001017F230041106B220124002001200036020C41920841134180084112410010001A410022002000420010011A41012200200010021A200141106A240042000B0B2C01004180080B254163636570742E633A2043616C6C65642E00224163636570742E633A2043616C6C65642E22',
HookOn:
'000000000000000000000000000000000000000000000000000000003E3FF5B7',
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFF7',
Flags: 1,
HookApiVersion: 0,
HookNamespace: '',

View File

@@ -2,7 +2,7 @@ import fs from 'fs'
import path from 'path'
import { assert } from 'chai'
import { encode } from 'ripple-binary-codec'
import { encode } from '@transia/ripple-binary-codec'
import { OfferCreate, Transaction, ValidationError } from '../../src'
import {

View File

@@ -18,7 +18,7 @@ describe('test hook on', function () {
const result = calculateHookOn([])
assert.equal(
result,
'000000000000000000000000000000000000000000000000000000003E3FF5BF',
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF',
)
})
it('one', function () {
@@ -26,7 +26,7 @@ describe('test hook on', function () {
const result = calculateHookOn(invokeOn)
assert.equal(
result,
'000000000000000000000000000000000000000000000000000000003E3FF5B7',
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFF7',
)
})
})

View File

@@ -1,5 +1,5 @@
import { assert } from 'chai'
import { decode } from 'ripple-binary-codec'
import { decode } from '@transia/ripple-binary-codec'
import { NFTokenMint, Payment, Transaction } from '../../src'
import ECDSA from '../../src/ECDSA'

View File

@@ -1,5 +1,5 @@
import { assert } from 'chai'
import { decode, encode } from 'ripple-binary-codec'
import { decode, encode } from '@transia/ripple-binary-codec'
import { Transaction, ValidationError } from '../../src'
import Wallet from '../../src/Wallet'