@gear-js/api
Version:
A JavaScript library that provides functionality to connect GEAR Component APIs.
56 lines (52 loc) • 2.15 kB
JavaScript
;
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;