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)
- Source: https://github.com/XRPL-Labs/xumm-string-decode
- NPM package: https://www.npmjs.com/package/xumm-string-decode
- Browserified (CDN): https://cdn.jsdelivr.net/npm/xumm-string-decode/dist/browserified.js
const someString = 'https://xrplf.org//send?to=rPdvC6ccq8hCdPKSPJkPmyZ4Mi1oG2FFkT&amount=30&dt=123'
const detected = new StringTypeDetector(someString)
The sample (above) will expose these methods on detected
:
getType()
, returns one of theStringType
enum valuesgetTypeName()
, returnsStringType
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)
StringType.Invalid
StringType.XummPayloadReference
StringType.XummPairingToken
StringType.XummTranslation
StringType.XrplTransactionHash
StringType.XrplDestination
StringType.XrplDestinationTag
StringType.XrplSignedTransaction
StringType.XrplTransactionTemplate
StringType.XrplSecret
StringType.IlpStreamInstruction
StringType.PayId
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 XrplDestinationgetXrplDestinationTag()
, returns XrplDestinationTaggetXrplSecret()
, returns XrplSecretgetXummPayloadReference()
, returns XummPayloadReferencegetXummPairingToken()
, returns XummPairingTokengetXummTranslation()
, returns XummTranslationgetXrplTransactionHash()
, returns XrplTransactionHashgetXrplSignedTransaction()
, returns XrplSignedTransactiongetXrplTransactionTemplate()
, returns XrplTransactionTemplategetPayId()
, 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
{
to: string
tag?: number
invoiceid?: string
amount?: string
currency?: string
issuer?: string
}
{
tag: number
}
{
uuid: string
}
{
secretType: SecretType
familySeed?: string
mnemonic?: string
hexPrivateKey?: string
}
The
SecretType
(enum) can be one of:
{ FamilySeed, Hex, Mnemonic }
{
txblob: string
}
{
txhash: string
}
{
jsonhex: string
}
{
token: string
}
{
uuid: string
}
{
payId: string,
url: string
}