|
|
@@ -15,18 +15,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
const axios_1 = __importDefault(require("axios"));
|
|
|
const genbank_parser_1 = __importDefault(require("genbank-parser"));
|
|
|
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
|
-const jsonata_1 = __importDefault(require("jsonata"));
|
|
|
+const jsonpath_plus_1 = require("jsonpath-plus");
|
|
|
const getEsearch = (params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
const endpoint = (params === null || params === void 0 ? void 0 : params.endpoint) ? params.endpoint : 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi';
|
|
|
const query = (params === null || params === void 0 ? void 0 : params.query) || '';
|
|
|
const allowedParams = ['id', 'db', 'retmode', 'rettype'];
|
|
|
- // console.log('query :', `${endpoint}?${Object.keys(params).flatMap(k => allowedParams.includes(k) ? k + '=' + params[k] : []).join('&')}`);
|
|
|
const response = yield axios_1.default.get(`${endpoint}?${Object.keys(params).flatMap(k => allowedParams.includes(k) ? k + '=' + params[k] : []).join('&')}`);
|
|
|
let results = Array.isArray(response.data) ? response.data.join('') : response.data;
|
|
|
if (params === null || params === void 0 ? void 0 : params.retmode) {
|
|
|
switch (params.retmode) {
|
|
|
case 'xml':
|
|
|
- const parser = new fast_xml_parser_1.XMLParser({ ignoreAttributes: false, alwaysCreateTextNode: false, attributeNamePrefix: "attr-" });
|
|
|
+ const parser = new fast_xml_parser_1.XMLParser({
|
|
|
+ ignoreAttributes: false,
|
|
|
+ alwaysCreateTextNode: false,
|
|
|
+ attributeNamePrefix: "",
|
|
|
+ textNodeName: "value",
|
|
|
+ allowBooleanAttributes: true
|
|
|
+ });
|
|
|
results = parser.parse(results);
|
|
|
break;
|
|
|
case 'gb':
|
|
|
@@ -36,8 +41,10 @@ const getEsearch = (params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ // https://docs.jsonata.org/simple
|
|
|
+ // if (query !== '') results = jsonata(query).evaluate(results)
|
|
|
if (query !== '')
|
|
|
- results = (0, jsonata_1.default)(query).evaluate(results);
|
|
|
+ results = (0, jsonpath_plus_1.JSONPath)({ path: query, json: results });
|
|
|
return results;
|
|
|
});
|
|
|
module.exports = (params) => __awaiter(void 0, void 0, void 0, function* () { return yield getEsearch(params); });
|