UNPKG

surrogate

Version:

Object method hooks made easy

70 lines (59 loc) 2.84 kB
var $dfb11eba45cfc4c9$exports = require("./surrogate.0c726199.js"); var $b4a665151c5432f8$exports = require("./surrogate.91ed3378.js"); var $468325e593d32835$exports = require("./surrogate.a4731d49.js"); var $69e6bb98e7bc51ac$exports = require("./surrogate.5de640eb.js"); var $f0d4a8303771b746$exports = require("./surrogate.5c5e39cf.js"); function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } $parcel$export(module.exports, "SurrogateProxy", () => $4bb808266ae73c8a$export$98c317ab89d9c127); class $4bb808266ae73c8a$export$98c317ab89d9c127 { constructor(target, { useSingleton: useSingleton = true, ...globalOptions } = {}){ this.targets = new WeakMap(); return this.useInstance(useSingleton).setTarget(target, globalOptions); } get(target, event, receiver) { return (0, $dfb11eba45cfc4c9$exports.FetchRuleRunner).fetchRule(this, target, event, receiver).returnableValue(); } getEventManager(target) { return this.targets.get(target); } static wrap(object, options) { return this.hasTarget(object) ? object : new Proxy(object, new $4bb808266ae73c8a$export$98c317ab89d9c127(object, options)); } static hasTarget(target) { const methods = [ (0, $dfb11eba45cfc4c9$exports.InternalMethods).Dispose, (0, $dfb11eba45cfc4c9$exports.InternalMethods).EventManager ]; return methods.every((key)=>(0, $69e6bb98e7bc51ac$exports.isFunction)(target[key])); } bindHandler(event, target, receiver) { const func = Reflect.get(target, event, receiver); return ({ [event]: (...args)=>this.surrogateHandler(new (0, $f0d4a8303771b746$exports.Context)(target, receiver, event, func, args)) })[event]; } surrogateHandler(context) { const { target: target, event: event } = context; const typeContainers = this.getEventManager(target).getEventHandlers(event); return (0, $b4a665151c5432f8$exports.ExecutionContext).for(context, typeContainers).setupPipeline(this, typeContainers).start(); } dispose(target) { this.getEventManager(target).deregisterHooks(); this.targets.delete(target); return target; } setTarget(target, globalOptions) { if (!this.targets.has(target)) this.targets.set(target, new (0, $468325e593d32835$exports.EventManager)(globalOptions)); return this; } useInstance(useSingleton) { if (useSingleton) { if ($4bb808266ae73c8a$export$98c317ab89d9c127.instance) return $4bb808266ae73c8a$export$98c317ab89d9c127.instance; $4bb808266ae73c8a$export$98c317ab89d9c127.instance = this; } return this; } } //# sourceMappingURL=surrogate.e6214bab.js.map