| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 'use strict';var path = require('path');var fs = require('graceful-fs');var MASK_MODE = parseInt('7777', 8);var DEFAULT_DIR_MODE = parseInt('0777', 8);function mkdirp(dirpath, customMode, callback) {  if (typeof customMode === 'function') {    callback = customMode;    customMode = undefined;  }  var mode = customMode || (DEFAULT_DIR_MODE & ~process.umask());  dirpath = path.resolve(dirpath);  fs.mkdir(dirpath, mode, onMkdir);  function onMkdir(mkdirErr) {    if (!mkdirErr) {      return fs.stat(dirpath, onStat);    }    switch (mkdirErr.code) {      case 'ENOENT': {        return mkdirp(path.dirname(dirpath), onRecurse);      }      case 'EEXIST': {        return fs.stat(dirpath, onStat);      }      default: {        return callback(mkdirErr);      }    }    function onStat(statErr, stats) {      if (statErr) {        return callback(statErr);      }      if (!stats.isDirectory()) {        return callback(mkdirErr);      }      // TODO: Is it proper to mask like this?      if ((stats.mode & MASK_MODE) === mode) {        return callback();      }      if (!customMode) {        return callback();      }      fs.chmod(dirpath, mode, callback);    }  }  function onRecurse(recurseErr) {    if (recurseErr) {      return callback(recurseErr);    }    mkdirp(dirpath, mode, callback);  }}module.exports = mkdirp;
 |