{"_id":"observable-callback","_rev":"4-719de40032eb14bbe327c10c76d9bce7","name":"observable-callback","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"observable-callback","version":"1.0.0","description":"A small utility for simplified creation of callback functions that publishes the argument to an observable stream when called.","main":"dist/cjs/observableCallback.js","types":"dist/cjs/observableCallback.d.ts","module":"dist/esm/observableCallback.js","es2015":"dist/es2015/observableCallback.js","scripts":{"test":"jest","build":"npm run build:es2015 && npm run build:esm && npm run build:cjs","build:es2015":"tsc --module es2015 --target es2015 --outDir dist/es2015","build:esm":"tsc --module es2015 --target es5 --outDir dist/esm","build:cjs":"tsc --module commonjs --target es5 --outDir dist/cjs","clean":"rimraf dist","prepublishOnly":"npm run build"},"dependencies":{},"devDependencies":{"@types/jest":"^25.2.1","jest":"^25.3.0","prettier":"^2.0.4","rimraf":"^3.0.2","rxjs":"^6.5.5","ts-jest":"^25.3.1","ts-node":"^8.8.2","typescript":"^3.8.3"},"peerDependencies":{"rxjs":"^6.5"},"keywords":["observable","rxjs","callback","subject","event-handler"],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bjoerge/observable-callback.git"},"bugs":{"url":"https://github.com/bjoerge/observable-callback/issues"},"homepage":"https://github.com/bjoerge/observable-callback#readme","gitHead":"613eecf8c00a86c24efe41b69d19c6e29ac46401","_id":"observable-callback@1.0.0","_nodeVersion":"12.16.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-i6EWEn/y6oFEzOuuTEhvXZ2o1mB+DKz9toLG0M3BJa8XzbiHhnoWEONHhmeSnctu76tZVWMKtK/8SyZyOnzWjQ==","shasum":"15a3f9a8a87b08506020c3e1c1f9271e8c92f9b0","tarball":"https://registry.npmjs.org/observable-callback/-/observable-callback-1.0.0.tgz","fileCount":21,"unpackedSize":14723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJek4DuCRA9TVsSAnZWagAAxK4QAIkE921rwO0qPAsWtKUK\nHcRaRty0jZQDwjvogQZew34lr8EhSmjHlyna0ZB1rlNrw+2Izehq3WG3vg+v\nR2pKCG6ky6UJKxCv/0oTNYKlvZO4N6IV49oZs0Z81JPNpCzYJwqOiNBdeKLE\nJ/B87lWXX5g+DOuvJv9AmkI92Q/sk2OWSLSFkAy7kE40UgN8MFAxtCzLv5pr\nkVSnk/Fy++EhFDGNx5sSWAH1NP9Zf9adDQ3zaumxYdRWZtUx24bSBnVmdglx\nxKJ4Xtt7D8EDiJAKToIAS3/Jw9EwiYjjn9kU7eKguM7Tup1rtiWKxoxn9WRH\nu+XyQI8dUsN9JmlwQv+p23K0ZQxKeVgORMniPgBgmJU4V4rRB24zYWOCTitX\np30rvT6UVaJjTWRQt1ZBftp3dci/pFApY0FGkEFoA1GVEPIfr4Krwg3C69ab\nzpEyMDjnbw68rpoHVG5TFTs568OpudNzLmYOnoFLpn+8UC0a/YcTjW2UtRd1\nqzjIdSM8oe7c4dh4qCrkkNMc1Xmb5Bw917OBdYkcEdQTkFzGMfM1qFSiNQdF\nhOhYlwdQD3TRyI5mOQhQex3pLBIcWIXSqYzMeAGbn4O6X1A+UloMvbKs55nv\ncV75CJPe1I//ClwYHmNIfObo+iLHJgo0ZICePr4X6/3wjv9nofdHSsDcUept\nVs+m\r\n=smm/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1THAa+OiGreE3igfMrf5eOM5/G2H/TxFUPhOS9/h89gIhAIExl0j1R6TgvCUYtelw5uVPOXiUSSy3dsY7wOAc3qsA"}]},"maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"}],"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-callback_1.0.0_1586725102040_0.2248863348131216"},"_hasShrinkwrap":false},"1.0.1":{"name":"observable-callback","version":"1.0.1","description":"A small utility for simplified creation of callback functions that publishes the argument to an observable stream when called.","main":"dist/cjs/observableCallback.js","types":"dist/cjs/observableCallback.d.ts","module":"dist/esm/observableCallback.js","es2015":"dist/es2015/observableCallback.js","scripts":{"test":"jest","build":"npm run build:es2015 && npm run build:esm && npm run build:cjs","build:es2015":"tsc --module es2015 --target es2015 --outDir dist/es2015","build:esm":"tsc --module es2015 --target es5 --outDir dist/esm","build:cjs":"tsc --module commonjs --target es5 --outDir dist/cjs","clean":"rimraf dist","prepublishOnly":"npm run build"},"dependencies":{},"devDependencies":{"@types/jest":"^25.2.3","jest":"^26.0.1","prettier":"^2.0.5","rimraf":"^3.0.2","rxjs":"^6.5.5","ts-jest":"^26.1.0","ts-node":"^8.10.2","typescript":"^3.9.3"},"peerDependencies":{"rxjs":"^6.5"},"keywords":["observable","rxjs","callback","subject","event-handler"],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bjoerge/observable-callback.git"},"bugs":{"url":"https://github.com/bjoerge/observable-callback/issues"},"homepage":"https://github.com/bjoerge/observable-callback#readme","gitHead":"00a1dff5c70d4167545dd0df7d93d59030d8c4c5","_id":"observable-callback@1.0.1","_nodeVersion":"12.17.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-lgehuL4SP5DHEHNV/MZNhlTSeGV/xbX/l90H1FcCWm9b9yac/NKk9FnaTOt36wW3+EUvJSQjezDFKpi5hi8EHg==","shasum":"048a27e14e73a8163a165ab77313523a8e6a96d9","tarball":"https://registry.npmjs.org/observable-callback/-/observable-callback-1.0.1.tgz","fileCount":22,"unpackedSize":15899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1/0sCRA9TVsSAnZWagAA4fcP/015IYvYKe/aV/dQfMO3\nOn/wdFf7zbib3wo2SkmQgiHvCB7E4BPWtmA6tBbw//5/d3QfwtDGXUSPc9I7\nGUu+6KnZtlyuLWBtjuK/Ene1LKF8zwlJthtsYzm5QD+PeJGeaPAv8NFJOfQy\n0F78eq0GemSXzFpQGScg95jlRkU0Vu01XEWwo+9M50BRsn23E0Jw+900FivW\nDE3xtPCiWgZ28e9sXDzpzdQXL6aqoiJXO5K+v7JSr7JqBTpiO6awlcdFbw9+\nsPGeg8zmOJD9zJJocx38C9L+IT4/fREJ91yXICbU5C969m3IG6tqHb6my+GV\njD7k+PjRlVt0WFUs9CAbHw6Mr/wvRIW+RgWjsBGgpODBvRGT3NZl3KTE/MvH\nBPSEoPHL9Op2Z7E6fpv/NEldu551lzhYzoqWmZnL/ALsvtOKAaQHA+7Wg9Xa\ncG1LdGkODEKtFQD2Y6XT37yD+8pON6Quycs0plN6PcNLLQF/Hxp78RNvY3TN\nLMsBOKhMMIJ+oOOCQEt7ATGaGLtVJWYkOt2ZCHiJ67C2BsqkCYUqg0Gs/zGR\nCe+VkOYUI6lvjhMXDwLqAsqxmvQ5LmNKPWZFoGcuuFkDysyr9JdH1/X0+av6\ndkOz3yI1uS2G2YxQG7BL4eg5LHSy7KUpqUvVZvD0UhVFJG+dun4oma9SW2Eo\nqgQc\r\n=kKSk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB6y5t0XTy0LiBh1Hz4m6LzqY/OhsaLJNe+Zi5edrFnMAiA7qq3qnfsWWjYMEAEhEx0Kqu3JZUAe390FUFKj2iHusA=="}]},"maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"}],"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-callback_1.0.1_1591213356319_0.3234821347051433"},"_hasShrinkwrap":false},"1.0.2":{"name":"observable-callback","version":"1.0.2","description":"A small utility for simplified creation of callback functions that publishes the argument to an observable stream when called.","main":"dist/cjs/observableCallback.js","types":"dist/cjs/observableCallback.d.ts","module":"dist/esm/observableCallback.js","es2015":"dist/es2015/observableCallback.js","scripts":{"test":"jest","build":"npm run build:es2015 && npm run build:esm && npm run build:cjs","build:es2015":"tsc --module es2015 --target es2015 --outDir dist/es2015","build:esm":"tsc --module es2015 --target es5 --outDir dist/esm","build:cjs":"tsc --module commonjs --target es5 --outDir dist/cjs","clean":"rimraf dist","prepublishOnly":"npm run build"},"dependencies":{},"devDependencies":{"@types/jest":"^28.1.1","jest":"^28.1.1","prettier":"^2.7.1","rimraf":"^3.0.2","rxjs":"^7.5.5","ts-jest":"^28.0.5","ts-node":"^10.8.1","typescript":"^4.7.3"},"peerDependencies":{"rxjs":"^6.5 || 7"},"keywords":["observable","rxjs","callback","subject","event-handler"],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bjoerge/observable-callback.git"},"bugs":{"url":"https://github.com/bjoerge/observable-callback/issues"},"homepage":"https://github.com/bjoerge/observable-callback#readme","gitHead":"9e839562522e9b82bb5851ab805d2a46dbbcbfc0","_id":"observable-callback@1.0.2","_nodeVersion":"16.13.1","_npmVersion":"8.2.0","dist":{"integrity":"sha512-Fb7qVUHqr8jl32NyJffTiqf76NObRvmzaSPgGtaAGH+Wfh45tiGWjrvUsNgEuCa86SUzGZZpoSN0hpGtldoSDg==","shasum":"6ec5a0d7184eb484e1f8f157e645676b034aa75b","tarball":"https://registry.npmjs.org/observable-callback/-/observable-callback-1.0.2.tgz","fileCount":22,"unpackedSize":15980,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpKjbIB5Kp8z5Wyg9g6BEWR/01AresMVtV4zyTa9QFRAIhAMod9m5DJsr2Gp8N6xwLMI1RVRxjBvBNBWcnOCdWP3J/"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqw4IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKUQ/+Px0IXfq/jpzeVJ0gy7bakWadc8ZndvJ0SsbBqQKtTbkn2Vv0\r\n0rp2CvbCwGjPDvzCBrM2gk5YvQWA+cVO9T5IrwCmwfZ9qiIFB5EUR+KSRaN/\r\ngxYXiOYEfKmN/r5gnLl0F+iH0Tu4OerMqfJ1L5LzkQxkMQviWditq5JX/Ir0\r\naYDeGPEHrqAsfjtJlq5i92MdTDZpCuEQ2ysS0XsDv46CLrohqPEo6hFXBkPy\r\nZT8D416gDPJPpm1PDdPPu2CATcS/IliIlOMGPPqpAG92bw3mAYDHH3uJNR31\r\n0fXErxmlTABEzVYfSilyvjFR9UGMpvNmpGzeegfxLpWZcBIytvYHG3hJOzAF\r\nR3QByncYfR1VjlxzHzwuF3ATkGb8aTAPErH2ko1/XVQCSKT7CIJO3Qzk1Cz1\r\n/X7qC5ECGg811lEqS1dMqF32ewZ+Hnb6uBA3M1CdNhCUONZgxHbejL4RNBL6\r\nG/ALTJdESwSDy94mMmxBSY1QKg172byJedNpAKU/tN0MkgX7Q1nXKqVYyD7i\r\njf1CpM8IEdS79Xl9VyCqR/hnMNM1jy6hXwtcrxuHXu8ZNAsC5t0omkLBJlBe\r\nZpjLWPdtMGB5aoxqYv2WwZI1AH01tUtEd//kbhfEEax6FxoYIfqG8TPfR640\r\nemKfzLxdJaXBXnsWq8SzoGrb8jui4U2bs48=\r\n=Cr8+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"directories":{},"maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-callback_1.0.2_1655377416234_0.184318527460946"},"_hasShrinkwrap":false},"1.0.3":{"name":"observable-callback","version":"1.0.3","description":"A small utility for simplified creation of callback functions that publishes the argument to an observable stream when called.","main":"dist/cjs/observableCallback.js","types":"dist/cjs/observableCallback.d.ts","module":"dist/esm/observableCallback.js","es2015":"dist/es2015/observableCallback.js","scripts":{"test":"jest","build":"npm run build:es2015 && npm run build:esm && npm run build:cjs","build:es2015":"tsc --module es2015 --target es2015 --outDir dist/es2015","build:esm":"tsc --module es2015 --target es5 --outDir dist/esm","build:cjs":"tsc --module commonjs --target es5 --outDir dist/cjs","clean":"rimraf dist","prepublishOnly":"npm run build"},"dependencies":{},"devDependencies":{"@types/jest":"^28.1.1","jest":"^28.1.1","prettier":"^2.7.1","rimraf":"^3.0.2","rxjs":"^7.5.5","ts-jest":"^28.0.5","ts-node":"^10.8.1","typescript":"^4.7.3"},"peerDependencies":{"rxjs":"^6.5 || ^7"},"keywords":["observable","rxjs","callback","subject","event-handler"],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bjoerge/observable-callback.git"},"bugs":{"url":"https://github.com/bjoerge/observable-callback/issues"},"homepage":"https://github.com/bjoerge/observable-callback#readme","engines":{"node":">=16"},"gitHead":"32d048637611a73c4911561e05c078304e4e89a9","_id":"observable-callback@1.0.3","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-VlS275UyPnwdMtzxDgr/lCiOUyq9uXNll3vdwzDcJ6PB/LuO7gLmxAQopcCA3JoFwwujBwyA7/tP5TXZwWSXew==","shasum":"c062c614d04f7adda9b42c40e56ffd0418f3d8ef","tarball":"https://registry.npmjs.org/observable-callback/-/observable-callback-1.0.3.tgz","fileCount":19,"unpackedSize":11326,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRHlddusXuPVMbFQ8si3C/eqgGUMX/ZlZclF1LO9bRvgIgOjA9TFDHYhwahUseAOrDJuX3wWhAiSBa+KxEIL27XTE="}]},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"directories":{},"maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-callback_1.0.3_1690964838447_0.07095161213282619"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-12T20:58:22.040Z","1.0.0":"2020-04-12T20:58:22.173Z","modified":"2023-08-02T08:27:18.699Z","1.0.1":"2020-06-03T19:42:36.427Z","1.0.2":"2022-06-16T11:03:36.410Z","1.0.3":"2023-08-02T08:27:18.605Z"},"maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"}],"description":"A small utility for simplified creation of callback functions that publishes the argument to an observable stream when called.","homepage":"https://github.com/bjoerge/observable-callback#readme","keywords":["observable","rxjs","callback","subject","event-handler"],"repository":{"type":"git","url":"git+https://github.com/bjoerge/observable-callback.git"},"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"bugs":{"url":"https://github.com/bjoerge/observable-callback/issues"},"license":"MIT","readme":"# observable-callback\n\nA small utility for simplified creation of callback functions that publishes the argument to an observable stream when called.\n\nIt's a small wrapper around [RxJS Subjects](https://rxjs.dev/api/index/class/Subject) that returns a tuple of the Subject as an observable and the subject's `next()` function\n\n### Example:\n\n```js\nconst [value$, onValue] = observableCallback()\n\nvalue$.subscribe((value) => {\n  // will print \"Hello world!\"\n  console.log(value)\n})\n\nsetTimeout(() => onValue(\"Hello world!\"), 100)\n```\n\n### Example, passing an operator function:\n\n```js\nconst [greeting$, onPlanet] = observableCallback((planet$) =>\n  planet$.pipe(map((planet) => `Hello ${planet}!`))\n)\n\ngreeting$.subscribe((greeting) => {\n  // will print \"Hello world!\" after 100ms\n  console.log(greeting)\n})\n\nsetTimeout(() => onPlanet(\"world\"), 100)\n```\n\n### When to use\n\nSometimes the only way to know when an event happens in different APIs is by providing a function that will be called at some later point.\nSometimes it makes sense represent calls to a function as an observable of its called arguments. One example of this can be event handlers in React:\n\n```jsx\nconst [clicks$, onClick] = observableCallback()\n\nclicks$.subscribe(() => {\n  console.log(\"User clicked the button\")\n})\n\nrender(<button onClick={onClick}>Click me!</button>)\n```\n\nAnother use case could be to provide an action stream, and a way of dispatching actions. For example, here's a simple router that exposes the current page as an observable stream, and a function to call in order to navigate to another page:\n\n```jsx\n// page.js\nconst [onNavigate$, onNavigate] = observableCallback()\n\nexport const currentPage$ = onNavigate$.pipe(\n  switchMap((page) => {\n    return loadPage(page)\n  })\n)\n\nexport const navigate = onNavigate\n\n//... some other part of the application\nfunction SomeComponent() {\n  return <button onClick={() => navigate(\"page2\")}>Go to page 2</button>\n}\n```\n\n### When not to use\n\n- If you you are using node-style callback APIs. You are probably better off using [bindNodeCallback](https://rxjs.dev/api/index/function/bindNodeCallback) instead.\n- If you want resource disposal, e.g. cancellation or listener removal.\n\n# API\n\n```ts\nfunction observableCallback<T>(): [Observable<T>, (argument: T) => void]\nfunction observableCallback<T, K>(\n  operator: OperatorFunction<T, K>\n): [Observable<T>, (argument: T) => void]\n```\n\n# License\n\nMIT\n","readmeFilename":"README.md"}