hyper/lib/utils/object.ts

23 lines
612 B
TypeScript
Raw Normal View History

// eslint-disable-next-line eslint-comments/disable-enable-pair
/* eslint-disable @typescript-eslint/no-unsafe-return */
2016-07-13 12:44:24 -08:00
const valsCache = new WeakMap();
2017-05-27 19:42:42 -08:00
2019-10-12 02:16:45 -08:00
export function values(imm: Record<string, any>) {
2016-07-13 12:44:24 -08:00
if (!valsCache.has(imm)) {
2017-05-27 19:42:42 -08:00
valsCache.set(imm, Object.values(imm));
2016-07-13 12:44:24 -08:00
}
return valsCache.get(imm);
}
const keysCache = new WeakMap();
2019-10-12 02:16:45 -08:00
export function keys(imm: Record<string, any>) {
2016-07-13 12:44:24 -08:00
if (!keysCache.has(imm)) {
keysCache.set(imm, Object.keys(imm));
}
return keysCache.get(imm);
}
2020-03-07 05:38:46 -09:00
2022-08-11 12:06:55 -08:00
export const ObjectTypedKeys = <T extends object>(obj: T) => {
2020-03-07 05:38:46 -09:00
return Object.keys(obj) as (keyof T)[];
};