UNPKG

@rnaga/wp-node

Version:

👉 **[View Full Documentation at rnaga.github.io/wp-node →](https://rnaga.github.io/wp-node/)**

45 lines (44 loc) • 1.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Action = void 0; const events_1 = require("events"); const eventPrefix = "__action_hook_"; class Action extends events_1.EventEmitter { constructor() { super(); } getEventName(name) { return `${eventPrefix}${String(name)}`; } addCommand(command, listener) { return this.add(command.id, listener); } add(name, listener, options) { const { once = false } = options ?? {}; if (once) { this.once(this.getEventName(name), listener); } else { this.on(this.getEventName(name), listener); } return () => { this.remove(name, listener); }; } addCommandOnce(command, listener) { return this.addOnce(command.id, listener); } addOnce(name, listener) { this.once(this.getEventName(name), listener); } doCommand(command, ...args) { return this.do(command.id, ...args); } do(name, ...args) { this.emit(this.getEventName(name), ...args); } remove(name, listener) { this.removeListener(this.getEventName(name), listener); } } exports.Action = Action;