UNPKG

knex-utils

Version:

Useful utilities for Knex.js

91 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.groupBy = exports.isEmptyObject = exports.strictPickWithoutUndefined = exports.validateOnlyWhitelistedFieldsSet = exports.validateOnlyWhitelistedFields = exports.pickWithoutUndefined = exports.pick = exports.copyWithoutUndefined = void 0; function copyWithoutUndefined(originalValue) { return Object.keys(originalValue).reduce((acc, key) => { // @ts-ignore if (originalValue[key] !== undefined) { // @ts-ignore acc[key] = originalValue[key]; } return acc; }, {}); } exports.copyWithoutUndefined = copyWithoutUndefined; function pick(source, propNames) { const result = {}; let idx = 0; while (idx < propNames.length) { if (propNames[idx] in source) { // @ts-ignore result[propNames[idx]] = source[propNames[idx]]; } idx += 1; } return result; } exports.pick = pick; function pickWithoutUndefined(source, propNames) { const result = {}; let idx = 0; while (idx < propNames.length) { // @ts-ignore if (propNames[idx] in source && source[propNames[idx]] !== undefined) { // @ts-ignore result[propNames[idx]] = source[propNames[idx]]; } idx += 1; } return result; } exports.pickWithoutUndefined = pickWithoutUndefined; function validateOnlyWhitelistedFields(source, propNames) { const keys = Object.keys(source); for (var x = 0; x < keys.length; x++) { if (propNames.indexOf(keys[x]) === -1) { throw new Error(`Unsupported field: ${keys[x]}`); } } } exports.validateOnlyWhitelistedFields = validateOnlyWhitelistedFields; function validateOnlyWhitelistedFieldsSet(source, propNames) { const keys = Object.keys(source); for (var x = 0; x < keys.length; x++) { if (!propNames.has(keys[x])) { throw new Error(`Unsupported field: ${keys[x]}`); } } } exports.validateOnlyWhitelistedFieldsSet = validateOnlyWhitelistedFieldsSet; function strictPickWithoutUndefined(source, propNames) { validateOnlyWhitelistedFields(source, propNames); return pickWithoutUndefined(source, propNames); } exports.strictPickWithoutUndefined = strictPickWithoutUndefined; function isEmptyObject(params) { for (const key in params) { if (params.hasOwnProperty(key) && params[key] !== undefined) { return false; } } return true; } exports.isEmptyObject = isEmptyObject; function groupBy(inputArray, propName) { return inputArray.reduce((result, entry) => { // @ts-ignore const key = entry[propName]; // @ts-ignore if (Object.hasOwnProperty.call(result, key)) { // @ts-ignore result[key].push(entry); } else { // @ts-ignore result[key] = [entry]; } return result; }, {}); } exports.groupBy = groupBy; //# sourceMappingURL=objectUtils.js.map