summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/vendor/mitt/src
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /remote/test/puppeteer/vendor/mitt/src
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'remote/test/puppeteer/vendor/mitt/src')
-rw-r--r--remote/test/puppeteer/vendor/mitt/src/index.ts85
1 files changed, 85 insertions, 0 deletions
diff --git a/remote/test/puppeteer/vendor/mitt/src/index.ts b/remote/test/puppeteer/vendor/mitt/src/index.ts
new file mode 100644
index 0000000000..ae85607f7c
--- /dev/null
+++ b/remote/test/puppeteer/vendor/mitt/src/index.ts
@@ -0,0 +1,85 @@
+export type EventType = string | symbol;
+
+// An event handler can take an optional event argument
+// and should not return a value
+export type Handler<T = any> = (event?: T) => void;
+export type WildcardHandler = (type: EventType, event?: any) => void;
+
+// An array of all currently registered event handlers for a type
+export type EventHandlerList = Array<Handler>;
+export type WildCardEventHandlerList = Array<WildcardHandler>;
+
+// A map of event types and their corresponding event handlers.
+export type EventHandlerMap = Map<EventType, EventHandlerList | WildCardEventHandlerList>;
+
+export interface Emitter {
+ all: EventHandlerMap;
+
+ on<T = any>(type: EventType, handler: Handler<T>): void;
+ on(type: '*', handler: WildcardHandler): void;
+
+ off<T = any>(type: EventType, handler: Handler<T>): void;
+ off(type: '*', handler: WildcardHandler): void;
+
+ emit<T = any>(type: EventType, event?: T): void;
+ emit(type: '*', event?: any): void;
+}
+
+/**
+ * Mitt: Tiny (~200b) functional event emitter / pubsub.
+ * @name mitt
+ * @returns {Mitt}
+ */
+export default function mitt(all?: EventHandlerMap): Emitter {
+ all = all || new Map();
+
+ return {
+
+ /**
+ * A Map of event names to registered handler functions.
+ */
+ all,
+
+ /**
+ * Register an event handler for the given type.
+ * @param {string|symbol} type Type of event to listen for, or `"*"` for all events
+ * @param {Function} handler Function to call in response to given event
+ * @memberOf mitt
+ */
+ on<T = any>(type: EventType, handler: Handler<T>) {
+ const handlers = all.get(type);
+ const added = handlers && handlers.push(handler);
+ if (!added) {
+ all.set(type, [handler]);
+ }
+ },
+
+ /**
+ * Remove an event handler for the given type.
+ * @param {string|symbol} type Type of event to unregister `handler` from, or `"*"`
+ * @param {Function} handler Handler function to remove
+ * @memberOf mitt
+ */
+ off<T = any>(type: EventType, handler: Handler<T>) {
+ const handlers = all.get(type);
+ if (handlers) {
+ handlers.splice(handlers.indexOf(handler) >>> 0, 1);
+ }
+ },
+
+ /**
+ * Invoke all handlers for the given type.
+ * If present, `"*"` handlers are invoked after type-matched handlers.
+ *
+ * Note: Manually firing "*" handlers is not supported.
+ *
+ * @param {string|symbol} type The event type to invoke
+ * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler
+ * @memberOf mitt
+ */
+ emit<T = any>(type: EventType, evt: T) {
+ ((all.get(type) || []) as EventHandlerList).slice().map((handler) => { handler(evt); });
+ ((all.get('*') || []) as WildCardEventHandlerList).slice().map((handler) => { handler(type, evt); });
+ }
+ };
+}