forked from public/fvtt-cthulhu-eternal
34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
import { mkdir, mkdirSync, stat, statSync, } from 'fs';
|
|
export const optsArg = (opts) => {
|
|
if (!opts) {
|
|
opts = { mode: 0o777 };
|
|
}
|
|
else if (typeof opts === 'object') {
|
|
opts = { mode: 0o777, ...opts };
|
|
}
|
|
else if (typeof opts === 'number') {
|
|
opts = { mode: opts };
|
|
}
|
|
else if (typeof opts === 'string') {
|
|
opts = { mode: parseInt(opts, 8) };
|
|
}
|
|
else {
|
|
throw new TypeError('invalid options argument');
|
|
}
|
|
const resolved = opts;
|
|
const optsFs = opts.fs || {};
|
|
opts.mkdir = opts.mkdir || optsFs.mkdir || mkdir;
|
|
opts.mkdirAsync = opts.mkdirAsync
|
|
? opts.mkdirAsync
|
|
: async (path, options) => {
|
|
return new Promise((res, rej) => resolved.mkdir(path, options, (er, made) => er ? rej(er) : res(made)));
|
|
};
|
|
opts.stat = opts.stat || optsFs.stat || stat;
|
|
opts.statAsync = opts.statAsync
|
|
? opts.statAsync
|
|
: async (path) => new Promise((res, rej) => resolved.stat(path, (err, stats) => (err ? rej(err) : res(stats))));
|
|
opts.statSync = opts.statSync || optsFs.statSync || statSync;
|
|
opts.mkdirSync = opts.mkdirSync || optsFs.mkdirSync || mkdirSync;
|
|
return resolved;
|
|
};
|
|
//# sourceMappingURL=opts-arg.js.map
|