mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-01-11 13:56:15 +00:00
30 lines
1021 B
TypeScript
30 lines
1021 B
TypeScript
import parse from 'parse-duration'
|
|
|
|
parse[''] = parse['s']!
|
|
parse['mo'] = parse['M'] = parse['month']!
|
|
|
|
export const parseDuration = (duration: string, defaultUnit?: parse.Units) => {
|
|
const defaultUnitValue = parse['']!
|
|
if (defaultUnit) parse[''] = parse[defaultUnit]!
|
|
const result = parse(duration, 'ms') ?? Number.NaN
|
|
parse[''] = defaultUnitValue
|
|
return result
|
|
}
|
|
|
|
export const durationToString = (duration: number) => {
|
|
if (duration === 0) return '0s'
|
|
|
|
const days = Math.floor(duration / (24 * 60 * 60 * 1000))
|
|
const hours = Math.floor((duration % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000))
|
|
const minutes = Math.floor((duration % (60 * 60 * 1000)) / (60 * 1000))
|
|
const seconds = Math.floor((duration % (60 * 1000)) / 1000)
|
|
|
|
return `${days ? `${days}d` : ''}${hours ? `${hours}h` : ''}${minutes ? `${minutes}m` : ''}${
|
|
seconds ? `${seconds}s` : ''
|
|
}`
|
|
}
|
|
|
|
export function isSafeTimeoutDuration(duration: number) {
|
|
return duration > 0 && duration < 2 ** 31 - 1
|
|
}
|