UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

58 lines (53 loc) 9.4 kB
'use strict'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const evt = require('evt'); function EventEmitterishMixin(Base, getEvt) { const instanceProperties = /* @__PURE__ */ new WeakMap(); return class extends Base { constructor(...args) { super(...args); evt.Evt.setDefaultMaxHandlers(Number.MAX_SAFE_INTEGER); instanceProperties.set(this, { evt: getEvt({ constructorArgs: args, instance: this }), ctx: evt.Evt.newCtx() }); } on(id, callback) { const { evt: evt$1, ctx } = instanceProperties.get(this); evt$1.$attach(evt.to(id), ctx, callback); return this; } once(id, callback) { const { evt: evt$1, ctx } = instanceProperties.get(this); evt$1.$attachOnce(evt.to(id), ctx, callback); return this; } removeListener(id, callback) { const { ctx } = instanceProperties.get(this); ctx.getHandlers().filter(({ handler }) => handler.op === evt.to(id) && handler.callback === callback).forEach(({ handler }) => handler.detach()); return this; } removeAllListeners(id) { const { ctx } = instanceProperties.get(this); if (id === void 0) { ctx.done(); } else { ctx.getHandlers().filter(({ handler }) => handler.op === evt.to(id)).forEach(({ handler }) => handler.detach()); } return this; } /** * Returns a promise that resolve after * each async callbacks have resolved. */ async emit(id, event) { const { evt } = instanceProperties.get(this); return evt.postAndWait([id, event]); } }; } exports.EventEmitterishMixin = EventEmitterishMixin; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRFbWl0dGVyaXNoTWl4aW4uY2pzLmNqcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V2ZW50cy9FdmVudEVtaXR0ZXJpc2hNaXhpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEN0eCwgRXZ0LCB0byB9IGZyb20gJ2V2dCc7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEVtaXR0ZXJpc2g8RXZlbnRUeXBlcyBleHRlbmRzIFtzdHJpbmcsIGFueV0+IHtcbiAgICBvbjxUIGV4dGVuZHMgRXZlbnRUeXBlcywgSyBleHRlbmRzIFRbMF0+KFxuICAgICAgICBpZDogSyxcbiAgICAgICAgY2FsbGJhY2s6IChldmVudDogVCBleHRlbmRzIHJlYWRvbmx5IFtLLCBpbmZlciBVXSA/IFUgOiBuZXZlcikgPT4gdm9pZFxuICAgICk6IHRoaXM7XG5cbiAgICBvbmNlOiBFdmVudEVtaXR0ZXJpc2g8RXZlbnRUeXBlcz5bJ29uJ107XG5cbiAgICByZW1vdmVMaXN0ZW5lcjogRXZlbnRFbWl0dGVyaXNoPEV2ZW50VHlwZXM+WydvbiddO1xuXG4gICAgcmVtb3ZlQWxsTGlzdGVuZXJzKGlkPzogRXZlbnRUeXBlc1swXSk6IHRoaXM7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmUgYWZ0ZXJcbiAgICAgKiBlYWNoIGFzeW5jIGNhbGxiYWNrcyBoYXZlIHJlc29sdmVkLlxuICAgICAqL1xuICAgIGVtaXQ8VCBleHRlbmRzIEV2ZW50VHlwZXMsIEsgZXh0ZW5kcyBUWzBdPihcbiAgICAgICAgaWQ6IEssXG4gICAgICAgIGV2ZW50OiBUIGV4dGVuZHMgcmVhZG9ubHkgW0ssIGluZmVyIFVdID8gVSA6IG5ldmVyXG4gICAgKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV2ZW50RW1pdHRlcmlzaE1peGluPEV2ZW50VHlwZXMgZXh0ZW5kcyBbc3RyaW5nLCBhbnldLCBUQmFzZSBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IHt9PihcbiAgICBCYXNlOiBUQmFzZSxcbiAgICBnZXRFdnQ6IChwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGNvbnN0cnVjdG9yQXJnczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFRCYXNlPjtcbiAgICAgICAgaW5zdGFuY2U6IEluc3RhbmNlVHlwZTxUQmFzZT47XG4gICAgfSkgPT4gRXZ0PEV2ZW50VHlwZXM+XG4pIHtcbiAgICAvLyBOT1RFOiBXZSBjYW4ndCB1c2UgcHJpdmF0ZSBwcm9wZXJ0aWVzIGluIGEgbWl4aW4gaGVuY2UgdGhlIHVzZSBvZiBhIHdlYWsgbWFwLlxuICAgIGNvbnN0IGluc3RhbmNlUHJvcGVydGllcyA9IG5ldyBXZWFrTWFwPFxuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgICAgZXZ0OiBFdnQ8RXZlbnRUeXBlcz47XG4gICAgICAgICAgICBjdHg6IEN0eDtcbiAgICAgICAgfVxuICAgID4oKTtcblxuICAgIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2UgaW1wbGVtZW50cyBFdmVudEVtaXR0ZXJpc2g8RXZlbnRUeXBlcz4ge1xuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAvLyBIYWNrP1xuICAgICAgICAgICAgRXZ0LnNldERlZmF1bHRNYXhIYW5kbGVycyhOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7XG5cbiAgICAgICAgICAgIGluc3RhbmNlUHJvcGVydGllcy5zZXQodGhpcywge1xuICAgICAgICAgICAgICAgIGV2dDogZ2V0RXZ0KHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3JBcmdzOiBhcmdzIGFzIENvbnN0cnVjdG9yUGFyYW1ldGVyczxUQmFzZT4sXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlOiB0aGlzIGFzIEluc3RhbmNlVHlwZTxUQmFzZT5cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjdHg6IEV2dC5uZXdDdHgoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgb248VCBleHRlbmRzIEV2ZW50VHlwZXMsIEsgZXh0ZW5kcyBUWzBdPihcbiAgICAgICAgICAgIGlkOiBLLFxuICAgICAgICAgICAgY2FsbGJhY2s6IChldmVudDogVCBleHRlbmRzIHJlYWRvbmx5IFtLLCBpbmZlciBVXSA/IFUgOiBuZXZlcikgPT4gdm9pZFxuICAgICAgICApOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgeyBldnQsIGN0eCB9ID0gaW5zdGFuY2VQcm9wZXJ0aWVzLmdldCh0aGlzKSE7XG5cbiAgICAgICAgICAgIGV2dC4kYXR0YWNoKHRvKGlkKSwgY3R4LCBjYWxsYmFjayk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG9uY2U8VCBleHRlbmRzIEV2ZW50VHlwZXMsIEsgZXh0ZW5kcyBUWzBdPihcbiAgICAgICAgICAgIGlkOiBLLFxuICAgICAgICAgICAgY2FsbGJhY2s6IChldmVudDogVCBleHRlbmRzIHJlYWRvbmx5IFtLLCBpbmZlciBVXSA/IFUgOiBuZXZlcikgPT4gdm9pZFxuICAgICAgICApOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgeyBldnQsIGN0eCB9ID0gaW5zdGFuY2VQcm9wZXJ0aWVzLmdldCh0aGlzKSE7XG5cbiAgICAgICAgICAgIGV2dC4kYXR0YWNoT25jZSh0byhpZCksIGN0eCwgY2FsbGJhY2spO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyByZW1vdmVMaXN0ZW5lcjxUIGV4dGVuZHMgRXZlbnRUeXBlcywgSyBleHRlbmRzIFRbMF0+KFxuICAgICAgICAgICAgaWQ6IEssXG4gICAgICAgICAgICBjYWxsYmFjazogKGV2ZW50OiBUIGV4dGVuZHMgcmVhZG9ubHkgW0ssIGluZmVyIFVdID8gVSA6IG5ldmVyKSA9PiB2b2lkXG4gICAgICAgICk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCB7IGN0eCB9ID0gaW5zdGFuY2VQcm9wZXJ0aWVzLmdldCh0aGlzKSE7XG5cbiAgICAgICAgICAgIGN0eC5nZXRIYW5kbGVycygpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoeyBoYW5kbGVyIH0pID0+IGhhbmRsZXIub3AgPT09IHRvKGlkKSAmJiBoYW5kbGVyLmNhbGxiYWNrID09PSBjYWxsYmFjaylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoeyBoYW5kbGVyIH0pID0+IGhhbmRsZXIuZGV0YWNoKCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyByZW1vdmVBbGxMaXN0ZW5lcnMoaWQ/OiBFdmVudFR5cGVzWzBdKTogYW55IHtcbiAgICAgICAgICAgIGNvbnN0IHsgY3R4IH0gPSBpbnN0YW5jZVByb3BlcnRpZXMuZ2V0KHRoaXMpITtcblxuICAgICAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjdHguZG9uZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdHguZ2V0SGFuZGxlcnMoKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCh7IGhhbmRsZXIgfSkgPT4gaGFuZGxlci5vcCA9PT0gdG8oaWQpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoeyBoYW5kbGVyIH0pID0+IGhhbmRsZXIuZGV0YWNoKCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmUgYWZ0ZXJcbiAgICAgICAgICogZWFjaCBhc3luYyBjYWxsYmFja3MgaGF2ZSByZXNvbHZlZC5cbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBhc3luYyBlbWl0PFQgZXh0ZW5kcyBFdmVudFR5cGVzLCBLIGV4dGVuZHMgVFswXT4oXG4gICAgICAgICAgICBpZDogSyxcbiAgICAgICAgICAgIGV2ZW50OiBUIGV4dGVuZHMgcmVhZG9ubHkgW0ssIGluZmVyIFVdID8gVSA6IG5ldmVyXG4gICAgICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgY29uc3QgeyBldnQgfSA9IGluc3RhbmNlUHJvcGVydGllcy5nZXQodGhpcykhO1xuXG4gICAgICAgICAgICByZXR1cm4gZXZ0LnBvc3RBbmRXYWl0KFtpZCwgZXZlbnRdIGFzIGFueSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbIkV2dCIsImV2dCIsInRvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUEyQmdCLFNBQUEsb0JBQUEsQ0FDWixNQUNBLE1BSUYsRUFBQTtBQUVFLEVBQU0sTUFBQSxrQkFBQSx1QkFBeUIsT0FNN0IsRUFBQTtBQUVGLEVBQUEsT0FBTyxjQUFjLElBQTRDLENBQUE7QUFBQSxJQUN0RCxlQUFlLElBQWEsRUFBQTtBQUMvQixNQUFBLEtBQUEsQ0FBTSxHQUFHLElBQUksQ0FBQTtBQUdiLE1BQUlBLE9BQUEsQ0FBQSxxQkFBQSxDQUFzQixPQUFPLGdCQUFnQixDQUFBO0FBRWpELE1BQUEsa0JBQUEsQ0FBbUIsSUFBSSxJQUFNLEVBQUE7QUFBQSxRQUN6QixLQUFLLE1BQU8sQ0FBQTtBQUFBLFVBQ1IsZUFBaUIsRUFBQSxJQUFBO0FBQUEsVUFDakIsUUFBVSxFQUFBO0FBQUEsU0FDYixDQUFBO0FBQUEsUUFDRCxHQUFBLEVBQUtBLFFBQUksTUFBTztBQUFBLE9BQ25CLENBQUE7QUFBQTtBQUNMLElBRU8sRUFBQSxDQUNILElBQ0EsUUFDRyxFQUFBO0FBQ0gsTUFBQSxNQUFNLE9BQUVDLEtBQUssRUFBQSxHQUFBLEVBQVEsR0FBQSxrQkFBQSxDQUFtQixJQUFJLElBQUksQ0FBQTtBQUVoRCxNQUFBQSxLQUFBLENBQUksT0FBUSxDQUFBQyxNQUFBLENBQUcsRUFBRSxDQUFBLEVBQUcsS0FBSyxRQUFRLENBQUE7QUFFakMsTUFBTyxPQUFBLElBQUE7QUFBQTtBQUNYLElBRU8sSUFBQSxDQUNILElBQ0EsUUFDRyxFQUFBO0FBQ0gsTUFBQSxNQUFNLE9BQUVELEtBQUssRUFBQSxHQUFBLEVBQVEsR0FBQSxrQkFBQSxDQUFtQixJQUFJLElBQUksQ0FBQTtBQUVoRCxNQUFBQSxLQUFBLENBQUksV0FBWSxDQUFBQyxNQUFBLENBQUcsRUFBRSxDQUFBLEVBQUcsS0FBSyxRQUFRLENBQUE7QUFFckMsTUFBTyxPQUFBLElBQUE7QUFBQTtBQUNYLElBRU8sY0FBQSxDQUNILElBQ0EsUUFDRyxFQUFBO0FBQ0gsTUFBQSxNQUFNLEVBQUUsR0FBQSxFQUFRLEdBQUEsa0JBQUEsQ0FBbUIsSUFBSSxJQUFJLENBQUE7QUFFM0MsTUFBSSxHQUFBLENBQUEsV0FBQSxHQUNDLE1BQU8sQ0FBQSxDQUFDLEVBQUUsT0FBUSxFQUFBLEtBQU0sT0FBUSxDQUFBLEVBQUEsS0FBT0EsTUFBRyxDQUFBLEVBQUUsS0FBSyxPQUFRLENBQUEsUUFBQSxLQUFhLFFBQVEsQ0FBQSxDQUM5RSxPQUFRLENBQUEsQ0FBQyxFQUFFLE9BQVEsRUFBQSxLQUFNLE9BQVEsQ0FBQSxNQUFBLEVBQVEsQ0FBQTtBQUU5QyxNQUFPLE9BQUEsSUFBQTtBQUFBO0FBQ1gsSUFFTyxtQkFBbUIsRUFBeUIsRUFBQTtBQUMvQyxNQUFBLE1BQU0sRUFBRSxHQUFBLEVBQVEsR0FBQSxrQkFBQSxDQUFtQixJQUFJLElBQUksQ0FBQTtBQUUzQyxNQUFBLElBQUksT0FBTyxLQUFXLENBQUEsRUFBQTtBQUNsQixRQUFBLEdBQUEsQ0FBSSxJQUFLLEVBQUE7QUFBQSxPQUNOLE1BQUE7QUFDSCxRQUFJLEdBQUEsQ0FBQSxXQUFBLEdBQ0MsTUFBTyxDQUFBLENBQUMsRUFBRSxPQUFRLEVBQUEsS0FBTSxRQUFRLEVBQU8sS0FBQUEsTUFBQSxDQUFHLEVBQUUsQ0FBQyxDQUFBLENBQzdDLFFBQVEsQ0FBQyxFQUFFLFNBQWMsS0FBQSxPQUFBLENBQVEsUUFBUSxDQUFBO0FBQUE7QUFHbEQsTUFBTyxPQUFBLElBQUE7QUFBQTtBQUNYO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFNQSxNQUFhLElBQ1QsQ0FBQSxFQUFBLEVBQ0EsS0FDYSxFQUFBO0FBQ2IsTUFBQSxNQUFNLEVBQUUsR0FBQSxFQUFRLEdBQUEsa0JBQUEsQ0FBbUIsSUFBSSxJQUFJLENBQUE7QUFFM0MsTUFBQSxPQUFPLEdBQUksQ0FBQSxXQUFBLENBQVksQ0FBQyxFQUFBLEVBQUksS0FBSyxDQUFRLENBQUE7QUFBQTtBQUM3QyxHQUNKO0FBQ0o7Ozs7In0=