@meteor-it/fs
Advanced tools
Comparing version 1.1.7 to 1.1.8
@@ -23,2 +23,4 @@ /// <reference types="node" /> | ||
}>; | ||
export declare function mkdir(pathStr: string, recursive?: boolean): Promise<void>; | ||
export declare function unlink(pathStr: string, recursive?: boolean): Promise<void>; | ||
/** | ||
@@ -25,0 +27,0 @@ * Write text to file |
118
index.js
@@ -1,9 +0,4 @@ | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const fs_1 = __importDefault(require("fs")); | ||
const path_1 = __importDefault(require("path")); | ||
const utils_1 = require("@meteor-it/utils"); | ||
import fsNative from 'fs'; | ||
import path from 'path'; | ||
import { asyncEach } from '@meteor-it/utils'; | ||
/** | ||
@@ -29,6 +24,5 @@ * Returns true if path is a valid data url | ||
*/ | ||
async function readDir(dir) { | ||
return await fs_1.default.promises.readdir(dir); | ||
export async function readDir(dir) { | ||
return await fsNative.promises.readdir(dir); | ||
} | ||
exports.readDir = readDir; | ||
/** | ||
@@ -38,27 +32,63 @@ * Read file or parse data url | ||
*/ | ||
async function readFile(file) { | ||
export async function readFile(file) { | ||
if (isDataUrl(file)) | ||
return parseDataUrl(file).data; | ||
return await fs_1.default.promises.readFile(file); | ||
return await fsNative.promises.readFile(file); | ||
} | ||
exports.readFile = readFile; | ||
async function stat(file) { | ||
return await fs_1.default.promises.stat(file); | ||
export async function stat(file) { | ||
return await fsNative.promises.stat(file); | ||
} | ||
exports.stat = stat; | ||
async function open(file, mode, access) { | ||
return await fs_1.default.promises.open(file, mode, access); | ||
export async function open(file, mode, access) { | ||
return await fsNative.promises.open(file, mode, access); | ||
} | ||
exports.open = open; | ||
async function read(fd, buffer, offset, length, position) { | ||
return await fs_1.default.promises.read(fd, buffer, offset, length, position); | ||
export async function read(fd, buffer, offset, length, position) { | ||
return await fsNative.promises.read(fd, buffer, offset, length, position); | ||
} | ||
exports.read = read; | ||
export async function mkdir(pathStr, recursive = false) { | ||
pathStr = path.resolve(pathStr); | ||
if (recursive) { | ||
// TODO: there is recursive option in new versions of node.js, | ||
// check for availability of them | ||
// TODO: Avoid recursion | ||
try { | ||
return await mkdir(pathStr); | ||
} | ||
catch (e) { | ||
if (e.code === 'ENOENT') { | ||
await mkdir(path.dirname(pathStr), true); | ||
return await mkdir(pathStr); | ||
} | ||
else if (!(await exists(pathStr))) { | ||
throw e; | ||
} | ||
else { | ||
// Success | ||
return; | ||
} | ||
} | ||
} | ||
else { | ||
return await fsNative.promises.mkdir(pathStr); | ||
} | ||
} | ||
export async function unlink(pathStr, recursive = false) { | ||
pathStr = path.resolve(pathStr); | ||
if (recursive) { | ||
// Empty all dirs | ||
await walkDir(pathStr).then(files => Promise.all(files.map((n) => unlink(n)))); | ||
// TODO: Remove empty directories | ||
} | ||
else { | ||
if (await isDirectory(pathStr)) { | ||
return await fsNative.promises.rmdir(pathStr); | ||
} | ||
await fsNative.promises.unlink(pathStr); | ||
} | ||
} | ||
/** | ||
* Write text to file | ||
*/ | ||
async function writeFile(filename, text) { | ||
return await fs_1.default.promises.writeFile(filename, text); | ||
export async function writeFile(filename, text) { | ||
return await fsNative.promises.writeFile(filename, text); | ||
} | ||
exports.writeFile = writeFile; | ||
/** | ||
@@ -69,3 +99,3 @@ * Walk directory | ||
*/ | ||
async function walkDir(dir, cb) { | ||
export async function walkDir(dir, cb) { | ||
if (!await exists(dir)) { | ||
@@ -80,8 +110,8 @@ throw new Error('No such file or directory: ' + dir); | ||
cb = (file, dir) => { | ||
returnValue.push(dir + path_1.default.sep + file); | ||
returnValue.push(dir + path.sep + file); | ||
}; | ||
} | ||
let dirList = []; | ||
await utils_1.asyncEach(await readDir(dir), async (file) => { | ||
let pathStr = dir + path_1.default.sep + file; | ||
await asyncEach(await readDir(dir), async (file) => { | ||
let pathStr = dir + path.sep + file; | ||
if (await isFile(pathStr)) { | ||
@@ -94,4 +124,4 @@ cb(file, dir); | ||
}); | ||
await utils_1.asyncEach(dirList, async (dirLevelDown) => { | ||
await walkDir(dir + path_1.default.sep + dirLevelDown, cb); | ||
await asyncEach(dirList, async (dirLevelDown) => { | ||
await walkDir(dir + path.sep + dirLevelDown, cb); | ||
}); | ||
@@ -103,9 +133,8 @@ if (shouldReturn) { | ||
} | ||
exports.walkDir = walkDir; | ||
/** | ||
* Check if file exists | ||
*/ | ||
async function exists(file) { | ||
export async function exists(file) { | ||
try { | ||
let result = await fs_1.default.promises.access(file, fs_1.default.constants.F_OK); | ||
let result = await fsNative.promises.access(file, fsNative.constants.F_OK); | ||
return result === undefined; | ||
@@ -118,3 +147,2 @@ } | ||
} | ||
exports.exists = exists; | ||
/** | ||
@@ -124,28 +152,24 @@ * Is path a file | ||
*/ | ||
async function isFile(path) { | ||
export async function isFile(path) { | ||
return (await stat(path)).isFile(); | ||
} | ||
exports.isFile = isFile; | ||
/** | ||
* Is path a directory | ||
*/ | ||
async function isDirectory(path) { | ||
export async function isDirectory(path) { | ||
return (await stat(path)).isDirectory(); | ||
} | ||
exports.isDirectory = isDirectory; | ||
/** | ||
* Wrapper to fs function | ||
*/ | ||
function getReadStream(path, options = {}) { | ||
return fs_1.default.createReadStream(path, options); | ||
export function getReadStream(path, options = {}) { | ||
return fsNative.createReadStream(path, options); | ||
} | ||
exports.getReadStream = getReadStream; | ||
/** | ||
* Wrapper to fs function | ||
*/ | ||
function getWriteStream(path, options = {}) { | ||
return fs_1.default.createWriteStream(path, options); | ||
export function getWriteStream(path, options = {}) { | ||
return fsNative.createWriteStream(path, options); | ||
} | ||
exports.getWriteStream = getWriteStream; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInhyZXN0L25vZGVfbW9kdWxlcy9AbWV0ZW9yLWl0L2ZzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQXFDO0FBQ3JDLGdEQUF3QjtBQUN4Qiw0Q0FBNkM7QUFHN0M7OztHQUdHO0FBQ0gsU0FBUyxTQUFTLENBQUMsSUFBWTtJQUM5QixPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3hELENBQUM7QUFNRDs7O0dBR0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxJQUFZO0lBQ2pDLE9BQU87UUFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO0tBQzlELENBQUE7QUFDRixDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsT0FBTyxDQUFDLEdBQVc7SUFDeEMsT0FBTyxNQUFNLFlBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFGRCwwQkFFQztBQUNEOzs7R0FHRztBQUNJLEtBQUssVUFBVSxRQUFRLENBQUMsSUFBWTtJQUMxQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDbEIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hDLE9BQU8sTUFBTSxZQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBSkQsNEJBSUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUFDLElBQVk7SUFDdEMsT0FBTyxN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QUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1gscURBQXFEO1FBQ3JELE9BQU8sS0FBSyxDQUFDO0tBQ2I7QUFDRixDQUFDO0FBUkQsd0JBUUM7QUFFRDs7O0dBR0c7QUFDSSxLQUFLLFVBQVUsTUFBTSxDQUFDLElBQVk7SUFDeEMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQUZELHdCQUVDO0FBQ0Q7O0dBRUc7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDN0MsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDekMsQ0FBQztBQUZELGtDQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFO0lBQ3ZELE9BQU8sWUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRkQsc0NBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBTyxHQUFHLEVBQUU7SUFDeEQsT0FBTyxZQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFGRCx3Q0FFQyIsImZpbGUiOiJ4cmVzdC9ub2RlX21vZHVsZXMvQG1ldGVvci1pdC9mcy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmc05hdGl2ZSwgeyBTdGF0cyB9IGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgYXN5bmNFYWNoIH0gZnJvbSAnQG1ldGVvci1pdC91dGlscyc7XG5cbnR5cGUgRmlsZUhhbmRsZSA9IGZzTmF0aXZlLnByb21pc2VzLkZpbGVIYW5kbGU7XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBwYXRoIGlzIGEgdmFsaWQgZGF0YSB1cmxcbiAqIEBwYXJhbSBwYXRoIHBhdGhcbiAqL1xuZnVuY3Rpb24gaXNEYXRhVXJsKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gL15kYXRhOi4rXFwvLis7YmFzZTY0LC8udGVzdChwYXRoLnN1YnN0cigwLCAyNjgpKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQYXJzZWREYXRhVXJsIHtcblx0bWltZTogc3RyaW5nLFxuXHRkYXRhOiBCdWZmZXJcbn1cbi8qKlxuICogUmV0dXJucyBtaW1lIGFuZCBkYXRhIG9mIGRhdGF1cmxcbiAqIEBwYXJhbSBwYXRoIERhdGEgdXJsXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGF0YVVybChwYXRoOiBzdHJpbmcpOiBJUGFyc2VkRGF0YVVybCB7XG5cdHJldHVybiB7XG5cdFx0bWltZTogcGF0aC5zbGljZSg1LCBwYXRoLmluZGV4T2YoJzsnKSksXG5cdFx0ZGF0YTogQnVmZmVyLmZyb20ocGF0aC5zbGljZShwYXRoLmluZGV4T2YoJywnKSArIDEpLCAnYmFzZTY0Jylcblx0fVxufVxuXG4vKipcbiAqIEdldCBhbGwgZmlsZXMgaW4gZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRGlyKGRpcjogc3RyaW5nKSB7XG5cdHJldHVybiBhd2FpdCBmc05hdGl2ZS5wcm9taXNlcy5yZWFkZGlyKGRpcik7XG59XG4vKipcbiAqIFJlYWQgZmlsZSBvciBwYXJzZSBkYXRhIHVybFxuICogQHBhcmFtIGZpbGUgUGF0aCB0byBmaWxlIHRvIHJlYWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRGaWxlKGZpbGU6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPiB7XG5cdGlmIChpc0RhdGFVcmwoZmlsZSkpXG5cdFx0cmV0dXJuIHBhcnNlRGF0YVVybChmaWxlKS5kYXRhO1xuXHRyZXR1cm4gYXdhaXQgZnNOYXRpdmUucHJvbWlzZXMucmVhZEZpbGUoZmlsZSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGF0KGZpbGU6IHN0cmluZyk6IFByb21pc2U8U3RhdHM+IHtcblx0cmV0dXJuIGF3YWl0IGZzTmF0aXZlLnByb21pc2VzLnN0YXQoZmlsZSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuKGZpbGU6IHN0cmluZywgbW9kZTogc3RyaW5nLCBhY2Nlc3M6IHN0cmluZyk6IFByb21pc2U8RmlsZUhhbmRsZT4ge1xuXHRyZXR1cm4gYXdhaXQgZnNOYXRpdmUucHJvbWlzZXMub3BlbihmaWxlLCBtb2RlLCBhY2Nlc3MpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZChmZDogRmlsZUhhbmRsZSwgYnVmZmVyOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgcG9zaXRpb246IG51bWJlcikge1xuXHRyZXR1cm4gYXdhaXQgZnNOYXRpdmUucHJvbWlzZXMucmVhZChmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xufVxuXG4vKipcbiAqIFdyaXRlIHRleHQgdG8gZmlsZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB8IEJ1ZmZlcikge1xuXHRyZXR1cm4gYXdhaXQgZnNOYXRpdmUucHJvbWlzZXMud3JpdGVGaWxlKGZpbGVuYW1lLCB0ZXh0KTtcbn1cblxuLyoqXG4gKiBXYWxrIGRpcmVjdG9yeVxuICogQHBhcmFtIGRpciBEaXJlY3RvcnkgdG8gd2Fsa1xuICogQHBhcmFtIGNiIElmIHByb3ZpZGVkLCBmb3VuZCBmaWxlcyB3aWxsIHJldHVybmVkIHJlYWx0aW1lLiBJZiBub3QgLSBmdW5jdGlvbiB3aWxsIHJldHVybiBhbGwgZm91bmQgZmlsZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhbGtEaXIoZGlyOiBzdHJpbmcsIGNiPzogKGZpbGU6IHN0cmluZywgZGlyOiBzdHJpbmcpID0+IHZvaWQpOiBQcm9taXNlPHN0cmluZ1tdIHwgbnVsbD4ge1xuXHRpZiAoIWF3YWl0IGV4aXN0cyhkaXIpKSB7IHRocm93IG5ldyBFcnJvcignTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJyArIGRpcik7IH1cblx0bGV0IHJldHVyblZhbHVlOiBzdHJpbmdbXTtcblx0bGV0IHNob3VsZFJldHVybiA9IGZhbHNlO1xuXHRpZiAoIWNiKSB7XG5cdFx0cmV0dXJuVmFsdWUgPSBbXTtcblx0XHRzaG91bGRSZXR1cm4gPSB0cnVlO1xuXHRcdGNiID0gKGZpbGU6IHN0cmluZywgZGlyOiBzdHJpbmcpID0+IHtcblx0XHRcdHJldHVyblZhbHVlLnB1c2goZGlyICsgcGF0aC5zZXAgKyBmaWxlKTtcblx0XHR9O1xuXHR9XG5cdGxldCBkaXJMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXHRhd2FpdCBhc3luY0VhY2goYXdhaXQgcmVhZERpcihkaXIpLCBhc3luYyAoZmlsZTogc3RyaW5nKSA9PiB7XG5cdFx0bGV0IHBhdGhTdHIgPSBkaXIgKyBwYXRoLnNlcCArIGZpbGU7XG5cdFx0aWYgKGF3YWl0IGlzRmlsZShwYXRoU3RyKSkge1xuXHRcdFx0Y2IoZmlsZSwgZGlyKTtcblx0XHR9IGVsc2UgaWYgKGF3YWl0IGlzRGlyZWN0b3J5KHBhdGhTdHIpKSB7XG5cdFx0XHRkaXJMaXN0LnB1c2goZmlsZSk7XG5cdFx0fVxuXHR9KTtcblx0YXdhaXQgYXN5bmNFYWNoKGRpckxpc3QsIGFzeW5jIChkaXJMZXZlbERvd246IHN0cmluZykgPT4ge1xuXHRcdGF3YWl0IHdhbGtEaXIoZGlyICsgcGF0aC5zZXAgKyBkaXJMZXZlbERvd24sIGNiKTtcblx0fSk7XG5cdGlmIChzaG91bGRSZXR1cm4pIHtcblx0XHRyZXR1cm4gcmV0dXJuVmFsdWUuc29ydCgpO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGZpbGUgZXhpc3RzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGlzdHMoZmlsZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdHRyeSB7XG5cdFx0bGV0IHJlc3VsdCA9IGF3YWl0IGZzTmF0aXZlLnByb21pc2VzLmFjY2VzcyhmaWxlLCBmc05hdGl2ZS5jb25zdGFudHMuRl9PSyk7XG5cdFx0cmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gQmVjYXVzZSBvbmx5IFwiZXJyXCIgZmllbGQgaXMgcmV0dXJuZWQgaWYgbm90IGV4aXN0c1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG4vKipcbiAqIElzIHBhdGggYSBmaWxlXG4gKiBAcGFyYW0gcGF0aCBwYXRoIHRvIHRlc3RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzRmlsZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0cmV0dXJuIChhd2FpdCBzdGF0KHBhdGgpKS5pc0ZpbGUoKTtcbn1cbi8qKlxuICogSXMgcGF0aCBhIGRpcmVjdG9yeVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNEaXJlY3RvcnkocGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdHJldHVybiAoYXdhaXQgc3RhdChwYXRoKSkuaXNEaXJlY3RvcnkoKTtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIHRvIGZzIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWFkU3RyZWFtKHBhdGg6IHN0cmluZywgb3B0aW9ucyA9IHt9KSB7XG5cdHJldHVybiBmc05hdGl2ZS5jcmVhdGVSZWFkU3RyZWFtKHBhdGgsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFdyYXBwZXIgdG8gZnMgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdyaXRlU3RyZWFtKHBhdGg6IHN0cmluZywgb3B0aW9ucyA9IHt9KSB7XG5cdHJldHVybiBmc05hdGl2ZS5jcmVhdGVXcml0ZVN0cmVhbShwYXRoLCBvcHRpb25zKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInhyZXN0L25vZGVfbW9kdWxlcy9AbWV0ZW9yLWl0L2ZzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBbUIsTUFBTSxJQUFJLENBQUM7QUFDckMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc3Qzs7O0dBR0c7QUFDSCxTQUFTLFNBQVMsQ0FBQyxJQUFZO0lBQzlCLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDeEQsQ0FBQztBQU1EOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLElBQVk7SUFDakMsT0FBTztRQUNOLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUM7S0FDOUQsQ0FBQTtBQUNGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUFDLEdBQVc7SUFDeEMsT0FBTyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxJQUFZO0lBQzFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQztRQUNsQixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEMsT0FBTyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FB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ZW9yLWl0L2ZzL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzTmF0aXZlLCB7IFN0YXRzIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhc3luY0VhY2ggfSBmcm9tICdAbWV0ZW9yLWl0L3V0aWxzJztcblxudHlwZSBGaWxlSGFuZGxlID0gZnNOYXRpdmUucHJvbWlzZXMuRmlsZUhhbmRsZTtcbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHBhdGggaXMgYSB2YWxpZCBkYXRhIHVybFxuICogQHBhcmFtIHBhdGggcGF0aFxuICovXG5mdW5jdGlvbiBpc0RhdGFVcmwocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiAvXmRhdGE6LitcXC8uKztiYXNlNjQsLy50ZXN0KHBhdGguc3Vic3RyKDAsIDI2OCkpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBhcnNlZERhdGFVcmwge1xuXHRtaW1lOiBzdHJpbmcsXG5cdGRhdGE6IEJ1ZmZlclxufVxuLyoqXG4gKiBSZXR1cm5zIG1pbWUgYW5kIGRhdGEgb2YgZGF0YXVybFxuICogQHBhcmFtIHBhdGggRGF0YSB1cmxcbiAqL1xuZnVuY3Rpb24gcGFyc2VEYXRhVXJsKHBhdGg6IHN0cmluZyk6IElQYXJzZWREYXRhVXJsIHtcblx0cmV0dXJuIHtcblx0XHRtaW1lOiBwYXRoLnNsaWNlKDUsIHBhdGguaW5kZXhPZignOycpKSxcblx0XHRkYXRhOiBCdWZmZXIuZnJvbShwYXRoLnNsaWNlKHBhdGguaW5kZXhPZignLCcpICsgMSksICdiYXNlNjQnKVxuXHR9XG59XG5cbi8qKlxuICogR2V0IGFsbCBmaWxlcyBpbiBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWREaXIoZGlyOiBzdHJpbmcpIHtcblx0cmV0dXJuIGF3YWl0IGZzTmF0aXZlLnByb21pc2VzLnJlYWRkaXIoZGlyKTtcbn1cbi8qKlxuICogUmVhZCBmaWxlIG9yIHBhcnNlIGRhdGEgdXJsXG4gKiBAcGFyYW0gZmlsZSBQYXRoIHRvIGZpbGUgdG8gcmVhZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGUoZmlsZTogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcblx0aWYgKGlzRGF0YVVybChmaWxlKSlcblx0XHRyZXR1cm4gcGFyc2VEYXRhVXJsKGZpbGUpLmRhdGE7XG5cdHJldHVybiBhd2FpdCBmc05hdGl2ZS5wcm9taXNlcy5yZWFkRmlsZShmaWxlKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXQoZmlsZTogc3RyaW5nKTogUHJvbWlzZTxTdGF0cz4ge1xuXHRyZXR1cm4gYXdhaXQgZnNOYXRpdmUucHJvbWlzZXMuc3RhdChmaWxlKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW4oZmlsZTogc3RyaW5nLCBtb2RlOiBzdHJpbmcsIGFjY2Vzczogc3RyaW5nKTogUHJvbWlzZTxGaWxlSGFuZGxlPiB7XG5cdHJldHVybiBhd2FpdCBmc05hdGl2ZS5wcm9taXNlcy5vcGVuKGZpbGUsIG1vZGUsIGFjY2Vzcyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkKGZkOiBGaWxlSGFuZGxlLCBidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBwb3NpdGlvbjogbnVtYmVyKSB7XG5cdHJldHVybiBhd2FpdCBmc05hdGl2ZS5wcm9taXNlcy5yZWFkKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBta2RpcihwYXRoU3RyOiBzdHJpbmcsIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG5cdHBhdGhTdHIgPSBwYXRoLnJlc29sdmUocGF0aFN0cik7XG5cdGlmIChyZWN1cnNpdmUpIHtcblx0XHQvLyBUT0RPOiB0aGVyZSBpcyByZWN1cnNpdmUgb3B0aW9uIGluIG5ldyB2ZXJzaW9ucyBvZiBub2RlLmpzLFxuXHRcdC8vIGNoZWNrIGZvciBhdmFpbGFiaWxpdHkgb2YgdGhlbVxuXHRcdC8vIFRPRE86IEF2b2lkIHJlY3Vyc2lvblxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gYXdhaXQgbWtkaXIocGF0aFN0cik7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0aWYgKGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcblx0XHRcdFx0YXdhaXQgbWtkaXIocGF0aC5kaXJuYW1lKHBhdGhTdHIpLCB0cnVlKTtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IG1rZGlyKHBhdGhTdHIpO1xuXHRcdFx0fSBlbHNlIGlmICghKGF3YWl0IGV4aXN0cyhwYXRoU3RyKSkpIHtcblx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFN1Y2Nlc3Ncblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gYXdhaXQgZnNOYXRpdmUucHJvbWlzZXMubWtkaXIocGF0aFN0cik7XG5cdH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVubGluayhwYXRoU3RyOiBzdHJpbmcsIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG5cdHBhdGhTdHIgPSBwYXRoLnJlc29sdmUocGF0aFN0cik7XG5cdGlmIChyZWN1cnNpdmUpIHtcblx0XHQvLyBFbXB0eSBhbGwgZGlyc1xuXHRcdGF3YWl0IHdhbGtEaXIocGF0aFN0cikudGhlbihmaWxlcyA9PiBQcm9taXNlLmFsbChmaWxlcy5tYXAoKG4pID0+IHVubGluayhuKSkpKTtcblx0XHQvLyBUT0RPOiBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXNcblx0fSBlbHNlIHtcblx0XHRpZiAoYXdhaXQgaXNEaXJlY3RvcnkocGF0aFN0cikpIHtcblx0XHRcdHJldHVybiBhd2FpdCBmc05hdGl2ZS5wcm9taXNlcy5ybWRpcihwYXRoU3RyKTtcblx0XHR9XG5cdFx0YXdhaXQgZnNOYXRpdmUucHJvbWlzZXMudW5saW5rKHBhdGhTdHIpO1xuXHR9XG59XG5cbi8qKlxuICogV3JpdGUgdGV4dCB0byBmaWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUZpbGUoZmlsZW5hbWU6IHN0cmluZywgdGV4dDogc3RyaW5nIHwgQnVmZmVyKSB7XG5cdHJldHVybiBhd2FpdCBmc05hdGl2ZS5wcm9taXNlcy53cml0ZUZpbGUoZmlsZW5hbWUsIHRleHQpO1xufVxuXG4vKipcbiAqIFdhbGsgZGlyZWN0b3J5XG4gKiBAcGFyYW0gZGlyIERpcmVjdG9yeSB0byB3YWxrXG4gKiBAcGFyYW0gY2IgSWYgcHJvdmlkZWQsIGZvdW5kIGZpbGVzIHdpbGwgcmV0dXJuZWQgcmVhbHRpbWUuIElmIG5vdCAtIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFsbCBmb3VuZCBmaWxlc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2Fsa0RpcihkaXI6IHN0cmluZywgY2I/OiAoZmlsZTogc3RyaW5nLCBkaXI6IHN0cmluZykgPT4gdm9pZCk6IFByb21pc2U8c3RyaW5nW10gfCBudWxsPiB7XG5cdGlmICghYXdhaXQgZXhpc3RzKGRpcikpIHsgdGhyb3cgbmV3IEVycm9yKCdObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5OiAnICsgZGlyKTsgfVxuXHRsZXQgcmV0dXJuVmFsdWU6IHN0cmluZ1tdO1xuXHRsZXQgc2hvdWxkUmV0dXJuID0gZmFsc2U7XG5cdGlmICghY2IpIHtcblx0XHRyZXR1cm5WYWx1ZSA9IFtdO1xuXHRcdHNob3VsZFJldHVybiA9IHRydWU7XG5cdFx0Y2IgPSAoZmlsZTogc3RyaW5nLCBkaXI6IHN0cmluZykgPT4ge1xuXHRcdFx0cmV0dXJuVmFsdWUucHVzaChkaXIgKyBwYXRoLnNlcCArIGZpbGUpO1xuXHRcdH07XG5cdH1cblx0bGV0IGRpckxpc3Q6IHN0cmluZ1tdID0gW107XG5cdGF3YWl0IGFzeW5jRWFjaChhd2FpdCByZWFkRGlyKGRpciksIGFzeW5jIChmaWxlOiBzdHJpbmcpID0+IHtcblx0XHRsZXQgcGF0aFN0ciA9IGRpciArIHBhdGguc2VwICsgZmlsZTtcblx0XHRpZiAoYXdhaXQgaXNGaWxlKHBhdGhTdHIpKSB7XG5cdFx0XHRjYihmaWxlLCBkaXIpO1xuXHRcdH0gZWxzZSBpZiAoYXdhaXQgaXNEaXJlY3RvcnkocGF0aFN0cikpIHtcblx0XHRcdGRpckxpc3QucHVzaChmaWxlKTtcblx0XHR9XG5cdH0pO1xuXHRhd2FpdCBhc3luY0VhY2goZGlyTGlzdCwgYXN5bmMgKGRpckxldmVsRG93bjogc3RyaW5nKSA9PiB7XG5cdFx0YXdhaXQgd2Fsa0RpcihkaXIgKyBwYXRoLnNlcCArIGRpckxldmVsRG93biwgY2IpO1xuXHR9KTtcblx0aWYgKHNob3VsZFJldHVybikge1xuXHRcdHJldHVybiByZXR1cm5WYWx1ZS5zb3J0KCk7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgZmlsZSBleGlzdHNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4aXN0cyhmaWxlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0dHJ5IHtcblx0XHRsZXQgcmVzdWx0ID0gYXdhaXQgZnNOYXRpdmUucHJvbWlzZXMuYWNjZXNzKGZpbGUsIGZzTmF0aXZlLmNvbnN0YW50cy5GX09LKTtcblx0XHRyZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQ7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBCZWNhdXNlIG9ubHkgXCJlcnJcIiBmaWVsZCBpcyByZXR1cm5lZCBpZiBub3QgZXhpc3RzXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbi8qKlxuICogSXMgcGF0aCBhIGZpbGVcbiAqIEBwYXJhbSBwYXRoIHBhdGggdG8gdGVzdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNGaWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRyZXR1cm4gKGF3YWl0IHN0YXQocGF0aCkpLmlzRmlsZSgpO1xufVxuLyoqXG4gKiBJcyBwYXRoIGEgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0cmV0dXJuIChhd2FpdCBzdGF0KHBhdGgpKS5pc0RpcmVjdG9yeSgpO1xufVxuXG4vKipcbiAqIFdyYXBwZXIgdG8gZnMgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlYWRTdHJlYW0ocGF0aDogc3RyaW5nLCBvcHRpb25zID0ge30pIHtcblx0cmV0dXJuIGZzTmF0aXZlLmNyZWF0ZVJlYWRTdHJlYW0ocGF0aCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogV3JhcHBlciB0byBmcyBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V3JpdGVTdHJlYW0ocGF0aDogc3RyaW5nLCBvcHRpb25zID0ge30pIHtcblx0cmV0dXJuIGZzTmF0aXZlLmNyZWF0ZVdyaXRlU3RyZWFtKHBhdGgsIG9wdGlvbnMpO1xufVxuIl19 |
38
index.ts
@@ -57,2 +57,40 @@ import fsNative, { Stats } from 'fs'; | ||
export async function mkdir(pathStr: string, recursive: boolean = false): Promise<void> { | ||
pathStr = path.resolve(pathStr); | ||
if (recursive) { | ||
// TODO: there is recursive option in new versions of node.js, | ||
// check for availability of them | ||
// TODO: Avoid recursion | ||
try { | ||
return await mkdir(pathStr); | ||
} catch (e) { | ||
if (e.code === 'ENOENT') { | ||
await mkdir(path.dirname(pathStr), true); | ||
return await mkdir(pathStr); | ||
} else if (!(await exists(pathStr))) { | ||
throw e; | ||
} else { | ||
// Success | ||
return; | ||
} | ||
} | ||
} else { | ||
return await fsNative.promises.mkdir(pathStr); | ||
} | ||
} | ||
export async function unlink(pathStr: string, recursive: boolean = false) { | ||
pathStr = path.resolve(pathStr); | ||
if (recursive) { | ||
// Empty all dirs | ||
await walkDir(pathStr).then(files => Promise.all(files.map((n) => unlink(n)))); | ||
// TODO: Remove empty directories | ||
} else { | ||
if (await isDirectory(pathStr)) { | ||
return await fsNative.promises.rmdir(pathStr); | ||
} | ||
await fsNative.promises.unlink(pathStr); | ||
} | ||
} | ||
/** | ||
@@ -59,0 +97,0 @@ * Write text to file |
{ | ||
"name": "@meteor-it/fs", | ||
"version": "1.1.7", | ||
"version": "1.1.8", | ||
"description": "Wrappers for native fs module", | ||
@@ -20,3 +20,3 @@ "module": "index.mjs", | ||
}, | ||
"gitHead": "b6b1a3dc9ef4e9d34081bc2b30cdddb6dd7061b4" | ||
"gitHead": "1d959519c624e54df90813aac68afdddc1d1fc8a" | ||
} |
Sorry, the diff of this file is not supported yet
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
43109
647