{"_id":"typescript-tuple","_rev":"39-bb600b5cf83d8fab0acb353e48eb5fc0","name":"typescript-tuple","dist-tags":{"latest":"5.0.1","rc":"5.0.0-rc.0","prerelease":"5.0.0-rc.0"},"versions":{"0.0.0":{"name":"typescript-tuple","version":"0.0.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^0.0.1"},"gitHead":"31a4a570f2504681aa27f4eee2859bb969939985","_id":"typescript-tuple@0.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-8tyZu+idVwZcpy1N2PaKrKKYZrE8eM4J93metB1EkiBiClshuPPGZUzIPd3W2BiuQY7lYCkKkG/ZItG1yHTGbA==","shasum":"d184e8f96667fc1a69c43867b95c3b6661c6045e","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-0.0.0.tgz","fileCount":6,"unpackedSize":3745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblO2DCRA9TVsSAnZWagAAs9MP/3TSJc5nFdqqXMTzDa4x\n2iiZ6lNVMxLLBQ9ZIST7AxPF4ykYGKdcnNfVQUz82TYF8YpB21cQ9uc+dqF5\nvuD16bSNmIsG9HC42pBzvkmFQBXpKRzLuy/P81secwobeExsn9fno7iKev3e\nrLdsHsDsXqwTbeVQBH0pJMJ6TReZgjl1qs5L1/dK5wWaRmswkTntmocKSxBp\nWD+nvTpXN8JNkBbtYREgGrqyhFF+SfGcVC55dWWaaWKHqLreyzM7YFvqvMz5\nM/0H+KIdrPu6cTO7C46Z3Hpbk9/U7JiLkmQ89elzh8QMs84lmehxR+aL2snM\noQlEY4zv2G7XFF9wrf52JXJB4T7vSynLALCzFJ6t6O5NgP4hhXPO6M1IKvpU\n5LGBidP7wUAKgJbfSTsxRoYwaZh5bpWOpp/X7zaN1wgiDcWY7PPTNXVKoRSI\nhOqcExtG+kvAHZBYvR5o0xgDOVvypO1df+Ude4UgUDyFy9i+MgOkgSwpG594\n5aqG7q299hcfBR9TCMGyyndJ9K5gj1H65VmSyzxwSSrgUwNKafwlTcwDyzkk\nCdiSmH8+B0E6HLeK6UjtJOqn9jMBb/POJm867f+v+kkubA6gz1lghxRTIo0l\nco3//egw5q6pYS0EDFBjG7REnv1gb6HSUaYgJPSlYZ8e3Wdw8UL5a1RnKf4c\nedbp\r\n=/y+j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGaPrK6Re4nf8FOFNS740YfShYibHhLkXhXX3gO+igxsAiEAh4JrXKCrzXdFsfxCwkcckiMrnTPqaXdJ9J+9vki/7DM="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_0.0.0_1536486786925_0.2230796609952499"},"_hasShrinkwrap":false},"0.0.1":{"name":"typescript-tuple","version":"0.0.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^0.0.1"},"gitHead":"649bda7434fa600e362008b5225106aa4d31fc7a","_id":"typescript-tuple@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-BeP/kYWKhiCwxmV+u3HOnqurBcOLG6K4KacOYiQpg0ukJ1zmKX6GkWWEl9Z+8ONwW7EZIAOe8iLIcWyebQTqEg==","shasum":"313b00840c1e2f81744134531c35cebece407beb","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-0.0.1.tgz","fileCount":5,"unpackedSize":3734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblO4mCRA9TVsSAnZWagAAqfcP/0xhlshlgT85k2Uog/TF\nkLMRD/qsZF7k7/HKJ7pA2yu8Q694zDTW8tsLsVRsuX4mDMcL3HmGSzZNFb+8\nmE+j/jqOrexr89D1ct+Kd8+KLse5gnnMdUXh68LfOFF5YPiqORRQMaxy8Kkc\nf0AQnTuQGLt2BBiWcux8eEB2XOgn5CEy76Jcoi3x7E02D0QTA1bhiZsPV4w5\n7uG94N6ZvlwaTYSy9ntJc2lNz8o3JhqrSJWarkELXsmFB0shrhs4syWhX+Ez\nPHM1SX++OX130+rFuR2AyJXJFZSVeIkLjPrNGcJEmApyNI695iFCeCsVPX4c\n6HauQTY8kOJDDiyhWj856QRQbKt8zYTa55RF8BZo1HzGGRz/XxbnjHcwOX2k\naHIRxEmljth35Xxe4ivvIa2QPLjLpQONNf98JYIIQWYKGBhg9m858bqJRJ98\nSWzAdFCZB6hNvxehrZJRYtCkeAMJH1ltwim6bYuybbYBoeU4j+nZv99rVTqW\nIc2UcLZdANT/4QpFKsrjLOs6FStPUfyPxNDh9RLoivFwufxVFzCQAl2No0X8\nVzjrdR3orA034opbnTws+FRlLkWN0NZHF/E+FKFOTKDTMXhC3+ZRQUQKaJH8\nrhPaOFcyXInhfBT6CgwmxrYtlkCCG7e7V8HPW9PgwtUKOF+0+XzWahRgijn8\nwLdB\r\n=IcFm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH208g+aGn6usY9Ff+/k7bpyN71qaeEjxU4EDSTuy+ImAiAJ30rlb0PTKBLCT8it4BqBTNtvR4Z1UdE4F5v9mz+3qQ=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_0.0.1_1536486949416_0.9149791313004298"},"_hasShrinkwrap":false},"0.0.2":{"name":"typescript-tuple","version":"0.0.2","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^0.0.1"},"gitHead":"5403bd8058efe9db44e4dd0dc2e8990f0878a6ab","_id":"typescript-tuple@0.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-yIDYsSDiTs59BdoQcuxnD48lIhgeJNw03X0X3+6TSRT4QqSux5ygT33jkkjmE5NccLG6Yr+/97woEtq3iKZVvg==","shasum":"110a7f05ac89e5753e5c0d1a6d0a9aa6e4255baf","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-0.0.2.tgz","fileCount":4,"unpackedSize":3485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblPCpCRA9TVsSAnZWagAAUuQQAKChlEvTOkn1Su+ljdwr\n3BMc6afTV+OYJNYBz3aJb8NfBEuLO34KzF9G1OYaJ3mXj1vQWqBkr3zFkll3\nGm88AwL19yZjSGbm7vkxOvGd5RTskzMadGJtreQPHvVteNrCVrZGErffQ+32\nuYoxjy1KlOeint3qzmlF4xCobwf7QCDVRPSnTeSEzP0xJn9L8y9PUv0Gx169\n/BVwYTwaZQBMTasg+k7S2g/RE2ahrpAIDpBMk4L3mFyhDAk4T4nasFCjVvZX\nconqW7wyKwaL8Th17Eau2clozTQjoKS+np+51R69g8VfL5OzZaj4yR5dabVY\nesPDOdMig1yLQzxzgUUOY+89UDi6+VE9I+eZnZG2UIdYxH6PPi72lgZzDCRR\nvmRBVHGx8BbNxKaDFIVxwOd0WcAKGnUw7u4eetj1fjO8E2j9kKOPjzvPVesL\n1u1htN+0/bafVc2N8BGfX717nrEx4nbhXyllQmVfDfJMBiqPgBQXkfQQVcax\nzeTZv/YCL6HTs5SQ2Tase5C10NVk9rwR9XbizusEt+uXajXrYTCoHqFtJVDP\nVCAT88knVmZSwulUdn5rdpSAwdmdTiKNaN0obXkygC9ADwfWsK7udPEjnhFc\nmFPpyqQy60lJkd1opMO0OIvAHx1pnsrD5mzq9zJmbg7sV8iJjLAr3CfAdXD8\nPNsl\r\n=yX6x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwShZuINn6C9m60OQ3buGg3sq/uxpl/AaFY9ltgpfwcAIgdJ+I62BrJ6EL8iJz6tHBlwF7ot/nwOfjO7DjEIXNas0="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_0.0.2_1536487593182_0.3083750965047667"},"_hasShrinkwrap":false},"1.0.0":{"name":"typescript-tuple","version":"1.0.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^0.0.1"},"gitHead":"cf0542d0c295929e44905febf213f68f8b2dee7b","_id":"typescript-tuple@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-RYE8Cg4HpKtRY+IuW1Fdsn916tZaCWqlxsYE3MhOc/ieuNae3a/9o1i5oCm/YTrXuvXyS7DK2TugPIW/T7GSFQ==","shasum":"22c94026779a58c79fccf4c56cc72014777891de","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.0.0.tgz","fileCount":5,"unpackedSize":4521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblPToCRA9TVsSAnZWagAAMMYP/2hFuOh83YT+ZYQeWh/V\nlJ2pCoFEuSK8M64QXQKlCxciP2iSEXZS/pcM5miCYVaZwaMDotqguFDFHRIt\nQiW8j1WEZXY7ZRbWIlL+cgq76FsLbqURYNbNMXOJziZa/Xf1PmoCxNC9NY2w\neZLJTOdJFoqJNmwRS8SAiLvct5y4O6RhPO6nQbBG64uipHu3N4pE99icRgm4\ned2DlVDNLqKZth/Po1799BiFeS8/hRgV3riSp8kl+RaCx+Xj5gXrjxNs4wQr\nK2Yj1sG8TSdbgeFnbZ9/s5botEYcAuYyRx0CmzuQQqbM5QANhzS1obtSdjK/\nA05l26llKjmtkmdW3kbJmUXOEH0qwJEMwOgodcqANprekZN8nM9P7dxHGzet\ntMUrhU9bw3NOpSfi5ENYOjOMoLr1BZ5OSsuaN9RLKleLHrrexM8voQsZ/RPB\nkwrig8LomE6pXNzEYFkYjiXJWmFupwUEvtRnntiJyldewyF7rqZalpq3fWzX\nSuX+zB/+DzRS1pqK5lFVF/aYQhGU1uDWgGJ/hKjDwRaWvj2myNtsa2G0ILKq\nd7tbAvjdXeLuQtPwRfUTcdk9tbhYOXwSOwM2efnu/j9w7cTM4/97BJpH63nM\n25+MniSVmh0Kq/VgpU6s2Dz9NGq1z+BornSpsY4qn/uLBlO5J8tXnhuP9T0r\n50PT\r\n=G3e5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvgz97Eyrqdki17r6cbqzBMDVYntlSQkfbjNF/KTfVGAiBSc/yRk+pX+5JGMKxnittbf7nDM4kbJsZ/6KVhr1+hCg=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.0.0_1536488680357_0.652392536287288"},"_hasShrinkwrap":false},"1.0.1":{"name":"typescript-tuple","version":"1.0.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^0.0.1"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"36002ae48945df1c5b3812248f32543c1e755197","_id":"typescript-tuple@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-XbaoXls6cndWiAGwHqFxSQNiSGkM/amTVFL4riVSuoISiwVlWH4F0rrx50bR6pEbLPrKchb85zJDS4okPuQN+A==","shasum":"bff5777d14bb619f4aa81e7776fac67526a842e4","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.0.1.tgz","fileCount":5,"unpackedSize":4579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblPfDCRA9TVsSAnZWagAAfYEP/2Lg+hyozpFDeoF3McI+\nQ6YbDcGCE+X+pqUDSMZyRQXW0vMVO08+HRccCTzfUqYxzEL6Q/u/7cXyZru6\nc8s16eeCNnli23OSoEF/jv6MFOMKPilXVy9D+5dBIiuT2xt3Os44qrfiRt3k\nojfNCFaYO5sYc89F/ZcJMfNKK5muS6ofVyDcu9q0W/Sv3T5QMLkQsNhW4C9E\navbKE9cI2AaC9b7R7+eIYnBDEj3mDuzMa4YrjDEexykg+g0O9tLfRui/s6Sc\nhmt1ckRMTcPUHH1wrPV7D5HDGutg2DYRqUaABVwOm+bpSrx1RVIE57E5uhRL\nCvkiLiOCwOV2Pr993NazqzgOUhaO9FypFJw4JuuptqY4E8OubHn2WyW3y2hX\nZOG3+4HCapviGbbs7MwhLKAdeB3kORvJ/XSnndNqwEj/I5RTETtEx/xkAR8p\nQFjiUyxACo0PSZL6Xy7VMpi9zOwH8Oj+pOL8peaeklrICjoE1mj71t2nVeis\n7E7oa+JQuJPpEiAm7ZgVnIrfQRePcd+myuEkVp6+sy3daWiQ6U4E4DMWyWbs\naj4x5wYU1nvfWpt0PhYlPDn5Fc98WncKcQBclGEQvOFtuJlV5lRxZl5D5pnr\n2gPhguQBwAregdwrKg8Z3pSl6Dom2uR+9DFSg2DY6PqDJRug0mVRhbbVr7k5\nmP94\r\n=zclx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJJkoV78x6hjHXbYPsBe9YOhVYXwkoeEV32ZfoGvgKlAiBK4vpgm4EUCFJrjmyej+romkIn9ilsCEocMYBIf27ZbA=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.0.1_1536489410506_0.9039501185824546"},"_hasShrinkwrap":false},"1.1.0":{"name":"typescript-tuple","version":"1.1.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^1.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"cb2443f828e69691611865827f9309d18351c1a0","_id":"typescript-tuple@1.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-9SQISq+J+twJm0V5DzaQhjmycQSOk35DIj+Q5oVKxfls93aTEyAljdXxgFJN26vALbOBV1qKZ1MS7ZzztNA1aw==","shasum":"5b52330153b33b9eafb5c35afbdf8ce48fd2009c","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.1.0.tgz","fileCount":5,"unpackedSize":5389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblkq8CRA9TVsSAnZWagAAaMsQAIUW1ezunIvrogc28HnT\nnTzOG2j+INwgJ6XdK3tV3IQZGqstashW/PEq2a7Q8rIzRrLg93sm8YuBngEH\nNuuyFZo+YVnrGZ9aGsZSaT9Cn+SDfByPT2BuOBRVDb5KJ5MjUvfpNpyyqPsk\nzFWHkY6uSBoKePrVwOLpbYYA7EsukCfwWcGb0LkDTE8s7t0xkKupqSGNUo15\nSX9JuNtxc7PPhbFhw0CzNxaycyO5qJRH057fuo7E/hznx/ivVHjV+DgjRZs6\n9wIda4WDojHbYlaaktvMYYYWW52IPtVTq4MaUGItkA3/Y+/ljV1ajyHX1k9I\nrIz/p8IQ0ZNEkVdF9b7n2CFyxiV0SIBv49YIn9iOY1xD+Dd+QC7ZB4JlVBc6\nM+TlQjlcGaPmST+eXZSz46mQk4d4S2tEDIxxSWxg+lWqxrG5PKXKscjluA/d\nZ2gF3QMUNm8OTEpIfzA98jEBr57RumHwhS1JV+jKOhxUtqx2/7UXLIr6IO/S\nY/WhU3U+SZWtFrvgsCER+kWzVqCv7YuUVSj4ItEmvPscEn/yCWVG0kesTHoJ\nh20AG7axnfygCQq9ovGociS+PF9McCt1gc0/omQtWXAlE0nDDTq3Bwp0m1IL\n+rcryU51IqFRym9vlDmSJXTIgva84fzWp7qb1ENIu6V1uacd2WyaAsesLmIq\n00L5\r\n=7oFU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgyDgIZzTpWmVWvXPSkfTC6O0bVvkQzZRV/EBqYC2CmQIgX7yOtscfhk6wuprK8o+KwpDHsUZTfKqNF+reLdEd9aA="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.1.0_1536576188085_0.7622034728845744"},"_hasShrinkwrap":false},"1.1.1":{"name":"typescript-tuple","version":"1.1.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^1.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"9652ed138ddb27b55dd3712bd40cabd7164d79e6","_id":"typescript-tuple@1.1.1","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-DBazG3jOYSC3E+Is294ilvdcdTMIzNY0FRF843+hurmfQ7R4nndFLFCAIg34obyhqoMGfz0hzx2/8CJjCQi1pQ==","shasum":"570c794aff1cee0e0bd14625f8e19c7f429d4112","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.1.1.tgz","fileCount":5,"unpackedSize":5506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblktfCRA9TVsSAnZWagAAqjsP/3NOU/uVZPB4MEPLu6Ht\nIKlq4qHd9AZzH3SG3wSTUEI2VpRsgD/EGNMKWP28Qy2/GjmplNup87fs8eZX\nSe5wY2bGEy7MwUpY8H4ktT6xLQX3CLMcGqODpWISVeRhgBquRLnsJrDlvjWO\nD+9AweLlJ9uNdvwFKZ1NrCz34Qe/n5yYi/yVAvrjK0MFbMVj1lfEek4Ftspz\ncuhH7eXrxU5eJTcjasSN/XWvOLDjxMliNmdW7dRUWo62pydqVtng7mWXmcno\niWEIzVc03wVhtMlKPw88+l04lN6Bq5PGuSCr2QGcQembLLWmb2GUzOilX3v5\n+FtEQ2uYJpSCqXmv6w5QptabnQjceIxKggH7NVq4AokwKA7xasstQbFqAyK9\nrR2LIXtaHMTNc5ceJWmgaI3GNKpGSLKpfM2zvzHgNO8qC9LmXv1H0BukXqSW\n+si4zrfqA/q0qWtmblh2uDdKK+KMufOyZ9qtWmJJivlw35ExByIz5R9PVzRI\nC4RdEyBAWMMmfXmNrIvxfN6A3YQ/JDyTeJw4OMJ7dj0evPJZGjyiSniZT6SJ\nt71HvjS60jfix0+P0lr/r+4KMwWEdZ5/2bgDwVaza8ZhyqKmn8yBv7BQw9Aq\ntyosvu5D+ArIwt9CTiteU1yBqFQqa7s4QKTPJ+BE4kbmGDFT5AOspgKocCMA\nkxff\r\n=XswU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoV9vsxjKOLzsGeG5d5dchq9WAHE13qhnu33jbVvM9eAiEAt+AnQ94mti+/qkTc1GKVnpAvm7nwJezV6cuL9baNNc0="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.1.1_1536576351071_0.8433018551322287"},"_hasShrinkwrap":false},"1.2.0":{"name":"typescript-tuple","version":"1.2.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^1.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"38ed94025beed358c2ca1b522660464e78de1dc5","_id":"typescript-tuple@1.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-BJiKJqEIFS05RF9XZNs9vgsKGsYNnljdiXTnnkRe5FEjlwil3LJjPmWKXA8w7FaUl9yukfdiYGyvJ3BZLYq6/Q==","shasum":"4cbe8fd46e066153d5374ff1cc21e0a4619229a6","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.2.0.tgz","fileCount":5,"unpackedSize":7082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbl8J/CRA9TVsSAnZWagAAgKcP/3SIUMCxCg/2jBNsu6W0\n30KHZ5ocT5qBzrHKJvkNnHiJL3cvP0eATg+Wbw3PTWwaSUI1vBG243muml+a\n7cLy2aUrUcAMGNr6B4gn3M1V+kl6nGdPEubi/ulEr0jvDQjzFUgsCVSICC+I\nrfC+sn7qKjD76HFmskHQ91eNnMIXhKKGIWxKsVZDprES9CXxUZ00Gz4ZS5d7\nZmOPdcZNZphUIrdzZA6AmIx3lunCx9/8sBj7iGvED1JcNEhyfwMH30wNxQ+B\niqAwkBZyQ90KxlUrnO9fBVm6osqJeqG0C93xObT07r8nzzJMmNm1Ng2xKncD\nXjKOmrw3Tt8Q4HosgwHklzJYCBBQw+0Hb9lp2668K0enZn46bh5sjvQViUga\nzljlKQ5jXiWIBYnjCR9qdUDFcnl8uI41521E+vcwM8dlm2yG9sQlbo2GABM2\nbN+4OJ72qwwbR8hR6FUGZBnmBVl/B1NQSkN3U/7LQI/rXXbKfd9sFB/udy/2\n8a1Od1NfRqQxcci61sSPsnsGEpq620Vz1sCB/23Eov5R1SrHfKqMSIiHrrav\nW1pm5AcFAF7blUl44TcVC/z1dwQ0/31VMC29KTKPWOE/XUZmBMYnsNFcUp/z\ndg4wXscKnCZGkbvozgHhvThuYr5ZYB/MnBFQWmx97mc4c8zk5Led5sDApzhz\nna/q\r\n=5+/N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDArqAYyBw4eKDD1RP7MIpD/AyAiooLntgeVhPOczaN6wIhAPwtYTWbvdpj6ZCxTRrJtMP1PM3hZEjzcbZjdDQsDfky"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.2.0_1536672382398_0.1319641747197886"},"_hasShrinkwrap":false},"1.2.1":{"name":"typescript-tuple","version":"1.2.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^1.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"155f7e40d73e1d36cc5237c01cf55522a6f5a5be","_id":"typescript-tuple@1.2.1","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-qdTRLaMjT+WsDpk37R5f9nZ4pAFZvi07eLwWtViJtj/zdLqHXLl/1x0lYyUhcruhtcU+3o+JixD5gq/ix1F6dA==","shasum":"ff436e3f0471045aa5e41899e7aae07d896ed551","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.2.1.tgz","fileCount":5,"unpackedSize":6974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbl8cgCRA9TVsSAnZWagAAqZEQAJZgydV0pAzDKAYlPzcl\nEcVEosgSMA2d80X7KdnKYYgm/VpIE0xQYqf2MxeaMG6Zfp1t23INMoFHTa/b\n3297DUKG8RHOw+Wh+4rs1qjaUQs9pqwI1oJVijHcDoBV/41R2+yqkIz1yRuf\nRCOjtRuY4Jo9J0+B2PveN10uQ2ZpTjTPDhvXWemShj+eu+bTJ6iZp2Xu8dSM\nr8WEJWMv4nDAlOMwQuUBeb6sX+n/+lqbQV7GKCcR7xAVvv5eWNGFHHoxC9zc\ngd+Ezoj06e3m8w5/g5fRoQ1bup2n0gqSsWVfZC9Nz/pbyoMQLX085TEvpMaZ\nzWQzFUy6Gyv7oESi3Z3g1rAor10ObXBIIBFSgew4G/u3etHvEieB9jAVAODK\nKqbz7KdMyFHBZB7EEossTyoBmohD+xFMq2vHuoYU6ENqksHxEaRzvmhfo1DE\nUs4J3znker1Bm5EPjYD+guuqTcEusWaZD9KcQe/fnk06mYaX/kUtkq8+h7F8\nfNRYG2eXcFnMPymRfN8nqvhnQIrB6e09r/I25OGHAB/ZgB7vfBUYkEwwrTCN\noKNpgRtl5Jt+sg3h7FCHWsmMoIsQIGyDuEFDH1oLv2klmtAdNGv6CzHnDv7E\nj7jtHGoep/m1cmdC3dfEti6zpCfS8xac5fEz3IrIGM5PiT/zmKZX89dHkcKe\nce8b\r\n=OB5P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpk+XlW8Ch5Ru1xXXO3O/PDkwjclUjqTw7nR/C0gJPWAIhAPxnwNTpf9EokvC1OjIZjOBHgRvU+fQWKrcpO71LSP/Z"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.2.1_1536673567373_0.7876217994518979"},"_hasShrinkwrap":false},"1.3.0":{"name":"typescript-tuple","version":"1.3.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^1.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"6cfbbe90d850bf63e44d0b06c06d70493a427f0f","_id":"typescript-tuple@1.3.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-gCQzxU7uMXfJemxO/eARPYO/jqqTWKVRHY/MCrB4ur/P39D0sAnaaHXYAKDYBZSyBwrMC2fGcbsdLsmKYbXz4A==","shasum":"b518c74aecbe936ea51da7b4c06799f914d520b0","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.3.0.tgz","fileCount":5,"unpackedSize":11262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmQo3CRA9TVsSAnZWagAAA5wP+gJ6rIvvOZg+ZLzlx8nJ\n26KzCTLXAWOh1ek5/CEX2y8EBW7IFshIXe5/C+iVl1XRA6fbWHWHfsAvlvhK\nDataz3vazf0e+c1RzaYS/2umk7zLM31UiUkaa3z4rE16Vx6F/2MDCYv90e64\nzgIsj3KCIx1Iddw4Eax/SmSOwGWv/TdG21mDdIwarM3VU2sWi8mErcwsbHDE\nzFJKlcbyZO5fHH+9Spza/d//+RCeoiz6qJlhmFQfa4WWGuC6oRvh4SUZUMEf\nJAqHsKZbAKfvoJud3DcGO8rM8sobRm/ITBgqQm95Gq6G26CoK/EEXooaLzum\n+ebdqyDRNiG9ARtgG2Yi0Y5H5LdI55sMo3tRf8t2cR0onJMIeyco++cry6OV\nG3r/eaCJrozdAiENre7OJvKCEgxOzq4ubQOpy5jxrKIAuayZtAFjuWDrDq1w\nTarBVuP/+FSzwfqZRKlGmt9cR2Nww7g/Kd8o6R2jdLRPvn7OtPSCR7eRIdGQ\nvMMyXOaW26TVMe2RYg1CaFeF0LZ7zW6plU3N7pk36700GfS/PKRmqUsHtBNE\nova2fdxvHLm4dboNNpRax6OU1/5QjJO5N7FsKIJAoI7YA0EAA0bVKYTNwBYE\nlUvxr02KKyVyrxC7U3Nqeet/WBOliiqP7G5rFp9UlNT0tosRVGyGz3isdpbb\n0hPq\r\n=jysY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYgP1ljE338LXhBIV6l80Qz8q/8nwTVzlPIBBMw7AGRQIhAOeKg3Hf98qrms5XRcpg77KCPWob6ekyARAyUId+t8cp"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.3.0_1536756278474_0.48184153143860353"},"_hasShrinkwrap":false},"1.4.0":{"name":"typescript-tuple","version":"1.4.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^1.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"d8254641b5237fd60f12af2ef5d9227e7f2f2ab9","_id":"typescript-tuple@1.4.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-z1Mvrdo8ZQC0JD65KgwUk7BYO84NsvHoTupyqvZ+4PTMzVBq9VR0C40+m65gKZPTuoSj7gKXQVXiU0hmEt0/MA==","shasum":"c209c9ef5670d5180ac5bfa12c9776041086a9f7","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.4.0.tgz","fileCount":5,"unpackedSize":14957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmR2UCRA9TVsSAnZWagAA4BYP/28EqbYbr9ClwCqfrzGy\nPPNAMsBjMA9OnY8npznHXS/gX+F0jhv2DHQ7HvF18oxv9hb6k32CsbeLNCIK\nt12E5Tiv0dW6lTeBIz/VMDvhLFFmtsVw2NzDTUijOaSGc7IIscYtB/8fMsc2\nd4tjATPJeH4iuVOplOEvXOU/iq2virDckJ3rlVR52t9uM7kbYoSA6EB8UWJz\ncTSCzUQaRqEBl038xGc59yh68RrX59Meejush/zg7a6hlHqN0fhasxjG7tv0\nJyWHV0NTk6HJ4IS6ci5GgR9wGa727lxBkapSixkfYuZO7B8X0+6jOvVyl55P\nAR5eEORObeuN+Lxg7wsOEYMY7PjDbHfqY8zJOPTEfQHN4/XYMmuD2BB1+P64\nPymihtpy2lV5GzfXndPdJoHS8bsNmDRhTqc1FyK1JJ7BPf99RhwrFEMRxPTG\nI/mdtZYl/Xar4G8tER84jDVmGLFKeGuzB7OfTTC5mkWejSL4AAc/bhf3L/is\nWSQRRYk7eG78S6bLpGx/lg+X/WBluxyLLYmprRHdD5UGxgJqOOsIZQMNy5Gz\nPgopi8MgZ4S1Dct0g/iA/5q2kO9ZcwZ3udq2UBBgMmNL8R37Cokm1kLxguo/\nrCRvjlC9k0vwpJy4twOkTCgVIfZsZZCl86N6Aq5G/uaP2HOCApJ+FFfE5REI\n05pl\r\n=iRI7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDF8Q/f/3ugHJkVmm/nNe99ZarES2xuPQ3Km9a5GMMzewIgKkw9BHYHW/9nrOAN84HsTmLewSUMPG/h1h9uuw9Oojw="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.4.0_1536761235531_0.6395603761448749"},"_hasShrinkwrap":false},"1.5.0":{"name":"typescript-tuple","version":"1.5.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^1.2.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"e22a2d2eab431d6175cf072ad6c5bb038ae3cb72","_id":"typescript-tuple@1.5.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-yxjhz3QFPq3wLBMMKGvKagfvCsxY5qUGBFOVtCvdXNKFdWvQbkVdBvI2CtTACubJddZHPzBaa2zvmkm9TBt2TA==","shasum":"6e0464e38bd5d6ecf3c1ec7c59d38450f30974ec","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.5.0.tgz","fileCount":5,"unpackedSize":16353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmmUgCRA9TVsSAnZWagAArNkP/3yjTqpE+nlLacr02KHp\nGoGC83hb5hx7VQszWBSjI/mr9C25Ub74RqTAGfY7IPHwUhrBVAJuc9cM7uHW\nQ2AG60EvDis/5Rg1+h9gFpKQTYCiYzmIt+p8VFu4onMBgdbXIJxClIgNueOG\nARdFF7XnYNI9XPWoTIeRvfvbiKTfr+leOVPlzA9pWedzzVIqgdOf7KDWQkGL\nXIWW62BV8DKBH4OTaQXdFtUv6pZNwelPt4fddImaVaPildZkdakH+abq3nSc\nvGoKo39FA7qOKRD1twr5aaEScFjkFsFH2lALOqn3ErHn84WUIuMaj0fRkSyu\n2fzFDyilKyuEJpslFWM3Dd/IcJLznQtSA+/cKdAXhWJv18VVOZ0p8BODj2yN\nMczbJ3gFYZbvWwwRRuKoTntuDM9S5mooGQL9PzjJJMrhzncHYdwhBuySah3f\nAnz9hKNoHJ6YCEWdzChhi/9FoOcI8KAiEi/ki4V0q33vBaDZY2dfVGZiOp1S\nkk2zyz4dijFerHjCyNiwOn8gPhDey+7lJCzu6K95PbM0oR5nXAfQiFp7Qg03\nEMOemS+N4qBm9VIT3xtV183OGmwMeAq7vX+SjzbP8w5EhZjG5PfIZ5xUCHum\nMKnZuPumEULpVGcAwGRGGxNf4cX7jDb9ZXYEbGgKJ0t3ZFuZhT7hQFymUjW4\no2Ma\r\n=UR0A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC2kYB4zuf59+3Bade8G7bzR4wcfxXjqGyN+ww6SXpk1AiEAgc2jWa725b/8xPxce3HMMq1OcVeWP4tjMtZVenA40h4="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.5.0_1536845088240_0.08019090038177734"},"_hasShrinkwrap":false},"1.6.0":{"name":"typescript-tuple","version":"1.6.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^3.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"a41f8c9f48b8500570f554b0ddde97babc13df87","_id":"typescript-tuple@1.6.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-p12MToOUOK1tqbd7d6rujWQKOJ3oclNkYMbsGORihFfiqb2ZQ9oWqFLZQTFINYEO39RHdLz0HdAV8HUksmk/PA==","shasum":"8b1e88633b2b82cb98db98a008869b6aa60273f8","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.6.0.tgz","fileCount":5,"unpackedSize":16352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnpoQCRA9TVsSAnZWagAAJvQQAJniUJIurOAx3gzoerBn\nyFClY0dm7E67yEkC2cw39HrbKOyeJtHRXKA9o7/6F7Yku78BkSKzvWTseHET\nJqvW4fOX6MO2M8EJYwF4orIFdCZbuFg6OZaj69uRIXH9FdOTWJ8uVT1m3c94\n2zYTvv2EyQFcZ+EhDljv0rzsSK+auurNsEL+tXC1zPlIhpjq1dSZrKecLsLU\nAYsvAYNLyvhQf4/w0nhVATc41p+6A3CMqqZxQxdIIib8XqtXmm780XUbEoGy\nwlYKlUdJhN8dKeoBq0yP4S5GYOw/r9BgmkF7Kb85i/xSGgJplJwkyrquJ0wx\n4jwYlaRYmIW+neryKtYYXfndGa5J0sNi3sFUe49xFS89MPh6RLTH2d8OqRtc\n501fP2VfldfNaue+YgvBvBkN/fCrfxwjdSua/sc2+QAPopO75BSJdgxZEha0\nu2yoB0LQa2MLKLCqAE8chxJstTOetNQmOamdiDokPTMAAkYmCV5qTMug+Mgk\nyX/iIUSKHkd0AYR/5xIgxYsm+mgdkRGHhABHM3gm+19IJyqxTKEn9ycG/iFG\nzdwXrYnNZJHj3secmhsmlN0AmKIuzxknBxO1coFdwqpJXAg5huP5+OpVFCo1\nsPWOHbBpdlx0tVEINly0gAdH+M2A/uKNiVd9vyW5wELT+T7NAmWlu/K9a64s\n51Yq\r\n=O8zc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICmqLi3zvRDGZuLG7WCL8tGqWttnpHeC2715xwLu/k0xAiAH7ihPMJN3VPn0Vu3RDAwG5Wu26SUbvhSP7tT130koXA=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.6.0_1537120783956_0.05392478956821245"},"_hasShrinkwrap":false},"1.7.0":{"name":"typescript-tuple","version":"1.7.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^3.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"dbb98bd26db733f9f7f49e1a6cdcd45ab25fd11c","_id":"typescript-tuple@1.7.0","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-AI23AtL2eKov6FW2kwKWENczx3jEV18cJVnMat+99clImZIMNWFxKz4zjyhNUcYw/YjBD46mGDLFcnda5PMwLA==","shasum":"6128639e5c0ef76f7d44e57410852b3421317030","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.7.0.tgz","fileCount":5,"unpackedSize":17412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnzPVCRA9TVsSAnZWagAAPNAP/3G9H31s9aUyXgkmj52h\nH0OqW+i52NRX+JCpnPe4JoxkBFzhU70fo5XELIBAf5fBzU7BchvQKsryVni7\n7LE1EIxwFUFtT2uFkge496KJfqgdi+mp7Fqwu1mMtDlZCGSdC0FugeN0PVjy\n8amG5WIRYxpQdBey/D0QR4SUsmMq8hQaYTMCSuRgWjfu+fLQTCgJ1xnsefAi\nSIDfj7pWSFYLXVIe+OzhPszNG4hOQqkLvYCETDfW2sQVidGdnOdyggtOv/zC\nSxF/7zqr8jsH/s5vBEaa7sfWoAPkz+8oBnT5BVP2us6vdZZy8kT4kKscWldY\nP96HARcMWc3Qqh9Pxwzs9HHttbb9BVyl/KRdWCjhtIDUfrL+b4yG/BkclWU4\nQL7UhryUFG/F/+jQXvTYzthm0XmlS+iu5T/ft9J1ds62hAIFs6QmocXtnc4W\nePZEUHqqGpifSiq9elBciJEyiOIC6YXNOqTYdg1WITOPuC/daipvBLNlr9QG\nuO0CDFYuWqXl5semIvS6Te97NdTWiREc79XS/tl5ID3WJa1ktLO2jauVuowb\n6V7lFjJouR/ehLKvVFEEgTAhdIyMVB5aN1D1t3ayBWaCsaHGjzh3PqxV14cu\nMCWwd2QfcHe5QJezKXIPUC6NmejbESARP0Kq7bKeCCfqM9vEskXwOv5HUO50\nV2tR\r\n=fzwJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF2QL7DqrlhdbIMorTePwrBz3Oovc7QWY2ikXW23btZAAiARyhl1NV2BbTB+N6ylQ8PJb22UbeciSBjGyMFvIsfdQQ=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.7.0_1537160149188_0.8954589992268303"},"_hasShrinkwrap":false},"1.7.1":{"name":"typescript-tuple","version":"1.7.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^3.0.0"},"peerDependencies":{"typescript":">= 3.0.0"},"gitHead":"cb342898e126549d3ff3650f96639ab24f511915","_id":"typescript-tuple@1.7.1","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-gtHWuak3nblmyfqnsVha2H89xNLaWLi7Q3VoUvEfzXcfj/5do0ctMfXkk6GGayI8e6bhuOCsmDwaiVSl+3v/kw==","shasum":"d274fc84faa02b8a43b476450ecc4ec12dc4e669","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.7.1.tgz","fileCount":5,"unpackedSize":17412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnzTvCRA9TVsSAnZWagAAAykP/jcVihFLqHULhnkjtyvQ\nVYdoC/V6m1pH+pVRKfXrO0QoO2XC6nfkKB4kQLd2sedOHsGP9SF9xBix5Jr0\nbrGZ5U8ErN8MkWERcShImmBMY6puWDmUX6njh8DiHJFQqgYqtTOf3+ZvUmvp\n0UR8cDT3zpO0un/z9KSG0J3A+iZdxJfs7U6ESTNwAOnRC4kH0QHbuQa6uOyD\neYBXFvQvFAHVpsstsvmW2d9dfx0cdSxYQNCLF821VquZp/k1zjhSss7Yb7GD\nRxuvWXHebJHlhZKeUNMja2twDbz7aH6WdWXUkIdF4mwgDRm0wYL8+FTf9EJr\neEtrzbGzB+6CR0OECk5Nm0sAwNMzpVvceUN9NOQu3uB7Tw8yI0cj/AWqnmsx\nFSkL8qXEaclrm0AgCEonaDQA/oEWhU76KRj9vO+kl9VEzNlPLU6+oY7RWewN\nHz5qwHKhUtc5tMNLGVUBHfrPD/GzBbtSnOhWiK4Vi5BoPM1RPXLVUrk2d396\n9jH11Vs+MAkZkF2CGeZWH7CuIMV+isWqYsyw8i6Cp5j9ILkpcFzj0t4bsFh2\noH1H2NML6mMKdY+FyfFXBLXdIzI7mc3KQVdQyE6hiJR9u/Aipdupe5H3tkbY\nVJ9zzplhnusEhZmxlYPXHkwmToWgCK5Mmemekg8wyml6KdAPuEqVWH5Fa0Y3\nBUOp\r\n=KX8b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTSgJ57RM65WDnDQC+aZEHCS9rLEQxctnkMaoIMA8EzAiBA6fqWVeUoRxaAzh1RDn42B5BUnBPJgUN6eFwtabz5Fw=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.7.1_1537160430816_0.5213219568800866"},"_hasShrinkwrap":false},"1.7.2":{"name":"typescript-tuple","version":"1.7.2","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.0.3","static-type-assert":"^3.0.0"},"engines":{"typescript":"^3.0.0"},"gitHead":"fbb85880103431515366109c585c1d6f74dca6ae","_id":"typescript-tuple@1.7.2","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-+7ou1AuwISGu1OuV2JvQOYtAhT4AEAt0QGGkxwIX59lIUaJyT1ZGiFDvfE0DTwPU4n/svSX10UB3DuI1gwLuJw==","shasum":"7dc92a65c3847af9925bf168aea92ab719b3df03","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.7.2.tgz","fileCount":5,"unpackedSize":17401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsL8WCRA9TVsSAnZWagAAI8QP/3QGUdTenCJuWhPUyWcL\n5/HmGAso+2qXFeL0DsXnhxzhl5VkVhGulqAGwiqQUl79KMQR0+jp2RUB06zu\nbCfC4URqK/W8c2z61DOuEpyqmrg88XRrlqx47kckrGJr+qeD+kHQtmhXqohs\n7k3xeT4COkBi8NQWWvoQYim1nczAgFyrof/dMFuRSAAfropETXnWfp9vCEuC\nOCKu19DZh2DxpfQ6hhQEMrSAK3f2UXLTQ1IxqOud8Qe0rdBvm6uhaZnYk25q\nBWfFPnLfBe2qOwQigj6ztEm6T0PID6jFfLy3gjJiqEC2vvEfUnjBM+Jiw23j\nTuEDsNbI8i2GLmRbRwrkw08fBs8bk4llMx62C3X/KJgJgcN3iZalPt085Xo8\n6a2AHSf6Fx4FzLNWZ0/PZ+/RDyZ7loVsJmw0URGvzHUDhgjBAJXnHY+S8gsS\nanwT0u1QuEhB4TR2I8kopYDcSzXHvUPey/WSaLqzGnfEg3R0wgQmCnvqz3TS\nAy4DBRvnY+NU7AVYnUT5TUEZIoqxQcAlHaO9MRDSfLT9wUWavc5NygUUPfra\nhl7ktiKyQ24foZvOYc1VhaZSDjemUQzAdd3eJH4pks9xqp8qcMqYKu8SDTcq\nduOsu5FzL/+7p7k7GyZXS8aMuHAFVHEVPb9bvdzZCnrCjsTIcnj9BubTKWgR\nne4Z\r\n=lhRd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2NGUuaPpczYuKYfCJsSnEDACBZIjEIODqwrou8gMbfAiEAxMex6kdelSsykwm4YQINfdqxq6WERCZ/yVwezEiqPG0="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.7.2_1538309910309_0.18813116181158973"},"_hasShrinkwrap":false},"1.7.3":{"name":"typescript-tuple","version":"1.7.3","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"prepublishOnly":"tsc","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.1.1","static-type-assert":"^3.0.0"},"engines":{"typescript":"^3.0.0"},"gitHead":"7cfda48569e3154db1c5f1a9e5c2c5ad5377d236","_id":"typescript-tuple@1.7.3","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-ygCTfD6CX5ul+J0sZhq2MSouMNAeJpRXAFkYPUZomv457KWg15DuS7n+ubv15LtbX27iVo6DkuiX/5yyNdBvVg==","shasum":"6afa5cd4a461a7d011b2572a26f05b32112fb156","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-1.7.3.tgz","fileCount":5,"unpackedSize":17431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsMumCRA9TVsSAnZWagAAPxgP/j/EHeiFVEMm27mUhw8o\naAlDjkP4IOmt6772eyW7M+fIGscAamt5p2wjilMDif1OkHClDLwYrESuKZXf\nk6IOowrZZy/WwKgOOEDllY16nwSITWDnETRr3Wsrf5Bkxlf1AMnJVjlHgV7y\nRttBAxgvbnNgnkVxxc6LlHoGZoaJMU6hlA2lmTlgNsAnIcg6nmQiUHTm6dqh\nYd8pOg9EDuy/HNW+6e62RtBI/LBQVrn1OaT3N/7cAerzNX6AS77mQFSm7Qsb\nfScVURZbTdSjO7wePHEqrU2e+omsaZbxPcDWHrB68+GEqp0kBaTYz8XoFch8\n5i1hrNT7QMiRx1QRs5nRUgPjL0SW0N7iMuXndoeOTyIS201St6EuDuDCuukR\noQZURjxUP+OtBzzbyGVC05yqz41ZCwl7ZRJ5TQOgGbjFxrugLcs0pzbFZR6P\nHlNye1f1H1TuClktP8iZ3qL4b+YqhhUJlKynTsr13XGKf0TyCCRe/uD8bK8Q\neJuyDC5hX/Gl/UZ2hy2bf0AACOYiyzD9DS0ct+3CVNdg1TYjN6cIJYoyWmyZ\nour+fFUv25218dXPoYB73VB80yiXj+jceq+6/tE5Bbf4mjCCcAnxW2Bc2B7v\nET69+9wtkJp7ynqn3Zt+PiEF+iYKDdHHwifYD48PbumkzGoNqTDzfE3LRy2B\ny6+Q\r\n=Gz2U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAgK9RlpBlnjFSIeL57Ly8XizK1kRJXTOGwm4DXrj0rLAiEAxTQWw474SAZAyyRTvjrOy8qNbF5Bum6J7YF0GlP6WLA="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_1.7.3_1538313125974_0.24835688820709567"},"_hasShrinkwrap":false},"2.0.0":{"name":"typescript-tuple","version":"2.0.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"tsc","clean":"clean-typescript-build .","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","devDependencies":{"typescript":"^3.1.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.0.7"},"engines":{"typescript":"^3.0.0"},"gitHead":"2d94b13694b9912e816423fde811cd7bd0a667d7","_id":"typescript-tuple@2.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-NbHDXpz0QMUnfTibv0HGtAMXt1t+p+H4RCFjiYVE3HJnstZDDZMZaOyIYDgztUzZcIz/y5W0rtLPTRtMPfU7eA==","shasum":"75aa107fd4847aca4cb51abfa4a5af609d98850c","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.0.0.tgz","fileCount":9,"unpackedSize":17705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtcJiCRA9TVsSAnZWagAAG34QAIY8gtBNjY0ihUpeLb8J\nZBGSTRRLsFGJdpMa1Vw7m3y/+3CASQXyHX+cijFUHLxr1deWiyEVnX0MHWId\nCTsHTVLKR7r3G3jSqbobeNLY+eeNs54ki0z6v3qZ2SHMdb5xMyA25/xk1VpC\nffxZj5VItx8CUJqh/JIErBt54ZzOaL8ALmzjp1TWbEswtyJ7PUBw1oX6/ki7\n9FK3PCsm0uBOJHPHz03BD94XA+82T88OxpKwcZqMIN5vNi1VdjuRlwqvQpBm\n04aJcoVFNKOxKrUWi4HaZGeABAxoOafNtBzO+PK9eh/BdtdlpT5ezQkypgXG\nIjBy6+OuYEhqDdFnS31U+BMRXRG/tyY9gGKSSYOofy6DqR1fEz+ElOoNwcJf\nmkx25PMPK1FLseIV3UkaHIHHuM1/hXqcqaJiRd7CMeG+0jiAnJfjJLq/hqOI\nC9MnIfbAmCRPGUKnYnHUjv8/aSxpyJA7WFWJUpD9pWdSWLpGkKrN9tM6bJku\ndInCN5lj8ZPqE8GVpPc1qk/uiEfTbjXzgt4Po/PujilNJStbep9dJbcrFBJv\nRf3Kn39PQFZoRhIDI1P3F+gcIxSTTA1YJaFgxKkfwRZhxvkZClrr4bsTJzT3\nP8X7acX+DykhGxpxtqVXuCLuTmwWlI9M5MCNkxPtTAn6YYTEV/Oigu8Cbviv\nYT4H\r\n=kmP5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBSHntEU+hmZNiTTLN65jtl/GcQPsBQ9tSdVxhdBoMVwIhANEsxHAODDlqFeQAUTRlkJzzv4CKGbb2fFPZvekFHQCp"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_2.0.0_1538638433971_0.36037550762769466"},"_hasShrinkwrap":false},"2.1.0":{"name":"typescript-tuple","version":"2.1.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"^3.1.1","tslint":"^5.11.0","tslint-config-standard":"^8.0.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.0.7"},"engines":{"typescript":"^3.0.0"},"gitHead":"3d31420d58dc7990ab5cfc2b00564f4f2341f7de","_id":"typescript-tuple@2.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-yoi2Bsa/OHzGh7PO5zpyFj6g+0dUbR5DbdQLPFkbEulOImQtCliShqzoDpAjcpsPCfibhr2Q92y5NqYzYkaK6Q==","shasum":"22f0c5c605ecb659e8af310152e4f5abf1f80bd5","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.1.0.tgz","fileCount":9,"unpackedSize":29477,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmJ6hxgcIo02gWeoZwvUZqvdF67WLdRZ5LMAILwx64RQIhAMCf+v9OcykjOewyw0nD0FTXOldFkW+HAtoY/KZsTd0/"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_2.1.0_1538660403350_0.5152496275571372"},"_hasShrinkwrap":false},"2.1.1":{"name":"typescript-tuple","version":"2.1.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"^3.1.1","tslint":"^5.11.0","tslint-config-standard":"^8.0.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.0.7"},"gitHead":"880494147e1c5638a3335e8bdb7dd7ae4dbd1b68","_id":"typescript-tuple@2.1.1","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"dist":{"integrity":"sha512-7jOyW+a6vGSfzpkgimnldfkvT5FEY7hURzdS8gXHBXCOZ7NZRqoXNvsEmkNNhPLbdXUbZexjFXQOz1CSn+7stg==","shasum":"b8dd1f2aa0c13c0bd2f491aa4d416c6b22bcb6db","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.1.1.tgz","fileCount":9,"unpackedSize":29430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcR/9MCRA9TVsSAnZWagAAOYAQAI+oWwT1immgzJox/cgv\ns6x8tAq9v8DMkZtCdl6/szQ1lQ+SXCvuom6JG7dNB+VMgTsba1SdcbsvCk2B\ngsH5kqfd/qqHSTAlH227SbVpKodzpxXrvsE/e6SAWuRTPsrdgpY+WtiLFeF7\nbNDUWNRNxRqM+5YjX3xu2w2LFBQL1OZdAQILxB3DMAnzm1jwgNdUYxRxaRi7\npu3Dyoo9p/lK8g+ASrdKrifqdEiDleADEeTVegNBaxDPgjRVS/nJLk1HY/Az\nKVUG9F7gfVZs5Y3w4GdXcfrIVigHDwA7OIlWwen1mRj04WGo+E2XXKtJUhVj\n4UmPOw+hfhgqpVepTs6lxV/1jB7d9zIlG9rew7dRyrduvBNNfmUKXIRfEVna\nxy9bzZQ+Dfr3bzSyK/mYQPOHYyGNHut7dQWzKnmEL9/2XuvffAfDFWMB/im6\nX1SGlgasyFjAdVgOdNwBydOhaTgVCCXEE0gx3Z6v9aAMFsNaidk4bKMD+dTo\n3N1BYXmetr9mFbSAhno842m2TfyLDxuriO0aRWfaCEAXAwfB1ZIBcpkhCdcI\nUCFDlmn5XeXWX4gGcxyMaHFGpS5FYygTngBogtwSZA5WbNXsvE5G2auf33lQ\n7P/FHKV7OpnRoKqL14WTEwtRyR/1Qh0VHcFPp6ea8VaKXQDlIOIshvT+sqzU\noHdQ\r\n=w+xe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFRGOaYDFl5ti3K8mwu4hqLH8F8lmLUEcXYuV/Wk9ZcGAiAvJFF9x02OF+jO07aIYKeeE+94h71rC84m2XIhi82y9g=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_2.1.1_1548222283813_0.42726475006474685"},"_hasShrinkwrap":false},"2.2.0":{"name":"typescript-tuple","version":"2.2.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"^3.1.1","tslint":"^5.11.0","tslint-config-standard":"^8.0.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.1.0"},"gitHead":"4ba291e334fa99bb4db64e7ff0a5f09798b67215","_id":"typescript-tuple@2.2.0","_nodeVersion":"11.10.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-+yHDpvj8Tc4kdyiM28QXqEmNJeon4SPAO2KrBGYDaYGkOFUixb9HFnNf6NJ6Q1XCoiwGm3be20SZBTIkHMLmtQ==","shasum":"89ef1212df45a0eb13e88503271be56b48aa051c","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.0.tgz","fileCount":9,"unpackedSize":31111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfp/8CRA9TVsSAnZWagAA+UYP/jRDB+BlupEp5a7xJi/Z\nozeehRbuln/Au0KKSpY236rYTCcoDI+ZTSJrAiDWL98ugOkmWdo6cJmRJUjB\nA4wfN95XHNoj6+cj3Zp6pyNVb9jXITo2Dy7zab2dR7gccDCwAVtRIeVUcw9f\n+gfi7Kj5+Z5ShwMemND8733FmMT9nq7rNeRWDwe49iB/E58BtECo4bKempK9\nkZMEip3hEnIoSDsh559M9XnjaQMErUq+oplQLa70lIIXL7ColLAQSkL5wqVn\neyy36g9fKmrmQjiW2Hintd0rCztjCB4ClDlsmXSwJP5AhAoG39fOxiQyolgH\nIUn46hEexDbjfFhY8ixbBAshe46WmV7udBMcCCOh9UZqv1XJaRoXBm5voMTR\nQe5D0lpSs3KLaq6nGAI5pmJ85MOUYeVyig1oE9wj0BJgAOTyB1I46fByoAQk\nHDxP7yn4oHkL3iiLeuHSf1TnY6XtRRFMaKLApYero78h+0mR8YxvAwF3Z96I\nNBJiACQya9Fy+K6gMpGby8lrGOKwhpqYK6ECFduOU5yQUnjNHzR7l0YWt0Te\nY1Kcf+tPgJzNcEAbgQ6GS27lA0gkJhUTIH8vaHhm1kk0yYv4BAP7PUFTXF64\n6P7X4oWExcO9Pe4p5SeIO7SgRMtukdsPWzWDURZ1L/2JEgfP+koaTTjYAguE\nWugq\r\n=XB7H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGqbXBr42fR4Tt3KLzpP+ntMD3XTgNVGdZ1gjAdEKE0XAiEAlnrevAUBM92sT2m+vWDNJtydeQsk+YHHdUtiqqaxmaE="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_2.2.0_1551802364189_0.1612014923807712"},"_hasShrinkwrap":false},"3.0.0-rc":{"name":"typescript-tuple","version":"3.0.0-rc","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"^3.1.1","tslint":"^5.11.0","tslint-config-standard":"^8.0.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.1.0"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 3.0.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `SplitInfiniteTuple`\n\n```typescript\nimport { SplitInfiniteTuple } from 'typescript-tuple'\ntype Foo = SplitInfiniteTuple<[0, 1, 2, ...number[]]> // Expect: [[0, 1, 2], number[]]\ntype FinitePart = Foo[0] // Expect: [0, 1, 2]\ntype InfinitePart = Foo[1] // Expect: number[]\nconst foo: Foo = [[0, 1, 2], Array<number>()]\nconst finitePart: FinitePart = [0, 1, 2]\nconst infinitePart: InfinitePart = Array<number>()\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `FirstIndexEqual`\n\n```typescript\nimport { FirstIndexEqual } from 'typescript-tuple'\n\ntype Foo = FirstIndexEqual<'x', ['a', 'x', 'b', 'x']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexEqual<'x', ['a', 'b']> // Expect: never\n\ntype Baz = FirstIndexEqual<'x', ['a', 'b'], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `FirstIndexSubset`\n\n```typescript\nimport { FirstIndexSubset } from 'typescript-tuple'\n\ntype Foo = FirstIndexSubset<string, [0, 'a', 1, 'b']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexSubset<string, [0, 1]> // Expect: never\n\ntype Baz = FirstIndexSubset<string, [0, 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `FirstIndexSuperset`\n\n```typescript\nimport { FirstIndexSuperset } from 'typescript-tuple'\n\ntype Foo = FirstIndexSuperset<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexSuperset<'x', [number, 0 | 1]> // Expect: never\n\ntype Baz = FirstIndexSuperset<'x', [number, 0 | 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexEqual`\n\n```typescript\nimport { LastIndexEqual } from 'typescript-tuple'\n\ntype Foo = LastIndexEqual<'x', ['a', 'x', 'b', 'x']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexEqual<'x', ['a', 'b']> // Expect: never\n\ntype Baz = LastIndexEqual<'x', ['a', 'b'], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexSubset`\n\n```typescript\nimport { LastIndexSubset } from 'typescript-tuple'\n\ntype Foo = LastIndexSubset<string, [0, 'a', 1, 'b']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexSubset<string, [0, 1]> // Expect: never\n\ntype Baz = LastIndexSubset<string, [0, 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexSuperset`\n\n```typescript\nimport { LastIndexSuperset } from 'typescript-tuple'\n\ntype Foo = LastIndexSuperset<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexSuperset<'x', [number, 0 | 1]> // Expect: never\n\ntype Baz = LastIndexSuperset<'x', [number, 0 | 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `AllIndexesEqual`\n\n```typescript\nimport { AllIndexesEqual } from 'typescript-tuple'\n\ntype Foo = AllIndexesEqual<'x', ['a', 'x', 'b', 'x']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesEqual<'x', ['a', 'x', 'b', ...'x'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `AllIndexesSubset`\n\n```typescript\nimport { AllIndexesSubset } from 'typescript-tuple'\n\ntype Foo = AllIndexesSubset<string, [0, 'a', 1, 'b']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesSubset<string, [0, 'a', 1, ...'b'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `AllIndexesSuper`\n\n```typescript\nimport { AllIndexesSuper } from 'typescript-tuple'\n\ntype Foo = AllIndexesSuper<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesSuper<'x', [number, string, 0 | 1, ...'x'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `SingleTupleSet`\n\n```typescript\nimport { SingleTupleSet } from 'typescript-tuple'\n\ntype Foo = SingleTupleSet<[0, 1, 2]> // Expect [[0], [1], [2]]\nconst foo: Foo = [[0], [1], [2]]\n\ntype Bar = SingleTupleSet<'x'[]> // Expect ['x'][]\nconst bar: Bar = Array<['x']>()\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md","gitHead":"63bb6f70862012b3391eae68d9985fd28ed6ded3","_id":"typescript-tuple@3.0.0-rc","_nodeVersion":"11.10.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-tUXejFlQ7jtRTOlvYR0/Tg6UN1IrLLlVRvrNlF1u/vHL39/0wTM0SXr7LmyMu9mk/DW1pg1ftwTVMPuXZlInEw==","shasum":"2e2af99cee0703ea041adf78186a100f47cc372f","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-3.0.0-rc.tgz","fileCount":9,"unpackedSize":31063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf3jsCRA9TVsSAnZWagAAakcP/3AsFbWBl4zftRgU00Eh\nTr7I8c9gz90hM+1BKCsJPPtzfX8nAmG+aiPs19ijH/qN2FG0T7gnf668pNhj\nQ84xRSx95+ApybwlNAtrJavAI2R7q10bcYA6sPCQIR0iT33knsW80a2BNcHq\nAo5nnelyBUthZRjT+SY+i699TrhpjcL3iBbPopnJbqr/Sdzri32DQg3WX+Xz\nsnWyqCbR5zmcHQCEKEStPaMYktQnRWhKwU6Tgo5s4wWjmT32FmevMDy6K/68\nlm6JwkOcI6zqIMRVALXWn39RVhhWYOiAhoYvFJy/qb18eLq4n/THSZWYkD+h\nb4XtZorjcupu00yxdezSRiD/Nq56qtfZFbOchm10HSrysoBjdcA27wFeWla0\no5JQXxuXuQeacPGWFvZYbZb3x4oYePnMOkRcf6y/bnfoj+S36F7HVK8+ifgZ\nNwOb55VRWtyrwh3YOVlzDDOJZ1LiK9vEYGoEbipFa0jdP3fYBjhuMXTt0vpv\n+a5fkTPg60anuJMnjCcm2t9ZqSf5ndtkSbU+3lM3L+e2833fGJNaoN/vdtFW\nTk7DmKtIlltaelnu0XvUV3Yoo+RYgSJeWl7ocrhk6AGfj7WMmptN0+63BWX9\nXua3HaLizUXzsldfb7UvKKHpHUErlXbY1AOsUMxjIDVCvxStK9XAkAsNGM4B\nlvvo\r\n=LCDf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDd5dRtu3AM2Yb7xqo1LaY2+f05tL4l3CE3EjtU/hmv0gIhAMBWfOAw0xTpSizTl4GyNorcgoYK7fwFxqZj+XpzzrAz"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_3.0.0-rc_1551857899648_0.7164087005894133"},"_hasShrinkwrap":false},"2.2.1":{"name":"typescript-tuple","version":"2.2.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && tsc --noEmit"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"^3.1.1","tslint":"^5.11.0","tslint-config-standard":"^8.0.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.1.0"},"gitHead":"6c7c8bbc17c7ae0a31a4cbadf344660366b11254","_id":"typescript-tuple@2.2.1","_nodeVersion":"11.10.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==","shasum":"7d9813fb4b355f69ac55032e0363e8bb0f04dad2","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz","fileCount":9,"unpackedSize":31114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf3kUCRA9TVsSAnZWagAAHcIP/29bmVBGmOuuNCO+tPfU\nwYtEgoV9h7TAGcKbfDdTKjN6PH1lwCs1OlacXw2NyE9MjgVtc51bTqrcB3FG\nHXiWTDbpITlQ3HUx/5JAtKnCRowEnWCc4xH6Rxpt6MgOOxr0PHp3EpiYlNL8\nveop7d3DhnDGizNkHEy1gye/FDVAmyhzrw8m9MQy8yhN6YTcGCZknEzvUyoL\nC5KNwNpQ7LKDZaluK+Qn5odKiiburVvSPTKKmGOJ4CLpUw9HyAjuqSQR2hZa\nwCd1JbeMsT907VC++Qkp+wQkKVRMQqLJZazBUIMUP+hWqGBz2hR82z7IP7Zm\nfISFOBc+cTwaq6eg7jKfy4iHhlUj7QEWAvZZ7EngohwbnrYuGFCHBSLX6h1j\np2TlrSefWQ8U28YRIyIcC26YTY/GP5NZFky/xoL/M9JoVLcHtNy24IQscvQW\nczLmWiT51BBkLE2mf5HStp9ItTW7E56/XzitMJ3cLu9PXXys3SuhorboD/eD\nP5xVva40Hge+IuKV780QWUwe+5vezene9pICyucEIn/BoBNALzgb7AYejQPh\npDJXdIDubRFG0EZnbcd4DFzGofY98hfyLXtF2Fz371PDUe6DayLcveErCbX3\ng0IfoEXe43jxjeGSwXNrE8aOM15+/SNIWWLSkUX7cKckcbX+eg8dR1cAob3Z\nYUb+\r\n=z2Hw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRKumIy7yuVOOhIoXI3kgR2Te9XDz3r/zpgj7xGL6gXQIhAMXkjK/3VyVIulMuSy+pjzsShvCOWK8uXzePz2ZAep2D"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_2.2.1_1551857939711_0.5164417419337994"},"_hasShrinkwrap":false},"3.0.0-rc.0":{"name":"typescript-tuple","version":"3.0.0-rc.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"^3.1.1","tslint":"^5.11.0","tslint-config-standard":"^8.0.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.1.0"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 3.0.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `SplitInfiniteTuple`\n\n```typescript\nimport { SplitInfiniteTuple } from 'typescript-tuple'\ntype Foo = SplitInfiniteTuple<[0, 1, 2, ...number[]]> // Expect: [[0, 1, 2], number[]]\ntype FinitePart = Foo[0] // Expect: [0, 1, 2]\ntype InfinitePart = Foo[1] // Expect: number[]\nconst foo: Foo = [[0, 1, 2], Array<number>()]\nconst finitePart: FinitePart = [0, 1, 2]\nconst infinitePart: InfinitePart = Array<number>()\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `FirstIndexEqual`\n\n```typescript\nimport { FirstIndexEqual } from 'typescript-tuple'\n\ntype Foo = FirstIndexEqual<'x', ['a', 'x', 'b', 'x']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexEqual<'x', ['a', 'b']> // Expect: never\n\ntype Baz = FirstIndexEqual<'x', ['a', 'b'], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `FirstIndexSubset`\n\n```typescript\nimport { FirstIndexSubset } from 'typescript-tuple'\n\ntype Foo = FirstIndexSubset<string, [0, 'a', 1, 'b']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexSubset<string, [0, 1]> // Expect: never\n\ntype Baz = FirstIndexSubset<string, [0, 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `FirstIndexSuperset`\n\n```typescript\nimport { FirstIndexSuperset } from 'typescript-tuple'\n\ntype Foo = FirstIndexSuperset<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexSuperset<'x', [number, 0 | 1]> // Expect: never\n\ntype Baz = FirstIndexSuperset<'x', [number, 0 | 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexEqual`\n\n```typescript\nimport { LastIndexEqual } from 'typescript-tuple'\n\ntype Foo = LastIndexEqual<'x', ['a', 'x', 'b', 'x']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexEqual<'x', ['a', 'b']> // Expect: never\n\ntype Baz = LastIndexEqual<'x', ['a', 'b'], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexSubset`\n\n```typescript\nimport { LastIndexSubset } from 'typescript-tuple'\n\ntype Foo = LastIndexSubset<string, [0, 'a', 1, 'b']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexSubset<string, [0, 1]> // Expect: never\n\ntype Baz = LastIndexSubset<string, [0, 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexSuperset`\n\n```typescript\nimport { LastIndexSuperset } from 'typescript-tuple'\n\ntype Foo = LastIndexSuperset<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexSuperset<'x', [number, 0 | 1]> // Expect: never\n\ntype Baz = LastIndexSuperset<'x', [number, 0 | 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `AllIndexesEqual`\n\n```typescript\nimport { AllIndexesEqual } from 'typescript-tuple'\n\ntype Foo = AllIndexesEqual<'x', ['a', 'x', 'b', 'x']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesEqual<'x', ['a', 'x', 'b', ...'x'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `AllIndexesSubset`\n\n```typescript\nimport { AllIndexesSubset } from 'typescript-tuple'\n\ntype Foo = AllIndexesSubset<string, [0, 'a', 1, 'b']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesSubset<string, [0, 'a', 1, ...'b'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `AllIndexesSuper`\n\n```typescript\nimport { AllIndexesSuper } from 'typescript-tuple'\n\ntype Foo = AllIndexesSuper<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesSuper<'x', [number, string, 0 | 1, ...'x'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `SingleTupleSet`\n\n```typescript\nimport { SingleTupleSet } from 'typescript-tuple'\n\ntype Foo = SingleTupleSet<[0, 1, 2]> // Expect [[0], [1], [2]]\nconst foo: Foo = [[0], [1], [2]]\n\ntype Bar = SingleTupleSet<'x'[]> // Expect ['x'][]\nconst bar: Bar = Array<['x']>()\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md","gitHead":"7e976afc29a23bd4fc0d9e8c0d22bb7fe9384ede","_id":"typescript-tuple@3.0.0-rc.0","_nodeVersion":"11.10.1","_npmVersion":"6.7.0","dist":{"integrity":"sha512-IfoXOpaar7sa18IRm4dUI/GvfSGR6ZSNW2jqKvXZMlYDk94APxSKIZNXa9SVt/YVnRO2jWTEDeOWleofK4o2ug==","shasum":"b58bec6a3cbc029d451f433dec7d62de4661d782","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-3.0.0-rc.0.tgz","fileCount":9,"unpackedSize":32260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf37pCRA9TVsSAnZWagAAJGYQAJjrJJXw9DyHgDZyRybi\nIv3S75VLystTB9lyJ9gy7oLdHMEdofUR+7itHKtumkVm4N6Oy8Ns5k987q5n\nqdIPjSVy0O5GG2Dk48uj3wyZD8/f84J9YnsBsPuNagNS2Zmt/6vakU6wDz9J\nBV6h6nrxmjVVsdTFKsr362gzoiAmkka+iCKPOuFyNP4XKB7Emn7p75YTNWcB\nHq14kQ83BhPLVMWL2dsFnwpjt9kp2cuEKC4nEp49gPGl3BBwfLWVLbCMsINj\npUbsRaeF2NW/HILIw4M6NNfelTgLjZagyghHSZRJ9l57w53Xkpl56ytG/GkC\nLfLbwNW7IUr0rxoLEuzStqIeifTkE2kWVefId4PUSBdyliEMAqxXegNH8WD5\nZU+Cyh2PYOQ5cinbGceMH0lbth4m3NzEAP6g58Jqm4PEH+ZsHO8DGgctnCAC\nCommUin9W8jDqcS+q3PNGlmVgL/SmISXV4FbVIrkV6mQAnsayieF+sfFWUq+\nKPAKqM8jS5mw3C3dJRiAK0wAy86vsqGX88I3qgcqoCGLSo6OZ2WHMNqV4BmM\nHSmmPwAwW0kyDhOOBFc5EuTX7IslX82EGhoxHNzHo+Qam0ZdxvhJXZXZSz7C\nAIJxXaV7CgQOmaB1C49rzfVNfx0zBFt1ES+1xoMj1fvEdFqBar0wFscbSHHm\nDnKY\r\n=ktsh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFNQVRic/hTD/Cyig936Maz22Y8Zf/1d66PRHqzxuubdAiEAn9FXzXY9u+afn4n6AkEmNMNjueO15n4RSHJo4+V4Qdc="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_3.0.0-rc.0_1551859432855_0.3532406691401597"},"_hasShrinkwrap":false},"3.1.0-rc.0":{"name":"typescript-tuple","version":"3.1.0-rc.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~3.1.1","tslint":"^5.11.0","tslint-config-standard":"^8.0.1","static-type-assert":"^3.0.0","toolcheck":"^0.0.5","clean-typescript-build":"^0.1.0"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 3.0.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `SplitInfiniteTuple`\n\n```typescript\nimport { SplitInfiniteTuple } from 'typescript-tuple'\ntype Foo = SplitInfiniteTuple<[0, 1, 2, ...number[]]> // Expect: [[0, 1, 2], number[]]\ntype FinitePart = Foo[0] // Expect: [0, 1, 2]\ntype InfinitePart = Foo[1] // Expect: number[]\nconst foo: Foo = [[0, 1, 2], Array<number>()]\nconst finitePart: FinitePart = [0, 1, 2]\nconst infinitePart: InfinitePart = Array<number>()\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `FirstIndexEqual`\n\n```typescript\nimport { FirstIndexEqual } from 'typescript-tuple'\n\ntype Foo = FirstIndexEqual<'x', ['a', 'x', 'b', 'x']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexEqual<'x', ['a', 'b']> // Expect: never\n\ntype Baz = FirstIndexEqual<'x', ['a', 'b'], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `FirstIndexSubset`\n\n```typescript\nimport { FirstIndexSubset } from 'typescript-tuple'\n\ntype Foo = FirstIndexSubset<string, [0, 'a', 1, 'b']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexSubset<string, [0, 1]> // Expect: never\n\ntype Baz = FirstIndexSubset<string, [0, 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `FirstIndexSuperset`\n\n```typescript\nimport { FirstIndexSuperset } from 'typescript-tuple'\n\ntype Foo = FirstIndexSuperset<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: 1\nconst foo: Foo = 1\n\ntype Bar = FirstIndexSuperset<'x', [number, 0 | 1]> // Expect: never\n\ntype Baz = FirstIndexSuperset<'x', [number, 0 | 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexEqual`\n\n```typescript\nimport { LastIndexEqual } from 'typescript-tuple'\n\ntype Foo = LastIndexEqual<'x', ['a', 'x', 'b', 'x']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexEqual<'x', ['a', 'b']> // Expect: never\n\ntype Baz = LastIndexEqual<'x', ['a', 'b'], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexSubset`\n\n```typescript\nimport { LastIndexSubset } from 'typescript-tuple'\n\ntype Foo = LastIndexSubset<string, [0, 'a', 1, 'b']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexSubset<string, [0, 1]> // Expect: never\n\ntype Baz = LastIndexSubset<string, [0, 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `LastIndexSuperset`\n\n```typescript\nimport { LastIndexSuperset } from 'typescript-tuple'\n\ntype Foo = LastIndexSuperset<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: 3\nconst foo: Foo = 3\n\ntype Bar = LastIndexSuperset<'x', [number, 0 | 1]> // Expect: never\n\ntype Baz = LastIndexSuperset<'x', [number, 0 | 1], 'not found'> // Expect: 'not found'\nconst baz: Baz = 'not found'\n```\n\n### `AllIndexesEqual`\n\n```typescript\nimport { AllIndexesEqual } from 'typescript-tuple'\n\ntype Foo = AllIndexesEqual<'x', ['a', 'x', 'b', 'x']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesEqual<'x', ['a', 'x', 'b', ...'x'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `AllIndexesSubset`\n\n```typescript\nimport { AllIndexesSubset } from 'typescript-tuple'\n\ntype Foo = AllIndexesSubset<string, [0, 'a', 1, 'b']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesSubset<string, [0, 'a', 1, ...'b'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `AllIndexesSuper`\n\n```typescript\nimport { AllIndexesSuper } from 'typescript-tuple'\n\ntype Foo = AllIndexesSuper<'x', [number, string, 0 | 1, 'x' | 'y']> // Expect: [1, 3]\nconst foo: Foo = [1, 3]\n\ntype Bar = AllIndexesSuper<'x', [number, string, 0 | 1, ...'x'[]]> // Expect: [1, ...3[]]\nconst bar: Bar = [1, 3, 3, 3, 3]\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `SingleTupleSet`\n\n```typescript\nimport { SingleTupleSet } from 'typescript-tuple'\n\ntype Foo = SingleTupleSet<[0, 1, 2]> // Expect [[0], [1], [2]]\nconst foo: Foo = [[0], [1], [2]]\n\ntype Bar = SingleTupleSet<'x'[]> // Expect ['x'][]\nconst bar: Bar = Array<['x']>()\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n### `FilterTuple`\n\n```typescript\nimport { FilterTuple } from 'typescript-tuple'\n\ntype Foo = FilterTuple<[1, '1'], number> // Expect: [1]\nconst foo: Foo = [1]\n\ntype Bar = FilterTuple<[1, '1', null, true], 1 | '1' | true> // Expect: [1, '1', true]\nconst bar: Bar = [1, '1', true]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md","gitHead":"96cfc6ed779168247be3c8e913c71fd14a22e8a3","_id":"typescript-tuple@3.1.0-rc.0","_nodeVersion":"12.0.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-eCg4OtKSL0EEFMe1npigCq+jvN2lL/GGM+qFI7DBUXeWbEiGtr2yuCmF8720KXRDsFjaEMFPtnxhuMDQZEM8LA==","shasum":"9e7c4347c756df4590c00acdaf2fbdf2f1914b82","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-3.1.0-rc.0.tgz","fileCount":10,"unpackedSize":59233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7PcZCRA9TVsSAnZWagAAvYcP/1S/6AU1CZmf5hKFmyUg\nDr6e2QbAPDIvJ/CAyZcK4USZfMy8Adp/JqgsJ621sTiQBmMjsDSJI58Q2cV8\nnXXv3lrig4mKSquPb1fHny/qx/lD9zKTJ+KPxYHW46vjhnPuji2uenJoP1WL\npB5dFpLcopNVJMpb/5BINpT6x5SXQv9GhELQ7w5I4bfyBNlIM3dZNGxaeVqy\noBI564yUmPFGq3aESeCBeTwDXrD1PLKUXLCbI4ni978r4PAOSfWllPkbEu7H\naF4dhCObdvW9xmNjeQbALyb3pFQAL+qcT+sUzQ7isFBVqArqpIuaClqQFDCl\n7BW3GN4LDrcn144YfupCGfA3fn2/GtVNjpWl4pVALcqHG1SQDu+Fy4467d0S\nF0DUTQdauRGHhBdrpMtjnKpp78Zft29bwRMshWbL9gp3eXxbRK2RWNbEbfH6\ndzdS4TvXiQ8hAK8EZAdSdK5nzgs8NoY+PfkxF+ziAs3XKtHrjbVerVkI51wN\nbKOxrP5Q87FI5p+ifQi6WhmItspk5/hqyCJXJPgcWhsZU1rZslSIOJkJo/9y\nm6X5kqqR73PLfBl/2zgUZo5zUNlXJh3sWqc0c6vXulOhOp/+VjXz4FsIkSRO\nJq6NxVmD5cxPC6uudLsY36rRf/9dZlR6ax5KA0eQH0DhjlL58HW1BI7VRAbz\n/oNQ\r\n=YTXt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGSDH9io9eO8sXehlxm1tmWncMxnEUifmEiUGaRVVkwlAiAPModHqmyLpAHW6b5GexE5HQojGLlEZ3ii2p3sqdLB0g=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_3.1.0-rc.0_1559033624958_0.8571724401240883"},"_hasShrinkwrap":false},"4.0.0-rc.0":{"name":"typescript-tuple","version":"4.0.0-rc.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~4.0.2","tslint":"^6.1.3","tslint-config-standard":"^9.0.0","static-type-assert":"^4.0.0","toolcheck":"^0.1.4","clean-typescript-build":"^0.1.5"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 3.0.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n### `FilterTuple`\n\n```typescript\nimport { FilterTuple } from 'typescript-tuple'\n\ntype Foo = FilterTuple<[1, '1'], number> // Expect: [1]\nconst foo: Foo = [1]\n\ntype Bar = FilterTuple<[1, '1', null, true], 1 | '1' | true> // Expect: [1, '1', true]\nconst bar: Bar = [1, '1', true]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md","gitHead":"2b2922cffb62b5b3a31aef6b770da864cdab5d80","_id":"typescript-tuple@4.0.0-rc.0","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-m0jemQIY9ElvbPXLDAZg5t7LsT+wDX/MyabsKd0BZ/cnMSZA0O+wAfAeDsVbyiBGqQmad5IRC50JIOWPXUsZ1A==","shasum":"7a792d2bf1ae5f44a1cccf870a548bc8b40a2864","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-4.0.0-rc.0.tgz","fileCount":11,"unpackedSize":42999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQOHhCRA9TVsSAnZWagAAjrkQAI+Do5SJg8uQLqq6qAXi\nbhuCAO2+47fRvnLAU4XtL6tCGzpvYU4wo7g1nc+uomKw/aa292f6uQhBETXQ\n+sPgklNUA7SdTSzJYKyidkH0ew9wxOP9/R/ZtXpjCyuKCm5eiOUn518AJ8eW\nLFPzX9YJ6dbSPADA397LmqaMVnw7pLedLF1kj0N5a28c1Sq7vLpPIXTf81Q/\nETOr72diUEXQeWPyc+iVKo1qRj/Y4/De15dy6YrYPrWKSzD+ccDmiBugBicf\nGXH0nVMbg2JGo6NR4WuaC/NKLn1QoY4FY9FcU0uWpRZQwmiR/1lhJxI414AW\nogNlL7m3s23Ov3uiuYnow+mQEDbVsICng8Wa8JyfH1FGgHIswRdflceBNqkQ\nZidEe4cBLmT/IE2wscerieWeKVf8+dxWp1mFGZp/JNUGOgEkg9m0d8dL94Jm\nG2lFRqxMAFwd5kGCE8cFqYREd5nCRiw3LSTQ7qBrXTG5mEy8MGD/5J9vPMnV\n1ks7tVlSuNAaXKuEFxPFT9+qsR4l1p1g/d/o5IjAWiD2pQt5wNzeVix9pDKA\nv2yfCP3JHA2UJ2X/3/Aj0NLWY337SPDxKJMV8mwruWSEmrbqHF8SF+Qq1r9c\nGcs1f9BkfpdcY4qtNjTWTcXW1iRCYo/1H3XFegDuo2KJ/OEJWdJTFnXlRPAF\nheE9\r\n=6G3g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZylmw9r2fptowWd6tPAjqIg8QCbDNIcrjSCC/RKokdAIhANsmeWgmqaqIti2h7Up6fEWFBeSM4ZnvvVaKl0Kvv80O"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_4.0.0-rc.0_1598087648495_0.11760301889072511"},"_hasShrinkwrap":false},"4.0.0-rc.1":{"name":"typescript-tuple","version":"4.0.0-rc.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~4.0.2","tslint":"^6.1.3","tslint-config-standard":"^9.0.0","static-type-assert":"^4.0.0","toolcheck":"^0.1.4","clean-typescript-build":"^0.1.5"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 4.0.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n### `FilterTuple`\n\n```typescript\nimport { FilterTuple } from 'typescript-tuple'\n\ntype Foo = FilterTuple<[1, '1'], number> // Expect: [1]\nconst foo: Foo = [1]\n\ntype Bar = FilterTuple<[1, '1', null, true], 1 | '1' | true> // Expect: [1, '1', true]\nconst bar: Bar = [1, '1', true]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md","gitHead":"f3cefc51f47d7aadec05b8ab68c6585d38555ac3","_id":"typescript-tuple@4.0.0-rc.1","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-1ip+YeBOC1mVobD0W6E786NDprz0MtXaMsDw0xWfXCzFDUmy/2QfwcA1D+Ymwoz0JlO/sDhh6cvZraPa+jJmiw==","shasum":"91e0e31608f942dd1c85174ffa84f0f2ba16d527","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-4.0.0-rc.1.tgz","fileCount":11,"unpackedSize":42999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQOKRCRA9TVsSAnZWagAA67cP/2zeFoq1LLY/N8s5e1FV\n3dS0jVgP29JXH0SVaRYb/Tjh+qGH/lblmv9XI7H79xI8rqsmcKdXSSTYJ2K/\nnbfsmx12UkyM6Q+yaDgOrFTTQyBxOqKOqad6UiNBjjk4cpp5NaSFZlzsGfzm\nRxZoUbOmoLvXs6puF3SqT04+Ymwr/qjdUcZXLcJcP47KIgYizcNA7nyvaygo\nIUfiao4WNrsL19wKtDU7d75mPbAUEBde9Od7Ei8uWwslVNLko8cqXpiuyRhG\nXpyy6xuJ0FHLOEgZm9S4l7RCoX0ttErIT62Yx9syLubZkYuSjt9uzw3Ok5a+\ndStzWJLOmDOeds4qmzJTv4z6Ru3QmI75eXMwvbCBxfuLNEDF2jHJzFsby/NT\nwM/uw26QJLT4yGXYTL6V1fYyMmxgTbjznKh3JIF8CD3u/ix4lJYT8gAa6/MW\nFuXfD+nCpwU3UX2bwf8k3Q7+85N7zPZjXo2SrhFxYHZgqu6DkjJOlVf2u/lz\nHyOqFHvWjeW3HAZJP7GcxqgtVVuOS+jzyvtfVy6lpsz3z5fJoiWXu/5EHICw\nrddtsessKV5WEIKqcqLxaFsqOS46fYaaIVYLDpIUGfDM5PD0BtLa9x+uo0mf\n0NY/qVFdY+Afj2wEPruyr6tc6/6R0gtdEmFJ1iVH/J43Ptcf/Ce2YOHsZqZe\nz3F9\r\n=kmzz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFsd3GsN4B2LdQJubbl/9u5MSuf8WvMKsSijvVRsQ1kkAiEAlA0i4PSQJ743S8fnmmnQoXMRl0Bajr+d7+aF/3B5zW4="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_4.0.0-rc.1_1598087825523_0.29692606276041"},"_hasShrinkwrap":false},"4.0.0-rc.2":{"name":"typescript-tuple","version":"4.0.0-rc.2","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~4.0.2","tslint":"^6.1.3","tslint-config-standard":"^9.0.0","static-type-assert":"^4.0.0","toolcheck":"^0.1.4","clean-typescript-build":"^0.1.5"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 4.0.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n### `FilterTuple`\n\n```typescript\nimport { FilterTuple } from 'typescript-tuple'\n\ntype Foo = FilterTuple<[1, '1'], number> // Expect: [1]\nconst foo: Foo = [1]\n\ntype Bar = FilterTuple<[1, '1', null, true], 1 | '1' | true> // Expect: [1, '1', true]\nconst bar: Bar = [1, '1', true]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md","gitHead":"61a382e33a3c69be8b059db344fb5f38937908d5","_id":"typescript-tuple@4.0.0-rc.2","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-XHGqBQt0QOQBVaWpSA+GkxRZ+YCTfHvqFUU+pC540hGrmoQJ/b4Az3BFR9igkilJge4GvaCkV+NfVBYwoY8ftA==","shasum":"ac0af4371597dd6983f22318a6a652e0392e1d09","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-4.0.0-rc.2.tgz","fileCount":11,"unpackedSize":42999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ2sOCRA9TVsSAnZWagAAO4AP/2Rt1nd5z1OpVALDbmOE\ntyFCdTIdokY80c2PgYy1i2OXIVd8q37gZdaa/8DWAPv1hMgFkP7X3TdaaWKG\nDZ0l88PNLpyl6JIey+1bPcYn8oUIfM/6gn0CAw17NCfD+kYKigsH+dr6OVk2\n1caeVHTNxnlQ0dVwYv3/ansiQLaM/IfMvMurV0yNYFLhOHHS5CGPSawGa8w3\nmZvtHP5JIcBS5wAmVI7uUc50+kX4Si2l3csGYxVqxqrjfUEJliEOpG/3RT9T\nLYFERxz4LefYM/aDIVpvX6t3HjuLqjSf32D7zqaSaV6XGkzSQVBZD/syTalQ\noDCSfg5Eml/8k7RX9Wh7GSzdoFGo301CoOp91pb+9xvkq/MHsFeSw7qw1K3A\n6guGWYXiW3VwivNaX0PkojhBmr/JpWXvLbbxeTllC7Nlp/OMBOhyOZOxpCRo\ncpvir/EYZglap5H8Xamg3uefB/RCmk92S2vxxbI/c0PXqE7HSJ0rhpRjSEwr\nc1V+RrZkhBGfNy3GNjP1bt+dKF4woPj20giPi1LSxkJ4eqeBZmXtjuwmKZs2\npZryr19jbe+sBhmObWlglgwc3ooks0FHZvLSQu5fcLnWbQwM41sJwe6yID9p\ng3YJASXM17MGDDmlO7GOhyvnHCV/0jbr1omU16AjEe/EMzyF+PHeoPTzwo0b\n/4nJ\r\n=M3mz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIETWb3ZTG3t5gWAmVDuK36mjHHEOuGfCDGO56l+veQWXAiAqG9vnOjcDMpvfoR3l16LlWc7YC6Uc1cjFhf/KoQ9rfA=="}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_4.0.0-rc.2_1598253838354_0.007425566713337828"},"_hasShrinkwrap":false},"4.0.0":{"name":"typescript-tuple","version":"4.0.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~4.0.2","tslint":"^6.1.3","tslint-config-standard":"^9.0.0","static-type-assert":"^4.0.0","toolcheck":"^0.1.4","clean-typescript-build":"^0.1.5"},"gitHead":"4ae0461630fae6e96e7a0bfc47e55241683c8701","_id":"typescript-tuple@4.0.0","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-1Fty3C4uqswsBSXR/pdiBwxJCR9M7bzgEWMuzmZD9AQABLdJ76aaR2uH1VIlkTnHIG+rY97OKslroYvj6IJ49w==","shasum":"0cff7607698154793a67c72c0552ee7c11a733c8","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-4.0.0.tgz","fileCount":11,"unpackedSize":42994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSbghCRA9TVsSAnZWagAA6+UQAJQMtv+xyvjqpig8p+aL\n/1Ma8z1wRzClfAdDG5W3rDbwdBq++9lJacpJ49dehLFbAOMHuj7E2AUjY/6E\ne8uqR9TSfPtqLkAQpGnBFvye8qmrnTNJHJhF28e7JL0matdtiHu2QU8hNdEb\nxvfDNNQASPnbSx0lDk6VF2kOzjgbYFlxEqP9LAForSQHNU30ZMkM45HRCACf\nPYro+aTdyODWq2H6onhNKiySTAoe1p1bCwZ3yHHPF4YPvX+d7bqHbRtG5M5N\nuSi9/97mJKDWcmRiXcH2wM6Q5kqvniuTuDrTPiMtzg58QuH77vsRvj6rAkbc\nskrqtvH+T1hTqrucCdsAX1hZsUzl0O8GhjtPwXns/lxCh6n19fdIBNqsrx+j\nwDeq3p8vBtJCE4sYxgV06PyTHSBOMhYOLz7moBpWMLderLc0BGvCrje0y4WV\n9NhNX4PDE/9cb54BZbellMTsX4Rt0pkT/se2AIpAtLP/0ZT8g35PEhjGr/cw\noBPLXjFS+57lpyBG8uY/R0jB18DAGVWmOHSqm/oIyS9/hwwh5nIJTARTmBns\nyKsrXlTYyRve7JaOhaJithk6XliELrE2dhlfhshl1PalQ8Iyz+4Mjm+nHx4i\n8dTvfbQ9tS0weLB7EM0wRMLy82jEZphM9yBXWFR3k1NFrajIWh+nsZMD4t7O\nsoCA\r\n=nHjK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFDdWE6tBiKT/5IqTV4ZWOFEpyU3SUixZLFMo3CmUkgQIhAOi1RrEyotp3mJ0hUbEZfVmb0nWpmunUsCTvIe6/QtSB"}]},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_4.0.0_1598666784284_0.2955667614486057"},"_hasShrinkwrap":false},"5.0.0-rc.0":{"name":"typescript-tuple","version":"5.0.0-rc.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~4.1.2","tslint":"^6.1.3","tslint-config-standard":"^9.0.0","static-type-assert":"^4.0.1","toolcheck":"^0.1.4","clean-typescript-build":"^0.1.5"},"readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 4.1.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n### `FilterTuple`\n\n```typescript\nimport { FilterTuple } from 'typescript-tuple'\n\ntype Foo = FilterTuple<[1, '1'], number> // Expect: [1]\nconst foo: Foo = [1]\n\ntype Bar = FilterTuple<[1, '1', null, true], 1 | '1' | true> // Expect: [1, '1', true]\nconst bar: Bar = [1, '1', true]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md","gitHead":"abb7092259b75e5a79a94f0bc518b92607284720","_id":"typescript-tuple@5.0.0-rc.0","_nodeVersion":"15.2.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LlR+yizy0s/o1vzUlBxWnfDjOcp7gpuh9M/eOPNnzpoXijMDtJUvslGyNSvekrfc5lX9mTv6SeFgbbJfe3BIxQ==","shasum":"95b4ef427f5b072bbf49fe1b9bf2751db5ab2e3a","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-5.0.0-rc.0.tgz","fileCount":11,"unpackedSize":42440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfueCnCRA9TVsSAnZWagAA93EP/AwjSZINubJ5yt8AA/YI\nO6FBoMGKTeiFiN7099N5xZrFTj6qldC1sSPCdNhd26mACoBodFhXiypjTwQW\nH35hjYn3f9a9mM7/SihBLo22GLvGrPim0OffahMamhZF5ZkKc0Cx6E/4Li2Q\nIYUQpJknNo1A4k0FqODwbKvcq6qtugMkUxLHRwdBT+ZBf3pMGzrBNk4Cx7Ns\nFvVH+Z2ROtVsJg+rJACWB2z+g05i0jaRNtw9VLKP+w2vtDzZEPsticmuKEkQ\njpV9p/SZpj1Su3Uye+b1sf8W3OxwduGDhPxfx/o3qpD2o+aBwrTTopOl2iAJ\neBQcC+vltu7ui3JjGX/NnNfOv46gY3BqTt4ozMnpyo6TmU48tp2xNX0fi62+\n3NwaFyI4urJ5EajHBVSMBW1ILgGswBBTOUrPCGhA8Tb2mzh/xve5VJSEd7BS\n8n4ysHjg4u6zcRJYxKLr7xXVfhXmdt7QaEuLxO5KGIaCARrqNmujJdqjgqK7\nZPMA75de5V+RVczRZ2MPVsb3tgmSw2wD/XMijrsFtAoMmS+jPN97cWejjtLG\nybg68vL4XYoBEoU8cLprp8mOfNxOzknfCY5Fpwo3F2IrIBbRoLxi04W1tYtM\n5KOsiqKMlVIYc2/n+cwjUakWw6oMIGQPC21VouWODLWSOWauycc1D0Nv7gHI\nZ0n6\r\n=5ejt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRwWR38mTGxLYEWA4ctwIq92h9l3ut8/cMtmP3SfPfhAiA5aWNrHNtp06xcWtxtjfn/vZRhovQfxX64IgNbZG8zeA=="}]},"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_5.0.0-rc.0_1606017190384_0.8412349021859491"},"_hasShrinkwrap":false},"5.0.0":{"name":"typescript-tuple","version":"5.0.0","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~4.1.2","tslint":"^6.1.3","tslint-config-standard":"^9.0.0","static-type-assert":"^4.0.1","toolcheck":"^0.1.4","clean-typescript-build":"^0.1.5"},"gitHead":"e33aad12d1ac0db4ae7b67f5d5693e2ec499c19a","_id":"typescript-tuple@5.0.0","_nodeVersion":"15.2.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aphr8IRlcPIDwdUg4ONQuLLaojd4F47ADYoBqKAJ2bpqqKrD8w4tznBOZ5Nqjm+WWqLvj9YBxnWeFYpohMyCvg==","shasum":"d3c7d72f4212acd190705c8c40b1bae7ae040af6","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-5.0.0.tgz","fileCount":11,"unpackedSize":42435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvvhICRA9TVsSAnZWagAAKAwQAIgj0gOUjS+k5CIoA+Lf\nvoDR8wpq31S9NSQdKkHmcO3ivOcZjGUSzoAzQ7PqIqb9uCW9gGeOwc3wnjTQ\nTSIv8nhJAwYGIAMkLtbwi7q5UvFHr7p12mQdppNw9Zc0E2m+YDxEWnEBEB/D\njR597WzL0tYx3SJR9jp7vrFjIb4Y7wDbRp2lvz6We6RqEkHtRkm7sPNNld5k\nt+uEB0OhZa8s9l+yFQsIDqywCCbbB/TArYWC+1JMgvNNplF7yTGjWy5rvj5u\nA/d5fqtPBjgCS1glSgWSyrf6OQ1JfKYzKHdXgAJWTnk/J6LMofpg6uQqi0uw\nq+n2NXoGkZYaZ3K0E4Q7S4IbCDN28PLAxWM7xjWlWJW660dN56DrFcxww1V6\nFvprMWnsPNY6zniGypkMkYl1hzH6EBL29oMcXCaIyBenBcvx/0GWw3OxEFVz\ndq9GYZ8zGtEnWgy7RsExhIUK9dBIxuIK9sCNLLZCEGYzXmLVCNIQWsK+g49p\nEyrACbRddP5c6FqTCfbtwdauCzlWKPAVIFR8ncnu6j1baFXJ6EDSZBSLA6KW\n2Y0pd8atiOKt/+yh1zTRXfNNvOak4EVhRRn0X5UWWdgAuQbUnzIbbmCvcNiF\n4Xq1pBu2bTioLd1L3HpgMRv0ry53i391PB95QJSsH/Fo4yRZGYKW2WbeccJw\nGfJE\r\n=Zqeb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGA8RciM1jCXCon1E1RGn0hqIlJzFSwuxzHTM3eRIPXyAiEA7YX7DwEigemtupz4toOGgkci9TwGpwlU7uCXuv88KDY="}]},"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_5.0.0_1606350920039_0.4939886391306225"},"_hasShrinkwrap":false},"5.0.1":{"name":"typescript-tuple","version":"5.0.1","description":"Generics to work with tuples in TypeScript","main":"index.js","scripts":{"build":"pnpm run lint && tsc","clean":"clean-typescript-build .","lint":"tslint -p .","lint:fix":"pnpm run lint -- --fix","test:types":"tsc --noEmit","prepublishOnly":"pnpm run build","postpublish":"pnpm run clean","test":"pnpm run lint && pnpm run test:types"},"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"keywords":["generic","tuple","typescript"],"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","dependencies":{"typescript-compare":"^0.0.2"},"devDependencies":{"typescript":"~4.1.2","tslint":"^6.1.3","tslint-config-standard":"^9.0.0","static-type-assert":"^4.0.1","toolcheck":"^0.1.4","clean-typescript-build":"^0.1.5"},"gitHead":"fb2092ba2cc086edac4672df49b84d49d4a95e3c","_id":"typescript-tuple@5.0.1","_nodeVersion":"15.11.0","_npmVersion":"7.6.1","dist":{"integrity":"sha512-QdAYG/L0vUwtJUVGHmp+Jt8/2l+gOMFwCwLpIhUHNDUxyLWOxuDR/2HWNUNGJtZJuoDvOF3yXMSeK9h90H0OiA==","shasum":"02f443d3a40bfde717572f8b9e88219466718d9e","tarball":"https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-5.0.1.tgz","fileCount":11,"unpackedSize":42547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQxz3CRA9TVsSAnZWagAA67sP/1aLdHJZbb6p0AgjGAI3\ndp0xnC9tOoE5H7Z1rEwqVFyrpH4aRIlYwfPWztjXNqodHj6CrxLtHJblkZkw\nDjMhbd0lHUJrxrT3IaqIlnjScy8xPvODVHIvr7xtp3GzUCBZkZzzG3v1Gl+1\ntdgUS2+JW4z45GUOdFr2q9FaCE6I2bmTpygtHHf6vuH2O7E07P2Y5sLLJoq4\n95mN8fHzIMo2jsSEgDGrKIhJyXUAbWJwp7gkdg2hs/GceWcXc+o/sUNDeB0k\n/KVLTwlW5BqiescPM0DHoiyx7d5cFHCQwPwX/XdxMHeQgm3vUI/O0Elj9CPb\nl3+v81qFqqDy3MlqouL6m/7+qu23dpYgMgzglEucQRL0/K+I0ZOCgOtgB/ss\nPGwQGMHwmRfYjFG9q9rsWCfEZ08tQ5n2QHgZw8WxCPsOUaDt8POgFza0VyHk\nPzj1VBTOviVMcwSUq2BkSpSK5jyXOuiK4Mq5vCo1gXOzPBh2vgXfem9KsRng\n+S1knekrjGSClrKPmZ0QEMQGX7BP861e5O5RIy1G7r8jl71+yi4JNxBp345G\nEaakL6a8t/oZgbitN20pahCca6fdLO4CX6omEgekvwGkXMq7mhHEs+S/HaTk\nKqYdGcEx+wHEvST/oDSvCTYl+Y/bI2tdhA279EogxFoziTsho3Mx7BigOoEF\nwXUM\r\n=MKPO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDrGJYYO9Q/F//EZIsjMesSeHnqFLTwiuZCTLLtisF0cAiBx+KtyUTLvOcuqCbv9YkHB0FsZn7n5JzDkux/Mgp0frA=="}]},"_npmUser":{"name":"khai96_","email":"hvksmr1996@gmail.com"},"directories":{},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-tuple_5.0.1_1615011063190_0.6739962543498406"},"_hasShrinkwrap":false}},"time":{"created":"2018-09-09T09:53:06.925Z","0.0.0":"2018-09-09T09:53:07.069Z","modified":"2022-05-22T13:58:12.842Z","0.0.1":"2018-09-09T09:55:49.550Z","0.0.2":"2018-09-09T10:06:33.331Z","1.0.0":"2018-09-09T10:24:40.490Z","1.0.1":"2018-09-09T10:36:50.659Z","1.1.0":"2018-09-10T10:43:08.168Z","1.1.1":"2018-09-10T10:45:51.193Z","1.2.0":"2018-09-11T13:26:22.556Z","1.2.1":"2018-09-11T13:46:07.508Z","1.3.0":"2018-09-12T12:44:38.562Z","1.4.0":"2018-09-12T14:07:15.986Z","1.5.0":"2018-09-13T13:24:48.379Z","1.6.0":"2018-09-16T17:59:44.093Z","1.7.0":"2018-09-17T04:55:49.289Z","1.7.1":"2018-09-17T05:00:30.955Z","1.7.2":"2018-09-30T12:18:30.467Z","1.7.3":"2018-09-30T13:12:06.064Z","2.0.0":"2018-10-04T07:33:54.070Z","2.1.0":"2018-10-04T13:40:03.560Z","2.1.1":"2019-01-23T05:44:43.956Z","2.2.0":"2019-03-05T16:12:44.335Z","3.0.0-rc":"2019-03-06T07:38:19.775Z","2.2.1":"2019-03-06T07:38:59.845Z","3.0.0-rc.0":"2019-03-06T08:03:53.015Z","3.1.0-rc.0":"2019-05-28T08:53:45.148Z","4.0.0-rc.0":"2020-08-22T09:14:08.736Z","4.0.0-rc.1":"2020-08-22T09:17:05.681Z","4.0.0-rc.2":"2020-08-24T07:23:58.512Z","4.0.0":"2020-08-29T02:06:24.434Z","5.0.0-rc.0":"2020-11-22T03:53:10.572Z","5.0.0":"2020-11-26T00:35:20.211Z","5.0.1":"2021-03-06T06:11:03.342Z"},"maintainers":[{"name":"khai96_","email":"hvksmr1996@gmail.com"}],"description":"Generics to work with tuples in TypeScript","homepage":"https://github.com/ksxnodemodules/typescript-tuple#readme","keywords":["generic","tuple","typescript"],"repository":{"type":"git","url":"git+https://github.com/ksxnodemodules/typescript-tuple.git"},"author":{"name":"Hoàng Văn Khải","email":"hvksmr1996@gmail.com"},"bugs":{"url":"https://github.com/ksxnodemodules/typescript-tuple/issues"},"license":"MIT","readme":"# TypeScript Tuple\n\nGenerics to work with tuples in TypeScript\n\n## Requirements\n\n* TypeScript ≥ 4.1.0\n\n## Usage\n\n### `IsFinite`\n\n```typescript\nimport { IsFinite } from 'typescript-tuple'\n\ntype Foo = IsFinite<[0, 1, 2]> // Expect: true\nconst foo: Foo = true\n\ntype Bar = IsFinite<[0, 1, 2, ...number[]]> // Expect: false\nconst bar: Bar = false\n\ntype Baz = IsFinite<[0, 1, 2], 'finite', 'infinite'> // Expect: 'finite'\nconst baz: Baz = 'finite'\n```\n\n### `First`\n\n```typescript\nimport { First } from 'typescript-tuple'\ntype Foo = First<['a', 'b', 'c']> // Expect: 'a'\nconst foo: Foo = 'a'\n```\n\n### `Last`\n\n```typescript\nimport { Last } from 'typescript-tuple'\ntype Foo = Last<['a', 'b', 'c']> // Expect: 'c'\nconst foo: Foo = 'c'\n```\n\n### `Tail`\n\n```typescript\nimport { Tail } from 'typescript-tuple'\ntype Foo = Tail<['a', 'b', 'c']> // Expect: ['b', 'c']\nconst foo: Foo = ['b', 'c']\n```\n\n### `Append`\n\n```typescript\nimport { Append } from 'typescript-tuple'\ntype Foo = Append<['a', 'b', 'c'], 'x'> // Expect: ['a', 'b', 'c', 'x']\nconst foo: Foo = ['a', 'b', 'c', 'x']\n```\n\n### `Prepend`\n\n```typescript\nimport { Prepend } from 'typescript-tuple'\ntype Foo = Prepend<['a', 'b', 'c'], 'x'> // Expect: ['x', 'a', 'b', 'c']\nconst foo: Foo = ['x', 'a', 'b', 'c']\n```\n\n### `Reverse`\n\n```typescript\nimport { Reverse } from 'typescript-tuple'\ntype Foo = Reverse<['a', 'b', 'c']> // Expect: ['c', 'b', 'a']\nconst foo: Foo = ['c', 'b', 'a']\n```\n\n### `Concat`\n\n```typescript\nimport { Concat } from 'typescript-tuple'\ntype Foo = Concat<['a', 'b', 'c'], [0, 1, 2]> // Expect ['a', 'b', 'c', 0, 1, 2]\nconst foo: Foo = ['a', 'b', 'c', 0, 1, 2]\n```\n\n### `Repeat`\n\n```typescript\nimport { Repeat } from 'typescript-tuple'\n\n// Basic\ntype Foo = Repeat<'x', 5> // Expect ['x', 'x', 'x', 'x', 'x']\nconst foo: Foo = ['x', 'x', 'x', 'x', 'x']\n\n// Using union\ntype Bar = Repeat<'x', 1 | 3 | 4> // Expect ['x'] | ['x', 'x', 'x'] | ['x', 'x', 'x', 'x']\nconst bar1: Bar = ['x']\nconst bar3: Bar = ['x', 'x', 'x']\nconst bar4: Bar = ['x', 'x', 'x', 'x']\n\n// Using ambiguous 'number' type\ntype Baz = Repeat<'x', number> // Expect 'x'[]\nconst baz: Baz = Array<number>()\n```\n\n**NOTES:**\n\n* Due to TypeScript design limitations, using floating point numbers and negative numbers might lead to infinite loop within TSC compiler, avoid doing this.\n\n### `ConcatMultiple`\n\n```typescript\nimport { ConcatMultiple } from 'typescript-tuple'\ntype Foo = ConcatMultiple<[[], ['a'], ['b', 'c']]> // Expect ['a', 'b', 'c']\nconst foo: Foo = ['a', 'b', 'c']\n```\n\n### `Drop`\n\n```typescript\nimport { Drop } from 'typescript-tuple'\n\ntype Foo = Drop<[0, 1, 2, 3, 4], 2> // Expect [2, 3, 4]\nconst foo: Foo = [2, 3, 4]\n\ntype Bar = Drop<[0, 1, 2, 3, 4, ...number[]], 2> // Expect [2, 3, 4, ...number[]]\nconst bar: Bar = [2, 3, 4]\n\ntype Baz = Drop<[0, 1, 2, 3, 4], 10> // Expect []\nconst baz: Baz = [2, 3, 4]\n\ntype Qux = Drop<[0, 1, 2, 3, 4, ...number[]], 10> // Expect number[]\nconst qux: Qux = [2, 3, 4]\n```\n\n### `SliceStartQuantity`\n\n```typescript\nimport { SliceStartQuantity } from 'typescript-tuple'\ntype Foo = SliceStartQuantity<[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4> // Expect [2, 3, 4, 5]\nconst foo: Foo = [2, 3, 4, 5]\n```\n\n### `FillTuple`\n\n```typescript\nimport { FillTuple } from 'typescript-tuple'\ntype Foo = FillTuple<[0, 1, 2, 3], 'r'>\nconst foo: Foo = ['r', 'r', 'r', 'r']\n```\n\n### `CompareLength`\n\n```typescript\nimport { CompareLength } from 'typescript-tuple'\n\ntype Foo = CompareLength<[0, 1, 2], ['a', 'b', 'c']> // Expect: 'equal'\nconst foo: Foo = 'equal'\n\ntype Bar = CompareLength<[0, 1], ['a', 'b', 'c', 'd']> // Expect: 'shorterLeft'\nconst bar: Bar = 'shorterLeft'\n\ntype Baz = CompareLength<[0, 1, 2, 3], ['a', 'b']> // Expect: 'shorterRight'\nconst baz: Baz = 'shorterRight'\n```\n\n### `SortTwoTuple`\n\n```typescript\nimport { SortTwoTuple } from 'typescript-tuple'\n\ntype Foo = SortTwoTuple<[0, 1], ['a', 'b', 'c', 'd']> // Expect: [[0, 1], ['a', 'b', 'c', 'd']]\nconst foo: Foo = [[0, 1], ['a', 'b', 'c', 'd']]\n\ntype Bar = SortTwoTuple<[0, 1, 2, 3], ['a', 'b']> // Expect: [['a', 'b'], [0, 1, 2, 3]]\nconst bar: Bar = [['a', 'b'], [0, 1, 2, 3]]\n\ntype Baz = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd']> // Expect: [[0, 1, 2], ['a', 'b', 'c']]\nconst baz: Baz = [[0, 1], 3, ['a', 'b', 'c']]\n\ntype Qux = SortTwoTuple<[0, 1, 2], ['a', 'b', 'c', 'd'], 'EQUAL'> // Expect: 'EQUAL'\nconst qux: Qux = 'EQUAL'\n```\n\n### `ShortestTuple`\n\n```typescript\nimport { ShortestTuple } from 'typescript-tuple'\n\ntype Foo = ShortestTuple<[[0, 1, 2], [false, true], ['a', 'b', 'c', 'd']]> // Expect: [false, true]\nconst foo: Foo = [false, true]\n\ntype Bar = ShortestTuple<[[0, 1, 2], ['a', 'b', 'c'], ...[false, true][]]> // Expect: [false, true]\nconst bar: Bar = [false, true]\n```\n\n### `LongestTuple`\n\n```typescript\nimport { LongestTuple } from 'typescript-tuple'\n\ntype Foo = LongestTuple<[[0, 1, 2, 3], [false, true], ['a']]> // Expect: [0, 1, 2, 3]\nconst foo: Foo = [0, 1, 2, 3]\n\ntype Bar = LongestTuple<[[], [false, true], ...[0, 1, 2][]]> // Expect: [0, 1, 2]\nconst bar: Bar = [0, 1, 2]\n```\n\n### `FilterTuple`\n\n```typescript\nimport { FilterTuple } from 'typescript-tuple'\n\ntype Foo = FilterTuple<[1, '1'], number> // Expect: [1]\nconst foo: Foo = [1]\n\ntype Bar = FilterTuple<[1, '1', null, true], 1 | '1' | true> // Expect: [1, '1', true]\nconst bar: Bar = [1, '1', true]\n```\n\n## License\n\n[MIT](https://git.io/fA2d9) @ [Hoàng Văn Khải](https://github.com/KSXGitHub)\n","readmeFilename":"README.md"}