UNPKG

@gear-js/api

Version:

A JavaScript library that provides functionality to connect GEAR Component APIs.

56 lines (52 loc) 2.15 kB
'use strict'; var util = require('@polkadot/util'); var types = require('@polkadot/types'); var validation_errors = require('../errors/validation.errors.js'); function validateValue(value, api) { if (!value) return; const existentialDeposit = api.existentialDeposit; const bigintValue = value instanceof Uint8Array ? util.u8aToBigInt(value) : value instanceof types.u128 || value instanceof util.BN ? BigInt(value.toString()) : BigInt(value); if (bigintValue > 0 && bigintValue < existentialDeposit.toBigInt()) { throw new validation_errors.ValidationError(`Value less than minimal. Minimal value: ${existentialDeposit.toHuman()}`); } } function validateGasLimit(gas, api) { if (gas === undefined) throw new validation_errors.ValidationError("Gas limit doesn't specified"); const bigintGas = gas instanceof Uint8Array ? util.u8aToBigInt(gas) : gas instanceof types.u64 || gas instanceof util.BN ? BigInt(gas.toString()) : BigInt(gas); if (bigintGas > api.blockGasLimit.toBigInt()) { throw new validation_errors.ValidationError(`GasLimit too high. Maximum gasLimit value is ${api.blockGasLimit.toHuman()}`); } } async function validateCodeId(codeId, api) { if (await api.code.exists(codeId)) { throw new validation_errors.ValidationError('Code already exists'); } } async function validateProgramId(programId, api) { const isExist = await api.program.exists(programId); if (!isExist) { throw new validation_errors.ValidationError(`Program with id ${programId} doesn't exist`); } } async function validateMailboxItem(account, messageId, api) { const mailbox = await api.mailbox.read(account, messageId); if (!mailbox) { throw new Error(`There is no message with id ${messageId} in the mailbox`); } return mailbox[0]; } exports.validateCodeId = validateCodeId; exports.validateGasLimit = validateGasLimit; exports.validateMailboxItem = validateMailboxItem; exports.validateProgramId = validateProgramId; exports.validateValue = validateValue;