12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 'use strict';
- const {promisify} = require('util');
- const fs = require('fs');
- async function isType(fsStatType, statsMethodName, filePath) {
- if (typeof filePath !== 'string') {
- throw new TypeError(`Expected a string, got ${typeof filePath}`);
- }
- try {
- const stats = await promisify(fs[fsStatType])(filePath);
- return stats[statsMethodName]();
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
- throw error;
- }
- }
- function isTypeSync(fsStatType, statsMethodName, filePath) {
- if (typeof filePath !== 'string') {
- throw new TypeError(`Expected a string, got ${typeof filePath}`);
- }
- try {
- return fs[fsStatType](filePath)[statsMethodName]();
- } catch (error) {
- if (error.code === 'ENOENT') {
- return false;
- }
- throw error;
- }
- }
- exports.isFile = isType.bind(null, 'stat', 'isFile');
- exports.isDirectory = isType.bind(null, 'stat', 'isDirectory');
- exports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink');
- exports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile');
- exports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory');
- exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink');
|