{"_id":"tiny-typed-emitter","_rev":"4218030","name":"tiny-typed-emitter","description":"Fully type-checked EventEmitter","dist-tags":{"latest":"2.1.0"},"maintainers":[{"name":"binier","email":""}],"time":{"modified":"2026-03-04T17:13:58.000Z","created":"2020-05-04T13:45:33.463Z","2.1.0":"2021-07-24T08:55:44.672Z","2.0.3":"2020-09-19T14:30:49.182Z","2.0.2":"2020-06-12T14:59:00.955Z","2.0.1":"2020-05-05T11:39:12.085Z","1.1.0":"2020-05-04T15:27:44.501Z","1.0.0":"2020-05-04T13:45:33.463Z"},"users":{},"author":{"name":"Zurab Benashvili","email":"zura.benashvili@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/binier/tiny-typed-emitter.git"},"versions":{"2.1.0":{"name":"tiny-typed-emitter","version":"2.1.0","description":"Fully type-checked EventEmitter","main":"lib/index","repository":{"type":"git","url":"git+https://github.com/binier/tiny-typed-emitter.git"},"author":{"name":"Zurab Benashvili","email":"zura.benashvili@gmail.com"},"license":"MIT","keywords":["tiny-typed-emitter","typed-event-emitter","typescript","typescript-library","typescript-boilerplate","nodejs","nodejs-library","event","events","event-emitter","event-emitters","eventemitter","eventemitter3","definitelytyped","typings","definitely-typed"],"scripts":{"release":"npm publish"},"devDependencies":{"@types/node":"^13.13.4","typescript":"^3.8.3"},"gitHead":"66c1b66bc159675352a6f38911e4c6cf2117f3e4","bugs":{"url":"https://github.com/binier/tiny-typed-emitter/issues"},"homepage":"https://github.com/binier/tiny-typed-emitter#readme","_id":"tiny-typed-emitter@2.1.0","_nodeVersion":"14.16.0","_npmVersion":"7.11.1","dist":{"shasum":"b3b027fdd389ff81a152c8e847ee2f5be9fad7b5","size":2378,"noattachment":false,"key":"/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-typed-emitter/download/tiny-typed-emitter-2.1.0.tgz"},"_npmUser":{"name":"binier","email":"zura.bena1@gmail.com"},"directories":{},"maintainers":[{"name":"binier","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-typed-emitter_2.1.0_1627116944529_0.3938403582541383"},"_hasShrinkwrap":false,"publish_time":1627116944672,"_cnpm_publish_time":1627116944672,"_cnpmcore_publish_time":"2021-12-16T11:16:01.807Z"},"2.0.3":{"name":"tiny-typed-emitter","version":"2.0.3","description":"Fully type-checked EventEmitter","main":"lib/index","repository":{"type":"git","url":"git+https://github.com/binier/tiny-typed-emitter.git"},"author":{"name":"Zurab Benashvili","email":"zura.benashvili@gmail.com"},"license":"MIT","keywords":["tiny-typed-emitter","typed-event-emitter","typescript","typescript-library","typescript-boilerplate","nodejs","nodejs-library","event","events","event-emitter","event-emitters","eventemitter","eventemitter3","definitelytyped","typings","definitely-typed"],"scripts":{"release":"npm publish"},"devDependencies":{"@types/node":"^13.13.4","typescript":"^3.8.3"},"gitHead":"d21df3a0d3f475221ad61382bdeecd753029caf3","bugs":{"url":"https://github.com/binier/tiny-typed-emitter/issues"},"homepage":"https://github.com/binier/tiny-typed-emitter#readme","_id":"tiny-typed-emitter@2.0.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"4335e3a75127ae7faba91b02e91615d97dc8db7d","size":2387,"noattachment":false,"key":"/tiny-typed-emitter/-/tiny-typed-emitter-2.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-typed-emitter/download/tiny-typed-emitter-2.0.3.tgz"},"maintainers":[{"name":"binier","email":""}],"_npmUser":{"name":"binier","email":"zura.bena1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-typed-emitter_2.0.3_1600525849084_0.7515950904304225"},"_hasShrinkwrap":false,"publish_time":1600525849182,"_cnpm_publish_time":1600525849182,"_cnpmcore_publish_time":"2021-12-16T11:16:02.039Z"},"2.0.2":{"name":"tiny-typed-emitter","version":"2.0.2","description":"Fully type-checked EventEmitter","main":"lib/index","repository":{"type":"git","url":"git+https://github.com/binier/tiny-typed-emitter.git"},"author":{"name":"Zurab Benashvili","email":"zura.benashvili@gmail.com"},"license":"MIT","keywords":["tiny-typed-emitter","typed-event-emitter","typescript","typescript-library","typescript-boilerplate","nodejs","nodejs-library","event","events","event-emitter","event-emitters","eventemitter","eventemitter3","definitelytyped","typings","definitely-typed"],"scripts":{"release":"npm publish"},"devDependencies":{"@types/node":"^13.13.4","typescript":"^3.8.3"},"gitHead":"1d242efef658b8f7ee1bd85e1a3040be2e44ce8a","bugs":{"url":"https://github.com/binier/tiny-typed-emitter/issues"},"homepage":"https://github.com/binier/tiny-typed-emitter#readme","_id":"tiny-typed-emitter@2.0.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"8f28385851a627acc8a4f5e63b8c654ae75ad23f","size":2130,"noattachment":false,"key":"/tiny-typed-emitter/-/tiny-typed-emitter-2.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-typed-emitter/download/tiny-typed-emitter-2.0.2.tgz"},"maintainers":[{"name":"binier","email":""}],"_npmUser":{"name":"binier","email":"zura.bena1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-typed-emitter_2.0.2_1591973940747_0.5585399684529346"},"_hasShrinkwrap":false,"publish_time":1591973940955,"_cnpm_publish_time":1591973940955,"_cnpmcore_publish_time":"2021-12-16T11:16:02.542Z"},"2.0.1":{"name":"tiny-typed-emitter","version":"2.0.1","description":"Fully type-checked EventEmitter","main":"lib/index","repository":{"type":"git","url":"git+https://github.com/binier/tiny-typed-emitter.git"},"author":{"name":"Zurab Benashvili","email":"zura.benashvili@gmail.com"},"license":"MIT","scripts":{"release":"npm publish"},"devDependencies":{"@types/node":"^13.13.4","typescript":"^3.8.3"},"gitHead":"ea3c29d56d504db6c56c316dbabb92bf6a24ec66","bugs":{"url":"https://github.com/binier/tiny-typed-emitter/issues"},"homepage":"https://github.com/binier/tiny-typed-emitter#readme","_id":"tiny-typed-emitter@2.0.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"shasum":"6ee2384bd79718a186dbc691d56564458d3aaec7","size":2050,"noattachment":false,"key":"/tiny-typed-emitter/-/tiny-typed-emitter-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-typed-emitter/download/tiny-typed-emitter-2.0.1.tgz"},"maintainers":[{"name":"binier","email":""}],"_npmUser":{"name":"binier","email":"zura.bena1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-typed-emitter_2.0.1_1588678751997_0.35842282739856324"},"_hasShrinkwrap":false,"publish_time":1588678752085,"_cnpm_publish_time":1588678752085,"_cnpmcore_publish_time":"2021-12-16T11:16:02.749Z"},"1.1.0":{"name":"tiny-typed-emitter","version":"1.1.0","description":"Fully type-checked EventEmitter","main":"dist/index","repository":{"type":"git","url":"git+https://github.com/binier/tiny-typed-emitter.git"},"author":{"name":"Zurab Benashvili","email":"zura.benashvili@gmail.com"},"license":"MIT","scripts":{"build":"tsc","release":"npm run build && npm publish"},"devDependencies":{"@types/node":"^13.13.4","typescript":"^3.8.3"},"gitHead":"316ebe3c11d1984adc45240921835eeca45f7d2b","bugs":{"url":"https://github.com/binier/tiny-typed-emitter/issues"},"homepage":"https://github.com/binier/tiny-typed-emitter#readme","_id":"tiny-typed-emitter@1.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"shasum":"3f6e3d880614a2ddda18b39a7aa8b187a7aaf09b","size":2793,"noattachment":false,"key":"/tiny-typed-emitter/-/tiny-typed-emitter-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-typed-emitter/download/tiny-typed-emitter-1.1.0.tgz"},"maintainers":[{"name":"binier","email":""}],"_npmUser":{"name":"binier","email":"zura.bena1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-typed-emitter_1.1.0_1588606064391_0.5656093642940643"},"_hasShrinkwrap":false,"publish_time":1588606064501,"_cnpm_publish_time":1588606064501,"_cnpmcore_publish_time":"2021-12-16T11:16:03.240Z"},"1.0.0":{"name":"tiny-typed-emitter","version":"1.0.0","description":"Fully type-checked EventEmitter","main":"dist/index","repository":{"type":"git","url":"git+https://github.com/binier/tiny-typed-emitter.git"},"author":{"name":"Zurab Benashvili","email":"zura.benashvili@gmail.com"},"license":"MIT","scripts":{"build":"tsc","release":"npm run build && npm publish"},"devDependencies":{"@types/node":"^13.13.4","typescript":"^3.8.3"},"gitHead":"eacaf3c9055e0958b91067a14992dadc2fe82da1","bugs":{"url":"https://github.com/binier/tiny-typed-emitter/issues"},"homepage":"https://github.com/binier/tiny-typed-emitter#readme","_id":"tiny-typed-emitter@1.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"shasum":"0d1638788de244fd5be4109485fc65699ea8ab6b","size":2714,"noattachment":false,"key":"/tiny-typed-emitter/-/tiny-typed-emitter-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-typed-emitter/download/tiny-typed-emitter-1.0.0.tgz"},"maintainers":[{"name":"binier","email":""}],"_npmUser":{"name":"binier","email":"zura.bena1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-typed-emitter_1.0.0_1588599933348_0.6307220009391301"},"_hasShrinkwrap":false,"publish_time":1588599933463,"_cnpm_publish_time":1588599933463,"_cnpmcore_publish_time":"2021-12-16T11:16:03.445Z"}},"readme":"# tiny-typed-emitter\n\nHave your events and their listeners type-checked with [no overhead](#no-overhead).\n\n[![npm version](https://badge.fury.io/js/tiny-typed-emitter.svg)](https://badge.fury.io/js/tiny-typed-emitter)\n\n## Install\n  Simply add the dependency using **npm**:\n```console\n$ npm i tiny-typed-emitter\n```\n  or using **yarn**:\n```console\n$ yarn add tiny-typed-emitter\n```\n\n## Usage\n\n1. import **tiny-typed-emitter** library:\n\n  ```ts\n  import { TypedEmitter } from 'tiny-typed-emitter';\n  ```\n\n2. define events and their listener signatures (**note:** quotes around event names are not mandatory):\n  ```ts\n  interface MyClassEvents {\n    'added': (el: string, wasNew: boolean) => void;\n    'deleted': (deletedCount: number) => void;\n  }\n  ```\n\n3. on this step depending on your use case, you can:\n  - define your custom class extending `EventEmitter`:\n    ```ts\n    class MyClass extends TypedEmitter<MyClassEvents> {\n      constructor() {\n        super();\n      }\n    }\n    ```\n  - create new event emitter instance:\n    ```ts\n    const emitter = new TypedEmitter<MyClassEvent>();\n    ```\n\n## Generic events interface\nTo use with generic events interface:\n\n```ts\ninterface MyClassEvents<T> {\n  'added': (el: T, wasNew: boolean) => void;\n}\n\nclass MyClass<T> extends TypedEmitter<MyClassEvents<T>> {\n\n}\n```\n\n## Compatible subclasses with different events\n\nThe type of `eventNames()` is a superset of the actual event names to make\nsubclasses of a `TypedEmitter` that introduce different events type\ncompatible. For example the following is possible:\n\n```ts\nclass Animal<E extends ListenerSignature<E>=ListenerSignature<unknown>> extends TypedEmitter<{spawn: () => void} & E> {\n  constructor() {\n    super();\n  }\n}\n\nclass Frog<E extends ListenerSignature<E>> extends Animal<{jump: () => void} & E> {\n}\n\nclass Bird<E extends ListenerSignature<E>> extends Animal<{fly: () => void} & E> {\n}\n\nconst animals: Animal[] = [new Frog(), new Bird()];\n```\n\n## No Overhead\nLibrary adds no overhead. All it does is it simply reexports renamed `EventEmitter`\nwith customized typings.\nYou can check **lib/index.js** to see the exported code.\n","_attachments":{},"homepage":"https://github.com/binier/tiny-typed-emitter#readme","bugs":{"url":"https://github.com/binier/tiny-typed-emitter/issues"},"license":"MIT"}