lux-framework
Version:
Build scalable, Node.js-powered REST APIs with almost no code.
28 lines (21 loc) • 561 B
JavaScript
// @flow
import hasOwnProperty from './has-own-property';
type Proxy$get<T> = (target: T, key: string, receiver: Proxy<T>) => any;
/**
* @private
*/
export function trapGet<T>(traps: Object): Proxy$get<T> {
return (target, key, receiver) => {
if (key === 'unwrap') {
return () => target;
}
if (hasOwnProperty(traps, key)) {
const value = Reflect.get(traps, key);
if (typeof value === 'function') {
return value.bind(receiver, target);
}
return value;
}
return Reflect.get(target, key);
};
}