@taquito/utils
Version:
Encoding, crypto, and utility helpers for Taquito.
237 lines (236 loc) • 8.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidationResult = void 0;
exports.isValidPrefixedValue = isValidPrefixedValue;
exports.validateAddress = validateAddress;
exports.validateChain = validateChain;
exports.validateContractAddress = validateContractAddress;
exports.validateKeyHash = validateKeyHash;
exports.validateSignature = validateSignature;
exports.validatePublicKey = validatePublicKey;
exports.validateOperation = validateOperation;
exports.validateProtocol = validateProtocol;
exports.validateBlock = validateBlock;
exports.validateSpendingKey = validateSpendingKey;
exports.validateSmartRollupAddress = validateSmartRollupAddress;
const constants_1 = require("./constants");
const encoding_1 = require("./encoding");
const core_1 = require("@taquito/core");
var core_2 = require("@taquito/core");
Object.defineProperty(exports, "ValidationResult", { enumerable: true, get: function () { return core_2.ValidationResult; } });
/**
* Used to check if a value has one of the allowed prefixes.
* @returns true if the value has one of the allowed prefixes, false otherwise
* @example
* ```
* import { isValidPrefixedValue } from '@taquito/utils';
* const value = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'
* const isValid = isValidPrefixedValue(value, [PrefixV2.Ed25519PublicKeyHash])
* console.log(isValid) // true
* ```
*/
function isValidPrefixedValue(value, prefixes) {
return validatePrefixedValue(value, prefixes) === core_1.ValidationResult.VALID;
}
/**
* This function is called by the validation functions ([[validateAddress]], [[validateChain]], [[validateContractAddress]], [[validateKeyHash]], [[validateSignature]], [[validatePublicKey]]).
* Verify if the value can be decoded or return `1` (INVALID_CHECKSUM) / `5` (INVALID_ENCODING), then check if the prefix is valid or allowed or return `0` (NO_PREFIX_MATCHED) / `4` (PREFIX_NOT_ALLOWED)
* If all checks pass, return `3` (VALID).
* @param value Value to validate
* @param prefixes prefix the value should have
* @returns 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
* @example
* ```
* import { validatePrefixedValue } from '@taquito/utils';
* const value = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'
* const validation = validatePrefixedValue(value, [PrefixV2.Ed25519PublicKeyHash])
* console.log(validation) // 3
* ```
*/
function validatePrefixedValue(value, prefixes) {
try {
(0, encoding_1.b58DecodeAndCheckPrefix)(value, prefixes);
}
catch (err) {
if (err instanceof core_1.ParameterValidationError && err.result !== undefined) {
return err.result;
}
return core_1.ValidationResult.OTHER;
}
return core_1.ValidationResult.VALID;
}
/**
* Used to check if an address or a contract address is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateAddress } from '@taquito/utils';
* const pkh = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'
* const validation = validateAddress(pkh)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validateAddress(value) {
const [addr] = (0, encoding_1.splitAddress)(value ?? '');
return validatePrefixedValue(addr, encoding_1.addressPrefixes);
}
/**
* Used to check if a chain id is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateChain } from '@taquito/utils';
* const chainId = 'NetXdQprcVkpaWU'
* const validation = validateChain(chainId)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validateChain(value) {
return validatePrefixedValue(value, [constants_1.PrefixV2.ChainID]);
}
/**
* Used to check if a contract address is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateContractAddress } from '@taquito/utils';
* const contractAddress = 'KT1JVErLYTgtY8uGGZ4mso2npTSxqVLDRVbC'
* const validation = validateContractAddress(contractAddress)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validateContractAddress(value) {
return validatePrefixedValue(value, [constants_1.PrefixV2.ContractHash]);
}
/**
* Used to check if a key hash is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateKeyHash } from '@taquito/utils';
* const keyHashWithoutPrefix = '1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'
* const validation = validateKeyHash(keyHashWithoutPrefix)
* console.log(validation)
* // This example return 0 which correspond to NO_PREFIX_MATCHED
* ```
*/
function validateKeyHash(value) {
return validatePrefixedValue(value, encoding_1.publicKeyHashPrefixes);
}
/**
* Used to check if a signature is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateSignature } from '@taquito/utils';
* const signature = 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg'
* const validation = validateSignature(signature)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validateSignature(value) {
return validatePrefixedValue(value, encoding_1.signaturePrefixes);
}
/**
* Used to check if a public key is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validatePublicKey } from '@taquito/utils';
* const publicKey = 'edpkvS5QFv7KRGfa3b87gg9DBpxSm3NpSwnjhUjNBQrRUUR66F7C9g'
* const validation = validatePublicKey(publicKey)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validatePublicKey(value) {
return validatePrefixedValue(value, encoding_1.publicKeyPrefixes);
}
/**
* Used to check if an operation hash is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateOperation } from '@taquito/utils';
* const operationHash = 'oo6JPEAy8VuMRGaFuMmLNFFGdJgiaKfnmT1CpHJfKP3Ye5ZahiP'
* const validation = validateOperation(operationHash)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validateOperation(value) {
return validatePrefixedValue(value, [constants_1.PrefixV2.OperationHash]);
}
/**
* Used to check if a protocol hash is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateProtocol } from '@taquito/utils';
* const protocolHash = 'PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx'
* const validation = validateProtocol(protocolHash)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validateProtocol(value) {
return validatePrefixedValue(value, [constants_1.PrefixV2.ProtocolHash]);
}
/**
* Used to check if a block hash is valid.
*
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
* @example
* ```
* import { validateBlock } from '@taquito/utils';
* const blockHash = 'PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx'
* const validation = validateBlock(blockHash)
* console.log(validation)
* // This example return 3 which correspond to VALID
* ```
*/
function validateBlock(value) {
return validatePrefixedValue(value, [constants_1.PrefixV2.BlockHash]);
}
/**
* Used to check if a spending key is valid.
* @returns
* 0 = NO_PREFIX_MATCHED, 1 = INVALID_CHECKSUM, 2 = INVALID_LENGTH, 3 = VALID, 4 = PREFIX_NOT_ALLOWED, 5 = INVALID_ENCODING, 6 = OTHER,
*
*/
function validateSpendingKey(value) {
return validatePrefixedValue(value, [constants_1.PrefixV2.SaplingSpendingKey]);
}
function validateSmartRollupAddress(value) {
return validatePrefixedValue(value, [constants_1.PrefixV2.SmartRollupHash]);
}