function-performer
Version:
Performer providing API for debounce, throttle, deduplication and limiting functions
66 lines (65 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get Performer () {
return Performer;
},
get default () {
return _default;
}
});
const _debounce = require("./debounce");
const _throttle = require("./throttle");
const _deduplicate = require("./deduplicate");
const _limit = require("./limit");
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
class Performer {
_define(key, executable) {
this._defineProperty(this, key, this._deconfigure(executable));
this._defineProperty(this[key], 'with', this._configure(executable));
}
_defineProperty(obj, key, value) {
Object.defineProperty(obj, key, {
value,
writable: false,
enumerable: false
});
}
_deconfigure(executable) {
return (func, ...args)=>executable.execute(null, func, ...args);
}
_configure(executable) {
return (config)=>(func, ...args)=>executable.execute(config, func, ...args);
}
constructor(config){
_define_property(this, "debounce", void 0);
_define_property(this, "throttle", void 0);
_define_property(this, "deduplicate", void 0);
_define_property(this, "limit", void 0);
this._define('debounce', new _debounce.Debounce(config?.debounce));
this._define('throttle', new _throttle.Throttle(config?.throttle));
this._define('deduplicate', new _deduplicate.Deduplicate(config?.deduplicate));
this._define('limit', new _limit.Limit(config?.limit));
}
}
const _default = Performer;