{"_id":"@dalbodeule/expo-app-integrity","_rev":"10-fd85a57c9a3faa839c66c3a512954623","name":"@dalbodeule/expo-app-integrity","dist-tags":{"latest":"0.4.8"},"versions":{"0.3.2":{"name":"@dalbodeule/expo-app-integrity","version":"0.3.2","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.3.2","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"70b053d8b6d0e8735eaecbb2d2acfbbdc80d91d3","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.3.2.tgz","fileCount":60,"integrity":"sha512-KWQHaiHHbhf72fUYn//499yK21SDU/gFRE/LD3ffWh3IQoM//msU4fjGeAbOonGQNMD0F+b94YPxxc1sVlDTqQ==","signatures":[{"sig":"MEUCIHe630P3Tc0L5uGZTE6a+mkN/RiskniNKqS0BmWabXVMAiEAkmuQNURzV3136Cr5GolOBS0EY9lfPkB6TrvYVwjIZNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149805},"main":"build/index.js","types":"build/index.d.ts","gitHead":"66b89b102b741a3c3960a09e61caa416faab3e48","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":"^19.0.0","expo-modules-core":"^1.1.0","@types/react-native":"^0.70.6","expo-module-scripts":"^3.0.4"},"peerDependencies":{"expo":"*","react":"*","expo-device":"^7.1.0","react-native":"*","expo-secure-store":"^14.2.3","expo-build-properties":"~0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.3.2_1746688186687_0.34708908424527407","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.0","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.0","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"0d2783f8dce15dbfdf15dd2b69417645caeb0ecc","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.0.tgz","fileCount":60,"integrity":"sha512-HtL20bNkVcqYg814Vhowof0RhqvgX9Cl9qrQLRAaeFNhQNghu7Hmh75FQb9nkV+Y12X9elwNIm9Nz5udG0MLsA==","signatures":[{"sig":"MEYCIQCtggthYezl731e6KtzSUESDmQIudiX5ihp9MI4fNzpQwIhAMkb5URc3S027M01PtnX7DIc1ivvYuWtIixUXaF5UALF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149812},"main":"build/index.js","types":"build/index.d.ts","gitHead":"45b90905bfb232f20c0cb7f6ac6c3c990ae41ed4","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.0_1746708836514_0.18438132539778485","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.1","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.1","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"d15f5c917d6ded483a9e56a1c05260f2b530438b","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.1.tgz","fileCount":60,"integrity":"sha512-SHQtr2+WwwzV93no6TaQmLNUSvDenhxyqCyYr1LmXMcY/5Q/4tI4o/Ti2+5ZKU1CVcRtc2dr+e+aBFqHjufrkg==","signatures":[{"sig":"MEYCIQDvkaOskxXaED4qRujgGFgFlZ0n9LIWSyVIz8XqcQEnjQIhAJHkhOh//C7cP8WD869jr9afydwkFFbAHt48Qu68ViDv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149993},"main":"build/index.js","types":"build/index.d.ts","gitHead":"45b90905bfb232f20c0cb7f6ac6c3c990ae41ed4","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.1_1746810780190_0.9272730910919671","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.2","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.2","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"65d996af69b5c563ef4883231a3a8f9634cdb5d0","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.2.tgz","fileCount":60,"integrity":"sha512-EsLPgxnbxevCuqR5vX3DoOpN20QEO5jNIt3QbcVfK0H5STgyJJbfAHxVkC04Mjket8n05jbgcwXP+PUujA390A==","signatures":[{"sig":"MEUCIQD+MNwasoEWsdDQ0ZzH9pMRjrKd0TNbI9wpuxOD1Sr60AIgega/vhIDqq+NLxg/Jl1qwa4+Ey/PDWbwIJFEvryBFPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149993},"main":"build/index.js","types":"build/index.d.ts","gitHead":"45b90905bfb232f20c0cb7f6ac6c3c990ae41ed4","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.2_1746811973385_0.1806233881455266","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.3","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.3","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"2195334f88785ec1530a5496d6cfd70293931f03","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.3.tgz","fileCount":60,"integrity":"sha512-BQFNeajAyZQquNX/nnOyU3yjy1oYKNQh0rsJCdTsaXyTi5f3BJmbXAIbiOScOeC8i0UOh+vkZRueZD2dlaGbmg==","signatures":[{"sig":"MEYCIQDHeWuN+Z4UchhnDNeeK1Z/KsVdW5ldzLHMBXYf/qyHTAIhALPSQGHCv7K/LhOBVYv0uvlcHc0mYH71h99xWV3MuAti","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149740},"main":"build/index.js","types":"build/index.d.ts","gitHead":"45b90905bfb232f20c0cb7f6ac6c3c990ae41ed4","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.3_1746817154675_0.7898356432959315","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.4","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.4","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"f2e944178a6967225da14cee0d72544e7cca1e87","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.4.tgz","fileCount":60,"integrity":"sha512-hZRmQ5hZnItFbHUBZEX3tte+qL0cahCV33gG+lbtnR1YWGcv7s4sGPkGx6oI48IGGLb+L8OWHwQmSd6y2crGLg==","signatures":[{"sig":"MEUCIGQ4vaLVFSX3a2wDXXFPYepe/Df5F2QExZe3WoB+V46cAiEAkeb0tcGtHae+fYfTYIlQVIvQOX0XBPMmfVSL87HCtvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151483},"main":"build/index.js","types":"build/index.d.ts","gitHead":"45b90905bfb232f20c0cb7f6ac6c3c990ae41ed4","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.4_1746819140739_0.12958474217544724","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.5","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.5","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"d7d1d1c8d36bf2506713886af2f18ae483fe820c","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.5.tgz","fileCount":60,"integrity":"sha512-3fbkQ+pyp97jTl7D1wm3NwIHUHsFEVO7izKKVcF9dpIpG6enjRNvoxVOgiIKOV8kdboFqPJcj4qbYnR62pm6og==","signatures":[{"sig":"MEUCIHjA5SuZDlke2l1/ftKl5nReBk77U2RGdPn5Q54gPu8IAiEAm9wOXbgZ0vUb5+YdVi1USd/oxpyI+3lTEOKFFOUvIQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151481},"main":"build/index.js","types":"build/index.d.ts","gitHead":"45b90905bfb232f20c0cb7f6ac6c3c990ae41ed4","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.5_1746819463168_0.01554499100275164","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.6","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.6","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"13830c7beb7cc41310813a18786fffc5fa45688d","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.6.tgz","fileCount":60,"integrity":"sha512-Q4k/JEzagpC6h0gmSeyiEth2//xhL/zWNTpbiGFafSm6Y5jMSu2ywkaJY1QGUz+FEM3HHHqCuUeNwH3FUeaD3Q==","signatures":[{"sig":"MEUCIQDLAAKNpH2q7uoK6eoA7wyKovZrHOD6j6xt/9LYjD0XLwIgCeYGURkMw8dPQjRdPOi3lDBEzD/+XWAzJB/DR1xzhJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151503},"main":"build/index.js","types":"build/index.d.ts","gitHead":"141c2bbe146bcb84b7ab42dabba9e24f93822d8d","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.6_1746972075961_0.5168842543211123","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.7","keywords":["react-native","expo","integrity","Integrity"],"author":{"url":"https://github.com/jeffDevelops","name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com"},"license":"MIT","_id":"@dalbodeule/expo-app-integrity@0.4.7","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"homepage":"https://github.com/20203153/expo-app-integrity#readme","bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"dist":{"shasum":"c4f46ba705fbeb41993e07d7a2d86439b59576ba","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.7.tgz","fileCount":60,"integrity":"sha512-zkAOyUB4ZeDu7dEgk0aaGZ4ogfORG989AbOtqTUBNRLyHW3p4SN+djtqr2X+EnniQAN2NtELZnI0gJVnPx2HNA==","signatures":[{"sig":"MEYCIQCwhhH9duyrZvA8vOrMp5hcx0id6dtTHcjj3iWqeGui/gIhAPBFZ+E7SAHe7yxrIPOqP+mUv4H3SiX/3PhJV5FfiIMP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151581},"main":"build/index.js","types":"build/index.d.ts","gitHead":"141c2bbe146bcb84b7ab42dabba9e24f93822d8d","scripts":{"lint":"expo-module lint","test":"expo-module test","build":"expo-module build","clean":"expo-module clean","prepare":"expo-module prepare","open:ios":"open -a \"Xcode\" example/ios","expo-module":"expo-module","open:android":"open -a \"Android Studio\" example/android","prepublishOnly":"expo-module prepublishOnly"},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"repository":{"url":"git+https://github.com/20203153/expo-app-integrity.git","type":"git"},"_npmVersion":"10.7.0","description":"App Attest and App Integrity APIs","directories":{},"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"@types/react":">=18.0.0","expo-modules-core":">=1.1.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0"},"peerDependencies":{"expo":"*","react":"*","expo-device":">=7.1.0","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-app-integrity_0.4.7_1746980905650_0.3876229563320561","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@dalbodeule/expo-app-integrity","version":"0.4.8","description":"App Attest and App Integrity APIs","main":"build/index.js","types":"build/index.d.ts","scripts":{"build":"expo-module build","clean":"expo-module clean","lint":"expo-module lint","test":"expo-module test","prepare":"expo-module prepare","prepublishOnly":"expo-module prepublishOnly","expo-module":"expo-module","open:ios":"open -a \"Xcode\" example/ios","open:android":"open -a \"Android Studio\" example/android"},"keywords":["react-native","expo","integrity","Integrity"],"repository":{"type":"git","url":"git+https://github.com/20203153/expo-app-integrity.git"},"bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"author":{"name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com","url":"https://github.com/jeffDevelops"},"license":"MIT","homepage":"https://github.com/20203153/expo-app-integrity#readme","devDependencies":{"@types/react":">=18.0.0","@types/react-native":">=0.70.0","expo-module-scripts":">=3.0.0","expo-modules-core":">=1.1.0"},"peerDependencies":{"expo":"*","react":"*","react-native":"*","expo-secure-store":">=14.2.3","expo-build-properties":">=0.5.1","expo-device":">=7.1.0"},"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","_id":"@dalbodeule/expo-app-integrity@0.4.8","gitHead":"13160b7454726ed402bbc4c890a409db0d850fb9","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-CY7Nj8PKNzr3yMpnXuFFDpSZj2uiZWBvMriHx3Oc5GYT/kns61MCUbZSaWYwz0cF1ZqrwQIZSImUjkEUHWJroA==","shasum":"560e59116ac9bfdd58b2e3fbd8421dc8bf9dad74","tarball":"https://registry.npmjs.org/@dalbodeule/expo-app-integrity/-/expo-app-integrity-0.4.8.tgz","fileCount":60,"unpackedSize":151583,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDpCKoz7aagTKgsiH9iFg2BITKSMpHgFyG0Opx9CdwymAiEA0Orb6T56u4F2pNTCg8qx7mf/xEYSPmZ8WaJF2KK+gPE="}]},"_npmUser":{"name":"molasses_0","email":"jonwoochoi@gmail.com"},"directories":{},"maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/expo-app-integrity_0.4.8_1747028278302_0.5339169157689123"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-08T07:09:46.620Z","modified":"2025-05-12T05:37:58.726Z","0.3.2":"2025-05-08T07:09:46.916Z","0.4.0":"2025-05-08T12:53:56.701Z","0.4.1":"2025-05-09T17:13:00.415Z","0.4.2":"2025-05-09T17:32:53.648Z","0.4.3":"2025-05-09T18:59:14.839Z","0.4.4":"2025-05-09T19:32:20.955Z","0.4.5":"2025-05-09T19:37:43.459Z","0.4.6":"2025-05-11T14:01:16.169Z","0.4.7":"2025-05-11T16:28:25.846Z","0.4.8":"2025-05-12T05:37:58.492Z"},"bugs":{"url":"https://github.com/20203153/expo-app-integrity/issues"},"author":{"name":"Jeff Reynolds","email":"jefferydreynolds@gmail.com","url":"https://github.com/jeffDevelops"},"license":"MIT","homepage":"https://github.com/20203153/expo-app-integrity#readme","keywords":["react-native","expo","integrity","Integrity"],"repository":{"type":"git","url":"git+https://github.com/20203153/expo-app-integrity.git"},"description":"App Attest and App Integrity APIs","maintainers":[{"name":"molasses_0","email":"jonwoochoi@gmail.com"}],"readme":"# expo-app-integrity\n\n## Why?\nIntegrate with Apple's App Attest API and Android's Play Integrity API via a unified JavaScript API for Expo applications without Firebase.\n\nThis library offers a unified API for those that want to roll their own backend services.\n\n## Pre-requisites and Introduction\nThis library requires that you are following the [\"bare\" Expo workflow](https://docs.expo.dev/archive/managed-vs-bare).\n\nThis library requires a deployment target of iOS `14.0` or higher.\n\nFor iOS, you'll need an Apple Developer account ($100 / year) to create an `eas` development build of your app to work with. **App Attest does not work in the Simulator**. You'll need to configure your development team and enable the App Attest capability for your app in Xcode.\n\nFor Android, you'll need a Google Developer Profile (one-time payment of $25). Play Integrity API does work in emulators with the Play Store installed.\n\nWhile this library encapsulates the intricacies of the two app attestation APIs into one library, you'll want to familiarize yourself with the basics for each one:\n\n[Android Play Integrity API](https://developer.android.com/google/play/integrity/overview)\n\n[iOS App Attest](https://developer.apple.com/documentation/devicecheck/preparing_to_use_the_app_attest_service)\n\n**This library only covers the client-side parts of app attestation.** Your server will be responsible for:\n1) generating an unpredictable nonce challenge to ensure attackers cannot replay attestation tokens from Apple and Google, and\n2) verifying the validity of the attestation token by assuring that it is i)  from Apple or Google, and ii)  that the nonce challenge was the one your server generated for this particular attestation challenge.\n\n### Before you start\n\n#### Have a rollout strategy if you're introducing attestation to an established app with many users\n\nApp Attest and Play Integrity API *are* external services that require a network connection, and like many APIs, are subject to rate-limiting. You will need a rollout strategy if you are implementing attestation and you already have many users.\n\n#### Consider whether a tiered or zero-tolerance policy for unattested requests is best for your app\n\nYou likely will need a decision strategy in your code and/or organization for handling unattested requests in the event that Apple's / Google's servers are unavailable, or if your app needs broader support than the subset of iOS 14.0+ devices that support App Attest. \n\nWhile we side with [this article](https://swiftrocks.com/app-attest-apple-protect-ios-jailbreak) that it's safest to adopt a zero-tolerance policy for unattested requests to your server, `expo-app-integrity` still exposes App Attest's `isSupported` API in JavaScript so that you can choose whether to bypass the service yourself.\n\nThis doesn't account for transient device errors or degradations in the Apple and Google services, either. Generally, you'll want to retry with exponential backoff in those events, but you may simply wish not to penalize users for faults outside of your organization's control.\n\nRequests can, then, be enumerated into four groups:\n1) **Attested**\n2) **Unattested (outdated)**, such as if your app's access tokens contingent on attestation have a long expiration date\n3) **Unattested (bad actor)**, such as if an attestation token was generated with an outdated / invalid nonce from your server, or if verification from Apple / Google fails\n4) **Unknown** - Google / Apple services are degraded and you are unable to verify the request\n\nDeciding what outcomes are available for four groups of requests on top of other authorization rules your organization might have might be cumbersome for indie developers or small development teams.\n\n***Note:** You may notice that Apple's documentation as far as *which* subset of devices support App Attest / Device Check is especially vague. If you have this information, please create an issue and let us know, so that others can make an informed decision on whether they should adopt a zero-tolerance or tiered policy for unattested requests.*\n\n## Installation\n### Install the Expo Module\n```\nnpx expo install expo-app-integrity\n```\n\n## Install Peer Dependencies\n`expo-app-integrity`  requires the following peer dependencies:\n```\nnpx expo install expo-secure-store expo-build-properties expo-device\n```\n### Configure for iOS\n\nThis module uses `expo-secure-store` to encrypt your user's iOS AppAttest `keyIdentifier`, and `expo-build-properties` to ensure that your app's deployment target is iOS 14.0. These require the following configuration in your app's `app.json`:\n```\n{\n  \"expo\": { ... },\n  \"plugins\": [\n   \"expo-secure-store\",\n    [\n      \"expo-build-properties\",\n      {\n        \"ios\": {\n          \"deploymentTarget\": \"14.0\"\n        }\n      }\n    ],\n  ]\n}\n```\n### Rebuild\nAfter installing these Expo modules, you will need to rebuild the `/ios` and `/android` directories. After creating an initial `eas` development build for each platform, this can be done via the \"play\" / \"build\" buttons in Xcode and Android Studio, or `npx expo run:ios` and `npx expo run:android`.\n\n## API\n### Import\n```TypeScript\nimport * as Integrity from 'expo-app-integrity'\n```\n\n### `isSupported()`\nCheck for iOS device support.\n```TypeScript\nIntegrity.isSupported(): boolean | never\n```\n**iOS Only** -  Wrap in a platform check if adopting a tiered policy for unattested requests and you need to support both platforms.\n```TypeScript\nimport * as Integrity from 'expo-app-integrity'\nimport { Platform } from 'react-native'\n\n// ...\n\nif (Platform.OS === 'ios' && Integrity.isSupported()) {\n  // attest key\n}\n```\n\n### `attestKey()`\nRequest an attestation token from Apple or Google servers.\n```TypeScript\n/** \n * @throws AppIntegrityError | UnhandledException\n */\nIntegrity.attestKey(\n  challenge: string,\n  cloudProjectNumber?: number\n): Promise<string | never>\n```\n\n### Errors\nErrors are enumerations of the `DCError` (Device Check) class (iOS) or the `IntegrityServiceException` class (Android), with a few `expo-app-integrity` additions for handling platform agnosticism.\n\nAll possible errors and their resolutions are laid out here:\n\n[iOS](./src/errors/iOS.ts)\n\n[Android](./src/errors/Android.ts)\n\n[`expo-app-integrity`-specific](./src/errors/PlatformAgnostic.ts)\n","readmeFilename":"README.md"}