forked from public/fvtt-cthulhu-eternal
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
import { dirname } from 'path';
|
|
import { findMade, findMadeSync } from './find-made.js';
|
|
import { mkdirpManual, mkdirpManualSync } from './mkdirp-manual.js';
|
|
import { optsArg } from './opts-arg.js';
|
|
export const mkdirpNativeSync = (path, options) => {
|
|
const opts = optsArg(options);
|
|
opts.recursive = true;
|
|
const parent = dirname(path);
|
|
if (parent === path) {
|
|
return opts.mkdirSync(path, opts);
|
|
}
|
|
const made = findMadeSync(opts, path);
|
|
try {
|
|
opts.mkdirSync(path, opts);
|
|
return made;
|
|
}
|
|
catch (er) {
|
|
const fer = er;
|
|
if (fer && fer.code === 'ENOENT') {
|
|
return mkdirpManualSync(path, opts);
|
|
}
|
|
else {
|
|
throw er;
|
|
}
|
|
}
|
|
};
|
|
export const mkdirpNative = Object.assign(async (path, options) => {
|
|
const opts = { ...optsArg(options), recursive: true };
|
|
const parent = dirname(path);
|
|
if (parent === path) {
|
|
return await opts.mkdirAsync(path, opts);
|
|
}
|
|
return findMade(opts, path).then((made) => opts
|
|
.mkdirAsync(path, opts)
|
|
.then(m => made || m)
|
|
.catch(er => {
|
|
const fer = er;
|
|
if (fer && fer.code === 'ENOENT') {
|
|
return mkdirpManual(path, opts);
|
|
}
|
|
else {
|
|
throw er;
|
|
}
|
|
}));
|
|
}, { sync: mkdirpNativeSync });
|
|
//# sourceMappingURL=mkdirp-native.js.map
|