Documentation
¶
Overview ¶
Package utils provides various tools such as min/max and other usful things
Index ¶
- Constants
- Variables
- func DownloadAndStoreJSON[T any](url, filename string, cacheTTL time.Duration) (*T, error)
- func FormattedCode(verbose bool, code string) string
- func FormattedHash(verbose bool, code string) string
- func GetCacheDir(appDir string) (string, error)
- func GetConfigFn(appDir, fn string) (string, error)
- func GetDocumentsDir() (string, error)
- func GetFields(t *reflect.Type, format string, header bool) (fields []string, sep string, quote string)
- func GetTestChain() string
- func IsClientErigon(version string) bool
- func IsFuzzing() bool
- func IsPermitted() bool
- func IsServerWriter(w io.Writer) bool
- func IterateOverMap[Key comparable, Value any](ctx context.Context, errorChan chan error, target map[Key]Value, ...)
- func LowerIfHex(addr string) string
- func MakeFirstLowerCase(s string) string
- func MakeFirstUpperCase(s string) string
- func MustGetConfigFn(appDir, fn string) string
- func OpenBrowser(url string)
- func PadLeft(str string, totalLen int, pad rune) string
- func PadNum(n int, totalLen int) string
- func PadRight(str string, totalLen int, pad rune) string
- func PidExists(pid int64) (bool, error)
- func PingServer(serverUrl string) bool
- func PointerOf[T any](value T) *T
- func RemoveAny(A, B string) string
- func ResolvePath(path string) string
- func ResolveValidPath(path string) (string, error)
- func SetIsFuzzing(fuzz bool)
- func StripColors(input string) string
- func StripComments(cmd string) string
- func System(cmd string) int
- func ToValidPath(path string) string
- func Trace()
- type ChainList
- type ChainListItem
- type Explorer
- type NativeCurrency
Constants ¶
const EarliestEvmTs = 1438269971
EarliestEvmTs - The timestamp of the first Ethereum block in summer 2015 was this value. Since Ethereum was the first EVM based blockchain, all other EVM based block chains have timestamps after this. We can use this fact to distinguish between block numbers and timestamps on the command line (any number in a block range smaller than this is a blockNumber, anything larger than this is a timestamp). This breaks when the block number gets larger than 1,4 billion, which may happen when the chain shards, but not until then.
Variables ¶
var ErrDocFolderNotFound = errors.New("no documents folder found")
Functions ¶
func DownloadAndStoreJSON ¶
DownloadAndStoreJSON is a generic function that:
- Downloads from the given URL if the local file is stale.
- Stores it in the given file path.
- Unmarshals the JSON bytes into a type T and returns a *T.
T must be a Go type compatible with the JSON structure (e.g. a struct or slice).
func FormattedCode ¶
func FormattedHash ¶
func GetCacheDir ¶
GetCacheDir returns the user's (OS-specific) caching folder. If the folder is not found, an error is returned. If appDir is not empty, it is appended to the cacheDir and if the resulting folder does not exist, it is created.
func GetConfigFn ¶
GetConfigFn returns the user's (OS-specific) configuration folder. If the folder is not found, an error is returned. If appDir is not empty, it is appended to the configDir and if the resulting folder does not exist, it is created.
func GetDocumentsDir ¶
GetDocumentsDir returns the user's documents folder. The documents folder is the user's (OS-specific) home folder with the word "Documents" appended to it. If the home folder or the $HOME/Documents folder is not found, an error is returned.
func GetTestChain ¶
func GetTestChain() string
GetTestChain does not get customized per chain. We can only test against mainnet currently
func IsClientErigon ¶
IsClientErigon checks if `version` looks like Erigon
func IsPermitted ¶
func IsPermitted() bool
func IsServerWriter ¶
IsServerWriter tries to cast `w` into `http.ResponseWriter` and returns true if the cast was successful
func IterateOverMap ¶
func IterateOverMap[Key comparable, Value any](ctx context.Context, errorChan chan error, target map[Key]Value, step stepFunc[Key, Value])
IterateOverMap distributes batches of `target` items to a pool of goroutines which execute `step` for every `target` item. Use benchmarks to make sure that concurrent iteration is faster than synchronous one.
func LowerIfHex ¶
func MakeFirstLowerCase ¶
func MakeFirstUpperCase ¶
func MustGetConfigFn ¶
MustGetConfigFn ignore errors on GetConfigFn
func OpenBrowser ¶
func OpenBrowser(url string)
func PingServer ¶
PingServer sends a GET request to the provided URL and returns true if the server responds with a 200 status code.
func RemoveAny ¶
RemoveAny returns a new string with all characters from string A that are present in string B removed. The function uses a map for efficient lookups and preserves the order of characters in A.
func ResolvePath ¶
ResolvePath returns an absolute path expanded for ~, $HOME or other env variables
func ResolveValidPath ¶
ResolveValidPath returns an absolute path expanded for ~, $HOME or other env variables
func SetIsFuzzing ¶
func SetIsFuzzing(fuzz bool)
func StripColors ¶
func StripComments ¶
func ToValidPath ¶
Types ¶
type ChainList ¶
type ChainList struct {
Chains []ChainListItem `json:"chains"`
ChainsMap map[int]*ChainListItem
}
func UpdateChainList ¶
type ChainListItem ¶
type ChainListItem struct {
Name string `json:"name"`
Chain string `json:"chain"`
Icon string `json:"icon"`
Rpc []string `json:"rpc"`
Faucets []string `json:"faucets"`
NativeCurrency NativeCurrency `json:"nativeCurrency"`
InfoURL string `json:"infoURL"`
ShortName string `json:"shortName"`
ChainID int `json:"chainId"`
NetworkID int `json:"networkId"`
Explorers []Explorer `json:"explorers"`
}
func GetChainListItem ¶
func GetChainListItem(configPath string, chainId int) *ChainListItem