github.com/ethereum-optimism/optimism@v1.7.2/packages/common-ts/src/base-service/validators.ts (about)

     1  import {
     2    str,
     3    bool,
     4    num,
     5    email,
     6    host,
     7    port,
     8    url,
     9    json,
    10    makeValidator,
    11  } from 'envalid'
    12  import { Provider } from '@ethersproject/abstract-provider'
    13  import { Signer } from '@ethersproject/abstract-signer'
    14  import { ethers } from 'ethers'
    15  
    16  import { LogLevel, logLevels } from '../common'
    17  
    18  const provider = makeValidator<Provider>((input) => {
    19    const parsed = url()._parse(input)
    20    return new ethers.providers.JsonRpcProvider(parsed)
    21  })
    22  
    23  const jsonRpcProvider = makeValidator<ethers.providers.JsonRpcProvider>(
    24    (input) => {
    25      const parsed = url()._parse(input)
    26      return new ethers.providers.JsonRpcProvider(parsed)
    27    }
    28  )
    29  
    30  const staticJsonRpcProvider =
    31    makeValidator<ethers.providers.StaticJsonRpcProvider>((input) => {
    32      const parsed = url()._parse(input)
    33      return new ethers.providers.StaticJsonRpcProvider(parsed)
    34    })
    35  
    36  const wallet = makeValidator<Signer>((input) => {
    37    if (!ethers.utils.isHexString(input)) {
    38      throw new Error(`expected wallet to be a hex string`)
    39    } else {
    40      return new ethers.Wallet(input)
    41    }
    42  })
    43  
    44  const logLevel = makeValidator<LogLevel>((input) => {
    45    if (!logLevels.includes(input as LogLevel)) {
    46      throw new Error(`expected log level to be one of ${logLevels.join(', ')}`)
    47    } else {
    48      return input as LogLevel
    49    }
    50  })
    51  
    52  const address = makeValidator<string>((input) => {
    53    if (!ethers.utils.isHexString(input, 20)) {
    54      throw new Error(`expected input to be an address: ${input}`)
    55    } else {
    56      return input as `0x${string}`
    57    }
    58  })
    59  
    60  export const validators = {
    61    str,
    62    bool,
    63    num,
    64    email,
    65    host,
    66    port,
    67    url,
    68    json,
    69    wallet,
    70    provider,
    71    jsonRpcProvider,
    72    staticJsonRpcProvider,
    73    logLevel,
    74    address,
    75  }