{"_id":"@abrarmehraj/permission-kit","_rev":"26-ff4a8a4911409d2e09c2bf0fb7261559","name":"@abrarmehraj/permission-kit","dist-tags":{"latest":"0.1.25"},"versions":{"0.1.0":{"name":"@abrarmehraj/permission-kit","version":"0.1.0","keywords":["expo","react-native","permissions","android","battery","battery-optimization","expo-module"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.0","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"687e993b2f20e8267120a1822fe2bd2a1ec027a7","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.0.tgz","fileCount":170,"integrity":"sha512-o1AbTf/7UD2YrtNvz5eZkWV1ZYtcIkAT+IvSoe8lRQmSehFlm0S0pOy/5SmmaMft8Q0pAw0LC/x6Rgued9tMjw==","signatures":[{"sig":"MEYCIQCeZiamzmOX4ZxxUw1LnzzRGbKxFyVzLVwArQdWD2RjNwIhAMz0H7mjxkUfj4HSPIYVBxv69g4enieAkNRME5gaHK6c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654778},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"c870317f145e6622ad25f852b80bdacc6505e14a","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.0_1780668171709_0.42012906717722664","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.1":{"name":"@abrarmehraj/permission-kit","version":"0.1.1","keywords":["expo","react-native","permissions","android","battery","battery-optimization","expo-module"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.1","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"bd4dd5c20510eb0f849143e6fe6d3a3fdcc3c855","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.1.tgz","fileCount":179,"integrity":"sha512-k26x9/jdq9xV0Kpl6ofVy1AeOIVcPwzwWVh2zmVyEH7ZxwqasIicP11v9kwf+07B9o3CyqTrN9scRfFEXjomvA==","signatures":[{"sig":"MEYCIQDoqstOlCcV/S1HNQcshv9ioqEGH+qCzI9uSzsOPEVyDAIhAIyAHPnVRG694rliyw/A89PPtAjO5bguAvU916LV+e2m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721109},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"5dfc9ae20a45202ab9cc88fe926159eb196f9df1","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.1_1780683103193_0.04416332203311346","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.2":{"name":"@abrarmehraj/permission-kit","version":"0.1.2","keywords":["expo","react-native","permissions","android","battery","battery-optimization","expo-module"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.2","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"ef2b0a3c7e17c002b7d0f0e8179473bfda9f84b6","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.2.tgz","fileCount":185,"integrity":"sha512-DteM8maja17r2jOj4XwxbwWo/hnxgF443X9OpYmfur70/Nun9+MEcspLO9wyPDQHjTLmHq3351NST88tvyNgnQ==","signatures":[{"sig":"MEQCIG2XQe9MMrT84ezBwW53cXRMv0rczStila0Ca+pVq8vSAiAabTVfXwfZ4fuxNuyHkbFmM6tgETe2wcZajYYGaUK+pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":802083},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"077a0c4ae6816010994a163b7f4c50f39e80c409","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.2_1780761790537_0.05549767553390095","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.3":{"name":"@abrarmehraj/permission-kit","version":"0.1.3","keywords":["expo","react-native","permissions","android","battery","battery-optimization","expo-module"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.3","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"9b36af0af0bf68ffbd51841d83eb5cd4c25b3c57","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.3.tgz","fileCount":191,"integrity":"sha512-6Z0rmGCk5F42BYj+6UGbCh839BW/6zG6KpMI37a4GhHPQCNCGdUx3FS9UzUj+DpYJPvGu0nFVKgxLmA1OBFImw==","signatures":[{"sig":"MEQCID+aB5siFnjFiUrGQPoNMzk4VT1djTLyNk2IGey2MrMqAiBztiSKm4qRyXDZ1vvx5M5N1NUw0eyfkDngAKqCsbwuZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860455},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"063bb092aa5c6ea621e58546008678b376836f24","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.3_1780847596570_0.8287292656018121","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.4":{"name":"@abrarmehraj/permission-kit","version":"0.1.4","keywords":["expo","react-native","permissions","android","battery","battery-optimization","expo-module"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.4","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"13825579a7e99c1ee01422429f45552d7c742503","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.4.tgz","fileCount":203,"integrity":"sha512-SEG9XR83XDvanJRzr6Xe2QVBpHD0Nl71XysaRehTPHZofMdDvsCWwZyQ5KDVy1A2PNp5X22DOKVmryiGiEYAaQ==","signatures":[{"sig":"MEUCIDPl7g4RRlR18aRuHanrT9/QqyauSXZVKxph5abz8ztzAiEArNLvBQ8RXTLKKTOpIpZ/FzWNBRMHLeyS05KkCk7eP84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1000619},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"b9372254b583e08a9fde42793195ac253ff07733","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.4_1780848552796_0.21193642976722948","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.5":{"name":"@abrarmehraj/permission-kit","version":"0.1.5","keywords":["expo","react-native","permissions","android","battery","battery-optimization","expo-module"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.5","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"b5112ca8e8420477cd7da2e58b3fbfdf0082dded","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.5.tgz","fileCount":203,"integrity":"sha512-d9quDv91IGOZT0hoC0Isxb7WTq6U0eV2qdj3bep1mblqndDD0awRruDQLclxjlT0ICC0czbFMB+zpHDhto44wg==","signatures":[{"sig":"MEQCIBy1c9y5bv9DO+eUsJZ2v/ZT4ES+oQE15VIbhGQwqs83AiBQWJ25qc2jGc3gv7sU/lyO6QcCELryZdoaVCKksMjM3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1001567},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"9db090df58845074653fb634be7093026aea7ce9","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.5_1780850441170_0.9361337260961382","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.6":{"name":"@abrarmehraj/permission-kit","version":"0.1.6","keywords":["expo","react-native","permissions","android","battery","battery-optimization","expo-module"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.6","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"050fe2bc404651768f6d2f4d7f628de4ef0f008e","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.6.tgz","fileCount":209,"integrity":"sha512-Xono88BnHq27UHNkmXYNujjQJLFly+x6XlOnVn6+TP1l5Rq98eYMUXtNrT6VtmVoNTJV95dOJuzTCndTKZ3vTw==","signatures":[{"sig":"MEUCIQDlwMgERkWDQ9N8DLAwC1blSVx2YymZYzawwOYRrDEfowIgZwLDz0Fh68XDC9C6QYFIuESXy8SVXzkk2Gdw0M5krQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062767},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"2b809fb755c6371e5775d2b9986ac3234941ad97","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.6_1780851339894_0.5934120241841594","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.7":{"name":"@abrarmehraj/permission-kit","version":"0.1.7","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.7","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"5cbbfb589b1f25a6d0ab387bdd1a176b7cdb9e10","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.7.tgz","fileCount":236,"integrity":"sha512-K/yfBnmWEPvzdfA4YHpWJLQoiq5RvdSQsqcL4KltvwkOcTM2xi+rnzgNPeBEHKdmKg1doZR7KjX4hWTe+BRwqg==","signatures":[{"sig":"MEQCIAI/HQs6HacnLQdiyUQonRyXAmxahLIDcIWsc1szr67UAiB+C0pldPOAmkqpzXm00Ic7MdLAAEol0TMHKdfVG2TU7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1340411},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"3aad9e08acc133a7a5f1021cb77d618f0489154f","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.7_1780901624783_0.4141812172250494","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.8":{"name":"@abrarmehraj/permission-kit","version":"0.1.8","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.8","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"45aeff369d7c50556dc9acbfd5ed50676bb77d5f","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.8.tgz","fileCount":281,"integrity":"sha512-+6VPU/5spCU5jJofhIkSS6hILUhRfTyTJI8y2IsOyOIhlDqfcjCRCvlSPdPqno6FCw15FPTDjPYXNWI72R+Atg==","signatures":[{"sig":"MEQCIEJIdwHaVoJtxg3ZCW+kWmGpoPkYUS+gbvgvfqQgZmyGAiAGmVEwtR75YewUyAP2Ctk9fYZ/gPqzg15oFQD9PvHavQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1667938},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"6c118cea81b3dea2b651e9eebeb408fe81d89d58","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.8_1780904746560_0.9289901115488803","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.9":{"name":"@abrarmehraj/permission-kit","version":"0.1.9","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.9","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"03f26a0286b3fb31c31993877a28faa4ff4390bf","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.9.tgz","fileCount":285,"integrity":"sha512-4KcSv2o4m5JUbgLTanpDPS18eg0vrKhisp2Tc09VVux1p3Jo1ddRzyktRaqMsaz299y/D4+Z1v0JEHlzZfLwbg==","signatures":[{"sig":"MEUCIBUx1GURVAyCpQLMP8qzOqKXBL7oeVLl8/vpMjkD7BnhAiEA8YowxwwKaOqgi6jxbvjKP3hHSxCZOcdC5ttZV5QBd1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1750527},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"3f1e9eeb242b24912d9ad95a177072c971bcd3f8","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.9_1780919519887_0.8587034395721669","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.10":{"name":"@abrarmehraj/permission-kit","version":"0.1.10","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.10","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"ff34bd352397cf1305a945cbc7baa729a3c7a3b2","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.10.tgz","fileCount":285,"integrity":"sha512-Kx1U1e6lFYDIYBJ7URyxmkytcHgrVp9aHy/kgHhqvqVdZNebb9buDFkinK0s2aKgU1wsNEc6LMXyPJbF2u8W9g==","signatures":[{"sig":"MEUCIQCYDtjF7NNi1gL6RqmC8561jJ+FG86kd3JtwEaj/hVwYwIgYFUiC1VC1SBQY1tkO3XbqYx0d7a+GqBBhIZx+OuXtG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1751114},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"ccb46180331dcbd1a338d0ada3de21c8e0792ccb","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.10_1780941855943_0.9042183906126435","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.11":{"name":"@abrarmehraj/permission-kit","version":"0.1.11","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.11","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"b3bd2f70d638339d5451446b52b6d7491fa20234","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.11.tgz","fileCount":319,"integrity":"sha512-PfLimr50jmPISF0IQ04qzU8llKtuvWhG/OcWDPvOsJlBp14i2hLVSkvkdHkCqczevGTMTunNzK0GFJni+KjNIg==","signatures":[{"sig":"MEUCIH3yn3SzLOezW6T2GzTsBbZm9e2THka53XM9TXjZATudAiEA9euLJY4KbYdFqzq4m34Ncs4b+Vs9DPEZ4I8qQuITqQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2122941},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"20a53abeac6b46fe3a51b236b9e3f419351d1857","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.11_1781075161506_0.7044580134305727","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.12":{"name":"@abrarmehraj/permission-kit","version":"0.1.12","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.12","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"a57b0e30f43b23d566d4b871f291f3fa93bcf050","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.12.tgz","fileCount":319,"integrity":"sha512-mRqY6Veekl1vo/i10aYW/YQmdLXT7KvXJCqxlS/drnlOPJjpyT04B6y3bb89Y/V9NkIukfzQ5/H1WNOlUX/6RA==","signatures":[{"sig":"MEYCIQD+AE7Wn2xNzbzely38mlFBZBJ92iE/1J+SAUUkf0ix9gIhAIs9HguBUCbHZVI5QHzCW2w315FVvVvafbA7yVVOI+zc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2123064},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"3ad85893705cd241ad6c278d901189d57182b11d","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.12_1781075916737_0.9048149940678325","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.14":{"name":"@abrarmehraj/permission-kit","version":"0.1.14","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.14","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"b10d4c7b99406e23746bb9fd72890792c361a21b","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.14.tgz","fileCount":376,"integrity":"sha512-3uw0/xPjZIxm7EsC90XCHW7Sn6c60MeoARX1OzH/2T4Cr0s9m/N+SUt+avVZyhK4GahTZFVGj2vuqx0TMj+3RQ==","signatures":[{"sig":"MEQCICHI8A96xcWpNGDeQWtEEOTFsAWQ8Gwix/BUwTfnbkW8AiBhxycbnsDPtXlbbJAtnOegah74eaSecuyLal80j/okBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2633532},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"c9297b97eae98b86b66ebfcd75d50aedb16404eb","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.14_1781202240173_0.5699504294286637","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.15":{"name":"@abrarmehraj/permission-kit","version":"0.1.15","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.15","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"8097761dfb10599f78e88e157b314b8b21c430dd","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.15.tgz","fileCount":376,"integrity":"sha512-BWEH8rNyZTU7mq03XQrEvL2lEEY7TorPUcLxJI8woM26gDIl7ICuBNcChMQRqKycg2jsSfx5zl5dzv1Ew5vjZA==","signatures":[{"sig":"MEYCIQDWuUMNxl4wnnHh5VzJVdceLXRWS5d5oZz8h4hPIN7/cgIhAMTfhbKu2edkvOYyvHV9jzLYsw3DTGyUbrNedlg9wlDD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2635325},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"09ed1ed519eb08c74d98c0cd9ead16ef8d7888e4","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.15_1781237845639_0.8817580993888177","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.16":{"name":"@abrarmehraj/permission-kit","version":"0.1.16","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.16","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"90bc10ead2d13fb9510a3a3bf28b4dce9df28500","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.16.tgz","fileCount":376,"integrity":"sha512-nJv9FheDNkfZ/UY9bx0HXN11kNX0f1KFTELFlkbje46AG5X+zLpPJFN68mbta06t2t/bYg1RYQPgBd+NQWUPDA==","signatures":[{"sig":"MEUCIQD8LISlRaYwueX7AKeTh6OsEKbtMzlLia/7JtzRA8ukmQIgPB8TnfC9i7H4zUBzA7ywQUbcWkYAsIY0j0Qtj+T8Boo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2638707},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"4e11a678d5aa310f3c5276988a63cff8e8725281","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.16_1781238318422_0.3845620264264329","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.17":{"name":"@abrarmehraj/permission-kit","version":"0.1.17","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.17","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"59645f0ef9451a2bdaf464f3a8a60d7cf14ffbda","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.17.tgz","fileCount":373,"integrity":"sha512-yK5mIPwG7Xu8lNvfFI2SUPIFqP/pak2bfqyQnRmDA4IBTEDo7Q65Dtep6yrhZlEqhPwIJo6Co4waJyZplP2QnQ==","signatures":[{"sig":"MEUCIBQmaZlSDAewbxjmdQ5Iw5e8awHxvhyJuX5FFpHgDd1VAiEA5urv9QBTrtj4t0oz2SFWh+JF55uPSaUfIDESKXmOoeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2677476},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"94ef518d23a598312e98b8d15b9c3cad0a45aff5","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.17_1781254226582_0.6467550954599866","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.18":{"name":"@abrarmehraj/permission-kit","version":"0.1.18","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.18","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"9a3f057c7fa37f0c67d3233eaf95b744466d26e6","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.18.tgz","fileCount":379,"integrity":"sha512-PmpjwhazAMJUMlUxW8fpozGvd6F8NxLyYL8t94GyIoVX1JOyAMEdbfacMBK7gbAso72v81rd4QYuY0BvqeOjIQ==","signatures":[{"sig":"MEYCIQDusrFbAJaZ89kVJOtPFyZknrdG4Z+R/kV++S9yO8soVwIhAPDZ9n9nE9AKHpsYhVt7jpPBCgiKtLFgPVmwOwhTKElv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2749400},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"b11d35c47c8f3d6ab20f9de292af50b3d8b3defc","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.18_1781288458425_0.9413504776823227","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.19":{"name":"@abrarmehraj/permission-kit","version":"0.1.19","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.19","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"906352177ee8f2c5141355dcfb28329ff45dd2be","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.19.tgz","fileCount":1322,"integrity":"sha512-o6+rk/w8Y0geRHkB+X8OtXgZ3MJqX1a8brFcQno7kRE5gdMapsckoLlbwvj9DIKO5MF64g9KMBFCZhb1oAGZxw==","signatures":[{"sig":"MEUCIDVcF7AejaTkQwlWSx4y51T+Jtg3w+o3rdaUw9lBRr4sAiEA7sBPmaDrkevbUOXc/Kd1XiE9ZjAxwCYebD/8TndbHu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13191219},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"68eeb89a78990df3d2d617e5b5fb8e8695124fd6","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.19_1781335944160_0.7465575144853442","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.20":{"name":"@abrarmehraj/permission-kit","version":"0.1.20","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.20","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"a36d0ada0367f6a287b7f16111a3b04a82d74cc0","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.20.tgz","fileCount":1322,"integrity":"sha512-Z5hYNDl/lOVSwcTYf9+WSowuxefEFgt5iYqPD4hjjNl4UzPPB/GQw4mbSPgxZdbVfHm9R9sdHh1kbmnengo+yg==","signatures":[{"sig":"MEUCIQD6ULBKk5rdDF1TW+CBvoy6efshOijEGeUFhNHwRKWwUQIgd1p/eka87+dhk32FMxrIADZ5jQQIYMXtfFDnWQJQVxs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13186820},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"1a2d9c38480320696f79cd0f6a0c18e6dd148b23","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.20_1781342237882_0.31092363511048293","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.21":{"name":"@abrarmehraj/permission-kit","version":"0.1.21","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.21","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"05fdc7c7366a7697f97b63375671bc4690157e5b","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.21.tgz","fileCount":1324,"integrity":"sha512-4Zcdsv3A+hCrdfj+ziu6YKo09ra+tOgYHK1az4th0C81Y/7ft0otyDx3vv7qz6I+9wYIciZ0kvTl72tbzaq2/Q==","signatures":[{"sig":"MEYCIQDTXmvIs+8V9lQOt9bTieAigZ1MFbOrM2pEc+z1BFQKugIhAItJOweP0u3CklEbIxJN8AHs9hdSPoq39ZVCH5BkI6ZC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13215939},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"9a099bd5acaf097bf7f6105673e482dfe1372fd7","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.21_1781348851073_0.19050840244543377","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.22":{"name":"@abrarmehraj/permission-kit","version":"0.1.22","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.22","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"9a394b2e15f9322b451e3edd9c810cd06eddf199","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.22.tgz","fileCount":1329,"integrity":"sha512-QAGvV9GSoryg+D7ppAUQ3y6Gv2IOLGETBRdonZ6RFF2sKJAn1JRJHX5rFs9qrArH9h0CC/f7lekHQzJjPsOH3A==","signatures":[{"sig":"MEQCIAhi69E34p55BsJvkooFkVGPhGYUnvJpsH3Y6cw6PGHJAiAAgm+pEP75xIBiPFOnRBhN6ZuFm/0FKYg6nIpPcLUgNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13236049},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"a01101d0fcd61828aeb2040b9dd2caa90970cb61","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.22_1781721147387_0.26592631031099745","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.23":{"name":"@abrarmehraj/permission-kit","version":"0.1.23","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.23","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"e9efb172000c2e84c234a3e190a8ccd7a5f0f983","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.23.tgz","fileCount":1329,"integrity":"sha512-eWODoSyembT8KMMf9f9xhnXpC3CzL+1jzURHZv8cqymRwN3qZaNbkOL9Deq55JlKHNpRpvk27j/mnwWYJ+AwhA==","signatures":[{"sig":"MEYCIQDeI18TzElF4zASWtuC2JBrZz0HBSfEqgt+EMVnZDaBSAIhAPfTO6hWD+7+n/OL3viGNqnHbLaoRNqDcYfLan2eaOEX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13237224},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"1909daac37de797dfd97bbe568db269b006b7ecd","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.23_1781765592900_0.02753030437599291","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.24":{"name":"@abrarmehraj/permission-kit","version":"0.1.24","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.24","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"c0589a25e30be62b6587640584d8a3d6e5668a75","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.24.tgz","fileCount":1329,"integrity":"sha512-NeDCh+CmgItprOIyrvzC2Ae9b6Ev+irYDyNtMflIN3KuFs1tJD9vSTapvTTLCCHRdGpz96JZ8UBY6HUC5eDEQQ==","signatures":[{"sig":"MEQCIBToLX3jKJ+U2UV++TcMfkyCDbJxSiZyKlNNxyaCOciqAiBDCnZ6E5tn5q9hcC7bWrlCdVG5OCKnPqPn2L2SbzNJBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13257912},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"4218828147245db1c312b003e081a71a6b9a6e72","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.24_1782116092401_0.25536746144453715","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."},"0.1.25":{"name":"@abrarmehraj/permission-kit","version":"0.1.25","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"author":{"name":"Abrar Mehraj"},"license":"MIT","_id":"@abrarmehraj/permission-kit@0.1.25","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"dist":{"shasum":"cc36acf8650bebf6820b24066a5f915b5e28f7d6","tarball":"https://registry.npmjs.org/@abrarmehraj/permission-kit/-/permission-kit-0.1.25.tgz","fileCount":1329,"integrity":"sha512-bu2vDaJ1Bd1vL2zfTpsNhlCGgndbucvDojdyuRi6jaZVhkxRvoq1UAa7uD1DElB0xdHPS1g20g2f5fAYsEgLpg==","signatures":[{"sig":"MEQCIEwEtGZlUMVx4oIvFZrdhSY5/y+zmO59C5Krxc01KWgdAiAkmsaU0L05IPKCv0ypA/P2Cq7xWzkTMcbaFrMIJiwB6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13272782},"main":"build/index.js","types":"build/index.d.ts","module":"build/index.js","gitHead":"6ed7e3cf19bf5652622cbefcf0b741e4c04fc11a","scripts":{"build":"../../node_modules/.bin/tsc -p tsconfig.json && ../../node_modules/.bin/tsc -p plugin/tsconfig.json","clean":"rm -rf build plugin/build","prepare":"npm run build"},"_npmUser":{"name":"abrarmehraj","email":"darabrar@outlook.com"},"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"_npmVersion":"11.13.0","description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.3","@types/react":"~19.2.2"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/permission-kit_0.1.25_1782118962522_0.6483303108774641","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to react-native-permission-flow. Please uninstall this package and install react-native-permission-flow instead."}},"time":{"created":"2026-06-05T14:02:51.510Z","modified":"2026-07-06T05:46:07.329Z","0.1.0":"2026-06-05T14:02:51.853Z","0.1.1":"2026-06-05T18:11:43.341Z","0.1.2":"2026-06-06T16:03:10.694Z","0.1.3":"2026-06-07T15:53:16.749Z","0.1.4":"2026-06-07T16:09:12.939Z","0.1.5":"2026-06-07T16:40:41.330Z","0.1.6":"2026-06-07T16:55:40.024Z","0.1.7":"2026-06-08T06:53:45.038Z","0.1.8":"2026-06-08T07:45:46.783Z","0.1.9":"2026-06-08T11:52:00.058Z","0.1.10":"2026-06-08T18:04:16.119Z","0.1.11":"2026-06-10T07:06:01.701Z","0.1.12":"2026-06-10T07:18:36.983Z","0.1.14":"2026-06-11T18:24:00.428Z","0.1.15":"2026-06-12T04:17:25.879Z","0.1.16":"2026-06-12T04:25:18.596Z","0.1.17":"2026-06-12T08:50:26.814Z","0.1.18":"2026-06-12T18:20:58.644Z","0.1.19":"2026-06-13T07:32:24.480Z","0.1.20":"2026-06-13T09:17:18.128Z","0.1.21":"2026-06-13T11:07:31.344Z","0.1.22":"2026-06-17T18:32:27.755Z","0.1.23":"2026-06-18T06:53:13.193Z","0.1.24":"2026-06-22T08:14:52.674Z","0.1.25":"2026-06-22T09:02:42.766Z"},"bugs":{"url":"https://github.com/AbrarMehraj/plugins-playground/issues"},"author":{"name":"Abrar Mehraj"},"license":"MIT","homepage":"https://github.com/AbrarMehraj/plugins-playground#readme","keywords":["expo","react-native","permissions","android","ios","battery","battery-optimization","overlay","usage-stats","exact-alarm","accessibility","do-not-disturb","dnd","notifications","push-notifications","expo-module","permission-kit"],"repository":{"url":"git+https://github.com/AbrarMehraj/plugins-playground.git","type":"git"},"description":"A developer-friendly permissions library for Expo and React Native. One call handles the full workflow — check, request, wait for app resume, return final status.","maintainers":[{"name":"abrarmehraj","email":"darabrar@outlook.com"}],"readme":"# @abrarmehraj/permission-kit\n\nA developer-friendly permissions library for **Expo** and **React Native**.\n\nOne call handles the full workflow — check, request, wait for app resume, return final status.\n\n```ts\nconst result = await PermissionKit.notifications();\n// { status: 'granted' } or { status: 'denied' }\n```\n\n## React Hooks API ✨\n\nFor React components, PermissionKit provides a suite of custom hooks. They handle everything for you: checking permissions on mount, listening to app state changes (e.g. when the app resumes from the background), and managing native loading states.\n\n```ts\nimport { \n  useLocation, \n  useMedia, \n  useNotifications, \n  useBatteryOptimization,\n  useOverlay,\n  useUsageStats,\n  useExactAlarm,\n  useFullScreenIntent,\n  useAccessibility,\n  useDndAccess\n} from '@abrarmehraj/permission-kit';\n```\n\n### Standard Hook Return Object\nAll hooks return the exact same predictable object interface:\n\n```ts\nconst { \n  status,     // String: 'granted' | 'denied' | 'unavailable' | 'restricted'\n  success,    // Boolean: true if status === 'granted'\n  request,    // Function: Trigger the OS permission prompt\n  check,      // Function: Manually re-check the status\n  isLoading,  // Boolean: true while the OS prompt is open or data is fetching\n  result      // Object: The full raw result payload (useful for Location coordinates)\n} = useLocation();\n```\n\n### Passing Options to Hooks\nHooks accept the **exact same options** as their async function counterparts!\n\n```ts\n// Example: Requesting photos with native iOS \"limited\" prompt\nconst photoPerm = useMedia({ type: 'photo', requestMore: true });\n\n// Example: Location with high accuracy & GPS fetching\nconst locationPerm = useLocation({ \n  fetchCoordinates: true, \n  accuracy: 'high', \n  timeout: 15000 \n});\n\n// Example: Checking for a specific Accessibility Service\nconst a11yPerm = useAccessibility({ \n  androidServicePath: '.MyAccessibilityService' \n});\n```\n\n### Full Example\n\n```tsx\nimport { Button, Text, View } from 'react-native';\nimport { useLocation } from '@abrarmehraj/permission-kit';\n\nexport default function MyComponent() {\n  const { status, success, request, isLoading, result } = useLocation({ fetchCoordinates: true });\n\n  return (\n    <View>\n      <Text>Status: {status.toUpperCase()}</Text>\n      \n      {success && result && 'latitude' in result && (\n        <Text>📍 Lat: {result.latitude}, Lng: {result.longitude}</Text>\n      )}\n\n      <Button \n        title={isLoading ? \"Please wait...\" : (success ? \"Granted!\" : \"Request Location\")} \n        onPress={request} \n        disabled={isLoading || success}\n      />\n    </View>\n  );\n}\n```\n\n---\n\n## Installation\n\n```bash\nnpm install @abrarmehraj/permission-kit\n# or\nyarn add @abrarmehraj/permission-kit\n# or\npnpm add @abrarmehraj/permission-kit\n```\n\n## Setup\n\n### For Expo Projects (Recommended)\n\nUse the built-in Config Plugin to automatically handle Android permissions. This ensures you only request the permissions you actually use!\n\nIn your `app.json`, add the plugin and specify the permissions you want:\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\n      [\n        \"@abrarmehraj/permission-kit\",\n        {\n          \"permissions\": [\"batteryOptimization\", \"overlay\", \"usageStats\", \"exactAlarm\", \"fullScreenIntent\", \"dndAccess\", \"notifications\", \"location\", \"media:photo\", \"media:video\"],\n          \"locationDescription\": \"Used to show your current position.\",\n          \"photoDescription\": \"Used to pick a profile picture.\",\n          \"appleMusicDescription\": \"Used to pick audio.\"\n        }\n      ]\n    ]\n  }\n}\n```\n\n- **`permissions`**: Array of permissions you intend to use. Only the required ones will be injected into AndroidManifest.xml.\n\n  **Available permission keys:**\n  | Key | What it does |\n  |---|---|\n  | `batteryOptimization` | Exempt from battery optimization |\n  | `overlay` | Draw over other apps |\n  | `usageStats` | App usage statistics |\n  | `exactAlarm` | Schedule exact alarms (user-revocable, for general apps) |\n  | `useExactAlarm` | Auto-granted exact alarms (for alarm clock / timer apps only — requires Play Store justification) |\n  | `fullScreenIntent` | Full screen intents |\n  | `dndAccess` | Do Not Disturb access |\n  | `notifications` | Push & local notifications |\n  | `location` | Fine + coarse location |\n  | `media` | **All** media permissions (photos, video, audio, all-files) — backward compatible |\n  | `media:photo` | Only photo library access |\n  | `media:video` | Only video library access |\n  | `media:audio` | Only music/audio library access |\n  | `media:all` | Full file manager access (`MANAGE_EXTERNAL_STORAGE`) |\n\n  > **Tip:** Use granular `media:photo`, `media:video`, etc. instead of bare `media` to avoid declaring unnecessary permissions in your manifest. This helps with Play Store reviews.\n\n- **`locationDescription`**: (Optional) For iOS, this string is used as the `NSLocationWhenInUseUsageDescription`. Defaults to `\"$(PRODUCT_NAME) needs access to your location.\"`\n- **`photoDescription`**: (Optional) For iOS, this string is used as the `NSPhotoLibraryUsageDescription`. Defaults to `\"$(PRODUCT_NAME) needs access to your photos.\"`\n- **`appleMusicDescription`**: (Optional) For iOS, this string is used as the `NSAppleMusicUsageDescription`. Defaults to `\"$(PRODUCT_NAME) needs access to your music.\"`\n\nThen run:\n```bash\nnpx expo prebuild\n```\n\n### For Bare React Native Projects (Without Expo Prebuild)\n\nIf you are not using Expo Prebuild, you must manage your `AndroidManifest.xml` manually. \n\nAdd the required permissions to your `android/app/src/main/AndroidManifest.xml` ONLY for the features you intend to use:\n\n```xml\n<uses-permission android:name=\"android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS\" />\n<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\" />\n<uses-permission android:name=\"android.permission.SCHEDULE_EXACT_ALARM\" />\n<!-- OR, if you are building an alarm clock app: -->\n<uses-permission android:name=\"android.permission.USE_EXACT_ALARM\" />\n\n<uses-permission android:name=\"android.permission.USE_FULL_SCREEN_INTENT\" />\n<uses-permission android:name=\"android.permission.ACCESS_NOTIFICATION_POLICY\" />\n<uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" />\n<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />\n<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />\n\n<!-- Media Permissions for all API Levels -->\n<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" />\n<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />\n<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />\n<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />\n<uses-permission android:name=\"android.permission.READ_MEDIA_AUDIO\" />\n<uses-permission android:name=\"android.permission.READ_MEDIA_VISUAL_USER_SELECTED\" />\n<uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\" />\n```\n\n> **Note**: PermissionKit requires Expo Modules architecture. If you are on React Native 0.69+, you likely already have it. Make sure you run `npx pod-install` for iOS.\n\n## API\n\n### `PermissionKit.media(options)`\n\nAutomatically resolves Android fragmentation (Android 14+, Android 13, Android < 13) and iOS restricted modes into a simple API.\n\n```ts\nimport { PermissionKit } from '@abrarmehraj/permission-kit';\n\n// type: 'photo' | 'video' | 'audio' | 'all'\n// requestMore (optional): Set to true to pop up the native OS picker when status is 'limited' so users can add more photos.\n// showAlert (optional): If true, automatically shows a native alert if permanently denied. Default: true.\n// alertTitle / alertDescription (optional): Custom text for the settings fallback alert.\nconst result = await PermissionKit.media({ \n  type: 'photo', \n  requestMore: true,\n  showAlert: true \n});\n\nif (result.status === 'granted') {\n  // You have full access. Safe to open your image picker.\n} else if (result.status === 'limited') {\n  // User only granted access to a few specific photos (Android 14+ / iOS 14+).\n  // Because we passed requestMore: true, the OS prompt will appear first so they can select more photos.\n} else if (result.status === 'denied') {\n  // Permission denied. Use this to show a custom UI before calling PermissionKit.openMediaSettings()\n} else if (result.status === 'unavailable') {\n  // E.g., iOS doesn't have an \"all\" files permission (use Document Picker instead).\n}\n```\n\n> **Note**: Requesting `type: 'all'` on Android will trigger the `MANAGE_EXTERNAL_STORAGE` settings redirect natively. On iOS, it returns `unavailable`.\n\n### `PermissionKit.checkMedia({ type })`\n\nCheck the current media permission status.\n\n```ts\nconst result = await PermissionKit.checkMedia({ type: 'photo' });\n```\n\n---\n\n### `PermissionKit.batteryOptimization()`\n\nChecks if battery optimization is disabled for your app. If not, automatically opens the Android Settings dialog and waits for the user to return. Re-checks on resume.\n\n```ts\nimport { PermissionKit } from '@abrarmehraj/permission-kit';\n\nconst result = await PermissionKit.batteryOptimization();\n\nif (result.status === 'granted') {\n  // App is excluded from battery optimization\n} else if (result.status === 'denied') {\n  // User denied\n} else if (result.status === 'unavailable') {\n  // Platform doesn't support this (e.g., iOS)\n}\n```\n\n### `PermissionKit.checkBatteryOptimization()`\n\nCheck the current status without showing any dialog or opening settings.\n\n```ts\nconst result = await PermissionKit.checkBatteryOptimization();\n// Use on app start to know the current state\n```\n\n---\n\n### `PermissionKit.overlay()`\n\nChecks if the app is allowed to draw over other apps (System Alert Window). If not, automatically opens the Android \"Display over other apps\" settings, waits for the user to return, and re-checks on resume.\n\n```ts\nconst result = await PermissionKit.overlay();\n\nif (result.status === 'granted') {\n  // App is allowed to draw over others\n}\n```\n\n### `PermissionKit.checkOverlay()`\n\nCheck the current overlay status without opening settings.\n\n```ts\nconst result = await PermissionKit.checkOverlay();\n```\n\n---\n\n### `PermissionKit.usageStats()`\n\nChecks if the app is allowed to access app usage statistics (Usage Access). Required for app blockers or digital wellbeing features. If not, automatically opens the Android \"Usage Access\" settings, waits for the user to return, and re-checks on resume.\n\n```ts\nconst result = await PermissionKit.usageStats();\n\nif (result.status === 'granted') {\n  // App is allowed to read usage stats\n}\n```\n\n### `PermissionKit.checkUsageStats()`\n\nCheck the current usage access status without opening settings.\n\n```ts\nconst result = await PermissionKit.checkUsageStats();\n```\n\n---\n\n### `PermissionKit.exactAlarm()`\n\nChecks if the app is allowed to schedule exact alarms (Android 14+ requirement). \n\n- If you configured `\"exactAlarm\"` in your setup: Automatically opens the Android \"Alarms & Reminders\" settings, waits for the user to toggle it on, and re-checks on resume.\n- If you configured `\"useExactAlarm\"` in your setup: This will instantly return `{ status: 'granted' }` without opening any settings, since it is auto-granted by Android.\n\n```ts\nconst result = await PermissionKit.exactAlarm();\n\nif (result.status === 'granted') {\n  // App is allowed to schedule exact alarms\n}\n```\n\n### `PermissionKit.checkExactAlarm()`\n\nCheck the current exact alarm status without opening settings.\n\n```ts\nconst result = await PermissionKit.checkExactAlarm();\n```\n\n---\n\n### `PermissionKit.fullScreenIntent()`\n\nChecks if the app is allowed to use full-screen intents (Android 14+ requirement). If not, automatically opens the Android \"Full screen intents\" settings, waits for the user to return, and re-checks on resume.\n\n```ts\nconst result = await PermissionKit.fullScreenIntent();\n\nif (result.status === 'granted') {\n  // App is allowed to use full screen intents\n}\n```\n\n### `PermissionKit.checkFullScreenIntent()`\n\nCheck the current full screen intent status without opening settings.\n\n```ts\nconst result = await PermissionKit.checkFullScreenIntent();\n```\n\n---\n\n### `PermissionKit.accessibility({ androidServicePath })`\n\nChecks if a specific Accessibility Service is enabled. If not, automatically opens the Android Accessibility Settings, waits for the user to return, and re-checks on resume.\n\n> **Note**: Your app must actually define an Accessibility Service in its `AndroidManifest.xml` to appear in the settings list!\n\n```ts\nconst result = await PermissionKit.accessibility({\n  androidServicePath: \"com.myapp.MyAccessibilityService\" // or \".MyAccessibilityService\"\n});\n\nif (result.status === 'granted') {\n  // Service is active\n}\n```\n\n### `PermissionKit.checkAccessibility({ androidServicePath })`\n\nCheck the current accessibility service status without opening settings.\n\n```ts\nconst result = await PermissionKit.checkAccessibility({\n  androidServicePath: \".MyAccessibilityService\"\n});\n```\n\n---\n\n### `PermissionKit.dndAccess()`\n\nChecks if the app is allowed to modify Do Not Disturb (Notification Policy Access). If not, automatically opens the Android \"Do Not Disturb access\" settings, waits for the user to return, and re-checks on resume.\n\n```ts\nconst result = await PermissionKit.dndAccess();\n\nif (result.status === 'granted') {\n  // App can now mute the phone or change DND rules\n}\n```\n\n### `PermissionKit.checkDndAccess()`\n\nCheck the current DND access status without opening settings.\n\n```ts\nconst result = await PermissionKit.checkDndAccess();\n```\n\n---\n\n### `PermissionKit.notifications(opts?: NotificationOptions)`\n\nRequests notification permission from the user using the correct industry-standard flow:\n\n- **First call**: Shows the native OS permission dialog (on both iOS and Android 13+).\n- **User taps \"Allow\"**: Returns `{ status: 'granted' }`.\n- **User taps \"Don't Allow\"**: Returns `{ status: 'denied', canAskAgain: true }`. The user's choice is respected — no forced redirect.\n- **Subsequent call (after permanent denial)**: Returns `{ status: 'denied', canAskAgain: false }`. If you pass `showAlertConfig: true`, it will automatically show a native alert explaining why the permission is needed and provide an \"Open Settings\" button that redirects the user directly to your app's Notification settings.\n\n```ts\nconst result = await PermissionKit.notifications({\n  showAlertConfig: true,\n  alertConfig: {\n    title: 'Notifications Required',\n    description: 'Please enable notifications in Settings to stay updated.',\n  }\n});\n\nif (result.status === 'granted') {\n  // Notifications are enabled — schedule your push token registration here\n} else if (result.status === 'denied') {\n  // User denied — show an in-app explanation if you want\n} else if (result.status === 'unavailable') {\n  // Should not happen on iOS or Android 13+\n}\n```\n\n### `PermissionKit.checkNotifications()`\n\nCheck the current notification permission status without showing any dialog.\n\n```ts\nconst result = await PermissionKit.checkNotifications();\n// { status: 'granted' | 'denied', canAskAgain: boolean }\n```\n\n---\n\n### `PermissionKit.location(opts?: LocationOptions)`\n\nRequests precise location permission from the user and fetches the coordinates using the correct industry-standard flow:\n\n- **First call**: Shows the native OS permission dialog (on both iOS and Android).\n- **User taps \"Allow\"**: Fetches GPS signal and returns `{ status: 'granted', latitude: number, longitude: number, accuracy: number, timestamp: number, altitude: number }`.\n- **User taps \"Deny\"**: Returns `{ status: 'denied', canAskAgain: true }`. The user's choice is respected — no forced redirect.\n- **Subsequent call (after permanent denial)**: Returns `{ status: 'denied', canAskAgain: false }`. If you pass `showAlertConfig: true`, it will automatically show a native alert explaining why the permission is needed and provide an \"Open Settings\" button that redirects the user directly to your app's Location settings.\n- **Location Services Off**: If global location services (GPS) are disabled, it automatically prompts the user natively to turn them on (via Google Play Services on Android). If they tap \"No thanks\", or if you're on a device without Play Services, it aborts and returns `{ status: 'denied', error: 'LOCATION_SERVICES_DISABLED' }`. This gives you full control to show a custom explanation dialog before manually calling `PermissionKit.openLocationSettings()`.\n\n**Options:**\n- `timeout`: GPS fetch timeout in ms (default `10000`ms).\n- `accuracy`: Location accuracy level (default `'balanced'`):\n  - `'high'`: GPS-level precision (~5m). Slower, uses more battery.\n  - `'balanced'`: Wi-Fi/Cell tower precision (~100m). Fast, battery-friendly.\n  - `'low'`: City-level precision (~1km). Fastest, minimal battery.\n- `fetchCoordinates`: If `false`, acts as a \"permission only\" request without turning on the GPS hardware (default `true`).\n- `showAlertConfig`: If `true`, shows a native alert to navigate to Settings when permanently denied.\n- `showErrorAlerts`: If `true`, automatically shows native UI messages (Toast on Android, Alert on iOS) for common location errors like timeout or services disabled (default `true`).\n- `errorMessages`: Optional object to override the default error messages shown by `showErrorAlerts`.\n\n**Return Type:**\n```ts\ntype LocationResult =\n  | { status: 'granted'; latitude: number; longitude: number; accuracy: number; altitude: number; timestamp: number }\n  | { status: 'denied'; canAskAgain?: boolean; error?: 'LOCATION_SERVICES_DISABLED' | 'TIMEOUT' | 'LOCATION_UNAVAILABLE' }\n  | { status: 'restricted' }\n  | { status: 'unavailable' };\n```\n\n```ts\nconst result = await PermissionKit.location({\n  timeoutMs: 15000,\n  fetchCoordinates: true,\n  showAlertConfig: true,\n  alertConfig: {\n    title: 'Location Required',\n    description: 'We need your location to show nearby restaurants.'\n  }\n});\n\nif (result.status === 'granted') {\n  console.log(`Lat: ${result.latitude}, Lng: ${result.longitude}`);\n} else if (result.status === 'denied') {\n  if (result.error === 'LOCATION_SERVICES_DISABLED') {\n    // Show your custom dialog: \"Please enable GPS to use this feature\"\n  } else {\n    // User denied app permission\n  }\n} else if (result.status === 'restricted') {\n  // Parental controls or MDM blocking location (iOS)\n}\n```\n\n### `PermissionKit.checkLocation()`\n\nCheck the current location permission status without showing any dialog or fetching coordinates.\n\n```ts\nconst result = await PermissionKit.checkLocation();\n// { status: 'granted' | 'denied' | 'restricted', canAskAgain: boolean }\n```\n\n---\n\n## Platform Support\n\n| Feature               | Android | iOS |\n|-----------------------|---------|-----|\n| Battery Optimization  | ✅      | ⚠️ `unavailable` |\n| Overlay Permission    | ✅      | ⚠️ `unavailable` |\n| Usage Access          | ✅      | ⚠️ `unavailable` |\n| Exact Alarm           | ✅      | ⚠️ `unavailable` |\n| Full Screen Intent    | ✅      | ⚠️ `unavailable` |\n| Accessibility Service | ✅      | ⚠️ `unavailable` |\n| Do Not Disturb Access | ✅      | ⚠️ `unavailable` |\n| Notifications         | ✅      | ✅ |\n| Location              | ✅      | ✅ |\n| Media                 | ✅      | ✅ |\n\n> **iOS Note**: Battery Optimization, Overlay, Usage Access, Exact Alarm, Full Screen Intent, Accessibility Service, and DND Access are Android-only concepts. Calling them on iOS immediately returns `{ status: 'unavailable' }` without showing any UI. Notifications, Location, and Media are natively supported on both platforms.\n\n> **Simulator Note**: When testing on the iOS Simulator, calling `openSettings()` or pressing the \"Open Settings\" button in the permission alert may open the Settings App's home screen instead of the specific app's settings page. This is a known iOS Simulator bug. Testing on a real physical device will correctly open the specific app's settings.\n\n---\n\n## Roadmap\n\n- [x] Battery Optimization (Android)\n- [x] Overlay Permission (Android)\n- [x] Exact Alarm (Android)\n- [x] Full Screen Intent (Android)\n- [x] Accessibility Service (Android)\n- [x] Do Not Disturb Access (Android)\n- [x] Notifications (Android + iOS)\n- [x] Location (Android + iOS)\n- [x] Media (Android + iOS)\n- [x] Expo Config Plugin\n- [x] Usage Access (Android)\n- [ ] Write System Settings (Android)\n- [ ] `ensure()` helper\n\n---\n\n## Issues & Feedback\n\nIf you encounter any bugs, have feature requests, or want to contribute to the library, please feel free to open an issue or pull request on our GitHub repository:\n\n[https://github.com/AbrarMehraj/plugins-playground/issues](https://github.com/AbrarMehraj/plugins-playground/issues)\n\nWe highly value developer feedback to make this the best permissions library in the React Native ecosystem!\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}