UNPKG

@synstack/enhance

Version:

Type-safe object enhancement with proxy-based method extension

23 lines 781 B
// src/enhance.lib.ts var ENHANCER_NAME = Symbol("EnhancerName"); var enhance = (name, obj, extendObj) => { const _obj = ENHANCER_NAME in obj && obj[ENHANCER_NAME] === name ? obj.$ : obj; return new Proxy(_obj, { get(target, prop, receiver) { if (prop === "$" || prop === "valueOf" || prop === Symbol.toPrimitive) return () => _obj; if (prop === "toString") return () => obj.toString(); if (prop === ENHANCER_NAME) return name; if (prop in extendObj) return extendObj[prop].bind(target); return Reflect.get(target, prop, receiver); } }); }; var enhanceFactory = (name, extendObj) => (obj) => enhance(name, obj, extendObj); export { ENHANCER_NAME, enhance, enhanceFactory }; //# sourceMappingURL=enhance.index.js.map