{"_id":"@andywer/observable-fns","_rev":"5-c5b3fa09c3b269f578df3b430ca3e411","name":"@andywer/observable-fns","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@andywer/observable-fns","version":"0.1.0","description":"Light-weight observable implementation and utils written in TypeScript. Based on zen-observable.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"license":"MIT","scripts":{"prebuild":"rimraf dist/","build":"tsc","create-entrypoints":"rimraf *.js *.d.ts && node ./scripts/create-entrypoints.js","test":"tslint --project .","prepare":"run-s build create-entrypoints"},"devDependencies":{"npm-run-all":"^4.1.5","rimraf":"^2.6.3","tslint":"^5.18.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.3"},"gitHead":"66f6281d0767b443e72a059f68f37573f9140448","_id":"@andywer/observable-fns@0.1.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-EMIrVrZHEGMlhBKNDRc8bLwXqXUgKJOhQwsH/C2Cds0UCOXKP0F2ImGbg1zmaBiG5R0hCPMLUbGvEtJ5SbrNXw==","shasum":"5c094a52db8725a4db69de4f932f41241bd63ac2","tarball":"https://registry.npmjs.org/@andywer/observable-fns/-/observable-fns-0.1.0.tgz","fileCount":35,"unpackedSize":33987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdy+xbCRA9TVsSAnZWagAAVPMQAJMJHaMESyGHSqejkgqW\n1tNTytu0JdDOd1n3l5YB0Nq3zQr5Lf7fuim7FswmF0gd+YGBh28mVtHO9fm8\nj0ga+mnJdDUMDf2kIg0JuhggA6xeVhN0TQQ26JlXVN5dgesRMqao32gXU30Q\n6HYu73WC+fk9b/zqQhMUs7EEU7b8ziMQDsioMkryY/o1t93CRnCTdggbJ7j0\nJYX410z4QsXJXTbKKMpWg+ggtodW2ejJwQA4qOAIViIOK1NO+X29UVY1XkQD\nfp7rFBeGejr/YqiHxVbizvd7JN//Kyf7/fp8+NIeUMCkqlfyQO6UMpJ1HzuF\nx5GFB1D+WYecFqtb7t+fLlg1fZ1wcOdxCpRW4I/8oGUGfhHZJwmOXORJYXFp\neb7iUJDGxberbfHh6moNFkYE6049/ZVmCxclsgL1WpXMhAIMObEwpE+DuyPk\nOS2hjrJPSI4iGYmnZUDESlxUC7OspM67cBrh8YE8M9hVigYGRvFegP5X1nIq\nUqb58Tv7t804V07RMKaGiGYS0Nvv9VMt/xsSekZGzbEDBIm1nXa6792fp9un\n8uNyRWD8wQX0F7AA1kXNRV2b1EIuMVzSWacWW8+He/l4YLRiU+dxA7JOF6pU\nJHCiN8eNZMeUEnqcuRI8dfLB/I37mH3+f5wnZnlFUGhkeXSbRqqji7x8XLJj\n/NA/\r\n=mXxE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsVUcuCMvV6iDt9KvLQEh980vJKuKfoFM+cM4IWLekswIgXZKy3F51u5yDbyyxzTS7rO5qIz9HYzl7vvNTLAJvpi8="}]},"maintainers":[{"name":"andywer","email":"andy.dev@next-step-software.com"}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-fns_0.1.0_1573645395368_0.7192017139371574"},"_hasShrinkwrap":false},"0.1.1":{"name":"@andywer/observable-fns","version":"0.1.1","description":"Light-weight observable implementation and utils written in TypeScript. Based on zen-observable.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/andywer/observable-fns.git"},"scripts":{"prebuild":"rimraf dist/","build":"tsc","create-entrypoints":"rimraf *.js *.d.ts && node ./scripts/create-entrypoints.js","test":"tslint --project .","prepare":"run-s build create-entrypoints"},"devDependencies":{"npm-run-all":"^4.1.5","rimraf":"^2.6.3","tslint":"^5.18.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.3"},"gitHead":"e600fc8f6ceaf3fdca981ed1e0ba006e51bea279","bugs":{"url":"https://github.com/andywer/observable-fns/issues"},"homepage":"https://github.com/andywer/observable-fns#readme","_id":"@andywer/observable-fns@0.1.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-HzQY3Jac4WKpMEL7wyYr+bZqb/61pt7zIzgAwKrv0hjbcLvXvjXOWOuMH5NOTRKavrscVblypnoNThuqWT/wRw==","shasum":"ddc84e7e915012c877f5d76163a203586467c9f8","tarball":"https://registry.npmjs.org/@andywer/observable-fns/-/observable-fns-0.1.1.tgz","fileCount":35,"unpackedSize":34269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzriOCRA9TVsSAnZWagAA5IYP/1gjQx6ny+8m+k4dk74B\nLXKluVyiXRO1XfbJKnw7A6BvvelajIIthbkVnIXNwdcwvCAQBWeYWV2WLIk8\nxZAhlXSs9zuOL96hzKCEknSPYXU30Ix/erXeqVi2KSz9kQgFh8iB9P+lN88W\n2V1z/pA6Pq3q2Ril0fY7VcFSMp796wQcQGZdfY+b2eE72QlDNHLp5TM4eMnI\nvwU4shG0CxnG6B5VpGom3ZjIk/A0qP4C6sQgQ8PG3X5H4FKfWSYIfaeQ//lY\nyI6q23iaWvptMQEui0gOpWL1cL2DtVG2Te8h0UebQAgKO5inVWez/wHn233V\nqzomiqvk5W5aJIHG9PGBpMAHr5R3HY9paYo8ChDktmhH/QIUgp+h8Qa2vW+B\n7ElYVrOYX9ZYYAcHdpC/3hOzx1B2amM7jww+Fp6jztI+KwvPoHFItPRqNQ4x\nJXI2Vj/1IIWDl8iS1wAPEjZlnNE5Qt9Y266oPg+uLMKAFXl5bzONRrcYedlk\neUA+YFKKqAUETdQmIo0SZygoO/qjWrNNvoTyi6aPifrLXK3dQ4CU4OxV4icw\nLt4JhmhN25BtBquBlg82LyLt1lmjsDwtjY+XxXmp1YjerNPQQ25wOh7vVBIi\nUOPCLBIl2qcMcQeSI1sGWYRUMq/Wc73oF+72kdO2LbGLRqBRprjWAdWD07XU\n5nxD\r\n=TyUt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBVIDVKODs24KIKHbF4AaPrN8RofT6K8ZWNA0hbNc+GEAiEAjpm59/5KCRW8jrE2QOQs1bxnxH36fT+3q9BjPe5y9u0="}]},"maintainers":[{"name":"andywer","email":"andy.dev@next-step-software.com"}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-fns_0.1.1_1573828749001_0.6021795583879093"},"_hasShrinkwrap":false},"0.2.0":{"name":"@andywer/observable-fns","version":"0.2.0","description":"Light-weight observable implementation and utils written in TypeScript. Based on zen-observable.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/andywer/observable-fns.git"},"scripts":{"prebuild":"rimraf dist/","build":"tsc","create-entrypoints":"rimraf *.js *.d.ts && node ./scripts/create-entrypoints.js","test":"ava","posttest":"tslint --project .","prepare":"run-s build create-entrypoints"},"devDependencies":{"ava":"^2.4.0","npm-run-all":"^4.1.5","rimraf":"^2.6.3","ts-node":"^8.5.4","tslint":"^5.18.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.3"},"ava":{"compileEnhancements":false,"extensions":["ts"],"files":["test/**/*.test.ts"],"require":["ts-node/register"]},"gitHead":"bee6b7acbd6ebf7cdf12ab8b35ea4207f7f842a8","bugs":{"url":"https://github.com/andywer/observable-fns/issues"},"homepage":"https://github.com/andywer/observable-fns#readme","_id":"@andywer/observable-fns@0.2.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hXEWwRCvX1NWCWD91aulzRbEMx3mttHadoFKnrLk2tEBWts0a13jXYOhQJR1tBASR9pVcYupW0T1MZLx+11DhQ==","shasum":"edc81fa6d339735e39c884519fb43208985bdcbe","tarball":"https://registry.npmjs.org/@andywer/observable-fns/-/observable-fns-0.2.0.tgz","fileCount":41,"unpackedSize":42212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5OzcCRA9TVsSAnZWagAAdu4P/iHSeeotiyiLFKv6anUv\nC/lvK+juI8OJCn47MdBs+Qjp3lBY0Ewe0IPOnceC384IjcUZHDy5eOw6SXD2\nNJAmysDXXaR+V9TIkSW40cChU1h5eCM+iEdEN5DPZkmQnEOsS/El8b9e2p6U\nFMyy3K1+K8kBCuPUTXfEAib8iUXXaEYSdRP3hbfeLoCuoWl2rvC+YEP74OsH\nzi9cQ6C+Zwg1MUGYpMLVhW/YGdEDGrgM0DO7e3UzZ5ghW48vZZp6V0t+dPqM\nN2NLrP0wDPEkTYw/MTIt51QFPxo/a5wtc9wlYbE3Cj0TfbBDlJ2MGo0EYMqv\nk4CyQmuipo2CSm26lQ4PqOir+cFlvieCCDf55omrBlZNpuGVGrOOiUQLmVlF\nZuaQpwSZZ/ee0oyUkP8SD5Pac7yoteGoysHIo9vqCNl7ihVyoNyj/BVcT19X\nshiFDTHFOG7TfknCL3FUft1/Hvt6jTif49ztSeOPYSFjKI+/pdm6BS5gINoU\noPPGR9snGuaqWRtBcNL2XQzLb1/kyfK/ebT8eY/VUzJXE5WVQWeMxTvqg6iZ\n//GE9sPceJNrnEpXybW0Vv2cMHo8n0NC1EkxBSItivR8fovXjFx/dL4ej9b/\nnZKNMIs/W+I7d4YqtedOfvcnQfm46B2Sf6jfnRv5CekNFMNk9JDlHgGi+lL7\nvM6m\r\n=t9V9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvjBydfcwteBGPuIzrQCtLcQf0lZIaO6rapUEHM5icrAiEAxJllejU6OhLGGnNPr+ykGzvJj8bGq0WQDnUBZaPeXDw="}]},"maintainers":[{"name":"andywer","email":"andy.dev@next-step-software.com"}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-fns_0.2.0_1575283932297_0.2376245482435586"},"_hasShrinkwrap":false},"0.3.0":{"name":"@andywer/observable-fns","version":"0.3.0","description":"Light-weight observable implementation and utils written in TypeScript. Based on zen-observable.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/andywer/observable-fns.git"},"module":"./dist.esm/index.js","scripts":{"prebuild":"rimraf dist/","build":"run-s build:cjs build:esm","build:cjs":"tsc","build:esm":"tsc -p ./tsconfig.esm.json","create-entrypoints":"rimraf *.js *.d.ts && node ./scripts/create-entrypoints.js","test":"ava","posttest":"tslint --project .","prepare":"run-s build create-entrypoints"},"devDependencies":{"ava":"^2.4.0","npm-run-all":"^4.1.5","rimraf":"^2.6.3","ts-node":"^8.5.4","tslint":"^5.18.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.3"},"ava":{"compileEnhancements":false,"extensions":["ts"],"files":["test/**/*.test.ts"],"require":["ts-node/register"]},"gitHead":"02359304db6bb5ae6e90cd8a468815625fa5b947","bugs":{"url":"https://github.com/andywer/observable-fns/issues"},"homepage":"https://github.com/andywer/observable-fns#readme","_id":"@andywer/observable-fns@0.3.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-05hiWDBz8v79DQ804qPmVa9zici3YOgn/TwDWhE3aAwjNuP/QqIzUuSQ9uzYSI8fjHsC8tnFAbHGnUnDFGdKkA==","shasum":"12067fa0b20fd04f95810abda49447e373df23f1","tarball":"https://registry.npmjs.org/@andywer/observable-fns/-/observable-fns-0.3.0.tgz","fileCount":63,"unpackedSize":80863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6w2YCRA9TVsSAnZWagAA2/cP/R9r3pjlTmdngA90zPtt\n2sIBKMjTJ89lbpUI2PKyPTTudg0rrlAXO6fPqv5I4v49U9Tl4Lb/XaOg0faC\nMWqi8UOFFKRyacq6Qv3Bzb4/mr34FaU5ApyTD+TQJTmvBNNhjGCsMOMQWajG\niBjcT+ktTDF5wprHfJh+NFOXkxFbo+NufviHsjDmQJ77c11hsd19NR6hDGIF\nSZIlw2wT8YJ1d3G3ci/fmn8KFHbc4ipeRmtdBSMQp6SVRqXquOe8+Fvytv7l\nhJ6hiq0EoucE+3ILvAk5pUPAO0fvzx0TiEnI02TBpLFBUAjju343u2FjpzCE\nK2wuMOhkVNd2RGpNsqCSN/Vhs6ZmuvM/FRGVOSPD7xM/BP+gI3nFkb2cfD2L\n1o8BhOG/CYKSc4c0YYcQVVYpBmccsfUUHSMqQH1kB87uSM1irGZzoOwTcsb2\n+FX8/kXMgnE4Cd4/NgOK3CPvqYk4Fu93PLBJ9kN4mcCmbVvFtyCamwBV+Vrk\nCWrmD5XVzuJD5jYVhW1DdQdWslvB1TQ5nFygZW80zrT1VVVnzpo6zPUMfRhC\nBL1RRngYOVyZe+GRSt0NSe4rn3oGndLjEU1gtkBg+WX0vHJm+FfEbJ2UXwhr\n/M6VUgYfeKGocP1tdYiIyzWqMcqPFEU7SscULmJtrvVp5VFqCd/QsDWvnu4b\ndwY+\r\n=PfpY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrGM5kulSLfhmf7sy2V71ZA2y6ozQeeKQaFiKd8Z4PnQIgckpqxpuKzxVCLbEG7EzNTovqSSAVau1hxYOTKCppA7Y="}]},"maintainers":[{"name":"andywer","email":"andy.dev@next-step-software.com"}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-fns_0.3.0_1575685528477_0.10102856350057166"},"_hasShrinkwrap":false},"0.3.1":{"name":"@andywer/observable-fns","version":"0.3.1","description":"Light-weight observable implementation and utils written in TypeScript. Based on zen-observable.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/andywer/observable-fns.git"},"module":"./dist.esm/index.js","sideEffects":["**/_symbols.js"],"scripts":{"prebuild":"rimraf dist/ dist.esm/","build":"run-s build:cjs build:esm","build:cjs":"tsc","build:esm":"tsc -p ./tsconfig.esm.json","create-entrypoints":"rimraf *.js *.d.ts && node ./scripts/create-entrypoints.js","test":"ava","posttest":"tslint --project .","prepare":"run-s build create-entrypoints"},"devDependencies":{"ava":"^2.4.0","npm-run-all":"^4.1.5","rimraf":"^2.6.3","ts-node":"^8.5.4","tslint":"^5.18.0","tslint-config-prettier":"^1.18.0","typescript":"^3.5.3"},"ava":{"compileEnhancements":false,"extensions":["ts"],"files":["test/**/*.test.ts"],"require":["ts-node/register"]},"gitHead":"9821126e94b8128bc216b6665084386aad5e9b1b","bugs":{"url":"https://github.com/andywer/observable-fns/issues"},"homepage":"https://github.com/andywer/observable-fns#readme","_id":"@andywer/observable-fns@0.3.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Jkit3Dub+UfHNpMiI5S45Mgzw2cJt4nqdBm9+/fXkLukI/15WqUqMIvpLvvDvGcPXwdQpzOFSDJ0BXjj2m4RAA==","shasum":"446f7d1a6ca330d8dccd12e47ebd8d84defc776a","tarball":"https://registry.npmjs.org/@andywer/observable-fns/-/observable-fns-0.3.1.tgz","fileCount":63,"unpackedSize":81170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6w9UCRA9TVsSAnZWagAAwpYP/1v33K5VYnh8sTCXzEUB\ncP//yMIef/9MUyGtpUSzSOchDg/IXgCrRxAPHrjsMtuaKdYquN+jsE5S6pe1\nhWgs0xduJ7xkrMFv50zoE/UQnS4u9U9rif/1MioCGHLBSLcBJj3g2AZDBjhx\nLh/wkegoasluKJWLdRIMwdf5W7CKulHkf6h1e/O8OM1rXA/qok5Ts/iUVcho\nI2R1Ofsvsl/tCCyoRRG5WpYgpX+/T1iD4a+fQ5qhLPtQq/mMyzZOKGdrdqDm\ngU1AK/jtsWK4WhgzrKeiiUJdaazgOmLB90jKsmb2UP7B7SdW6jiDpCu/V2eI\nZ/cR4blgaZyBEnjxTVw1nFJYdrNWjN92gRdsOzN0exc6q0TZsfVWabtoz/OL\nQSOfg3knrn5eXhSGUd3wGqzentAmgRQxZjQoT3IdVUGzd63pquOQvOJFRgKD\nfr8nQw3Xg++OgGvRUlhmeV1CffCqAV3SMl/z2wEidrlmOGyyGTXITJI3R4mu\nklH71gRXAZyNqkdjqc1gv38HPz9NTcGt52ME1829NU+RfsQHhuklsAq5RNTK\n2+7WruMbmeqJx/TBeJiqzTn/XC5r0aB2sPLVEGf8ucz59hm1bm+VKWYZRQvH\ns96NzOfXIEnH45rejvezFqm3NicCoOfELcAZLLwOCNBW/jYx2VS/jmfM+t+R\nYuIa\r\n=pU2Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBsxYmc03SNY8k2Gi8t2bY8C1XGSBk58nv28lHeSr1pVAiAXbrQn/vTdFONFoOW7mzT52x+10JaETvxIrDNGCGTV8A=="}]},"maintainers":[{"name":"andywer","email":"andy.dev@next-step-software.com"}],"_npmUser":{"name":"andywer","email":"andy.dev@next-step-software.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/observable-fns_0.3.1_1575685969580_0.9061021517528911"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-13T11:43:15.134Z","0.1.0":"2019-11-13T11:43:15.877Z","modified":"2022-04-04T14:04:48.565Z","0.1.1":"2019-11-15T14:39:09.198Z","0.2.0":"2019-12-02T10:52:12.437Z","0.3.0":"2019-12-07T02:25:28.657Z","0.3.1":"2019-12-07T02:32:49.788Z"},"maintainers":[{"name":"andywer","email":"andy.dev@next-step-software.com"}],"description":"Light-weight observable implementation and utils written in TypeScript. Based on zen-observable.","author":{"name":"Andy Wermke","url":"https://github.com/andywer"},"license":"MIT","readme":"<h1 align=\"center\">\n  🕵️‍♀️ @andywer/observable-fns\n</h1>\n\n<p align=\"center\">\n  <a href=\"https://travis-ci.org/andywer/observable-fns\" target=\"_blank\"><img alt=\"Build status\" src=\"https://img.shields.io/travis/andywer/observable-fns/master.svg?style=flat-square\"></a>\n  <a href=\"https://www.npmjs.com/package/@andywer/observable-fns\" target=\"_blank\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/@andywer/observable-fns.svg?style=flat-square\"></a>\n  <a href=\"https://bundlephobia.com/result?p=@andywer/observable-fns\" target=\"_blank\"><img alt=\"Complete bundle size\" src=\"https://badgen.net/bundlephobia/min/@andywer/observable-fns\"></a>\n</p>\n\nLight-weight observable implementation (< 7kB minified) and utils. Based on [`zen-observable`](https://github.com/zenparsing/zen-observable), re-implemented in TypeScript including `.pipe()` and `.tap()`. Zero dependencies, [tree-shakeable](https://bitsofco.de/what-is-tree-shaking/).\n\nAn observable is basically a stream of asynchronously emitted values that you can subscribe to. In a sense it is to the event emitter what the promise is to the callback.\n\nThe main difference to a promise is that a promise only resolves once, whereas observables can yield different values repeatedly. They can also fail and yield an error, like a promise, and they come with a completion event to indicate that the last value has been sent.\n\nFor a quick introduction on how to use observables, check out the [zen-observable readme](https://github.com/zenparsing/zen-observable).\n\n```js\nimport { Observable, multicast } from \"@andywer/observable-fns\"\n\nfunction subscribeToServerSentEvents(url) {\n  // multicast() will make the observable \"hot\", so multiple\n  // subscribers will share the same event source\n  return multicast(new Observable(observer => {\n    const eventStream = new EventSource(url)\n\n    eventStream.addEventListener(\"message\", message => observer.next(message))\n    eventStream.addEventListener(\"error\", error => observer.error(error))\n\n    return () => eventStream.close()\n  }))\n}\n\nsubscribeToServerSentEvents(\"http://localhost:3000/events\")\n  .subscribe(event => console.log(\"Server sent event:\", event))\n```\n\n### Philosophy\n\nKeep the observable implementation itself lean, ship the utility functions loosely coupled, so they can be imported as needed.\n\nThe aim is to provide a lean, friendly observable implementation with a small footprint that's fit to be used in libraries.\n\n## Installation\n\n```\nnpm install @andywer/observable-fns\n```\n\n## Usage\n\nYou can import whatever you need directly from the package:\n\n```js\nimport { Observable, flatMap } from \"@andywer/observable-fns\"\n```\n\nIf you write front-end code and care about bundle size, you can either depend on tree-shaking or explicitly import just the parts that you need:\n\n```js\nimport Observable from \"@andywer/observable-fns/observable\"\nimport flatMap from \"@andywer/observable-fns/flatMap\"\n```\n\nFunctions like `filter()`, `flatMap()`, `map()` accept asynchronous handlers – this can be a big win compared to the usual methods on `Observable.prototype` that only work with synchronous handlers.\n\nThose functions will also make sure that the values are consistently emitted in the same order as the input observable emitted them.\n\n```js\nimport { Observable, filter } from \"@andywer/observable-fns\"\n\nconst existingGitHubUsersObservable = Observable.from([\"andywer\", \"bcdef\", \"charlie\"])\n  .pipe(\n    filter(async name => {\n      const response = await fetch(`https://github.com/${name}`)\n      return response.status === 200\n    })\n  )\n```\n\n## API\n\nSee [docs/API.md](./docs/API.md) for an overview of the full API.\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/andywer/observable-fns#readme","repository":{"type":"git","url":"git+https://github.com/andywer/observable-fns.git"},"bugs":{"url":"https://github.com/andywer/observable-fns/issues"}}