@rashedmakkouk/dev-utils
Version:
Utility library.
55 lines (54 loc) • 1.9 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/** Utilities */
const isArray_1 = __importDefault(require("lodash/isArray"));
const isNumber_1 = __importDefault(require("lodash/isNumber"));
const isPlainObject_1 = __importDefault(require("lodash/isPlainObject"));
const isString_1 = __importDefault(require("lodash/isString"));
// TODO: Refactor 'extractValues' implementation; Issue #4.
/**
* Extracts values from supplied `key` (i-e 'id') and converts any value to
* array; drops object values.
*
* @param key - Object field name property to extract values from.
* @param payload - List of results.
*/
function extractValues({ key, payload, separator = ',', }) {
let data = [];
const appendValue = (value) => {
if (value === null || value === undefined || value === '') {
return;
}
else if ((0, isString_1.default)(value)) {
if (value.includes(separator)) {
data = [...data, ...value.split(separator)];
}
else {
data.push(value);
}
}
else if ((0, isNumber_1.default)(value)) {
data.push(value);
}
else if ((0, isArray_1.default)(value)) {
/* eslint-disable-next-line @typescript-eslint/no-unsafe-assignment */
data = [...data, ...value];
}
};
if (!(0, isArray_1.default)(payload)) {
if ((0, isPlainObject_1.default)(payload)) {
const { [key]: value } = payload;
appendValue(value);
}
}
else if (payload.length) {
for (const { [key]: value } of payload) {
appendValue(value);
}
}
return data;
}
exports.default = extractValues;