UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

30 lines (28 loc) 795 B
/** * Populates an object with properties of another object * @param {Object} source Source object * @param {string[]} properties Properties names to include * @returns object populated with the picked keys */ export const pick = <T extends Record<string, any>>( source: T, keys: (keyof T)[] = [], ) => { return keys.reduce((o, key) => { if (key in source) { o[key] = source[key]; } return o; }, {} as Partial<T>); }; export const pickBy = <T extends Record<string, any>>( source: T, predicate: <K extends keyof T>(value: T[K], key: K, collection: T) => boolean, ) => { return (Object.keys(source) as (keyof T)[]).reduce((o, key) => { if (predicate(source[key], key, source)) { o[key] = source[key]; } return o; }, {} as Partial<T>); };