{"_id":"@2003scape/rsc-archiver","_rev":"5-443daaaa0143bf288ef591f766f43f92","name":"@2003scape/rsc-archiver","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@2003scape/rsc-archiver","version":"1.0.0","description":"compress and decompress runescape classic cache archives","main":"index.js","bin":{"rsc-archiver":"./src/bin.js"},"repository":{"type":"git","url":"git+https://github.com/2003scape/rsc-archiver.git"},"keywords":["runescape","rsc","cache","archive","bzip"],"author":{"name":"2003Scape Team"},"license":"AGPL-3.0+","bugs":{"url":"https://github.com/2003scape/rsc-archiver/issues"},"homepage":"https://github.com/2003scape/rsc-archiver#readme","dependencies":{"@ledgerhq/compressjs":"^1.3.2","pretty-bytes":"^5.3.0","yargs":"^14.2.0"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"gitHead":"620336fe6b899ad071331ec8d03b8f6bf4c53f4d","_id":"@2003scape/rsc-archiver@1.0.0","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","_npmUser":{"name":"misterhat","email":"misterhat144@gmail.com"},"maintainers":[{"name":"misterhat","email":"misterhat144@gmail.com"}],"dist":{"integrity":"sha512-u5sx4m5U3ar1xoR7vXo86J4B9YLjc7Pk++AviaP9bMJsFW8kaRut5rzweqTPDyaiCUxFRdfKZ9VbkGv/ynP4lA==","shasum":"0bab370a7b0aae808426d0085996a0a804e45c6b","tarball":"https://registry.npmjs.org/@2003scape/rsc-archiver/-/rsc-archiver-1.0.0.tgz","fileCount":7,"unpackedSize":52561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0DMZCRA9TVsSAnZWagAA8HYP/14QFSVPMAzdP9wCA7x+\nptV5ac6BiC8148diw/BfrQX+yXUukglJWLk3O3Bdrc9hS3KzfQshtEdwz+pc\n7MZVBIqrARJGyo13eSJesbA0udMMCZzTXiXnmzj2WA1WEMAc1vT77d506eCd\nOL4xbXTj21augNaEaSKSEw0emnmoxnBgKEqCZw6V3WLbfWX3em2Epd1oQ7R8\nYheyY5lv4tmVq4T05YaGERxqF2OPr21b/esiPjdhx4WdWV/rK6PJ185tFw+0\nz42iVTOHUFxXR5Amu8pOz736pfy3G+JdhcAMiqAxpchPu92Z6RJhcIl3yNXG\n60R8uMW3MR7yTVmdkQOc86ZHiEpwfFfbEeprVZIMQYzL/ghqLNOUTiPrd9CP\nNWQ1Sn243loJl8orvzavfocCmuqPhGVHCQM9F2Nj+IgweMPxj5lcMYL0i7zT\nR8gY3ePKiQWS1FfqbP6RKm1nv2uhkkdIS/OgCqNBAa/U3C224RPfrmYDWJjw\nofHBspQJVFluzHiQscBedB4BM4SXLKu3JWTaYUvPFLejbxxEcFpGO7AP31rQ\nydPUUDWYd8rluAqTRQT03N0WCaRHzkKWs+OI7ELEk3Keyt1EJs6tH5dJqLtn\nNKH1u0NUoIcnMhKfDKb9XgCsb4KUjqKP/WEQS6thlgHmcNVX1v5C7B+JHnS8\nAOJJ\r\n=t1Wl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPWX0SJnphBUPRBWnYS9Sco/NPKW3u335jWAiuKEr+mQIhAK7hB/lBQ53HJnEtXwjk647Hk/m3GFZZ1t9sYC45KNBd"}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsc-archiver_1.0.0_1573925657420_0.3120368811729133"},"_hasShrinkwrap":false},"1.0.1":{"name":"@2003scape/rsc-archiver","version":"1.0.1","description":"compress and decompress runescape classic cache archives","main":"./src/index.js","bin":{"rsc-archiver":"./src/bin.js"},"repository":{"type":"git","url":"git+https://github.com/2003scape/rsc-archiver.git"},"keywords":["runescape","rsc","cache","archive","bzip"],"author":{"name":"2003Scape Team"},"license":"AGPL-3.0+","bugs":{"url":"https://github.com/2003scape/rsc-archiver/issues"},"homepage":"https://github.com/2003scape/rsc-archiver#readme","dependencies":{"@ledgerhq/compressjs":"^1.3.2","pretty-bytes":"^5.3.0","yargs":"^14.2.0"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"gitHead":"eab66e8319ba684f57eda8b0edd01a24e6fb6e51","_id":"@2003scape/rsc-archiver@1.0.1","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","_npmUser":{"name":"misterhat","email":"misterhat144@gmail.com"},"maintainers":[{"name":"misterhat","email":"misterhat144@gmail.com"}],"dist":{"integrity":"sha512-TOXlZrfbieqh11+qZvxkGEAp6YFIV4czdJPMkUaa2YZ9GHMWcR1NaL6fRj2CKRhyubRm6ElNkQAK20qD/B23OA==","shasum":"c03c3220e2d69f4e55b82868b0ca96ed3741d9ed","tarball":"https://registry.npmjs.org/@2003scape/rsc-archiver/-/rsc-archiver-1.0.1.tgz","fileCount":7,"unpackedSize":52567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0G7iCRA9TVsSAnZWagAALmcP/2Eddnwpo6vTsp3F0z2d\nX7wDb/i5WDrcewPmtv6CgirH7eHalCXb1XCW1Y7pbzVuAMkNMnE2wrXYMaQ/\nNqF7q8edmaWLXLicBRpruyq7H0r8Ieaiz8z3s70MnJlMOlNmPQ0HOykhPIVc\nnBeb/UGDXSOK49yRfT7cdmdy6RQjJ2Ng8grPgxihu2REZUeCHPg6SMm5mmbL\nXNZLklyw/nOK8VZYssfx3+fl9XTqnHYTK6a9xdyS/yai8NdZqJAF20IxmL9D\n/reVhbn6JSuEmucCQupSDjvoFhVsJWZMp7KFRvFWIrdhF9Mvmd5ytfUwFf61\njyMzFNVUWeDwQeVU5vk1/FPiOR2fRe5C8Bk/Mi0ASqJ0jVqyN77GbN5Q0HAI\nWZubKUrEF0YY/EuKpQKsYMk9MfrQcoUy9rj/wHSwuKPwoDVvfSXjS68vXaP1\nvVfa1RcvsvpqNsRQWIc2vRWY3pDmORH7EQoF5tUfoM4r+DTfeUCtF791RyX8\npithjTKdRjsmxCSMqSaKYwFjxL88XfbqVZA0YwbnQsXnvVpV51nvKBO9qsfV\nrN3a7d9xnFntwJygxtaRsptYjBY9wCjeHvttn0d7NcS6+AM4ikf4EcTJqDz5\nfUanR0S1cicnsqzA8lxqMiOZjCLHpKKMx52yvUp8RgKzNFBZj+DboOHQ22WV\n5i66\r\n=VFyQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPYiYPNkY0C7xKQsT9/a4l2V2kepw0o59ufUMyf7M52AiBBTcq4tULtMhR32qwDSNXdqFAdIlEasuD8hSEGXgnplA=="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsc-archiver_1.0.1_1573940962140_0.5125828923857798"},"_hasShrinkwrap":false},"1.1.0":{"name":"@2003scape/rsc-archiver","version":"1.1.0","description":"compress and decompress runescape classic cache archives","main":"./src/index.js","bin":{"rsc-archiver":"./src/bin.js"},"repository":{"type":"git","url":"git+https://github.com/2003scape/rsc-archiver.git"},"keywords":["runescape","rsc","cache","archive","bzip"],"author":{"name":"2003Scape Team"},"license":"AGPL-3.0+","bugs":{"url":"https://github.com/2003scape/rsc-archiver/issues"},"homepage":"https://github.com/2003scape/rsc-archiver#readme","dependencies":{"@ledgerhq/compressjs":"^1.3.2","pretty-bytes":"^5.3.0","yargs":"^14.2.0"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"gitHead":"1aa4fc17b5a1772deed8b53e0aa9943da1a7b7da","_id":"@2003scape/rsc-archiver@1.1.0","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","_npmUser":{"name":"misterhat","email":"misterhat144@gmail.com"},"maintainers":[{"name":"misterhat","email":"misterhat144@gmail.com"}],"dist":{"integrity":"sha512-j7MC5ftHBtXz9UzuIo5JvyAwywbCyRaX6pJpryA2ZS5MgF6W00coVwUAlw2BszY4Y5fJRkrdONdqAGRhIoxMQw==","shasum":"e0b444e4d6436717c71599cd69a68e537466778f","tarball":"https://registry.npmjs.org/@2003scape/rsc-archiver/-/rsc-archiver-1.1.0.tgz","fileCount":7,"unpackedSize":54302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6qQhCRA9TVsSAnZWagAA6jUP/3/9WFdmDL+50teCLgEv\nz0t/LdCEkr858icW4Lhp2jTTS//wcw4fXmWqJxgJltFqi73cQfpSsOlS/+lI\nmpElsNv6elkTRiSFY5Q42n87DNStx8kB/J+u/5Je2u8aJpi2uQytHbjcKsDD\nf4at9AqLWKhkrtAM9Mc6CH7mtCSuX15Kil7r1yWrrwW3w7pjSt4Mc3JRyOrP\nqhiqXQzprneH3xBIGNBHFd2Ktws5qwfEexvJeKxF4wG9n+iTzba7L4No5I1Y\nGP3xbaGBOSZ6hR9ZsACbDfq/4WKFdk1bcnRPeW7otQwRI3RNGn+vv0tuvKkn\nzSOfjajIafsZ0DkxUjG42+IMKO+UxjguPRlqEgV1hSnkaI9ttvgJU6/G5R8n\nh4qRJucqC6+lEtBLYyntgew/reOgTwdMJX+Fs+xncD+zkfUFXt2Mkt59J9CT\nDk6FK+KVDbeckh8HhF7kIJCR5AE9J9oWYhoNjlSTtqgUsRAruG3iA+epb67C\npBbyjV9vI/gCVizAArxCwqfauAHCptrJl0pfR10rPgHQpBUFFMRqsWqFHv/3\n2ma4MKVKXLCVf+Yc1qXQp9ifBXQqz/7dIDlITD5RHK5h1wnZDMJy4VszGaF6\nXnULmfeseiWc9Xn8/Y3ELTs1HfYpgbP7ZSxrXs3f+oW0P+D+M9k5zEISvQx7\n1CtA\r\n=O3SV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlcDek2FwdF+8++q/b0DTFoyhPg6SIEluqp++BGIqdOAIgGgctPB35rS6PgNQfKcw3wk0ptzCL59nAfJ2Ja+MyBiQ="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsc-archiver_1.1.0_1575658528976_0.6936605329193306"},"_hasShrinkwrap":false},"1.1.1":{"name":"@2003scape/rsc-archiver","version":"1.1.1","description":"compress and decompress runescape classic cache archives","main":"./src/index.js","bin":{"rsc-archiver":"src/bin.js"},"repository":{"type":"git","url":"git+https://github.com/2003scape/rsc-archiver.git"},"keywords":["runescape","rsc","cache","archive","bzip"],"author":{"name":"2003Scape Team"},"license":"AGPL-3.0+","bugs":{"url":"https://github.com/2003scape/rsc-archiver/issues"},"homepage":"https://github.com/2003scape/rsc-archiver#readme","dependencies":{"@ledgerhq/compressjs":"^1.3.2","pretty-bytes":"^5.4.1","yargs":"^16.1.0"},"devDependencies":{},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"gitHead":"9856f8303c9aeef80fdabfeb089069d0340fbacd","_id":"@2003scape/rsc-archiver@1.1.1","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","_npmUser":{"name":"misterhat","email":"misterhat144@gmail.com"},"maintainers":[{"name":"misterhat","email":"misterhat144@gmail.com"}],"dist":{"integrity":"sha512-D72HyS8RgNZZKZCnw/2X1WXlt/0oNMn63gBtdD/AFm8HwmZoMfAizv6ksbRGbvjpxQGXOBApSafpumR7aJ56Hw==","shasum":"a406c6927a8895b8fd7dc1dd09d2840f0aa28fc7","tarball":"https://registry.npmjs.org/@2003scape/rsc-archiver/-/rsc-archiver-1.1.1.tgz","fileCount":7,"unpackedSize":54302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoBUqCRA9TVsSAnZWagAAOjsP/0G8yR1SVDIzsHpEJiNc\n2mmaNAEbg4u1og0w9MUAv8FL30ZRT4/4Tk9ig+LSNqpsqL/MjxVtmKZ9thQb\nN7vE4VB5Tvq6JEed/CtKxO7TBys7f6821jRKzZSC/ASZWhTlQuzvrwgei4rD\n3UDiKDvU3BpII1BbwSnEGHTRfMe5/O75qPBSvdLHRPKQOeWKl4pzj7dWWAJ2\nkeNs2CNuQrcMaZsKAADFCTOzuS1Ub0xBLqnVPAl76LO5BCToXcNsJ0F/iPUZ\nb1FtxGuXLqv7LbLkManMDp2AVvmzzNFmGBkyfupvAg5AI7iLOgMyN01RZE59\nEuektcP6VmvXhGG8nVm+ug54o7BWY0xh0ttdwMtBH4lVFpEW6wUye4hqXXh6\nBbhXqYHfyuy0fukz5rooQd0TZG3yzX+4wlS3+MowY7gvsKybi+9DzNI6en+C\niGlWCT3c2uSrTeBJ40enn36zuRzQYa+/HxbnsdPp4c/7qbsXuavwrhLH/BTF\n2Bdv/ZU292FV11KY5pQeHSzaE5EVkVscg6Yg9CuiHjqvdTL1+DWU2moagJwy\nYTIaz41OekoX4tyddZJkPnbzG3N7eWngzGKGr24X4lPuUBXxTV5iYBCTeTIC\nCjvawj7gCslQYV5MG4VHN2YhO6NK1DWta4ki5eg/qbyC4xsEnlWmq0iehKGE\noF5R\r\n=Yg9d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZEp3dTeeS2KuFwxkg6wQ/mNf7XDBfNM3ZwcJPbIOI/AiBxzj47R08SNe8TTXUpAYxfF9Fl2WOsGP5vRJJQlihsxg=="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsc-archiver_1.1.1_1604326698379_0.846751253441405"},"_hasShrinkwrap":false},"2.0.0":{"name":"@2003scape/rsc-archiver","version":"2.0.0","description":"compress and decompress runescape classic cache archives","main":"./src/index.js","type":"module","bin":{"rsc-archiver":"src/bin.js"},"repository":{"type":"git","url":"git+https://github.com/2003scape/rsc-archiver.git"},"keywords":["runescape","rsc","cache","archive","bzip"],"author":{"name":"2003Scape Team"},"license":"AGPL-3.0+","bugs":{"url":"https://github.com/2003scape/rsc-archiver/issues"},"homepage":"https://github.com/2003scape/rsc-archiver#readme","dependencies":{"bzip2-wasm":"^1.0.1","cli-table3":"^0.6.3","pretty-bytes":"^6.0.0","yargs":"^17.6.2"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"gitHead":"5151996eba777a2f3dbb058a0d14f6422c1f34e5","_id":"@2003scape/rsc-archiver@2.0.0","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-7Z1i53OVU0rcGl/BcjvBCRpQhaspq04JYPDqw4DBEp6VJ0p9eFqhua3KR5cseJ4Q6dmzVXCfKju85cvscAK5Og==","shasum":"fbbb7766f7db6805914279e09268aa87e543c0ca","tarball":"https://registry.npmjs.org/@2003scape/rsc-archiver/-/rsc-archiver-2.0.0.tgz","fileCount":8,"unpackedSize":56328,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIvfIgj05RuWsjZ2YmCHBqCx+xMRu0Ch2VUrYAlSt3DQIhAOtmhv8Mpn+GbHUIXt2iuFRYTSwf/khcIT1cYkM/TkZB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcoSCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpwLhAAiEx0h4cAEddtmhblrfJlE81Sqsq3XZ4Prv+qMwRUoeg7XsWW\r\nNQLxmD5xEhPluCigf44Ivwck/rPrmohMUzTxPjISyecFZovCrtPz7WaGnO5T\r\nCBABNHmgTpa9QsRSNNYuRFSr10LcugsYxbmHRhGNkzzyMHP9UpfRUre3pwn2\r\nySQ09+TBdwHrD+YcTAqNje0YPDlHxnowXehbOiAW6GciA3A6UP1xO6u9jrrE\r\nl6HDkzs4JKwCfZJAqht9wJ8YOSADXN1Gt71Q9wDgxvAJbsD85Bxr3mg2XFAw\r\nn4PzDb5R2Cl+cmB4VP1T0Ca7UDGG4dlXKpDofD77f1KeXRm1p2mR6/wSz1mK\r\nOZHM+jL8fBWi2EGPS6eK1n4PXMywTZu7w5ZYPChQoWKb8QqfESR8QC7w02Of\r\nzJm75IdD63sQZEFAQMrQZ3VRQOnCJ4ZWZBrCXU3HesuNamuPizoK/5s5p7Ll\r\ndMGGp7q1eeikWCGSfDIP5zFsDI0kaKWCfnmJt1R7DTcoN1I2SrRc8clx/x08\r\nZw/0Gy7/KTlFHdBAGGjY5NyZ7WmqfYNeFxwVc1EC1eGBUvs6qAK4qGgTAAvC\r\nNkUUrqsdLPgdutVHaOp6UaAZIe8iidxzVPsUKNEzz/aVF/8829Lme1aiIreE\r\n6CUYjxv0kZwn7X12XzVOrzTzb4y9IBO0hCE=\r\n=6pjB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"misterhat","email":"misterhat144@gmail.com"},"directories":{},"maintainers":[{"name":"misterhat","email":"misterhat144@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rsc-archiver_2.0.0_1668449410483_0.7854804206587722"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-16T17:34:17.191Z","1.0.0":"2019-11-16T17:34:17.600Z","modified":"2022-11-14T18:10:10.731Z","1.0.1":"2019-11-16T21:49:22.340Z","1.1.0":"2019-12-06T18:55:29.129Z","1.1.1":"2020-11-02T14:18:18.566Z","2.0.0":"2022-11-14T18:10:10.650Z"},"maintainers":[{"name":"misterhat","email":"misterhat144@gmail.com"}],"description":"compress and decompress runescape classic cache archives","homepage":"https://github.com/2003scape/rsc-archiver#readme","keywords":["runescape","rsc","cache","archive","bzip"],"repository":{"type":"git","url":"git+https://github.com/2003scape/rsc-archiver.git"},"author":{"name":"2003Scape Team"},"bugs":{"url":"https://github.com/2003scape/rsc-archiver/issues"},"license":"AGPL-3.0+","readme":"# rsc-archiver\ncompress and decompress runescape classic .jag/.mem cache files. these files\ncontain a proprietary header describing the size of the archive, and of\neach individual entry (file). filenames are stored with a hash so it's\nimpossible to recover the originals without bruteforcing (unless they're under\n~5 characters).\n\nthis module works in the browser and node.\n\n## install\n\n    $ npm install @2003scape/rsc-archiver # -g for CLI program\n\n## cli usage\n```\nrsc-archiver <command>\n\nCommands:\n  rsc-archiver x <archive> <files..>  extract a file from an archive\n                                                              [aliases: extract]\n  rsc-archiver a <archive> <files..>  add files to an archive     [aliases: add]\n  rsc-archiver d <archive> <files..>  remove files from an archive\n                                                               [aliases: delete]\n  rsc-archiver l <archive>            list hashes and file sizes in an archive\n                                                                 [aliases: list]\n  rsc-archiver h <name>               return the integer hash of a filename stri\n                                      ng                         [aliases: hash]\n\nOptions:\n  --help     Show help                                                 [boolean]\n  --version  Show version number                                       [boolean]\n\nExamples:\n  rsc-archiver l ./cache/config85.jag       list the hashes in config85.jag\n  rsc-archiver a ./cache/jagex.jag logo.tg  add logo.tga to jagex.jag\n  a\n```\n\n## example\n```javascript\nimport fs from 'fs/promises';\nimport { JagArchive } from './src/index.js';\n\nconst archive = new JagArchive();\nawait archive.init();\narchive.readArchive(await fs.readFile('./cache/sounds1.mem'));\n\nconsole.log(`cache has ${archive.entries.size} files`);\n\n// get death.pcm from the archive and write it to disk\nawait fs.writeFile('death.pcm', archive.getEntry('death.pcm'));\n\n// create a new archive and add a text file to it\narchive.entries.clear();\narchive.putEntry('test.txt', Buffer.from('test string'));\nawait fs.writeFile('./cache/test.jag', archive.toArchive(true));\n\n// read the new archive and retrive the file from it\narchive.readArchive(await fs.readFile('./cache/test.jag'))\n\nconsole.log(`cache has ${archive.entries.size} files`);\nconsole.log(Buffer.from(archive.getEntry('test.txt')).toString());\n```\n\n## api\n### hashFilename(filename)\nconvert `filename` to integer hash used in archives.\n\n### archive = new JagArchive()\ncreate a new jag (de)compressor instance.\n\n### archive.entries\nMap of hashes -> decompressed file buffers.\n\n### async archive.init()\ninitialize the bzip wasm.\n\n### archive.readArchive(buffer)\ndecompress buffer and populate entries with each file within.\n\n### archive.hasEntry(name)\ncheck if archive contains entry based on hash or filename.\n\n### archive.getEntry(name)\nreturn entry based on name or hash.\n\n### archive.putEntry(name, buffer)\nadd a file to the archive buffer.\n\n### archive.removeEntry(name)\nremove entry based on name or hash.\n\n### archive.toArchive(individualCompress=true)\ncompress entries to a jagex archive. if `individualCompress` is true, bzip each\nfile separately. otherwise, concatinate all of the files and then bzip\nthat result instead.\n\n## license\nCopyright 2022  2003Scape Team\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU Affero General Public License as published by the\nFree Software Foundation, either version 3 of the License, or (at your option)\nany later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE. See the GNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License along\nwith this program. If not, see http://www.gnu.org/licenses/.\n","readmeFilename":"README.md"}