367e825d5450e429788a7a6a5e9abd69f3a346348acbcb1ec0b703b895012e20676ad3d56b93e9e708fcc2243a049e54cac4aeed7b260a0b8971ad186abd35 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { dirname } from 'path';
  2. import { findMade, findMadeSync } from './find-made.js';
  3. import { mkdirpManual, mkdirpManualSync } from './mkdirp-manual.js';
  4. import { optsArg } from './opts-arg.js';
  5. export const mkdirpNativeSync = (path, options) => {
  6. const opts = optsArg(options);
  7. opts.recursive = true;
  8. const parent = dirname(path);
  9. if (parent === path) {
  10. return opts.mkdirSync(path, opts);
  11. }
  12. const made = findMadeSync(opts, path);
  13. try {
  14. opts.mkdirSync(path, opts);
  15. return made;
  16. }
  17. catch (er) {
  18. const fer = er;
  19. if (fer && fer.code === 'ENOENT') {
  20. return mkdirpManualSync(path, opts);
  21. }
  22. else {
  23. throw er;
  24. }
  25. }
  26. };
  27. export const mkdirpNative = Object.assign(async (path, options) => {
  28. const opts = { ...optsArg(options), recursive: true };
  29. const parent = dirname(path);
  30. if (parent === path) {
  31. return await opts.mkdirAsync(path, opts);
  32. }
  33. return findMade(opts, path).then((made) => opts
  34. .mkdirAsync(path, opts)
  35. .then(m => made || m)
  36. .catch(er => {
  37. const fer = er;
  38. if (fer && fer.code === 'ENOENT') {
  39. return mkdirpManual(path, opts);
  40. }
  41. else {
  42. throw er;
  43. }
  44. }));
  45. }, { sync: mkdirpNativeSync });
  46. //# sourceMappingURL=mkdirp-native.js.map