@pipepack/enhanced-resolver
Version:
yet, reimplement enhanced-resolve with the idea 'simple is best'.
41 lines (31 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.pickDescriptionFile = pickDescriptionFile;
exports.pickMainField = pickMainField;
var _path = require("path");
var _rxjs = require("rxjs");
var _operators = require("rxjs/operators");
var _json = require("./json");
var _assign = require("../utils/assign");
// package
// internal
/**
* try to load description file as json, pass through payload, take the highest priority description file
*/
function pickDescriptionFile(request, fs, descriptionFiles) {
return (0, _rxjs.from)(descriptionFiles).pipe((0, _operators.concatMap)(descriptionFile => (0, _json.json)(fs, (0, _path.join)(request.context, request.referencePathName, descriptionFile))), // only care about the first match
(0, _operators.take)(1));
}
/**
* compose main field into request
*/
function pickMainField(request, descriptions, mainFields) {
// 1. extract description content
return (0, _rxjs.from)(mainFields).pipe((0, _operators.filter)(field => typeof descriptions[field] === 'string'), (0, _operators.map)(field => (0, _assign.assign)(request, {
referencePathName: (0, _path.join)(request.referencePathName, descriptions[field])
})), // take priority main field
(0, _operators.take)(1));
}
//# sourceMappingURL=description-file.js.map