{"_id":"hotscript","_rev":"17-a12d5d11d4281501c6aed5c8f284e066","name":"hotscript","dist-tags":{"latest":"1.0.13","next":"1.0.12-rc.0","test":"1.0.13-test.2"},"versions":{"1.0.0":{"name":"hotscript","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/PipeScript.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/gvergnaud/PipeScript/issues"},"homepage":"https://github.com/gvergnaud/PipeScript#readme","gitHead":"c83d677be3237542fdea9d784f87d2129378f6bb","_id":"hotscript@1.0.0","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-QtoX9tKBPSpKqo3GS4FaByABzPPm7PCuBy7veuxZsdYII+aKPJOLxCUe2N9uKqNOjiBvkrWbzREnF6zz1U+Cow==","shasum":"6e9b1afe225785bf3bc0a8ab3fd4483c0c79a03d","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.0.tgz","fileCount":2,"unpackedSize":3543,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNlQNAAxkH7U8DvgfKCel3md4XWjOMyBa8n85BEoZSWwIgOGTwrkj6N0fHi1HL/8+r5z7BJf/xltew7xS7D9n0Wnw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj6T9dACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVHBAAgpHNkiG2g3I7sKVpmBSTCOj+ZE2izbqzGDx5CkI2R6lfkDj5\r\nSELklMu6sIzafY2Fb8fXJXkIQgR7dLH3dikv0YDrgnR5fHo7ejuDCCoatDW2\r\nbl4phUhWHx3ST0zrzhGp4LV8Cslud+252y+sX1iNnk2A/aT13C9thlkh6EMd\r\nTICaMc8aYR3YltclWQi7AIacof2ZuQ2L1hLDctWEz95w+JaZPDYCtUNENWIw\r\nLcqS75zMsxjHqPYMSaExbhMEJkn15NZDyJBAmeaFJXhdRDWf1GP3SH251V65\r\nwgpvFiIBR88wvu9vtVfkyP+DxuMwBLpfjEscKfZsonj7pZYz0nAw6Od+MwYS\r\nxpswEwFNCMup00JdBUs7uEDPCFjleEMmKBEZdk6lGGreqcXJk3aZwuIqh4Zb\r\niXAqS+dWhQpWy9g8q3zkScBFFcz3s3iyl0oDFP80w8omzmNLz9VSF/+pXyVb\r\nx172rhXigVJSUYM0aOZdhSG3PASs5O0H8DIAEZ21T2QAvMi52Kg5lKd5I8fr\r\nsRa/Clq03WkIPsWHvXKlhN+pM/j7l+Ht96CYW2S8x2dM3+5IZVHKV4a8m3YR\r\niAgJX4vDlKYNUDughSUL3KzkyborAjHWPwPY9ZnW/yBqCTYCPdCIMaeVXk2J\r\nPrDB31VQnqZX2eECHU3ivWrJePnLCfTGoxU=\r\n=P3ap\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.0_1676230493051_0.38366284022558683"},"_hasShrinkwrap":false},"1.0.1":{"name":"hotscript","version":"1.0.1","description":"Type-level madness","type":"module","source":"src/index.ts","exports":{".":{"require":"./dist/index.cjs","import":"./dist/index.module.js","types":"./dist/index.d.ts","default":"./dist/index.modern.js"},"./package.json":"./package.json"},"main":"./dist/index.cjs","types":"dist/index.d.ts","module":"./dist/index.module.js","unpkg":"./dist/index.umd.js","scripts":{"build":"microbundle","dev":"microbundle watch","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project tests/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./tests/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","microbundle":"^0.15.1","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"287b686ee28c88c654a8780cc5c16e3fc4cbd79e","_id":"hotscript@1.0.1","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-XwE0V03M8338zegbnZh/1+tKEe0j3tEpiGgic+6K4k8r4jAHhKjcdBoKwxe+XJtweRl69WEpVspFAF+BInRwmg==","shasum":"7f481be09761af67d649f548b2b11547e8b8c4f5","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.1.tgz","fileCount":20,"unpackedSize":39675,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDp+EqryfYevzynA0lWkPSHO1oTXPyHsjpuUnPP2XvbVwIgXgKCWB2RRuDfGgNyWDs3IqM0smhe8VSIxjrAEfltqAA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj6jv9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeJRAAkaiFUw3vSz9bIw5wbOYFNIaaFqyqxOyd7kxGM80aAjkMzs+U\r\nBwzPexpGGZ3SxPjE4P88QgsRJ6Ue/V0dt0dORf+t2OT8oTh5ZBtWwya2TaOE\r\nowamsmEXagfIJUw32J/LbzgzFKZwWDgB03TULIjemxCCxQl4BkYg2Qvv5tLV\r\nGGLqsjGqXhPLjZ44bra7ksiVboZtbnGhW5JjATxZPTudao0TFDmo6yj7B1Hl\r\njoY8CWRPzTaZTdsgTZkTWC7kgZen/I+JP9WZAgWwmP/2+HNf/pPy2r0vHIL8\r\nHaRvfWqdbYJV4aFQKB5qizXToCzYmkcUPGdZORfoaIXIyKrMm54oLfrCyv5Z\r\nqThePGoqA4p3hGPs5gM+QPIOXPrrkDahTwOcaYTo2Kq+OWp5BWvAGxL8Gzko\r\nYvRq52eNFRdL3RFMpAU+lujeHn39jgJO9NPrZ3iEO5J8OPzGNLh3O60FNhIl\r\noTNwfb2CHPmqDvohP2Ou8SXKF7swjSXXQ/wbfe4NYHoxBWKC5P1z3oMCXT7X\r\nBEtLZOJm2P3QwwQFGUitdvaEWEL0zytUGVGbBpIJ/OomptXklTsDj2ZOH0uQ\r\nOD7mt3zJDD5co+p7HwGfsbX/kanzZhxuj5x0+/brmbv8eKdTIW4hAG21HZJk\r\n9yCMeCRYlLwEzRYOW1EHodlCtd2dLP/XBGI=\r\n=rkT3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.1_1676295165614_0.6665293215491377"},"_hasShrinkwrap":false},"1.0.2":{"name":"hotscript","version":"1.0.2","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project tests/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./tests/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"141d6e87a33665f06aa0061694143ccabf2bef40","_id":"hotscript@1.0.2","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-7+eRa+SLFaUkqBDX3Nn9u9dRIE5hXIcWuhxaBPCE6gIBvJA43Yot8pKbBy6NwBHs1RHn6R0UmmBlUXfip3trSQ==","shasum":"dfc8cbe19ae02baf6504f512481199461894c984","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.2.tgz","fileCount":78,"unpackedSize":103572,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1itDK/O7bR1mgvx1U+IjA1Ldk/N5dHFiY6+9paXF8rQIgCSxL/gUsq0QZwzrsGte0m+oTjZHdJ0oQhWO5itrodbY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj64ewACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplZxAAiip/9wwLhVddoNgi2XcjJ6vTWz6+3JNihZtJALemDwt0cjPr\r\nPUxnIn9fA6t6BED9Nhz+HjvbX0aPdtNuoXLetsDiHQQTE/ZmMd8O4cA1mRWw\r\nSqV693UQat1JFIkw70mvM+Uii9UrskpPPEYx/18Xm++8c/tyDd9EbrO1DzwI\r\nuw8rV2WBcXi9x9qBfGgRUd93ayQ2LPlHxio2Bdhp1JBF9nBxNfkYEB0W0nLA\r\nNJuoSCTw2qi4CHWAjlwAzsQuiFMh09wBfmyZiNRuz988WTJhYzQfhYVeswS2\r\nV/JBWFT0c7uTOoMm7EftKTOJxFsIepK5d0oIumMqC6ZpJOQIxQtKuuF5xniv\r\np75wVFxFlaOl7hc66zS+5hP0dCAko1lGhb6vviI9vLNMF/fEhl2aOXpu05Jl\r\n9QIeK8yZAgJczt1wKxOUSUPGz9YhWLmSNxIUqcTMMEv+wStvzLJYWiR7hlxn\r\no1ioEUDCetypYi5L/EJzb6jxfB++95AbcjI77H+VqD2dHdcVtz9omSAq/Qob\r\nXAnuQuWkTG8Aqu79qkpGvKTF8MbcmionRnOwCnfUgitNuvYUgvrsW9h5Yxcg\r\nlLPsq7cQbhZBCGZFBMGjenuxSVMxZVquXaEtyG32l8CuhcsUW8LKYv5EucaH\r\n+aj3RrYJY33Q7eghqoIv1T8VG/KnXqReXSc=\r\n=3LDB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.2_1676380080304_0.7401878164807392"},"_hasShrinkwrap":false},"1.0.3":{"name":"hotscript","version":"1.0.3","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./tests/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"840c4fa582eb246a176c3456ad5bc83d61fdd607","_id":"hotscript@1.0.3","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-3wIISeF+FS24C2NZHunpEsr2EfcZkwtTfUxeaQV0nBdmp7GKX8hjDf3gjuWD0SxE+8Ma8wnvoQKmxrt2Nt+cGA==","shasum":"369f95f488307c6ad0bcb8468e5084d50ab86865","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.3.tgz","fileCount":79,"unpackedSize":131220,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICMDNWbgiZNaqlAFo1j1H/6KRpXLltnBvXI/yxBEY7xcAiEAmoaP/1NyIDRPeJ8hf3JE4+Vr9E8fgUsqGCFKYdQEG5Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7WeAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrvlA//SGZfcVw3+0Zih+QjbTTFn05BkAiuKAFFXpxkOV2YxROG02gc\r\nDjsjTgkMPoo/d9p9YBq1+aPm/DA3FuRbF+ahwuzyHuoqLFuCG9lDIXkIlORl\r\nFf1StIY31c8+yX7HGs/F1gaVN/KTj6XLeuUDau37HVF2lE0UpJomZ+rE1nID\r\nUOtGMwAWDopcAbOM2Pxn4R7vL7H7dHa/mDO4mLCBrBlsgydZpLjMqBiCGQoH\r\nn7xHDzv3G4mBBi8QEX7iSaLc/Jr4t4cdvZ4MqRUVK3JEpne4YXepc5tIgqey\r\neT/eWkdow1ALzxWY4ABtAH9mHtzbBX/Y2JUOApvziZsIcSE3Gy2ynKfhf5YG\r\nEwNeteQfLpi9DBNfO0zIEN7Ve6F8IfVIs7Q+C1VwAmjCczHeLKDq8dO0X68q\r\nnuprxCmnEGMcKhdsrVjsHdUnXRmdzJU/zuA5B37Sjg6EjUKsH0d/1kV7rMiY\r\nvY1+8kS9RQVlqshtoweldg+rKjL2QSkhI2xVrUWU/X49ZnMmmMoxMm4HXiMm\r\n4gGueoWOvWD8HGmu0kr+EqXJ+brlX8ocmcwAQltfYWiawc1sYoDzOkS+koaY\r\nsXQqbQIvJXj+c5XaHybmOLYbOW9qlwXMi4DoqDKpPR4v93RT+ZgeWgQpXIOw\r\nfII+Q951hPnjiNQ91nsETZl+qsLrh9XAxPg=\r\n=RUC7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.3_1676502912596_0.4548002445873196"},"_hasShrinkwrap":false},"1.0.4":{"name":"hotscript","version":"1.0.4","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./tests/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"a95264e79cd945fe15fd08ef3050d9f9625eff61","_id":"hotscript@1.0.4","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-lSe6fJtuyHProBSL5XhfX2JXG9UP9cvhloRUO/SsZT1x4t9ktmHNVw+oxbmyZOI8cLDGiOKMle/Vh14Sy6wr3Q==","shasum":"95ee764ed3867c785ea30dfbbd82e6b98f5c2194","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.4.tgz","fileCount":81,"unpackedSize":146331,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6VsGs+E6w+XYA0btTEjaN6RupRiUCw827eLTO1b7FswIgHpbStbl2hYiV85wT7afR7jPaWS0o8Z9+HD/zdW0JKaw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj77zxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrkOg//WNNQhy6toCkXtE+YOo5nON2I7uC/Xl6wKrtZovWyIys3i3MN\r\naCAHcJH4cXvzlXmkrVhFM8u7d3jXaUzlWcfjlujuzWNF5cJEsti6kTdQGGy1\r\n27vU4I5xiT5PSBk40ZagKZgDWUgmMa73Oh+Zmuixo9zeayO6LlCH3IY+P0KE\r\nou4KmY5QtpafzlzpLnkr0sXXb/3OhXvp/+3sGu1AlkA4PObIrY6kZdZWC0sJ\r\nodFt6tYcZ565T6LIeGAjqhVJlWylMF2UUsfCUwi+DOzPEpJAICyXKt8u0cAc\r\nEDttDdwdMScs1G0db4OFdEwaYXf+NPLcmcagoiHwYHuHEPAAJYm6RuMkYKaN\r\ndSYzegQvBqvZ8RVsP3LmhPh9feFMGRM6iVsdtxSVnYJ4EFcijC28to3UgJ8I\r\nBqpVIuQhpScEqIwjkOCV0fpip33WD8CLIRFpT4jPfnV/grPWfskyYDxxAhMT\r\n5bYe4W850lTG/kKv3LErnp/sQxBQ1BhuToh23EpflaW+oD+Mjq924nH13kFV\r\ncYiSImO6Mzh+XDX4ZbLv0AjEYTYlnNG4FVhSL8zYndYe3Bli7bbKOCGYu9vx\r\n6wNjREAvgVPVcvzGN86PgCb9diHv7KngHxJCi38j4wKvtq3ImFCm32H/cf4N\r\naeq5Nwbb+UPkFEyO7vO9RCthQSS3gxmOZno=\r\n=KRA2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.4_1676655857274_0.3044530017492033"},"_hasShrinkwrap":false},"1.0.5":{"name":"hotscript","version":"1.0.5","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./tests/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"b8b16c26aa73a60b65c8ba2731281cd7e83ce176","_id":"hotscript@1.0.5","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-UaY2t+fGBfqxD6uAKSbnroUsS+Gq35uxW3eRauekWusMVdAfEHFDpMUaAax3epF/zsFrZOSBDd3Up9nfg2eKWQ==","shasum":"6ac765d55eb94c010ae3e6920f3c71b7437f68ec","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.5.tgz","fileCount":83,"unpackedSize":153389,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF4POH68W65sIP1kY4D5Y1AhHwc58QC54E0UCyiFJVLrAiEAzpUhPAOhm2D2x7pIUcBzrNHJi7DZpUJuKC1osrM5DJ4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj8zbKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpxjg/7BNETfyhcFJe9MLnjw1e3E+FJdLF168Fu4T5od1oKTMlOAxU1\r\n/KxY7SFaL+bsmaZtqxe5BLy4hTaoiF7UBbB4LtutXfN9wAQAcK9OpodJzLjA\r\n2ClfLsofQzBKwiu1QWJYTTwPmPG6Ko8NywPPPv6y0xDgSh/1puLwGmDi5BkQ\r\neWqT9eiFhnfCBUDdCtyf6M0x9W5PaBgXEI+T1bhrfzv3DIVfJ6tFn1fBh601\r\njgdNJinZVAc1XHkqwGuoWrTSWKlVaSADZa/jEk/9PQ5Tsvnud2bpWLn+fPXv\r\nNCJ8R6rRGnS7eVClzLVnImK8AkQ3tWRtp1LooVHEkT3x/AFb0haxDlsnVeVk\r\nnY+tdgDNbzi8+sssWol7EFhpvxkGrCS95uqI9NgMOXwZjAji+cUKBW4fsNuO\r\ny7XDdOzyW4imfKJMkwZIkSi58xcVbhpqMYwAl9KOERT0zybkxadRmy5YhZKl\r\nLNB5pul7eu03oRtAAEAx7bMix0246u1SlznAwgisjW9OM0bPHe1OhL7iTifQ\r\n3MeM6jHre2qq9Nyswo6BXbYzs5do2ZvcMDebdv+h+7oMV3ld7GnGx3BpLgR/\r\n0oTY7rFsadymdJ95eye+ytu89t9CGyHs+4+mhdf3Ku6PQWEnRC6QY7WVCH5f\r\nGTCCJ7aDxQ2iSgxrqoc7kvSaFy0hM1yLhFY=\r\n=8ihx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.5_1676883658737_0.17895532941240422"},"_hasShrinkwrap":false},"1.0.6":{"name":"hotscript","version":"1.0.6","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"2a37c06b27f38386cf6c4b6f295f53acf1e26c06","_id":"hotscript@1.0.6","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-efsgKHn7VOH3xVJRCdVXDDihan4DrsaZrjA56TMWsvujlLLV+XkrG0fnPcouCSoMcQkXho5Neg8bK8xuZZmHlA==","shasum":"7a0b5686da6739b92d4a295bd319ce599645a270","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.6.tgz","fileCount":83,"unpackedSize":155545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDKEoRRf1whCnUXiiV3Qphe54oW/sS25ON9IsWdASHTxAiEA8wkIT8XfN6nLvKOajM1QToC2+NJgEEp6591hYKtZ6WU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9I/7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpqCg/9E4nLRBA3mwmpNSSLytjSEn5TmZaj+LttU7CyXxtvh0tpL2GI\r\neUpf18A6Y3roA9BGLT7+klwjEJ84xfXkTQ/OGTc45sqXtnTcQPQ7WDSYHLjW\r\ndo7SDlYFKt3BmI9C1nvGw/rzqcOTvi9NKmmL8IfNoGorUwEJJvOjVjf4YGIZ\r\n/YF///bsHqQ2F1TNtVtcA1ta58hR7jlrnXAjKDbC013m+lA2YhFHe+PtqoxP\r\nIUK2rQum7Yr8g+WVXrRqHshY/uMRjako+rB2zPKxABQod7j/3Dg4HTBFEHfh\r\n9sqnEaKshwD9eDgBa8YmMfi9KwpSYB4aXnNnMMiP9IJZpR5gNnmpAl4vY37c\r\nZcYWZ2zxFCXQOWrfXilo6W0Hq0GFDRERwl5SNUD6s+c3F/XDzNRibnuim47b\r\nB1IonyBxm+5Vm4x5y7hLW3HWXLPpdxVn8UbdHaEzQ7lFmz9/HvLCNzBLzhb3\r\n9nRWax1FMhFVPzws8/z6fKQdHxblbGdF3USyVH30OzZA/cMQa3K6dfoyKih8\r\nDeDXYfIku1QViOzOFRiLqNpZT/MhvccVYzoBGsX+yjtdgNzRW+Y0A5vCb0a9\r\nYlxAa9SDzcJvLIjj/ULnrXDoqacd9EHxDdEpv/edGpfXb8TaVi9m80I2X/o/\r\nM6l5UTLbGvY0j9F9RurLgn1aqytc41ZSx7c=\r\n=4/vg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.6_1676972026897_0.4173306626174551"},"_hasShrinkwrap":false},"1.0.7":{"name":"hotscript","version":"1.0.7","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"f755d928a187f7209ceb2ceac1e902d7f7f85536","_id":"hotscript@1.0.7","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-mCEy8cVp/Z0FySaA/hVxouaStxsMZaIg6urlD2E7uxBaQwKlVdx0JY1T571ElWyNUZwaL3l3nT3k1aOnh2HiJA==","shasum":"f813d532d56cd6f8600baae67bf3a2f4e7bbc8df","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.7.tgz","fileCount":85,"unpackedSize":162745,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJqSjxVQcsq8ubaJdjNG/+N0C3qG8cD6v0xcgF8gmqBwIgBEwBUGIq6W8a2cyjPLI+oCQ24AWzIgBIzXK5QVWDj9Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj92JPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoW3Q//Y5D1s/JDfOhGuQ2UhSpTBpcJnTjmxGYoRnIsvBwc1kE9FoZM\r\ntwI4mgparYjafbAHFQ8nv+QZSKg/FjqHdwqCBJNcqgoZ+/D9osa+vNouaghe\r\n7rErpyy3Te4zNVkXmNBJ5SgWwSxjtgmGgtXTF9PVivP7/qIeEvWQRQFxd0RR\r\nW06ZD+WNzZcODVxTLH53Ldac2OFRyUPKV1jgEctuyP/mTjz1SntO2QSteEZL\r\nH2Gqck1jsbG0fm7Dw57SVQoi6XGZNdVQx5qZQ+dfGORytiCMnZvq8G56hrjt\r\nfTbQJWNPWVSS9f5Lw2XASzvp9yLKujwCgjv+7FYrh1LkqJCHV6PoL8VOyqES\r\nO60Ycl3Gdash07GXWJKPjQjlore1u/PJLrz4nML4qXoqYmDrVmEtgi2L0ztf\r\nQD4alz1Uxc1ov+tyDhhEyeGFL+GL6oPYjRNz4bH+a4VdRokm5HZhKlV71c2x\r\ncRdubNfWdgvQR5Gi94kd5GZy3/J2aTDhlnZvDBGx8EPiGCHHRKvgccuQVsPf\r\naExHmNd0hKSY2ubGzHPPjne9+wNz8yEsCVp57BrW14p148DqHKTcdVytQ/ug\r\nejPT3/qYzOusK0Z06CFuIfRBo1k1uy0H4OliyAS/wdqg+2fE/EfdICC7Di1y\r\ndZRhKwzgWWnsXZU+gjQdRRsi4WqccXNXtuc=\r\n=cgzZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.7_1677156943688_0.7705842649916721"},"_hasShrinkwrap":false},"1.0.8":{"name":"hotscript","version":"1.0.8","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"ac7f969e20820391d069429e7f6ba478dede93a5","_id":"hotscript@1.0.8","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-h0xmurjPi/NkRQFRAv3KThivV//tZgQMKWUqspXDE476RlqLYbrQVOheaisXakiEd3SMOzBGRhhTU7QJ/aKmEQ==","shasum":"8cfecc92f9d720b3259f507d3e77fd5c7c8c6f34","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.8.tgz","fileCount":85,"unpackedSize":163862,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUpad/4cbp2jkx8Oi+rYYM4ZK8L8WPq1m/VZN9Iil3dQIgYH+p8cAdYPgwJJoQmDVpxuatHJMuHTfaYkXNNKAezqI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+yS7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBtBAAkIQ6dwt6Y1FvipTu/cEUuFQ0f40jxueJRBCQk8dR+X/elWPJ\r\nsbOER0OXrAywSOrQPHlQRSGGD3VKO0GEKp0FzQ87fsVRrrmoYHL/gYipkQhG\r\npwurmjvmTP5qK6XfI2xIQMA4vf/63aU98bK70sfJde3I/WbvjotV1LtzBnM4\r\nj7fn69q9EEivCFpXI6hrHg5c88ybOQBpFo3RTryKNvrR53euzwfZgUU0E+cM\r\ndauo8fWk/izlkuLnRkb6YNRIir3FA52loXAgwB1Wyhbd8SxQqwm79anVQ1ly\r\nHjh/VyizL0fc8lCr3wtUnKz7wgM0XDl0XdxpjrPsYM0FDxvLfHVYUBhfcRlj\r\nzE5FbQyNBiZRYBEMI2Ss+QwLQ7r01UlmO1TWkw/V4ZPWvmxWax1IjZkHIzp5\r\n6kCX29cEoyTMjEqdfRpOtTdIVMEjNtH7JtUg2Sowt5FaI8ilHBjD+XcUe4DO\r\nioyB+Y9WRMUMfbHLFwXm+PZugBBhS/1OWB3ONNVo6FrBprLx8sbJyhROXb2W\r\nEAd7etqdsdiouijXXZWaAQe57gzgUbRx0BgLsayAc/g2pnLKAh70AQGIJ0dy\r\nfI4KLyGd/7qwxBjnVDna5sYyWEDBrQPg1EFWCTZoMAZ3e83SyhAZA38N0VCW\r\nc5tfr6zIDo86WVF96FZ8qZB+QtDkzgx6PtQ=\r\n=7TNL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.8_1677403323579_0.7198172180069355"},"_hasShrinkwrap":false},"1.0.9":{"name":"hotscript","version":"1.0.9","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"620311139e11b940ce6ed5a3bdb85bbfb8a0ef0a","_id":"hotscript@1.0.9","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-WnFSOPqVlDza8hCT3EHoKwOLny2VepI3xr5m3Tq2Zkm+i3rmFJecPE0H9K95xH9hmUieBTUDOB2kfQTlHMO6dA==","shasum":"fdc7e7cadf777531129ad0cec7629d9f3bfb98c2","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.9.tgz","fileCount":85,"unpackedSize":170774,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDAFVM9R6KF7TRuJ2QwJDIJUq9ymHCK4vAl0OX7HpAmCAiEA02KxawGbycdRyL4MhYt80l0E7ULml8GPs0d6OMnI7dc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/xc4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpsIA//XZTy6W3BGhLYGGB1IM+2TXFSjY29EpPKoyLF6Wu+Bh4DCizv\r\n1exdd+2o/WlZuPHX6ELZSQFA5tKUqAE5A3aiK9S9DyUlkSIcB8dqZRIttB0i\r\nSQFlUUo8yLr5v+JnFVJEr6XnSjNwLiAOnj52QItW+UNeAdUR8mzYnEQGNkk2\r\nPHA/Yngjrg7pOYNbiDqPRYDmUp0JlYC0CychM5dxg51aLcV5SH22HoRDGqgm\r\nOGvrbkrEHpZvwDtDeA632i9hoQO3iTEHe8fy6865Cn/cCLlFOURaVjou78hP\r\nxwe1nBPw6e8tHdfoTNqulJuxQ50rI6SEw2HdhVj8y4t3XKNzYPMUXi7Un5Ar\r\nE245WnSPefmp7bo7U3KuN6KIr0vnGVruqcE8wmEy5hOBd1bk3Fa8ec6blPoL\r\nP28UGphZWymhkjxngkdRNq8R32LxN/8Fv1ylVgc1EdcQQo7t7T1MECQiFGs+\r\n568aUmBDvBmqXUZIbZQ/0S746mTrUNDO0XNuigYmxSLHtVZnUMEnfFNZmD1h\r\ndaXONI5LeRBVwSOD2jLnFdVX+jgT7wU1ZVLTN4VNE6zhB6SoqeNT+5RI5PqD\r\nvAouBMeTECN5W9XB91s473ePW/uBplYr2cmsj7lifvzI/fU3vkNrdHH8L0OF\r\nat0fcMzk3eKFuewyoC4qzqxpIVB3QsB4Bo0=\r\n=khfC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.9_1677662008670_0.26083417796467145"},"_hasShrinkwrap":false},"1.0.10":{"name":"hotscript","version":"1.0.10","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"257281edc1be62130243590fe5870a8cd314de02","_id":"hotscript@1.0.10","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-eDbtzWfe3LN1Zd9NYoNjogmnqd/LiAo1lKztARnEzzsRy5QKW+VJ7TCWzsDwbSuq79KZ0yVoelQD+GPW83O21w==","shasum":"a11fe4b99ffea9201ae4f9e7005f46e11615ecc5","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.10.tgz","fileCount":85,"unpackedSize":172626,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAayl3ogRedAyTfdmJK5ttH3wLr8r0vcAIBfgYUrlZMAIgDhhl986CipBc/GGhnyJj6C5m5Lvq605rUzjBBqMkj7Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkA6lQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgJw//bJv+Jd/IEJrJO7kj3uzCQK7ociUDPBGW50U14n866K2+X4sb\r\ntfJaIrGc/bFezbyzZWyZkLWsobgedi5AKIOMmIMFRiKL5uSv+oPSRD+vem6V\r\nFe+Q/SoUxhJqRqxQh3WtS+rvGuxiyJeJFumB+RKcWZC5Nw1hgMXWM4/gQ0m6\r\nswlME+FAxTCeNYcHz0wqPuKrg1XM93nkmQ5ZvgSV0Qhlo0EUbXsQ6J6Vqxb2\r\nu8T4YVL9dGGMG6uXmYOp0f1lofsIF3oz2y+bsXp0a/HLIOz+bXSJBUf1XWfp\r\nQqpYIVTn/zk5d/Qv0iKwXa47gpkJULpiGJ3K4wooquTcSJr6Mg+Hk5OfAxtH\r\nYE5QB10GxKDyT/To7YATxQFxgnoYEwkyq6+u9x7xTT4WCiHtHy6M6CDRiXRU\r\nLCF9MXgVB7xKqvO0Saz4hBu0qvsQ1bznZr2Xpwfh1qpoTb12gOK5qcGsuypN\r\nyj/mpT04VvME6eIx7UJ0BFTvoohvrQBHHpE/SoEjGx1cpAA73Pxd3uas+Ylm\r\n1BbbhwYpJ6PQW3AKnxPWnPwwA6CX9myE9/rLNGQwpTO/suHJ7Ujn1U1GacAL\r\nx6f0UNLph42C+707OxYcGgtXq3S2LvhnfTOfzc3Yhi2VVj7sZaXaREglTA3I\r\nbBuWPYkV8CucpAV68VYJH1kXnuXuNDAKmkQ=\r\n=wyK+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.10_1677961551932_0.213027014861368"},"_hasShrinkwrap":false},"1.0.11":{"name":"hotscript","version":"1.0.11","description":"Type-level madness","type":"module","source":"src/index.ts","main":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts -d --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"gitHead":"82f0cae53fd83068428fc169d6130b8d16b56782","_id":"hotscript@1.0.11","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-p7tUz9Lb0M1a/tUJxrXp/8NJ0QbD2UyfFIa89tCkeXB+K8jdIIVSHm7njNDbxw8uorjxRk3iGc2y2KJB5UMKIg==","shasum":"eb3040bff6168ca5b627f18bb5ed2b6f73ae59f5","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.11.tgz","fileCount":85,"unpackedSize":185174,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnONVOLxtrtmBSFzK9fNcmbv7tw7qTKTAEDjI6p+K6rQIhAPBzQO/I2CJFrWROXskyHmXK3dxLkXMFhO8p01g3Kbvr"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIImkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpN2g//Y9tVTFUwQOu3wnHpJhTiSwL1MjGjaAItxjsq2RQm7hy0CjEI\r\njSjde9KL43Wgk44w13zaCPaQc7NYV5Ns07QeVMKgjN9vhC++hq33Lkc3iomB\r\nrhYVqtU9MDCrW9JWsJcyQzSUYxdUhiqCrlFE47IJqBvLxQFD6yaN6MJjQixu\r\nXl93NTrvgM1TJh5E9YeOWWzQ1PpvvpdIUmknQj5ybnNk8jhdmV4sYypelgHs\r\nx0IlpzEHbRPTBN4NByZkPsCBjA1Orq/8UC44w0WsONAAzb/LlH3QIH5Yq9W9\r\nPEWxdpceKDfEiDSomaQpV8S4D+FuNR7JXlImJMhKrjXkCVMVI9wwVCujQmxl\r\nq1uao1fX3nX0og8CA9Gg2BuUn5NyOTNL+5futlhSqEi2oipMlAan40KCrNzQ\r\n3ezGxQ3vYXuzkTchMRStQHaxZDmriTBpuUXZySYiw1nvT+04XLawN98Y4tlV\r\njnmBOfBIxEW9EfFyNwvixo+7HkV0dUE5+4uP4qErKhp9m/Rx+mdqeSB1eVyx\r\nCn8TnLG527/4if8lgSIJ2YZeL1OcO8VkcePr+EjDR36XK2C5VxFZvJu+GU+M\r\nbXaXpbMwNQQw7G/x8PRxo1qPAUQChEiG87N/mX7AlD27k/ggTLUwQe/PfSGS\r\nWOeoOjZmkHO3krtoQH/5RfVy/HL8X4YzVvI=\r\n=z4Hv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.11_1679853987858_0.31411806299446554"},"_hasShrinkwrap":false},"1.0.12-rc.0":{"name":"hotscript","version":"1.0.12-rc.0","description":"Type-level madness","main":"./dist/index.cjs","module":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format esm,cjs && tsc src/index.ts --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","tsup":"^6.7.0","typescript":"^4.9.5"},"readme":"# Higher-Order TypeScript (HOTScript)\n\nA library of composable functions for the type level!\n\nTransform your TypeScript types in any way you want using functions you already know.\n\n![image](https://user-images.githubusercontent.com/9265418/223854503-b54f6a62-9f21-4953-aaa3-5d54699516a7.png)\n\n## Features\n\n- Type-level higher-order functions (`Tuples.Map`, `Tuples.Filter`, `Objects.MapValues`, etc).\n- Type-level pattern matching with `Match`.\n- Performant math operations (`Numbers.Add`, `Numbers.Sub`, `Numbers.Mul`, `Numbers.Div`, etc).\n- Custom \"lambda\" functions.\n\n🚧 work in progress 🚧\n\n## Installation\n\nYou can find HotScript on npm:\n\n```ts\nnpm install -D hotscript\n```\n\nHotScript is a work-in-progress library, so expect **breaking changes** in its API.\n\n## Examples\n\n#### Transforming a list\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgFQK5gA26AztgMoxTAB2A5mXAHJ4gBG6UJcAvnAGZQIIOACIAFhBgkAxtTAxRAbgBQKgPTq4YKOhgxgnALTA6NaOhUwAnhji6SARjgBeFGnQAeFXDibfAHoA-D5wANqO2ABM2ADM2AAscYkAupihYaG++ESkAHQAsgCGYJ4s7JwkeQCCACa1nrEAfE3pvtkExFUAUhC0nqJ5oq1ZcJTU9FXkRMAwA0Mj7bid+cWl47QMeTgQ5RxQi+05XYUlZaz7VXUNjgAMLW1HK1OsoSkqTUpAA)\n\n<!-- prettier-ignore -->\n```ts\nimport { Pipe, Tuples, Strings, Numbers } from \"hotscript\";\n\ntype res1 = Pipe<\n  //  ^? 62\n  [1, 2, 3, 4],\n  [\n    Tuples.Map<Numbers.Add<3>>,       // [4, 5, 6, 7]\n    Tuples.Join<\".\">,                 // \"4.5.6.7\"\n    Strings.Split<\".\">,               // [\"4\", \"5\", \"6\", \"7\"]\n    Tuples.Map<Strings.Prepend<\"1\">>, // [\"14\", \"15\", \"16\", \"17\"]\n    Tuples.Map<Strings.ToNumber>,     // [14, 15, 16, 17]\n    Tuples.Sum                        // 62\n  ]\n>;\n```\n\n#### Defining a first-class function\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgYQIYBt0Bo4DEB2OAKgK5joCmAznAL5wBmUEIcARABYQxUDGUwMDDYBuAFBiA9JLhEOwGgrio4MAJ5gKAWkoA3CunbpUIAEYATVGwCEY4PhgUoDVLwpwAImXTBeqR3AUAB6O+OY0BIhicHBQFDAkUPgAXHAA2jDyVGlsqFAA5gAMbAC6OJkKOXlFpSXitBLqmrHUJOgwAIxwALwoGOgAPKTk1AB0ALKoYANe5L7+FAB8OGkdOABMOADMOAAsJYvi0jEnAHoA-I0a7nFUbTDrPX2YQ95juMYwk9OzPn6Oy3SazgmzgOzg+0OUhkJzgFyAA)\n\n```ts\nimport { Call, Fn, Tuples } from \"hotscript\";\n\n// This is a type-level \"lambda\"!\ninterface Duplicate extends Fn {\n  return: [this[\"arg0\"], this[\"arg0\"]];\n}\n\ntype result1 = Call<Tuples.Map<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [[1, 1], [2, 2], [3, 3], [4, 4]]\n\ntype result2 = Call<Tuples.FlatMap<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [1, 1, 2, 2, 3, 3, 4, 4]\n```\n\n#### Transforming an object type\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YBCEEANugIYB2ZcAvnAGZQQhwBEACwjliUNDH4BuAFAyA9PLgAZdDADkrYr0hl0cMr32cArk1LAILODAg2ozMp2h9mcCIRLwYATwwAuGV8MOAAVCABBZABJZAYfWggGABMAHlCAPjgAXhQ0dFSZODDMIrgAbTLi-CJSMgA6HBBgGEofVOo6RhZ6gFEARxMGWjJUsh8QPDoMjNLi6s86+oiyMmAAcyZUpBA1FIYYBn9EOCZ0AHcAVT0oY5goE30ONlmq3EXyeoBlJgYAa3QAGEGHoACLodBgObzGpeBorNabbZwYDJY5ke7AJjrdgZMoAXRkGVkwX0UWi13QUByYUiMTiCSSaQQZUU8wAegB+Mqo9ETKa0WTFTjAKAYgByDF26Mx2KFcFoIJgkulBll61kL1kbIASmoTFAWIFSWEaSziry1eI5WVdodkgcjiczucAPomG53B5PeUisUwV2-VUY60asqKjGBqXoGWhzVSIA)\n\n```ts\nimport { Pipe, Objects, Booleans } from \"hotscript\";\n\n// Let's compose some functions to transform an object type:\ntype ToAPIPayload<T> = Pipe<\n  T,\n  [\n    Objects.OmitBy<Booleans.Equals<symbol>>,\n    Objects.Assign<{ metadata: { newUser: true } }>,\n    Objects.SnakeCaseDeep,\n    Objects.Assign<{ id: string }>\n  ]\n>;\ntype T = ToAPIPayload<{\n  id: symbol;\n  firstName: string;\n  lastName: string;\n}>;\n// Returns:\ntype T = {\n  id: string;\n  metadata: { new_user: true };\n  first_name: string;\n  last_name: string;\n};\n```\n\n#### Parsing a route path\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YDKMUwAdgOYVwDCE4EZ6AMugGYxsAFQCuYADbpmAWQCGMYgAs4AXzh8o7OACJFEcsVpgY2gNwAoczACeGOFCkBWOAF4UadAB5zcOAHo-X18APQB+Hx0-ES4oMj9PYAATAC4yGnoGAD4-SDS4hLpE9AAPZLoREDx0KEztTAiAbQjfalpGMgA6SglgGE9tP21M+qC4UQkpDoAxYHEYas9WjM7qWVgyAHVexX7+zOHmsbFJTrkwb1HfNg4uXgFPJsugpfaOoVoQXe04AB8dWoOTxa6Ve3XEvX6ySGI0uAF1ModAUFxic3hAAKp0YAQOgw3z4IikTpTTQgACidHSUjxuEIJHIHTOADVZOIRFILpc5Aodo8gdylB0tjAdto0m0GHU4OKMkingLFELtv1ypVqlLVVUaodfPDERFYeZMqYgA)\n\nhttps://user-images.githubusercontent.com/2315749/222081717-96217cd2-ac89-4e06-a942-17fbda717cd2.mp4\n\n```ts\nimport { Pipe, Objects, Strings, ComposeLeft, Tuples, Match } from \"hotscript\";\n\ntype res5 = Pipe<\n  //    ^? { id: string, index: number }\n  \"/users/<id:string>/posts/<index:number>\",\n  [\n    Strings.Split<\"/\">,\n    Tuples.Filter<Strings.StartsWith<\"<\">>,\n    Tuples.Map<ComposeLeft<[Strings.Trim<\"<\" | \">\">, Strings.Split<\":\">]>>,\n    Tuples.ToUnion,\n    Objects.FromEntries,\n    Objects.MapValues<\n      Match<[Match.With<\"string\", string>, Match.With<\"number\", number>]>\n    >\n  ]\n>;\n```\n\n## API\n\n- [x] Core\n  - [x] `Pipe<Input, Fn[]>`\n  - [x] `PipeRight<Fn[], Input>`\n  - [x] `Call<Fn, ...Arg>`\n  - [x] `Apply<Fn, Arg[]>`\n  - [x] `PartialApply<Fn, Arg[]>`\n  - [x] `Compose<Fn[]>`\n  - [x] `ComposeLeft<Fn[]>`\n- [x] Function\n  - [x] `ReturnType<Fn>`\n  - [x] `Parameters<Fn>`\n  - [x] `Parameter<N, Fn>`\n- [ ] Tuples\n  - [x] `Create<X> -> [X]`\n  - [x] `Partition<Tuple>`\n  - [x] `IsEmpty<Tuple>`\n  - [x] `Zip<...Tuple[]>`\n  - [x] `ZipWith<Fn, ...Tuple[]>`\n  - [x] `Sort<Tuple>`\n  - [x] `Head<Tuple>`\n  - [x] `Tail<Tuple>`\n  - [x] `At<N, Tuple>`\n  - [x] `Last<Tuple>`\n  - [x] `FlatMap<Fn, Tuple>`\n  - [x] `Find<Fn, Tuple>`\n  - [x] `Drop<N, Tuple>`\n  - [x] `Take<N, Tuple>`\n  - [x] `TakeWhile<Fn, Tuple>`\n  - [x] `GroupBy<Fn, Tuple>`\n  - [x] `Join<Str, Tuple>`\n  - [x] `Map<Fn, Tuple>`\n  - [x] `Filter<Fn, Tuple>`\n  - [x] `Reduce<Fn, Init, Tuple>`\n  - [x] `ReduceRight<Fn, Init, Tuple>`\n  - [x] `Every<Fn, Tuple>`\n  - [x] `Some<Fn, Tuple>`\n  - [x] `SplitAt<N, Tuple>`\n  - [x] `ToUnion<Tuple>`\n  - [x] `ToIntersection<Tuple>`\n  - [x] `Prepend<X, Tuple>`\n  - [x] `Append<X, Tuple>`\n  - [x] `Concat<T1, T2>`\n  - [x] `Min<Tuple>`\n  - [x] `Max<Tuple>`\n  - [x] `Sum<Tuple>`\n- [ ] Object\n  - [x] `Readonly<Obj>`\n  - [x] `Mutable<Obj>`\n  - [x] `Required<Obj>`\n  - [x] `Partial<Obj>`\n  - [x] `ReadonlyDeep<Obj>`\n  - [x] `MutableDeep<Obj>`\n  - [x] `RequiredDeep<Obj>`\n  - [x] `PartialDeep<Obj>`\n  - [x] `Update<Path, Fn | V, Obj>`\n  - [x] `Record<Key, Value>`\n  - [x] `Keys<Obj>`\n  - [x] `Values<Obj>`\n  - [x] `AllPaths<Obj>`\n  - [x] `Create<Pattern, X>`\n  - [x] `Get<Path, Obj>`\n  - [x] `FromEntries<[Key, Value]>`\n  - [x] `Entries<Obj>`\n  - [x] `MapValues<Fn, Obj>`\n  - [x] `MapKeys<Fn, Obj>`\n  - [x] `Assign<...Obj>`\n  - [x] `Pick<Key, Obj>`\n  - [x] `PickBy<Fn, Obj>`\n  - [x] `Omit<Key, Obj>`\n  - [x] `OmitBy<Fn, Obj>`\n  - [x] `CamelCase<Obj>`\n  - [x] `CamelCaseDeep<Obj>`\n  - [x] `SnakeCase<Obj>`\n  - [x] `SnakeCaseDeep<Obj>`\n  - [x] `KebabCase<Obj>`\n  - [x] `KebabCaseDeep<Obj>`\n- [ ] Union\n  - [x] `Map<Fn, U>`\n  - [x] `Extract<T, U>`\n  - [x] `ExtractBy<Fn, U>`\n  - [x] `Exclude<T, U>`\n  - [x] `ExcludeBy<Fn, U>`\n  - [x] `NonNullable<U>`\n  - [x] `ToTuple<U>`\n  - [x] `ToIntersection<U>`\n- [ ] String\n  - [x] `Length<Str>`\n  - [x] `TrimLeft<Str>`\n  - [x] `TrimRight<Str>`\n  - [x] `Trim<Str>`\n  - [x] `Join<Sep, Str>`\n  - [x] `Replace<From, To, Str>`\n  - [x] `Slice<Start, End, Str>`\n  - [x] `Split<Sep, Str>`\n  - [x] `Repeat<N, Str>`\n  - [x] `StartsWith<S, Str>`\n  - [x] `EndsWith<E, Str>`\n  - [x] `ToTuple<Str>`\n  - [x] `ToNumber<Str>`\n  - [x] `ToString<Str>`\n  - [x] `Prepend<Start, Str>`\n  - [x] `Append<End, Str>`\n  - [x] `Uppercase<Str>`\n  - [x] `Lowercase<Str>`\n  - [x] `Capitalize<Str>`\n  - [x] `Uncapitalize<Str>`\n  - [x] `SnakeCase<Str>`\n  - [x] `CamelCase<Str>`\n  - [x] `KebabCase<Str>`\n  - [x] `Compare<Str, Str>`\n  - [x] `Equal<Str, Str>`\n  - [x] `NotEqual<Str, Str>`\n  - [x] `LessThan<Str, Str>`\n  - [x] `LessThanOrEqual<Str, Str>`\n  - [x] `GreaterThan<Str, Str>`\n  - [x] `GreaterThanOrEqual<Str, Str>`\n- [ ] Number\n  - [x] `Add<N, M>`\n  - [x] `Multiply<N, M>`\n  - [x] `Subtract<N, M>`\n  - [x] `Negate<N>`\n  - [x] `Power<N, M>`\n  - [x] `Div<N, M>`\n  - [x] `Mod<N, M>`\n  - [x] `Abs<N>`\n  - [x] `Compare<N, M>`\n  - [x] `GreaterThan<N, M>`\n  - [x] `GreaterThanOrEqual<N, M>`\n  - [x] `LessThan<N, M>`\n  - [x] `LessThanOrEqual<N, M>`\n- [ ] Boolean\n  - [x] `And<Bool, Bool>`\n  - [x] `Or<Bool, Bool>`\n  - [x] `XOr<Bool, Bool>`\n  - [x] `Not<Bool>`\n  - [x] `Extends<A, B>`\n  - [x] `Equals<A, B>`\n  - [x] `DoesNotExtend<A, B>`\n","readmeFilename":"README.md","gitHead":"ee2c3b8e91de9426b043240b68ff30b749f3d8c2","_id":"hotscript@1.0.12-rc.0","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-WkbJPNCfezDpIXs6Ix3+Q2rrJYx9wNFDfXuBynOY7+ZdJ0afNDrpFoGaFyZUJnaAmpdkA9eSrU5/31aRyAeQyg==","shasum":"ebc02df50d299a67adaa903026082173518af02b","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.12-rc.0.tgz","fileCount":43,"unpackedSize":167125,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgdAuSR+GtBMKo1cppDAdK14yYPYx5FuJmh+YnCKknFAiEAnGpk2aSLZFCkHjnwy6+zetRoT7gHW4igHM67z9DD2mw="}]},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.12-rc.0_1683368218951_0.29378287678169857"},"_hasShrinkwrap":false},"1.0.12":{"name":"hotscript","version":"1.0.12","description":"A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.","main":"./dist/index.cjs","module":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format esm,cjs && tsc src/index.ts --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","tsup":"^6.7.0","typescript":"^4.9.5"},"gitHead":"7ee54c949c0e0d1678ed08d73a548bb00dea76dd","_id":"hotscript@1.0.12","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-ANWgLMEhhfmmUsAkmJR6eclnVMC7KrDAAtOxWYN7PclUr1N5P9irs3WVJvMT/NpUxOXluYXj5JgyBG0iuKW5+Q==","shasum":"4614fbf77f5fb3d1b60fd3f7743edd2bd743dfd0","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.12.tgz","fileCount":42,"unpackedSize":167246,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+38AJMX9xOM6jlkRByMEfAWfbPqVNTaJTRxSPmybp2AIgWOEm2cYq82KFcNUAdSkELtnxsk2XRtmsdI0tcSUxZpY="}]},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.12_1683378158433_0.5770013059884773"},"_hasShrinkwrap":false},"1.0.13-test.0":{"name":"hotscript","version":"1.0.13-test.0","description":"A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.","main":"./dist/index.cjs","module":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts --declaration --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"readme":"# Higher-Order TypeScript (HOTScript)\n\nA library of composable functions for the type level!\n\nTransform your TypeScript types in any way you want using functions you already know.\n\n![image](https://user-images.githubusercontent.com/9265418/223854503-b54f6a62-9f21-4953-aaa3-5d54699516a7.png)\n\n## Features\n\n- Type-level higher-order functions (`Tuples.Map`, `Tuples.Filter`, `Objects.MapValues`, etc).\n- Type-level pattern matching with `Match`.\n- Performant math operations (`Numbers.Add`, `Numbers.Sub`, `Numbers.Mul`, `Numbers.Div`, etc).\n- Custom \"lambda\" functions.\n\n🚧 work in progress 🚧\n\n## Installation\n\nYou can find HotScript on npm:\n\n```ts\nnpm install -D hotscript\n```\n\nHotScript is a work-in-progress library, so expect **breaking changes** in its API.\n\n## Examples\n\n#### Transforming a list\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgFQK5gA26AztgMoxTAB2A5mXAHJ4gBG6UJcAvnAGZQIIOACIAFhBgkAxtTAxRAbgBQKmAE8McKKQCMcALwo06ADwq4cAPTWrAPQD8cAGwAmS3ADae7G+wAzNgALAC6mJ5enlb4RKQAdACyAIZgZizsnCTxAIIAJnlmAQB8xdhWFTZ2XsHYAKzYLtgA7KHRuATE2QBSELRmovGiZZWjY1a2YsHxdfEu8c2i7ZTU9NnkRMAwA0Mj4+OTXqLBotiidadiLpeii22VsV1JqWYrtAzxyLoYNIWiesMRod-icznoLmDrmC7u1HgkUmk3mt4jgIBkOFA9hVDnpanBwdg9E18a1YZ0EuRWPtqQc7O5PG1ikogA)\n\n<!-- prettier-ignore -->\n```ts\nimport { Pipe, Tuples, Strings, Numbers } from \"hotscript\";\n\ntype res1 = Pipe<\n  //  ^? 62\n  [1, 2, 3, 4],\n  [\n    Tuples.Map<Numbers.Add<3>>,       // [4, 5, 6, 7]\n    Tuples.Join<\".\">,                 // \"4.5.6.7\"\n    Strings.Split<\".\">,               // [\"4\", \"5\", \"6\", \"7\"]\n    Tuples.Map<Strings.Prepend<\"1\">>, // [\"14\", \"15\", \"16\", \"17\"]\n    Tuples.Map<Strings.ToNumber>,     // [14, 15, 16, 17]\n    Tuples.Sum                        // 62\n  ]\n>;\n```\n\n#### Defining a first-class function\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgYQIYBt0Bo4DEB2OAKgK5joCmAznAL5wBmUEIcARABYQxUDGUwMDDYBuAFBiA9JLhEOwGgrio4MAJ5gKAWkoA3CunbpUIAEYATVGwCEY4PhgUoDVLwpwAImXTBeqR3AUAB6O+OY0BIhicHBQFDAkUPgAXHAA2jDyVGlsqFAA5gAMbAC6OJkKOXlFpSXitBLqmrHUJOgwAIxwALwoGOgAPKTk1AB0ALKoYANe5L7+FAB8OGkdOABMOADMOAAsJYvi0jEnAHoA-I0a7nFUbTDrPX2YQ95juMYwk9OzPn6Oy3SazgmzgOzg+0OUhkJzgFyAA)\n\n```ts\nimport { Call, Fn, Tuples } from \"hotscript\";\n\n// This is a type-level \"lambda\"!\ninterface Duplicate extends Fn {\n  return: [this[\"arg0\"], this[\"arg0\"]];\n}\n\ntype result1 = Call<Tuples.Map<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [[1, 1], [2, 2], [3, 3], [4, 4]]\n\ntype result2 = Call<Tuples.FlatMap<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [1, 1, 2, 2, 3, 3, 4, 4]\n```\n\n#### Transforming an object type\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YBCEEANugIYB2ZcAvnAGZQQhwBEACwjliUNDH4BuAFAyA9PLgAZdDADkrYr0hl0cMr32cArk1LAILODAg2ozMp2h9mcCIRLwYATwwAuGV8MOAAVCABBZABJZAYfWggGABMAHlCAPjgAXhQ0dFSZODDMIrgAbTLi-CJSMgA6HBBgGEofVOo6RhZ6gFEARxMGWjJUsh8QPDoMjNLi6s86+oiyMmAAcyZUpBA1FIYYBn9EOCZ0AHcAVT0oY5goE30ONlmq3EXyeoBlJgYAa3QAGEGHoACLodBgObzGpeBorNabbZwYDJY5ke7AJjrdgZMoAXRkGVkwX0UWi13QUByYUiMTiCSSaQQZUU8wAegB+Mqo9ETKa0WTFTjAKAYgByDF26Mx2KFcFoIJgkulBll61kL1kbIASmoTFAWIFSWEaSziry1eI5WVdodkgcjiczucAPomG53B5PeUisUwV2-VUY60asqKjGBqXoGWhzVSIA)\n\n```ts\nimport { Pipe, Objects, Booleans } from \"hotscript\";\n\n// Let's compose some functions to transform an object type:\ntype ToAPIPayload<T> = Pipe<\n  T,\n  [\n    Objects.OmitBy<Booleans.Equals<symbol>>,\n    Objects.Assign<{ metadata: { newUser: true } }>,\n    Objects.SnakeCaseDeep,\n    Objects.Assign<{ id: string }>\n  ]\n>;\ntype T = ToAPIPayload<{\n  id: symbol;\n  firstName: string;\n  lastName: string;\n}>;\n// Returns:\ntype T = {\n  id: string;\n  metadata: { new_user: true };\n  first_name: string;\n  last_name: string;\n};\n```\n\n#### Parsing a route path\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YDKMUwAdgOYVwDCE4EZ6AMugGYxsAFQCuYADbpmAWQCGMYgAs4AXzh8o7OACJFEcsVpgY2gNwAoczACeGOFCkBWOAF4UadAB5zcOAHo-X18APQB+Hx0-ES4oMj9PYAATAC4yGnoGAD4-SDS4hLpE9AAPZLoREDx0KEztTAiAbQjfalpGMgA6SglgGE9tP21M+qC4UQkpDoAxYHEYas9WjM7qWVgyAHVexX7+zOHmsbFJTrkwb1HfNg4uXgFPJsugpfaOoVoQXe04AB8dWoOTxa6Ve3XEvX6ySGI0uAF1ModAUFxic3hAAKp0YAQOgw3z4IikTpTTQgACidHSUjxuEIJHIHTOADVZOIRFILpc5Aodo8gdylB0tjAdto0m0GHU4OKMkingLFELtv1ypVqlLVVUaodfPDERFYeZMqYgA)\n\nhttps://user-images.githubusercontent.com/2315749/222081717-96217cd2-ac89-4e06-a942-17fbda717cd2.mp4\n\n```ts\nimport { Pipe, Objects, Strings, ComposeLeft, Tuples, Match } from \"hotscript\";\n\ntype res5 = Pipe<\n  //    ^? { id: string, index: number }\n  \"/users/<id:string>/posts/<index:number>\",\n  [\n    Strings.Split<\"/\">,\n    Tuples.Filter<Strings.StartsWith<\"<\">>,\n    Tuples.Map<ComposeLeft<[Strings.Trim<\"<\" | \">\">, Strings.Split<\":\">]>>,\n    Tuples.ToUnion,\n    Objects.FromEntries,\n    Objects.MapValues<\n      Match<[Match.With<\"string\", string>, Match.With<\"number\", number>]>\n    >\n  ]\n>;\n```\n\n## API\n\n- [x] Core\n  - [x] `Pipe<Input, Fn[]>`\n  - [x] `PipeRight<Fn[], Input>`\n  - [x] `Call<Fn, ...Arg>`\n  - [x] `Apply<Fn, Arg[]>`\n  - [x] `PartialApply<Fn, Arg[]>`\n  - [x] `Compose<Fn[]>`\n  - [x] `ComposeLeft<Fn[]>`\n- [x] Function\n  - [x] `ReturnType<Fn>`\n  - [x] `Parameters<Fn>`\n  - [x] `Parameter<N, Fn>`\n- [ ] Tuples\n  - [x] `Create<X> -> [X]`\n  - [x] `Partition<Tuple>`\n  - [x] `IsEmpty<Tuple>`\n  - [x] `Zip<...Tuple[]>`\n  - [x] `ZipWith<Fn, ...Tuple[]>`\n  - [x] `Sort<Tuple>`\n  - [x] `Head<Tuple>`\n  - [x] `Tail<Tuple>`\n  - [x] `At<N, Tuple>`\n  - [x] `Last<Tuple>`\n  - [x] `FlatMap<Fn, Tuple>`\n  - [x] `Find<Fn, Tuple>`\n  - [x] `Drop<N, Tuple>`\n  - [x] `Take<N, Tuple>`\n  - [x] `TakeWhile<Fn, Tuple>`\n  - [x] `GroupBy<Fn, Tuple>`\n  - [x] `Join<Str, Tuple>`\n  - [x] `Map<Fn, Tuple>`\n  - [x] `Filter<Fn, Tuple>`\n  - [x] `Reduce<Fn, Init, Tuple>`\n  - [x] `ReduceRight<Fn, Init, Tuple>`\n  - [x] `Reverse<Tuple>`\n  - [x] `Every<Fn, Tuple>`\n  - [x] `Some<Fn, Tuple>`\n  - [x] `SplitAt<N, Tuple>`\n  - [x] `ToUnion<Tuple>`\n  - [x] `ToIntersection<Tuple>`\n  - [x] `Prepend<X, Tuple>`\n  - [x] `Append<X, Tuple>`\n  - [x] `Concat<T1, T2>`\n  - [x] `Min<Tuple>`\n  - [x] `Max<Tuple>`\n  - [x] `Sum<Tuple>`\n- [ ] Object\n  - [x] `Readonly<Obj>`\n  - [x] `Mutable<Obj>`\n  - [x] `Required<Obj>`\n  - [x] `Partial<Obj>`\n  - [x] `ReadonlyDeep<Obj>`\n  - [x] `MutableDeep<Obj>`\n  - [x] `RequiredDeep<Obj>`\n  - [x] `PartialDeep<Obj>`\n  - [x] `Update<Path, Fn | V, Obj>`\n  - [x] `Record<Key, Value>`\n  - [x] `Keys<Obj>`\n  - [x] `Values<Obj>`\n  - [x] `AllPaths<Obj>`\n  - [x] `Create<Pattern, X>`\n  - [x] `Get<Path, Obj>`\n  - [x] `FromEntries<[Key, Value]>`\n  - [x] `Entries<Obj>`\n  - [x] `MapValues<Fn, Obj>`\n  - [x] `MapKeys<Fn, Obj>`\n  - [x] `Assign<...Obj>`\n  - [x] `Pick<Key, Obj>`\n  - [x] `PickBy<Fn, Obj>`\n  - [x] `Omit<Key, Obj>`\n  - [x] `OmitBy<Fn, Obj>`\n  - [x] `CamelCase<Obj>`\n  - [x] `CamelCaseDeep<Obj>`\n  - [x] `SnakeCase<Obj>`\n  - [x] `SnakeCaseDeep<Obj>`\n  - [x] `KebabCase<Obj>`\n  - [x] `KebabCaseDeep<Obj>`\n- [ ] Union\n  - [x] `Map<Fn, U>`\n  - [x] `Extract<T, U>`\n  - [x] `ExtractBy<Fn, U>`\n  - [x] `Exclude<T, U>`\n  - [x] `ExcludeBy<Fn, U>`\n  - [x] `NonNullable<U>`\n  - [x] `ToTuple<U>`\n  - [x] `ToIntersection<U>`\n- [ ] String\n  - [x] `Length<Str>`\n  - [x] `TrimLeft<Str>`\n  - [x] `TrimRight<Str>`\n  - [x] `Trim<Str>`\n  - [x] `Join<Sep, Str>`\n  - [x] `Replace<From, To, Str>`\n  - [x] `Slice<Start, End, Str>`\n  - [x] `Split<Sep, Str>`\n  - [x] `Repeat<N, Str>`\n  - [x] `StartsWith<S, Str>`\n  - [x] `EndsWith<E, Str>`\n  - [x] `ToTuple<Str>`\n  - [x] `ToNumber<Str>`\n  - [x] `ToString<Str>`\n  - [x] `Prepend<Start, Str>`\n  - [x] `Append<End, Str>`\n  - [x] `Uppercase<Str>`\n  - [x] `Lowercase<Str>`\n  - [x] `Capitalize<Str>`\n  - [x] `Uncapitalize<Str>`\n  - [x] `SnakeCase<Str>`\n  - [x] `CamelCase<Str>`\n  - [x] `KebabCase<Str>`\n  - [x] `Compare<Str, Str>`\n  - [x] `Equal<Str, Str>`\n  - [x] `NotEqual<Str, Str>`\n  - [x] `LessThan<Str, Str>`\n  - [x] `LessThanOrEqual<Str, Str>`\n  - [x] `GreaterThan<Str, Str>`\n  - [x] `GreaterThanOrEqual<Str, Str>`\n- [ ] Number\n  - [x] `Add<N, M>`\n  - [x] `Multiply<N, M>`\n  - [x] `Subtract<N, M>`\n  - [x] `Negate<N>`\n  - [x] `Power<N, M>`\n  - [x] `Div<N, M>`\n  - [x] `Mod<N, M>`\n  - [x] `Abs<N>`\n  - [x] `Compare<N, M>`\n  - [x] `GreaterThan<N, M>`\n  - [x] `GreaterThanOrEqual<N, M>`\n  - [x] `LessThan<N, M>`\n  - [x] `LessThanOrEqual<N, M>`\n- [ ] Boolean\n  - [x] `And<Bool, Bool>`\n  - [x] `Or<Bool, Bool>`\n  - [x] `XOr<Bool, Bool>`\n  - [x] `Not<Bool>`\n  - [x] `Extends<A, B>`\n  - [x] `Equals<A, B>`\n  - [x] `DoesNotExtend<A, B>`\n","readmeFilename":"README.md","gitHead":"a7b605f1321d63a819693fd1694fe06f40c3c765","_id":"hotscript@1.0.13-test.0","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-Ah6gE7bM/aLPWXZ0pI+RoD6FrN9E6/6vGsf7nalUdt4lZqoHiXbFj6Cl/OzD4ZKIEDYbIOOCzppQIr588p/9Qw==","shasum":"cdb06bb7d6a0bb7fecfbe2813ced3571dca9fc91","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.13-test.0.tgz","fileCount":79,"unpackedSize":169006,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNso3OHgvwdAy/xeEjzSL25fwUAB5xFVB0qCmdWWt74wIhAPy8DWxIFqMdIHEo21V67KSv4nxpJQyk8C9n3La3oweo"}]},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.13-test.0_1683378857181_0.14247409303934533"},"_hasShrinkwrap":false},"1.0.13-test.1":{"name":"hotscript","version":"1.0.13-test.1","description":"A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.","main":"./dist/index.js","module":"./dist/index.mjs","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts --declaration --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"readme":"# Higher-Order TypeScript (HOTScript)\n\nA library of composable functions for the type level!\n\nTransform your TypeScript types in any way you want using functions you already know.\n\n![image](https://user-images.githubusercontent.com/9265418/223854503-b54f6a62-9f21-4953-aaa3-5d54699516a7.png)\n\n## Features\n\n- Type-level higher-order functions (`Tuples.Map`, `Tuples.Filter`, `Objects.MapValues`, etc).\n- Type-level pattern matching with `Match`.\n- Performant math operations (`Numbers.Add`, `Numbers.Sub`, `Numbers.Mul`, `Numbers.Div`, etc).\n- Custom \"lambda\" functions.\n\n🚧 work in progress 🚧\n\n## Installation\n\nYou can find HotScript on npm:\n\n```ts\nnpm install -D hotscript\n```\n\nHotScript is a work-in-progress library, so expect **breaking changes** in its API.\n\n## Examples\n\n#### Transforming a list\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgFQK5gA26AztgMoxTAB2A5mXAHJ4gBG6UJcAvnAGZQIIOACIAFhBgkAxtTAxRAbgBQKmAE8McKKQCMcALwo06ADwq4cAPTWrAPQD8cAGwAmS3ADae7G+wAzNgALAC6mJ5enlb4RKQAdACyAIZgZizsnCTxAIIAJnlmAQB8xdhWFTZ2XsHYAKzYLtgA7KHRuATE2QBSELRmovGiZZWjY1a2YsHxdfEu8c2i7ZTU9NnkRMAwA0Mj4+OTXqLBotiidadiLpeii22VsV1JqWYrtAzxyLoYNIWiesMRod-icznoLmDrmC7u1HgkUmk3mt4jgIBkOFA9hVDnpanBwdg9E18a1YZ0EuRWPtqQc7O5PG1ikogA)\n\n<!-- prettier-ignore -->\n```ts\nimport { Pipe, Tuples, Strings, Numbers } from \"hotscript\";\n\ntype res1 = Pipe<\n  //  ^? 62\n  [1, 2, 3, 4],\n  [\n    Tuples.Map<Numbers.Add<3>>,       // [4, 5, 6, 7]\n    Tuples.Join<\".\">,                 // \"4.5.6.7\"\n    Strings.Split<\".\">,               // [\"4\", \"5\", \"6\", \"7\"]\n    Tuples.Map<Strings.Prepend<\"1\">>, // [\"14\", \"15\", \"16\", \"17\"]\n    Tuples.Map<Strings.ToNumber>,     // [14, 15, 16, 17]\n    Tuples.Sum                        // 62\n  ]\n>;\n```\n\n#### Defining a first-class function\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgYQIYBt0Bo4DEB2OAKgK5joCmAznAL5wBmUEIcARABYQxUDGUwMDDYBuAFBiA9JLhEOwGgrio4MAJ5gKAWkoA3CunbpUIAEYATVGwCEY4PhgUoDVLwpwAImXTBeqR3AUAB6O+OY0BIhicHBQFDAkUPgAXHAA2jDyVGlsqFAA5gAMbAC6OJkKOXlFpSXitBLqmrHUJOgwAIxwALwoGOgAPKTk1AB0ALKoYANe5L7+FAB8OGkdOABMOADMOAAsJYvi0jEnAHoA-I0a7nFUbTDrPX2YQ95juMYwk9OzPn6Oy3SazgmzgOzg+0OUhkJzgFyAA)\n\n```ts\nimport { Call, Fn, Tuples } from \"hotscript\";\n\n// This is a type-level \"lambda\"!\ninterface Duplicate extends Fn {\n  return: [this[\"arg0\"], this[\"arg0\"]];\n}\n\ntype result1 = Call<Tuples.Map<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [[1, 1], [2, 2], [3, 3], [4, 4]]\n\ntype result2 = Call<Tuples.FlatMap<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [1, 1, 2, 2, 3, 3, 4, 4]\n```\n\n#### Transforming an object type\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YBCEEANugIYB2ZcAvnAGZQQhwBEACwjliUNDH4BuAFAyA9PLgAZdDADkrYr0hl0cMr32cArk1LAILODAg2ozMp2h9mcCIRLwYATwwAuGV8MOAAVCABBZABJZAYfWggGABMAHlCAPjgAXhQ0dFSZODDMIrgAbTLi-CJSMgA6HBBgGEofVOo6RhZ6gFEARxMGWjJUsh8QPDoMjNLi6s86+oiyMmAAcyZUpBA1FIYYBn9EOCZ0AHcAVT0oY5goE30ONlmq3EXyeoBlJgYAa3QAGEGHoACLodBgObzGpeBorNabbZwYDJY5ke7AJjrdgZMoAXRkGVkwX0UWi13QUByYUiMTiCSSaQQZUU8wAegB+Mqo9ETKa0WTFTjAKAYgByDF26Mx2KFcFoIJgkulBll61kL1kbIASmoTFAWIFSWEaSziry1eI5WVdodkgcjiczucAPomG53B5PeUisUwV2-VUY60asqKjGBqXoGWhzVSIA)\n\n```ts\nimport { Pipe, Objects, Booleans } from \"hotscript\";\n\n// Let's compose some functions to transform an object type:\ntype ToAPIPayload<T> = Pipe<\n  T,\n  [\n    Objects.OmitBy<Booleans.Equals<symbol>>,\n    Objects.Assign<{ metadata: { newUser: true } }>,\n    Objects.SnakeCaseDeep,\n    Objects.Assign<{ id: string }>\n  ]\n>;\ntype T = ToAPIPayload<{\n  id: symbol;\n  firstName: string;\n  lastName: string;\n}>;\n// Returns:\ntype T = {\n  id: string;\n  metadata: { new_user: true };\n  first_name: string;\n  last_name: string;\n};\n```\n\n#### Parsing a route path\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YDKMUwAdgOYVwDCE4EZ6AMugGYxsAFQCuYADbpmAWQCGMYgAs4AXzh8o7OACJFEcsVpgY2gNwAoczACeGOFCkBWOAF4UadAB5zcOAHo-X18APQB+Hx0-ES4oMj9PYAATAC4yGnoGAD4-SDS4hLpE9AAPZLoREDx0KEztTAiAbQjfalpGMgA6SglgGE9tP21M+qC4UQkpDoAxYHEYas9WjM7qWVgyAHVexX7+zOHmsbFJTrkwb1HfNg4uXgFPJsugpfaOoVoQXe04AB8dWoOTxa6Ve3XEvX6ySGI0uAF1ModAUFxic3hAAKp0YAQOgw3z4IikTpTTQgACidHSUjxuEIJHIHTOADVZOIRFILpc5Aodo8gdylB0tjAdto0m0GHU4OKMkingLFELtv1ypVqlLVVUaodfPDERFYeZMqYgA)\n\nhttps://user-images.githubusercontent.com/2315749/222081717-96217cd2-ac89-4e06-a942-17fbda717cd2.mp4\n\n```ts\nimport { Pipe, Objects, Strings, ComposeLeft, Tuples, Match } from \"hotscript\";\n\ntype res5 = Pipe<\n  //    ^? { id: string, index: number }\n  \"/users/<id:string>/posts/<index:number>\",\n  [\n    Strings.Split<\"/\">,\n    Tuples.Filter<Strings.StartsWith<\"<\">>,\n    Tuples.Map<ComposeLeft<[Strings.Trim<\"<\" | \">\">, Strings.Split<\":\">]>>,\n    Tuples.ToUnion,\n    Objects.FromEntries,\n    Objects.MapValues<\n      Match<[Match.With<\"string\", string>, Match.With<\"number\", number>]>\n    >\n  ]\n>;\n```\n\n## API\n\n- [x] Core\n  - [x] `Pipe<Input, Fn[]>`\n  - [x] `PipeRight<Fn[], Input>`\n  - [x] `Call<Fn, ...Arg>`\n  - [x] `Apply<Fn, Arg[]>`\n  - [x] `PartialApply<Fn, Arg[]>`\n  - [x] `Compose<Fn[]>`\n  - [x] `ComposeLeft<Fn[]>`\n- [x] Function\n  - [x] `ReturnType<Fn>`\n  - [x] `Parameters<Fn>`\n  - [x] `Parameter<N, Fn>`\n- [ ] Tuples\n  - [x] `Create<X> -> [X]`\n  - [x] `Partition<Tuple>`\n  - [x] `IsEmpty<Tuple>`\n  - [x] `Zip<...Tuple[]>`\n  - [x] `ZipWith<Fn, ...Tuple[]>`\n  - [x] `Sort<Tuple>`\n  - [x] `Head<Tuple>`\n  - [x] `Tail<Tuple>`\n  - [x] `At<N, Tuple>`\n  - [x] `Last<Tuple>`\n  - [x] `FlatMap<Fn, Tuple>`\n  - [x] `Find<Fn, Tuple>`\n  - [x] `Drop<N, Tuple>`\n  - [x] `Take<N, Tuple>`\n  - [x] `TakeWhile<Fn, Tuple>`\n  - [x] `GroupBy<Fn, Tuple>`\n  - [x] `Join<Str, Tuple>`\n  - [x] `Map<Fn, Tuple>`\n  - [x] `Filter<Fn, Tuple>`\n  - [x] `Reduce<Fn, Init, Tuple>`\n  - [x] `ReduceRight<Fn, Init, Tuple>`\n  - [x] `Reverse<Tuple>`\n  - [x] `Every<Fn, Tuple>`\n  - [x] `Some<Fn, Tuple>`\n  - [x] `SplitAt<N, Tuple>`\n  - [x] `ToUnion<Tuple>`\n  - [x] `ToIntersection<Tuple>`\n  - [x] `Prepend<X, Tuple>`\n  - [x] `Append<X, Tuple>`\n  - [x] `Concat<T1, T2>`\n  - [x] `Min<Tuple>`\n  - [x] `Max<Tuple>`\n  - [x] `Sum<Tuple>`\n- [ ] Object\n  - [x] `Readonly<Obj>`\n  - [x] `Mutable<Obj>`\n  - [x] `Required<Obj>`\n  - [x] `Partial<Obj>`\n  - [x] `ReadonlyDeep<Obj>`\n  - [x] `MutableDeep<Obj>`\n  - [x] `RequiredDeep<Obj>`\n  - [x] `PartialDeep<Obj>`\n  - [x] `Update<Path, Fn | V, Obj>`\n  - [x] `Record<Key, Value>`\n  - [x] `Keys<Obj>`\n  - [x] `Values<Obj>`\n  - [x] `AllPaths<Obj>`\n  - [x] `Create<Pattern, X>`\n  - [x] `Get<Path, Obj>`\n  - [x] `FromEntries<[Key, Value]>`\n  - [x] `Entries<Obj>`\n  - [x] `MapValues<Fn, Obj>`\n  - [x] `MapKeys<Fn, Obj>`\n  - [x] `Assign<...Obj>`\n  - [x] `Pick<Key, Obj>`\n  - [x] `PickBy<Fn, Obj>`\n  - [x] `Omit<Key, Obj>`\n  - [x] `OmitBy<Fn, Obj>`\n  - [x] `CamelCase<Obj>`\n  - [x] `CamelCaseDeep<Obj>`\n  - [x] `SnakeCase<Obj>`\n  - [x] `SnakeCaseDeep<Obj>`\n  - [x] `KebabCase<Obj>`\n  - [x] `KebabCaseDeep<Obj>`\n- [ ] Union\n  - [x] `Map<Fn, U>`\n  - [x] `Extract<T, U>`\n  - [x] `ExtractBy<Fn, U>`\n  - [x] `Exclude<T, U>`\n  - [x] `ExcludeBy<Fn, U>`\n  - [x] `NonNullable<U>`\n  - [x] `ToTuple<U>`\n  - [x] `ToIntersection<U>`\n- [ ] String\n  - [x] `Length<Str>`\n  - [x] `TrimLeft<Str>`\n  - [x] `TrimRight<Str>`\n  - [x] `Trim<Str>`\n  - [x] `Join<Sep, Str>`\n  - [x] `Replace<From, To, Str>`\n  - [x] `Slice<Start, End, Str>`\n  - [x] `Split<Sep, Str>`\n  - [x] `Repeat<N, Str>`\n  - [x] `StartsWith<S, Str>`\n  - [x] `EndsWith<E, Str>`\n  - [x] `ToTuple<Str>`\n  - [x] `ToNumber<Str>`\n  - [x] `ToString<Str>`\n  - [x] `Prepend<Start, Str>`\n  - [x] `Append<End, Str>`\n  - [x] `Uppercase<Str>`\n  - [x] `Lowercase<Str>`\n  - [x] `Capitalize<Str>`\n  - [x] `Uncapitalize<Str>`\n  - [x] `SnakeCase<Str>`\n  - [x] `CamelCase<Str>`\n  - [x] `KebabCase<Str>`\n  - [x] `Compare<Str, Str>`\n  - [x] `Equal<Str, Str>`\n  - [x] `NotEqual<Str, Str>`\n  - [x] `LessThan<Str, Str>`\n  - [x] `LessThanOrEqual<Str, Str>`\n  - [x] `GreaterThan<Str, Str>`\n  - [x] `GreaterThanOrEqual<Str, Str>`\n- [ ] Number\n  - [x] `Add<N, M>`\n  - [x] `Multiply<N, M>`\n  - [x] `Subtract<N, M>`\n  - [x] `Negate<N>`\n  - [x] `Power<N, M>`\n  - [x] `Div<N, M>`\n  - [x] `Mod<N, M>`\n  - [x] `Abs<N>`\n  - [x] `Compare<N, M>`\n  - [x] `GreaterThan<N, M>`\n  - [x] `GreaterThanOrEqual<N, M>`\n  - [x] `LessThan<N, M>`\n  - [x] `LessThanOrEqual<N, M>`\n- [ ] Boolean\n  - [x] `And<Bool, Bool>`\n  - [x] `Or<Bool, Bool>`\n  - [x] `XOr<Bool, Bool>`\n  - [x] `Not<Bool>`\n  - [x] `Extends<A, B>`\n  - [x] `Equals<A, B>`\n  - [x] `DoesNotExtend<A, B>`\n","readmeFilename":"README.md","gitHead":"fb8b743c8fd19693a127a5f447b37447790606c8","_id":"hotscript@1.0.13-test.1","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-zIInUstSh0O+r/EzVm/Uq7mG5KYl7VDk27Uavan3dkTJNLE9AN+gLOAZKrDdGAoPTCwqFjmdj5oBwLQ4Mmiycg==","shasum":"349d548bbed204c32f5384cc6ac5033800b5e317","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.13-test.1.tgz","fileCount":79,"unpackedSize":169121,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCy1oGfmNxmFU5NWbWuOWqgeib3RBXt8IQ1d+zbVn410AIhAKIw0DGV2fhsoLZ6pEd4dtf1Wgsv+0NxKkHRRR9uRz7W"}]},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.13-test.1_1683379194688_0.5012707886946424"},"_hasShrinkwrap":false},"1.0.13-test.2":{"name":"hotscript","version":"1.0.13-test.2","description":"A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.","main":"./dist/index.js","module":"./dist/index.mjs","types":"dist/index.d.ts","scripts":{"build":"tsc src/index.ts --declaration --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","typescript":"^4.9.5"},"readme":"# Higher-Order TypeScript (HOTScript)\n\nA library of composable functions for the type level!\n\nTransform your TypeScript types in any way you want using functions you already know.\n\n![image](https://user-images.githubusercontent.com/9265418/223854503-b54f6a62-9f21-4953-aaa3-5d54699516a7.png)\n\n## Features\n\n- Type-level higher-order functions (`Tuples.Map`, `Tuples.Filter`, `Objects.MapValues`, etc).\n- Type-level pattern matching with `Match`.\n- Performant math operations (`Numbers.Add`, `Numbers.Sub`, `Numbers.Mul`, `Numbers.Div`, etc).\n- Custom \"lambda\" functions.\n\n🚧 work in progress 🚧\n\n## Installation\n\nYou can find HotScript on npm:\n\n```ts\nnpm install -D hotscript\n```\n\nHotScript is a work-in-progress library, so expect **breaking changes** in its API.\n\n## Examples\n\n#### Transforming a list\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgFQK5gA26AztgMoxTAB2A5mXAHJ4gBG6UJcAvnAGZQIIOACIAFhBgkAxtTAxRAbgBQKmAE8McKKQCMcALwo06ADwq4cAPTWrAPQD8cAGwAmS3ADae7G+wAzNgALAC6mJ5enlb4RKQAdACyAIZgZizsnCTxAIIAJnlmAQB8xdhWFTZ2XsHYAKzYLtgA7KHRuATE2QBSELRmovGiZZWjY1a2YsHxdfEu8c2i7ZTU9NnkRMAwA0Mj4+OTXqLBotiidadiLpeii22VsV1JqWYrtAzxyLoYNIWiesMRod-icznoLmDrmC7u1HgkUmk3mt4jgIBkOFA9hVDnpanBwdg9E18a1YZ0EuRWPtqQc7O5PG1ikogA)\n\n<!-- prettier-ignore -->\n```ts\nimport { Pipe, Tuples, Strings, Numbers } from \"hotscript\";\n\ntype res1 = Pipe<\n  //  ^? 62\n  [1, 2, 3, 4],\n  [\n    Tuples.Map<Numbers.Add<3>>,       // [4, 5, 6, 7]\n    Tuples.Join<\".\">,                 // \"4.5.6.7\"\n    Strings.Split<\".\">,               // [\"4\", \"5\", \"6\", \"7\"]\n    Tuples.Map<Strings.Prepend<\"1\">>, // [\"14\", \"15\", \"16\", \"17\"]\n    Tuples.Map<Strings.ToNumber>,     // [14, 15, 16, 17]\n    Tuples.Sum                        // 62\n  ]\n>;\n```\n\n#### Defining a first-class function\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgYQIYBt0Bo4DEB2OAKgK5joCmAznAL5wBmUEIcARABYQxUDGUwMDDYBuAFBiA9JLhEOwGgrio4MAJ5gKAWkoA3CunbpUIAEYATVGwCEY4PhgUoDVLwpwAImXTBeqR3AUAB6O+OY0BIhicHBQFDAkUPgAXHAA2jDyVGlsqFAA5gAMbAC6OJkKOXlFpSXitBLqmrHUJOgwAIxwALwoGOgAPKTk1AB0ALKoYANe5L7+FAB8OGkdOABMOADMOAAsJYvi0jEnAHoA-I0a7nFUbTDrPX2YQ95juMYwk9OzPn6Oy3SazgmzgOzg+0OUhkJzgFyAA)\n\n```ts\nimport { Call, Fn, Tuples } from \"hotscript\";\n\n// This is a type-level \"lambda\"!\ninterface Duplicate extends Fn {\n  return: [this[\"arg0\"], this[\"arg0\"]];\n}\n\ntype result1 = Call<Tuples.Map<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [[1, 1], [2, 2], [3, 3], [4, 4]]\n\ntype result2 = Call<Tuples.FlatMap<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [1, 1, 2, 2, 3, 3, 4, 4]\n```\n\n#### Transforming an object type\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YBCEEANugIYB2ZcAvnAGZQQhwBEACwjliUNDH4BuAFAyA9PLgAZdDADkrYr0hl0cMr32cArk1LAILODAg2ozMp2h9mcCIRLwYATwwAuGV8MOAAVCABBZABJZAYfWggGABMAHlCAPjgAXhQ0dFSZODDMIrgAbTLi-CJSMgA6HBBgGEofVOo6RhZ6gFEARxMGWjJUsh8QPDoMjNLi6s86+oiyMmAAcyZUpBA1FIYYBn9EOCZ0AHcAVT0oY5goE30ONlmq3EXyeoBlJgYAa3QAGEGHoACLodBgObzGpeBorNabbZwYDJY5ke7AJjrdgZMoAXRkGVkwX0UWi13QUByYUiMTiCSSaQQZUU8wAegB+Mqo9ETKa0WTFTjAKAYgByDF26Mx2KFcFoIJgkulBll61kL1kbIASmoTFAWIFSWEaSziry1eI5WVdodkgcjiczucAPomG53B5PeUisUwV2-VUY60asqKjGBqXoGWhzVSIA)\n\n```ts\nimport { Pipe, Objects, Booleans } from \"hotscript\";\n\n// Let's compose some functions to transform an object type:\ntype ToAPIPayload<T> = Pipe<\n  T,\n  [\n    Objects.OmitBy<Booleans.Equals<symbol>>,\n    Objects.Assign<{ metadata: { newUser: true } }>,\n    Objects.SnakeCaseDeep,\n    Objects.Assign<{ id: string }>\n  ]\n>;\ntype T = ToAPIPayload<{\n  id: symbol;\n  firstName: string;\n  lastName: string;\n}>;\n// Returns:\ntype T = {\n  id: string;\n  metadata: { new_user: true };\n  first_name: string;\n  last_name: string;\n};\n```\n\n#### Parsing a route path\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YDKMUwAdgOYVwDCE4EZ6AMugGYxsAFQCuYADbpmAWQCGMYgAs4AXzh8o7OACJFEcsVpgY2gNwAoczACeGOFCkBWOAF4UadAB5zcOAHo-X18APQB+Hx0-ES4oMj9PYAATAC4yGnoGAD4-SDS4hLpE9AAPZLoREDx0KEztTAiAbQjfalpGMgA6SglgGE9tP21M+qC4UQkpDoAxYHEYas9WjM7qWVgyAHVexX7+zOHmsbFJTrkwb1HfNg4uXgFPJsugpfaOoVoQXe04AB8dWoOTxa6Ve3XEvX6ySGI0uAF1ModAUFxic3hAAKp0YAQOgw3z4IikTpTTQgACidHSUjxuEIJHIHTOADVZOIRFILpc5Aodo8gdylB0tjAdto0m0GHU4OKMkingLFELtv1ypVqlLVVUaodfPDERFYeZMqYgA)\n\nhttps://user-images.githubusercontent.com/2315749/222081717-96217cd2-ac89-4e06-a942-17fbda717cd2.mp4\n\n```ts\nimport { Pipe, Objects, Strings, ComposeLeft, Tuples, Match } from \"hotscript\";\n\ntype res5 = Pipe<\n  //    ^? { id: string, index: number }\n  \"/users/<id:string>/posts/<index:number>\",\n  [\n    Strings.Split<\"/\">,\n    Tuples.Filter<Strings.StartsWith<\"<\">>,\n    Tuples.Map<ComposeLeft<[Strings.Trim<\"<\" | \">\">, Strings.Split<\":\">]>>,\n    Tuples.ToUnion,\n    Objects.FromEntries,\n    Objects.MapValues<\n      Match<[Match.With<\"string\", string>, Match.With<\"number\", number>]>\n    >\n  ]\n>;\n```\n\n## API\n\n- [x] Core\n  - [x] `Pipe<Input, Fn[]>`\n  - [x] `PipeRight<Fn[], Input>`\n  - [x] `Call<Fn, ...Arg>`\n  - [x] `Apply<Fn, Arg[]>`\n  - [x] `PartialApply<Fn, Arg[]>`\n  - [x] `Compose<Fn[]>`\n  - [x] `ComposeLeft<Fn[]>`\n- [x] Function\n  - [x] `ReturnType<Fn>`\n  - [x] `Parameters<Fn>`\n  - [x] `Parameter<N, Fn>`\n- [ ] Tuples\n  - [x] `Create<X> -> [X]`\n  - [x] `Partition<Tuple>`\n  - [x] `IsEmpty<Tuple>`\n  - [x] `Zip<...Tuple[]>`\n  - [x] `ZipWith<Fn, ...Tuple[]>`\n  - [x] `Sort<Tuple>`\n  - [x] `Head<Tuple>`\n  - [x] `Tail<Tuple>`\n  - [x] `At<N, Tuple>`\n  - [x] `Last<Tuple>`\n  - [x] `FlatMap<Fn, Tuple>`\n  - [x] `Find<Fn, Tuple>`\n  - [x] `Drop<N, Tuple>`\n  - [x] `Take<N, Tuple>`\n  - [x] `TakeWhile<Fn, Tuple>`\n  - [x] `GroupBy<Fn, Tuple>`\n  - [x] `Join<Str, Tuple>`\n  - [x] `Map<Fn, Tuple>`\n  - [x] `Filter<Fn, Tuple>`\n  - [x] `Reduce<Fn, Init, Tuple>`\n  - [x] `ReduceRight<Fn, Init, Tuple>`\n  - [x] `Reverse<Tuple>`\n  - [x] `Every<Fn, Tuple>`\n  - [x] `Some<Fn, Tuple>`\n  - [x] `SplitAt<N, Tuple>`\n  - [x] `ToUnion<Tuple>`\n  - [x] `ToIntersection<Tuple>`\n  - [x] `Prepend<X, Tuple>`\n  - [x] `Append<X, Tuple>`\n  - [x] `Concat<T1, T2>`\n  - [x] `Min<Tuple>`\n  - [x] `Max<Tuple>`\n  - [x] `Sum<Tuple>`\n- [ ] Object\n  - [x] `Readonly<Obj>`\n  - [x] `Mutable<Obj>`\n  - [x] `Required<Obj>`\n  - [x] `Partial<Obj>`\n  - [x] `ReadonlyDeep<Obj>`\n  - [x] `MutableDeep<Obj>`\n  - [x] `RequiredDeep<Obj>`\n  - [x] `PartialDeep<Obj>`\n  - [x] `Update<Path, Fn | V, Obj>`\n  - [x] `Record<Key, Value>`\n  - [x] `Keys<Obj>`\n  - [x] `Values<Obj>`\n  - [x] `AllPaths<Obj>`\n  - [x] `Create<Pattern, X>`\n  - [x] `Get<Path, Obj>`\n  - [x] `FromEntries<[Key, Value]>`\n  - [x] `Entries<Obj>`\n  - [x] `MapValues<Fn, Obj>`\n  - [x] `MapKeys<Fn, Obj>`\n  - [x] `Assign<...Obj>`\n  - [x] `Pick<Key, Obj>`\n  - [x] `PickBy<Fn, Obj>`\n  - [x] `Omit<Key, Obj>`\n  - [x] `OmitBy<Fn, Obj>`\n  - [x] `CamelCase<Obj>`\n  - [x] `CamelCaseDeep<Obj>`\n  - [x] `SnakeCase<Obj>`\n  - [x] `SnakeCaseDeep<Obj>`\n  - [x] `KebabCase<Obj>`\n  - [x] `KebabCaseDeep<Obj>`\n- [ ] Union\n  - [x] `Map<Fn, U>`\n  - [x] `Extract<T, U>`\n  - [x] `ExtractBy<Fn, U>`\n  - [x] `Exclude<T, U>`\n  - [x] `ExcludeBy<Fn, U>`\n  - [x] `NonNullable<U>`\n  - [x] `ToTuple<U>`\n  - [x] `ToIntersection<U>`\n- [ ] String\n  - [x] `Length<Str>`\n  - [x] `TrimLeft<Str>`\n  - [x] `TrimRight<Str>`\n  - [x] `Trim<Str>`\n  - [x] `Join<Sep, Str>`\n  - [x] `Replace<From, To, Str>`\n  - [x] `Slice<Start, End, Str>`\n  - [x] `Split<Sep, Str>`\n  - [x] `Repeat<N, Str>`\n  - [x] `StartsWith<S, Str>`\n  - [x] `EndsWith<E, Str>`\n  - [x] `ToTuple<Str>`\n  - [x] `ToNumber<Str>`\n  - [x] `ToString<Str>`\n  - [x] `Prepend<Start, Str>`\n  - [x] `Append<End, Str>`\n  - [x] `Uppercase<Str>`\n  - [x] `Lowercase<Str>`\n  - [x] `Capitalize<Str>`\n  - [x] `Uncapitalize<Str>`\n  - [x] `SnakeCase<Str>`\n  - [x] `CamelCase<Str>`\n  - [x] `KebabCase<Str>`\n  - [x] `Compare<Str, Str>`\n  - [x] `Equal<Str, Str>`\n  - [x] `NotEqual<Str, Str>`\n  - [x] `LessThan<Str, Str>`\n  - [x] `LessThanOrEqual<Str, Str>`\n  - [x] `GreaterThan<Str, Str>`\n  - [x] `GreaterThanOrEqual<Str, Str>`\n- [ ] Number\n  - [x] `Add<N, M>`\n  - [x] `Multiply<N, M>`\n  - [x] `Subtract<N, M>`\n  - [x] `Negate<N>`\n  - [x] `Power<N, M>`\n  - [x] `Div<N, M>`\n  - [x] `Mod<N, M>`\n  - [x] `Abs<N>`\n  - [x] `Compare<N, M>`\n  - [x] `GreaterThan<N, M>`\n  - [x] `GreaterThanOrEqual<N, M>`\n  - [x] `LessThan<N, M>`\n  - [x] `LessThanOrEqual<N, M>`\n- [ ] Boolean\n  - [x] `And<Bool, Bool>`\n  - [x] `Or<Bool, Bool>`\n  - [x] `XOr<Bool, Bool>`\n  - [x] `Not<Bool>`\n  - [x] `Extends<A, B>`\n  - [x] `Equals<A, B>`\n  - [x] `DoesNotExtend<A, B>`\n","readmeFilename":"README.md","gitHead":"aee44e34485dc34dfe60ea2eddfd4fc7db49260a","_id":"hotscript@1.0.13-test.2","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-gybbqEu1EtD+53KYaBK3NDNIniX4aS9tDEZx/9drz70RYTJSXbAp2FGHUr8X6M3cgaE8gEFRoPC+paGmuZ1EoQ==","shasum":"5defeecacddd985ca732227c8c2d28952e1bd3a4","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.13-test.2.tgz","fileCount":79,"unpackedSize":168921,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsCVt0mlqwYzrhpTLbFxFaTniJ33oan3O98n98KGBgYQIhAIepzgKxVvJTy2+PbrIAIaTS0d8wl+BaKXG2idlDAdXs"}]},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.13-test.2_1683380057120_0.10094299162448062"},"_hasShrinkwrap":false},"1.0.13":{"name":"hotscript","version":"1.0.13","description":"A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.","main":"./dist/index.cjs","module":"./dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format esm,cjs && tsc src/index.ts --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run test && npm run build","test":"jest","clear-test":"jest --clearCache","perf":"tsc --project test/tsconfig.json --noEmit --extendedDiagnostics","fmt":"prettier ./src/** ./test/** -w","check":"tsc --strict --noEmit --extendedDiagnostics"},"repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"license":"ISC","bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"homepage":"https://github.com/gvergnaud/HOTScript#readme","author":{"name":"Gabriel Vergnaud"},"devDependencies":{"@types/jest":"^29.4.0","jest":"^29.4.2","prettier":"^2.8.4","ts-jest":"^29.0.5","tsup":"^6.7.0","typescript":"^4.9.5"},"gitHead":"45b1ac3c0bf29f0ac51f7e2f752a15c2e20f433c","_id":"hotscript@1.0.13","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-C++tTF1GqkGYecL+2S1wJTfoH6APGAsbb7PAWQ3iVIwgG/EFseAfEVOKFgAFq4yK3+6j1EjUD4UQ9dRJHX/sSQ==","shasum":"6eb5de757e9b33444ffc22555e98dbc17fa31fb4","tarball":"https://registry.npmjs.org/hotscript/-/hotscript-1.0.13.tgz","fileCount":79,"unpackedSize":171707,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcmBVzvFXujBBFX2eGs/qBEkCBWg4DbTY1o0XVqQT95AiAZtXvGpvhWZw44z3Z4AmTSAE4vtS8gFlXUyvZh6d/DCQ=="}]},"_npmUser":{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"},"directories":{},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hotscript_1.0.13_1688378304676_0.734975361702225"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-12T19:34:53.051Z","1.0.0":"2023-02-12T19:34:53.285Z","modified":"2023-07-03T09:58:24.982Z","1.0.1":"2023-02-13T13:32:45.790Z","1.0.2":"2023-02-14T13:08:00.463Z","1.0.3":"2023-02-15T23:15:12.822Z","1.0.4":"2023-02-17T17:44:17.436Z","1.0.5":"2023-02-20T09:00:58.878Z","1.0.6":"2023-02-21T09:33:47.040Z","1.0.7":"2023-02-23T12:55:43.822Z","1.0.8":"2023-02-26T09:22:03.748Z","1.0.9":"2023-03-01T09:13:28.877Z","1.0.10":"2023-03-04T20:25:52.133Z","1.0.11":"2023-03-26T18:06:28.143Z","1.0.12-rc.0":"2023-05-06T10:16:59.134Z","1.0.12":"2023-05-06T13:02:38.634Z","1.0.13-test.0":"2023-05-06T13:14:17.406Z","1.0.13-test.1":"2023-05-06T13:19:54.892Z","1.0.13-test.2":"2023-05-06T13:34:17.312Z","1.0.13":"2023-07-03T09:58:24.872Z"},"maintainers":[{"name":"gabrielvergnaud","email":"gabriel.vergnaud@gmail.com"}],"homepage":"https://github.com/gvergnaud/HOTScript#readme","repository":{"type":"git","url":"git+https://github.com/gvergnaud/HOTScript.git"},"bugs":{"url":"https://github.com/gvergnaud/HOTScript/issues"},"license":"ISC","readme":"# Higher-Order TypeScript (HOTScript)\n\nA library of composable functions for the type level!\n\nTransform your TypeScript types in any way you want using functions you already know.\n\n![image](https://user-images.githubusercontent.com/9265418/223854503-b54f6a62-9f21-4953-aaa3-5d54699516a7.png)\n\n## Features\n\n- Type-level higher-order functions (`Tuples.Map`, `Tuples.Filter`, `Objects.MapValues`, etc).\n- Type-level pattern matching with `Match`.\n- Performant math operations (`Numbers.Add`, `Numbers.Sub`, `Numbers.Mul`, `Numbers.Div`, etc).\n- Custom \"lambda\" functions.\n\n🚧 work in progress 🚧\n\n## Installation\n\nYou can find HotScript on npm:\n\n```ts\nnpm install -D hotscript\n```\n\nHotScript is a work-in-progress library, so expect **breaking changes** in its API.\n\n## Examples\n\n#### Transforming a list\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgFQK5gA26AztgMoxTAB2A5mXAHJ4gBG6UJcAvnAGZQIIOACIAFhBgkAxtTAxRAbgBQKmAE8McKKQCMcALwo06ADwq4cAPTWrAPQD8cAGwAmS3ADae7G+wAzNgALAC6mJ5enlb4RKQAdACyAIZgZizsnCTxAIIAJnlmAQB8xdhWFTZ2XsHYAKzYLtgA7KHRuATE2QBSELRmovGiZZWjY1a2YsHxdfEu8c2i7ZTU9NnkRMAwA0Mj4+OTXqLBotiidadiLpeii22VsV1JqWYrtAzxyLoYNIWiesMRod-icznoLmDrmC7u1HgkUmk3mt4jgIBkOFA9hVDnpanBwdg9E18a1YZ0EuRWPtqQc7O5PG1ikogA)\n\n<!-- prettier-ignore -->\n```ts\nimport { Pipe, Tuples, Strings, Numbers } from \"hotscript\";\n\ntype res1 = Pipe<\n  //  ^? 62\n  [1, 2, 3, 4],\n  [\n    Tuples.Map<Numbers.Add<3>>,       // [4, 5, 6, 7]\n    Tuples.Join<\".\">,                 // \"4.5.6.7\"\n    Strings.Split<\".\">,               // [\"4\", \"5\", \"6\", \"7\"]\n    Tuples.Map<Strings.Prepend<\"1\">>, // [\"14\", \"15\", \"16\", \"17\"]\n    Tuples.Map<Strings.ToNumber>,     // [14, 15, 16, 17]\n    Tuples.Sum                        // 62\n  ]\n>;\n```\n\n#### Defining a first-class function\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgYQIYBt0Bo4DEB2OAKgK5joCmAznAL5wBmUEIcARABYQxUDGUwMDDYBuAFBiA9JLhEOwGgrio4MAJ5gKAWkoA3CunbpUIAEYATVGwCEY4PhgUoDVLwpwAImXTBeqR3AUAB6O+OY0BIhicHBQFDAkUPgAXHAA2jDyVGlsqFAA5gAMbAC6OJkKOXlFpSXitBLqmrHUJOgwAIxwALwoGOgAPKTk1AB0ALKoYANe5L7+FAB8OGkdOABMOADMOAAsJYvi0jEnAHoA-I0a7nFUbTDrPX2YQ95juMYwk9OzPn6Oy3SazgmzgOzg+0OUhkJzgFyAA)\n\n```ts\nimport { Call, Fn, Tuples } from \"hotscript\";\n\n// This is a type-level \"lambda\"!\ninterface Duplicate extends Fn {\n  return: [this[\"arg0\"], this[\"arg0\"]];\n}\n\ntype result1 = Call<Tuples.Map<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [[1, 1], [2, 2], [3, 3], [4, 4]]\n\ntype result2 = Call<Tuples.FlatMap<Duplicate>, [1, 2, 3, 4]>;\n//     ^? [1, 1, 2, 2, 3, 3, 4, 4]\n```\n\n#### Transforming an object type\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YBCEEANugIYB2ZcAvnAGZQQhwBEACwjliUNDH4BuAFAyA9PLgAZdDADkrYr0hl0cMr32cArk1LAILODAg2ozMp2h9mcCIRLwYATwwAuGV8MOAAVCABBZABJZAYfWggGABMAHlCAPjgAXhQ0dFSZODDMIrgAbTLi-CJSMgA6HBBgGEofVOo6RhZ6gFEARxMGWjJUsh8QPDoMjNLi6s86+oiyMmAAcyZUpBA1FIYYBn9EOCZ0AHcAVT0oY5goE30ONlmq3EXyeoBlJgYAa3QAGEGHoACLodBgObzGpeBorNabbZwYDJY5ke7AJjrdgZMoAXRkGVkwX0UWi13QUByYUiMTiCSSaQQZUU8wAegB+Mqo9ETKa0WTFTjAKAYgByDF26Mx2KFcFoIJgkulBll61kL1kbIASmoTFAWIFSWEaSziry1eI5WVdodkgcjiczucAPomG53B5PeUisUwV2-VUY60asqKjGBqXoGWhzVSIA)\n\n```ts\nimport { Pipe, Objects, Booleans } from \"hotscript\";\n\n// Let's compose some functions to transform an object type:\ntype ToAPIPayload<T> = Pipe<\n  T,\n  [\n    Objects.OmitBy<Booleans.Equals<symbol>>,\n    Objects.Assign<{ metadata: { newUser: true } }>,\n    Objects.SnakeCaseDeep,\n    Objects.Assign<{ id: string }>\n  ]\n>;\ntype T = ToAPIPayload<{\n  id: symbol;\n  firstName: string;\n  lastName: string;\n}>;\n// Returns:\ntype T = {\n  id: string;\n  metadata: { new_user: true };\n  first_name: string;\n  last_name: string;\n};\n```\n\n#### Parsing a route path\n\n[Run this as a TypeScript Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgBWGApgGjgeQEYBW6AxjAM7YDKMUwAdgOYVwDCE4EZ6AMugGYxsAFQCuYADbpmAWQCGMYgAs4AXzh8o7OACJFEcsVpgY2gNwAoczACeGOFCkBWOAF4UadAB5zcOAHo-X18APQB+Hx0-ES4oMj9PYAATAC4yGnoGAD4-SDS4hLpE9AAPZLoREDx0KEztTAiAbQjfalpGMgA6SglgGE9tP21M+qC4UQkpDoAxYHEYas9WjM7qWVgyAHVexX7+zOHmsbFJTrkwb1HfNg4uXgFPJsugpfaOoVoQXe04AB8dWoOTxa6Ve3XEvX6ySGI0uAF1ModAUFxic3hAAKp0YAQOgw3z4IikTpTTQgACidHSUjxuEIJHIHTOADVZOIRFILpc5Aodo8gdylB0tjAdto0m0GHU4OKMkingLFELtv1ypVqlLVVUaodfPDERFYeZMqYgA)\n\nhttps://user-images.githubusercontent.com/2315749/222081717-96217cd2-ac89-4e06-a942-17fbda717cd2.mp4\n\n```ts\nimport { Pipe, Objects, Strings, ComposeLeft, Tuples, Match } from \"hotscript\";\n\ntype res5 = Pipe<\n  //    ^? { id: string, index: number }\n  \"/users/<id:string>/posts/<index:number>\",\n  [\n    Strings.Split<\"/\">,\n    Tuples.Filter<Strings.StartsWith<\"<\">>,\n    Tuples.Map<ComposeLeft<[Strings.Trim<\"<\" | \">\">, Strings.Split<\":\">]>>,\n    Tuples.ToUnion,\n    Objects.FromEntries,\n    Objects.MapValues<\n      Match<[Match.With<\"string\", string>, Match.With<\"number\", number>]>\n    >\n  ]\n>;\n```\n\n## API\n\n- [x] Core\n  - [x] `Pipe<Input, Fn[]>`\n  - [x] `PipeRight<Fn[], Input>`\n  - [x] `Call<Fn, ...Arg>`\n  - [x] `Apply<Fn, Arg[]>`\n  - [x] `PartialApply<Fn, Arg[]>`\n  - [x] `Compose<Fn[]>`\n  - [x] `ComposeLeft<Fn[]>`\n- [x] Function\n  - [x] `ReturnType<Fn>`\n  - [x] `Parameters<Fn>`\n  - [x] `Parameter<N, Fn>`\n  - [x] `MapReturnType<Fn, FunctionType>`\n  - [x] `MapParameters<Fn, FunctionType>`\n- [ ] Tuples\n  - [x] `Create<X> -> [X]`\n  - [x] `Partition<Tuple>`\n  - [x] `IsEmpty<Tuple>`\n  - [x] `Zip<...Tuple[]>`\n  - [x] `ZipWith<Fn, ...Tuple[]>`\n  - [x] `Sort<Tuple>`\n  - [x] `Head<Tuple>`\n  - [x] `Tail<Tuple>`\n  - [x] `At<N, Tuple>`\n  - [x] `Last<Tuple>`\n  - [x] `FlatMap<Fn, Tuple>`\n  - [x] `Find<Fn, Tuple>`\n  - [x] `Drop<N, Tuple>`\n  - [x] `Take<N, Tuple>`\n  - [x] `TakeWhile<Fn, Tuple>`\n  - [x] `GroupBy<Fn, Tuple>`\n  - [x] `Join<Str, Tuple>`\n  - [x] `Map<Fn, Tuple>`\n  - [x] `Filter<Fn, Tuple>`\n  - [x] `Reduce<Fn, Init, Tuple>`\n  - [x] `ReduceRight<Fn, Init, Tuple>`\n  - [x] `Reverse<Tuple>`\n  - [x] `Every<Fn, Tuple>`\n  - [x] `Some<Fn, Tuple>`\n  - [x] `SplitAt<N, Tuple>`\n  - [x] `ToUnion<Tuple>`\n  - [x] `ToIntersection<Tuple>`\n  - [x] `Prepend<X, Tuple>`\n  - [x] `Append<X, Tuple>`\n  - [x] `Concat<T1, T2>`\n  - [x] `Min<Tuple>`\n  - [x] `Max<Tuple>`\n  - [x] `Sum<Tuple>`\n- [ ] Object\n  - [x] `Readonly<Obj>`\n  - [x] `Mutable<Obj>`\n  - [x] `Required<Obj>`\n  - [x] `Partial<Obj>`\n  - [x] `ReadonlyDeep<Obj>`\n  - [x] `MutableDeep<Obj>`\n  - [x] `RequiredDeep<Obj>`\n  - [x] `PartialDeep<Obj>`\n  - [x] `Update<Path, Fn | V, Obj>`\n  - [x] `Record<Key, Value>`\n  - [x] `Keys<Obj>`\n  - [x] `Values<Obj>`\n  - [x] `AllPaths<Obj>`\n  - [x] `Create<Pattern, X>`\n  - [x] `Get<Path, Obj>`\n  - [x] `FromEntries<[Key, Value]>`\n  - [x] `Entries<Obj>`\n  - [x] `MapValues<Fn, Obj>`\n  - [x] `MapKeys<Fn, Obj>`\n  - [x] `Assign<...Obj>`\n  - [x] `Pick<Key, Obj>`\n  - [x] `PickBy<Fn, Obj>`\n  - [x] `Omit<Key, Obj>`\n  - [x] `OmitBy<Fn, Obj>`\n  - [x] `CamelCase<Obj>`\n  - [x] `CamelCaseDeep<Obj>`\n  - [x] `SnakeCase<Obj>`\n  - [x] `SnakeCaseDeep<Obj>`\n  - [x] `KebabCase<Obj>`\n  - [x] `KebabCaseDeep<Obj>`\n- [ ] Union\n  - [x] `Map<Fn, U>`\n  - [x] `Extract<T, U>`\n  - [x] `ExtractBy<Fn, U>`\n  - [x] `Exclude<T, U>`\n  - [x] `ExcludeBy<Fn, U>`\n  - [x] `NonNullable<U>`\n  - [x] `ToTuple<U>`\n  - [x] `ToIntersection<U>`\n- [ ] String\n  - [x] `Length<Str>`\n  - [x] `TrimLeft<Str>`\n  - [x] `TrimRight<Str>`\n  - [x] `Trim<Str>`\n  - [x] `Join<Sep, Str>`\n  - [x] `Replace<From, To, Str>`\n  - [x] `Slice<Start, End, Str>`\n  - [x] `Split<Sep, Str>`\n  - [x] `Repeat<N, Str>`\n  - [x] `StartsWith<S, Str>`\n  - [x] `EndsWith<E, Str>`\n  - [x] `ToTuple<Str>`\n  - [x] `ToNumber<Str>`\n  - [x] `ToString<Str>`\n  - [x] `Prepend<Start, Str>`\n  - [x] `Append<End, Str>`\n  - [x] `Uppercase<Str>`\n  - [x] `Lowercase<Str>`\n  - [x] `Capitalize<Str>`\n  - [x] `Uncapitalize<Str>`\n  - [x] `SnakeCase<Str>`\n  - [x] `CamelCase<Str>`\n  - [x] `KebabCase<Str>`\n  - [x] `Compare<Str, Str>`\n  - [x] `Equal<Str, Str>`\n  - [x] `NotEqual<Str, Str>`\n  - [x] `LessThan<Str, Str>`\n  - [x] `LessThanOrEqual<Str, Str>`\n  - [x] `GreaterThan<Str, Str>`\n  - [x] `GreaterThanOrEqual<Str, Str>`\n- [ ] Number\n  - [x] `Add<N, M>`\n  - [x] `Multiply<N, M>`\n  - [x] `Subtract<N, M>`\n  - [x] `Negate<N>`\n  - [x] `Power<N, M>`\n  - [x] `Div<N, M>`\n  - [x] `Mod<N, M>`\n  - [x] `Abs<N>`\n  - [x] `Compare<N, M>`\n  - [x] `GreaterThan<N, M>`\n  - [x] `GreaterThanOrEqual<N, M>`\n  - [x] `LessThan<N, M>`\n  - [x] `LessThanOrEqual<N, M>`\n- [ ] Boolean\n  - [x] `And<Bool, Bool>`\n  - [x] `Or<Bool, Bool>`\n  - [x] `XOr<Bool, Bool>`\n  - [x] `Not<Bool>`\n  - [x] `Extends<A, B>`\n  - [x] `Equals<A, B>`\n  - [x] `DoesNotExtend<A, B>`\n","readmeFilename":"README.md","description":"A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.","author":{"name":"Gabriel Vergnaud"}}