$30 GRAYBYTE WORDPRESS FILE MANAGER $46

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.157
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/opt/alt/alt-nodejs24/root/usr/lib/node_modules/npm/node_modules.bundled/tar/dist/esm/

HOME
Current File : /opt/alt/alt-nodejs24/root/usr/lib/node_modules/npm/node_modules.bundled/tar/dist/esm//mkdir.js
import { chownr, chownrSync } from 'chownr';
import fs from 'node:fs';
import fsp from 'node:fs/promises';
import path from 'node:path';
import { CwdError } from './cwd-error.js';
import { normalizeWindowsPath } from './normalize-windows-path.js';
import { SymlinkError } from './symlink-error.js';
const checkCwd = (dir, cb) => {
    fs.stat(dir, (er, st) => {
        if (er || !st.isDirectory()) {
            er = new CwdError(dir, er?.code || 'ENOTDIR');
        }
        cb(er);
    });
};
/**
 * Wrapper around fs/promises.mkdir for tar's needs.
 *
 * The main purpose is to avoid creating directories if we know that
 * they already exist (and track which ones exist for this purpose),
 * and prevent entries from being extracted into symlinked folders,
 * if `preservePaths` is not set.
 */
export const mkdir = (dir, opt, cb) => {
    dir = normalizeWindowsPath(dir);
    // if there's any overlap between mask and mode,
    // then we'll need an explicit chmod
    /* c8 ignore next */
    const umask = opt.umask ?? 0o22;
    const mode = opt.mode | 0o0700;
    const needChmod = (mode & umask) !== 0;
    const uid = opt.uid;
    const gid = opt.gid;
    const doChown = typeof uid === 'number' &&
        typeof gid === 'number' &&
        (uid !== opt.processUid || gid !== opt.processGid);
    const preserve = opt.preserve;
    const unlink = opt.unlink;
    const cwd = normalizeWindowsPath(opt.cwd);
    const done = (er, created) => {
        if (er) {
            cb(er);
        }
        else {
            if (created && doChown) {
                chownr(created, uid, gid, er => done(er));
            }
            else if (needChmod) {
                fs.chmod(dir, mode, cb);
            }
            else {
                cb();
            }
        }
    };
    if (dir === cwd) {
        return checkCwd(dir, done);
    }
    if (preserve) {
        return fsp.mkdir(dir, { mode, recursive: true }).then(made => done(null, made ?? undefined), // oh, ts
        done);
    }
    const sub = normalizeWindowsPath(path.relative(cwd, dir));
    const parts = sub.split('/');
    mkdir_(cwd, parts, mode, unlink, cwd, undefined, done);
};
const mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => {
    if (!parts.length) {
        return cb(null, created);
    }
    const p = parts.shift();
    const part = normalizeWindowsPath(path.resolve(base + '/' + p));
    fs.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));
};
const onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {
    if (er) {
        fs.lstat(part, (statEr, st) => {
            if (statEr) {
                statEr.path =
                    statEr.path && normalizeWindowsPath(statEr.path);
                cb(statEr);
            }
            else if (st.isDirectory()) {
                mkdir_(part, parts, mode, unlink, cwd, created, cb);
            }
            else if (unlink) {
                fs.unlink(part, er => {
                    if (er) {
                        return cb(er);
                    }
                    fs.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));
                });
            }
            else if (st.isSymbolicLink()) {
                return cb(new SymlinkError(part, part + '/' + parts.join('/')));
            }
            else {
                cb(er);
            }
        });
    }
    else {
        created = created || part;
        mkdir_(part, parts, mode, unlink, cwd, created, cb);
    }
};
const checkCwdSync = (dir) => {
    let ok = false;
    let code = undefined;
    try {
        ok = fs.statSync(dir).isDirectory();
    }
    catch (er) {
        code = er?.code;
    }
    finally {
        if (!ok) {
            throw new CwdError(dir, code ?? 'ENOTDIR');
        }
    }
};
export const mkdirSync = (dir, opt) => {
    dir = normalizeWindowsPath(dir);
    // if there's any overlap between mask and mode,
    // then we'll need an explicit chmod
    /* c8 ignore next */
    const umask = opt.umask ?? 0o22;
    const mode = opt.mode | 0o700;
    const needChmod = (mode & umask) !== 0;
    const uid = opt.uid;
    const gid = opt.gid;
    const doChown = typeof uid === 'number' &&
        typeof gid === 'number' &&
        (uid !== opt.processUid || gid !== opt.processGid);
    const preserve = opt.preserve;
    const unlink = opt.unlink;
    const cwd = normalizeWindowsPath(opt.cwd);
    const done = (created) => {
        if (created && doChown) {
            chownrSync(created, uid, gid);
        }
        if (needChmod) {
            fs.chmodSync(dir, mode);
        }
    };
    if (dir === cwd) {
        checkCwdSync(cwd);
        return done();
    }
    if (preserve) {
        return done(fs.mkdirSync(dir, { mode, recursive: true }) ?? undefined);
    }
    const sub = normalizeWindowsPath(path.relative(cwd, dir));
    const parts = sub.split('/');
    let created = undefined;
    for (let p = parts.shift(), part = cwd; p && (part += '/' + p); p = parts.shift()) {
        part = normalizeWindowsPath(path.resolve(part));
        try {
            fs.mkdirSync(part, mode);
            created = created || part;
        }
        catch (er) {
            const st = fs.lstatSync(part);
            if (st.isDirectory()) {
                continue;
            }
            else if (unlink) {
                fs.unlinkSync(part);
                fs.mkdirSync(part, mode);
                created = created || part;
                continue;
            }
            else if (st.isSymbolicLink()) {
                return new SymlinkError(part, part + '/' + parts.join('/'));
            }
        }
    }
    return done(created);
};
//# sourceMappingURL=mkdir.js.map


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
23 Feb 2026 8.06 AM
root / root
0755
create.js
2.112 KB
23 Feb 2026 7.38 AM
root / root
0644
cwd-error.js
0.303 KB
23 Feb 2026 7.38 AM
root / root
0644
extract.js
1.652 KB
23 Feb 2026 7.38 AM
root / root
0644
get-write-flag.js
0.994 KB
23 Feb 2026 7.38 AM
root / root
0644
header.js
10.355 KB
23 Feb 2026 7.38 AM
root / root
0644
index.js
0.632 KB
23 Feb 2026 7.38 AM
root / root
0644
large-numbers.js
2.521 KB
23 Feb 2026 7.38 AM
root / root
0644
list.js
3.239 KB
23 Feb 2026 7.38 AM
root / root
0644
make-command.js
1.826 KB
23 Feb 2026 7.38 AM
root / root
0644
mkdir.js
5.604 KB
23 Feb 2026 7.38 AM
root / root
0644
mode-fix.js
0.735 KB
23 Feb 2026 7.38 AM
root / root
0644
normalize-unicode.js
0.849 KB
23 Feb 2026 7.38 AM
root / root
0644
normalize-windows-path.js
0.479 KB
23 Feb 2026 7.38 AM
root / root
0644
options.js
1.601 KB
23 Feb 2026 7.38 AM
root / root
0644
pack.js
13.516 KB
23 Feb 2026 7.38 AM
root / root
0644
package.json
0.022 KB
23 Feb 2026 7.38 AM
root / root
0644
parse.js
22.313 KB
23 Feb 2026 7.38 AM
root / root
0644
path-reservations.js
5.333 KB
23 Feb 2026 7.38 AM
root / root
0644
pax.js
4.643 KB
23 Feb 2026 7.38 AM
root / root
0644
read-entry.js
4.077 KB
23 Feb 2026 7.38 AM
root / root
0644
replace.js
7.034 KB
23 Feb 2026 7.38 AM
root / root
0644
strip-absolute-path.js
1.035 KB
23 Feb 2026 7.38 AM
root / root
0644
strip-trailing-slashes.js
0.478 KB
23 Feb 2026 7.38 AM
root / root
0644
symlink-error.js
0.381 KB
23 Feb 2026 7.38 AM
root / root
0644
types.js
1.247 KB
23 Feb 2026 7.38 AM
root / root
0644
unpack.js
29.502 KB
23 Feb 2026 7.38 AM
root / root
0644
update.js
0.982 KB
23 Feb 2026 7.38 AM
root / root
0644
warn-method.js
0.776 KB
23 Feb 2026 7.38 AM
root / root
0644
winchars.js
0.536 KB
23 Feb 2026 7.38 AM
root / root
0644
write-entry.js
22.247 KB
23 Feb 2026 7.38 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF