55 lines
No EOL
1.6 KiB
JavaScript
55 lines
No EOL
1.6 KiB
JavaScript
"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 = require("fs");
|
|
const debug_1 = __importDefault(require("debug"));
|
|
const log = debug_1.default('@kwsites/file-exists');
|
|
function check(path, isFile, isDirectory) {
|
|
log(`checking %s`, path);
|
|
try {
|
|
const stat = fs_1.statSync(path);
|
|
if (stat.isFile() && isFile) {
|
|
log(`[OK] path represents a file`);
|
|
return true;
|
|
}
|
|
if (stat.isDirectory() && isDirectory) {
|
|
log(`[OK] path represents a directory`);
|
|
return true;
|
|
}
|
|
log(`[FAIL] path represents something other than a file or directory`);
|
|
return false;
|
|
}
|
|
catch (e) {
|
|
if (e.code === 'ENOENT') {
|
|
log(`[FAIL] path is not accessible: %o`, e);
|
|
return false;
|
|
}
|
|
log(`[FATAL] %o`, e);
|
|
throw e;
|
|
}
|
|
}
|
|
/**
|
|
* Synchronous validation of a path existing either as a file or as a directory.
|
|
*
|
|
* @param {string} path The path to check
|
|
* @param {number} type One or both of the exported numeric constants
|
|
*/
|
|
function exists(path, type = exports.READABLE) {
|
|
return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);
|
|
}
|
|
exports.exists = exists;
|
|
/**
|
|
* Constant representing a file
|
|
*/
|
|
exports.FILE = 1;
|
|
/**
|
|
* Constant representing a folder
|
|
*/
|
|
exports.FOLDER = 2;
|
|
/**
|
|
* Constant representing either a file or a folder
|
|
*/
|
|
exports.READABLE = exports.FILE + exports.FOLDER;
|
|
//# sourceMappingURL=index.js.map
|