{"_id":"learn-rxjs","_rev":"45-dc60dd8eba3ee85c7166d8021b370567","name":"learn-rxjs","description":"Complete RxJS with all resources to learn.","dist-tags":{"latest":"1.46.0"},"versions":{"1.0.0":{"name":"learn-rxjs","version":"1.0.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.0.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"f10cbb97320206685db743f57bb0eb435a5f2c7d","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.0.0.tgz","fileCount":9,"integrity":"sha512-65brnuWbVfL3ohdpS0Gi2ntakfeh0FK7e42ITu8YszR1I/s9bDCDnzGzvZWYbL41GVHVEQyGkOB6RYsUE6Qphw==","signatures":[{"sig":"MEUCIHEwPSZ7qWktwZdUdnN2wa1FKwbKXgy8rESZ/YMWer9oAiEAolLop+W5Hu779AoqsPtMeXCGqFhamqQx6+lOL73TG+w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkMvyZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpirQ//ZIRIhnIDEE/peMblcfIZ4+MRdMIxYQa06rnHVK4ZHraq00at\r\nzj4DJ2IH/vBVwbeQ017mZqJGhEpmSyvsPGnIkw/Mg5RIZZgi42Q40VM/+v4s\r\nbpstITQ9MSnBJeyWLjWpgSgyd3GEXXW9cQBU+lrAl6ZuDh0zo/otPWj6AbVP\r\nTQJs2KE8//tCh0IaCGqPgNn510pDibJEyfpobKSCqraBG/elNvb82FpndPuv\r\nPdNqitW6UkCvH1NlDbG9ITKzJj7i8G8tWA1K+xR8s57Efbb/sW2Yx5XhsqCX\r\nvhKRU7vsU79nve3wI4zdSCe2d3yExt0h7WY2rdJxrqp/uucYVP7aLmXKcbRt\r\nQp1n2RpY0G2lFdhkDdhwrEbtGzovv/zVO8B/IdijSrg7FjkOd4LUn4RHAgkr\r\nmNnK2mPFTY9/eBJCT/o1dHg5kPdOG7K+4IvqWnCQdHm4xE12oiOkwSIhRd79\r\nTz7sb/NmRpnTXhy+2BFzhFdv6xTqToZCZPEeynkCKoIrreVWBxlNViCxUFUq\r\nf4twiJOsRXWWwdwAMgAWgxj+78dD48CQXj2JcNZtwDOd2DllHT9kT7bF3e8B\r\nr4G7epTWFCn+NT+nobFaFHqcGR4KLcUUWU2jtRIN3G7AZ5vcyHokeluLJ2I1\r\nfR6tsuMdfQRPlqDzRnfibEcM25mKCeM7fY8=\r\n=h0qO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"9ba5bfddf5e2a4da36dd098b1e85d501abead41e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"9.5.0","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"19.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.0.0_1681063065284_0.6975058313693423","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"learn-rxjs","version":"1.4.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.4.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"f3e99e5951cc08908fad51b140d83c572b228b4e","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.4.0.tgz","fileCount":10,"integrity":"sha512-mOELqfAGSKG3+1p4nJhmj2KM9lIiMkZUQSDaRIFTWcGR1k8REc8kUa6lPssqiz8wqY0KuNpTPmdEd1DFvmce8A==","signatures":[{"sig":"MEUCIBRGj1LF/xiF9TlhAo17V7fGl4D0PSpP212rj9ZHeHeYAiEAwavKa/ya3teJJdaAkesU4OWBbYwTwrSC3sTKxJG++UU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkM4uBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfbxAAn46m/7MCw+T/1AuuvEeS7tZICTJ47jBLT/B9SsPGc1AkssUZ\r\nj50+ZgNWMpZnPKDx4kyxEeoFIfos/YJHVqdC+7Q/Bhta2gA71Gp4OuqwpDMp\r\nSORnlZzlJJ7nWqCD+kOHQTpNqoNpDe8U13/CakKmkTAVYs9CCRyZD6ZkojG3\r\nYErDmFNEU/LlF4uPS+fPk0qkL7NgcUQMl3Fpl74QcNEz2OiqYSRF24hf5yoa\r\nP7v4W04WKPaXUhMIIYlhH5vAILWta1mVORzHveZrpeFwYI8rGiqJqtQ3M6FL\r\nCtjDtFFvoqVqbzzNpf9jsgxauJuf5Zg5nr1+uafAqY0iYpOYXQ7kmFsS7ACz\r\nWZRH6DsdTThp16J/D/yyJn4jlLaKDqfk/8ZDfPpP/yMhK0KP1n6zbn0dHRyu\r\nfKycwCTFLGP+tqT71kBkSTdrFtxNxlz/eiE+iOphBeqeTSa4nWmQwdfPuRhT\r\nHzawXsZLlKIMW4h+7dvzB98LwyNhpU2pyOf2qlM/G+RrawejlDt9RMRGhouq\r\nLHoLMLkxGtIC5MzCeB/F52wyVCPjqmNHRFAM0J6hRh/xJhBcGGdf9C0V3Fie\r\nFpnCpeiOvaFAH5xtAJnwGb2AhZk9xB6F774M0+UsF07lnOawieEdlXUkrf4H\r\nMm2OYwW2N7KApu5JablePZal4WrvB4nvxss=\r\n=/jDZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"7cc75032c28aba9d613ab3728725d97c3fb6f2b8","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"9.5.0","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"19.7.0","dependencies":{"rxjs":"^7.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.4.0_1681099648888_0.8979027785853464","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"learn-rxjs","version":"1.5.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.5.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"b3210b1b18d6a04c8dc750222d33937f25970125","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.5.0.tgz","fileCount":10,"integrity":"sha512-1IzVR+DWO3f7dmiNxeQWejVCG5FC3lcoHhvYJWeAcbQ7EIyxt/jmYzu22Q8Ytwd29rIQ6gGNuceJoPu3Bz2z9g==","signatures":[{"sig":"MEYCIQDa0oJCHCQX6jGtCEnHzPulWso6THgG0xOyYl9EyaGidQIhAL60jeOPg6cQyskbojHo4WG1udI8/ryMPG4ZZd6pfJHt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkM4u6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrb2hAAgtJ2SYn4eFaaUUnlRBQfh9lEAJUaDBb91tX2vqf7Ht1bMQUV\r\n9MtrqrwpNvbTyRpmBKFCc4ow68PN1oHLhBECdFEAz9pUTm2qvHdBfir7SAyR\r\nMX449memY2dLuCORQCQSw/3WAp7hq6Y7vmHlA1TzMzmdUSVauz0V4QCU2Zy3\r\nWn5CNOAcPLyRNwAbg03LGokRHlRjMkYmUzuG67MXs3K/4BcfK7TqyoghiAFI\r\n0aEF/y1lr/a4PX34L0QX19AtBZdDB3Yd3o4vInUvJbKhUWBbzIb66DpWV0s9\r\nRFQRBB4XKClReFdpLvCW+Dm6ZX828RVpaiF5Ip6u4MNyYYRd9i3fzrZchTlH\r\nX2NR78DRiVAMVUsIzf1rR25EhuoBWmbTGQI8Q/n7uz+8Qz+0wnMfyGXeiO1b\r\nPObYnInCbM8UREDuk69E+Jq96hbjbjy5ArVDyv33wxknl4KnpgI4VadxeL7L\r\n2xm3h42N/eYGOHvNFbqNoPs0M+Ia6cD0Z30t3TzIBcjMqP4XIWCwzWqw4LWR\r\nvIZch6ps0homX4d+wQ+/b01VVq9j48kRA6oat07u/SSmQpJxBuGkfDp8n5wP\r\npV1JHa8JQlxgC+yOmbMWaE20RcXgOiM3C+Ovs9u5DT01L43PK/g+9Z3ASlPA\r\nONXWZ2plL6Z0CiboCDhuO9f/awJeMwvE0FQ=\r\n=qr4A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"81628b9ceb3d8c112dad4559700196c23378b8a5","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.5.0_1681099706396_0.8049214765572619","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"learn-rxjs","version":"1.5.1","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.5.1","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"635d18c4a059f68435be23689be37f65867c4c3d","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.5.1.tgz","fileCount":9,"integrity":"sha512-QwPrjbJk++Kr0pd2vDqWLYY20gY23p1cWzmIgRFfALZV5Ai0NZjxHjnRgQ/0vBMjR6KZJsNw46ZgRx1IywIJDQ==","signatures":[{"sig":"MEUCIFtEHdXo0hc0MyW8n0+u/TBBzugABwvcfGsQadrMUwbuAiEAnzz81mNnxF9NeSuphrS20MXJPRWaH/YcIAWRVLXhPTQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkM4wNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrjmg/9FhHiGgZ+QAILmhIp2re+cPGjusYGsM+FoMd1HalMoVHTbmvx\r\nfaKoREWxLeHgqFEe1ZTcUb0wHSeUkvzWIajl9fzvzkK0Junsq9/uL3CJpDfJ\r\nz81H9wDttVdWDHWztJes2paSpprELSjEACHbhYBdsi1R/duxVoLi1kndC8bQ\r\nWpeD4gaE3gDy9jYDF8EtrScJkluY6WSU31x6ngCEf7nkLlRqgLuGiZVFMaAa\r\nrGqX9SqfX9iB8RGE1rXGlfnVp2FbBKC7gCGrGcqDsBRemZmJ99zO3vYw72uX\r\noMCy1ZAZE03T/jqq1YVoDlN1PquChxLMYklem+Lz4hCdJsGIJXY9L0iKEEX4\r\nX61YAeovw85vAuV/I1TCGKFXnGchZlAjcp4wOueedcTYiZnoxliK5nCxw59n\r\nWc2CpQniqosnWFTsh8feHjnd0iuHvkvAOnGZy+/4jL4RZM+lrI85caj9dOYb\r\n2hd/qOFonkEHMBFUW1K7JjMxELcMwqW/lni+g8H/JlVh14Q7KWeqCQDJsEvG\r\njoN/u+5wSffvmMNtHpUVYsQZUujkIfdl5cebJlfKqs//09QRiBdiQLo3T7Ud\r\nBMluJZhynKxZcZia02x8q4B52q6vodsKJ6u3Zb79VtLaAucflFQ59zV1JMDy\r\nElbCVTRCANowgXKveO73EMZRi8RvOgJ511c=\r\n=NvV6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f15d1004dc6d7c83dcf12176cee3c95c3cfa058e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.5.1_1681099789043_0.9475157955633062","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"learn-rxjs","version":"1.6.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.6.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"e5f5492bf6d3710a798dfbf7376c68d31e932ff3","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.6.0.tgz","fileCount":9,"integrity":"sha512-JL4cVzxb1FotS5ML4bZ8sC90IW3Iy2+AoULcGMmyZbzaw7Ug+wpgXyBNzhu/QPjYPYon82kJnl17XgFyAhWnYA==","signatures":[{"sig":"MEYCIQClEtplT/7lPDIzRJZaWsKGOxJgXwsA6sOlXq+csYuxKwIhAIMFEP6nr9coLncRNER27kxwsdLqS1jBhV3cVcsY93vf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRU0hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmop2g//cWnzvgXjHtZxnesgnEuB9FA9SAfExq2oNQthNNmlDXh60J3F\r\nzZuUIX9GclKZIL7gE7gZJHEaop82BeSe9QENI6IlDbc8Nn4aIz6jig68lGge\r\n3fHZt93U6BvMEhvD2oPugA/+E3wphTgi6q9eIcUPL5jXUXeCn5RvfXS1PCGU\r\nmWi+nJFFoGA8/guj17g3nK/wRHfoHo1clB4kqkdvqqa/ikrhsVLmu8aLhp4k\r\nuHv8bjadNP+8Pw7kfSOHKmncmgfSyesg45ceVbf8JsqB6J12MyyMP3gRnLNP\r\nOYHjxU3HANIs1TjkAvGoifvIQ92rFS1nlK629KccnlVkjsWJuBDkmAkB1x/b\r\nEf6ce8Bkdtnxb9GRTUB/ghBsGTVxz8uWtCPPuo43/CTQpo84rwt9Hnm883TJ\r\njvjDsRxCzGeCRkRRcmldEX1Ladw+c1pkyuD4HIJpZcQSYE7dIzL98elDTYoE\r\nPvuCguJRuamLTJiK85duJEcwMYZLSrYU+1LGVVLvsJ1JB2SLNN1Mte1dFMJd\r\n0AFAyW6ZlarnJ72qG5GZERfPKl+hObg81zLVDx7CA87+raWcV1nF5mE+Zsd0\r\nTjZ9YSTXBQ+wTIO0rrMfHdRO04mLwwI0wjotJpMvhSiNAn1Jtz01/hLkbu5G\r\ntQDz1GEYBgLcIBJx4Zi6A2B/PoyJgdb9K3A=\r\n=8YPl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"55033c53479c3898a2f4ba6143621f620994674b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.6.0_1682263329177_0.63620234546238","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"learn-rxjs","version":"1.7.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.7.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"9cae9737db1214250f0e39bbcdf64e2ed8febdaa","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.7.0.tgz","fileCount":9,"integrity":"sha512-IyNbnieDbtv8LJad8b/E968Ov8ew2o14/+FX7hbsPkGpakkZ//rnaxmqK0C0ImbkNvT/DTFplh1bortXr2FK6Q==","signatures":[{"sig":"MEUCIQDhKZWwahJ1cHXLHAcuF9yiSmLqoOt2WDah9pmo6ilo1AIgHHUrEYAfh5Hv8HG9oq6g9V9G/FZNzaPsGSkjBkcdDn8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25476},"main":"index.js","gitHead":"b3dfabf935a89cfcacdd820585dcffcef8faf09a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.7.0_1687406811832_0.9418010023936867","host":"s3://npm-registry-packages"}},"1.8.0":{"name":"learn-rxjs","version":"1.8.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.8.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"46bbf16ee5a42b4d6b977d2d9844f172a1911a88","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.8.0.tgz","fileCount":9,"integrity":"sha512-+slYZU6CRnP5KLucHZNafuLUb6/bczanykEMbYmD/hhp0mEBNoMnKpnCav7q50WveqFMU7YLHRh6pIiVR6FjiA==","signatures":[{"sig":"MEUCIQC8E5u/DsZToIoUiv1TgMw8jXuSBl3MJh3mlFoNW3s7mQIgOnNkfBBmWHtu6ewIOUMyAoSnaArorTwkm9z274wr77Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27029},"main":"index.js","gitHead":"806346570432998ad428771142be59f693fc674e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.8.0_1687804251244_0.6413991739578588","host":"s3://npm-registry-packages"}},"1.9.0":{"name":"learn-rxjs","version":"1.9.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.9.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"f9507fb4b0719d7338742bf9583c1122a06a7a48","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.9.0.tgz","fileCount":9,"integrity":"sha512-SP4hwIq84L39u9HbjR4zVH9ttjW4+6M4pUNgSsUagzyJhtTZ12AyYAB5Kg4UgbdfzGLWsQXN5651GgNDoYcvkg==","signatures":[{"sig":"MEUCIFNB61m6yWSSnC3306LHZyuxz8S7O6vci2GUWeiVPkyMAiEA3OpX9IMX3YI4dhgclLe1HRQcc6G4TM2VlpGlwfGQpas=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27484},"main":"index.js","gitHead":"d96245d5578187ed2bafb036a525da50c88fe54f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.9.0_1687879167428_0.36358922026537277","host":"s3://npm-registry-packages"}},"1.10.0":{"name":"learn-rxjs","version":"1.10.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.10.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"b4887c76f101bcecc6dadae273ecd4e9afafcc39","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.10.0.tgz","fileCount":9,"integrity":"sha512-PJax6axNLkezbEN45XBAQTWvy4hcYCZRlM/539A1JcxuwlAyZD0/914gO09VBwTkua7S1+oS0vjOwnGALvUSgw==","signatures":[{"sig":"MEUCIQDkKydauQ6TblXTMKjTun8VEN9JlVRtIiZ78rYyGJ+V/gIgdtimMdyo8JbWLaGPYqOoah6Y9TmN+Xaa7i4Guq6iDcE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28946},"main":"index.js","gitHead":"93635c04ba216fce514a51c95d133a0b9bdbf8d5","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.10.0_1687887619806_0.06873186944800658","host":"s3://npm-registry-packages"}},"1.11.0":{"name":"learn-rxjs","version":"1.11.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.11.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"8d7f05a3a8261af169358fa13ad0fa04c395e85c","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.11.0.tgz","fileCount":9,"integrity":"sha512-cgVMq1ntIGBibr1xBzx3NV27LHJXvgg8+lZzMW3lN9yHpm11+orALEN0HORcrBIThfp9Et3FxQyReod9hbCu9A==","signatures":[{"sig":"MEUCIQD8fYCowK8sOoJG18x5Fpp+jaD5EMUd+JApDu7Z4d6vdgIgJxA0XnTGsn9QjseY+9hz/ijgeEw1NGrONtKEhddo7LE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30496},"main":"index.js","gitHead":"aa6c624e6fbb7e450e11774892a1877bf2296027","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.11.0_1688055791789_0.6683710095267783","host":"s3://npm-registry-packages"}},"1.12.0":{"name":"learn-rxjs","version":"1.12.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.12.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"b7900c1610f9a7118d648ef80bf5b5002cc2d478","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.12.0.tgz","fileCount":9,"integrity":"sha512-sOLENBiNIw1XG/s+cIOmNvfuph7alnGIefl1CodJNQmUFp6UkukEiIF7aP+kvBws9bhh0FdxILLvlqUnmnW0Ow==","signatures":[{"sig":"MEUCIQDiM9krg4vky1hRsd5sXTqJhq9J0ITv2lzlxJuRbh3jfQIgTln8NvHuDXFn9jL2tubd/CD2Qo8+u+lGuXlI6R1YLmw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32160},"main":"index.js","gitHead":"3d081be064ed7317e852510c2cb26598cc1a0e63","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.12.0_1688099199992_0.8504566670880924","host":"s3://npm-registry-packages"}},"1.13.0":{"name":"learn-rxjs","version":"1.13.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.13.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"a6768721f99bab415f88f461915d1805e7ef1d45","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.13.0.tgz","fileCount":9,"integrity":"sha512-WtQXTG/tT+iPhzzQE7IPXJqVXgYsFy+dvsum9WwlOGCBNOd8ISYmCGPLyinWMEUKToWMY9XysnZ7au57VdqpBA==","signatures":[{"sig":"MEQCIAtd7GfIHDkZJrRYfz2I/Raic9xBJJJDSe8K2yLQokpbAiBIiEyE9eepR01Sh+2TJrsC2x4wQD/SvDFPaisEonOVjA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32885},"main":"index.js","gitHead":"9c9b46822a46cf1e93deb1b523fd3ac6aada6bd4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.13.0_1688185987840_0.5379162961184671","host":"s3://npm-registry-packages"}},"1.14.0":{"name":"learn-rxjs","version":"1.14.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.14.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"34b7aad1713b01521d3678be1a4dba88cc108122","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.14.0.tgz","fileCount":9,"integrity":"sha512-ZC6laPmlEI1TXLQnreLq0cHmERbmFBPbEOEEm38/IvO53vVcnu8d71poyaygfqp3edbbm5moi6iLSF0gUTcVyw==","signatures":[{"sig":"MEUCIFgmBi4B97KSQNgUZEfcpfVHX7ulswBb6f8B872BOqmHAiEA67GWzn2y1Q22StRLnrg+Cw1NnzjvZGiPk7t7TVJDfxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33825},"main":"index.js","gitHead":"923960f75f9d7aa4ff08ec69263eda0712ca550c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.14.0_1688232724728_0.7922452150246191","host":"s3://npm-registry-packages"}},"1.15.0":{"name":"learn-rxjs","version":"1.15.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.15.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"422ddb8164055361efe075778dc66dd8a0b8d65f","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.15.0.tgz","fileCount":9,"integrity":"sha512-134sHUU6ul241hqc6jHcZKUQc9hB8wWZazdO/v1xtgFvV1TRbySlMzZauZnxCR00ep6VL2oQ3lCOIa3+BOyEaQ==","signatures":[{"sig":"MEQCIHfY6koCe5WveErfWoFunQPTazU22NS1T3+tlwbIlW0fAiBaJUVRThZZlPJG7U2dK26ssVlnHrgsn/m+P1sZsm8OAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34526},"main":"index.js","gitHead":"bf2ddbca4377ffb577ee1c456e200906443dda0d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.15.0_1688273954459_0.8381890381984543","host":"s3://npm-registry-packages"}},"1.16.0":{"name":"learn-rxjs","version":"1.16.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.16.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"bfe3f07cde31fe73a8739ff40d9bb9dd656c59d3","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.16.0.tgz","fileCount":9,"integrity":"sha512-wZ/49gOJIs/7Xkl2r08YBmKTriFVwIJQjFCNrLvZUs6P6MUUIvyDYGIzeeURVdtZ9drRZjh1+eG/OG3sVOls2Q==","signatures":[{"sig":"MEUCIQC3tTtliB7rTnAyQ/KX0oyVHynHAhyi5tiD0s8VK7MmwQIgDAj4/ghZOo5Jsjrp8c3ZmzBYByaaUTIknfQTFFlZX60=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35263},"main":"index.js","gitHead":"7ee48bf25c6a322441c1e770cf2018a79ae9e043","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.16.0_1688493108959_0.8903947456387735","host":"s3://npm-registry-packages"}},"1.17.0":{"name":"learn-rxjs","version":"1.17.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.17.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"ee517254c7324dde12af5a90ce881dba56865d36","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.17.0.tgz","fileCount":9,"integrity":"sha512-DOxodP7nGWpmmg8Wrw/V9tWl546A1KF8uag8Fkf1avTuFXnkZdlXu0p5WgRd+gdOCzLfXM07VsT7eQEvAWAjbQ==","signatures":[{"sig":"MEUCIQCqNCaj85utB+QQdXqlEdfDIbrs6eHobTDFZphOqtMMFAIgN8dm09UcIljLg4ZKir73ae3NUHDS15b/be/qkRmZ804=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35995},"main":"index.js","gitHead":"1b8d2b8e83df7543b1e7bdd7b0b52be9e90c5773","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.17.0_1688528633611_0.9243748307367341","host":"s3://npm-registry-packages"}},"1.18.0":{"name":"learn-rxjs","version":"1.18.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.18.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"4408933ffafa3c18a3d89429c0fd23022f3841ae","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.18.0.tgz","fileCount":9,"integrity":"sha512-qaFffnaN4pdgpc76xuBoaPMHAPLtwoz0GkLPc5yWMbBMchCXjvbxUwxO5PGHbgTqYYQ25f2dUHtUX/0oKcP+Zg==","signatures":[{"sig":"MEYCIQCmAQspENLH88Ke352uIBorHe0uqj8Nq4CmhRsS8YrfUQIhAN+Nq9XdAEBdW0Gc9vkwusUsKq6SCiWnvq0/6O0eibW3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36914},"main":"index.js","gitHead":"8591290ac2bc13448f869eabb45b023aae1dc98a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.18.0_1688658364535_0.9425630123256572","host":"s3://npm-registry-packages"}},"1.19.0":{"name":"learn-rxjs","version":"1.19.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.19.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"2ee9e01d9dbe836078aba7730b63b733bfaa3c39","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.19.0.tgz","fileCount":9,"integrity":"sha512-wlU9g3U93xZA7EWaTSAPtBUwtm/t+trgfZnZLOIB3K//vLg0X4OniJc/kSEZr292tEBKx8dntMQ/gd10mdeluw==","signatures":[{"sig":"MEUCIQDJg0rcYelPvlOftBoBy9r8U3kZ49QdA0MTzOHbtTSKnwIgVQKYv3nTGEGX1IRrviRP8wd4PaiFmbchyW7S92YF1cw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38746},"main":"index.js","gitHead":"877eb6bb9815022cbf2222a8cd101defe189418b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.19.0_1688834293261_0.2673221651002451","host":"s3://npm-registry-packages"}},"1.20.0":{"name":"learn-rxjs","version":"1.20.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.20.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"6e28fdcdb61bba1126bf0ef9faccf44281731071","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.20.0.tgz","fileCount":9,"integrity":"sha512-BqJFg1Bw96x2+A06IUBKLN0tS0ztYd6gOYz+7RnmHEXAQY1yxQPlwstH6N6FwuGSVIlk4zSjTNhhWYCmEGkr/Q==","signatures":[{"sig":"MEYCIQDmXiAg1bI9OY5k20R+7jYfR/hCAoODzPw5xu/a+Ixg1AIhAPLCq3f5UtDUAOBfUUmNv38KPAKaewSpiRzZPrhjJY+P","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40110},"main":"index.js","gitHead":"2d4f05187195626bca387441cccea3fe002eb996","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.20.0_1688912271818_0.7664497930011136","host":"s3://npm-registry-packages"}},"1.21.0":{"name":"learn-rxjs","version":"1.21.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.21.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"a3b490de347f818f197b4f3eb5d71a87fed04e5c","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.21.0.tgz","fileCount":9,"integrity":"sha512-bFlWjZG8mEYNM/GjpSVEWV4x9GLjL9s5r2lmYrCnZAxZaWkGcuLwx9zL8C4uCN2Guxf+vj6BPILA0xHG26dPqA==","signatures":[{"sig":"MEUCIGVhL1eZ4MD9UJKSfU9zwWZHTrlcokCOlkRjTXBdusQIAiEAwNkeAdubfV2U4PgKHYVLW1yXPlyxFp3W8GQ06tjtLZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40964},"main":"index.js","gitHead":"995a480fcda4186621c6af687c1d318473dcad2c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.21.0_1689179417687_0.8003573732546732","host":"s3://npm-registry-packages"}},"1.22.0":{"name":"learn-rxjs","version":"1.22.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.22.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"6218bf658a8d6cd04072e1a503bb386464900734","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.22.0.tgz","fileCount":9,"integrity":"sha512-dFT9W21yxwwXQ+rt9dlKkvoR35xOr+foZa03+YNyIUOLwc54e7j7Nc1SajZcBqvHiT/ERnW4WVprsDA+JcI0aQ==","signatures":[{"sig":"MEYCIQDtjI1S/qVs6uKGBKvOsvQvsiif6n1TpZxYo8maPfKgsQIhAPcdFjWi1lDWBj6ZRZEv3q59SNZRndbqWyu/hmrwtidI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41752},"main":"index.js","gitHead":"d5786f6006cd010394ef39480ab023f02d7b7b60","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.22.0_1689262880742_0.7326282581784878","host":"s3://npm-registry-packages"}},"1.23.0":{"name":"learn-rxjs","version":"1.23.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.23.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"38f0b6318af0f0fcdf2bab92efd886d6ce5a3543","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.23.0.tgz","fileCount":9,"integrity":"sha512-7Fyparwfdb+hc1MnFOtEgEqUpZL7zlrRJ82H542PktI7C1HlE+xeBR6ae+AwbWY14HX+ogcxoqECU3L4kgy8ig==","signatures":[{"sig":"MEYCIQCaAZxKkBRjxMw0VtUM084uwh20CkiSIeXJyd2YTjortAIhAISbeFFPLH+UY6waNw394c9VlH9bmvhSHE6Y6lwLw/G7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42533},"main":"index.js","gitHead":"6d2112c8c308c1f6a050852980b60c0b104850e6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.23.0_1689352482688_0.13945967858187136","host":"s3://npm-registry-packages"}},"1.24.0":{"name":"learn-rxjs","version":"1.24.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.24.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"26d78f8d863f305ac04da4f2b72482181bb1b669","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.24.0.tgz","fileCount":9,"integrity":"sha512-MfVJgPn4D+D9B3gTvLmdAQhlb/b2yUPda9J9e0h/ay6JkRPkHyIard0JhCaIoyYrG1o9DzoGZ2ZKGPEO7PYUvw==","signatures":[{"sig":"MEUCIQCj6+ygoDSYhWddQP4doKwjMjj/wyCtwZl0RRaCHw4tyQIgTlwqnHCIAffZadysYT6Vukrh0oNh1oHCxKppoYbY/tw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43558},"main":"index.js","gitHead":"a6cf5244623c828bb9b955a357c821dabf417b27","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.24.0_1689397525788_0.02795670146593121","host":"s3://npm-registry-packages"}},"1.25.0":{"name":"learn-rxjs","version":"1.25.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.25.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"0917f403c841f68021ad94d3b468cbc4681f1d54","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.25.0.tgz","fileCount":9,"integrity":"sha512-FTKUwHZ7TB3oSufrhNAdQ2prhPcXO0V/FaPbvHSTlP+HHOwOCJoihYOPdPx6eRkXjr8E4GDPGLVvgVm5WFIyEA==","signatures":[{"sig":"MEUCID60AtrA6azFODNlOOceIEac3AbcuwetAH4DlYvpXwOzAiEA4cUHdO0AI8DUSRA7KV53yFllW5LVbZlRWlGXmYsxckw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":45386},"main":"index.js","gitHead":"ca7e4d4dc1cf7d4ad21c6d373cf0ff9cbf235a96","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.25.0_1689521633977_0.07404123788382155","host":"s3://npm-registry-packages"}},"1.26.0":{"name":"learn-rxjs","version":"1.26.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.26.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"2f89007925bfd3ba6096ba21e035b46d547edad6","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.26.0.tgz","fileCount":9,"integrity":"sha512-QJUQZ1VDCtf/P2XOw2KrF/aw/Kfo53vNfbfUg/qXoPGNLlMXq41v/VZ3Bt8MuHBxS7w/H8vbaXQM+0NOVBVtuA==","signatures":[{"sig":"MEUCIQCt26ZtYMS//zW+t8F3BWMq2qvdqPUgTaOkd2WIf18SjQIgJ3XVeeKpL2NeWFKK1McTZCVGCWrAUD7Kh4jdzRYNOYM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50285},"main":"index.js","gitHead":"52705ee0bfcd4d367e748b01cec3e7fbbcee4c17","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.26.0_1689611346217_0.7628569190319583","host":"s3://npm-registry-packages"}},"1.27.0":{"name":"learn-rxjs","version":"1.27.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.27.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"7a1c9c4d712d8b09de1cd23a5c8245f2bbd3280f","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.27.0.tgz","fileCount":9,"integrity":"sha512-RwkWHBsH3YypuyMfhyfdNfXtIxBatI9wi+GkyFkiNpWPO90p6z0Oreb0nuygG4i624fmmVYs04rcS08gtGncEA==","signatures":[{"sig":"MEUCIQDhl7vveQ3P1Wer4N2MQpn+oXBYUY0J/ysreVgpE5HmQAIgbG8yirjDPF9doPiUvVU11cTNS+jkY92LQ7KvBP3q1Ko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52931},"main":"index.js","gitHead":"c971927f6c31cce98484c83f227e8a1286ca8e76","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.27.0_1689692801471_0.5333090170170376","host":"s3://npm-registry-packages"}},"1.28.0":{"name":"learn-rxjs","version":"1.28.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.28.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"8c96519e364b5dfb33f7adefc27654ca8c39ed29","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.28.0.tgz","fileCount":9,"integrity":"sha512-sPMp7p9vole48jKqHGBqB/+MYysmhakR5OvW7aoua0m8S2qogbsTouSMh/KIJcLtk+/rjdWjQmE7hTCUqKyXoQ==","signatures":[{"sig":"MEUCIGgSoKyDM/p1oMAAzRm2+1n3Rj9IpsQ3qx1unnDld6JFAiEAjPppJTDWKLkoc0thFvPlmQxgws4LJvmwIJMlCF7rd9g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54050},"main":"index.js","gitHead":"a86657574c899f233f0d6d4a07e74da8c429bca4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.28.0_1689782686177_0.9005189614547064","host":"s3://npm-registry-packages"}},"1.29.0":{"name":"learn-rxjs","version":"1.29.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.29.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"65e52a496987f0eeaf1fb543be46d2510b4d6974","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.29.0.tgz","fileCount":9,"integrity":"sha512-xD/p/J8Fn86iDZ8TFr+Wo4XGwu9cTH2oHI7T6pAuMHuHjd6YeBMTk8DWyn7s74uqKIB5d/uZYQOIgl0/Ypwtxw==","signatures":[{"sig":"MEUCIQCXEDLSNbEFsmp8VpIwNPs5bmnOSO0vbgvzbHu1r4ns7gIgdeLhzRKUVD+tZqOVOvdzhQW6HLYADLWzPNJPJuHb7aM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55703},"main":"index.js","gitHead":"e4934a42f9f2825f37b8d24d66b6c07c95dd78c2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.29.0_1689844502808_0.7878556979448181","host":"s3://npm-registry-packages"}},"1.30.0":{"name":"learn-rxjs","version":"1.30.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.30.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"8df7cca40d320cfa30a24b64abc8c3487013c333","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.30.0.tgz","fileCount":9,"integrity":"sha512-p7kiDSPWeC2ha1i65DzPK91h/twSKthlfmsDVDHiy+/mqfCO8AEIAfxhDyaeGZkyTagJH27tEo/K08bGTfRqCw==","signatures":[{"sig":"MEYCIQD4+3+pjMO1jaFy6zdR/fb5G+neRIG2M13KSgNovHWf1gIhAKk3xdsI10flgnDMHvWGV9MJrjwhyh6R7jxYHkuJcNlD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56734},"main":"index.js","gitHead":"8d16cb53b42cadda4bcd91d4f01968b89934b66a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.30.0_1690124592391_0.5765501771335098","host":"s3://npm-registry-packages"}},"1.31.0":{"name":"learn-rxjs","version":"1.31.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.31.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"1d624d0d89fbdca41727ceafe46ad7d92063d866","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.31.0.tgz","fileCount":9,"integrity":"sha512-bDhuwZOumsmIzxuScCJNMN13i7+p7yvcdCEf59EIuwctlF/gRsbxBGEv8qko/zEiMKHe6gp0xshxB6p+bqN+pw==","signatures":[{"sig":"MEYCIQCFXNgBOryz21Vu3K/ioqJwO0F7hsSo1DASXfkhjPvfDAIhAKTJZ0XStsrP16ATWvrfQbv47QTmRyKpSk/UkEZUNv9f","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56831},"main":"index.js","gitHead":"52e3570c296135367d03a9f71fe1843e003656dc","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.31.0_1690125048428_0.5674015847755514","host":"s3://npm-registry-packages"}},"1.32.0":{"name":"learn-rxjs","version":"1.32.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.32.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"dd57235c9e87866ed2ec52f0dda4a1d12902e291","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.32.0.tgz","fileCount":9,"integrity":"sha512-FwRbqGqesvvig93bSGOet5ZZnzaw7ZwEtNeiMi1yzy5FapjRqRl9OIN0m0/KlVIpDoBS7xnDdjtXS3N2cX6a1Q==","signatures":[{"sig":"MEYCIQCWWjVhHrvzxq0bpQbcsDBNpSFnsdta6K3lEUA+uOajQgIhALMeW6eTyIRZa2AjjdKnhCkZHmR0oAQIZXdDPA/k/r9C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57951},"main":"index.js","gitHead":"77d73fff987a905a4490cd331e276631ce17563c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.32.0_1690717886333_0.5756418100909275","host":"s3://npm-registry-packages"}},"1.33.0":{"name":"learn-rxjs","version":"1.33.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.33.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"3fbf01250ab42f242456f4fdcce045e5e319a4d1","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.33.0.tgz","fileCount":9,"integrity":"sha512-jDWXohr9h1FxWuTxr5wxTZPCQl+5ovQseN4v8ZWw87RRFdEdULFe4d0BBfU96x3vx03bp4FZ8JJyapgbmCj+Cw==","signatures":[{"sig":"MEUCIQD7jGwm1vzhi6WyxSOJ6MrSqNTmQaTOcFVije8ER1T5kwIgaIAQ0uBWeN0lqjpBkXcRtbiEKAXuqXz9+tM389JelIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58913},"main":"index.js","gitHead":"5d6984df6267a174d436c62b2bbeb4d87b256f0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.33.0_1690820913846_0.7299112185192294","host":"s3://npm-registry-packages"}},"1.34.0":{"name":"learn-rxjs","version":"1.34.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.34.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"5025c3d9fe56f7deec4348aad558b781af2a609a","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.34.0.tgz","fileCount":9,"integrity":"sha512-/Qx2XfmiHat0rlYlzWPnCwzZpXyStgAJdUMDsb70nzJW+3Of/MN6+sylFjfd4RiINRI2zeCXn0H3yR53P0Xs5w==","signatures":[{"sig":"MEUCIBZyErNSqsTS6nxHYvYy81jqZCgei8kjnjS9zZk3rZZ4AiEAy83bIchneB5YjecCTOqqwcRmkVO4HbRSntUFpv1SQw0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60079},"main":"index.js","gitHead":"28b0b421f0459851969d285ffb24484704b0ee78","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.34.0_1690862676637_0.39909878796786025","host":"s3://npm-registry-packages"}},"1.35.0":{"name":"learn-rxjs","version":"1.35.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.35.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"4f03e927783b342c645cd9c56d3e2566cf16f137","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.35.0.tgz","fileCount":9,"integrity":"sha512-T79YJelkaH+aJN7FN4zU6X8qiXdlzmtoJvVAHqnJuunNpsMSHtAJKK2puLDUwWs5k12UFPU8VXIbe9v14wS+YA==","signatures":[{"sig":"MEUCIDUjaUG0kU0zayAz2Qew+Rib0zt868txRG0YbwJOeNdiAiEA0ln5zdxfXuXXO/TEvaa76gbd9iIL6Xdbzu2Zz6aXHXU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61013},"main":"index.js","gitHead":"f51ee2e0c70441d73a748b75f9cbc1c20e7d558e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.35.0_1691256022658_0.653386294666404","host":"s3://npm-registry-packages"}},"1.36.0":{"name":"learn-rxjs","version":"1.36.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.36.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"7ef6c8b154f6e128a4c209f09910a479ead4901f","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.36.0.tgz","fileCount":9,"integrity":"sha512-b8pRGPCcuJmx4i0Kg9lXffUtPYU11DvSkGBP8F4bwozd/HYR6nBekG8CR8EYNO3bcH1sJEG1OjAChL2fyV3Ssw==","signatures":[{"sig":"MEUCIQCNUFu7gPaS3N+HG98pJlwxVf9BA8WqAgxsbDWLFhY9HgIgcpSXaYfblrf2MAHRb0p2Ygh4Jo/9PsMWZzABu6JYcrY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":62037},"main":"index.js","gitHead":"93905ef7b054387b7bd3b9bd4e8903f1fc4e61b2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.36.0_1691330734535_0.8332609062965559","host":"s3://npm-registry-packages"}},"1.37.0":{"name":"learn-rxjs","version":"1.37.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.37.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"4ba39de8a61fe6d5fcfa9402b19b0ab37ef6d54c","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.37.0.tgz","fileCount":9,"integrity":"sha512-/gn+a0ee+hrExFY+DRAO19rfIM/7GqU3QQMdsI2o4cCIjDnypf/2lY0uC4b0lcHzzwjlL4V2ZE2FK1IaAtOOuA==","signatures":[{"sig":"MEYCIQDxDbRcZ2p36wFaBYOImntTN/4i64YkPlZo6IbT9h9egQIhAJdTsOHwLtr8mYYP3n1jfN8587oZgX6kux+it07zgYJY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87373},"main":"index.js","gitHead":"26a728c619a0264219b9c6d14269d9241e9d7fba","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.37.0_1691337273772_0.5623195572284985","host":"s3://npm-registry-packages"}},"1.38.0":{"name":"learn-rxjs","version":"1.38.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.38.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"b041066f6c11a06d83f5b32302eeb6968e346dbc","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.38.0.tgz","fileCount":9,"integrity":"sha512-tZjM9ME5635HZ4ZN/s0S9kPPxOa1Ea9Vz9IANeIlAJkZwb9X1MOUAF7xCUjVDwp12BNsx1fvpS69mrGZSh/89Q==","signatures":[{"sig":"MEQCIDKhD5jDjcDeQjHBWQPZdmr3i1vlL7fN1fTtKs+N8JjfAiAfKp7AYPgJVonRZxQoTx9W7gNfdZto56w5zf7D/lgtRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97663},"main":"index.js","gitHead":"7bce47152d6a85feb29012a7bae984c61e369fbb","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.38.0_1691429647710_0.7339119655726289","host":"s3://npm-registry-packages"}},"1.39.0":{"name":"learn-rxjs","version":"1.39.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.39.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"a1c07a9dc837be27ecb49e23d35cba939985f844","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.39.0.tgz","fileCount":9,"integrity":"sha512-FdU2CHKDA0yKmDh+gB7RKIsSaskusl3BDk/NtlMd/v/CaEYd6s/eOg4+BKuiRPp9inDBhixT0TYyEXUiV6txAA==","signatures":[{"sig":"MEUCIGTY0kUsR0KoYmHR6OR3tUgUvC96y04fZTm4pO5oLBaDAiEA6HX33dVT3O136Fw+rdp431ofr/yvp/r00Ve/EF1e0Vg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99893},"main":"index.js","gitHead":"b8c60e1ffb44f4d89f28423a2c642d0eba9a94b4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.39.0_1691899004635_0.7413329352089129","host":"s3://npm-registry-packages"}},"1.40.0":{"name":"learn-rxjs","version":"1.40.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.40.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"c437cc47d333a3d9d866a207b8106ce65eda8629","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.40.0.tgz","fileCount":9,"integrity":"sha512-sIogF1K1dneeFUA0EKShR+wjaaVIkbz2+WTJVa+w6r+0dENdL+QsFS+qaZuNJQIg8kyWg9jeHp3hdcuj1LKdzQ==","signatures":[{"sig":"MEYCIQDWUxuWt5xOg2uxdiXLEdMQqNYE9GaSXBKA1ZTNIQiuXwIhAL0uIbnWcOwRKCwz6fsUfwAeVWEbnbbuqoXxBUYDftp+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110784},"main":"index.js","gitHead":"1a6c2d3996dc4c3fa34f968f2f85b9a76f893865","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.40.0_1701934649315_0.7818198345547902","host":"s3://npm-registry-packages"}},"1.41.0":{"name":"learn-rxjs","version":"1.41.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.41.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"}],"dist":{"shasum":"3523d03bad0fd15a3a73d7f3831e4c371d8cd9c6","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.41.0.tgz","fileCount":9,"integrity":"sha512-C/kgvjJfnuO7IojXRCrnNfCCoDf/IEGYL8qxzyG/zO8tyLamyPsESYZe7f07YGqbntcwrcfTYyG95GMotpwxVg==","signatures":[{"sig":"MEYCIQCFqd8ojQgJZ2FYN2JOjRJvA4gTCHm6MBIm5Q/iLC8mwAIhAMLU9NJk9ItOIvGJA1AvESxhwNT1sJqIwTfj+dBLg2vu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":114432},"main":"index.js","gitHead":"a702d06f68992fd5f6c221d286202194ffba7fc4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.41.0_1701935693654_0.9094111983803743","host":"s3://npm-registry-packages"}},"1.42.0":{"name":"learn-rxjs","version":"1.42.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.42.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},{"name":"manthanank","email":"manthan.ank45@gmail.com"}],"dist":{"shasum":"9be9f0079c865530de9116216f81d7faba7f04d5","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.42.0.tgz","fileCount":10,"integrity":"sha512-DfnKroR8LPG7y28tzoKYsR3ah3UlaXk5cCyYEHWBN1EK5OvqHX4F1+WAANccwHosAdSdvd91qy0z4bcSTm+TWA==","signatures":[{"sig":"MEUCIQCAxwoH6EXbVCqI8A7gNpSDU1brBVAq212+X2WNXiv2IAIgaPSh3b4p3kFfbkD24p/z6XTxD9+PZQIWx+XGKCkn/CY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119681},"main":"index.js","gitHead":"d42397be06eda3e3957f11c24bf7f1ff4ebfdd93","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.42.0_1715233389214_0.4604279886614966","host":"s3://npm-registry-packages"}},"1.43.0":{"name":"learn-rxjs","version":"1.43.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.43.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},{"name":"manthanank","email":"manthan.ank45@gmail.com"}],"dist":{"shasum":"95479b3d7153555c7a10531b1a17f5de96f47364","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.43.0.tgz","fileCount":11,"integrity":"sha512-uTO9LRJN6JoTcPL4wjAwQv728vruPvVkEzMY6JxRzY8mdQ9Sv9YUMzrflIKfsBi0xKQ9E3RHxP6dsNjXr+zfFA==","signatures":[{"sig":"MEYCIQDsqZGP6N4ALjp4q8O7dXLVEAu0eCmhZZA4YbB3RgK6WgIhAJbbUbUN3Ww7n5vRhO8ixwD50xtAtRMs6du52W9vwTJ8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120304},"main":"index.js","gitHead":"443af81a4774b3c4e1ed13319cc420086eb5b241","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.43.0_1715233413653_0.46002275943183535","host":"s3://npm-registry-packages"}},"1.44.0":{"name":"learn-rxjs","version":"1.44.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.44.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},{"name":"manthanank","email":"manthan.ank45@gmail.com"}],"dist":{"shasum":"73e1622273e9720dd02cab1cbcec18afa49a2752","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.44.0.tgz","fileCount":11,"integrity":"sha512-TiWfy6zsyQf85oyfykXie7d1KhHH2motZEtyi+xafFEyVuf3jLbcDd7HSNBsVuG/FsINVDrckut6h9E+6QwjhQ==","signatures":[{"sig":"MEQCIHnd/pcpYmatsC2OAFojGACavO1HMDVLl93Jy6+kfLkcAiAUkvdWPd2Ytq2/hrhrx2H9gzLEEIAA8dwIm5v3o0HYYQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120175},"main":"index.js","gitHead":"b704be79bbbae5ada62f764843576eadea536b99","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"rxjs":"^7.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.44.0_1717692477298_0.4377470108740995","host":"s3://npm-registry-packages"}},"1.45.0":{"name":"learn-rxjs","version":"1.45.0","keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","_id":"learn-rxjs@1.45.0","maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},{"name":"manthanank","email":"manthan.ank45@gmail.com"}],"dist":{"shasum":"e660f793807a1bef060905e44c2c31078c9394f8","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.45.0.tgz","fileCount":13,"integrity":"sha512-bmXes5fFLmC1w914ElmCa2nu8lmpwFuE1icSMGFiLuH3bik8KR0pOzYowev6gnI6dlAU1YcJzyyJGz87FQpsUQ==","signatures":[{"sig":"MEQCIF+BXPaFw8Ub7BNdjLItaAMJdt4rXhzq6dLqBKF0nGDbAiA2vEiFPTlh3Z5EaUvf7C0lDihJ1E0XXl5CSpK3PhymOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161609},"main":"index.js","gitHead":"3ea65ea64d48e65577bb4e32b8aba414205b16e9","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"_npmVersion":"8.19.4","description":"Complete RxJS with all resources to learn.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/learn-rxjs_1.45.0_1718524673622_0.5561039769310769","host":"s3://npm-registry-packages"}},"1.46.0":{"name":"learn-rxjs","version":"1.46.0","description":"Complete RxJS with all resources to learn.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"keywords":["rxjs"],"author":{"name":"Manthan Ank"},"license":"ISC","gitHead":"beed8ab154e274a16abc46e83bd5f1a44da26ae7","_id":"learn-rxjs@1.46.0","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-4doa87tXcLO0Crd8Bch/EjIbzj1hRLCQeLzOE1ltU/4xkDxxXbNiNH5e2CXXhAK1NujMq5IJ32vKheGVRCBoPA==","shasum":"91199195d8e430a46d9f91da9d77660c68d05cc1","tarball":"https://registry.npmjs.org/learn-rxjs/-/learn-rxjs-1.46.0.tgz","fileCount":13,"unpackedSize":161600,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDblLb5kOmGBfzlNZFpJMFqLqnh+Zx3O2oK8xqhpOMLBAIgTGv3yQifzh27wxpF3JIDUkLkVeJFXFZsejxy3dNo09k="}]},"_npmUser":{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},"directories":{},"maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},{"name":"manthanank","email":"manthan.ank45@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/learn-rxjs_1.46.0_1718524715819_0.2622706771232095"},"_hasShrinkwrap":false}},"time":{"created":"2023-04-09T17:57:45.284Z","modified":"2024-06-16T07:58:36.173Z","1.0.0":"2023-04-09T17:57:45.442Z","1.4.0":"2023-04-10T04:07:29.117Z","1.5.0":"2023-04-10T04:08:26.524Z","1.5.1":"2023-04-10T04:09:49.230Z","1.6.0":"2023-04-23T15:22:09.349Z","1.7.0":"2023-06-22T04:06:52.043Z","1.8.0":"2023-06-26T18:30:51.442Z","1.9.0":"2023-06-27T15:19:27.610Z","1.10.0":"2023-06-27T17:40:20.028Z","1.11.0":"2023-06-29T16:23:12.025Z","1.12.0":"2023-06-30T04:26:40.180Z","1.13.0":"2023-07-01T04:33:08.054Z","1.14.0":"2023-07-01T17:32:04.924Z","1.15.0":"2023-07-02T04:59:14.675Z","1.16.0":"2023-07-04T17:51:49.162Z","1.17.0":"2023-07-05T03:43:53.756Z","1.18.0":"2023-07-06T15:46:04.786Z","1.19.0":"2023-07-08T16:38:13.440Z","1.20.0":"2023-07-09T14:17:51.985Z","1.21.0":"2023-07-12T16:30:17.944Z","1.22.0":"2023-07-13T15:41:21.063Z","1.23.0":"2023-07-14T16:34:42.874Z","1.24.0":"2023-07-15T05:05:26.017Z","1.25.0":"2023-07-16T15:33:54.193Z","1.26.0":"2023-07-17T16:29:06.443Z","1.27.0":"2023-07-18T15:06:41.633Z","1.28.0":"2023-07-19T16:04:46.329Z","1.29.0":"2023-07-20T09:15:03.017Z","1.30.0":"2023-07-23T15:03:12.583Z","1.31.0":"2023-07-23T15:10:48.598Z","1.32.0":"2023-07-30T11:51:26.530Z","1.33.0":"2023-07-31T16:28:34.098Z","1.34.0":"2023-08-01T04:04:36.867Z","1.35.0":"2023-08-05T17:20:22.837Z","1.36.0":"2023-08-06T14:05:34.691Z","1.37.0":"2023-08-06T15:54:33.940Z","1.38.0":"2023-08-07T17:34:07.868Z","1.39.0":"2023-08-13T03:56:44.890Z","1.40.0":"2023-12-07T07:37:29.470Z","1.41.0":"2023-12-07T07:54:53.857Z","1.42.0":"2024-05-09T05:43:09.413Z","1.43.0":"2024-05-09T05:43:33.810Z","1.44.0":"2024-06-06T16:47:57.450Z","1.45.0":"2024-06-16T07:57:53.791Z","1.46.0":"2024-06-16T07:58:35.996Z"},"maintainers":[{"name":"manthanankolekar","email":"manthan.ank46@gmail.com"},{"name":"manthanank","email":"manthan.ank45@gmail.com"}],"author":{"name":"Manthan Ank"},"keywords":["rxjs"],"license":"ISC","readme":"# Learn Rxjs\n\n[![NPM Package](https://github.com/manthanank/learn-rxjs/actions/workflows/publish.yml/badge.svg)](https://github.com/manthanank/learn-rxjs/actions/workflows/publish.yml)\n[![Releases](https://github.com/manthanank/learn-rxjs/actions/workflows/releases.yml/badge.svg)](https://github.com/manthanank/learn-rxjs/actions/workflows/releases.yml)\n![npm](https://img.shields.io/npm/dw/learn-rxjs)\n![npm](https://img.shields.io/npm/dm/learn-rxjs)\n![npm](https://img.shields.io/npm/dy/learn-rxjs)\n![npm](https://img.shields.io/npm/dt/learn-rxjs)\n\n## Contents\n\n- [Introduction](#rxjs-reactive-extensions-library-for-javascript)\n- [Installation](#installation)\n- [Importing](#importing)\n- [Observables](#observables)\n- [Observer](#observer)\n- [Operators](#operators)\n  - [Categories of operators](#categories-of-operators)\n    - [Creation Operators](#creation-operators)\n    - [Join Creation Operators](#join-creation-operators)\n    - [Transformation Operators](#transformation-operators)\n    - [Filtering Operators](#filtering-operators)\n    - [Join Operators](#join-operators)\n    - [Multicasting Operators](#multicasting-operators)\n    - [Error Handling Operators](#error-handling-operators)\n    - [Utility Operators](#utility-operators)\n    - [Conditional and Boolean Operators](#conditional-and-boolean-operators)\n    - [Mathematical and Aggregate Operators](#mathematical-and-aggregate-operators)\n- [Subscription](#subscription)\n- [Subject](#subject)\n- [Scheduler](#scheduler)\n\n## RxJS (Reactive Extensions Library for JavaScript)\n\nRxJS is a library for reactive programming using Observables, to make it easier to compose asynchronous or callback-based code.\n\n## Installation\n\n```bash\nnpm install rxjs\n```\n\n## Importing\n\n```typescript\n'rxjs' - for example: import { of } from 'rxjs';\n\n'rxjs/operators' - for example: import { map } from 'rxjs/operators';\n\n'rxjs/ajax' - for example: import { ajax } from 'rxjs/ajax';\n\n'rxjs/fetch' - for example: import { fromFetch } from 'rxjs/fetch';\n\n'rxjs/webSocket' - for example: import { webSocket } from 'rxjs/webSocket';\n\n'rxjs/testing' - for example: import { TestScheduler } from 'rxjs/testing';\n```\n\n## Observables\n\nObservables are declarative which provide support for passing messages between publishers and subscribers.\n\n```typescript\n// pipe\n\n// subscribe\n```\n\n```typescript\nimport { Observable } from 'rxjs';\n\nconst observable = new Observable((subscriber) => {\n  subscriber.next(1);\n  subscriber.next(2);\n  subscriber.next(3);\n  setTimeout(() => {\n    subscriber.next(4);\n    subscriber.complete();\n  }, 1000);\n});\n```\n\n```typescript\nimport { Observable } from 'rxjs';\n\nconst observable = new Observable((subscriber) => {\n  subscriber.next(1);\n  subscriber.next(2);\n  subscriber.next(3);\n  setTimeout(() => {\n    subscriber.next(4);\n    subscriber.complete();\n  }, 1000);\n});\n\nconsole.log('just before subscribe');\nobservable.subscribe({\n  next(x) {\n    console.log('got value ' + x);\n  },\n  error(err) {\n    console.error('something wrong occurred: ' + err);\n  },\n  complete() {\n    console.log('done');\n  },\n});\nconsole.log('just after subscribe');\n```\n\n## Observer\n\nAn Observer is a consumer of values delivered by an Observable. Observers are simply a set of callbacks, one for each type of notification delivered by the Observable: next, error, and complete.\n\n```typescript\n// next\n\n// error\n\n// complete\n```\n\n```typescript\nconst observer = {\n  next: x => console.log('Observer got a next value: ' + x),\n  error: err => console.error('Observer got an error: ' + err),\n  complete: () => console.log('Observer got a complete notification'),\n};\n```\n\n```typescript\nobservable.subscribe(observer);\n```\n\n## Operators\n\nOperators are functions. There are two kinds of operators:\n\n**Pipeable Operators** are the kind that can be piped to Observables using the syntax `observableInstance.pipe(operator())`.\n\n**Creation Operators** are the other kind of operator, which can be called as standalone functions to create a new Observable.\n\n## Categories of operators\n\n### Creation Operators\n\n**ajax** - It creates an observable for an Ajax request with either a request object with url, headers, etc or a string for a URL.\n\nExample with Angular:\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { ajax } from 'rxjs/ajax';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>ajax Example</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const githubUsers = ajax('https://api.github.com/users?per_page=2');\n    githubUsers.subscribe((res) => console.log(res.status, res.response));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Angular Example Link](https://stackblitz.com/edit/angular-ees5qn?file=src%2Fmain.ts)\n\nExample with TypeScript:\n\n```typescript\nimport { ajax } from 'rxjs/ajax';\n\nconst githubUsers = ajax('https://api.github.com/users?per_page=2');\ngithubUsers.subscribe((res) => console.log(res.status, res.response));\n```\n\n[Stackblitz TypeScript Example Link](https://stackblitz.com/edit/rxjs-umrlkx?file=index.ts)\n\n**bindCallback** - `bindCallback` operator is used to convert a callback-style function into an observable.\n\nIt allows you to work with asynchronous APIs that follow the Node.js-style callback pattern, where the last argument of a function is a callback function that is invoked with the result or error.\n\n**bindNodeCallback** - `bindNodeCallback` is a function that converts a Node.js-style callback function into an Observable.\n\nExample with Angular:\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { bindNodeCallback  } from 'rxjs/ajax';\n\n// Assume we have a Node.js-style callback function for file reading\nfunction readFileAsync(filePath: string, callback: (error: Error | null, data: string) => void) {\n  // Some asynchronous file reading logic\n  // Call the callback with the error (if any) and the file data\n  setTimeout(() => {\n    if (filePath === '/path/to/file.txt') {\n      callback(null, 'File content goes here');\n    } else {\n      callback(new Error('File not found'), null);\n    }\n  }, 2000);\n}\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>bindNodeCallback Example</h1>\n    <div>{{ fileContent }}</div>\n  `,\n})\nexport class App implements OnInit {\n  \n  fileContent: string;\n\n  ngOnInit() {\n    const readFile = bindNodeCallback(readFileAsync);\n    const filePath = '/path/to/file.txt';\n\n    const readFile$ = readFile(filePath);\n\n    readFile$.subscribe(\n      (data: string) => {\n        this.fileContent = data;\n        console.log('File content:', data);\n      },\n      (error: Error) => {\n        console.error('Error reading file:', error);\n      }\n    );\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Angular Example Link](https://stackblitz.com/edit/stackblitz-starters-avcder?file=src%2Fmain.ts)\n\n**defer** - Creates an Observable that, on subscribe, calls an Observable factory to make an Observable for each new Observer.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { switchMap, defer, of, timer, merge } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `<h1>defer operator</h1>`,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const s1 = of(new Date()); //will capture current date time\n    const s2 = defer(() => of(new Date())); //will capture date time at the moment of subscription\n\n    console.log(new Date());\n\n    timer(2000)\n      .pipe(switchMap(_ => merge(s1, s2)))\n      .subscribe(console.log);\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**empty** - Replaced with the EMPTY constant or scheduled (e.g. scheduled([], scheduler)). Will be removed in v8.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { empty } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <h1>empty operator</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const subscribe = empty().subscribe({\n      next: () => console.log('Next'),\n      complete: () => console.log('Complete!')\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**from** - Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n\n```jsx\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { from } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <h1>from operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  data: any;\n\n  ngOnInit() {\n    const obj = from(['a', 'b', 'c', 'd']);\n\n    obj.subscribe((res) => {\n      console.log(res);\n      this.data = res;\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/angular-psyjew?file=src/main.ts)\n\n**fromEvent** - Creates an Observable that emits events of a specific type coming from the given event target.\n\nExample:\n\n```jsx\nimport 'zone.js/dist/zone';\nimport { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>fromEvent Example</h1>\n    <button #add>Add</button>\n    {{countVal}}\n    <table>\n      <tr *ngFor=\"let value of values\">\n        <td>{{value}}</td>\n      </tr>\n    </table>\n  `,\n})\nexport class App implements AfterViewInit {\n  data: any;\n  count = 0;\n  values = [];\n  countVal: any;\n\n  @ViewChild('add') add: ElementRef;\n\n  ngAfterViewInit() {\n    let count = 0;\n    fromEvent(this.add.nativeElement, 'click').subscribe((data) => {\n      console.log(count++);\n      this.countVal = count++;\n      console.log(this.countVal);\n      this.count++;\n      this.values.push(this.count);\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/angular-qy1hve?file=src/main.ts)\n\n**fromEventPattern** - Creates an Observable from an arbitrary API for registering event handlers.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEventPattern, Subject } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <button (click)=\"startListening()\">Start Listening</button>\n    <button (click)=\"stopListening()\">Stop Listening</button>\n  `,\n})\nexport class App implements AfterViewInit {\n  private eventListener: EventListenerOrEventListenerObject;\n  private eventSubject: Subject<Event>;\n\n  ngOnInit() {\n    this.eventSubject = new Subject<Event>();\n    this.eventListener = (event: Event) => this.eventSubject.next(event);\n  }\n\n  ngOnDestroy() {\n    this.eventSubject.complete();\n  }\n\n  startListening() {\n    const observable = fromEventPattern(\n      // Function to add the event listener\n      (handler: EventListenerOrEventListenerObject) => {\n        document.addEventListener('customEvent', handler);\n      },\n      // Function to remove the event listener\n      (handler: EventListenerOrEventListenerObject) => {\n        document.removeEventListener('customEvent', handler);\n      }\n    );\n\n    observable.subscribe((event: Event) => {\n      console.log('Event received:', event);\n      // Handle the event as needed\n    });\n\n    this.eventSubject.subscribe((event: Event) => {\n      document.dispatchEvent(event);\n    });\n  }\n\n  stopListening() {\n    this.eventSubject.complete();\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**generate** - Generates an observable sequence by running a state-driven loop producing the sequence's elements, using the specified scheduler to send out observer messages.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { generate } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>generate example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const result = generate(0, x => x < 3, x => x + 1, x => x);\n\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**interval** - Creates an Observable that emits sequential numbers every specified interval of time, on a specified SchedulerLike.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { interval, take } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>interval operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const numbers = interval(1000);\n    \n    const takeFourNumbers = numbers.pipe(take(4));\n    \n    takeFourNumbers.subscribe(x => console.log('Next: ', x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**of** - Converts the arguments to an observable sequence.\n\n```jsx\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { from, of } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <h1>of operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const obj = of('a', 'b', 'c', 'd');\n\n    obj.subscribe((res) => {\n      console.log(res);\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**range** - Creates an Observable that emits a sequence of numbers within a specified range.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { range } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <h1>range operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    //emit 1-10 in sequence\n    const source = range(1, 10);\n    //output: 1,2,3,4,5,6,7,8,9,10\n    const example = source.subscribe(val => console.log(val));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-7899ka?file=src%2Fmain.ts)\n\n**throwError** - Creates an observable that will create an error instance and push it to the consumer as an error immediately upon subscription.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { throwError } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <h1>throwError operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    let errorCount = 0;\n    \n    const errorWithTimestamp$ = throwError(() => {\n      const error: any = new Error(`This is error number ${ ++errorCount }`);\n      error.timestamp = Date.now();\n      return error;\n    });\n    \n    errorWithTimestamp$.subscribe({\n      error: err => console.log(err.timestamp, err.message)\n    });\n    \n    errorWithTimestamp$.subscribe({\n      error: err => console.log(err.timestamp, err.message)\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-mdhkry?file=src%2Fmain.ts)\n\n**timer** - It is a creation operator used to create an observable that starts emitting the values after the timeout, and the value will keep increasing after each call.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { timer } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <h1>timer operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const source = timer(1000);\n    //output: 0\n    const subscribe = source.subscribe(val => console.log(val));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-6ylica?file=src%2Fmain.ts)\n\n**iif** - Checks a boolean at subscription time, and chooses between one of two observable sources\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { iif, of, interval } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <h1>iif operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const r$ = of('R');\n    const x$ = of('X');\n\n    interval(1000)\n      .pipe(mergeMap(v => iif(() => v % 4 === 0, r$, x$)))\n      .subscribe(console.log);\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-ek4ybc?file=src%2Fmain.ts)\n\n[Back to top⤴️](#contents)\n\n### Join Creation Operators\n\n**combineLatest** - Combines multiple Observables to create an Observable whose values are calculated from the latest values of each of its input Observables.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { timer, combineLatest } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>combineLatest operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n    const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n    const combinedTimers = combineLatest([firstTimer, secondTimer]);\n    combinedTimers.subscribe(value => console.log(value));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz RxJS Example Link](https://stackblitz.com/edit/rxjs-zhrajm?file=index.ts)\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-dknwwt?file=src%2Fmain.ts)\n\n**concat** - Creates an output Observable which sequentially emits all values from the first given Observable and then moves on to the next.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { interval, take, range, concat } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>combineLatest operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const timer = interval(1000).pipe(take(4));\n    const sequence = range(1, 10);\n    const result = concat(timer, sequence);\n    result.subscribe((x) => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz RxJS Example Link](https://stackblitz.com/edit/rxjs-dvj3th?file=index.ts)\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-yshqh7?file=src%2Fmain.ts)\n\n**forkJoin** - Accepts an Array of ObservableInput or a dictionary Object of ObservableInput and returns an Observable that emits either an array of values in the exact same order as the passed array, or a dictionary of values in the same shape as the passed dictionary.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { forkJoin, of, timer } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>forkJoin operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const observable = forkJoin({\n      foo: of(1, 2, 3, 4),\n      bar: Promise.resolve(8),\n      baz: timer(4000),\n    });\n    observable.subscribe({\n      next: (value) => console.log(value),\n      complete: () => console.log('This is how it ends!'),\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz RxJS Example Link](https://stackblitz.com/edit/rxjs-gehtea?file=index.html)\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-7lvb9w?file=src%2Fmain.ts)\n\n**merge** - Creates an output Observable which concurrently emits all values from every given input Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { merge, fromEvent, interval } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>merge operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const timer = interval(1000);\n    const clicksOrTimer = merge(clicks, timer);\n    clicksOrTimer.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz RxJS Example Link](https://stackblitz.com/edit/rxjs-e4uy3s?file=index.html)\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-x8njvg?file=src%2Fmain.ts)\n\n**partition** - Splits the source Observable into two, one with values that satisfy a predicate, and another with values that don't satisfy the predicate.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, partition } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>partition operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const observableValues = of(1, 2, 3, 4, 5, 6);\n    const [evens$, odds$] = partition(observableValues, value => value % 2 === 0);\n    \n    odds$.subscribe(x => console.log('odds', x));\n    evens$.subscribe(x => console.log('evens', x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz RxJS Example Link](https://stackblitz.com/edit/rxjs-u9s5gf?file=index.html)\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-tmvrze?file=src%2Fmain.ts)\n\n**race** - Returns an observable that mirrors the first source observable to emit an item.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { interval, map, race } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>race operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const obs1 = interval(7000).pipe(map(() => 'slow one'));\n    const obs2 = interval(3000).pipe(map(() => 'fast one'));\n    const obs3 = interval(5000).pipe(map(() => 'medium one'));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**zip** - Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each of its input Observables.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, zip, map } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>zip operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const age$ = of(27, 25, 29);\n    const name$ = of('Foo', 'Bar', 'Beer');\n    const isDev$ = of(true, true, false);\n    \n    zip(age$, name$, isDev$).pipe(\n      map(([age, name, isDev]) => ({ age, name, isDev }))\n    )\n    .subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Back to top⤴️](#contents)\n\n### Transformation Operators\n\n**buffer** - Buffers the source Observable values until closingNotifier emits.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, interval, buffer } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>buffer operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const intervalEvents = interval(1000);\n    const buffered = intervalEvents.pipe(buffer(clicks));\n    buffered.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**bufferCount** - Buffers the source Observable values until the size hits the maximum bufferSize given.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, bufferCount } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>bufferCount operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const buffered = clicks.pipe(bufferCount(2));\n    buffered.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**bufferTime** - Buffers the source Observable values for a specific time period.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, bufferTime } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>bufferTime operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const buffered = clicks.pipe(bufferTime(1000));\n    buffered.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**bufferToggle** - Buffers the source Observable values starting from an emission from openings and ending when the output of closingSelector emits.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, interval, bufferToggle, EMPTY } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>bufferToggle operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const openings = interval(1000);\n    const buffered = clicks.pipe(bufferToggle(openings, i =>\n      i % 2 ? interval(500) : EMPTY\n    ));\n    buffered.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**bufferWhen** - Buffers the source Observable values, using a factory function of closing Observables to determine when to close, emit, and reset the buffer.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, bufferWhen, interval } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>bufferWhen operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const buffered = clicks.pipe(\n      bufferWhen(() => interval(1000 + Math.random() * 4000))\n    );\n    buffered.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**concatMap** - Projects each source value to an Observable which is merged in the output Observable, in a serialized fashion waiting for each one to complete before merging the next.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, concatMap, interval, take } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>concatMap operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      concatMap(ev => interval(1000).pipe(take(4)))\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**concatMapTo** - Projects each source value to the same Observable which is merged multiple times in a serialized fashion on the output Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, concatMapTo, interval, take } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>concatMapTo operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      concatMapTo(interval(1000).pipe(take(4)))\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**exhaust** - Renamed to exhaustAll.\n\n**exhaustMap** - Projects each source value to an Observable which is merged in the output Observable only if the previous projected Observable has completed.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, exhaustMap, interval, take } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>exhaustMap operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      exhaustMap(() => interval(1000).pipe(take(5)))\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**expand** - Recursively projects each source value to an Observable which is merged in the output Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, map, expand, of, delay, take } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>expand operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const powersOfTwo = clicks.pipe(\n      map(() => 1),\n      expand(x => of(2 * x).pipe(delay(1000))),\n      take(10)\n    );\n    powersOfTwo.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**groupBy** -\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, groupBy, mergeMap, reduce } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>groupBy operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    of(\n      { id: 1, name: 'JavaScript' },\n      { id: 2, name: 'Parcel' },\n      { id: 2, name: 'webpack' },\n      { id: 1, name: 'TypeScript' },\n      { id: 3, name: 'TSLint' }\n    ).pipe(\n      groupBy(p => p.id),\n      mergeMap(group$ => group$.pipe(reduce((acc, cur) => [...acc, cur], [])))\n    )\n    .subscribe(p => console.log(p));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**map** - Applies a given project function to each value emitted by the source Observable, and emits the resulting values as an Observable.\n\n```jsx\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { from, map } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>map operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const data = from([\n      {\n        id: 1,\n      },\n      {\n        id: 2,\n      },\n      {\n        id: 3,\n      },\n      {\n        id: 4,\n      },\n      {\n        id: 5,\n      },\n    ]);\n\n    data.pipe(map((data) => data.id)).subscribe((res) => console.log(res));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**mapTo** - Emits the given constant value on the output Observable every time the source Observable emits a value.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, mapTo } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>mapTo operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const greetings = clicks.pipe(mapTo('Hi'));\n\n    greetings.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**mergeMap** - Projects each source value to an Observable which is merged in the output Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, mergeMap, interval, map } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>mergeMap operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const letters = of('a', 'b', 'c');\n    const result = letters.pipe(\n      mergeMap(x => interval(1000).pipe(map(i => x + i)))\n    );\n    \n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**mergeMapTo** - Projects each source value to the same Observable which is merged multiple times in the output Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, mergeMapTo, interval } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>mergeMapTo operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(mergeMapTo(interval(1000)));\n\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**mergeScan** - Applies an accumulator function over the source Observable where the accumulator function itself returns an Observable, then each intermediate Observable returned is merged into the output Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, map, mergeScan, of } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>mergeScan operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const click$ = fromEvent(document, 'click');\n    const one$ = click$.pipe(map(() => 1));\n    const seed = 0;\n    const count$ = one$.pipe(\n      mergeScan((acc, one) => of(acc + one), seed)\n    );\n    \n    count$.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**pairwise** - Groups pairs of consecutive emissions together and emits them as an array of two values.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, pairwise, map } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>pairwise operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent<PointerEvent>(document, 'click');\n    const pairs = clicks.pipe(pairwise());\n    const distance = pairs.pipe(\n      map(([first, second]) => {\n        const x0 = first.clientX;\n        const y0 = first.clientY;\n        const x1 = second.clientX;\n        const y1 = second.clientY;\n        return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n      })\n    );\n    \n    distance.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**partition** - Splits the source Observable into two, one with values that satisfy a predicate, and another with values that don't satisfy the predicate.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, partition } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>partition operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const observableValues = of(1, 2, 3, 4, 5, 6);\n    const [evens$, odds$] = partition(observableValues, value => value % 2 === 0);\n    \n    odds$.subscribe(x => console.log('odds', x));\n    evens$.subscribe(x => console.log('evens', x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**pluck** - Maps each source value to its specified nested property.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { from, pluck, toArray } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>Pluck Example</h1>\n    <div class=\"row\">\n      <div class=\"col\">\n        <ul *ngFor=\"let item of data1\">\n          <li>{{item}}</li>\n        </ul>\n      </div>\n      <div class=\"col\">\n        <ul *ngFor=\"let item of data2\">\n          <li>{{item}}</li>\n        </ul>\n      </div>\n    </div>\n  `,\n})\nexport class App implements OnInit {\n  users = [\n    {\n      name: 'abc',\n      age: '25',\n      address: {\n        state: 'DL',\n        country: 'India',\n      },\n    },\n    {\n      name: 'efg',\n      age: '25',\n      address: {\n        state: 'MH',\n        country: 'India',\n      },\n    },\n    {\n      name: 'lmn',\n      age: '25',\n      address: {\n        state: 'KA',\n        country: 'India',\n      },\n    },\n    {\n      name: 'pqr',\n      age: '25',\n      address: {\n        state: 'KL',\n        country: 'India',\n      },\n    },\n    {\n      name: 'xyz',\n      age: '25',\n      address: {\n        state: 'GA',\n        country: 'India',\n      },\n    },\n  ];\n  data1: any;\n  data2: any;\n  constructor() {}\n\n  ngOnInit() {\n    from(this.users)\n      .pipe(pluck('name'), toArray())\n      .subscribe((res) => {\n        console.log(res);\n        this.data1 = res;\n      });\n    from(this.users)\n      .pipe(pluck('address', 'state'), toArray())\n      .subscribe((res) => {\n        console.log(res);\n        this.data2 = res;\n      });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**scan** - Useful for encapsulating and managing state. Applies an accumulator (or \"reducer function\") to each value from the source after an initial state is established -- either via a seed value (second argument), or from the first value from the source.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, scan, map } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>scan operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const numbers$ = of(1, 2, 3);\n    \n    numbers$\n      .pipe(\n        // Get the sum of the numbers coming in.\n        scan((total, n) => total + n),\n        // Get the average by dividing the sum by the total number\n        // received so far (which is 1 more than the zero-based index).\n        map((sum, index) => sum / (index + 1))\n      )\n      .subscribe(console.log);\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-yk2lwk?file=src%2Fmain.ts)\n\n**switchScan** - Applies an accumulator function over the source Observable where the accumulator function itself returns an Observable, emitting values only from the most recently returned Observable.\n\n**switchMap** - Projects each source value to an Observable which is merged in the output Observable, emitting values only from the most recently projected Observable.\n\n```jsx\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { from, of, switchMap } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>switchMap operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const data = from(['abc', 'xyz', 'efg', 'pqr', 'lmn']);\n\n    data\n      .pipe(switchMap((data) => this.getData(data)))\n      .subscribe((res) => console.log(res));\n  }\n\n  getData(data) {\n    return of('name is' + data);\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**switchMapTo** - Projects each source value to the same Observable which is flattened multiple times with switchMap in the output Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, switchMapTo, interval } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>switchMapTo operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(switchMapTo(interval(1000)));\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-wbj1xt?file=src%2Fmain.ts)\n\n**window** - Branch out the source Observable values as a nested Observable whenever windowBoundaries emits.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, interval, window, map, take, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>window operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const sec = interval(1000);\n    const result = clicks.pipe(\n      window(sec),\n      map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n      mergeAll()                     // flatten the Observable-of-Observables\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-q7tjwj?file=src%2Fmain.ts)\n\n**windowCount** - Branch out the source Observable values as a nested Observable with each nested Observable emitting at most windowSize values.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, windowCount, map, skip, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>windowCount operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      windowCount(3),\n      map(win => win.pipe(skip(1))), // skip first of every 3 clicks\n      mergeAll()                     // flatten the Observable-of-Observables\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example 1 Link](https://stackblitz.com/edit/stackblitz-starters-xpy6gh?file=src%2Fmain.ts)\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, windowCount, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>windowCount operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      windowCount(2, 3),\n      mergeAll() // flatten the Observable-of-Observables\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example 2 Link](https://stackblitz.com/edit/stackblitz-starters-q7tjwj?file=src%2Fmain.ts)\n\n**windowTime** - Branch out the source Observable values as a nested Observable periodically in time.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, windowTime, map, take, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>windowTime operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      windowTime(1000),\n      map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n      mergeAll()                     // flatten the Observable-of-Observables\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example 1 Link](https://stackblitz.com/edit/stackblitz-starters-uvwhnp?file=src%2Fmain.ts)\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, windowTime, map, take, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>windowTime operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      windowTime(1000, 5000),\n      map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n      mergeAll()                     // flatten the Observable-of-Observables\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example 2 Link](https://stackblitz.com/edit/stackblitz-starters-mcsaht?file=src%2Fmain.ts)\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, windowTime, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>windowTime operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      windowTime(1000, 5000, 2), // take at most 2 emissions from each window\n      mergeAll()                 // flatten the Observable-of-Observables\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example 3 Link](https://stackblitz.com/edit/stackblitz-starters-x1qyak?file=src%2Fmain.ts)\n\n**windowToggle** - Branch out the source Observable values as a nested Observable starting from an emission from openings and ending when the output of closingSelector emits.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, interval, windowToggle, EMPTY, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>windowToggle operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const openings = interval(1000);\n    const result = clicks.pipe(\n      windowToggle(openings, i => i % 2 ? interval(500) : EMPTY),\n      mergeAll()\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-qdmr61?file=src%2Fmain.ts)\n\n**windowWhen** - Branch out the source Observable values as a nested Observable using a factory function of closing Observables to determine when to start a new window.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, windowWhen, interval, map, take, mergeAll } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>windowWhen operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      windowWhen(() => interval(1000 + Math.random() * 4000)),\n      map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n      mergeAll()                     // flatten the Observable-of-Observables\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example 1 Link](https://stackblitz.com/edit/stackblitz-starters-vjykyp?file=src%2Fmain.ts)\n\n[Back to top⤴️](#contents)\n\n### Filtering Operators\n\n**audit** - Ignores source values for a duration determined by another Observable, then emits the most recent value from the source Observable, then repeats this process.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, audit, interval } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>audit operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(audit(ev => interval(1000)));\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-xskoee?file=src%2Fmain.ts)\n\n**auditTime** - Ignores source values for duration milliseconds, then emits the most recent value from the source Observable, then repeats this process.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, auditTime } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>auditTime operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(auditTime(1000));\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-dcpyww?file=src%2Fmain.ts)\n\n**debounce** - Emits a notification from the source Observable only after a particular time span determined by another Observable has passed without another source emission.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, scan, debounce, interval } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>debounce operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(\n      scan(i => ++i, 1),\n      debounce(i => interval(200 * i))\n    );\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-o6khgs?file=src%2Fmain.ts)\n\n**debounceTime** - Emits a notification from the source Observable only after a particular time span has passed without another source emission.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, map, debounceTime } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>debounceTime Example</h1>\n    <input type=\"text\" #myInput />\n    <p *ngIf=\"requestedData != null\">Data: {{requestedData}}</p>\n  `,\n})\nexport class App implements OnInit, AfterViewInit {\n  requestedData = null;\n  @ViewChild('myInput') myInput: ElementRef;\n  constructor() {}\n\n  ngOnInit() {}\n\n  ngAfterViewInit() {\n    const searchItem = fromEvent<any>(this.myInput.nativeElement, 'keyup').pipe(\n      map((event) => {\n        event.target.value;\n      }),\n      debounceTime(1000)\n    );\n    searchItem.subscribe((res) => {\n      console.log(res);\n      this.requestedData = res;\n\n      setTimeout(() => {\n        this.requestedData = null;\n      }, 2000);\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**distinct** - Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, distinct } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>distinct operator</h1>\n  `,\n})\nexport class App implements OnInit {\n  ngOnInit() {\n    of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)\n      .pipe(distinct())\n      .subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz Example Link](https://stackblitz.com/edit/stackblitz-starters-ehgdax?file=src%2Fmain.ts)\n\n**distinctUntilChanged** - Returns a result Observable that emits all values pushed by the source observable if they are distinct in comparison to the last value the result observable emitted.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, map, debounceTime, distinctUntilChanged } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>distinctUntilChanged Example</h1>\n    <input type=\"text\" #myInput />\n    <p *ngIf=\"requestedData != null\">Data: {{requestedData}}</p>\n  `,\n})\nexport class App implements OnInit, AfterViewInit {\n  requestedData = null;\n  @ViewChild('myInput') myInput: ElementRef;\n  constructor() {}\n\n  ngOnInit() {}\n\n  ngAfterViewInit() {\n    const searchItem = fromEvent<any>(this.myInput.nativeElement, 'keyup').pipe(\n      map((event) => {\n        event.target.value;\n      }),\n      debounceTime(500),\n      distinctUntilChanged()\n    );\n    searchItem.subscribe((res) => {\n      console.log(res);\n      this.requestedData = res;\n\n      setTimeout(() => {\n        this.requestedData = null;\n      }, 2000);\n    });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**distinctUntilKeyChanged** - Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item, using a property accessed by using the key provided to check if the two items are distinct.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, distinctUntilKeyChanged } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>distinctUntilKeyChanged Example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    of(\n      { age: 4, name: 'Foo' },\n      { age: 7, name: 'Bar' },\n      { age: 5, name: 'Foo' },\n      { age: 6, name: 'Foo' }\n    ).pipe(\n      distinctUntilKeyChanged('name')\n    )\n    .subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n[Stackblitz RxJS Example Link](https://stackblitz.com/edit/rxjs-754d9b?file=index.html)\n\n[Stackblitz Angular Example Link](https://stackblitz.com/edit/stackblitz-starters-jtriop?file=src%2Fmain.ts)\n\n**elementAt** - Emits the single value at the specified index in a sequence of emissions from the source Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, elementAt } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>elementAt Example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(elementAt(2));\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**filter** - Filter items emitted by the source Observable by only emitting those that satisfy a specified predicate.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, filter } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>filter Example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const div = document.createElement('div');\n    div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n    document.body.appendChild(div);\n\n    const clicks = fromEvent(document, 'click');\n    const clicksOnDivs = clicks.pipe(filter(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n    clicksOnDivs.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**first** - Emits only the first value (or the first value that meets some condition) emitted by the source Observable.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, first } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>first Example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const clicks = fromEvent(document, 'click');\n    const result = clicks.pipe(first());\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**ignoreElements** - Ignores all items emitted by the source Observable and only passes calls of complete or error.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { of, ignoreElements } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>ignoreElements Example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    of('you', 'talking', 'to', 'me')\n      .pipe(ignoreElements())\n      .subscribe({\n        next: word => console.log(word),\n        error: err => console.log('error:', err),\n        complete: () => console.log('the end'),\n      });\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**last** - Returns an Observable that emits only the last item emitted by the source Observable. It optionally takes a predicate function as a parameter, in which case, rather than emitting the last item from the source Observable, the resulting Observable will emit the last item from the source Observable that satisfies the predicate.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { from, last } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>last Example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const source = from(['x', 'y', 'z']);\n    const result = source.pipe(last());\n\n    result.subscribe(value => console.log(`Last alphabet: ${ value }`));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**sample** - Emits the most recently emitted value from the source Observable whenever another Observable, the notifier, emits.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, interval, sample } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>sample Example</h1>\n  `,\n})\nexport class App implements OnInit {\n\n  ngOnInit() {\n    const seconds = interval(1000);\n    const clicks = fromEvent(document, 'click');\n    const result = seconds.pipe(sample(clicks));\n\n    result.subscribe(x => console.log(x));\n  }\n}\n\nbootstrapApplication(App);\n```\n\n**sampleTime** - Emits the most recently emitted value from the source Observable within periodic time intervals.\n\n```typescript\nimport 'zone.js/dist/zone';\nimport { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { fromEvent, sampleTime } from 'rxjs';\n\n@Component({\n  selector: 'my-app',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <h1>sampleTime Example</h1>\n  `,\n})\nexport class App implements OnInit ","readmeFilename":"README.md"}