(fs, p, callback)
| 596 | * @returns {void} |
| 597 | */ |
| 598 | const mkdirp = (fs, p, callback) => { |
| 599 | fs.mkdir(p, (err) => { |
| 600 | if (err) { |
| 601 | if (err.code === "ENOENT") { |
| 602 | const dir = dirname(fs, p); |
| 603 | if (dir === p) { |
| 604 | callback(err); |
| 605 | return; |
| 606 | } |
| 607 | mkdirp(fs, dir, (err) => { |
| 608 | if (err) { |
| 609 | callback(err); |
| 610 | return; |
| 611 | } |
| 612 | fs.mkdir(p, (err) => { |
| 613 | if (err) { |
| 614 | // EEXIST: parent already created it; EISDIR: memfs/BSD for an |
| 615 | // existing dir such as the root "/" (#10544) |
| 616 | if (err.code === "EEXIST" || err.code === "EISDIR") { |
| 617 | callback(); |
| 618 | return; |
| 619 | } |
| 620 | callback(err); |
| 621 | return; |
| 622 | } |
| 623 | callback(); |
| 624 | }); |
| 625 | }); |
| 626 | return; |
| 627 | } else if (err.code === "EEXIST" || err.code === "EISDIR") { |
| 628 | callback(); |
| 629 | return; |
| 630 | } |
| 631 | callback(err); |
| 632 | return; |
| 633 | } |
| 634 | callback(); |
| 635 | }); |
| 636 | }; |
| 637 | |
| 638 | /** |
| 639 | * Processes the provided f. |
no test coverage detected