UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

54 lines (53 loc) 8.5 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); require("../_virtual/_rolldown/runtime.cjs.cjs"); let evt = require("evt"); //#region src/events/EventEmitterishMixin.ts 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((0, evt.to)(id), ctx, callback); return this; } once(id, callback) { const { evt: evt$2, ctx } = instanceProperties.get(this); evt$2.$attachOnce((0, evt.to)(id), ctx, callback); return this; } removeListener(id, callback) { const { ctx } = instanceProperties.get(this); ctx.getHandlers().filter(({ handler }) => handler.op === (0, 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 === (0, 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: evt$3 } = instanceProperties.get(this); return evt$3.postAndWait([id, event]); } }; } //#endregion exports.EventEmitterishMixin = EventEmitterishMixin; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRFbWl0dGVyaXNoTWl4aW4uY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL0V2ZW50RW1pdHRlcmlzaE1peGluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ3R4LCBFdnQsIHRvIH0gZnJvbSAnZXZ0JztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50RW1pdHRlcmlzaDxFdmVudFR5cGVzIGV4dGVuZHMgW3N0cmluZywgYW55XT4ge1xuICAgIG9uPFQgZXh0ZW5kcyBFdmVudFR5cGVzLCBLIGV4dGVuZHMgVFswXT4oXG4gICAgICAgIGlkOiBLLFxuICAgICAgICBjYWxsYmFjazogKGV2ZW50OiBUIGV4dGVuZHMgcmVhZG9ubHkgW0ssIGluZmVyIFVdID8gVSA6IG5ldmVyKSA9PiB2b2lkXG4gICAgKTogdGhpcztcblxuICAgIG9uY2U6IEV2ZW50RW1pdHRlcmlzaDxFdmVudFR5cGVzPlsnb24nXTtcblxuICAgIHJlbW92ZUxpc3RlbmVyOiBFdmVudEVtaXR0ZXJpc2g8RXZlbnRUeXBlcz5bJ29uJ107XG5cbiAgICByZW1vdmVBbGxMaXN0ZW5lcnMoaWQ/OiBFdmVudFR5cGVzWzBdKTogdGhpcztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZSBhZnRlclxuICAgICAqIGVhY2ggYXN5bmMgY2FsbGJhY2tzIGhhdmUgcmVzb2x2ZWQuXG4gICAgICovXG4gICAgZW1pdDxUIGV4dGVuZHMgRXZlbnRUeXBlcywgSyBleHRlbmRzIFRbMF0+KFxuICAgICAgICBpZDogSyxcbiAgICAgICAgZXZlbnQ6IFQgZXh0ZW5kcyByZWFkb25seSBbSywgaW5mZXIgVV0gPyBVIDogbmV2ZXJcbiAgICApOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRXZlbnRFbWl0dGVyaXNoTWl4aW48RXZlbnRUeXBlcyBleHRlbmRzIFtzdHJpbmcsIGFueV0sIFRCYXNlIGV4dGVuZHMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4ge30+KFxuICAgIEJhc2U6IFRCYXNlLFxuICAgIGdldEV2dDogKHBhcmFtZXRlcnM6IHtcbiAgICAgICAgY29uc3RydWN0b3JBcmdzOiBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VEJhc2U+O1xuICAgICAgICBpbnN0YW5jZTogSW5zdGFuY2VUeXBlPFRCYXNlPjtcbiAgICB9KSA9PiBFdnQ8RXZlbnRUeXBlcz5cbikge1xuICAgIC8vIE5PVEU6IFdlIGNhbid0IHVzZSBwcml2YXRlIHByb3BlcnRpZXMgaW4gYSBtaXhpbiBoZW5jZSB0aGUgdXNlIG9mIGEgd2VhayBtYXAuXG4gICAgY29uc3QgaW5zdGFuY2VQcm9wZXJ0aWVzID0gbmV3IFdlYWtNYXA8XG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgICBldnQ6IEV2dDxFdmVudFR5cGVzPjtcbiAgICAgICAgICAgIGN0eDogQ3R4O1xuICAgICAgICB9XG4gICAgPigpO1xuXG4gICAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSBpbXBsZW1lbnRzIEV2ZW50RW1pdHRlcmlzaDxFdmVudFR5cGVzPiB7XG4gICAgICAgIHB1YmxpYyBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgc3VwZXIoLi4uYXJncyk7XG5cbiAgICAgICAgICAgIC8vIEhhY2s/XG4gICAgICAgICAgICBFdnQuc2V0RGVmYXVsdE1heEhhbmRsZXJzKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTtcblxuICAgICAgICAgICAgaW5zdGFuY2VQcm9wZXJ0aWVzLnNldCh0aGlzLCB7XG4gICAgICAgICAgICAgICAgZXZ0OiBnZXRFdnQoe1xuICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvckFyZ3M6IGFyZ3MgYXMgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFRCYXNlPixcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2U6IHRoaXMgYXMgSW5zdGFuY2VUeXBlPFRCYXNlPlxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGN0eDogRXZ0Lm5ld0N0eCgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvbjxUIGV4dGVuZHMgRXZlbnRUeXBlcywgSyBleHRlbmRzIFRbMF0+KFxuICAgICAgICAgICAgaWQ6IEssXG4gICAgICAgICAgICBjYWxsYmFjazogKGV2ZW50OiBUIGV4dGVuZHMgcmVhZG9ubHkgW0ssIGluZmVyIFVdID8gVSA6IG5ldmVyKSA9PiB2b2lkXG4gICAgICAgICk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCB7IGV2dCwgY3R4IH0gPSBpbnN0YW5jZVByb3BlcnRpZXMuZ2V0KHRoaXMpITtcblxuICAgICAgICAgICAgZXZ0LiRhdHRhY2godG8oaWQpLCBjdHgsIGNhbGxiYWNrKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgb25jZTxUIGV4dGVuZHMgRXZlbnRUeXBlcywgSyBleHRlbmRzIFRbMF0+KFxuICAgICAgICAgICAgaWQ6IEssXG4gICAgICAgICAgICBjYWxsYmFjazogKGV2ZW50OiBUIGV4dGVuZHMgcmVhZG9ubHkgW0ssIGluZmVyIFVdID8gVSA6IG5ldmVyKSA9PiB2b2lkXG4gICAgICAgICk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCB7IGV2dCwgY3R4IH0gPSBpbnN0YW5jZVByb3BlcnRpZXMuZ2V0KHRoaXMpITtcblxuICAgICAgICAgICAgZXZ0LiRhdHRhY2hPbmNlKHRvKGlkKSwgY3R4LCBjYWxsYmFjayk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHJlbW92ZUxpc3RlbmVyPFQgZXh0ZW5kcyBFdmVudFR5cGVzLCBLIGV4dGVuZHMgVFswXT4oXG4gICAgICAgICAgICBpZDogSyxcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoZXZlbnQ6IFQgZXh0ZW5kcyByZWFkb25seSBbSywgaW5mZXIgVV0gPyBVIDogbmV2ZXIpID0+IHZvaWRcbiAgICAgICAgKTogYW55IHtcbiAgICAgICAgICAgIGNvbnN0IHsgY3R4IH0gPSBpbnN0YW5jZVByb3BlcnRpZXMuZ2V0KHRoaXMpITtcblxuICAgICAgICAgICAgY3R4LmdldEhhbmRsZXJzKClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh7IGhhbmRsZXIgfSkgPT4gaGFuZGxlci5vcCA9PT0gdG8oaWQpICYmIGhhbmRsZXIuY2FsbGJhY2sgPT09IGNhbGxiYWNrKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKCh7IGhhbmRsZXIgfSkgPT4gaGFuZGxlci5kZXRhY2goKSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHJlbW92ZUFsbExpc3RlbmVycyhpZD86IEV2ZW50VHlwZXNbMF0pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgeyBjdHggfSA9IGluc3RhbmNlUHJvcGVydGllcy5nZXQodGhpcykhO1xuXG4gICAgICAgICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGN0eC5kb25lKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN0eC5nZXRIYW5kbGVycygpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHsgaGFuZGxlciB9KSA9PiBoYW5kbGVyLm9wID09PSB0byhpZCkpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKCh7IGhhbmRsZXIgfSkgPT4gaGFuZGxlci5kZXRhY2goKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZSBhZnRlclxuICAgICAgICAgKiBlYWNoIGFzeW5jIGNhbGxiYWNrcyBoYXZlIHJlc29sdmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIGFzeW5jIGVtaXQ8VCBleHRlbmRzIEV2ZW50VHlwZXMsIEsgZXh0ZW5kcyBUWzBdPihcbiAgICAgICAgICAgIGlkOiBLLFxuICAgICAgICAgICAgZXZlbnQ6IFQgZXh0ZW5kcyByZWFkb25seSBbSywgaW5mZXIgVV0gPyBVIDogbmV2ZXJcbiAgICAgICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgICBjb25zdCB7IGV2dCB9ID0gaW5zdGFuY2VQcm9wZXJ0aWVzLmdldCh0aGlzKSE7XG5cbiAgICAgICAgICAgIHJldHVybiBldnQucG9zdEFuZFdhaXQoW2lkLCBldmVudF0gYXMgYW55KTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBMkJBLFNBQWdCLHFCQUNaLE1BQ0EsUUFJRjtDQUVFLE1BQU0scUNBQXFCLElBQUksUUFNN0I7Q0FFRixPQUFPLGNBQWMsS0FBNEM7RUFDN0QsWUFBbUIsR0FBRyxNQUFhO0dBQy9CLE1BQU0sR0FBRyxJQUFJO0dBR2IsSUFBQSxJQUFJLHNCQUFzQixPQUFPLGdCQUFnQjtHQUVqRCxtQkFBbUIsSUFBSSxNQUFNO0lBQ3pCLEtBQUssT0FBTztLQUNSLGlCQUFpQjtLQUNqQixVQUFVO0lBQ2QsQ0FBQztJQUNELEtBQUssSUFBQSxJQUFJLE9BQU87R0FDcEIsQ0FBQztFQUNMO0VBRUEsR0FDSSxJQUNBLFVBQ0c7R0FDSCxNQUFNLEVBQUUsS0FBQSxPQUFLLFFBQVEsbUJBQW1CLElBQUksSUFBSTtHQUVoRCxNQUFJLFNBQUEsR0FBQSxJQUFBLElBQVcsRUFBRSxHQUFHLEtBQUssUUFBUTtHQUVqQyxPQUFPO0VBQ1g7RUFFQSxLQUNJLElBQ0EsVUFDRztHQUNILE1BQU0sRUFBRSxLQUFBLE9BQUssUUFBUSxtQkFBbUIsSUFBSSxJQUFJO0dBRWhELE1BQUksYUFBQSxHQUFBLElBQUEsSUFBZSxFQUFFLEdBQUcsS0FBSyxRQUFRO0dBRXJDLE9BQU87RUFDWDtFQUVBLGVBQ0ksSUFDQSxVQUNHO0dBQ0gsTUFBTSxFQUFFLFFBQVEsbUJBQW1CLElBQUksSUFBSTtHQUUzQyxJQUFJLFlBQVksRUFDWCxRQUFRLEVBQUUsY0FBYyxRQUFRLFFBQUEsR0FBQSxJQUFBLElBQVUsRUFBRSxLQUFLLFFBQVEsYUFBYSxRQUFRLEVBQzlFLFNBQVMsRUFBRSxjQUFjLFFBQVEsT0FBTyxDQUFDO0dBRTlDLE9BQU87RUFDWDtFQUVBLG1CQUEwQixJQUF5QjtHQUMvQyxNQUFNLEVBQUUsUUFBUSxtQkFBbUIsSUFBSSxJQUFJO0dBRTNDLElBQUksT0FBTyxLQUFBLEdBQ1AsSUFBSSxLQUFLO1FBRVQsSUFBSSxZQUFZLEVBQ1gsUUFBUSxFQUFFLGNBQWMsUUFBUSxRQUFBLEdBQUEsSUFBQSxJQUFVLEVBQUUsQ0FBQyxFQUM3QyxTQUFTLEVBQUUsY0FBYyxRQUFRLE9BQU8sQ0FBQztHQUdsRCxPQUFPO0VBQ1g7Ozs7O0VBTUEsTUFBYSxLQUNULElBQ0EsT0FDYTtHQUNiLE1BQU0sRUFBRSxLQUFBLFVBQVEsbUJBQW1CLElBQUksSUFBSTtHQUUzQyxPQUFPLE1BQUksWUFBWSxDQUFDLElBQUksS0FBSyxDQUFRO0VBQzdDO0NBQ0o7QUFDSiJ9