@pipepack/enhanced-resolver
Version:
yet, reimplement enhanced-resolve with the idea 'simple is best'.
68 lines (59 loc) • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.is = is;
exports.isFile = isFile;
exports.isDirectory = isDirectory;
exports.isFileRequest = isFileRequest;
exports.isDirectoryRequest = isDirectoryRequest;
var _path = require("path");
var _rxjs = require("rxjs");
var _constant = require("../utils/constant");
/**
* @description - creation operator, detect specific path is directory or file, pass through when yes, transparent when no
* @author - huang.jian <hjj491229492@hotmail.com>
*/
// package
// internal
// internal
// filter absolute path directly
function is(fs, absPath, identity, payload) {
return new _rxjs.Observable(subscriber => {
// only care about normal request
fs.stat(absPath).then(stat => {
if (identity === _constant.Identity.File && stat.isFile()) {
subscriber.next(payload);
} else if (identity === _constant.Identity.Directory && stat.isDirectory()) {
subscriber.next(payload);
} else {// fallback, swallow silently
}
}).catch(() => {// ignore influence on pipe, maybe better logger here
}).finally(() => {
subscriber.complete();
});
});
}
function isFile(fs, absPath, payload) {
return is(fs, absPath, _constant.Identity.File, payload);
}
function isDirectory(fs, absPath, payload) {
return is(fs, absPath, _constant.Identity.Directory, payload);
}
function isFileRequest(request, fs) {
const {
context,
referencePathName
} = request;
const absPath = (0, _path.join)(context, referencePathName);
return isFile(fs, absPath, request);
}
function isDirectoryRequest(request, fs) {
const {
context,
referencePathName
} = request;
const absPath = (0, _path.join)(context, referencePathName);
return isDirectory(fs, absPath, request);
}
//# sourceMappingURL=is.js.map