@techmely/utils
Version:
Collection of helpful JavaScript / TypeScript utils
84 lines (80 loc) • 2.21 kB
JavaScript
/*!
* @techmely/utils
* Copyright(c) 2021-2024 Techmely <techmely.creation@gmail.com>
* MIT Licensed
*/
;
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);
// src/emitter.ts
var emitter_exports = {};
__export(emitter_exports, {
default: () => emitter_default,
emitter: () => emitter
});
module.exports = __toCommonJS(emitter_exports);
function emitter(all) {
const events = all || /* @__PURE__ */ new Map();
const getHandlers = (type) => events.get(type);
function on(type, handler) {
const handlers = getHandlers(type);
if (handlers) {
handlers.push(handler);
} else {
events.set(type, [handler]);
}
}
function off(type, handler) {
const handlers = getHandlers(type);
if (handlers) {
if (handler) {
const indexHandler = handlers.indexOf(handler) >>> 0;
handlers.splice(indexHandler, 1);
} else {
events.set(type, []);
}
}
}
function emit(type, event) {
let handlers = getHandlers(type);
if (handlers) {
for (const handler of handlers) {
if (event)
handler(event);
}
}
handlers = events.get("*");
if (handlers) {
for (const handler of handlers) {
if (event)
handler(type, event);
}
}
}
return {
events,
on,
off,
emit
};
}
var emitter_default = emitter;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
emitter
});