q-proxyable
Version:
normal utils by qianzhixiang
86 lines (85 loc) • 3.19 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProxyEmitter = exports.addProxyHandler = void 0;
var common_1 = require("./common");
function addProxyHandler(handlers) {
for (var i in handlers) {
common_1.GLOBAL_PROXY_HANDLERS[i].push(handlers[i]);
}
}
exports.addProxyHandler = addProxyHandler;
var ProxyEmitter = (function () {
function ProxyEmitter() {
}
Object.defineProperty(ProxyEmitter.prototype, "getHandlers", {
get: function () {
return common_1.GLOBAL_PROXY_HANDLERS.get || [];
},
enumerable: false,
configurable: true
});
Object.defineProperty(ProxyEmitter.prototype, "setHandlers", {
get: function () {
return common_1.GLOBAL_PROXY_HANDLERS.set || [];
},
enumerable: false,
configurable: true
});
Object.defineProperty(ProxyEmitter.prototype, "deleteHandlers", {
get: function () {
return common_1.GLOBAL_PROXY_HANDLERS.delete || [];
},
enumerable: false,
configurable: true
});
ProxyEmitter.prototype.removeGetHandle = function (handler) {
common_1.GLOBAL_PROXY_HANDLERS.get = this.getHandlers.filter(function (h) { return h !== handler; });
};
ProxyEmitter.prototype.removeSetHandle = function (handler) {
common_1.GLOBAL_PROXY_HANDLERS.set = this.setHandlers.filter(function (h) { return h !== handler; });
};
ProxyEmitter.prototype.removeDeletetHandle = function (handler) {
common_1.GLOBAL_PROXY_HANDLERS.delete = this.deleteHandlers.filter(function (h) { return h !== handler; });
};
ProxyEmitter.prototype.onGet = function (handler) {
var _this = this;
this.getHandlers.push(handler);
return function () { return _this.removeGetHandle(handler); };
};
ProxyEmitter.prototype.onceGet = function (handler) {
var me = this;
var temp = function () {
handler.apply(this, arguments);
me.removeGetHandle(temp);
};
this.getHandlers.push(temp);
};
ProxyEmitter.prototype.onSet = function (handler) {
var _this = this;
this.setHandlers.push(handler);
return function () { return _this.removeSetHandle(handler); };
};
ProxyEmitter.prototype.onceSet = function (handler) {
var me = this;
var temp = function () {
handler.apply(this, arguments);
me.removeSetHandle(temp);
};
this.setHandlers.push(temp);
};
ProxyEmitter.prototype.onDelete = function (handler) {
var _this = this;
this.deleteHandlers.push(handler);
return function () { return _this.removeDeletetHandle(handler); };
};
ProxyEmitter.prototype.onceDelete = function (handler) {
var me = this;
var temp = function () {
handler.apply(this, arguments);
me.removeDeletetHandle(temp);
};
this.deleteHandlers.push(temp);
};
return ProxyEmitter;
}());
exports.ProxyEmitter = ProxyEmitter;
;