UNPKG

@pipepack/enhanced-resolver

Version:

yet, reimplement enhanced-resolve with the idea 'simple is best'.

65 lines (52 loc) 1.71 kB
"use strict"; 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