UNPKG

pretty-var-export

Version:

Export any value to valid and equivalent JavaScript code

89 lines (82 loc) 2.95 kB
import nullHandler from './null/nullHandler'; import undefinedHandler from './undefined/undefinedHandler'; import DateHandler from './Date/DateHandler'; import ErrorHandler from './Error/ErrorHandler'; import RegExpHandler from './RegExp/RegExpHandler'; import PromiseHandler from './Promise/PromiseHandler'; import BigIntHandler from './BigInt/BigIntHandler'; import FunctionHandler from './Function/FunctionHandler'; import SymbolHandler from './Symbol/SymbolHandler'; import StringHandler from './String/StringHandler'; import NumberHandler from './Number/NumberHandler'; import BooleanHandler from './Boolean/BooleanHandler'; import argumentsHandler from './arguments/argumentsHandler'; import ArrayHandler from './Array/ArrayHandler'; import TypedArrayHandler from './TypedArray/TypedArrayHandler'; import WeakMapHandler from './WeakMap/WeakMapHandler'; import MapHandler from './Map/MapHandler'; import SetHandler from './Set/SetHandler'; import WeakSetHandler from './WeakSet/WeakSetHandler'; import URLHandler from './URL/URLHandler'; import URLSearchParamsHandler from './URLSearchParams/URLSearchParamsHandler'; import ObjectHandler from './Object/ObjectHandler'; import EntriesHandler from './Entries/EntriesHandler'; import { Formatter } from '../types'; type Handler = { test: (value: unknown) => boolean; format: (...args: any[]) => string; }; type List = { name: string; handler: Handler; }; const defaultList: List[] = [ { name: 'null', handler: nullHandler }, { name: 'undefined', handler: undefinedHandler }, { name: 'Date', handler: DateHandler }, { name: 'Error', handler: ErrorHandler }, { name: 'RegExp', handler: RegExpHandler }, { name: 'Promise', handler: PromiseHandler }, { name: 'BigInt', handler: BigIntHandler }, { name: 'Function', handler: FunctionHandler }, { name: 'Symbol', handler: SymbolHandler }, { name: 'String', handler: StringHandler }, { name: 'Number', handler: NumberHandler }, { name: 'Boolean', handler: BooleanHandler }, { name: 'arguments', handler: argumentsHandler }, { name: 'Array', handler: ArrayHandler }, { name: 'TypedArray', handler: TypedArrayHandler }, { name: 'WeakMap', handler: WeakMapHandler }, { name: 'Map', handler: MapHandler }, { name: 'Set', handler: SetHandler }, { name: 'WeakSet', handler: WeakSetHandler }, { name: 'URL', handler: URLHandler }, { name: 'URLSearchParams', handler: URLSearchParamsHandler }, { name: 'Entries', handler: EntriesHandler }, { name: 'Object', handler: ObjectHandler }, ]; let list = [...defaultList]; const handlers = { add( name: string, handler: { test: (value: unknown) => boolean; format: Formatter; } ) { list = [{ name, handler }, ...list]; return this; }, remove(name: string) { list = list.filter(item => item.name !== name); return this; }, reset() { list = [...defaultList]; return this; }, list() { return list.map(item => item.handler); }, }; export default handlers;