| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- "use strict";
- var __defProp = Object.defineProperty;
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
- var __getOwnPropNames = Object.getOwnPropertyNames;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
- };
- var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
- };
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- var eventEmitter_exports = {};
- __export(eventEmitter_exports, {
- EventEmitter: () => EventEmitter
- });
- module.exports = __toCommonJS(eventEmitter_exports);
- class EventEmitter {
- constructor(platform) {
- this._events = void 0;
- this._eventsCount = 0;
- this._maxListeners = void 0;
- this._pendingHandlers = /* @__PURE__ */ new Map();
- this._platform = platform;
- if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) {
- this._events = /* @__PURE__ */ Object.create(null);
- this._eventsCount = 0;
- }
- this._maxListeners = this._maxListeners || void 0;
- this.on = this.addListener;
- this.off = this.removeListener;
- }
- setMaxListeners(n) {
- if (typeof n !== "number" || n < 0 || Number.isNaN(n))
- throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + ".");
- this._maxListeners = n;
- return this;
- }
- getMaxListeners() {
- return this._maxListeners === void 0 ? this._platform.defaultMaxListeners() : this._maxListeners;
- }
- emit(type, ...args) {
- const events = this._events;
- if (events === void 0)
- return false;
- const handler = events?.[type];
- if (handler === void 0)
- return false;
- if (typeof handler === "function") {
- this._callHandler(type, handler, args);
- } else {
- const len = handler.length;
- const listeners = handler.slice();
- for (let i = 0; i < len; ++i)
- this._callHandler(type, listeners[i], args);
- }
- return true;
- }
- _callHandler(type, handler, args) {
- const promise = Reflect.apply(handler, this, args);
- if (!(promise instanceof Promise))
- return;
- let set = this._pendingHandlers.get(type);
- if (!set) {
- set = /* @__PURE__ */ new Set();
- this._pendingHandlers.set(type, set);
- }
- set.add(promise);
- promise.catch((e) => {
- if (this._rejectionHandler)
- this._rejectionHandler(e);
- else
- throw e;
- }).finally(() => set.delete(promise));
- }
- addListener(type, listener) {
- return this._addListener(type, listener, false);
- }
- on(type, listener) {
- return this._addListener(type, listener, false);
- }
- _addListener(type, listener, prepend) {
- checkListener(listener);
- let events = this._events;
- let existing;
- if (events === void 0) {
- events = this._events = /* @__PURE__ */ Object.create(null);
- this._eventsCount = 0;
- } else {
- if (events.newListener !== void 0) {
- this.emit("newListener", type, unwrapListener(listener));
- events = this._events;
- }
- existing = events[type];
- }
- if (existing === void 0) {
- existing = events[type] = listener;
- ++this._eventsCount;
- } else {
- if (typeof existing === "function") {
- existing = events[type] = prepend ? [listener, existing] : [existing, listener];
- } else if (prepend) {
- existing.unshift(listener);
- } else {
- existing.push(listener);
- }
- const m = this.getMaxListeners();
- if (m > 0 && existing.length > m && !existing.warned) {
- existing.warned = true;
- const w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit");
- w.name = "MaxListenersExceededWarning";
- w.emitter = this;
- w.type = type;
- w.count = existing.length;
- if (!this._platform.isUnderTest()) {
- console.warn(w);
- }
- }
- }
- return this;
- }
- prependListener(type, listener) {
- return this._addListener(type, listener, true);
- }
- once(type, listener) {
- checkListener(listener);
- this.on(type, new OnceWrapper(this, type, listener).wrapperFunction);
- return this;
- }
- prependOnceListener(type, listener) {
- checkListener(listener);
- this.prependListener(type, new OnceWrapper(this, type, listener).wrapperFunction);
- return this;
- }
- removeListener(type, listener) {
- checkListener(listener);
- const events = this._events;
- if (events === void 0)
- return this;
- const list = events[type];
- if (list === void 0)
- return this;
- if (list === listener || list.listener === listener) {
- if (--this._eventsCount === 0) {
- this._events = /* @__PURE__ */ Object.create(null);
- } else {
- delete events[type];
- if (events.removeListener)
- this.emit("removeListener", type, list.listener ?? listener);
- }
- } else if (typeof list !== "function") {
- let position = -1;
- let originalListener;
- for (let i = list.length - 1; i >= 0; i--) {
- if (list[i] === listener || wrappedListener(list[i]) === listener) {
- originalListener = wrappedListener(list[i]);
- position = i;
- break;
- }
- }
- if (position < 0)
- return this;
- if (position === 0)
- list.shift();
- else
- list.splice(position, 1);
- if (list.length === 1)
- events[type] = list[0];
- if (events.removeListener !== void 0)
- this.emit("removeListener", type, originalListener || listener);
- }
- return this;
- }
- off(type, listener) {
- return this.removeListener(type, listener);
- }
- removeAllListeners(type, options) {
- this._removeAllListeners(type);
- if (!options)
- return this;
- if (options.behavior === "wait") {
- const errors = [];
- this._rejectionHandler = (error) => errors.push(error);
- return this._waitFor(type).then(() => {
- if (errors.length)
- throw errors[0];
- });
- }
- if (options.behavior === "ignoreErrors")
- this._rejectionHandler = () => {
- };
- return Promise.resolve();
- }
- _removeAllListeners(type) {
- const events = this._events;
- if (!events)
- return;
- if (!events.removeListener) {
- if (type === void 0) {
- this._events = /* @__PURE__ */ Object.create(null);
- this._eventsCount = 0;
- } else if (events[type] !== void 0) {
- if (--this._eventsCount === 0)
- this._events = /* @__PURE__ */ Object.create(null);
- else
- delete events[type];
- }
- return;
- }
- if (type === void 0) {
- const keys = Object.keys(events);
- let key;
- for (let i = 0; i < keys.length; ++i) {
- key = keys[i];
- if (key === "removeListener")
- continue;
- this._removeAllListeners(key);
- }
- this._removeAllListeners("removeListener");
- this._events = /* @__PURE__ */ Object.create(null);
- this._eventsCount = 0;
- return;
- }
- const listeners = events[type];
- if (typeof listeners === "function") {
- this.removeListener(type, listeners);
- } else if (listeners !== void 0) {
- for (let i = listeners.length - 1; i >= 0; i--)
- this.removeListener(type, listeners[i]);
- }
- }
- listeners(type) {
- return this._listeners(this, type, true);
- }
- rawListeners(type) {
- return this._listeners(this, type, false);
- }
- listenerCount(type) {
- const events = this._events;
- if (events !== void 0) {
- const listener = events[type];
- if (typeof listener === "function")
- return 1;
- if (listener !== void 0)
- return listener.length;
- }
- return 0;
- }
- eventNames() {
- return this._eventsCount > 0 && this._events ? Reflect.ownKeys(this._events) : [];
- }
- async _waitFor(type) {
- let promises = [];
- if (type) {
- promises = [...this._pendingHandlers.get(type) || []];
- } else {
- promises = [];
- for (const [, pending] of this._pendingHandlers)
- promises.push(...pending);
- }
- await Promise.all(promises);
- }
- _listeners(target, type, unwrap) {
- const events = target._events;
- if (events === void 0)
- return [];
- const listener = events[type];
- if (listener === void 0)
- return [];
- if (typeof listener === "function")
- return unwrap ? [unwrapListener(listener)] : [listener];
- return unwrap ? unwrapListeners(listener) : listener.slice();
- }
- }
- function checkListener(listener) {
- if (typeof listener !== "function")
- throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
- }
- class OnceWrapper {
- constructor(eventEmitter, eventType, listener) {
- this._fired = false;
- this._eventEmitter = eventEmitter;
- this._eventType = eventType;
- this._listener = listener;
- this.wrapperFunction = this._handle.bind(this);
- this.wrapperFunction.listener = listener;
- }
- _handle(...args) {
- if (this._fired)
- return;
- this._fired = true;
- this._eventEmitter.removeListener(this._eventType, this.wrapperFunction);
- return this._listener.apply(this._eventEmitter, args);
- }
- }
- function unwrapListener(l) {
- return wrappedListener(l) ?? l;
- }
- function unwrapListeners(arr) {
- return arr.map((l) => wrappedListener(l) ?? l);
- }
- function wrappedListener(l) {
- return l.listener;
- }
- // Annotate the CommonJS export names for ESM import in node:
- 0 && (module.exports = {
- EventEmitter
- });
|