Skip to content

JS/TS lib to decode strings for the xrpl-labs.com XUMM app

License

Notifications You must be signed in to change notification settings

XRPL-Labs/xumm-string-decode

Repository files navigation

XUMM String Decode npm version GitHub Actions NodeJS status CDNJS Browserified CDNJS Browserified Minified

JS/TS lib to decode strings for the xrpl-labs.com XUMM app (when scanning a QR code).

Supports:

  • XrplDestination, eg. r... or X..., optionally URI syntax (containing amount, IOU, destination tag, etc.)
  • XrplDestinationTag (32-bit unsigned integers)
  • XummPayloadReference (UUIDv4)
  • XummPairingToken
  • XummTranslation
  • XrplTransactionHash
  • XrplSecret (mnemonic, family seed (s....) or HEX private key)
  • XrplSignedTransaction (signed HEX blob)
  • XrplTransactionTemplate (HEX encoded JSON transaction template)
  • PayId ($host/path where XrplDestination can be retrieved)

The lib. exports:

  • StringTypeDetector (class)
  • StringDecoder (class)
  • StringType (enum)
  • SecretType (enum)

Resources

Sample

1. Detect string type

const someString = 'https://xrplf.org//send?to=rPdvC6ccq8hCdPKSPJkPmyZ4Mi1oG2FFkT&amount=30&dt=123'
const detected = new StringTypeDetector(someString)

Methods

The sample (above) will expose these methods on detected:

  • getType(), returns one of the StringType enum values
  • getTypeName(), returns StringType enum string value

In case a valid string (type) could not be found, StringType.Invalid will be returned by getType().

Other available methods (you probably won't need to use:

  • getStrippedInput() (string)
  • getInput() (string)
  • getRawInput() (string)
  • isUrl() (boolean)
  • getSearchParams() (URLSearchParams, in case of URI input)

String types

  • StringType.Invalid
  • StringType.XummPayloadReference
  • StringType.XummPairingToken
  • StringType.XummTranslation
  • StringType.XrplTransactionHash
  • StringType.XrplDestination
  • StringType.XrplDestinationTag
  • StringType.XrplSignedTransaction
  • StringType.XrplTransactionTemplate
  • StringType.XrplSecret
  • StringType.IlpStreamInstruction
  • StringType.PayId

2. Decode values

Once a string type is detected with the StringTypeDetector and the string is not StringType.Invalid, you can get the parsed values in the correct type using the StringDecoder class:

// Use the previous sample (above, StringTypeDetector) as input:
const decoded = new StringDecoder(detected)
console.log(decoded.getAny())

The methods available on the StringDecoder object:

  • getXrplDestination(), returns XrplDestination
  • getXrplDestinationTag(), returns XrplDestinationTag
  • getXrplSecret(), returns XrplSecret
  • getXummPayloadReference(), returns XummPayloadReference
  • getXummPairingToken(), returns XummPairingToken
  • getXummTranslation(), returns XummTranslation
  • getXrplTransactionHash(), returns XrplTransactionHash
  • getXrplSignedTransaction(), returns XrplSignedTransaction
  • getXrplTransactionTemplate(), returns XrplTransactionTemplate
  • getPayId(), returns PayId

So: you can call the getXxxYyy method based on the detected string type, or just get the right one at once:

  • getAny(), returns detected result

3. Sample output objects

XrplDestination
{
  to: string
  tag?: number
  invoiceid?: string
  amount?: string
  currency?: string
  issuer?: string
}
XrplDestinationTag
{
  tag: number
}
XummTranslation
{
  uuid: string
}
XrplSecret
{
  secretType: SecretType
  familySeed?: string
  mnemonic?: string
  hexPrivateKey?: string
}

The SecretType (enum) can be one of:

{ FamilySeed, Hex, Mnemonic }
XrplSignedTransaction
{
  txblob: string
}
XrplTransactionHash
{
  txhash: string
}
XrplTransactionTemplate
{
  jsonhex: string
}
XummPairingToken
{
  token: string
}
XummPayloadReference
{
  uuid: string
}
PayId
{
  payId: string,
  url: string
}

About

JS/TS lib to decode strings for the xrpl-labs.com XUMM app

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published