UNPKG

@busy-hour/blaze

Version:

<h1 align='center'>🔥 Blaze</h1> <div align='center'> An event driven framework for 🔥 Hono.js </div>

106 lines (105 loc) • 3.19 kB
"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 event_emitter_exports = {}; __export(event_emitter_exports, { BlazeEventEmitter: () => BlazeEventEmitter }); module.exports = __toCommonJS(event_emitter_exports); var import_map = require("../map/index"); class BlazeEventEmitter { $maxListeners; $emitter; constructor(options = {}) { this.$maxListeners = options?.maxListener ?? 100; this.$emitter = options.useMap ? /* @__PURE__ */ new Map() : new import_map.BlazeMap(); } listenerCount(eventName) { return this.$emitter.get(eventName)?.size ?? 0; } get maxListeners() { return this.$maxListeners; } set maxListeners(value) { this.$maxListeners = value; } emit(eventName, ...values) { if (!this.$emitter.has(eventName)) { return false; } this.$emitter.get(eventName)?.forEach?.((listener) => { listener(...values); }); return true; } // eslint-disable-next-line no-use-before-define, @typescript-eslint/no-shadow async emitAsync(eventName, ...values) { if (!this.$emitter.has(eventName)) { return []; } return await Promise.all( [...this.$emitter.get(eventName) ?? []].map( (listener) => listener(...values) ) ); } on(eventName, listener) { const listenerCount = this.listenerCount(eventName); if (!this.$emitter.has(eventName)) { this.$emitter.set(eventName, /* @__PURE__ */ new Set()); } if (listenerCount >= this.$maxListeners) return; this.$emitter.get(eventName)?.add(listener); } off(eventName, listener) { if (!this.$emitter.has(eventName)) return; this.$emitter.get(eventName)?.delete(listener); } offAll(eventName) { if (eventName) { this.$emitter.delete(eventName); return; } this.$emitter.clear(); } eventNames() { return [...this.$emitter.keys()]; } listeners(eventName) { return [...this.$emitter.get(eventName) ?? []]; } rawListeners(eventName) { const listenerSet = /* @__PURE__ */ new Set(); if (this.$emitter.has(eventName)) { this.$emitter.get(eventName)?.forEach((listener) => { listenerSet.add(listener); }); } return listenerSet; } // Aliases addListener = this.on; removeListener = this.off; removeAllListeners = this.offAll; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { BlazeEventEmitter });