UNPKG

ox

Version:

Ethereum Standard Library

41 lines 1.86 kB
import * as z from 'zod/mini'; export const Identifier = z .string() .check(z.refine((value) => /^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(value), 'expected identifier')); export const Address = z.literal('address'); export const Bool = z.literal('bool'); export const Bytes = z .string() .check(z.refine((value) => /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(value), 'expected Solidity bytes type')); export const Function = z.literal('function'); export const String = z.literal('string'); export const Tuple = z.literal('tuple'); export const Int = z .string() .check(z.refine((value) => /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(value), 'expected Solidity integer type')); export const ArrayWithoutTuple = z .string() .check(z.refine((value) => /^(address|bool|function|string|bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?|u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?)(\[[0-9]{0,}\])+$/.test(value), 'expected Solidity array type')); export const ArrayWithTuple = z .string() .check(z.refine((value) => /^tuple(\[[0-9]{0,}\])+$/.test(value), 'expected Solidity tuple array type')); export const Array = z.union([ArrayWithTuple, ArrayWithoutTuple]); export const Type = z.union([ Address, Bool, Bytes, Function, String, Tuple, Int, Array, ]); export function isType(type) { return (type === 'address' || type === 'bool' || type === 'function' || type === 'string' || /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(type) || /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(type)); } //# sourceMappingURL=Solidity.js.map