UNPKG

fs-extender

Version:
129 lines 4.93 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.promises = exports.ensureFile = void 0; const path_extender_1 = __importDefault(require("path-extender")); const fs = __importStar(require("../../patch")); const ensureDir = __importStar(require("./dir")); const util = __importStar(require("../util")); const utils_1 = require("@n3okill/utils"); /** @internal */ /* istanbul ignore next */ function ensureWriteStream(path, options) { return __awaiter(this, void 0, void 0, function* () { return fs.createWriteStream(path, options.streamOptions); }); } /** @internal */ function ensureWriteFile(file, options) { return __awaiter(this, void 0, void 0, function* () { const opt = { encoding: options.encoding, flag: options.flag, }; if (options.mode) { opt.mode = options.mode; } yield fs.promises.writeFile(file, utils_1.Type.isUndefined(options.data) ? "" : options.data, opt); return file; }); } /** @internal */ /* istanbul ignore next */ function createFile(file, options) { return __awaiter(this, void 0, void 0, function* () { const dirOpt = { /*fs: options.fs*/ }; if (utils_1.Type.isNumeric(options.dirMode)) { dirOpt.mode = options.dirMode; } yield ensureDir.promises.ensureDir(path_extender_1.default.dirname(file), dirOpt); if (options.stream) { return ensureWriteStream(file, options); } else { return ensureWriteFile(file, options); } }); } function ensureFile(path, options, callback) { const opt = util.getOptionsFile(options); const cb = util.getCallback(options, callback); _ensureFile(path, opt) .then((res) => cb(null, res)) .catch((err) => cb(err)); } exports.ensureFile = ensureFile; /**@internal */ /* istanbul ignore next */ function _ensureFile(path, options) { return __awaiter(this, void 0, void 0, function* () { let stat; try { stat = yield fs.promises.stat(path); } catch (err) { return createFile(path, options); } if (stat.isFile()) { if (options.mode && (stat.mode & 0o777) !== options.mode) { yield fs.promises.chmod(path, options.mode); } if (options.stream) { return ensureWriteStream(path, options); } else if (options.flag.startsWith("a")) { return ensureWriteFile(path, options); } return path; } else { const e = new Error(`'${path}' already exists and is not a file.`); e.code = "EEXIST"; throw e; } }); } // eslint-disable-next-line @typescript-eslint/no-namespace var promises; (function (promises) { function ensureFile(path, options) { return __awaiter(this, void 0, void 0, function* () { const opt = util.getOptionsFile(options); return _ensureFile(path, opt); }); } promises.ensureFile = ensureFile; })(promises = exports.promises || (exports.promises = {})); //# sourceMappingURL=file.js.map