{"_id":"@cerebruminc/i420-jpeg-encoder","_rev":"12-643756e9dc88a637e3022d5b1afbfde2","name":"@cerebruminc/i420-jpeg-encoder","dist-tags":{"latest":"1.2.1","beta":"1.2.0-beta.dangerous.b68d97c"},"versions":{"1.0.1":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.0.1","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.0.1","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"b41dc03ffdcb876bac3d3afdd95d952cf2427655","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.0.1.tgz","fileCount":11,"integrity":"sha512-gqU7sHUzYXuxbsC+dvfVl9exp/gHtTvq9ygMV/292HEo6gLHNW3eTKiCSVtgWhKBVp5lKlWg23G39dFonOIYZA==","signatures":[{"sig":"MEQCIAL2RiJcWqwlqMHE3KqmPVJZ9BzY+OCQEXyU7sw55ZuNAiBmhthjeukES3FKJ/hN+bbbFTQ5wSTAYweKPlmLi/nVqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46934},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"71856e5a76026b6a515586f86fd8090b3dec9797","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.0.1_1777158283663_0.8651984751624282","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.0","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.0","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"495891a5a7338a99a423871296a27937b1249be1","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.0.tgz","fileCount":11,"integrity":"sha512-EOW9WSNMrtdON6CwdEtxt8OqIHN7LMl+KzUSedJPn/zn2nWh3xPRZHuX98UbPQ+8MQ8XxoBNnOdKITjbt4oahw==","signatures":[{"sig":"MEQCICYXmwfurV/3ZOiKVy1hzHB5my7HU36RqsCIXatzzckQAiBniF1XfJr+sDoAfHcvKtTChQRMJwXD2peUqFhDQGi33w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46978},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"403c271dd454bbd45aed303d28c5a552c9400b80","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.0_1777164204896_0.4931922293005193","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.dangerous.fa1fb55":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.0-beta.dangerous.fa1fb55","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.0-beta.dangerous.fa1fb55","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"e4aafb613224035717a4a4f73ef02893f2316c83","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.0-beta.dangerous.fa1fb55.tgz","fileCount":11,"integrity":"sha512-4I5Sdmy+hKioLrrWfdIc6g92JAHKHa9cjfX7LzknYG91WG4o0A43hWhHAEsXcdTayE8KvNwPQaS3BtnengwSLw==","signatures":[{"sig":"MEUCIFtUVGFcl90TaNbOgvfsmDKQoP0YRyzSnxNXXJtW3/ZEAiEAj0UwK9RcnUiYkAA3hPzTrcoNN8UyTX0JxflfkFUQ6OQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47551},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"fa1fb557710ca3371f56faeedc4b967a0fa7bdda","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.0-beta.dangerous.fa1fb55_1777269732353_0.15976809369278167","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.1","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.1","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"d26fe23d71b29afd379459b0d51beb5f14a25003","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.1.tgz","fileCount":11,"integrity":"sha512-Tmuasq2zkxOI7p0Skn7blv+lvBnc7pCLdUvQtTt2swyYoH2fmTu1ZWLDWmH8dvAetsVXUBUezGzyIZuuI4SAxw==","signatures":[{"sig":"MEYCIQCLR+zjKUGC0e2HdHp0vc92ccVf5PjJrUifHttxVqTx6wIhAJ8LlHuBCVsbBmh6MGOxRjfZC/szqpEg0Fv8bF6YKMlg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47528},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"c6bd284a3ff6e5c25d46402d6999a82f16005b4a","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.1_1777270450494_0.13003445626263055","host":"s3://npm-registry-packages-npm-production"}},"1.1.1-beta.dangerous.23c43b4":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.1-beta.dangerous.23c43b4","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.1-beta.dangerous.23c43b4","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"cda56b14ccc9d8276b176e98b7c21e0142ebd84d","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.1-beta.dangerous.23c43b4.tgz","fileCount":11,"integrity":"sha512-05RSEzExeR49/+eq08v1HA7fmV0AJylxsOignix4FG9sUOPX0JorXqf4pslJoCqvwG0RlCd5OezXZ57sxpJ+hQ==","signatures":[{"sig":"MEQCIBH470hWnUP4admg/WwdqFlIgwwtqo1RpaRpIlSebTEZAiAQwe6iyxZ0OzfNHEJWZpQok77jz7sO4zayQtOc+1BakQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52594},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"23c43b47686ed4c85db7b98fe7e610a1a49eea03","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.1-beta.dangerous.23c43b4_1777291984175_0.3865447540377276","host":"s3://npm-registry-packages-npm-production"}},"1.1.1-beta.dangerous.42f8d0b":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.1-beta.dangerous.42f8d0b","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.1-beta.dangerous.42f8d0b","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"15af68423e18382d4442b6eccc56bd4335b3ed6d","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.1-beta.dangerous.42f8d0b.tgz","fileCount":11,"integrity":"sha512-fW5CsG9nUClDvXhzzuwyCWHU7KtK6nrKvGGh+pAwLdWRDfUZ4/tzcBjix//KHojMwuOE2yweQYOgscMP2a0Txw==","signatures":[{"sig":"MEYCIQCqt/EvJ1P8YTygW1WI2ZyX57K4LDwAI2NjMt13AmlxewIhAPj7x64K0k2MJlzWtux5W2412TFr/18STzC9Nxzpph07","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52671},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"42f8d0b81be7e4a607f46183c719757f7b921001","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.1-beta.dangerous.42f8d0b_1777294595500_0.5361000996724654","host":"s3://npm-registry-packages-npm-production"}},"1.1.1-beta.dangerous.597a9cb":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.1-beta.dangerous.597a9cb","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.1-beta.dangerous.597a9cb","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"75c3731a8e9a49c89ccbf450e0f583cb17d3039f","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.1-beta.dangerous.597a9cb.tgz","fileCount":11,"integrity":"sha512-BYHO/e/TrXTBGzdjzlGo3ql+nz6fAPstRwJBmUv9psKFEfKFBNi/NHo4wP09+33L8vDlLLM3zDd0+hcTYZwu7Q==","signatures":[{"sig":"MEYCIQD4G16LaW88aeOwFzFpJpl4ssszpXBgvw1tFUYIjm78owIhAI1LMUb45iwXKJBZLCiKZSkjdLZoXMIGi5QgeI2wLMJL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52671},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"597a9cbf97958cf0c5130b4a460a03b7310b0090","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.1-beta.dangerous.597a9cb_1777294805029_0.2944415864226422","host":"s3://npm-registry-packages-npm-production"}},"1.1.1-beta.dangerous.1aaed4e":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.1-beta.dangerous.1aaed4e","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.1-beta.dangerous.1aaed4e","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"e5d2761a7645df7d2aeab82864c89d5dc9296019","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.1-beta.dangerous.1aaed4e.tgz","fileCount":11,"integrity":"sha512-2IyHxjN1eQoyspG73tfDdDCGK/j357RetK+cXQw5q0kRdsD/C2b0DC4Ula/TjTS18akYICpKyg9u81SRgeDkPg==","signatures":[{"sig":"MEUCIQDUpIq83vTNwcjTBB//cDtTUhfOtipsRgIvFZsWh8WYjAIgXN8XVvwSs2MsNooPapUp0jkzXXO48GxNVwnctjEWvJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61926},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"1aaed4ec54ed000a1528dde9faaf88f69bdfe970","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.1-beta.dangerous.1aaed4e_1777323521097_0.3706048520914731","host":"s3://npm-registry-packages-npm-production"}},"1.1.1-beta.dangerous.51eaa9c":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.1.1-beta.dangerous.51eaa9c","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.1.1-beta.dangerous.51eaa9c","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"76ee2c9fc3a2e05905d9586312524de43eabc59f","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.1.1-beta.dangerous.51eaa9c.tgz","fileCount":11,"integrity":"sha512-tgEvzKCn/E0j5v1ES59CuFCzsR7Tyygqk5sNp37/5WWq5dHcp9IkNltiYZswfn3k/kyB3Uw9R5axj3Vmcliuvw==","signatures":[{"sig":"MEYCIQCN9tFHBe++6XVFVISaMV57kC7U/E7NM49Bi6FDwzHVNwIhAPVyfVj0r0iPCUmnzEM/Tru3eg6Uafc3rA8C/zBWoe69","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62315},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"51eaa9c27a3614dd12f33b86ad8d5655f8658382","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.1.1-beta.dangerous.51eaa9c_1777324332106_0.15997647809473126","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.2.0","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.2.0","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"47944659388c53f7dc03cbbc0927cf750966b701","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.2.0.tgz","fileCount":11,"integrity":"sha512-EJpyfeU/UHW7Sii5GnOUUglXkABxfsNoAZjGQbfe0Ot+8uZoYz51mWTvLAgF99B8deRwCNChhRNGrzM0PkUaIA==","signatures":[{"sig":"MEYCIQCpnBljqsc0OP5fG3iymiv5Vj34BPtu7HK3Ou62dzZ6TAIhAOj1q0KwsOMEDIBPiXYFfqnvwzHYCNI59fCxrnyLp/Wb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62292},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"c043990acd7faaa785e8a050f5b7a1a8448bceb5","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.2.0_1777331599088_0.4767261873836852","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.dangerous.b68d97c":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.2.0-beta.dangerous.b68d97c","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","_id":"@cerebruminc/i420-jpeg-encoder@1.2.0-beta.dangerous.b68d97c","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"dist":{"shasum":"54714d16c8ac4205fbe52c36dcebb6d7d67f5281","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.2.0-beta.dangerous.b68d97c.tgz","fileCount":11,"integrity":"sha512-K8Kvqf0oUQfHCVrqU8v2FJgTnUUnMYjhXJMzbmYbEuQKGcz/tRTWtWB5sWp2jEDVJzx6VgHMb/nCjS3x1GX+XQ==","signatures":[{"sig":"MEUCIQD1yypEFQPHbtScD2M8v+fsOuuCRIPTHi9IekvATepjZAIgHWhwNPaajtIo1sZWjaxnTY9jtRHD4b4nzKQQwDCeqO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62315},"main":"dist/index.js","type":"commonjs","types":"index.d.ts","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"b68d97cdfbc397d6c0c143badf968eb346ed920d","gypfile":true,"scripts":{"test":"jest","build":"npm run build:native && npm run build:ts","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","build:ts":"tsc -p tsconfig.json","build:native":"npm run check:native-deps && node-gyp rebuild","check:native-deps":"node scripts/check-native-deps.js"},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"repository":{"url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git","type":"git"},"_npmVersion":"10.8.2","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"node-addon-api":"^8.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3","@types/node":"^20.19.39"},"_npmOperationalInternal":{"tmp":"tmp/i420-jpeg-encoder_1.2.0-beta.dangerous.b68d97c_1784065002076_0.34504327039712024","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@cerebruminc/i420-jpeg-encoder","version":"1.2.1","description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","main":"dist/index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","require":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"npm run build:native && npm run build:ts","build:native":"npm run check:native-deps && node-gyp rebuild","build:ts":"tsc -p tsconfig.json","check:native-deps":"node scripts/check-native-deps.js","clean":"node-gyp clean && rm -rf dist","install":"node scripts/check-native-deps.js && node-gyp rebuild","prepack":"npm run build","prepare":"npm run build:ts","pretest":"npm run build","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git"},"keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","type":"commonjs","engines":{"node":"^20.0.0 || ^22.0.0 || ^24.0.0"},"gypfile":true,"bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","devDependencies":{"@types/node":"^20.19.39","jest":"^30.3.0","jpeg-js":"^0.4.4","node-gyp":"^12.3.0","typescript":"^6.0.3"},"dependencies":{"node-addon-api":"^8.7.0"},"_id":"@cerebruminc/i420-jpeg-encoder@1.2.1","gitHead":"f121b460999d53b17b75536680b0e55b19c3aad5","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3z1aCqstda40nNdyUwXussEp19STjfS6zPPuPN5ZqAXgCv4RiCtjD6hbGxtnzHKet/9zOjuaym6KY36N1YHJug==","shasum":"435e9ac32c9b935a744109e98eef1cf2b46da608","tarball":"https://registry.npmjs.org/@cerebruminc/i420-jpeg-encoder/-/i420-jpeg-encoder-1.2.1.tgz","fileCount":11,"unpackedSize":62292,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCXrjUJfea/hHAJniAVq8V1KwBGAyls71+9f6Pq75v83AIhAPlbWYkaRszMXrZTcXzPbj1OaNIlWOpTbD62NYoOr4lg"}]},"_npmUser":{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},"directories":{},"maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/i420-jpeg-encoder_1.2.1_1784248153651_0.22547734894148674"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T23:04:43.551Z","modified":"2026-07-17T00:29:13.990Z","1.0.1":"2026-04-25T23:04:43.801Z","1.1.0":"2026-04-26T00:43:25.077Z","1.1.0-beta.dangerous.fa1fb55":"2026-04-27T06:02:12.492Z","1.1.1":"2026-04-27T06:14:10.642Z","1.1.1-beta.dangerous.23c43b4":"2026-04-27T12:13:04.331Z","1.1.1-beta.dangerous.42f8d0b":"2026-04-27T12:56:35.639Z","1.1.1-beta.dangerous.597a9cb":"2026-04-27T13:00:05.205Z","1.1.1-beta.dangerous.1aaed4e":"2026-04-27T20:58:41.248Z","1.1.1-beta.dangerous.51eaa9c":"2026-04-27T21:12:12.234Z","1.2.0":"2026-04-27T23:13:19.229Z","1.2.0-beta.dangerous.b68d97c":"2026-07-14T21:36:42.220Z","1.2.1":"2026-07-17T00:29:13.795Z"},"bugs":{"url":"https://github.com/cerebruminc/i420-jpeg-encoder/issues"},"author":{"name":"Cerebrum LLC"},"license":"GPL-3.0-only","homepage":"https://github.com/cerebruminc/i420-jpeg-encoder#readme","keywords":["jpeg","turbojpeg","i420","yuv420","napi"],"repository":{"type":"git","url":"git+https://github.com/cerebruminc/i420-jpeg-encoder.git"},"description":"Node.js native I420 to JPEG encoder backed by libjpeg-turbo.","maintainers":[{"name":"sarjuhansaliya","email":"sarju.hansaliya@gmail.com"},{"name":"rennen","email":"rachel@cerebrum.com"},{"name":"davesauce","email":"dave@cumulocreative.com"},{"name":"karaxuna","email":"kaxabernet@gmail.com"},{"name":"shubham0850","email":"rajshubham0850@gmail.com"},{"name":"sebmellen","email":"s@slm.space"},{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"}],"readme":"# @cerebruminc/i420-jpeg-encoder\n\nSynchronous Node.js native encoder for converting planar `I420`/YUV420 frames directly to JPEG using `libjpeg-turbo`.\n\n## System Prerequisites\n\nInstall `libjpeg-turbo` before building the addon:\n\n```sh\nbrew install jpeg-turbo\n```\n\n```sh\nsudo apt-get update\nsudo apt-get install libturbojpeg0-dev pkg-config\n```\n\nThe build expects `pkg-config --cflags --libs libturbojpeg` to resolve the TurboJPEG headers and library.\n\nTo verify local native prerequisites before building:\n\n```sh\nnpm run check:native-deps\n```\n\n## Install\n\n```sh\nnpm install @cerebruminc/i420-jpeg-encoder\n```\n\nThis package targets Node.js `^20.0.0 || ^22.0.0 || ^24.0.0` and uses N-API through `node-addon-api`.\n\n## Usage\n\n```ts\nimport { encodeI420ToJpeg } from \"@cerebruminc/i420-jpeg-encoder\";\n\nconst width = 1280;\nconst height = 720;\nconst quality = 85;\nconst i420Buffer = Buffer.alloc((width * height * 3) / 2);\n\nconst jpegBuffer = encodeI420ToJpeg(i420Buffer, width, height, quality);\n```\n\n### Arguments\n\n| Argument | Type | Required | Description |\n|---|---|---|---|\n| `i420Buffer` | `Buffer` | ✓ | Planar I420 data, either tightly packed or row-strided |\n| `width` | `number` | ✓ | Frame width in pixels (positive integer) |\n| `height` | `number` | ✓ | Frame height in pixels (positive integer) |\n| `quality` | `number` | ✓ | JPEG quality from 1–100 |\n| `options` | `boolean \\| object` | – | A boolean keeps the old `padOddDimensions` behavior. An object may include `padOddDimensions`, `yStride`, `uStride`, `vStride`, `yOffset`, `uOffset`, and `vOffset`. If any of `yStride`, `uStride`, or `vStride` is provided, all three must be provided together; otherwise omit all three. |\n\n### Dimension requirements\n\n`width` and `height` must be positive integers. Because I420 uses 4:2:0 subsampling, each chroma (U/V) plane must cover an integer number of 2×2 luma blocks.\n\n**Even dimensions (default):** `width` and `height` must both be even. The expected source buffer size is `width * height + 2 * (width / 2) * (height / 2)`.\n\n**Odd dimensions with `padOddDimensions = true`:** Any positive integer dimensions are accepted. The expected source buffer size uses `ceil` for the chroma planes: `width * height + 2 * ceil(width / 2) * ceil(height / 2)`. The encoder internally pads the luma plane by replicating the last column and/or row so that libjpeg-turbo receives an even-dimensioned frame. As a result, **the output JPEG dimensions are rounded up to the nearest even values** (e.g., a 15×17 source produces a 16×18 JPEG).\n\n### Strided buffers\n\nTightly packed I420 does not need options. For row-strided I420 buffers, pass all three plane strides:\n\n```ts\nconst jpegBuffer = encodeI420ToJpeg(i420Buffer, width, height, quality, {\n  yStride,\n  uStride,\n  vStride,\n});\n```\n\nBy default, strided planes are assumed to be contiguous inside `i420Buffer`: Y starts at offset `0`, U starts at `yStride * height`, and V starts at `uOffset + uStride * ceil(height / 2)`. If the contiguous I420 image starts later in the buffer, you can pass `yOffset` only and the U/V plane offsets will be inferred from that starting point using the supplied strides and dimensions. Pass `uOffset` and `vOffset` as well when the chroma planes are not laid out contiguously after Y, for example if U and V are stored at independent locations in the buffer.\n\n`encodeI420ToJpeg` throws standard JavaScript errors when arguments are invalid, the I420 buffer size does not match the expected layout, or `libjpeg-turbo` reports a compression failure.\n\n## Development\n\nInstall dependencies:\n\n```sh\nnpm install\n```\n\nBuild the native addon and TypeScript wrapper:\n\n```sh\nnpm run build\n```\n\nRun the Jest test suite:\n\n```sh\nnpm test\n```\n\nThe tests cover both native error handling and a color I420 fixture that is decoded back from JPEG to verify chroma data survives the encode path.\n\nClean generated build output:\n\n```sh\nnpm run clean\n```\n\n## License\n\nGNU General Public License v3.0 only. See `LICENSE`.\n","readmeFilename":"README.md"}