{"_id":"@dolanske/eminem","name":"@dolanske/eminem","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dolanske/eminem","type":"module","version":"1.0.0","private":false,"description":"Slim and fully type-safe event emitter.","author":{"name":"dolanske"},"license":"GPL-3.0","repository":{"type":"git","url":"git+https://github.com/dolanske/eminem.git"},"keywords":["javascript","typescript","emitter","event-emitter","eminem"],"exports":{".":{"import":"./dist/eminem.js"}},"main":"./dist/eminem.js","module":"./dist/eminem.js","types":"./dist/eminem.d.ts","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview"},"devDependencies":{"@antfu/eslint-config":"^2.21.0","eslint":"^8.57.0","typescript":"^5.2.2","vite":"^5.2.0","vite-plugin-dts":"^3.9.1"},"_id":"@dolanske/eminem@1.0.0","gitHead":"1f0e79a6643f623fae898c424d5226feec09b44c","bugs":{"url":"https://github.com/dolanske/eminem/issues"},"homepage":"https://github.com/dolanske/eminem#readme","_nodeVersion":"21.7.1","_npmVersion":"10.7.0","dist":{"integrity":"sha512-XNCxGUddXzLM8ku1eNor1dkRtDq/6UbYX3Zz3ABH7RsFP64lSZsEaJRLgyVGxAOAi3QnvZuenPBRZdsWSTshYA==","shasum":"de71c9d2ef02f51c6eb20995c6899ee401774cb3","tarball":"https://registry.npmjs.org/@dolanske/eminem/-/eminem-1.0.0.tgz","fileCount":4,"unpackedSize":4436,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZ+bFLl8nbAMkpSdwaMtimFfhoDm/XxWRNZyIYRkmu+wIgMIuoxusEqvBmtufNZuIZFeby4L+dsQ6EbJGwddOrR/8="}]},"_npmUser":{"name":"dolanske","email":"dolanovsky@gmail.com"},"directories":{},"maintainers":[{"name":"dolanske","email":"dolanovsky@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eminem_1.0.0_1731680076327_0.07866896631337505"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-15T14:14:36.175Z","1.0.0":"2024-11-15T14:14:36.482Z","modified":"2024-11-15T14:14:36.810Z"},"maintainers":[{"name":"dolanske","email":"dolanovsky@gmail.com"}],"description":"Slim and fully type-safe event emitter.","homepage":"https://github.com/dolanske/eminem#readme","keywords":["javascript","typescript","emitter","event-emitter","eminem"],"repository":{"type":"git","url":"git+https://github.com/dolanske/eminem.git"},"author":{"name":"dolanske"},"bugs":{"url":"https://github.com/dolanske/eminem/issues"},"license":"GPL-3.0","readme":"# Eminem\r\n\r\nHave you ever wanted to register and emit events and realized there's not a single library out there, that fulfills this very specific and niche need? You're not gonna believe the next part. Your wait is over. Welcome to Eminem. Slim & fully type safe event mitter.\r\n\r\n### How to use it\r\n\r\n```ts\r\nimport { createEminem } from '@dolanske/eminem'\r\n\r\ninterface Events {\r\n  join: (username: string, timestamp: number) => void\r\n  leave: () => void\r\n}\r\n\r\n// Create new eminem instance and provide it with the\r\n// events you'll be using.\r\nconst emitter = createEminem<Events>()\r\n\r\n// Register event listeners\r\nemitter.on('join', (username, timestamp) => {\r\n  // username will be automatically typed as string\r\n})\r\n\r\n// Emit an event. The emit function will expect the same\r\n// arguments that were provided when new emitter was registered\r\nemitter.emit('join', 'dolanske', Date.now())\r\nemitter.emit('leave')\r\n```\r\n\r\n### Api\r\n\r\n##### On\r\n\r\nRegister an event listener. The callback types are based on the name of the base events.\r\nReturns function, that when called, removes the provided callback from the listeners.\r\n\r\n```ts\r\nemitter.on<Name extends keyof Events>(event: Name, callback: Events[Name]) => StopperFn\r\n```\r\n\r\n##### Emit\r\n\r\nEmit an event. This event can also contain optional parameters\r\n\r\n```ts\r\nemitter.emit<Name extends keyof Events>(event: Name, ...args: Parameters<Events[Name]>) => void\r\n```\r\n\r\n##### Flush\r\n\r\nSimilar to `emit`, but all registered listener callbacks are removed afterwards.\r\n\r\n```ts\r\nemitter.flush<Name extends keyof Events>(event: Name, ...args: Parameters<Events[Name]>) => void\r\n```\r\n\r\n##### Clear key\r\n\r\nRemoves all registered listener callbacks for a specific event.\r\n\r\n```ts\r\nemitter.clearKey<Name extends keyof Events>(event: Name) => void\r\n```\r\n\r\n##### Reset\r\n\r\nResets the entire emitter. Remove all registered listener callbacks.\r\n\r\n```ts\r\nemitter.reset() => void\r\n```\r\n","readmeFilename":"README.md"}