UNPKG

@sugarcube/plugin-elasticsearch

Version:

Use [Elasticsearch](https://www.elastic.co/products/elasticsearch) for SugarCube data.

76 lines (56 loc) 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.omitFromData = exports.unstripify = exports.stripUnderscores = void 0; var _fp = require("lodash/fp"); /* eslint-disable no-use-before-define, no-plusplus, no-continue */ const mapUnitKeys = (fn, unit) => { const mapArrays = ary => { const newAry = []; for (let i = 0; i < ary.length; i++) { const value = ary[i]; if ((0, _fp.isPlainObject)(value)) { newAry.push(mapUnitKeys(fn, value)); } else if ((0, _fp.isArray)(value)) { newAry.push(mapArrays(value)); } else { newAry.push(value); } } return newAry; }; const keys = Object.keys(unit); const obj = {}; for (let i = 0; i < keys.length; i++) { const key = keys[i]; if (/^(_|\$)sc_elastic_score$/.test(key)) continue; if (/_doc/.test(key)) { obj[key] = unit[key]; continue; } const newKey = fn(key); if ((0, _fp.isPlainObject)(unit[key])) { obj[newKey] = mapUnitKeys(fn, unit[key]); continue; } if ((0, _fp.isArray)(unit[key])) { obj[newKey] = mapArrays(unit[key]); continue; } obj[newKey] = unit[key]; } return obj; }; const stripUnderscores = unit => mapUnitKeys(key => key.replace(/^[_]+/, "$"), unit); exports.stripUnderscores = stripUnderscores; const unstripify = unit => mapUnitKeys(key => key.replace(/^[$$]/, "_"), unit); exports.unstripify = unstripify; const omitFromData = (fields, data) => { const FIELD_NAME = /^_sc_elastic/; return data.map(unit => { const internalFields = Object.keys(unit).filter(k => FIELD_NAME.test(k)); return (0, _fp.omit)(internalFields.concat(fields), unit); }); }; exports.omitFromData = omitFromData;