@pipepack/enhanced-resolver
Version:
yet, reimplement enhanced-resolve with the idea 'simple is best'.
65 lines (52 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NodeResolver = void 0;
var _rxjs = require("rxjs");
var _operators = require("rxjs/operators");
var _parse = require("./operators/parse");
var _replenish = require("./operators/replenish");
var _probe = require("./operators/probe");
var _possible = require("./operators/possible");
var _as = require("./observable/as");
var _promisify = require("./utils/promisify");
/**
* @description - resolve relative module only
* @author - huang.jian <hjj491229492@hotmail.com>
*/
// package
class NodeResolver {
constructor(options) {
this.options = options;
}
async resolve(material) {
const {
fs,
mainFiles,
mainFields,
descriptionFiles,
extensions,
modules
} = this.options;
const pipeline$ = (0, _rxjs.of)(material).pipe( // parse reference path, split hash and query disturbe
(0, _parse.parse)(), // spread node module search paths
(0, _possible.possible)(fs, modules), // implement standard file detection
(0, _operators.concatMap)(request => (0, _rxjs.concat)( // consider as file
(0, _as.asFile)(request), // consider as module, which reference has standalone description file
(0, _as.asModule)(request, {
fs,
mainFields,
descriptionFiles
}), // consider as directory
(0, _as.asDirectory)(request, {
fs,
mainFiles
}))), // replenish missing extension
(0, _replenish.replenish)(extensions), // only care about file match
(0, _probe.probe)(fs));
return (0, _promisify.promisify)(pipeline$);
}
}
exports.NodeResolver = NodeResolver;
//# sourceMappingURL=NodeResolver.js.map