{"_id":"@arayutw/emitter","_rev":"1-ad8879916cac04ac1daf6c83109473b1","name":"@arayutw/emitter","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@arayutw/emitter","version":"0.0.1","description":"Functional Event Emitter(Pubsub).","keywords":["event","emitter","pubsub"],"homepage":"https://github.com/arayutw/emitter","repository":{"type":"git","url":"git+https://github.com/arayutw/emitter.git"},"bugs":{"url":"https://github.com/arayutw/emitter/issues"},"main":"dist/scripts/emitter.cjs.js","module":"dist/scripts/emitter.esm.js","scripts":{"build":"node_modules/typescript/bin/tsc;node build/script.mjs","test":"node node_modules/jest/bin/jest"},"author":{"name":"Yuta Arai","email":"arayutw@gmail.com"},"license":"MIT","dependencies":{"@babel/core":"^7.21.0","@babel/preset-env":"^7.20.2","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-node-resolve":"^15.0.1","babel-loader":"^9.1.2","esbuild":"^0.17.10","jest":"^29.5.0","rollup":"^3.18.0","rollup-plugin-dts":"^5.2.0","rollup-plugin-esbuild":"^5.0.0","ts-jest":"^29.1.0","typescript":"^4.9.5","uglify-js":"^3.17.4"},"exports":{".":{"types":"./dist/scripts/index.d.ts","require":"./dist/scripts/emitter.cjs.js","import":"./dist/scripts/emitter.esm.js","default":"./dist/scripts/emitter.esm.js"}},"publishConfig":{"access":"public"},"gitHead":"30cdf823915971e0f43c88af093fdf7c85c63213","_id":"@arayutw/emitter@0.0.1","_nodeVersion":"18.14.2","_npmVersion":"9.6.2","dist":{"integrity":"sha512-STSW0Y5a1F4/Yq9wNcq8sBcGdlKyDbbaLdu5zquu+lCzZuPnyV1VaRwSfstTTEzcQZEkI8JcCUj1dKeLq17/HA==","shasum":"1b0a9a80453267cf8a3f4c6617006fce75eb2be7","tarball":"https://registry.npmjs.org/@arayutw/emitter/-/emitter-0.0.1.tgz","fileCount":21,"unpackedSize":19704,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqm542L51bkiPn1CfvfahKUOxPeOje8wl3kvtsvGg/eQIhAODQDyVVjdvf0P12m+CIeqNU7vUuqxQtTS5pnr1UT/Ry"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkL30dACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrlBBAAjf5ZMGNg1f6u5HW9l5u4CY1+EnZltKhSWg9Ldd3lGgHnG7HB\r\nZ+Myo5ZUS6eyoXYmtMaJwelaJeTVhtLQvM1qcbcchPpjl8SLy1ttTmp7WT5W\r\nCyRWT7SzRj7Zy3uqwYosxy1i9DZ0gFL/xsoPn2aAFcFFOQT3ZYJUUCIOVowd\r\nDYQvWfUvgf6PJUk1zPFgbbxgWbaxyRvU/geI4NtIf06G4dRR0Bn48f6OOGAI\r\nJhAq9eE5giCLkiBkX5B+LyDk43RYrXbyxp4A0doYSavI3GtTVhFr9rU/hyiy\r\ncRlsylcAtPRfUVcZARa3y49V4YBf2V0iwh62dVWrnrCekr/PHl7Do9WBjpG+\r\nB+EiJZ0fELWjqxZMh0XDfNTo15UnhFaG7D1qM0nM3YDpOfxORfY3d464EePm\r\n9mBozUhOD+sZHNJspLbRnCAdkJCMPobvadqb9MBafjpJAwezddorvBMvwA8w\r\nupuuyJNhTCg1rfPlV938ONPa5YNn02zWCTA7qIJuy3PlYJU+0P4lgg2k8i58\r\nu0SKpU1mY+KLm6RP2Ao0XvbsljwgbhyEKA3jx0doriKxZa38Ll0RGY32DUOU\r\ncH3F5aVjpmRH1SOorr5AByZy5hsS7hK7u3YWQsiKLLZ0AjDtAZBBHXN3Anza\r\nVKDnbKyPOTp/3KgaX+dh9bEHwAgZhIV4jzg=\r\n=f2EF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"arayutw","email":"yuta.arai.0206@icloud.com"},"directories":{},"maintainers":[{"name":"arayutw","email":"yuta.arai.0206@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emitter_0.0.1_1680833821051_0.5962863176566693"},"_hasShrinkwrap":false},"0.0.2":{"name":"@arayutw/emitter","version":"0.0.2","description":"Functional Event Emitter(Pubsub).","keywords":["event","emitter","pubsub"],"homepage":"https://github.com/arayutw/emitter","repository":{"type":"git","url":"git+https://github.com/arayutw/emitter.git"},"bugs":{"url":"https://github.com/arayutw/emitter/issues"},"main":"dist/scripts/emitter.cjs.js","module":"dist/scripts/emitter.esm.js","scripts":{"build":"node_modules/typescript/bin/tsc;node run/build.mjs","test":"node node_modules/jest/bin/jest"},"author":{"name":"Yuta Arai","email":"arayutw@gmail.com"},"license":"MIT","dependencies":{"@babel/core":"^7.21.0","@babel/preset-env":"^7.20.2","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-node-resolve":"^15.0.1","babel-loader":"^9.1.2","esbuild":"^0.17.10","jest":"^29.5.0","rollup":"^3.18.0","rollup-plugin-dts":"^5.2.0","rollup-plugin-esbuild":"^5.0.0","ts-jest":"^29.1.0","typescript":"^4.9.5","uglify-js":"^3.17.4"},"exports":{".":{"types":"./dist/types/index.d.ts","require":"./dist/scripts/emitter.cjs.js","import":"./dist/scripts/emitter.esm.js","default":"./dist/scripts/emitter.esm.js"}},"publishConfig":{"access":"public"},"gitHead":"cc6452935f078e9f24d796f58bd62b388bd311e2","_id":"@arayutw/emitter@0.0.2","_nodeVersion":"18.14.2","_npmVersion":"9.6.2","dist":{"integrity":"sha512-RbMzf0VLqSG6yM0nQhEjKimv3uCtadryQQqWpEhFQOPyzJ/xhJBIc9zpFIL77K/WhR1zEec69T7AphcjSWiYNQ==","shasum":"2aa7b80c2b6815dfccf722c6ee6b82b8e428ffad","tarball":"https://registry.npmjs.org/@arayutw/emitter/-/emitter-0.0.2.tgz","fileCount":21,"unpackedSize":20325,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDp4KblObqPc8cEwjFL6btGLKPO+sweTiRK9oPcLkuM4AIgb9aceqVRXAblG2lsbmAkJ8u5EksQMofiJPeDEm/lKfk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkL5CMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrN2RAAju1ehow51uVuaRdo1t6ANnQIZpuFuzw8Bqte4Lw/YIJUaEG8\r\nUuOGOlJvp7EA73zgwHsayUESb1diPUssXTCjmasnJTgCQ0Wo+FPulbl+tPkW\r\nxHri3Nhbp34Zi4K5Q9dosTc4ZnPuvODTUm6MjOELJqusNqDdGXhRCV2PNrRF\r\npRNcJlLG60agyuKXZrBAo6TMtQ3v3z7auRDLlLquJ7GXIFU6oYpt7ev+VOgx\r\nbNYdvlycUCMycPrBxMvU5VuqRVKf8jk1EDnp72UfiJYR4tAEl5sTPsnX6hnH\r\niXo4KYnj5kQxxw/gsyUssipEosIuFzC7Me24Y9Lkh6lHKVeU6uHoPJeg32hL\r\nkXY0vJkCwhx4fTepKmiApdFqK5ws4bh5xCZG78js5FH6P34NU4ussdN+FS6I\r\nfzzB3fogOpz780PoZzAJU+ravXFjI07tpx/5INshjx+EUK5hcBCUWNEH3fa1\r\nVg89c4zntP8R5bqERWtFwfOsm8oJRYk59DZkNDj7YENd/RP1NqFWxvgucgnO\r\npQp3hLJPDggsuh3lV30U+e+AGo59WgJZRdzxYdaMszZUkKuCpiUfvVJnN2Gj\r\n/Ph0j14R+YBWO7mI2/t90DkkvcHqXXXsy5iWREHZ1OU7tDE0ckstWXNh3+0G\r\n+rOGODyIKHAdmoq3NvN0JhswIcVFKAai8Rc=\r\n=+bYJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"arayutw","email":"yuta.arai.0206@icloud.com"},"directories":{},"maintainers":[{"name":"arayutw","email":"yuta.arai.0206@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emitter_0.0.2_1680838796031_0.30312293380606325"},"_hasShrinkwrap":false}},"time":{"created":"2023-04-07T02:17:00.985Z","0.0.1":"2023-04-07T02:17:01.249Z","modified":"2023-04-07T03:39:56.348Z","0.0.2":"2023-04-07T03:39:56.204Z"},"maintainers":[{"name":"arayutw","email":"yuta.arai.0206@icloud.com"}],"description":"Functional Event Emitter(Pubsub).","homepage":"https://github.com/arayutw/emitter","keywords":["event","emitter","pubsub"],"repository":{"type":"git","url":"git+https://github.com/arayutw/emitter.git"},"author":{"name":"Yuta Arai","email":"arayutw@gmail.com"},"bugs":{"url":"https://github.com/arayutw/emitter/issues"},"license":"MIT","readme":"# Emitter\nA minimal library for implementing Event Emitter functionality.\n\n## Features\n- Written in Typescript\n- Has no dependencies (e.g. jquery)\n- Lightweight, 1KB\n\n## Install\n### git\n```bash\ngit clone https://github.com/arayutw/emitter.git\ncd emitter\nnpm install\nnpm run build\n```\n\n### npm\n```bash\nnpm install @arayutw/emitter\n```\n\n### CDN\nPlease find various build files (esm, cjs, umd).\n- [unpkg](https://unpkg.com/browse/@arayutw/emitter/dist/scripts/)\n- [jsdelivr](https://cdn.jsdelivr.net/npm/@arayutw/emitter@latest/dist/scripts/)\n\n\n## Usage\n### load\n#### ESM\n```js\nimport Emitter from \"<pathto>/emitter.esm\"\n```\n\n#### UMD\n```html\n<script src=\"https://unpkg.com/@arayutw/emitter@latest/dist/scripts/emitter.js\"></script>\n<script>\n  class A extends Emitter {}\n</script>\n```\n\n### `extends`\n```js\nclass A extends Emitter {\n  constructor() {\n    super();\n  }\n}\n\nconst a = new A;\n```\n\n### `on()`\n```js\nconst handler = (event) => {\n  // {target: a, type: \"click\", x: 12, y: 34}\n  console.log(event);\n}\n\na.on(\"click\", handler, {\n  once: false,\n});\n```\n\n### `off()`\n```js\na.off(\"click\", handler);\n```\n\n### `emit()`\n```js\na.emit(\"click\", {\n  x: 12,\n  y: 34,\n});\n```\n\n### `destroy`\n`off(\"*\")` removes all events.\n```js\na.off(\"*\");\n```\n\n\n## Typescript\nDevelopment with Typescript is also convenient. Please define Generics (two arguments) when extending it.\n\n| Argument | Example | Description |\n| --- | --- | --- |\n| 1 | `A` | The value of `event.target`. |\n| 2 | `{eventName: {data1: number, data2: string}}` | An object where the keys are event names and the values are objects containing event data. The key names \"type\" and \"target\" are reserved. |\n  \n　\n```ts\nimport Emitter from \"{pathto}/emitter/src/scripts/index\"\n\n// The key names \"type\" and \"target\" are reserved.\ntype Events = {\n  eventName: {\n    eventData1: any\n    eventData2: any\n  }\n  click: {\n    x: number\n    y: number\n  }\n  mousedown: {\n    // some data\n  }\n}\n\nclass A extends Emitter<A, Events> {\n  constructor() {\n    super();\n  }\n}\n\nconst a = new A;\n\na.on(\"click\", (event) => console.log(event));\n\n// OK\na.emit(\"click\", {\n  x: 1,\n  y: 2,\n});\n\n// NG\na.emit(\"click2\", {\n  x: 1,\n  y: 2,\n});\n\n// NG\na.emit(\"click\", {\n  x: \"a\",\n  y: 2,\n});\n```","readmeFilename":"README.md"}