{"_id":"ts-is-present","_rev":"11-15add3d6576931c3f4061f6aca8a95b8","name":"ts-is-present","dist-tags":{"latest":"1.2.2"},"versions":{"1.0.1":{"name":"ts-is-present","version":"1.0.1","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://bitbucket.org/echo_rm/ts-is-present","repository":{"type":"git","url":"git@bitbucket.org:echo_rm/ts-is-present.git"},"bugs":{"url":"https://bitbucket.org/echo_rm/ts-is-present/issues?status=new&status=open"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"_id":"ts-is-present@1.0.1","dist":{"shasum":"894ef8aba85c67271911760bcdd0e25e7e98dc53","integrity":"sha512-Bnmz1X5n34oORs++OE2ox0Ol4GW3kxLrHNV8bz+tBTq2UN7IC7TDaeHfp4w7/0YawhVpZQqTFvS+vxbzU0Nv6A==","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.0.1.tgz","fileCount":10,"unpackedSize":10711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9BpnCRA9TVsSAnZWagAA0FoP/2x/DIRrB7FlfaOd3fPl\n4alrd/vtqhr8R8+0OH7/U5Tv1S3neEEQkreiXgPSYDybtQxZLtNaz4fs4B8G\nDIJjuPl4P80SbmWOWbsKNLuIUULMftYIMxcrRkON6kGJmle+IJ0fYnSO6YOd\nVO6vSt5ovD4dHDFkiRGePlrObEKho+g4XZg2LqKFrKZeYd0zG/VnDJc64Xuw\nqwz4YnwLBCnSLCdnVxrY3bgOOnAghbXJpwkTdiLPUChw3LfaPl5EmpJFdRWx\nuQR9OPuNcd+WN2/len6T/6Dmc48yUe49wnp1uERCt3XeMVxAkaHL6nORDATS\neDDQpnyT5mzfAMMmzU3+lX8sMmTfI78zunt3sF8zg52uxqcRUCa3ld1BYx51\nKz+f2/N6IOd2hI208wWXHZT4sI6ZGJayf82uaPpkG2Y8fDANy5TPn79S3939\nWIRKRGWu/HI2HRiG/2dNCWfmoGC9032tN+mhQHXOkvxLiV3cs2N0ctgeRCxm\nnyML9F2GomrSHCPoIrM46bpHSeXoC2aCHf/jpNOsmqC92HvoR/9Q3nbfdbNe\nlroc3dxDS7AeeU6zh1GBMFt3RwTWAKRN0wx+r0RbKxQXQdEGiK/8Lz6PgVVX\nCOcrfeZdpS7xcnow+vO3oa1AmRHqpvFAZ9K/0WCGoaBaHh0vZVJfjzuiPUHg\nMayo\r\n=Np4C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDiBS4ZYxjDBC9m5ZW05Du/eYL3f95W7BOPgZTWta6lsAiEAnttVVgK/srXm6GM+/VAgwH2b3bN39Oj+vVPJNerAjRg="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.0.1_1576278630991_0.7072073017240075"},"_hasShrinkwrap":false},"1.0.2":{"name":"ts-is-present","version":"1.0.2","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://bitbucket.org/echo_rm/ts-is-present","repository":{"type":"git","url":"git+ssh://git@bitbucket.org/echo_rm/ts-is-present.git"},"bugs":{"url":"https://bitbucket.org/echo_rm/ts-is-present/issues?status=new&status=open"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"gitHead":"cac9e735650dd4b4a3b3cc689b019c6019ae18d9","_id":"ts-is-present@1.0.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-cf9r0UjahyBk117LXHd+OHsi+mF1Jc7aYEV4OxV0QNtaDENHQSX8FCaJwKqN5p6PiTE2r1jGCErCS33ywwDMxA==","shasum":"6d98f80eee4680929207ea5707a6f30563925879","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.0.2.tgz","fileCount":5,"unpackedSize":4760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9C38CRA9TVsSAnZWagAA23oQAIPt+rN6Co9C5vT0ONY5\nHXB3p4/o88nziLlWgwBNghTT8rfqaHoZIWa1RHLTVtpISCTHvGeQDmSgIf+l\nGclai5qyXhD9w5dWxTL+UkOlXcjoEYIOf/r0UzmmoarZ0C9SFV2aq1zEgazu\niAfMCIad5sBgKbcViyUF9W9xhHh2pXCodUWCdT5I3QH0wT9XlIWgJxHn8Msc\nOYGMU01LVwkwkbZvGhIhngahy1uHloiL/8ygd5QvHWP7sIDKf6XLlDaCEk4X\nTVg8LvSxEwmaxHOrKeHSdwRhqi0Ky3TzrIZFY9Xjr1bo1zs7+MqR2S7p3ego\n0f+4uM6NLx6XFrGYHNfz3XxIHyZJfZ0E5p1jzgX37rtHFh2sm8lPZ6YC4Pva\nHsq9uGOm0nDVhKgzIQ89N9u6oBuFNlDuLWWl5iixe+xNyJ6a2Fa/Mb/GD8Xj\n8BrOITuV7mme4R/dIALgfUHSktaBf+xAs0e8VOXtgjtbkGc2L5Zo9/S4IqB9\nI7DCXbQhZ8+z41lYrbqfz+Z+kOVDMjhcQAmwKXNLym556eiOwvhkHMqNPsdd\nXBFyb50s69Ap3R5q3qby09X0Wx1iUpJ5f53+JCLvkp8YyHVY6PW9EgqOFaoT\nTbhFD+AhKSVt+TrkvLt+MjmcN2FrfdlXvPrQ5eMf8R80d65GLK4mJ0iPvo+B\ndOEW\r\n=9S5u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFN+aja72nv3kgKeOIqvwY1FNSodhnj8UlAFF2BWSJdEAiA31tVD2h8hhccXdUzUJ0hw+IZleEebjExAufx9/jjoiA=="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.0.2_1576283644544_0.9922117860110893"},"_hasShrinkwrap":false},"1.0.3":{"name":"ts-is-present","version":"1.0.3","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://bitbucket.org/echo_rm/ts-is-present","repository":{"type":"git","url":"git+ssh://git@bitbucket.org/echo_rm/ts-is-present.git"},"bugs":{"url":"https://bitbucket.org/echo_rm/ts-is-present/issues?status=new&status=open"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"gitHead":"cc569a5ac4cf5d90e99e5f36a07554be89a7a471","_id":"ts-is-present@1.0.3","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"integrity":"sha512-G6WmRcOrrK0fmE3ZAXQcKroHQbw8fIz8GYxmF0e7bYj+OQ7vnWxmMUbCUCDddvZsHATPGsnIyXu5Lc74mzvWTw==","shasum":"4fa7c47c5bd5cb8aa91f66ec2f2917bbc0cc9dc6","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.0.3.tgz","fileCount":5,"unpackedSize":4782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9EOvCRA9TVsSAnZWagAAlREQAI+WNRuMO8unc8P36AuW\nFFLNOb3zHmYar3KREKLhdytpc291T9t7fFAH0TckNt21WAb/UOpqfxvg+I33\nx2i6OY97Dd9ClUtp7g99wqB1UvID6KLO4h0KFa0wlKOhVDlL3GI3zn0gZyeK\n3s+p7dsZDUCbfLG/jg8hU5olXxq0rKquVyqauhksG8pY6L/eIEN7+bpXZhw4\nlQ51ICzbYyqc9PIWZRh8ZZ6tCaYnMD3ZYQNZZIfhiiwczKOOLmE2usRqoaHm\n4GkgoCs4TncqljzqfbhQ6RYEJMVweMsMKB6TkuTYA0Iv7Mape35iGI6W71Fi\nQKnwKEYd5VMqwaae6NeLQMo9HjazWbWiDPYgfaLV7I0ET4rcPyNvWEFQIWfh\nTMMGvd0Jyvk9FGdzADQCR301Z3rhGIjEigUHQBY1OI4uRFOZXGKJWrhMVP1c\njKzvcaxgNQEJIlvGiAPsqylP4PlX37KTP/LAi6PY60lJ0t9M2SdYEtFht1FH\ncJ1Ce+VgHjl2x7ZIjAX5zzyNoWBsljqUeZ9bX/ssKWgGqwXnFsCIgjvr+QiG\n3Eokl7MNPk7uy/LBgB+BGQT1FtLrA6BIsgyhIYQBhenF3NQolo88aK3xkuJ+\nF+sZaNSgwqDijx6nf7jh8XbOlKszE8DdejMkQqt0dtdFNHvV6q9hD8zv+qbe\ntLMH\r\n=HXsm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy3gQoWxr8d+yVzLZP3jbKZ7xc86ED2cGmRliWIUTwRAIgKNYWvE6eJMUnOvJAyHqLL9G3uWWZFKulKWa4LMhiwiQ="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.0.3_1576289199479_0.7147072246707511"},"_hasShrinkwrap":false},"1.1.0":{"name":"ts-is-present","version":"1.1.0","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://bitbucket.org/echo_rm/ts-is-present","repository":{"type":"git","url":"git+ssh://git@bitbucket.org/echo_rm/ts-is-present.git"},"bugs":{"url":"https://bitbucket.org/echo_rm/ts-is-present/issues?status=new&status=open"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"gitHead":"1303e55dbeaecd401ed7e7d1bac95414984fc63c","_id":"ts-is-present@1.1.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-xwij5f43W3E50Fp9aWiJKJ+ikZaEwSS6g3SL0c/iFRJUCtiEwWpJj2L94q3NITe8n8UwrsfcwaFCzB0wbDI+cQ==","shasum":"6ac0b640dd812c4ed1b3fd97112767c9c881eaaa","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.1.0.tgz","fileCount":5,"unpackedSize":4789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9uDmCRA9TVsSAnZWagAAkscQAJXAukAf+9KZ4NqAweJz\n1tisbedZgVAPMpXVXt7fHRYsmbqzmA6gm0O84AeR9Ny7PSeqVTc5+ZiTlfUw\nnZZWZ7GBqEUvDD2tLAD5DmOAU5xC/8UB2vUfq041zyIDF57F86P75yogqTtc\n2dkI2TcmwpoHHNg3FpmPprfzHWh+cMh5XFkZQAbN0JzGQe2uK4iUXOlV6cug\nJPZG/IMkElBZvcoD37Rw2hD/ydl6OHgdQB23FAGF4gv/WR2cXZfoM55gRXyC\nR4/buDHYll/LJ/AAdqgGmyakgYa/nvPXciR9VxYt/wsJArk6hg5HkFR/s8PU\nSRQORqbccwiYgY0f8s+ItfV68t2jA37woy9kyJ1Mh+/rk/kmv7ENiKwlFtxC\nLfUcLy7GB9FRmmNaSITIOhew5BiouQKp0ENgCkXxArkD26zKoKKx1x7Y/Y9d\njna8/DO062NAzd4O1NPJHB3LeX4OPz0VQJ+Z6YEQ5Hl2OFvMY+ttIYpKrFby\nX/TO4zqfAycP57lKCHO3+xife+AdL5FceDiIrCihTRyVo8PKF77Qh8ljp6Oq\n07IA3U7gRTTGI/LtU/U6iqJVi4MRe0OsD6V1j89YADZky8CgztsOE7klagoi\nS2K3a6oiAjfHEtjekYabyW9jFMULwZXHu93Fuq0L9Ub+THOljG4PSgm9imQq\nM2/V\r\n=fB2q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfzmE2RxvIvUWgA7mgRMuwVhVzj1JZ6Cv4lYklY+B4wAIgHMtSK1WgsZXybAtrrhaKD57Aj54BcMJ+e94W+nDEZ6A="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.1.0_1576460518432_0.3943112283180372"},"_hasShrinkwrap":false},"1.1.1":{"name":"ts-is-present","version":"1.1.1","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://bitbucket.org/echo_rm/ts-is-present","repository":{"type":"git","url":"git+ssh://git@bitbucket.org/echo_rm/ts-is-present.git"},"bugs":{"url":"https://bitbucket.org/echo_rm/ts-is-present/issues?status=new&status=open"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"gitHead":"3e59782bbe114bb8bcc9d89916fda1aa662e2db0","_id":"ts-is-present@1.1.1","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-PJDo/CFswcyAJnNuozKduTKQouFUfsD279URXhjJNDYVS+WZPVG78iNPjBvum3PWz9M39RQkM9Oqp8XzjKhc4g==","shasum":"eaf23db58c093f0c9e787549c921e2a1689726f2","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.1.1.tgz","fileCount":5,"unpackedSize":4789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9uEqCRA9TVsSAnZWagAAJToP/1fKVHIjHAKx7WNk0OQY\njA1U9Lc+qHDA+mFaAq28TMxU3WoTa+ZPYppjMLZv+wiIy8kVsuYdeuHWNW2k\nouvftpbsa+7kd2CiH8JOs5mPFz6wWTB3WCdp9ebmoQgdjPNIaTBBNzoP8Upf\nkYnL57Jm78h471JEES+dDHQh+cvgqVMYRglvN/BbMJVeKLaj7rOrbO8u2+Yf\nzRAyH0melGdYnskWrNig+SDjFNGQB5JtZ70kspueYTwaOVR4r160O9CGFVV2\nB17naZvBiav+hBzf0ORXx2aX3Mkv7IFfQByYbidkmwxlPVrMfCbtEV5vVe+C\npDibEuUfqY8Yqoh/lVkYu67kCdJglc1+vrFvLaiKZlQX7om+PmwbHjhMMB/X\nx45IfIyCz27ky0Zc6WpeSk7rMgXlCoispRUr/r8CH4QedmleoCWQc5o6yY3+\n6jk+UOo8Ert2KKxOVrR2AuQplfp76PRPhawAksi5mScKW9YG16RHUlXNQBaS\n1nmLn6yZfkqtClF5M5JzLZZce7QORvzC5Ibs2kXajuiZ3zv/7KYFwciEPBlM\nMQs5pkHCmHSzItxIiyxmdDQFZJZLW524738n1PIfcxCABS/vjVLQurYApidI\nhMOHn5yq7/eo6xPVzn7yxcyrL+hZl8SeIhb0ddPIndU3xBMblkY2VkmkhvIE\ncOJg\r\n=ryMA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC44MtrbV3KpPbjyCrFyGjcaIIltRFU+DRSCrVl802ynQIgUd5liCrmPQalPGLTWkJFVnPKAEe5fJI/9AZVt7jZiKU="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.1.1_1576460585873_0.409756238035923"},"_hasShrinkwrap":false},"1.1.2":{"name":"ts-is-present","version":"1.1.2","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://bitbucket.org/echo_rm/ts-is-present","repository":{"type":"git","url":"git@bitbucket.org:echo_rm/ts-is-present.git"},"bugs":{"url":"https://bitbucket.org/echo_rm/ts-is-present/issues?status=new&status=open"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"_id":"ts-is-present@1.1.2","dist":{"shasum":"4168377793776e7191b575e096e409dfbde89aba","integrity":"sha512-3/97VzpzJxnnx4ZnJ3QOJMGp/YaeRgsplumsXZxWxW4QiIxd5nx9HwMNjC7DNsWSdOyaK+f01ho9cYpCGnzMsQ==","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.1.2.tgz","fileCount":7,"unpackedSize":6182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3IyyCRA9TVsSAnZWagAA1WsP/3dlq0fP7QFZ+1gvQKpL\nkIIG5ZohQ7Y5bPDQhriE63MSlFtgTRlU7SRVFN8tIlZ2LArr9ehQwt8FGkk2\nhgjxctcoGHSYonXzRfcxO/CMqpXJwHF1fe/N13QHRIplPIM3D8d8LqAlR67+\nsVM+uAamq6lgMf3jt63ytEXJ8v3PGHtr5nkstm6xHkSVHlNTqjQhBKqKOu4F\nk7Fc7b+l71Bm7Asbwum3+2PQSZTtPGWVgWLdhQBFaY3jYbsH4M5Fn7419I+2\nMP9HsMLrF+TS8+OErzTshizo/WYLce8D+UmWcCOjv1k4/3FAPE0U3dmeSR7c\nTrX94pnJHZvTrf2q785GeyMJS3NeDbF4490oHzlMrcz60RvHztwyU2NHh9uA\nLFX8EVVZJzofevTEoJABAKKhzcagBnbS9tK1MPZs1ot/4U7BIT1D2Tb7iglU\nOPzTeIHmiZN13nA8+yH2oIpLDvw3ZS88YWIjPrYvLdKI+OyxH4trR1hGlQ5y\nAoHecLW0j+/P1hMaguy36eAS5i+k4cSjNDPhTZB2B/35zG5W860f2cvhoxyT\ndvzZx6ImRvT0wSzTcKMRiMK+Nqe6bc5f+wiShhGgciS2lUsa5S9p7jUjB5S9\nxiq3NCVaHIkWnRKQCv3f0L8mLTfzMbYxzmPEbsX42U+FJg7kW8Z6cK0fWJKi\nnEMc\r\n=OcMc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXotA7qImk628X4ZKs4zLT43iYj68+Ndm/VD6zWyBS0AiBRM7FZdBu71WNCAQVcY7TB/04z9+Ump6L18QhbOmkm2A=="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.1.2_1591512242390_0.9537144980630647"},"_hasShrinkwrap":false},"1.1.3":{"name":"ts-is-present","version":"1.1.3","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://bitbucket.org/echo_rm/ts-is-present","repository":{"type":"git","url":"git@bitbucket.org:echo_rm/ts-is-present.git"},"bugs":{"url":"https://bitbucket.org/echo_rm/ts-is-present/issues?status=new&status=open"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"runkitExampleFilename":"runkit-example.js","_id":"ts-is-present@1.1.3","dist":{"shasum":"6184f7443de18a1193386a899810cfbee50b8c3e","integrity":"sha512-t9CgMdexDIKllIrVAv30U/5BeZItzWX4Cm9J9j3Mcn132LdcKpT7xfL3KNtXFrU87gn4r3Pc3BzcXhuXRj8QoQ==","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.1.3.tgz","fileCount":8,"unpackedSize":6585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3I9yCRA9TVsSAnZWagAAU28P/145x6b39d2c1HDlRKT3\nJFqBj75zJTLywaWb3GD+KXRmrluNT9i84aCpQn+W6TAkV4NOa4PNOL2gqs5C\nENghttZvPrk084z3fGRx7Z6DIA/NHzXKzgSDSkORvjDt4C/u11isBt6a/Loe\nXegRBiSjx6xByuvyUV5MJY9Hkezfutfcixc1IPd/uBng5NQmaPMhaGoi5xAQ\niMaVoaBP1ImZRgw+OPlNB8XUGHCpmQv5SToTFbD216vwDC8LhrS+1rTLtbqg\n+NdpphJ3jv8dc3T0A3HEN3JoMpGTUnSZodrUj1zWgSJIbAodxM0w9Bz2hSod\nlSdOtzVBODvaGxRLV3kJPjN9LAC6+sJHszRa2N+W/YwcngS1Itf7xzWq/Yrr\nUXjFUnO5xsCdcYNJC9dnapC1Spb7iB9E78ThpgNOndeA2e+o3tslxOneyUoh\nzp+KA+JPqq7PjIggTvaHaJWqfk0EpYYaonhJ8hTUGMrCh+CZaHo9ypcKWicE\nwjHbKaZdLt88D+mzJW8JQf0QeNNu7BiCFBOs72b0ODbAmj35ZZ8RgP9dI+yc\nPr/TNMmnVbl9p/sdVDWJeavONc/GkHzhugwaJxj/t8yS5ZjGtFzogW08v7O8\n+fNO6/967YaSBppS47ZZzy4QoHbnb3iKyb5opRqFoiaD75A+78iiGMvYY8VK\n7QE3\r\n=7/pg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn2yF05149QbSdYKCJt1kJdsepQDmHAIKOAC8GOXDSlAIgREsr/gZUEvmTpxItnWCB6fnWs/VRk/vVKCBt8hGQUyQ="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.1.3_1591512945819_0.6369144142372678"},"_hasShrinkwrap":false},"1.1.5":{"name":"ts-is-present","version":"1.1.5","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://github.com/robertmassaioli/ts-is-present","repository":{"type":"git","url":"git@github.com:robertmassaioli/ts-is-present.git"},"bugs":{"url":"https://github.com/robertmassaioli/ts-is-present/issues"},"scripts":{"build":"tsc --project .","test":"jest","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^3.7.3"},"runkitExampleFilename":"runkit-example.js","_id":"ts-is-present@1.1.5","dist":{"shasum":"63a0735ae312a08401d38c8989feeb00a009b9f6","integrity":"sha512-7cTV1I0C58HusRxMXTgbAIFu54tB+ZqGX/nf4YuePFiz40NHQbQVBgZSws1No/DJYnGf5Mx26PcyLPol01t5DQ==","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.1.5.tgz","fileCount":8,"unpackedSize":6645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQfdbCRA9TVsSAnZWagAA90MP/2XFI06T7jLIsqExvCn2\n7j6HqzbqYDiLffWT0HoLWcbeXkT3YJJum8y6ixVF/r6gHg+2tjQn0iAyxM/6\nubq+YeswkiJlmQ0st40cHboy3d9cwGBaSHsaxEWU1PzK1lt/uv66BhhYg8SF\nfkPx4K7s62n/lKTR/2i4LKu7mEx2TIYKWs6ZMezZdgKRvjRC3SVGxjNpFgnf\njD3qnJTF0qrUk2eKtymccfyYYJyyjUlbw1D76lIyZwbR30z1U3yDALnTTeYX\nsRG/xZ1mdKRlQhSq3+ZoTWBhXRtwnA6Uqczz6f9oASw/oWpU5FAmkvL9BB6H\neKpnhEyptOFWo8U7ej53sRD4kIRoeco4dwuJqRQSWTCEymh1cavVg6UNe3j7\n1WyQioeIOUE9QE17y8xEO1MaEtCCfO2x23Z480IRuCQgG/l6jY7oidy7kX1z\nt6oYPQxbpTsuywXc563dW8KLRyldygKlH1W/0LfSBei+GqciT2soMcyg4zBH\n+U3FT8MtiI635OuC4XPtcvzazatHJ56HAKGj1yJvGAHC25gUuOdyvCgqU9MT\nEiyTEdhv9jcbG4AD7mVb4CzVeSQ+Dl0odurKjC6N/cRyUG+3FUTV9bZoQqpz\nV8eV4r0WNJlRWNQGshMg/AP2abRSWiqMNEgEr1DX1JHQhUpprMYvqU/qdJVF\n11Np\r\n=dymr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjhl2HkPRnt8O/K7c+hpQ5e5QFOTv0HVSKfzSy87aJSwIgaaxG8VACf65jF2C2vxzZYRv9KsJdLIsparjCpiaEWvA="}]},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.1.5_1598158682832_0.9967338509486678"},"_hasShrinkwrap":false},"1.2.0":{"name":"ts-is-present","version":"1.2.0","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://github.com/robertmassaioli/ts-is-present","repository":{"type":"git","url":"git@github.com:robertmassaioli/ts-is-present.git"},"bugs":{"url":"https://github.com/robertmassaioli/ts-is-present/issues"},"scripts":{"build":"tsc --project .","test":"jest","lint":"eslint . --ext .ts,.tsx --format visualstudio","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","@typescript-eslint/eslint-plugin":"^4.10.0","@typescript-eslint/parser":"^4.10.0","eslint":"^7.15.0","husky":"^4.3.6","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^4.1.3"},"runkitExampleFilename":"runkit-example.js","husky":{"hooks":{"pre-commit":"yarn lint"}},"_id":"ts-is-present@1.2.0","dist":{"shasum":"1edb94b65163133b46ebcab63ffc642ce7c0cbae","integrity":"sha512-CwkoONaofM31GAqGUClNaplRJG6uoE4V/TSDr8mIWQ5760E4R+eBvVQJ5gGxnR+FMhSsURxo6alyNxVRkuGH6Q==","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.2.0.tgz","fileCount":8,"unpackedSize":11722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4AJLCRA9TVsSAnZWagAAlGkQAJK/XVmj7mOgL/48thsV\notfdqLHWcw7jLgDsUNImpFcrgAbEHw2O5xSrlxMDK1drQWyqApdJps6JH0Hy\nOmzTtoQIV0xj2l9DDT+knBDpMXtPrXps8FMLyjUJkMhHuhwdai6mweNwKFZf\nykVHH+z/cBrqXoeCqg6QfBRBMT9vpo5C7G2d48JFV3v4JNJ65adrvu6+TzmC\nkorIKZAXcH0mXqgGVXsTaG2opgQjS3afchYSl9RkhKtMrTBEYmD6CFm1j1MO\npZVFC+OYUdgGH9unGGJKfbrp2gxiCfalp51QMwV9vQALCawJ9dCESnRPYhb5\nLB+fEHbIKVzMTbfftjXoLux1EnUZqHnLdXD/Vjiw+lX4KsW7AHoZ3fJdHRng\nn42BMrAusbEeJrkr9p/DIVQ66x4OPzZCe7foZ7UfkSVk20J3tKmPgubi0MFP\nlm4WqHpUQzlWr3rMBV6Hs6+dM92BklsX6cRPkSsdfCjL/eMQM674nXw9mbKh\n9UyVzt7fNUdliyTiF8V3u8V0BsRbOkh/t+UEfdxV4YeN6k8wHgW1tlF4OMV/\n1RJGAFWPxzsU+HWUJY7QpvcCPdgOU52T+E2hPrJw4VB5XyTYVg69/ykH70I4\ntMMhEoS3DUJ8WjosrZr653SdekEnAzpCMP/MzlQWGU4OJNPigYyXoecnWMHo\nwHCu\r\n=7Ayp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqnjvhBAtlQa4glx5DnrEvBrKbh3vp8UUoScXCGozgGwIgae3TPtDUYIdNXdHJQPC5GlffhSi6qBhQkIylHBnExtA="}]},"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.2.0_1608516171406_0.8514631264320582"},"_hasShrinkwrap":false},"1.2.1":{"name":"ts-is-present","version":"1.2.1","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://github.com/robertmassaioli/ts-is-present","repository":{"type":"git","url":"git@github.com:robertmassaioli/ts-is-present.git"},"bugs":{"url":"https://github.com/robertmassaioli/ts-is-present/issues"},"scripts":{"build":"tsc --project .","test":"jest","lint":"eslint . --ext .ts,.tsx --format visualstudio","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^24.0.23","@types/node":"^12.12.17","@typescript-eslint/eslint-plugin":"^4.10.0","@typescript-eslint/parser":"^4.10.0","eslint":"^7.15.0","husky":"^4.3.6","jest":"^24.9.0","ts-jest":"^24.2.0","typescript":"^4.1.3"},"runkitExampleFilename":"runkit-example.js","husky":{"hooks":{"pre-commit":"yarn lint"}},"_id":"ts-is-present@1.2.1","dist":{"shasum":"38faeef8c59a890c0f876c86a46397fab236e21c","integrity":"sha512-EYHn58qVRd/VHGkHSNGQJAxPXhF9wRiphYXl04VznngqqKjcT2jfHvAMPuzh8sRKdvifXw+dq6/Q3hG+nr3DRA==","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.2.1.tgz","fileCount":8,"unpackedSize":11865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4AOlCRA9TVsSAnZWagAASikP+QE13FHyTZc/uumRfnTs\n07Q0eucdn8zEgZcISXoj1o15KUHtT9cERPa+F7LSo2tdyBdMGGKZvcfWItji\nhTQHlWg16jbjiZUXKH/NULHl9W2kRCQ0y/Z4G03m+84b0iG8y9kEgPrzAHga\nr9TJTEAj4s0aUCIt85HMIU+2I56Qk2HnnLszj/gMzTHnEQxe8vGz29XaOe4q\nkgwuP9jMqXzQ4lOr7itVFA5LgJsX6ZoebIk8mW+3/E0P2YA3yw5KbppOLLg+\nHECa5oqC8KCZKS+b7xbtBKw3MV0OMIlSdB70TCMSHpjhDzotDidVgebOzktc\nngZM0IkoTZ+Xu92/b4oAuTOOh1/6DvjvRaHwuLPHRGNr+VVwrmEx4QF/IfZm\n2cOzFN+pSCWiy46LkEGo5dYPy1hFGpn0YsPJqxxJ4CBSbW1SDVJQ1k3j26A0\ntRAoyc6CpnOETsSCui54hb7AKDcjjM7gqXGaIIe7bPuu7nHRixmgrsdEfhYE\n6mB60g2KmgSCn54Hw9E6vPGFSu5l77Jb9W0VPlOOMaI6QM6uvDK3JVNBv7Lk\nz9xQVuQAyQmjL6wzmrVYBrzpKe149n2N/ftD02xIpeP+uNRqVvvz6rzUP0wV\nzBLi8WBa7pliAonCCs/GT16X9hLKk6jsqu352qHu4oimxsIu1J2XaQhY0Eup\nwtPl\r\n=74kn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbhQf7fbj90qw89lVP6996q63P5uSqnYvI/go4ILU/jQIhAKT+/CiaYYLwfkYldVuGNWeZRoARuU54U7Je8oomrqaO"}]},"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.2.1_1608516517375_0.8471876062582864"},"_hasShrinkwrap":false},"1.2.2":{"name":"ts-is-present","version":"1.2.2","description":"A library to have a generic typescript definition for object presence.","keywords":["typescript","filter","undefined","null"],"main":"lib/index","typings":"lib/index","author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"license":"MIT","private":false,"homepage":"https://github.com/robertmassaioli/ts-is-present","repository":{"type":"git","url":"git@github.com:robertmassaioli/ts-is-present.git"},"bugs":{"url":"https://github.com/robertmassaioli/ts-is-present/issues"},"scripts":{"build":"tsc --project .","test":"jest","lint":"eslint . --ext .ts,.tsx --format visualstudio","prepublish":"tsc --project ."},"devDependencies":{"@types/jest":"^27.0.1","@types/node":"^12.12.17","@typescript-eslint/eslint-plugin":"^4.10.0","@typescript-eslint/parser":"^4.10.0","eslint":"^7.15.0","husky":"^4.3.6","istanbul-reports":"^3.0.2","jest":"^27.1.1","ts-jest":"^27.0.5","typescript":"^4.1.3"},"runkitExampleFilename":"runkit-example.js","husky":{"hooks":{"pre-commit":"yarn lint"}},"_id":"ts-is-present@1.2.2","dist":{"shasum":"ba59b4a9d2bc22b99d1ba7f4af3d5eb320408d95","integrity":"sha512-cA5MPLWGWYXvnlJb4TamUUx858HVHBsxxdy8l7jxODOLDyGYnQOllob2A2jyDghGa5iJHs2gzFNHvwGJ0ZfR8g==","tarball":"https://registry.npmjs.org/ts-is-present/-/ts-is-present-1.2.2.tgz","fileCount":8,"unpackedSize":11898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOr+GCRA9TVsSAnZWagAArNcQAJONZcJ91L9LkEIern/D\noJl/+NeQ5zpomhoio0Af2nnKDFYEsoqBUoDccQhSI+eREHargy07j7blIoZi\nNyobQBch/+hd3O+37V1w7LCGTuJ43dhfAZt9gkXLQvuS05LU+cTJ8ZYal03H\nBDIAdO8w+UPoV2lW4aS717IM43+g5C3dWCFUMRgnZR8eyRBp/B3s8PCbsXuJ\n3aA3FKKHeIhkP9f5ObrAMUYfOQ7mpg4KHGTJjj7GppznRdjV9OKDmfME0AsZ\nt/NJE+u7XhzouQxPN5HjxrKOqXMhCucfgalUS5ZaYfRGu8deqAvCQpbYhihk\ns/+v5I8a7Mdx9IsR3U8FPpT3zAy16uktLOjMeyNgcprz2J0egbKQmvCArN36\n6jvjkEpuysn5fjVsty7AhelId9WuBQ7iGB2Rtt3K0moKgWghQOzrxM/JMps+\nC4XVfXiiOavjHokTR8S92CxwqgLVmI7gWmUxFm5jYIDfSrNiDgQlG3Bb+ckm\nXlJz4rjzXo88D8/zQksztU9gowPj7/uZMKhgf+0mAE+utgOyZ6ojIItipqgW\nTrFFCSZbdENqV6JCaixmZ5kbwy0VL8DLrcFGrPeAUPw0ANu6WYiIO0lIM0Vl\nJSlrKRcQTyNg/N19Ch6gyz3n5e2UvuRMRANYQlsXGFNJocH3gPTlrm1HpBip\nPPui\r\n=RQkn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4BUVQY121pymvKc9QfoZ2433fhA20O0njx3hTxZ3jBAiEA56Pad6kQvdC9s09VqTCZPPsjXuEEYI4td3KDmNPfFDA="}]},"_npmUser":{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"},"directories":{},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ts-is-present_1.2.2_1631240070150_0.029525303151332505"},"_hasShrinkwrap":false}},"time":{"created":"2019-12-13T23:10:30.990Z","1.0.1":"2019-12-13T23:10:31.111Z","modified":"2022-05-22T07:19:19.264Z","1.0.2":"2019-12-14T00:34:04.681Z","1.0.3":"2019-12-14T02:06:39.660Z","1.1.0":"2019-12-16T01:41:58.641Z","1.1.1":"2019-12-16T01:43:06.050Z","1.1.2":"2020-06-07T06:44:02.599Z","1.1.3":"2020-06-07T06:55:45.937Z","1.1.5":"2020-08-23T04:58:03.051Z","1.2.0":"2020-12-21T02:02:51.548Z","1.2.1":"2020-12-21T02:08:37.500Z","1.2.2":"2021-09-10T02:14:30.300Z"},"maintainers":[{"name":"robertmassaioli","email":"robertmassaioli@gmail.com"}],"description":"A library to have a generic typescript definition for object presence.","homepage":"https://github.com/robertmassaioli/ts-is-present","keywords":["typescript","filter","undefined","null"],"repository":{"type":"git","url":"git@github.com:robertmassaioli/ts-is-present.git"},"author":{"name":"Robert Massaioli","url":"https://keybase.io/robertmassaioli"},"bugs":{"url":"https://github.com/robertmassaioli/ts-is-present/issues"},"license":"MIT","readme":"# ts-is-present\n\nThe `ts-is-present` package provides common functions to let you filter out the `null` or `undefined`\nvalues from arrays in your code AND end up with the types that you expect.\n\n## Super short explanation\n\nInstall: `npm install --save ts-is-present`\n\n``` typescript\nimport { isPresent, isDefined, isFilled } from 'ts-is-present';\n\narrayWithUndefinedAndNullValues.filter(isPresent)\narrayWithUndefinedValues.filter(isDefined)\narrayWithNullValues.filter(isFilled)\n```\n\nIn a nutshell:\n\n - `isPresent`: Removes `undefined` and `null` values via a `filter`.\n - `isDefined`: Removes `undefined` values via a `filter`.\n - `isFilled`: Removes `null` values via a `filter`.\n - `hasPresentKey`: Removes everything that is not an object with the expected key present via a `filter`.\n - `hasValueAtKey`: The same as `hasPresentKey` but with an additional check for a particular value. \n\n## Short explanation\n\nThe following code feels like it should type check, but it does not:\n\n![Failing code](https://i.imgur.com/d8EBtg6.png)\n\nIt fails because the TypeScript type checker can't intuit that the lambda function eliminates the undefined values:\n\n![Reasons for failing code](https://i.imgur.com/32biELe.png)\n\nThis library provides the three `isPresent`, `isDefined` and `isFilled` functions to solve this issue in the way that you would\nexpect the `filter` function to work:\n\n![Working code](https://i.imgur.com/WqgHTrU.png)\n\nUse this library to dramatically simplify your TypeScript code and get the full power of your types.\n\n## Use `isPresent` to drop all `Nothing` values\n\nThe `isDefined` and `isFilled` functions are only useful if you want `null` or `undefined` results to remain respectively\nafter you have performed some filtering operations. However, `isPresent` any values that represent nothing\nfrom your results (`null`, `undefined` or `void`), like so:\n\n``` typescript\nimport { isPresent } from 'ts-is-present';\n\ntype TestData = {\n  data: string;\n};\n\nfunction getVoid(): void {\n  return undefined;\n}\n\nconst results: Array<TestData | undefined | null | void> = [\n  { data: 'hello' },\n  undefined,\n  { data: 'world' },\n  getVoid(),\n  null,\n  { data: 'wow' },\n\n];\n\nconst definedResults: Array<TestData> = results.filter(isPresent);\n```\n\nAs you can see, `isPresent` can drop `undefined`, `null` and `void` values from an array (where `void` values are\nreally just `undefined` in disguise). This makes it broadly applicable.\n\n## Use `hasPresentKey` and `hasValueAtKey` to filter objects\n\nIf you want to find all of the objects in an array that have a particular field present, you can use `hasPresentKey`. For example:\n\n``` typescript\nconst filesWithUrl = files.filter(hasPresentKey(\"url\"));\n files[0].url // TS will know that this is present\n```\n\nIf you want to find all of the objects with a particular field set to a particular value you can use `hasValueAtKey`:\n\n``` typescript\ntype File = { type: \"image\", imageUrl: string } | { type: \"pdf\", pdfUrl: string };\nconst files: File[] = <some data here>;\n\nconst filesWithUrl = files.filter(hasValueKey(\"type\", \"image\" as const));\nfiles[0].type // TS will now know that this is \"image\"\n```\n\nThese functions are useful in filtering out objects from arrays.\n\n## Deeper Explanation\n\nAn example of the fundamental problem can be [found in the TypeScript bug tracker](https://github.com/microsoft/TypeScript/issues/16069) \nbut we will try and explain it again simply here.\n\nFirstly, TypeScript can not look at the following \nlambda function `x => x !== undefined` and derive the type `(t: T | undefined): t is T`. \nInstead, the best it can do is to derive the type: `(t: any): boolean`.\n\nSecondly, TypeScript has two type definitions for the `filter` function. They are:\n\n``` typescript\n// Definition 1\nfilter<S extends T>(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[];\n    \n// Definition 2\nfilter(callbackfn: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[];\n```\n\nIf we look at those types carefully they differ in an interesting way. \n\nThe second definition expects a callback function where the return type of that callback is `unknown`; \nthis will be treated as a truthy value when the filtering is performed. Most importantly, in this \nfunction, if you give it an `Array<T>` then you will get back an `Array<T>`; even if the lambda \nthat you provided \"proves\" that the type could be restricted further.\n\nThe first definition, however, expects that the return type of the callback will be `value is S` \nwhere the generic definition of `S extends T` applies. This means that, if you give this version of \nfilter an `Array<T>` and a function that can tell if a particular `T` is actually of the more restrictive \ntype `S` then it will give you back an `Array<S>`. This is the critical feature of the `filter` type definitions\nthat lets the functions defined in this library refine the types inside a filter.\n\nIn short, when you write the following code the second `filter` definition is used:\n\n``` typescript\nresults.filter(x => x !== undefined)\n```\n\nHowever, when you use this library the first `filter` definition is used:\n\n``` typescript\nresults.filter(isDefined)\n```\n\nThat is why this library helps you derive the types you expect.\n\n## Contributors\n\n - [Jack Tomaszewski](https://github.com/jtomaszewski)\n - [Robert Massaioli](https://github.com/robertmassaioli) (Maintainer) ","readmeFilename":"README.md"}