This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import EIP712Domain from "eth-typed-data"; | |
import BigNumber from "bignumber.js"; | |
import * as ethUtil from 'ethereumjs-util'; | |
import { ethers } from "ethers"; | |
import axios from "axios"; | |
/* | |
* Safe relay service example | |
* * * * * * * * * * * * * * * * * * * */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const minute = 60; | |
const hour = minute * 60; | |
const day = hour * 24; | |
const week = day * 7; | |
const month = day * 30; | |
const year = day * 365; | |
/** | |
* Convert a date to a relative time string, such as | |
* "a minute ago", "in 2 hours", "yesterday", "3 months ago", etc. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// from https://twitter.com/Steve8708/status/1504131981444980739 | |
// simplified to a function body of 8 tidy lines | |
// no loop needed, no 2d array of 3-tuples needed | |
// just 2 arrays, a findIndex call, and some indexing :) | |
export function getRelativeTimeString( | |
date: Date | number, | |
lang = "en" | |
): string { | |
const timeMs = typeof date === "number" ? date : date.getTime(); |
OlderNewer