@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
58 lines (53 loc) • 9.4 kB
JavaScript
;
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=