1import * as _ from 'lodash-es' 5type BetLogFormatter = (arg: any, key?: string | number) => any 7export const betLogFormatters: BetLogFormatter[] = [] 9export const notFormatted = Symbol('notFormatted') 11export const betInspect = (arg: any, key?: string | number): any => { 12 for (const fmt of betLogFormatters) { 13 const result = fmt(arg, key) 14 if (result !== notFormatted) return result 17 if (_.isString(arg) && ( 18 _.startsWith(arg, 'data:') && arg.length > 100 20 return arg.slice(0, 20) + '...' 23 if (arg == 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855') return 'emptyStrSha256' 25 if (_.isString(arg) && arg.length < 40 && arg.match(/\+\d{2}\:\d{2}$/)) { 26 arg = LuxDt.fromISO(arg) 28 if (arg?.isLuxonDuration) { 31 if (arg?.isLuxonInterval) { 32 return _.map([arg.start, arg.end], betInspect) 34 if (arg?.isLuxonDateTime) { 35 const {invalidReason} = arg 37 return betInspect({invalidReason}) 39 return 'lxdt' + arg.toISO() 42 return 'jsdt' + betInspect(LuxDt.fromJSDate(arg)) 46 return _.map(arg, betInspect) 48 if (_.isPlainObject(arg)) return _.mapValues(arg, betInspect)