aboutsummaryrefslogtreecommitdiff
path: root/src/js/out/modules/node/events.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/out/modules/node/events.js')
-rw-r--r--src/js/out/modules/node/events.js341
1 files changed, 341 insertions, 0 deletions
diff --git a/src/js/out/modules/node/events.js b/src/js/out/modules/node/events.js
new file mode 100644
index 000000000..5991aba52
--- /dev/null
+++ b/src/js/out/modules/node/events.js
@@ -0,0 +1,341 @@
+function throwNotImplemented(feature, issue) {
+ throw hideFromStack(throwNotImplemented), new NotImplementedError(feature, issue);
+}
+function hideFromStack(...fns) {
+ for (let fn of fns)
+ Object.defineProperty(fn, "name", {
+ value: "::bunternal::"
+ });
+}
+
+class NotImplementedError extends Error {
+ code;
+ constructor(feature, issue) {
+ super(feature + " is not yet implemented in Bun." + (issue ? " Track the status & thumbs up the issue: https://github.com/oven-sh/bun/issues/" + issue : ""));
+ this.name = "NotImplementedError", this.code = "ERR_NOT_IMPLEMENTED", hideFromStack(NotImplementedError);
+ }
+}
+
+// src/js/node/events.js
+var EventEmitter = function(opts) {
+ if (this._events === void 0 || this._events === this.__proto__._events)
+ this._events = { __proto__: null }, this._eventsCount = 0;
+ if (this._maxListeners ??= void 0, this[kCapture] = opts?.captureRejections ? Boolean(opts?.captureRejections) : EventEmitterPrototype[kCapture])
+ this.emit = emitWithRejectionCapture;
+}, emitError = function(emitter, args) {
+ var { _events: events } = emitter;
+ if (args[0] ??= new Error("Unhandled error."), !events)
+ throw args[0];
+ var errorMonitor = events[kErrorMonitor];
+ if (errorMonitor)
+ for (var handler of ArrayPrototypeSlice.call(errorMonitor))
+ handler.apply(emitter, args);
+ var handlers = events.error;
+ if (!handlers)
+ throw args[0];
+ for (var handler of ArrayPrototypeSlice.call(handlers))
+ handler.apply(emitter, args);
+ return !0;
+}, addCatch = function(emitter, promise, type, args) {
+ promise.then(void 0, function(err) {
+ process.nextTick(emitUnhandledRejectionOrErr, emitter, err, type, args);
+ });
+}, emitUnhandledRejectionOrErr = function(emitter, err, type, args) {
+ if (typeof emitter[kRejection] === "function")
+ emitter[kRejection](err, type, ...args);
+ else
+ try {
+ emitter[kCapture] = !1, emitter.emit("error", err);
+ } finally {
+ emitter[kCapture] = !0;
+ }
+}, overflowWarning = function(emitter, type, handlers) {
+ handlers.warned = !0;
+ const warn = new Error(`Possible EventEmitter memory leak detected. ${handlers.length} ${String(type)} listeners ` + `added to [${emitter.constructor.name}]. Use emitter.setMaxListeners() to increase limit`);
+ warn.name = "MaxListenersExceededWarning", warn.emitter = emitter, warn.type = type, warn.count = handlers.length, process.emitWarning(warn);
+}, onceWrapper = function(type, listener, ...args) {
+ this.removeListener(type, listener), listener.apply(this, args);
+}, once = function(emitter, type, options) {
+ var signal = options?.signal;
+ if (validateAbortSignal(signal, "options.signal"), signal?.aborted)
+ throw new AbortError(void 0, { cause: signal?.reason });
+ return new Promise((resolve, reject) => {
+ const errorListener = (err) => {
+ if (emitter.removeListener(type, resolver), signal != null)
+ eventTargetAgnosticRemoveListener(signal, "abort", abortListener);
+ reject(err);
+ }, resolver = (...args) => {
+ if (typeof emitter.removeListener === "function")
+ emitter.removeListener("error", errorListener);
+ if (signal != null)
+ eventTargetAgnosticRemoveListener(signal, "abort", abortListener);
+ resolve(args);
+ };
+ if (eventTargetAgnosticAddListener(emitter, type, resolver, { once: !0 }), type !== "error" && typeof emitter.once === "function")
+ emitter.once("error", errorListener);
+ function abortListener() {
+ eventTargetAgnosticRemoveListener(emitter, type, resolver), eventTargetAgnosticRemoveListener(emitter, "error", errorListener), reject(new AbortError(void 0, { cause: signal?.reason }));
+ }
+ if (signal != null)
+ eventTargetAgnosticAddListener(signal, "abort", abortListener, { once: !0 });
+ });
+}, on = function(emitter, type, options) {
+ var { signal, close, highWatermark = Number.MAX_SAFE_INTEGER, lowWatermark = 1 } = options || {};
+ throwNotImplemented("events.on", 2679);
+}, getEventListeners = function(emitter, type) {
+ if (emitter instanceof EventTarget)
+ throwNotImplemented("getEventListeners with an EventTarget", 2678);
+ return emitter.listeners(type);
+}, setMaxListeners = function(n, ...eventTargets) {
+ validateNumber(n, "setMaxListeners", 0);
+ var length;
+ if (eventTargets && (length = eventTargets.length))
+ for (let i = 0;i < length; i++)
+ eventTargets[i].setMaxListeners(n);
+ else
+ defaultMaxListeners = n;
+}, listenerCount = function(emitter, type) {
+ return emitter.listenerCount(type);
+}, eventTargetAgnosticRemoveListener = function(emitter, name, listener, flags) {
+ if (typeof emitter.removeListener === "function")
+ emitter.removeListener(name, listener);
+ else
+ emitter.removeEventListener(name, listener, flags);
+}, eventTargetAgnosticAddListener = function(emitter, name, listener, flags) {
+ if (typeof emitter.on === "function")
+ emitter.on(name, listener);
+ else
+ emitter.addEventListener(name, listener);
+}, ERR_INVALID_ARG_TYPE = function(name, type, value) {
+ const err = new TypeError(`The "${name}" argument must be of type ${type}. Received ${value}`);
+ return err.code = "ERR_INVALID_ARG_TYPE", err;
+}, ERR_OUT_OF_RANGE = function(name, range, value) {
+ const err = new RangeError(`The "${name}" argument is out of range. It must be ${range}. Received ${value}`);
+ return err.code = "ERR_OUT_OF_RANGE", err;
+}, validateAbortSignal = function(signal, name) {
+ if (signal !== void 0 && (signal === null || typeof signal !== "object" || !("aborted" in signal)))
+ throw new ERR_INVALID_ARG_TYPE(name, "AbortSignal", signal);
+}, validateNumber = function(value, name, min = void 0, max) {
+ if (typeof value !== "number")
+ throw new ERR_INVALID_ARG_TYPE(name, "number", value);
+ if (min != null && value < min || max != null && value > max || (min != null || max != null) && Number.isNaN(value))
+ throw new ERR_OUT_OF_RANGE(name, `${min != null ? `>= ${min}` : ""}${min != null && max != null ? " && " : ""}${max != null ? `<= ${max}` : ""}`, value);
+}, checkListener = function(listener) {
+ if (typeof listener !== "function")
+ throw new TypeError("The listener must be a function");
+}, { isPromise, Array, Object: Object2 } = import.meta.primordials, SymbolFor = Symbol.for, ObjectDefineProperty = Object2.defineProperty, kCapture = Symbol("kCapture"), kErrorMonitor = SymbolFor("events.errorMonitor"), kMaxEventTargetListeners = Symbol("events.maxEventTargetListeners"), kMaxEventTargetListenersWarned = Symbol("events.maxEventTargetListenersWarned"), kWatermarkData = SymbolFor("nodejs.watermarkData"), kRejection = SymbolFor("nodejs.rejection"), captureRejectionSymbol = SymbolFor("nodejs.rejection"), ArrayPrototypeSlice = Array.prototype.slice, defaultMaxListeners = 10, EventEmitterPrototype = EventEmitter.prototype;
+EventEmitterPrototype._events = void 0;
+EventEmitterPrototype._eventsCount = 0;
+EventEmitterPrototype._maxListeners = void 0;
+EventEmitterPrototype.setMaxListeners = function setMaxListeners2(n) {
+ return validateNumber(n, "setMaxListeners", 0), this._maxListeners = n, this;
+};
+EventEmitterPrototype.getMaxListeners = function getMaxListeners() {
+ return this._maxListeners ?? defaultMaxListeners;
+};
+var emitWithoutRejectionCapture = function emit(type, ...args) {
+ if (type === "error")
+ return emitError(this, args);
+ var { _events: events } = this;
+ if (events === void 0)
+ return !1;
+ var handlers = events[type];
+ if (handlers === void 0)
+ return !1;
+ for (var handler of [...handlers])
+ handler.apply(this, args);
+ return !0;
+}, emitWithRejectionCapture = function emit2(type, ...args) {
+ if (type === "error")
+ return emitError(this, args);
+ var { _events: events } = this;
+ if (events === void 0)
+ return !1;
+ var handlers = events[type];
+ if (handlers === void 0)
+ return !1;
+ for (var handler of [...handlers]) {
+ var result = handler.apply(this, args);
+ if (result !== void 0 && isPromise(result))
+ addCatch(this, result, type, args);
+ }
+ return !0;
+};
+EventEmitterPrototype.emit = emitWithoutRejectionCapture;
+EventEmitterPrototype.addListener = function addListener(type, fn) {
+ checkListener(fn);
+ var events = this._events;
+ if (!events)
+ events = this._events = { __proto__: null }, this._eventsCount = 0;
+ else if (events.newListener)
+ this.emit("newListener", type, fn.listener ?? fn);
+ var handlers = events[type];
+ if (!handlers)
+ events[type] = [fn], this._eventsCount++;
+ else {
+ handlers.push(fn);
+ var m = this._maxListeners ?? defaultMaxListeners;
+ if (m > 0 && handlers.length > m && !handlers.warned)
+ overflowWarning(this, type, handlers);
+ }
+ return this;
+};
+EventEmitterPrototype.on = EventEmitterPrototype.addListener;
+EventEmitterPrototype.prependListener = function prependListener(type, fn) {
+ checkListener(fn);
+ var events = this._events;
+ if (!events)
+ events = this._events = { __proto__: null }, this._eventsCount = 0;
+ else if (events.newListener)
+ this.emit("newListener", type, fn.listener ?? fn);
+ var handlers = events[type];
+ if (!handlers)
+ events[type] = [fn], this._eventsCount++;
+ else {
+ handlers.unshift(fn);
+ var m = this._maxListeners ?? defaultMaxListeners;
+ if (m > 0 && handlers.length > m && !handlers.warned)
+ overflowWarning(this, type, handlers);
+ }
+ return this;
+};
+EventEmitterPrototype.once = function once2(type, fn) {
+ checkListener(fn);
+ const bound = onceWrapper.bind(this, type, fn);
+ return bound.listener = fn, this.addListener(type, bound), this;
+};
+EventEmitterPrototype.prependOnceListener = function prependOnceListener(type, fn) {
+ checkListener(fn);
+ const bound = onceWrapper.bind(this, type, fn);
+ return bound.listener = fn, this.prependListener(type, bound), this;
+};
+EventEmitterPrototype.removeListener = function removeListener(type, fn) {
+ checkListener(fn);
+ var { _events: events } = this;
+ if (!events)
+ return this;
+ var handlers = events[type];
+ if (!handlers)
+ return this;
+ var length = handlers.length;
+ let position = -1;
+ for (let i = length - 1;i >= 0; i--)
+ if (handlers[i] === fn || handlers[i].listener === fn) {
+ position = i;
+ break;
+ }
+ if (position < 0)
+ return this;
+ if (position === 0)
+ handlers.shift();
+ else
+ handlers.splice(position, 1);
+ if (handlers.length === 0)
+ delete events[type], this._eventsCount--;
+ return this;
+};
+EventEmitterPrototype.off = EventEmitterPrototype.removeListener;
+EventEmitterPrototype.removeAllListeners = function removeAllListeners(type) {
+ var { _events: events } = this;
+ if (type && events) {
+ if (events[type])
+ delete events[type], this._eventsCount--;
+ } else
+ this._events = { __proto__: null };
+ return this;
+};
+EventEmitterPrototype.listeners = function listeners(type) {
+ var { _events: events } = this;
+ if (!events)
+ return [];
+ var handlers = events[type];
+ if (!handlers)
+ return [];
+ return handlers.map((x) => x.listener ?? x);
+};
+EventEmitterPrototype.rawListeners = function rawListeners(type) {
+ var { _events } = this;
+ if (!_events)
+ return [];
+ var handlers = _events[type];
+ if (!handlers)
+ return [];
+ return handlers.slice();
+};
+EventEmitterPrototype.listenerCount = function listenerCount2(type) {
+ var { _events: events } = this;
+ if (!events)
+ return 0;
+ return events[type]?.length ?? 0;
+};
+EventEmitterPrototype.eventNames = function eventNames() {
+ return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];
+};
+EventEmitterPrototype[kCapture] = !1;
+EventEmitter.once = once;
+EventEmitter.on = on;
+EventEmitter.getEventListeners = getEventListeners;
+EventEmitter.setMaxListeners = setMaxListeners;
+EventEmitter.listenerCount = listenerCount;
+EventEmitter.EventEmitter = EventEmitter;
+EventEmitter.usingDomains = !1;
+EventEmitter.captureRejectionSymbol = captureRejectionSymbol;
+ObjectDefineProperty(EventEmitter, "captureRejections", {
+ __proto__: null,
+ get() {
+ return EventEmitterPrototype[kCapture];
+ },
+ set(value) {
+ validateBoolean(value, "EventEmitter.captureRejections"), EventEmitterPrototype[kCapture] = value;
+ },
+ enumerable: !0
+});
+EventEmitter.errorMonitor = kErrorMonitor;
+Object2.defineProperties(EventEmitter, {
+ defaultMaxListeners: {
+ enumerable: !0,
+ get: () => {
+ return defaultMaxListeners;
+ },
+ set: (arg) => {
+ validateNumber(arg, "defaultMaxListeners", 0), defaultMaxListeners = arg;
+ }
+ },
+ kMaxEventTargetListeners: {
+ __proto__: null,
+ value: kMaxEventTargetListeners,
+ enumerable: !1,
+ configurable: !1,
+ writable: !1
+ },
+ kMaxEventTargetListenersWarned: {
+ __proto__: null,
+ value: kMaxEventTargetListenersWarned,
+ enumerable: !1,
+ configurable: !1,
+ writable: !1
+ }
+});
+EventEmitter.init = EventEmitter;
+EventEmitter[Symbol.for("CommonJS")] = 0;
+var events_default = EventEmitter;
+
+class AbortError extends Error {
+ constructor(message = "The operation was aborted", options = void 0) {
+ if (options !== void 0 && typeof options !== "object")
+ throw new codes.ERR_INVALID_ARG_TYPE("options", "Object", options);
+ super(message, options);
+ this.code = "ABORT_ERR", this.name = "AbortError";
+ }
+}
+
+class EventEmitterAsyncResource extends EventEmitter {
+ constructor(options = void 0) {
+ throwNotImplemented("EventEmitterAsyncResource", 1832);
+ }
+}
+EventEmitter.EventEmitterAsyncResource = EventEmitterAsyncResource;
+export {
+ events_default as default,
+ EventEmitterAsyncResource
+};