{"id":13495705,"url":"https://github.com/drawcall/RxEmitter","last_synced_at":"2025-03-28T16:33:10.117Z","repository":{"id":38067453,"uuid":"89693510","full_name":"drawcall/RxEmitter","owner":"drawcall","description":"RxEmitter = 🐟Rxjs + 🐡eventBus.","archived":false,"fork":false,"pushed_at":"2023-04-21T11:50:08.000Z","size":231,"stargazers_count":55,"open_issues_count":1,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-25T23:37:39.785Z","etag":null,"topics":["emitter","eventbus","eventemitter","observable","rxjs"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drawcall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-04-28T09:59:17.000Z","updated_at":"2024-09-16T17:33:03.000Z","dependencies_parsed_at":"2024-01-13T19:22:09.062Z","dependency_job_id":"2ed1ed2c-12c4-4b5f-a4a3-2039e8adec44","html_url":"https://github.com/drawcall/RxEmitter","commit_stats":null,"previous_names":["a-jie/rxemitter"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drawcall%2FRxEmitter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drawcall%2FRxEmitter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drawcall%2FRxEmitter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drawcall%2FRxEmitter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drawcall","download_url":"https://codeload.github.com/drawcall/RxEmitter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246063182,"owners_count":20717761,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emitter","eventbus","eventemitter","observable","rxjs"],"created_at":"2024-07-31T19:01:37.337Z","updated_at":"2025-03-28T16:33:09.774Z","avatar_url":"https://github.com/drawcall.png","language":"TypeScript","funding_links":[],"categories":["angular","TypeScript"],"sub_categories":[],"readme":"![logo](https://github.com/drawcall/RxEmitter/blob/master/logo/logo.png?raw=true)\n\n# RxEmitter\n\n### RxEmitter = Rxjs + eventBus.\n\nRxEmitter combines the characteristics of Rxjs and eventBus.Emit a Stream of similar events, and you can accept it in any where.  \nUse RxEmitter to make your project easy to decouple.\nIt can be used for angular,React,Vue and so on.\n\n## Installation and Usage\n\n### ES6 or TypeScript\n\n##### Installation\n\n```shell\nnpm install rxemitter\n```\n\n##### emit\n\n```javascript\nimport { RxEmitter, toRxEmitter, rxEmit } from \"rxemitter\";\n//...\n\n/** emit */\nObservable.from([1, 2, 3, 4])\n  .map((x) =\u003e x * 10)\n  .toRxEmitter(\"ADD_AN_NUMBER\");\n\n// or\n\nObservable.of(\"hello world\")\n  .rxEmit(\"ADD_NEW_WORD\")\n  .subscribe((x) =\u003e x);\n\n// or\n\nRxEmitter.emit(\"EVENT_NAME\", { a: 1, b: 2 });\n```\n\n##### on\n\n```javascript\nimport { RxEmitter } from 'rxemitter';\n//...\n\n/** on */\nRxEmitter.on('ADD_AN_NUMBER').subscribe(x=\u003e console.log(`ADD A NEW NUMBER - ${x}`));\n\n// or\n\n@RxOn(\"ADD_AN_NUMBER\")\nvalue:Observable\u003cnumber\u003e;\n\n// or\n\n@RxSubscribe(\"ADD_AN_NUMBER\")\nsubscribe(value:number){\n  console.log(value);\n}\n```\n\n##### Rxemitter can be used for Angular2+、React、Vue and so on.\n\n## API Methods\n\n#### RxEmitter.emit\\\u003cT\\\u003e(eventName: string, ...rest: T[]): string\n\n\u003e emit a global event , passing a stream\n\n```javascript\nRxEmitter.emit(\"HELLO_WORLD\", myObj);\n```\n\n#### toRxEmitter\\\u003cT\\\u003e(this: Observable\\\u003cT\\\u003e, a: any, b?: any): Subscription\n\n\u003e RxEmitter.emit an Observable sequence.\n\n```javascript\nObservable.fromEvent(document, \"click\")\n  .interval(1000)\n  .toRxEmitter({ eventName: \"MOUSE_CLICK\", timeout: 10 });\n\n// or\n\nObservable.from([1, 2, 3, 4]).toRxEmitter({\n  eventName: \"VALUE\",\n  map: (x) =\u003e x + 10,\n});\n\n// or\n\nObservable.from([1, 2, 3, 4]).toRxEmitter(\"CHANGE_EVENT\");\n```\n\n#### rxEmit\\\u003cT\\\u003e(this: Observable\\\u003cT\\\u003e, a: any, b?: any): Observable\\\u003cT\\\u003e\n\n\u003e rxEmit an Observable sequence.\n\n```js\nObservable.fromEvent(document, \"click\")\n  .rxEmit({ eventName: \"MOUSE_CLICK\", log: true })\n  .subscribe((x) =\u003e x);\n```\n\n#### RxOn(a: string | Object, b: boolean | string = false, c: any = null)\n\n\u003e To attaches an event handlers, we can use the @RxOn decorator.\n\n```js\n@RxOn(\"HELLO_WORLD\")\nvalue:Observable\u003cnumber\u003e;\n```\n\n#### RxSubscribe(a: string | Object, b: boolean | string = false, c: any = null)\n\n\u003e To attaches an event handlers and registration a listener handler, we can use the @RxSubscribe decorator.\n\n```js\n@RxSubscribe(\"HELLO_WORLD\")\nsubscribe(value:number){\n\tconsole.log(value);\n}\n```\n\n#### RxEmitter.on\\\u003cT\\\u003e(eventName: string, target?: any): Observable\u003cT\u003e\n\n\u003e attaches an event handlers\n\n```js\nRxEmitter.on(\"HELLO_WORLD\")\n  .map((x) =\u003e x + 1)\n  .subscribe((x) =\u003e console.log(x));\n```\n\n#### RxEmitter.off(eventName: string): any\n\n\u003e remove all event handlers\n\n```js\nRxEmitter.off(\"HELLO_WORLD\");\n```\n\n#### unsubscribe(target: any, eventName?: string)\n\n\u003e disposal the resources , target is your registration id\n\n```js\nRxEmitter.unsubscribe(this,\"HELLO_WORLD\");\n```\n\n#### offAllByTarget(target: any)\n\n\u003e remove id=target event handlers and disposal the resources.\n\n```js\nRxEmitter.offAllByTarget(this);\n```\n\n## Used in the angular\n\n```js\nimport { RxOn } from 'rxemitter';\n//\n@RxOn(\"DATA_LOADED\")\nitems$: Observable\u003cItem[]\u003e;\n\n// in html\n\u003cli *ngFor=\"let item of items $ | async\"\n```\n\n![logo](https://github.com/drawcall/RxEmitter/blob/master/logo/emitter.png?raw=true)\n\n## Used in the vue-rx\n\n### [vue-rx library](https://github.com/vuejs/vue-rx)\n\n```js\n//a component\nVue.component('a', {\n  subscriptions: function () {\n    return {\n      value$: this.$fromDOMEvent('input', 'keyup')\n      .pluck('target', 'value')\n      .rxEmit('INPUT_KEYUP')\n    }\n  }\n})\n\n// b component\nVue.component('b', {\n  subscriptions: function () {\n    return {\n      value$: RxEmitter.on('INPUT_KEYUP')\n    }\n  }\n})\n\n// html\n\u003cdiv\u003e{{ value$ }}\u003c/div\u003e\n```\n\n## Building\n\n```shell\n//build es6\nnpm run es6\n\n//build commonjs\nnpm run cjs\n\n//clone package\nnpm run package\n\n//run all\nnpm run all\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrawcall%2FRxEmitter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrawcall%2FRxEmitter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrawcall%2FRxEmitter/lists"}