{"_id":"@preeternal/react-native-file-hash","_rev":"28-a05a81690c0da8076fc9484c2d1bf85d","name":"@preeternal/react-native-file-hash","dist-tags":{"latest":"3.0.1"},"versions":{"1.0.2":{"name":"@preeternal/react-native-file-hash","version":"1.0.2","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal"],"author":{"name":"Preeternal"},"license":"MIT","_id":"@preeternal/react-native-file-hash@1.0.2","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"8e75835f3235777676c1bed769eb45b6755b016f","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-1.0.2.tgz","fileCount":27,"integrity":"sha512-Gn78SFMbKosZFe5Duj7+HezVsijuaW77N+XyGtqp3iDAkv8EVIbQfqAnRs64+CO9eIoz3KOm4WseywOp7SlT6g==","signatures":[{"sig":"MEYCIQCGqX9MpvBDG/yAinn8Z8dtbRfzIOh4AkMA21S8J1aoJQIhAO1uioCfSIHxL/JGaWWw6JDEQ/0mgNHvL7Vz6QxxWsEl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178190},"main":"lib/index.js","types":"lib/index.d.ts","source":"src/index.ts","gitHead":"7fa2d17bf7815b6b3e8e7e2066647f8afd350010","scripts":{"lint":"eslint .","build":"tsc","prepare":"bun run build"},"_npmUser":{"name":"preeternal","actor":{"name":"preeternal","type":"user","email":"preeternal@gmail.com"},"email":"preeternal@gmail.com"},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"_npmVersion":"10.8.2","description":"Native fast hash utilities (SHA-256, MD5) for React Native. No UI freezes, supports both old and new architecture (TurboModules ready).","directories":{},"_nodeVersion":"18.20.8","codegenConfig":{"name":"FileHashSpec","type":"modules","jsSrcsDir":"src"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.19.0","prettier":"^3.6.2","typescript":"^5.0.0","@types/react":"^19.0.0","@react-native/babel-preset":"^0.80.1","@react-native/eslint-config":"^0.80.1"},"peerDependencies":{"react":"*","react-native":">=0.72.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_1.0.2_1751880898058_0.9786803829527901","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@preeternal/react-native-file-hash","version":"1.0.4","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal"],"author":{"name":"Preeternal"},"license":"MIT","_id":"@preeternal/react-native-file-hash@1.0.4","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"ef658f878dc17cf1b40c558ebde84da8b52261e1","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-1.0.4.tgz","fileCount":24,"integrity":"sha512-z64twIyafhVfdSr3In5OrU/lPeuVj7k5Q1AqOIL5bjY4C3dHj7RJtw3clemiaZFKCHWQycAq1W5+ko7VHm8jRw==","signatures":[{"sig":"MEYCIQDpy5cvxDl7soHxDFYbVV0DL6ygi/qPy0WEPN0hrU9QPQIhAMP18tYWjpZgje8iEtt34hu7H/biMCKnztqCssbmnSac","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175964},"main":"lib/index.js","types":"lib/index.d.ts","source":"src/index.ts","gitHead":"3fa5973f1407de7654535332525d15cea1aa575e","scripts":{"lint":"eslint .","build":"tsc","prepare":"bun run build"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"_npmVersion":"10.8.2","description":"Native fast hash utilities (SHA-256, MD5) for React Native. No UI freezes, supports both old and new architecture (TurboModules ready).","directories":{},"_nodeVersion":"18.20.8","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.19.0","prettier":"^3.6.2","typescript":"^5.0.0","@types/react":"^19.0.0","@react-native/babel-preset":"^0.80.1","@react-native/eslint-config":"^0.80.1"},"peerDependencies":{"react":"*","react-native":">=0.72.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_1.0.4_1753019144081_0.4016519930062694","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@preeternal/react-native-file-hash","version":"1.0.5","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal"],"author":{"name":"Preeternal"},"license":"MIT","_id":"@preeternal/react-native-file-hash@1.0.5","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"5d8afc0a08c20a31d35930d39cd7620b9b41de93","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-1.0.5.tgz","fileCount":24,"integrity":"sha512-kb1klVa+tDGSzqJc2yOMyuyEDAuh2TwdjhYZrH3FqqTTddkuzvqg5eKvLdBSV0DAsK2isMGSxT60E3yaPciYgA==","signatures":[{"sig":"MEYCIQCKmK2GqtpbXJCa6cdERbWLYvk8+jdq2p4zsTcO8CW+SwIhAPMRwxkERHjrtt5eVj8zkdA32bo0Gi/LOcK5PrSCCYre","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181005},"main":"lib/index.js","types":"lib/index.d.ts","source":"src/index.ts","gitHead":"5040cfdc9b9805f7a3ea96627e1b639eeff366da","scripts":{"lint":"eslint .","build":"tsc","prepare":"bun run build"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"_npmVersion":"10.8.2","description":"Native fast hash utilities (SHA-256, MD5) for React Native. No UI freezes, supports both old and new architecture (TurboModules ready).","directories":{},"_nodeVersion":"18.20.8","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.19.0","prettier":"^3.6.2","typescript":"^5.0.0","@types/react":"^19.0.0","@react-native/babel-preset":"^0.80.1","@react-native/eslint-config":"^0.80.1"},"peerDependencies":{"react":"*","react-native":">=0.72.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_1.0.5_1757857868062_0.2518148880534379","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@preeternal/react-native-file-hash","version":"1.1.0","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@1.1.0","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"d9911e5f2465969056855bdc731630629fb633a2","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-1.1.0.tgz","fileCount":29,"integrity":"sha512-32HkINi8q9IL7j13obCK1XRlf0Ox7CpMzjOiFCj9q/BWrINuXMCWORlNz4lm5GmtXiqWqu5vZaP7KY+6zQbiQQ==","signatures":[{"sig":"MEUCIHHgrDK2osjRP3CVJgnEtPxHwHZtpuQe6pyvG1LJXEs7AiEAusMcAlxB4Jl1gqou6OBwHa/VuMgZGH6ljQsNbjFf5BQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83983},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"1446779e5ac862e5f0d61250ef8b8488262ac255","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"deprecated":"Missing bundled native sources; please upgrade to 1.1.1","release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.4","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"buffer":"^6.0.3"},"codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.0","react-native":"0.81.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.16","@react-native/babel-preset":"0.81.1","@react-native-community/cli":"20.0.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_1.1.0_1765651698736_0.12866945146316722","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","lefthook","release-it","jest"],"version":"0.55.1","languages":"kotlin-objc"}},"1.1.1":{"name":"@preeternal/react-native-file-hash","version":"1.1.1","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@1.1.1","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"63461dc82cb747eedaa55331896adf2bba1eb92f","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-1.1.1.tgz","fileCount":29,"integrity":"sha512-FPza59HB5nQS+EM6ezmKTFchydxyvvzCu0grmVCWJ6gm+Vzt0ASFqwEeUz37DbO5cSPx5nBsJ03ayeQ0sCx0XQ==","signatures":[{"sig":"MEUCICWnOT5DrK0DHmfl/jH0l6jCQmYnFm0E07DdawFUUvntAiEApjCE1QkSymidwcvZe+cDAtjnk5BXVOH7SUobUcPkiCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84041},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"53f4b4b8a3582725061a35a575d55f05936d1ee2","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.4","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"buffer":"^6.0.3"},"codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.0","react-native":"0.81.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.16","@react-native/babel-preset":"0.81.1","@react-native-community/cli":"20.0.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_1.1.1_1765737525916_0.2690515773644142","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","lefthook","release-it","jest"],"version":"0.55.1","languages":"kotlin-objc"}},"1.1.2":{"name":"@preeternal/react-native-file-hash","version":"1.1.2","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@1.1.2","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"be463ad3637277de8afea1863b9b129fc173c80b","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-1.1.2.tgz","fileCount":200,"integrity":"sha512-LKzWK5nkwGdCneChfVF4bBOxyqAlIrDYkIRSXFLi1O2o2T3gJhSp5TyPcx8kv2RlFm3zDg3wu1Ld38VC1+ZxKA==","signatures":[{"sig":"MEUCIQC5FlbFjKHSGiDY2tHp82gpfesS4s5aLjICxoLEJSc3egIgO+Pyzl1C//IMwAWAYSRJlmXiBxBjbRdsJB196N0k44s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7297815},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"61d394d0166f542b652e6bf6b47e83cc9b92a397","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.4","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"buffer":"^6.0.3"},"codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.0","react-native":"0.81.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.16","@react-native/babel-preset":"0.81.1","@react-native-community/cli":"20.0.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_1.1.2_1767983523570_0.638065565777677","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","lefthook","release-it","jest"],"version":"0.55.1","languages":"kotlin-objc"}},"1.1.3":{"name":"@preeternal/react-native-file-hash","version":"1.1.3","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@1.1.3","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"ebd694bb7fabf2ee651e769f350ad9215ff10810","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-1.1.3.tgz","fileCount":200,"integrity":"sha512-IYImqzLJYoyE+8CidfHas1YUd1FfjteVqwNDTDD3SNpQ1MB9vzevjM6/7XI/aPD0+5BkV//z7hb1agaFbM5dUA==","signatures":[{"sig":"MEYCIQCxHEK9+LrTDzkgqn26KhRJ2aEUEBAv+maS20mLEIPb4wIhAOfzjYwC1jdFNSLQbcD2lPvfeWBuSvZNgEyxXapMfkSn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7298606},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"9e03cbff94dbb34c66aa10f8f7ee28148c3f9db0","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.4","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"buffer":"^6.0.3"},"codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.0","react-native":"0.81.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.16","@react-native/babel-preset":"0.81.1","@react-native-community/cli":"20.0.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_1.1.3_1769340032692_0.010043686534106033","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","lefthook","release-it","jest"],"version":"0.55.1","languages":"kotlin-objc"}},"2.0.1":{"name":"@preeternal/react-native-file-hash","version":"2.0.1","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@2.0.1","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"fdee27ab4363b0c0c821a57ea495f5b228b91902","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-2.0.1.tgz","fileCount":264,"integrity":"sha512-rP0OG0YG4cWF8F17mAWNffXNaJcevalS2FZVs/ekO/IQ4h9jW5glO8UVoaQ5ddm4y2896hibpgJIeP2FjfiBdw==","signatures":[{"sig":"MEUCIQC52CoERuo4DmGjqoF+Pw+3uLKj+RrK02e4+AbVTbsGCwIgSlyDfnjo+OOe/Jh7/BQrLk/r1DeeTZNbeLNVGLPahRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11230764},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"react-native","setupFiles":["<rootDir>/src/jest.setup.ts"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"85146a9bb4f487e65ada63aef8417c1b57f7a4ba","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.4","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"buffer":"^6.0.3"},"codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.0","react-native":"0.81.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.16","@react-native/babel-preset":"0.81.1","@react-native-community/cli":"20.0.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_2.0.1_1773586571157_0.14072515666398","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","lefthook","release-it","jest"],"version":"0.55.1","languages":"kotlin-objc"}},"2.0.2":{"name":"@preeternal/react-native-file-hash","version":"2.0.2","keywords":["react-native","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@2.0.2","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"3c7b2a51c503f3f3280d09eb52b255a3c7357a5d","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-2.0.2.tgz","fileCount":264,"integrity":"sha512-OHGhwUMIK7qwS6UZy2CaKDSFTDz7zQ/gDCiHb37AQ5obQ5xWstAZ5VfigC+aXOTiLihTldSp514woCSahxsM0A==","signatures":[{"sig":"MEUCIQCpBLi/rg0lFYSFfNMNMXna/63657He/4KJ4wPrLq8MRAIge8L1YxtBamCxgl/1YWpRavdkFT5tivPWFc1gRnSZ4mU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11231568},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"react-native","setupFiles":["<rootDir>/src/jest.setup.ts"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"95030b79c9d92f03e0233591cc6b028bf5cb0378","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"preeternal","email":"preeternal@gmail.com"},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.4","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"22.22.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.0","react-native":"0.81.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.16","@react-native/babel-preset":"0.81.1","@react-native-community/cli":"20.0.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_2.0.2_1773950100543_0.6678940034811085","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","lefthook","release-it","jest"],"version":"0.55.1","languages":"kotlin-objc"}},"2.0.3":{"name":"@preeternal/react-native-file-hash","version":"2.0.3","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@2.0.3","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"a3d7925a64a46f0552d112f24f70d4b00ba7fea1","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-2.0.3.tgz","fileCount":261,"integrity":"sha512-O3/NVBF74zDmha2f9QQNomRyta8bV33AW0XLq3XChFtP+pCbtVmxiYKSy7uwJiaU9JRYuYgYv7nbnrnzOaFR7w==","signatures":[{"sig":"MEUCICY+BojZzf52uNrJ71D+aVkL3S5QGwr3U7ceM3+3+B+OAiEAnS8EgX3u+5BISQ1/nKoHYlkFk8VhgcOmTrne1SHp3rQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@preeternal%2freact-native-file-hash@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11231366},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"@react-native/jest-preset","setupFilesAfterEnv":["<rootDir>/src/jest.setup.ts"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"3bac2c87b1559576fea8852e6c5455f849d5daec","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1005b96-1385-46ed-8554-242ebc9a30c7"}},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.12.1","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"24.15.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.8.21","eslint":"^9.39.4","del-cli":"^7.0.0","lefthook":"^2.1.4","prettier":"^3.8.1","@eslint/js":"^10.0.1","commitlint":"^20.5.0","release-it":"^19.2.4","typescript":"^6.0.2","@types/react":"^19.2.0","react-native":"0.85.0","@jest/globals":"^30.0.0","@eslint/compat":"^2.0.3","@eslint/eslintrc":"^3.3.5","eslint-plugin-ft-flow":"^3.0.11","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","react-native-builder-bob":"^0.41.0","@react-native/jest-preset":"0.85.0","@react-native/babel-preset":"0.85.0","@react-native/eslint-config":"0.85.0","@commitlint/config-conventional":"^20.5.0","@release-it/conventional-changelog":"^10.0.6"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_2.0.3_1778441460425_0.8690245623622408","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.62.0","languages":"kotlin-objc"}},"2.0.5":{"name":"@preeternal/react-native-file-hash","version":"2.0.5","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@2.0.5","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"89a4d9c28d4c88ef7a225fdadc6e066af9e9c2f8","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-2.0.5.tgz","fileCount":292,"integrity":"sha512-zvn0JkV6xjE2QAC9c6EqH61MwxXzRc5Ve/G9tYepEZDP13nC3/Y2TFzE1fl0yakcpvHhUfXKsjYr+ih965ZSaw==","signatures":[{"sig":"MEQCIDiq7TnoPbJClKDa27t3r8JwzsaC9VBs8HrxBzNDrqDOAiBj0sWEyiqEAma5NE2Jo4WHK9voTWQQxWe5kM7l53mH0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@preeternal%2freact-native-file-hash@2.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21644343},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"@react-native/jest-preset","setupFilesAfterEnv":["<rootDir>/src/jest.setup.ts"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"ca7df03344cb9b4c5807acdd0888f29f49fa70c2","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9f20f92-e486-4d46-b231-251fa85dcdab"}},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"24.16.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.8.21","eslint":"^9.39.4","del-cli":"^7.0.0","lefthook":"^2.1.4","prettier":"^3.8.1","@eslint/js":"^10.0.1","commitlint":"^20.5.0","release-it":"^19.2.4","typescript":"^6.0.2","@types/react":"^19.2.0","react-native":"0.85.0","@jest/globals":"^30.0.0","@eslint/compat":"^2.0.3","@eslint/eslintrc":"^3.3.5","eslint-plugin-ft-flow":"^3.0.11","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","react-native-builder-bob":"^0.41.0","@react-native/jest-preset":"0.85.0","@react-native/babel-preset":"0.85.0","@react-native/eslint-config":"0.85.0","@commitlint/config-conventional":"^20.5.0","@release-it/conventional-changelog":"^10.0.6"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_2.0.5_1781458707833_0.03959547264561292","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.62.0","languages":"kotlin-objc"}},"2.0.6":{"name":"@preeternal/react-native-file-hash","version":"2.0.6","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@2.0.6","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"245abcbbfa8d791bc9abbafc1e98a6f390a88591","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-2.0.6.tgz","fileCount":292,"integrity":"sha512-HFR9peNIPwZy6xJL12pcUvntMUwJWBeWHlZX286sOITdf/skzt3pzDxFpAKznQdqHVP+dV7X2wLj69I4YoMPoQ==","signatures":[{"sig":"MEUCIDIUljs3kdK0JXkQ7teP64UCcNNM9R7rn52hJHXLYNEGAiEAlZB83UaxqK96dNAyfXWD4b/znNOVmQS8CHKZfx0hz0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@preeternal%2freact-native-file-hash@2.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21670313},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"@react-native/jest-preset","setupFilesAfterEnv":["<rootDir>/src/jest.setup.ts"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"77609b0c6fb5b23ac653a4740b01de8b633a628c","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9f20f92-e486-4d46-b231-251fa85dcdab"}},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.13.0","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"24.16.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.8.21","eslint":"^9.39.4","del-cli":"^7.0.0","lefthook":"^2.1.4","prettier":"^3.8.1","@eslint/js":"^10.0.1","commitlint":"^20.5.0","release-it":"^19.2.4","typescript":"^6.0.2","@types/react":"^19.2.0","react-native":"0.85.0","@jest/globals":"^30.0.0","@eslint/compat":"^2.0.3","@eslint/eslintrc":"^3.3.5","eslint-plugin-ft-flow":"^3.0.11","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","react-native-builder-bob":"^0.41.0","@react-native/jest-preset":"0.85.0","@react-native/babel-preset":"0.85.0","@react-native/eslint-config":"0.85.0","@commitlint/config-conventional":"^20.5.0","@release-it/conventional-changelog":"^10.0.6"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_2.0.6_1782321433140_0.7945375463302016","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.62.0","languages":"kotlin-objc"}},"2.0.7":{"name":"@preeternal/react-native-file-hash","version":"2.0.7","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@2.0.7","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"c10336f2092b3b75341b405cffc98e4ea17841d6","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-2.0.7.tgz","fileCount":106,"integrity":"sha512-Er8fWxdylHUfKx+4tfAUE7ZAEbgcv5XSu2qassF3SbxVjn5jtEkJNeMrdX1/YhYxVIxM+NW8Sv/bVnH22qrMng==","signatures":[{"sig":"MEUCIQCiPNWUqxkGrbDA/Xi3WCbQtbX2Ti30I65cDsLCHZrC8AIgNdV0Y0JOurcqb3j7BTCm9Tf5ieUmSVCOJW3GpDqfr2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@preeternal%2freact-native-file-hash@2.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27229929},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"@react-native/jest-preset","setupFilesAfterEnv":["<rootDir>/src/jest.setup.ts"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"3bbd0de0064f4939375c7cc18990329c195f4e9f","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9f20f92-e486-4d46-b231-251fa85dcdab"}},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example","examples/macos","examples/windows"],"_npmVersion":"11.16.0","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"24.18.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"windows":{"namespace":"Preeternal::FileHash","outputDirectory":"windows/FileHash/codegen"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.8.21","eslint":"^9.39.4","del-cli":"^7.0.0","lefthook":"^2.1.4","prettier":"^3.8.1","@eslint/js":"^10.0.1","commitlint":"^20.5.0","release-it":"^19.2.4","typescript":"^6.0.2","@types/react":"^19.2.0","react-native":"0.85.0","@jest/globals":"^30.0.0","@eslint/compat":"^2.0.3","@eslint/eslintrc":"^3.3.5","eslint-plugin-ft-flow":"^3.0.11","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","react-native-builder-bob":"^0.41.0","@react-native/jest-preset":"0.85.0","@react-native/babel-preset":"0.85.0","@react-native/eslint-config":"0.85.0","@commitlint/config-conventional":"^20.5.0","@release-it/conventional-changelog":"^10.0.6"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_2.0.7_1783366083923_0.02523614111289607","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.62.0","languages":"kotlin-objc"}},"2.0.8":{"name":"@preeternal/react-native-file-hash","version":"2.0.8","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@2.0.8","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"3cb7ba6fa5a58ee90609f70297c26fbcfb481205","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-2.0.8.tgz","fileCount":106,"integrity":"sha512-IOt9pq6ZqmruFAVfDlqbsEOU/2sF4A2veGMmgtva2g7Sdf/38iJxd82/i4xI82pfU7o6T/SBlKZG6RVdcUJ1CQ==","signatures":[{"sig":"MEUCIGglnXFFANmsgs7cbypvmTvnGCwb2aPe+cgSFvdjUzLlAiEAnMnYDPySRV8+REq7DA4htfJWtTMm7Sbt2ZkoJYr1CGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@preeternal%2freact-native-file-hash@2.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27346175},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"@react-native/jest-preset","setupFilesAfterEnv":["<rootDir>/src/jest.setup.ts"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"70b7d9fecb8b5d0b9852bd4ef41b16102329b58c","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9f20f92-e486-4d46-b231-251fa85dcdab"}},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example","examples/macos","examples/windows"],"_npmVersion":"11.16.0","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"24.18.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"windows":{"namespace":"Preeternal::FileHash","outputDirectory":"windows/FileHash/codegen"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.12.0","devDependencies":{"jest":"^30.3.0","react":"19.2.3","turbo":"^2.8.21","eslint":"^9.39.4","del-cli":"^7.0.0","lefthook":"^2.1.4","prettier":"^3.8.1","@eslint/js":"^10.0.1","commitlint":"^20.5.0","release-it":"^19.2.4","typescript":"^6.0.2","@types/react":"^19.2.0","react-native":"0.85.0","@jest/globals":"^30.0.0","@eslint/compat":"^2.0.3","@eslint/eslintrc":"^3.3.5","eslint-plugin-ft-flow":"^3.0.11","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","react-native-builder-bob":"^0.41.0","@react-native/jest-preset":"0.85.0","@react-native/babel-preset":"0.85.0","@react-native/eslint-config":"0.85.0","@commitlint/config-conventional":"^20.5.0","@release-it/conventional-changelog":"^10.0.6"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_2.0.8_1783801384898_0.05273415715817342","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.62.0","languages":"kotlin-objc"}},"3.0.0":{"name":"@preeternal/react-native-file-hash","version":"3.0.0","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","_id":"@preeternal/react-native-file-hash@3.0.0","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"5300a4794e1a8f26d3ecb0ed92ce84acce268299","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-3.0.0.tgz","fileCount":114,"integrity":"sha512-CYjxurLsD4RM3WvfEDqBmBqtoKuejw/SSkpQdFrYvtQrsFecT0XuBDOLrY5C/7HYQA2Mb3cPcLa3QeTUl2k13Q==","signatures":[{"sig":"MEYCIQCtz4bgivEZD0Mh9iNOaKym7uDVFJur19VRteMx4RjfQQIhAPtWFvuqz/YCnzaJrsuLa8CYedCqBWqIlG53MLjEXHwi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCARYfvqhn8XfVmNIn9CZMsLSiakoSpQ0VloLTLi+OvlQIhAPCdNNpNhVsezDzcVWfJ3JTlQ7NAUlguLe+Onp3bSlAZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@preeternal%2freact-native-file-hash@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27354760},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"@react-native/jest-preset","setupFilesAfterEnv":["<rootDir>/src/jest.setup.ts"],"testEnvironmentOptions":{"customExportConditions":["require","react-native","preeternal-react-native-file-hash-source"]},"testPathIgnorePatterns":["<rootDir>/example/","<rootDir>/examples/"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js","preeternal-react-native-file-hash-source":"./src/index.tsx"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"13c78a168dd5a2d9a78f021e1bdfa1bf3faa003d","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build examples/ExampleSpm/android/build examples/ExampleSpm/android/app/build examples/ExampleSpm/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc -p tsconfig.build.json && yarn workspace ExampleSpm typecheck","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","example:spm":"yarn workspace ExampleSpm","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9f20f92-e486-4d46-b231-251fa85dcdab"}},"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example","examples/macos","examples/windows","examples/ExampleSpm"],"_npmVersion":"11.19.0","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"_nodeVersion":"24.20.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"windows":{"namespace":"Preeternal::FileHash","outputDirectory":"windows/FileHash/codegen"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.18.0","devDependencies":{"jest":"^29.7.0","react":"19.2.3","turbo":"^2.9.16","eslint":"^9.39.4","del-cli":"^7.0.0","lefthook":"^2.1.9","prettier":"^3.8.3","@eslint/js":"^10.0.1","commitlint":"^21.0.2","release-it":"^20.2.0","typescript":"^6.0.3","@types/react":"^19.2.0","react-native":"0.85.0","@jest/globals":"^29.7.0","@eslint/compat":"^2.1.0","@eslint/eslintrc":"^3.3.5","eslint-plugin-ft-flow":"^3.0.11","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","react-native-builder-bob":"^0.43.0","@react-native/jest-preset":"0.85.0","@react-native/babel-preset":"0.85.0","@react-native/eslint-config":"0.85.0","@commitlint/config-conventional":"^21.0.2","@release-it/conventional-changelog":"^11.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-file-hash_3.0.0_1788622912147_0.9205849902305134","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.63.0","languages":"kotlin-objc"}},"3.0.1":{"_id":"@preeternal/react-native-file-hash@3.0.1","bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"dist":{"shasum":"e8293e7b543808d8367e2570fe469d0720151d5b","tarball":"https://registry.npmjs.org/@preeternal/react-native-file-hash/-/react-native-file-hash-3.0.1.tgz","fileCount":114,"integrity":"sha512-+X8Tj33zLjoVTz4ilrbcHGK0AyuLZEs9Y9vveR2EvO67rqPNFIcjzFyagORIUAdqNSGh+t0PPawi5Ujoekk0ZA==","signatures":[{"sig":"MEUCIH7MUPQFUihwPsA8Iysf1u0TyRPqQ1L8KRuzR2R74A40AiEAxwXFYAcFI/QX4V8rGTK7Qk3ZeKQSC0TrsDh2dRatvO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCMHrjRKsGIO/kUz2dG58/tjVdqSl+Egos6Tis1H/3FTAIhAJiNXyQ1je8VtrkC+Vqi3KjH+xkCHdEZw2yu1nUlAvxp"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@preeternal%2freact-native-file-hash@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27355001},"expo":{"plugins":["./app.plugin.js"]},"jest":{"preset":"@react-native/jest-preset","setupFilesAfterEnv":["<rootDir>/src/jest.setup.ts"],"testEnvironmentOptions":{"customExportConditions":["require","react-native","preeternal-react-native-file-hash-source"]},"testPathIgnorePatterns":["<rootDir>/example/","<rootDir>/examples/"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","name":"@preeternal/react-native-file-hash","types":"./lib/typescript/src/index.d.ts","author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"exports":{".":{"types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js","preeternal-react-native-file-hash-source":"./src/index.tsx"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"c0f799a456b80850d9d355842fb13003ac5c5f57","license":"MIT","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build examples/ExampleSpm/android/build examples/ExampleSpm/android/app/build examples/ExampleSpm/ios/build lib","example":"yarn workspace @preeternal/react-native-file-hash-example","prepack":"git submodule update --init --recursive","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc -p tsconfig.build.json && yarn workspace ExampleSpm typecheck","check:16kb":"cd example/android && ./gradlew :app:assembleRelease && cd ../.. && bash scripts/check-16kb.sh","example:spm":"yarn workspace ExampleSpm","compare:size:ios":"bash scripts/compare-size-ios.sh","compare:size:android":"bash scripts/compare-size-android.sh","test:e2e:maestro:zig":"bash scripts/maestro-runtime-smoke.sh zig","test:e2e:maestro:native":"bash scripts/maestro-runtime-smoke.sh native","check:packaged-artifacts":"bash scripts/check-packed-prebuilts.sh"},"version":"3.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a9f20f92-e486-4d46-b231-251fa85dcdab"}},"homepage":"https://github.com/Preeternal/react-native-file-hash#readme","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"prettier":{"useTabs":false,"tabWidth":4,"overrides":[{"files":"*.md","options":{"tabWidth":2}}],"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"workspaces":["example","examples/macos","examples/windows","examples/ExampleSpm"],"_npmVersion":"11.19.0","description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","directories":{},"maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"_nodeVersion":"24.20.0","codegenConfig":{"name":"FileHashSpec","type":"modules","android":{"javaPackageName":"com.preeternal.filehash"},"windows":{"namespace":"Preeternal::FileHash","outputDirectory":"windows/FileHash/codegen"},"jsSrcsDir":"src"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.18.0","devDependencies":{"jest":"^29.7.0","react":"19.2.3","turbo":"^2.9.16","eslint":"^9.39.4","del-cli":"^7.0.0","lefthook":"^2.1.9","prettier":"^3.8.3","@eslint/js":"^10.0.1","commitlint":"^21.0.2","release-it":"^20.2.0","typescript":"^6.0.3","@types/react":"^19.2.0","react-native":"0.85.0","@jest/globals":"^29.7.0","@eslint/compat":"^2.1.0","@eslint/eslintrc":"^3.3.5","eslint-plugin-ft-flow":"^3.0.11","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","react-native-builder-bob":"^0.43.0","@react-native/jest-preset":"0.85.0","@react-native/babel-preset":"0.85.0","@react-native/eslint-config":"0.85.0","@commitlint/config-conventional":"^21.0.2","@release-it/conventional-changelog":"^11.0.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-file-hash_3.0.1_1790452241277_0.7006897852432552"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"turbo-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.63.0","languages":"kotlin-objc"}}},"time":{"created":"2025-07-07T09:34:57.973Z","modified":"2026-09-26T19:50:42.004Z","1.0.1":"2025-07-07T08:34:52.775Z","1.0.3":"2025-07-07T09:10:19.109Z","1.0.2":"2025-07-07T09:34:58.305Z","1.0.4":"2025-07-20T13:45:44.292Z","1.0.5":"2025-09-14T13:51:08.268Z","1.1.0":"2025-12-13T18:48:18.908Z","1.1.1":"2025-12-14T18:38:46.076Z","1.1.2":"2026-01-09T18:32:03.775Z","1.1.3":"2026-01-25T11:20:32.891Z","2.0.0":"2026-03-15T11:51:48.407Z","2.0.1":"2026-03-15T14:56:11.507Z","2.0.2":"2026-03-19T19:55:00.799Z","2.0.3":"2026-05-10T19:31:00.657Z","2.0.4":"2026-06-14T16:35:07.332Z","2.0.5":"2026-06-14T17:38:28.067Z","2.0.6":"2026-06-24T17:17:13.420Z","2.0.7":"2026-07-06T19:28:04.174Z","2.0.8":"2026-07-11T20:23:05.193Z","3.0.0":"2026-09-05T15:41:52.347Z","3.0.1":"2026-09-26T19:50:41.533Z"},"bugs":{"url":"https://github.com/Preeternal/react-native-file-hash/issues"},"author":{"url":"https://github.com/Preeternal","name":"Preeternal","email":"preeternal@gmail.com"},"license":"MIT","homepage":"https://github.com/Preeternal/react-native-file-hash#readme","keywords":["react-native","ios","android","file","hash","md5","sha256","native","turbo-module","react-native-module","native-module","preeternal","xxh3","blake3","hmac","checksum","streaming"],"repository":{"url":"git+https://github.com/Preeternal/react-native-file-hash.git","type":"git"},"description":"Native streaming hash for React Native: MD5, SHA-1/224/256/384/512, XXH3, BLAKE3 (hash/HMAC/keyed). TurboModules, no UI freezes.","maintainers":[{"name":"preeternal","email":"preeternal@gmail.com"}],"readme":"# @preeternal/react-native-file-hash\n\nNative streaming hashes for React Native files, strings, HMAC, XXH3, and\nBLAKE3.\n\n[![npm version](https://img.shields.io/npm/v/@preeternal/react-native-file-hash.svg)](https://www.npmjs.com/package/@preeternal/react-native-file-hash)\n[![npm downloads](https://img.shields.io/npm/dm/@preeternal/react-native-file-hash.svg)](https://www.npmjs.com/package/@preeternal/react-native-file-hash)\n\n> Starting with `v3.0.0`, this package supports only React Native's New\n> Architecture. Projects that still require the legacy bridge should stay on\n> `v2.x`.\n\nUse it when your app needs to verify large downloads, fingerprint media,\ndeduplicate local files or cached uploads, generate fast cache keys, compare\nlocal content, or authenticate data with HMAC or keyed BLAKE3.\n\nHash multi-GB files without loading them into JavaScript. Native code streams\nfiles in chunks, keeps the work off the JS thread, and returns a lowercase hex\ndigest. Large inputs do not cross the JS bridge or sit in JS memory, which helps\navoid memory spikes and OOM crashes.\n\n## Highlights\n\n- Streams file data from disk instead of loading the whole file into JS memory.\n- Uses native background work on supported platforms, keeping the UI responsive.\n- Safe for concurrent calls: each operation owns its native hash state.\n- Defaults to `SHA-256` when you do not pass an algorithm.\n- Supports `AbortController` cancellation for long-running file hashes.\n- Supports local files, Android `content://` URIs, and iOS provider-backed file\n  URLs when the app has access.\n- Returns lowercase hex strings for every algorithm.\n- Includes native-side SHA variants, HMAC algorithms, XXH3, BLAKE3, and keyed\n  BLAKE3.\n\n## Platform Status\n\n| Platform                         | Status       | Engine                              | Example / notes                          |\n| -------------------------------- | ------------ | ----------------------------------- | ---------------------------------------- |\n| iOS                              | Stable       | `native` by default, optional `zig` | [`example`](./example)                   |\n| Android                          | Stable       | `native` by default, optional `zig` | [`example`](./example)                   |\n| macOS (`react-native-macos`)     | Experimental | `zig` only                          | [`examples/macos`](./examples/macos)     |\n| Windows (`react-native-windows`) | Experimental | `zig` only                          | [`examples/windows`](./examples/windows) |\n\nDesktop support does not add `react-native-macos` or `react-native-windows` as\nroot peer dependencies. Desktop examples keep their own React Native versions\nbecause out-of-tree desktop platforms may trail the main React Native release.\nSee the macOS and Windows example READMEs for platform-specific setup notes.\n\n## Installation\n\n```bash\nnpm install @preeternal/react-native-file-hash\n```\n\nor:\n\n```bash\nyarn add @preeternal/react-native-file-hash\n```\n\nor:\n\n```bash\nbun add @preeternal/react-native-file-hash\n```\n\nReact Native autolinks the native module.\n\n### iOS installation\n\n#### CocoaPods (default)\n\nCocoaPods remains the default. Existing apps and React Native versions before\n0.87 install the library normally:\n\n```bash\ncd ios && bundle exec pod install && cd ..\n```\n\n#### Swift Package Manager (React Native 0.87+)\n\nReact Native 0.87 added experimental, opt-in SwiftPM integration. To migrate an\napp once:\n\n```bash\ncd ios\nnpx react-native spm --deintegrate\n```\n\nAfter a fresh clone or in CI, generate the SwiftPM workspace before building:\n\n```bash\ncd ios\nnpx react-native spm\n```\n\nEvery native dependency must have a compatible `Package.swift`. If a dependency\ndoes not provide one, generate it with `npx react-native spm scaffold` and keep\nthe manifest in a package-manager patch.\n\n### Expo\n\n`Expo Go` is not supported because this package contains native code. Use a\nDevelopment Build, EAS Build, or `expo prebuild`.\n\nFor the default native engine, no plugin options are required:\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\"@preeternal/react-native-file-hash\"]\n  }\n}\n```\n\n## Quick Start\n\n```ts\nimport { fileHash, stringHash } from '@preeternal/react-native-file-hash';\n\nconst digest = await fileHash('file:///path/to/video.mp4');\n// SHA-256 lowercase hex by default\n\nconst xxh3 = await fileHash('file:///path/to/video.mp4', {\n  algorithm: 'XXH3-64',\n});\n\nconst textDigest = await stringHash('hello world');\n```\n\nFor large payloads, prefer `fileHash`. `stringHash` is intended for small\nstrings or small base64 payloads already in JS memory.\n\n## Cancel Long Hashes\n\nCancellation follows the same shape as `fetch` and many HTTP clients:\n\n```ts\nimport { fileHash } from '@preeternal/react-native-file-hash';\n\nconst controller = new AbortController();\n\nconst promise = fileHash(fileUri, {\n  algorithm: 'SHA-256',\n  signal: controller.signal,\n});\n\ncontroller.abort();\n\ntry {\n  await promise;\n} catch (error) {\n  if (\n    error instanceof Error &&\n    error.name === 'AbortError' &&\n    (error as { code?: string }).code === 'E_CANCELLED'\n  ) {\n    // Hash was cancelled.\n  }\n}\n```\n\nCancellation is cooperative. Large file hashes stop at chunk boundaries. Small\n`stringHash` calls may finish before the abort is observed.\n\n## HMAC And Keyed BLAKE3\n\nHMAC is selected by the algorithm name:\n\n```ts\nconst hmac = await fileHash(fileUri, {\n  algorithm: 'HMAC-SHA-256',\n  hashOptions: {\n    key: 'super-secret',\n    keyEncoding: 'utf8',\n  },\n});\n```\n\nKeyed BLAKE3 uses the regular `BLAKE3` algorithm with a key. The decoded key\nmust be 32 bytes:\n\n```ts\nconst keyed = await fileHash(fileUri, {\n  algorithm: 'BLAKE3',\n  hashOptions: {\n    key: '3031323334353637383961626364656630313233343536373839616263646566',\n    keyEncoding: 'hex',\n  },\n});\n```\n\n`keyEncoding` can be `'utf8'`, `'hex'`, or `'base64'`. The default is `'utf8'`.\nFor `BLAKE3`, `hashOptions.key` is optional: omit it for regular BLAKE3, pass\nit only when you want keyed BLAKE3.\n\nHMAC algorithms require `hashOptions.key`. If you intentionally need HMAC with\nan empty key, pass `key: ''` explicitly; omitting `key` is rejected.\n\n## Seeded XXH3\n\n`XXH3-64` and `XXH3-128` support an optional unsigned 64-bit seed. Omit it for\nregular unseeded XXH3. A seed is not a secret and does not make XXH3\ncryptographic. It selects a reproducible XXH3 namespace: the same bytes,\nalgorithm, and seed produce the same digest on your backend, CLI tools, and\nmobile app.\n\nWith the optional `zig` engine, seeded XXH3 currently means `XXH3-64`; `XXH3-128`\nis available only in the default `native` engine.\n\nThe most direct use case is server-side verification. For example, your backend\ncan publish a download manifest with both the expected XXH3 digest and the seed\nthat was used to compute it:\n\n```ts\nimport { fileHash } from '@preeternal/react-native-file-hash';\n\nconst manifest = {\n  url: 'https://example.com/assets/video.mp4',\n  xxh3Seed: '12345678901234567890',\n  xxh3: '4b5e0a417dfa7ed2fb965bc17c16bd34',\n};\n\nconst actual = await fileHash(localFileUri, {\n  algorithm: 'XXH3-128',\n  hashOptions: {\n    seed: manifest.xxh3Seed,\n  },\n});\n\nif (actual !== manifest.xxh3) {\n  throw new Error('Downloaded file failed checksum verification');\n}\n```\n\nPass large `u64` seeds from a backend as strings, either decimal or `0x` hex.\nJavaScript `number` is safe only up to `Number.MAX_SAFE_INTEGER`; values like\n`12345678901234567890` must be passed as a string or `bigint` so they are not\nrounded before hashing.\n\nFor app-owned namespaces, you can derive a stable seed from a readable label:\n\n```ts\nimport {\n  fileHash,\n  xxh3SeedFromLabel,\n} from '@preeternal/react-native-file-hash';\n\nconst mediaCacheSeed = xxh3SeedFromLabel('media-cache-v1');\n\nconst cacheKey = await fileHash(fileUri, {\n  algorithm: 'XXH3-128',\n  hashOptions: {\n    seed: mediaCacheSeed,\n  },\n});\n```\n\n`hashOptions.seed` accepts a `bigint`, a non-negative safe integer, a decimal\nstring, or a `0x` hex string. Values are normalized before native hashing, so\n`12345`, `12345n`, and `'0x3039'` all use the same seed.\n\n`xxh3SeedFromLabel(label)` derives a deterministic seed from a UTF-8 label\nusing FNV-1a 64-bit. The helper returns a canonical `0x` hex seed, for example\n`0x091677a156a7756e`. Use it when the app controls the namespace, such as\n`media-cache-v1` or `upload-dedupe-v2`. If a backend or CLI must reproduce the\nsame hashes, share either the derived seed value or the exact label derivation\nrule. Use HMAC or keyed BLAKE3 when authenticity matters.\n\n## API\n\n### `fileHash(filePath, request?)`\n\nHashes a file by streaming it from native code.\n\n```ts\nconst mac = await fileHash(fileUri, {\n  algorithm: 'HMAC-SHA-256',\n  hashOptions: {\n    key: 'upload-signing-secret',\n    keyEncoding: 'utf8',\n  },\n  signal: abortController.signal,\n});\n```\n\n`filePath` can be:\n\n- a local path or `file://` URI;\n- an Android `content://` URI, for example from the system document picker;\n- an iOS provider-backed file URL, for example from Files or iCloud, when the\n  app has access;\n- a Windows local path or `file://` URI.\n\nIf `request.algorithm` is omitted, `SHA-256` is used. Use `hashOptions.key`\nonly with HMAC algorithms or keyed `BLAKE3`; regular hashes reject keys.\n\n### `stringHash(text, request?)`\n\nHashes a small JS string or base64 payload.\n\n```ts\nconst digest = await stringHash('hello world', {\n  algorithm: 'SHA-256',\n  encoding: 'utf8',\n});\n\nconst fromBase64 = await stringHash(base64Payload, {\n  algorithm: 'BLAKE3',\n  encoding: 'base64',\n});\n```\n\nIf `request.algorithm` is omitted, `SHA-256` is used. If `request.encoding` is\nomitted, `utf8` is used.\n\n### Request Types\n\n```ts\ntype HashRequest = {\n  algorithm?: THashAlgorithm;\n  hashOptions?: HashOptions;\n  signal?: HashAbortSignal;\n  mmap?: boolean;\n};\n\ntype StringHashRequest = {\n  algorithm?: THashAlgorithm;\n  hashOptions?: HashOptions;\n  signal?: HashAbortSignal;\n  encoding?: 'utf8' | 'base64';\n};\n\ntype HashOptions = {\n  key?: string;\n  keyEncoding?: 'utf8' | 'hex' | 'base64';\n  seed?: bigint | number | string;\n};\n```\n\nThe exported `HashAbortSignal` type is intentionally compatible with\n`AbortController.signal`.\n\n## Algorithms\n\n| Algorithm                                        | Use case                                   | Notes                                              |\n| ------------------------------------------------ | ------------------------------------------ | -------------------------------------------------- |\n| `SHA-256`                                        | Default general-purpose cryptographic hash | Good default for integrity checks                  |\n| `SHA-384`, `SHA-512`                             | Stronger SHA-2 variants                    | Larger output, usually slower                      |\n| `SHA-224`, `SHA-512/224`, `SHA-512/256`          | SHA-2 compatibility variants               | Useful for protocols requiring these exact digests |\n| `MD5`, `SHA-1`                                   | Legacy compatibility                       | Do not use for new security-sensitive designs      |\n| `HMAC-SHA-256`                                   | Shared-secret authentication               | Good default HMAC choice                           |\n| `HMAC-SHA-224/384/512`, `HMAC-MD5`, `HMAC-SHA-1` | Protocol compatibility                     | Prefer SHA-256+ for new designs                    |\n| `XXH3-64`, `XXH3-128`                            | Fast non-cryptographic checksums           | Supports optional seed; not authentication         |\n| `BLAKE3`                                         | Modern high-performance hash               | Also supports keyed mode with a 32-byte key        |\n\n### Output Lengths\n\n| Algorithm                                          | Output length           |\n| -------------------------------------------------- | ----------------------- |\n| `MD5`, `HMAC-MD5`                                  | 16 bytes, 32 hex chars  |\n| `SHA-1`, `HMAC-SHA-1`                              | 20 bytes, 40 hex chars  |\n| `SHA-224`, `HMAC-SHA-224`                          | 28 bytes, 56 hex chars  |\n| `SHA-256`, `HMAC-SHA-256`, `SHA-512/256`, `BLAKE3` | 32 bytes, 64 hex chars  |\n| `SHA-384`, `HMAC-SHA-384`                          | 48 bytes, 96 hex chars  |\n| `SHA-512`, `HMAC-SHA-512`                          | 64 bytes, 128 hex chars |\n| `SHA-512/224`                                      | 28 bytes, 56 hex chars  |\n| `XXH3-64`                                          | 8 bytes, 16 hex chars   |\n| `XXH3-128`                                         | 16 bytes, 32 hex chars  |\n\n## Error Handling\n\nCommon error codes:\n\n| Code                                   | Meaning                                           |\n| -------------------------------------- | ------------------------------------------------- |\n| `E_CANCELLED`                          | Operation was cancelled through `AbortController` |\n| `E_INVALID_ARGUMENT`                   | Invalid algorithm/options combination             |\n| `E_INVALID_KEY`                        | Key cannot be decoded or has the wrong length     |\n| `E_INVALID_INPUT`                      | Invalid string input, usually malformed base64    |\n| `E_FILE_NOT_FOUND`                     | File cannot be opened                             |\n| `E_UNSUPPORTED_ALGORITHM`              | Algorithm is not available in the selected engine |\n| `E_HASH_FAILED` / `E_FILE_HASH_FAILED` | Native hashing failed unexpectedly                |\n\nKey rules:\n\n- HMAC algorithms require `hashOptions.key`; pass `key: ''` explicitly for an\n  empty HMAC key.\n- `BLAKE3` uses keyed mode only when `hashOptions.key` is provided.\n- `BLAKE3` keyed mode requires a 32-byte key after decoding.\n- Other algorithms reject `hashOptions.key`.\n- `hashOptions.seed` is only valid for `XXH3-64` and `XXH3-128`.\n- `HashOptions.mode` was removed and is rejected with `E_INVALID_ARGUMENT`.\n\n## Runtime Info\n\n```ts\nimport {\n  getRuntimeDiagnostics,\n  getRuntimeInfo,\n} from '@preeternal/react-native-file-hash';\n\nconst info = await getRuntimeInfo();\n// { engine: 'native' } or { engine: 'zig' }\n\nconst diagnostics = await getRuntimeDiagnostics();\n```\n\n`getRuntimeDiagnostics()` includes Zig ABI/core metadata when the Zig engine is\nselected. For the default native engine, consumers usually do not need it.\n\n## Optional: Engine Selection\n\nThe library has two hashing engines:\n\n- `native`: the default engine, recommended for most apps.\n- `zig`: an optional engine built on the bundled\n  [`zig-files-hash`](https://github.com/Preeternal/zig-files-hash) core.\n\nThe `native` engine uses platform APIs and native C implementations of BLAKE3\nand XXH3. Choose `zig` if you need the same hashing core across platforms or if\nit performs better for your workload. See [BENCHMARKS.md](./BENCHMARKS.md) for\ncurrent measurements.\n\n### Zig File Routing\n\nWhen possible, the Zig engine hashes files through a path or file descriptor in\none native call, reducing data transfer across the JSI/native boundary.\n\n`HashRequest.mmap` provides opt-in mmap I/O for stable regular local files when\nthe Zig engine uses the path fast path. It defaults to `false`. Set it only for\na stable, non-empty regular local file after benchmarking your workload. It is\nan I/O optimization: the digest does not change.\n\n```ts\nconst digest = await fileHash('/path/to/stable-large-file.bin', {\n  algorithm: 'SHA-256',\n  mmap: true,\n});\n```\n\nThe option applies only to regular local paths / `file://` URLs. It is ignored\nfor Android `content://` descriptors, Apple coordinated file/provider descriptor\nor stream fallback routes, and Windows. Windows currently accepts the option for\nAPI compatibility but does not support mmap in this package.\n\nDo not enable `mmap` while another process can truncate or modify the file. On\niOS, macOS, and Android, a mapped file may fault if the underlying file changes;\nthat can terminate the process with `SIGBUS`.\n\nPackage users do not need a local Zig toolchain; release artifacts include Zig\nprebuilts.\n\nAndroid, CocoaPods, and SwiftPM select the engine at build time and do not link\nthe other engine.\n\n### Android\n\nSet this in your app's `android/gradle.properties`:\n\n```properties\nreact_native_file_hash_engine=zig\n```\n\nIf the property is omitted, `native` is used.\n\nAndroid Zig currently routes `SHA-224`, `SHA-256`, `HMAC-SHA-224`, and\n`HMAC-SHA-256` through the native pipeline in the shipped generic prebuilt\nsetup to avoid ARM SHA-2 latency cliffs.\n\n### iOS with CocoaPods\n\nSet this in your app's `ios/Podfile` before `pod install`:\n\n```ruby\nENV['ZFH_ENGINE'] ||= 'zig'\n```\n\nIf `ZFH_ENGINE` is omitted, `native` is used.\n\n### iOS with SwiftPM\n\nSwiftPM compiles and links exactly one engine. React Native's SPM autolinking\nplugin reads `ZFHEngine` from the app's `Info.plist` when it generates the\npackage; if the key is absent, `native` is used.\n\nTo select Zig in a bare React Native app, add:\n\n```xml\n<key>ZFHEngine</key>\n<string>zig</string>\n```\n\nUse `<string>native</string>` or remove the key to select the default engine.\nBecause this changes the SwiftPM dependency graph, run\n`npx react-native spm` before building to guarantee that the very next build uses\nthe selected engine. In an app where SwiftPM is already set up, this updates the\nexisting integration. Xcode's SPM auto-sync also watches existing `Info.plist`\nfiles, but Xcode can resolve the old package graph before the sync pre-action\nruns; in that case the automatically detected change takes effect on the\nfollowing build. The generated package contains only the selected core.\n\n### macOS\n\nReact Native macOS support is experimental and uses the Zig engine only. There\nis no macOS native-engine switch. See [`examples/macos`](./examples/macos) for\nthe isolated React Native macOS example.\n\n### Windows\n\nReact Native Windows support is experimental and uses the Zig engine only.\nThere is no Windows native-engine switch. See\n[`examples/windows`](./examples/windows) for the isolated React Native Windows\nexample and platform-specific setup notes.\n\n### Expo Engine Selection\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [[\"@preeternal/react-native-file-hash\", { \"engine\": \"zig\" }]]\n  }\n}\n```\n\nThe Expo plugin sets the Android Gradle property and CocoaPods' `ZFH_ENGINE`.\nIt also mirrors the selected engine to `ZFHEngine` in `Info.plist`, but Expo\nPrebuild currently uses CocoaPods on iOS. This key does not enable SwiftPM; it\nis kept for forward compatibility with React Native's SwiftPM selector.\n\nIf `engine` is omitted, `native` is used.\n\n### Engine Compatibility Notes\n\n- `XXH3-128` is currently available only in the `native` engine.\n\n## Performance\n\nUse physical devices and Release builds for performance claims. Debug,\nsimulator, and emulator runs are useful for smoke checks, but they do not\nrepresent production throughput.\n\nFull current measurements live in [BENCHMARKS.md](./BENCHMARKS.md).\n\nPractical guidance:\n\n- Start with the default `native` engine for most apps.\n- Consider `zig` when you care about specific algorithms or want a portable\n  hashing core; check [BENCHMARKS.md](./BENCHMARKS.md) for current device data.\n- Use `SHA-256` for general integrity checks.\n- Use `XXH3-64` or `XXH3-128` for fast non-security checksums.\n- Use `HMAC-SHA-256` for shared-secret authentication.\n- Avoid `MD5` and `SHA-1` for new security-sensitive designs.\n\n## Android 16 KB Page Size\n\nThe Android build enables 16 KB page alignment when the linker supports\n`-Wl,-z,max-page-size=16384`, matching Google Play requirements for newer\n16 KB page size devices. Tested with NDK 27.1.x.\n\nIf your NDK/toolchain does not recognize the flag, the build continues without\n16 KB alignment. Upgrade the NDK to produce 16 KB-aligned binaries.\n\n## Native Implementations\n\n- XXH3 / XXH128: [Cyan4973/xxHash](https://github.com/Cyan4973/xxHash)\n- BLAKE3: [BLAKE3-team/BLAKE3](https://github.com/BLAKE3-team/BLAKE3)\n- Optional Zig core:\n  [Preeternal/zig-files-hash](https://github.com/Preeternal/zig-files-hash)\n\nLicenses: xxHash is BSD 2-Clause; the C implementation of BLAKE3 is CC0\n(public domain). See `third_party/xxhash/LICENSE` and\n`third_party/blake3/LICENSE_CC0`, plus accompanying Apache-2.0 notices in\n`third_party/blake3`.\n\n## Contributing\n\nContributions are welcome.\n\n- [Development workflow](CONTRIBUTING.md#development-workflow)\n- [Submodules and Zig prebuilts](CONTRIBUTING.md#submodules-and-zig-prebuilts)\n- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request)\n- [Code of conduct](CODE_OF_CONDUCT.md)\n\n## License\n\nMIT. See [LICENSE](LICENSE) for details.\n\nMade with [create-react-native-library](https://github.com/callstack/react-native-builder-bob).\n","readmeFilename":"README.md"}