UNPKG

ox

Version:

Ethereum Standard Library

67 lines 2.65 kB
import { execTyped } from '../regex.js'; // https://regexr.com/7gmok const errorSignatureRegex = /^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/; export function isErrorSignature(signature) { return errorSignatureRegex.test(signature); } export function execErrorSignature(signature) { return execTyped(errorSignatureRegex, signature); } // https://regexr.com/7gmoq const eventSignatureRegex = /^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/; export function isEventSignature(signature) { return eventSignatureRegex.test(signature); } export function execEventSignature(signature) { return execTyped(eventSignatureRegex, signature); } // https://regexr.com/7gmot const functionSignatureRegex = /^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\s?\((?<returns>.*?)\))?$/; export function isFunctionSignature(signature) { return functionSignatureRegex.test(signature); } export function execFunctionSignature(signature) { return execTyped(functionSignatureRegex, signature); } // https://regexr.com/7gmp3 const structSignatureRegex = /^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?<properties>.*?)\}$/; export function isStructSignature(signature) { return structSignatureRegex.test(signature); } export function execStructSignature(signature) { return execTyped(structSignatureRegex, signature); } // https://regexr.com/78u01 const constructorSignatureRegex = /^constructor\((?<parameters>.*?)\)(?:\s(?<stateMutability>payable{1}))?$/; export function isConstructorSignature(signature) { return constructorSignatureRegex.test(signature); } export function execConstructorSignature(signature) { return execTyped(constructorSignatureRegex, signature); } // https://regexr.com/7srtn const fallbackSignatureRegex = /^fallback\(\) external(?:\s(?<stateMutability>payable{1}))?$/; export function isFallbackSignature(signature) { return fallbackSignatureRegex.test(signature); } export function execFallbackSignature(signature) { return execTyped(fallbackSignatureRegex, signature); } // https://regexr.com/78u1k const receiveSignatureRegex = /^receive\(\) external payable$/; export function isReceiveSignature(signature) { return receiveSignatureRegex.test(signature); } export const modifiers = new Set([ 'memory', 'indexed', 'storage', 'calldata', ]); export const eventModifiers = new Set(['indexed']); export const functionModifiers = new Set([ 'calldata', 'memory', 'storage', ]); //# sourceMappingURL=signatures.js.map