9f8f99ac3fd8c55d90acacc0b36b29b36da80b095d72f81efa7ff11fea5a4059f7956dbb99760bdace4f536532d92884ce547078ceb18b44a4ec94d4199c0c 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.mkdirpManual = exports.mkdirpManualSync = void 0;
  4. const path_1 = require("path");
  5. const opts_arg_js_1 = require("./opts-arg.js");
  6. const mkdirpManualSync = (path, options, made) => {
  7. const parent = (0, path_1.dirname)(path);
  8. const opts = { ...(0, opts_arg_js_1.optsArg)(options), recursive: false };
  9. if (parent === path) {
  10. try {
  11. return opts.mkdirSync(path, opts);
  12. }
  13. catch (er) {
  14. // swallowed by recursive implementation on posix systems
  15. // any other error is a failure
  16. const fer = er;
  17. if (fer && fer.code !== 'EISDIR') {
  18. throw er;
  19. }
  20. return;
  21. }
  22. }
  23. try {
  24. opts.mkdirSync(path, opts);
  25. return made || path;
  26. }
  27. catch (er) {
  28. const fer = er;
  29. if (fer && fer.code === 'ENOENT') {
  30. return (0, exports.mkdirpManualSync)(path, opts, (0, exports.mkdirpManualSync)(parent, opts, made));
  31. }
  32. if (fer && fer.code !== 'EEXIST' && fer && fer.code !== 'EROFS') {
  33. throw er;
  34. }
  35. try {
  36. if (!opts.statSync(path).isDirectory())
  37. throw er;
  38. }
  39. catch (_) {
  40. throw er;
  41. }
  42. }
  43. };
  44. exports.mkdirpManualSync = mkdirpManualSync;
  45. exports.mkdirpManual = Object.assign(async (path, options, made) => {
  46. const opts = (0, opts_arg_js_1.optsArg)(options);
  47. opts.recursive = false;
  48. const parent = (0, path_1.dirname)(path);
  49. if (parent === path) {
  50. return opts.mkdirAsync(path, opts).catch(er => {
  51. // swallowed by recursive implementation on posix systems
  52. // any other error is a failure
  53. const fer = er;
  54. if (fer && fer.code !== 'EISDIR') {
  55. throw er;
  56. }
  57. });
  58. }
  59. return opts.mkdirAsync(path, opts).then(() => made || path, async (er) => {
  60. const fer = er;
  61. if (fer && fer.code === 'ENOENT') {
  62. return (0, exports.mkdirpManual)(parent, opts).then((made) => (0, exports.mkdirpManual)(path, opts, made));
  63. }
  64. if (fer && fer.code !== 'EEXIST' && fer.code !== 'EROFS') {
  65. throw er;
  66. }
  67. return opts.statAsync(path).then(st => {
  68. if (st.isDirectory()) {
  69. return made;
  70. }
  71. else {
  72. throw er;
  73. }
  74. }, () => {
  75. throw er;
  76. });
  77. });
  78. }, { sync: exports.mkdirpManualSync });
  79. //# sourceMappingURL=mkdirp-manual.js.map