UNPKG

@taquito/utils

Version:

Encoding, crypto, and utility helpers for Taquito.

237 lines (236 loc) 8.81 kB
"use strict"; 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]); }