{"_id":"@bytedance/tar-wasm","_rev":"6-697ac2761b3e141346ff5417ebc50f6e","name":"@bytedance/tar-wasm","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.5":{"name":"@bytedance/tar-wasm","version":"0.1.5","license":"MIT","_id":"@bytedance/tar-wasm@0.1.5","maintainers":[{"name":"eligao","email":"refraction222@gmail.com"},{"name":"emit","email":"xwchris.zhang@gmail.com"},{"name":"tseian","email":"tseianxwc@gmail.com"},{"name":"pd4d10","email":"pd4d10@gmail.com"},{"name":"bytedance-name","email":"guoyu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"dist":{"shasum":"37a11e98c7f2d013d728184eb77b43b8742bd9e8","tarball":"https://registry.npmjs.org/@bytedance/tar-wasm/-/tar-wasm-0.1.5.tgz","fileCount":7,"integrity":"sha512-KuJzjUYyGvVhW/IQOK5vYQIeYifvJlVni2m38j2ZG9t4VMD3CLdoTWulkyYr0s+lpRv/F0pQ4Ylq+jQQDzrK8Q==","signatures":[{"sig":"MEUCIQC6ERwhTjaN3b1q/mK/MkSMWfHBWdBc3B5ApDm0CCbcbgIgZn1mlPc0B+viB3FIZ3puDJVWEcbwzgCjJJutrVldBf8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/jtiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoV4w/8CcduRFytph92KkdXy3WwbH5Dizluhs0Wo/PFkpGaHyKx0iMx\r\nRBp1c6ykXSe9uJOW19DIdYLxYlrU9B8U/z/w0DoVKP95Nsrp3ZlNVgOlzqOn\r\n4mDOPmAthAF9LF9q/fq/ZIoLdq27pjB73HosB0HTTpbi7RYAp9GhVsmz1tbu\r\nPzkBjUJONGO1Ki+lOfm7/PV9yyHCh26OrjgS8NFhbGMAJUQ2hx9GWCMtsVGU\r\nhP/zDktaqUdjBSC9dMqSpITDDgkzQCahxHnlSpDNgdZyCtmS44J9nLCOGL0F\r\nn6ibIIS+nNnfnfepIXLjlu5FZ/Gr56j4gYe7Cbc6mxIlFmUh7AfKuCynPTPv\r\nCaJXzsSCXlheqP8ZARVO5FvaRoWUyrnKwQLR77ie0grds3fAvX6ViA3A3pY+\r\nhcArvY2+tEr/i2pbuV3U0+lB0p3rnv7iF+91e2L9JZ4BgPtIPlWronvCLmg5\r\nLVkBmGOywsfF5/KjMTF0XFvpShOybKz618jGayGM/0IqLLz4DAYfkDzBH3xt\r\nYweCQcRsEzKusQPEVsKNrCACmmHxSYC8a1lGttotUyqWkR7DgLCf7OHSILcK\r\nYBgT57daLbmCrgvLxZAcjx8UenbhbYeenvCmvmVvtwf4GQLYA+QDZbJL1uLU\r\nS0VkOF9gcTycFpzK6SJvRYH9NqXV8VR+NYc=\r\n=ukaA\r\n-----END PGP SIGNATURE-----\r\n"},"types":"tar_wasm.d.ts","module":"tar_wasm.js","gitHead":"eb12e78745596864ecdc9b856c649e39c4399ce3","_npmUser":{"name":"eligao","email":"refraction222@gmail.com"},"_npmVersion":"8.11.0","description":"An experimental wasm-based tar implementation for browsers.","directories":{},"sideEffects":false,"_nodeVersion":"16.15.1","collaborators":["Eli Gao <eli.gao@bytedance.com>"],"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tar-wasm_0.1.5_1660828513875_0.8502547862356546","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@bytedance/tar-wasm","version":"0.1.6","license":"MIT","_id":"@bytedance/tar-wasm@0.1.6","maintainers":[{"name":"eligao","email":"refraction222@gmail.com"},{"name":"emit","email":"xwchris.zhang@gmail.com"},{"name":"tseian","email":"tseianxwc@gmail.com"},{"name":"pd4d10","email":"pd4d10@gmail.com"},{"name":"bytedance-name","email":"guoyu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"homepage":"https://github.com/bytedance/tar-wasm#readme","bugs":{"url":"https://github.com/bytedance/tar-wasm/issues"},"dist":{"shasum":"d60ab6ba237621fefdf632efc8dad2dee55e7c3c","tarball":"https://registry.npmjs.org/@bytedance/tar-wasm/-/tar-wasm-0.1.6.tgz","fileCount":7,"integrity":"sha512-1wTvSF1ZlU8WYwtgjtTdZDjRocdidE+Eeieep6S5fmRWM1lwPk7+tTp9NCbjYqjRmpN5mgWn4FrogjbmSAW0tQ==","signatures":[{"sig":"MEYCIQCskhPwgBcG/V4Fph9soUxJ7tDRC1zaOa8uVKcuU/Wh1AIhAKRkIswcr7us63tIwfffn3rZ4/o+Nj7V+nUBjvvghxyc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/j0xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrboRAAlEYr0EpvvBGRtmT85rp2niH0TRlRITJyw72YfHKTCouthRLx\r\n2zcEXbgYECiPQbpFJI1P57K+ukAUZXPY9jeQB1ozm7kdb4l5ov1Hf4KsIZjx\r\n4wTLaQeCvKG7c1+YYiwZ+Dyfj+JuW+Zn2Oa5E53BQOB57I+s1AmTGq1EVn/q\r\n8MySO9jC0mUDiGVGhjOtQVSF9Reyu01NLMcn+Y3NXjLpyztfAYBYnrRcKcLF\r\nByoNiY+I/xqkvAeX7UZjtRcq9MZnvufGURHbW0f/9mlmNAZ6G/mCDx9M69gR\r\n8ZgQ+PVXBrm2H39AfS7/vdaeedrPt32vcLd0cEnzuIDQdmSunv9ERiJ+Xv7Q\r\n8b1bNp8o5oBp3/u6MxNcbkmdtIpgj9VDzIKJdiTbPKBr3tWw7np5lqmaw3F/\r\n6ulrGKrr/0b8ftbf9fGv+CFLUUVNfZvZPXvlEPOYC7A2ku/Uta+l+F7qh2gJ\r\nseChHBF+4VihGrNBM6KZe7R7xHKU7m6peJFeuMyDjHteiykZnBRdGeeLt678\r\nvtT93oCRnx8sfVlmTSJ4So+nIFRJjcOIzohzLr8n8/m8yeZ5qNkndTYxHa3q\r\n31RBO+V8oWG/cIrEG77EIWxGWdkGuHqfP8azlOPeWRQqhzyBrVgesVKca2jI\r\n3zk6TQAV9PqbZ9aSWM3R6A2wAZqvt+F9PWE=\r\n=Yf35\r\n-----END PGP SIGNATURE-----\r\n"},"types":"tar_wasm.d.ts","module":"tar_wasm.js","gitHead":"e100b04ab45da728aa93b4f9ef9ee53c8db31fb9","_npmUser":{"name":"eligao","email":"refraction222@gmail.com"},"repository":{"url":"git+https://github.com/bytedance/tar-wasm.git","type":"git"},"_npmVersion":"8.11.0","description":"An experimental wasm-based tar implementation for browsers.","directories":{},"sideEffects":false,"_nodeVersion":"16.15.1","collaborators":["Eli Gao <eli.gao@bytedance.com>"],"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tar-wasm_0.1.6_1660828977204_0.9101641804604452","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@bytedance/tar-wasm","version":"0.1.7","license":"MIT","_id":"@bytedance/tar-wasm@0.1.7","maintainers":[{"name":"eligao","email":"refraction222@gmail.com"},{"name":"emit","email":"xwchris.zhang@gmail.com"},{"name":"tseian","email":"tseianxwc@gmail.com"},{"name":"pd4d10","email":"pd4d10@gmail.com"},{"name":"bytedance-name","email":"guoyu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"homepage":"https://github.com/bytedance/tar-wasm#readme","bugs":{"url":"https://github.com/bytedance/tar-wasm/issues"},"dist":{"shasum":"5ad8a8742c39b523d7ca7003cad1d3de086088c8","tarball":"https://registry.npmjs.org/@bytedance/tar-wasm/-/tar-wasm-0.1.7.tgz","fileCount":12,"integrity":"sha512-y7p0G7UYMKi9KWhoXtTj9PEuO/H+OfllVXKXFFaP5uVxnVcDTgkhvhbq05yPqJ6ViyLpBGf6YZj51y7MBZBV+g==","signatures":[{"sig":"MEUCIEH0o7E0Sncpz6EcUNEZGM5rhWiZQ4L7scnDtI6qtln2AiEAoH8m7x/x7CVutRvmB20BveOb3hgE1wLhtdQ4QpZbOAQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWqEwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmosCRAAjnKu3BUnbv+BgaMt0wAFLcsCAlfP4KrHa0nvNX64RKyBNN04\r\na0Sz487/2HXouROnL1LxdfljlMb8GQ6t4mAyf+WCtH0L9BIpRDt4lPH3lcOk\r\nRaLUJ5eqCih3qevX/Fd6SWYvVCAN/QmyE3M6IgxRmn+DrYSO3dLJcHX+S26q\r\nyCvjU5t0nSEK4dkg99/leYZJ3PS/HNBzAgsirE2Cm5fRzuElOZf2pmtxOxcC\r\nWCSXLx1hiJOL/NvWs70+wrJGs3OHawaQ6qdlIsJKgVMCH55BgIOMqrRKNaHj\r\nPY67T/xjq8NI6GCzki1mwEeFO7jeZjoc/RKfIWIiKuiWLBntlyEBm+JHffZa\r\nKqkX7QjYCjw/YzZP3dzJ0RlOz9qgztxi/e7DSrGsZ7yOV5iGWE35jJa9Wdir\r\n7DVbOjHuBpcpCcrxn7suwtdJKFFxMA3epmK4WM7FXuGuoOLev0oI9czkhClV\r\nN1lpHaLtU2qE3+mN/oCTHbo06ltd7YH4JBp/uYAnye2orIF4BUaqKI5yMG7R\r\nuaecS9wfh0ECpvGi67vRHokrsmyPtg5yM5v53W2vSWfWGw1TnHfZyCH3gWys\r\n2DfyERqp+KbgSWUKAe58KRKTKFE5ZEEsHIdUfHtqO66OInLDnKcZVShTuv1y\r\n4wj+oUrOrSBNLZ7LzplOxC1wwLW+FFF61tM=\r\n=eM9Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"nodejs/tar_wasm.js","types":"bundler/tar_wasm.d.ts","module":"bundler/tar_wasm.js","gitHead":"4195a48a4a08b6e4facf4d7157d0959dfb82e5f9","_npmUser":{"name":"eligao","email":"refraction222@gmail.com"},"repository":{"url":"git+https://github.com/bytedance/tar-wasm.git","type":"git"},"_npmVersion":"8.11.0","description":"An experimental wasm-based tar implementation for browsers.","directories":{},"sideEffects":false,"_nodeVersion":"16.15.1","collaborators":["Eli Gao <eli.gao@bytedance.com>"],"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/tar-wasm_0.1.7_1666883888460_0.393914312969458","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-08-18T13:15:13.812Z","modified":"2025-06-06T06:41:04.475Z","0.1.5":"2022-08-18T13:15:14.101Z","0.1.6":"2022-08-18T13:22:57.417Z","0.1.7":"2022-10-27T15:18:08.651Z"},"bugs":{"url":"https://github.com/bytedance/tar-wasm/issues"},"license":"MIT","homepage":"https://github.com/bytedance/tar-wasm#readme","repository":{"url":"git+https://github.com/bytedance/tar-wasm.git","type":"git"},"description":"An experimental wasm-based tar implementation for browsers.","maintainers":[{"email":"pd4d10@gmail.com","name":"pd4d10"},{"email":"bnpm@bytedance.com","name":"bytednpm"},{"email":"xwchris.zhang@gmail.com","name":"emit"},{"email":"refraction222@gmail.com","name":"eligao"}],"readme":"# @bytedance/tar-wasm\n\nA faster\\* experimental wasm-based tar implementation for browsers and Node.js.\n\n\\*50-160x faster, see benchmarks below.\n\n## Usage\n\n### Install\n\n```bash\nnpm install @bytedance/tar-wasm\n```\n\n### Example\n\n```typescript\nimport { TarBuilder } from \"@bytedance/tar-wasm\";\n\n// Create a new tar builder\nconst tarBuilder = new TarBuilder();\n\n// Optionally enable gzip compression\n// tarBuilder.set_gzip(true);\n// However, I recommend using the Compression Streams API instead when possible:\n// https://developer.mozilla.org/en-US/docs/Web/API/Compression_Streams_API\n\nfor (const file of files) {\n  // Add files to the tar\n  tarBuilder.add_file(file.name, file.content);\n}\n\n// Finish building the tar and get the result\nconst tar: UInt8Array = tarBuilder.finish();\n\n// Optionally convert the tar to a Blob or whatever\nconst tarBlob = new Blob([tar], { type: \"application/x-tar\" });\n```\n\n## Performance Notes\n\nThis library is optimized for performance via WebAssembly.\nHowever, WebAssembly runs in the main thread by default and can be computationally expensive by nature depending on the size of the tar.\n\nWe recommend using [Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) or [Worker Threads](https://nodejs.org/api/worker_threads.html) to run the tar building in a separate thread.\nYou may want to refer to [Greenlet](https://github.com/developit/greenlet) for a lightweight implementation.\n\n## Benchmarks\n\nAccording to my benchmark, it can be 50-160x faster than existing JavaScript implementations on NPM, depending on the browser and the file size.\n\nResults on my machine\n(Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz):\n\n```\nRunning benchmark...\nGenerated 1001 random files to test in 191.13816452026367ms\n@bytedance/tar-wasm: 24.62919044494629ms (baseline)\ntar-js: 3943.49857711792ms (160.11482740095886x slower than @bytedance/tar-wasm)\ntarts: 1251.595199584961ms (50.817553357373065x slower than @bytedance/tar-wasm)\n```\n\nSee `./examples/nodejs-benchmark` folder for more details.\n\n## TODO\n\n- [ ] Include a Promise API working from a separate worker thread.\n- [ ] Add support for reading and writing tar files.\n- [x] Support of Node.js environment\n- [x] Tests\n- [x] Benchmarks\n","readmeFilename":"README.md"}