40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import qs from 'query-string';
|
|
import has from 'lodash/has';
|
|
|
|
interface IObjectValue {
|
|
[key: string]: any;
|
|
}
|
|
|
|
export function objectContainsObjectKeys(
|
|
checkingObject: IObjectValue,
|
|
containingObject: IObjectValue
|
|
) {
|
|
const checkingObjectKeys = Object.keys(checkingObject);
|
|
const containsAll = checkingObjectKeys.map(key => has(containingObject, key));
|
|
return containsAll.every(isTrue => isTrue);
|
|
}
|
|
|
|
export function getKeyByValue(object: IObjectValue, value: any) {
|
|
return Object.keys(object).find(key => object[key] === value);
|
|
}
|
|
|
|
export function getParam(query: { [key: string]: string }, key: string) {
|
|
const keys = Object.keys(query);
|
|
const index = keys.findIndex(k => k.toLowerCase() === key.toLowerCase());
|
|
if (index === -1) {
|
|
return null;
|
|
}
|
|
return query[keys[index]];
|
|
}
|
|
|
|
export function getParamFromURL(url: string, param: string): string | undefined {
|
|
return qs.parse(qs.extract(url))[param];
|
|
}
|
|
|
|
export function isPositiveInteger(n: number) {
|
|
return Number.isInteger(n) && n > 0;
|
|
}
|
|
|
|
export const getValues = (...args: any[]) =>
|
|
args.reduce((acc, currArg) => [...acc, ...Object.values(currArg)], []);
|