knex-utils
Version:
Useful utilities for Knex.js
91 lines • 3.14 kB
JavaScript
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
;