UNPKG

rimraf

Version:

A deep deletion module for node (like `rm -rf`)

49 lines • 1.54 kB
const typeOrUndef = (o, key, t) => !(key in o) || typeof o[key] === 'undefined' || typeof o[key] === t; export const isRimrafOptions = (o) => typeof o === 'object' && !!o && typeOrUndef(o, 'preserveRoot', 'boolean') && typeOrUndef(o, 'tmp', 'string') && typeOrUndef(o, 'maxRetries', 'number') && typeOrUndef(o, 'retryDelay', 'number') && typeOrUndef(o, 'backoff', 'number') && typeOrUndef(o, 'maxBackoff', 'number') && (typeOrUndef(o, 'glob', 'boolean') || ('glob' in o && typeof o.glob === 'object' && !!o.glob)) && typeOrUndef(o, 'filter', 'function'); export const assertRimrafOptions = (o) => { if (!isRimrafOptions(o)) { throw new Error('invalid rimraf options'); } }; const optArgT = (opt) => { assertRimrafOptions(opt); const { glob, ...options } = opt; if (!glob) { return options; } const globOpt = glob === true ? opt.signal ? { signal: opt.signal } : {} : opt.signal ? { signal: opt.signal, ...glob, } : glob; return { ...options, glob: { ...globOpt, // always get absolute paths from glob, to ensure // that we are referencing the correct thing. absolute: true, withFileTypes: false, }, }; }; export const optArg = (opt = {}) => optArgT(opt); export const optArgSync = (opt = {}) => optArgT(opt); //# sourceMappingURL=opt-arg.js.map