{"_id":"@bmc-soft/keycloak-auth","_rev":"36-336f355a8bbd6893ba1e059911043b0e","name":"@bmc-soft/keycloak-auth","dist-tags":{"latest":"2.0.24"},"versions":{"1.0.0":{"name":"@bmc-soft/keycloak-auth","version":"1.0.0","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.0","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"814f5e3876a3543d91c0c4c5965652e3d18b2dc9","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.0.tgz","fileCount":3,"integrity":"sha512-eTKMKSvmXa1WpvgCwhX9jYfln2WnUTc3B4jQ2+YPHDElEICbvAtGj6WQaJ/xJ55PuvO8Z87RHMzELdMBFGs4Iw==","signatures":[{"sig":"MEUCIEZmgnYxQbrVQaCONI8gMU1gZVmSZCqRKg6e4Szuwde0AiEAs8DemOaZIE0mn9/v89AslQwAPfFiqnI/+dHaxYjQ+DI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31518},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","default":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","default":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","default":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","default":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","default":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","default":"./dist/widgets/index.js"}},"gitHead":"63592a6bed3814e8a12c31d1325994d541dbc5c5","scripts":{"build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.0_1770664283428_0.4932272622631","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bmc-soft/keycloak-auth","version":"1.0.1","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.1","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"ad7b6435fe0fba04181d71730dde0ccde8c7671e","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.1.tgz","fileCount":3,"integrity":"sha512-TKWS9d8PF/wNMaO9+War/KGSKGbjf2U+MqoBOZ9CZA3hgxGl8mLa0PcthBHNLGjZbJg+36dPTbnVtYuAiqExrw==","signatures":[{"sig":"MEQCIGDqERLxqrQ/gGhhj7zG/EXnLtE7hoeLraFI4WkvOQ/mAiBeUn++6HqU9no4It2He3UtvmoFzX+4q1O7eQr/o/Nzeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31522},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","default":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","default":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","default":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","default":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","default":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","default":"./dist/widgets/index.js"}},"gitHead":"99f5e24ef28f038c660681096e45cf238646a11f","scripts":{"build":"tsc","clean":"rm -rf dist","watch":"tsc --watch","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.1_1770665055350_0.4667820359555541","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bmc-soft/keycloak-auth","version":"1.0.2","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.2","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"0756d9d0b20e254051789b1c9f3e12158dc03af4","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.2.tgz","fileCount":303,"integrity":"sha512-ltfzHDAKqY5CQ9D0lZ/XDdyL9VhzPzAari5r04FV+H5Pt2GgagSy7eQneI29eECJ+2RpoxxlZy5ZQA38JJ+iZQ==","signatures":[{"sig":"MEUCIBFDUigtsU4KZWifsciquTjlG/ID6zcYT/oanLwTYQi9AiEAooJticUUVW3+vXApoReGXMIZ7bdICM37sgbwgmnhUo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":323863},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","default":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","default":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","default":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","default":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","default":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","default":"./dist/widgets/index.js"}},"gitHead":"70eeb64668756c4aea20242dd29525911e7eb07d","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.2_1770665632746_0.8079416433563171","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bmc-soft/keycloak-auth","version":"1.0.3","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.3","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"cab81eb5406c77b293163d6e62e4e047d8f43438","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.3.tgz","fileCount":303,"integrity":"sha512-Ug5r1rLQfZNlqjm7Qstj0mFrLq5Yhxub2rmFVV0hBH6aUYy6LE9UgavEEUE8u40AlrcJ/RXs4aMmbsAX8QJWTw==","signatures":[{"sig":"MEMCICbd8lwuuxopTj3pUvcTqMKBdPEG8WokK2XL1TPOpVBGAh9Uc5q5SwIWbjkMMxBitKuN+nl6rODTp5SDdV/16ts9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324779},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"18b75f3b97b8907eca91de3191418bf4c0ac71e7","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.3_1770667045358_0.579093447266174","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bmc-soft/keycloak-auth","version":"1.0.4","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.4","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"a8778cbb00c8c65caab1ee99e674fc8ce6e4a325","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.4.tgz","fileCount":305,"integrity":"sha512-adaVRncJ6B1Xokw9t5XjDiuRm2REcNz8GLwosuPdxUjJEXWmGVKl6i9hrMZUQ/5sI1VzqBPnhkcLnpD2Jb9+lA==","signatures":[{"sig":"MEUCIQCZK0fEuvCzSxiEcGQFQ6lFHYyVbafbpNAAD1BLgXY1AAIgAtIqUK7piEEhBmMOSBUfLYXt2OJHmEa9qsh24njWb/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417430},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"7d1a6b74f45cfedd3629679197caa26492fdcb0a","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.4_1770667560027_0.09986750005620015","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bmc-soft/keycloak-auth","version":"1.0.5","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.5","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"170db076a093d8b0b85ec14c83b5b9a5ecc0ad06","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.5.tgz","fileCount":305,"integrity":"sha512-aiJN/tL7yDBek+6Zbizd5EAJTJB6UBzxR72T4Lkz0sBqB1UikWNxGpLdiOPYF6aygBX4tqCZR6mbUXaHaRVluA==","signatures":[{"sig":"MEUCIQDqRJCprp+rV9N2xMTMlHtLSxSHuxbj/fHTPBjknOCUtAIgaATLrjANKHP6oMKUcWgfQeXabZUMGfvhQQzSCrCxfnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":416388},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"d1485bd61bb9cbd98c3ad5e2afe0be9c52b9111e","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.5_1770707877324_0.39756475446824857","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bmc-soft/keycloak-auth","version":"1.0.6","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.6","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"f29541d665fbb443528cf47e69e2ed2231d09190","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.6.tgz","fileCount":305,"integrity":"sha512-MPrL3PSyzIBpVDL7u2sB2AUdAaHswiijejdXC43dfH27kJcAvElT1rB2yUhwFMr2zBA9IcwVehvikWNr281ykQ==","signatures":[{"sig":"MEQCIBnykbdU4d6B3RTiGe6w0AxnB6iLnsiSyYt1LQPUsZHTAiAI9F9moNtz7EYtDLubkqfxbjZR78vJSMB8yekFzmmbbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":416663},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"f35d1981a1fb47e21bf498f7485a37812a3a93a4","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.6_1771318650414_0.8442364771621129","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@bmc-soft/keycloak-auth","version":"1.0.7","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.7","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"fc55785c8abf9a758a9a1933c95f9596be7f44d8","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.7.tgz","fileCount":305,"integrity":"sha512-gaBjyAFqEOiJFLpL5x92+yUmqmE8fOOQ0NRe8sFa01AqCFwRDft1UQdvcFf9cPMqXzsd13hXKkECUFMJCFH0og==","signatures":[{"sig":"MEUCIGYUvkB5YZUIws01KCiSnbXegu2ki3IySHESpQ5g+C0iAiEA9QOkjZogrCRxBbNnA63ervbGFWLjxkvMvomjk9VUqLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":416464},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"471c6daa306974f70e79b289de2202a1d7fdc741","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.7_1771404340655_0.6917880456658207","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@bmc-soft/keycloak-auth","version":"1.0.8","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.8","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"5a5d124e38d75bd4668412c4aa789f00215b90dc","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.8.tgz","fileCount":309,"integrity":"sha512-vYtqzby/FIEtZ/vlIyecJF/20mkiQ3GcbRpxKQvduRTLiULYm9Gxliwjp/5WCOQXeYh9QwvCKFx4puy91NUXEQ==","signatures":[{"sig":"MEQCIAYIf8vqEq/d7d2fMnZYZYZLmlK4Hdo7FXMyPChm9ZOIAiAHH6JAn3vrtreDFmgmYcIiOkCIp4g1jaV1I3lcDeEMkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420599},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"275e3c2777b868fc776ff30005488414dbf5fdaf","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.8_1771433987679_0.028931537093543236","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@bmc-soft/keycloak-auth","version":"1.0.9","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.9","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"f16c54ccb5d51cd49f6633318a2ce9ecd6f31a93","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.9.tgz","fileCount":305,"integrity":"sha512-QjgWF0KzE1RH2NVIBPh5VcP1B8w+YmMzSH29Tk7RtCy91dkBggr6OSe+/L88b4QsbsvIpTYu9eWQJ4d6Slshyw==","signatures":[{"sig":"MEUCIQCnJEJmbgQWRHWcq1wptE8JBhJrxRiSazwE469qH6auuwIgClt6McGA9I0wL3wUqyN9rYXmawe7SnMhe57VnEyGWIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":417288},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"06f90d1f51753d9ae7c1ae96f1b4f2cf28f99e9e","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.9_1771939487289_0.8540675114255196","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@bmc-soft/keycloak-auth","version":"1.0.10","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.10","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"21bea67a4b9581fed1dabdd7f6d8a56ce04acf7b","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.10.tgz","fileCount":309,"integrity":"sha512-b2LHrp1GSto+NGdc+8jCP6ZvFULrGG52lfxf71Qch01AAw4zSKIQj+P0gaSy/1TDFKW1GAh4MGqf7+I6Ei/D2w==","signatures":[{"sig":"MEQCIEg9RtC9ASiVk78XWPg17Qs+T+H0XPimaoQiHPT5OjdoAiB+C1vg2WSFnwtw66XZvs3N0r47bNFrHGFhy8MgPeBcWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422113},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"eec43a5970b5f358d37f1b5f16eff716cf997591","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.10_1772014882504_0.27517683410348037","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@bmc-soft/keycloak-auth","version":"1.0.11","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@1.0.11","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"3b0eb42641c157cc5b7ba975168e33d4e717ea9c","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-1.0.11.tgz","fileCount":309,"integrity":"sha512-P+pG+CQB6r5WXICGGbind3Evf76zHyWmht4lb2BWiiDPg2x4w9/nwIM7hPjEbC5zuIOlWEgHiqgwNIW5vDSDFA==","signatures":[{"sig":"MEUCIQDsHL8VnvcrC1mHFb5QYbXtCLHWs+ABmDkMsusMz1QGbwIgJSXAQVMNJqGhmkDbCYYYyIBXkMXcu6LtMECRV3MyC0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421945},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"eef216d4dc769db461fdded1ff85e3875052b8f0","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_1.0.11_1772030948970_0.5557208859419758","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@bmc-soft/keycloak-auth","version":"2.0.1","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.1","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"175b238c97485624addca692b29358f1d2d1fb2b","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.1.tgz","fileCount":313,"integrity":"sha512-/GPns//2VPo2TX3V7gXXqV28HREC+R3BMLBIaFABHUqI/LiYfnyX4rT74GGQ4XH4jAISpgTcDzTSMKM6DyBo1w==","signatures":[{"sig":"MEUCIDkqMWtYoabRQvOrok+9Imw5wDq7qu296l7QivRzUUodAiEAn45oW4I9Bj70xss+30/OD+XQKn7LvjAoMc3f4HEWzEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":458919},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"35bbe26ba1b0ff027808c57ab88a1021a8ebad4d","scripts":{"build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.1_1780560593549_0.7037059533040713","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@bmc-soft/keycloak-auth","version":"2.0.2","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.2","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"927f49770b25c2fe5a6739bdab9416a7206bfe13","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.2.tgz","fileCount":313,"integrity":"sha512-WyJwk9YWgiRFDto/jsHdjHsgsb+K9SJEPl5mTz1mYnAJYykXpwdPpoYH10ehdgNefT28+AcCUAfLKfditvDDvg==","signatures":[{"sig":"MEYCIQDoesPSitJAuIb4t3qsfiY4yKkbCQyrM/POOD+IdL8H4AIhAJ73KhQiGbEwJvprobVmL/gzOPKdOEDaW82IaoauqtwN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":471188},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"45b3db1553b8ccb9aceec60f25bf9a5365d6c7a3","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.2_1780594000457_0.09992705465381335","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@bmc-soft/keycloak-auth","version":"2.0.3","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.3","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"d5d2b2570888a2f65d8ceb8810e4f4484e2de991","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.3.tgz","fileCount":333,"integrity":"sha512-KlHrxDG15qqZiWePWQC36B67HMtDEwSFlfX264lFCbcag2ahwAm76sb6Z25Q6unqdmf9jSK2nI13eqlX0s/XhA==","signatures":[{"sig":"MEQCIBzhdikV1FyZPy3FfUkTxGXEFrrPEyNy63MXDlsJFYBbAiAKrbbse3T4ns+gn9xbssT/BWwvQi9I7aweSM+VqnuMhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":519982},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"726e6d047b7ca1838449766675a4542dec5c6d34","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.3_1781080167938_0.9973254099332189","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@bmc-soft/keycloak-auth","version":"2.0.4","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.4","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"ef7a93197ae0d5041ede7cf47a1e1307101321cd","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.4.tgz","fileCount":333,"integrity":"sha512-CnKTkH5PfNcof2y1ncMwjcqRwkQhtK+hCjEahyreAX9Tf8B7qypmjov0h2+HntSB76TNayVEbvhhbu8+Qttwhw==","signatures":[{"sig":"MEYCIQC8ps0LFHUb/Y78P5YqFDvN8R30W/2QaM5ri70XRFUrawIhAMAXtj5bK7T+Pk10S4LZnZQs9JribjJagN3IgX2bWmh5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520849},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"7d83d7d6f5aa28c7ec0db05783bbddec51ee20cb","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.4_1781080717767_0.6374548068612818","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"@bmc-soft/keycloak-auth","version":"2.0.5","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.5","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"236533108403280c668121a0036df44667615dbc","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.5.tgz","fileCount":333,"integrity":"sha512-J259TQqU9CWA+4O9GVEUVFzOO8ul++KGncP9PpIjZsN6srcC1b/jYQvkXWnNMYJ0ltot1DP3Pg3PN1TbiMQR4g==","signatures":[{"sig":"MEUCIQCrFj8CVX6SWYj7JrqCnx5L+p77j8F06DD08eqIUcZmBAIgd5umxkFghxUKB/pCNPcoj0wFX4kv7d1DoaYkTsHchqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520541},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"994a3d9c3ec98c76ed58b18a53a9aecaae471894","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.5_1781081109264_0.3446810343627109","host":"s3://npm-registry-packages-npm-production"}},"2.0.6":{"name":"@bmc-soft/keycloak-auth","version":"2.0.6","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.6","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"caa74dadd969a59d9f50979359170d6339b82b38","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.6.tgz","fileCount":341,"integrity":"sha512-qUTcFH5EQ44rgZREcjOvedMuX1cGmr6kKnSvFa9uSkokXeWLtfTkE6tlnmrEjUeX9+gEgKxrQAlSFoRsC2pQsQ==","signatures":[{"sig":"MEUCIA1BVq+4zX1G3Bw82bloIImbsoGFj95OhJIiRP+FEbMOAiEArjVAelQ8jEd+7AQnc60IKvX5KLNI8qXU9j2WS+zDLqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":553467},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"994a3d9c3ec98c76ed58b18a53a9aecaae471894","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.6_1781109480837_0.26089653856311434","host":"s3://npm-registry-packages-npm-production"}},"2.0.7":{"name":"@bmc-soft/keycloak-auth","version":"2.0.7","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.7","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"179b0bb9719bcdba117b77e93298e181adea9c36","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.7.tgz","fileCount":341,"integrity":"sha512-0As/ngnp4ISwXMIihcjE7jIPGFhsWy6F+mBttFrNz1slni7hi3LeII6Ndka9Om+7alp97yo/2Hl9MrmZK+Y4OQ==","signatures":[{"sig":"MEUCIQC1BiawiGeUDuuSj+KT5fzAmELXzYSsMBSIBQQ84nyThgIgCcpCA9t9LVlWNP4ff4OQ/7ULQxeyUXpg6+W2sszdLdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":551117},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"a9b9a2915b33e134e31635df80876061f63b242a","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.7_1781129036548_0.8648436111862716","host":"s3://npm-registry-packages-npm-production"}},"2.0.8":{"name":"@bmc-soft/keycloak-auth","version":"2.0.8","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.8","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"89b1be4825a5d3f50b02908a403ac0da23ccb344","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.8.tgz","fileCount":341,"integrity":"sha512-clg3owJT/VFSBr89ZOoETOBEmreJnR8lNQQiFGgHFX4W7EV1cRq3FRiWuU+59tkszghKLXBQsozZz/AJNgt7vw==","signatures":[{"sig":"MEUCIQDlAHhhandXDOvCoRaCDvJQqZk7U6sWBkijMWmpkzffCwIgH2LUuOYwpGnJoixZjY3kD+zHysQB5H5mOuUH7QFZzaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":551675},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"23c5b57677bfd7776b66b956373211c4a01e2e2e","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.8_1781683945815_0.8422028336049199","host":"s3://npm-registry-packages-npm-production"}},"2.0.9":{"name":"@bmc-soft/keycloak-auth","version":"2.0.9","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.9","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"cc2adeb41399df71f9d9644c087db1dd7ffecc26","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.9.tgz","fileCount":341,"integrity":"sha512-I0NXGufIGiiLJt6bEW3ELkW6T5VVhE7KHVUKN9hWUXI+2gSYrZYS+tH5bThW6dSfsy2Z8iO0w7mL6yBqDlw87Q==","signatures":[{"sig":"MEYCIQD9zjFBNjiQvlb2DHoTPqmoT719WhcgSSBS2nSVNmEwQQIhAOLhdNpaDtImm870PNg4S+LCjU0UWbHJ8tCPUFVrMmqu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":554092},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"23c5b57677bfd7776b66b956373211c4a01e2e2e","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.9_1781820590267_0.8124303084304174","host":"s3://npm-registry-packages-npm-production"}},"2.0.10":{"name":"@bmc-soft/keycloak-auth","version":"2.0.10","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.10","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"e66e4e883c1b3e48eafca420d3307872a9b1da67","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.10.tgz","fileCount":341,"integrity":"sha512-Lmmisr6LhPCFUpcBB7Cx+zBFMt5YDB8Xnn8qZDi/8A0cqMTkYQr6hC2l4N1tkwEfEqZR59UA2cWqBEH3qSUcaw==","signatures":[{"sig":"MEUCIQDJTJ5L1lONfnvJeJbLIkV3FL0BZvKVWzyoCAJUalZndwIgNPVB+4NbSWNYBqOVYllCfsPoyVkFOulJs+YD3jK2t0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":552131},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"b8bbc2bfffe3326d3547c8fea60feea0ba2af092","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.10_1782145675803_0.5821422713692439","host":"s3://npm-registry-packages-npm-production"}},"2.0.11":{"name":"@bmc-soft/keycloak-auth","version":"2.0.11","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.11","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"2622e5e7b95172367b8f7287cc371e6f28e7f79a","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.11.tgz","fileCount":341,"integrity":"sha512-IUFqBDMBcrpCxZ8VNN4n1pZntGTnz8+wjISY03xEO3e0z0DGyVfOsGAoXqJ9opB2qxgG/s1u4ijiHhylRk7D4g==","signatures":[{"sig":"MEUCIDCwDH6p8LwFBcG6v8DqjyvwIBNePnHzlydqh8K8dRTXAiEAjMlyiZORm4axl3PUSRBxTRZzqKuKj0bXs3dp/LIDOQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":554994},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"c1ca2cec1e11007154830f831056cb15afd0df45","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.11_1782148454348_0.11082026925898614","host":"s3://npm-registry-packages-npm-production"}},"2.0.12":{"name":"@bmc-soft/keycloak-auth","version":"2.0.12","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.12","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"debf933d19a3e983006e4b217a401a42f90ed649","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.12.tgz","fileCount":345,"integrity":"sha512-RCm8Eq8Kq/q/o3H1/GEnidfGZrFsFUj8OLGd1JuRRxa/W3N5Ecr3vowA0r8jSw3Pl5tVUwi2iDPNzh4Eeo5LxQ==","signatures":[{"sig":"MEUCIByr102wEYHEQFg7khtxCX52kjEJW6qbows5YJRzM3ZRAiEA8QVMfpOflDLwJjJSUsxaIOb248Czm6lL/9hUHstnQ10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":559038},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"c1ca2cec1e11007154830f831056cb15afd0df45","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.12_1782197742409_0.1372996833096729","host":"s3://npm-registry-packages-npm-production"}},"2.0.13":{"name":"@bmc-soft/keycloak-auth","version":"2.0.13","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.13","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"197e544dafa9f9cc2dba9bb8a3e3e3ca6a24aada","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.13.tgz","fileCount":345,"integrity":"sha512-J2AdaAsh/Lry34VzNj7SQtFvNraFElKyExUu+sHWY9iodjlrZPcG/pr19KYuW1MiqSOW4KwDj7HKyzNZpFTl0A==","signatures":[{"sig":"MEUCIQC2R0ieNoLLLcARAPZYj5iOUi45ag4PUg2u75bR3Knd7AIgGQU4cayYh5tH9ieLLnEHtIq6lEPwTvClMfOJvqefh3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":569054},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"c1ca2cec1e11007154830f831056cb15afd0df45","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.13_1782213235851_0.821104466701692","host":"s3://npm-registry-packages-npm-production"}},"2.0.14":{"name":"@bmc-soft/keycloak-auth","version":"2.0.14","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.14","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"98ae8c7053fef8b62bd8092012aa394848aefe7d","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.14.tgz","fileCount":345,"integrity":"sha512-abC4LTtHLE3Xc6wKLFgoh3B8xMXE9MiOQZlu74NSmaKOgzAWuQRWYIZFbytfqk9NBK9Matoisvv0ZAtf3ctVgg==","signatures":[{"sig":"MEUCIQCHxuyaDbdE6RemO4u2Zqvn7YXl4jrSk+86EcxgCykpJwIgVESpX+eKBtk1BIcTXvjVGK8pXaiBq1N5YKugvW72QHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":578097},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"c1ca2cec1e11007154830f831056cb15afd0df45","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.14_1782905697622_0.6333369145515992","host":"s3://npm-registry-packages-npm-production"}},"2.0.15":{"name":"@bmc-soft/keycloak-auth","version":"2.0.15","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.15","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"ea9d352e2277e8ccf7ddbba4fc0ecd42daacd8dc","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.15.tgz","fileCount":345,"integrity":"sha512-ckl17prCLimsjFey4JSI1SkjSE4555bNenQVcuv374NJPYEQ7LuFiq0DoKr9qlvVtJoOkbtbvAgllPBSsmAKoA==","signatures":[{"sig":"MEUCIQD5qvuCsbqy975sI+zhab7PMHW2C+1BqqBvarOCIzfNRgIgEsC11WfmO1Fpo+og9zaJlgWjFDnQkJHCcA0DDntkG+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":577764},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"c1ca2cec1e11007154830f831056cb15afd0df45","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.15_1782928224400_0.47863698157066703","host":"s3://npm-registry-packages-npm-production"}},"2.0.16":{"name":"@bmc-soft/keycloak-auth","version":"2.0.16","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.16","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"0c93ad65f5d6ea08b2768e79925f19808a8c1af3","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.16.tgz","fileCount":345,"integrity":"sha512-m1H9PJ3+ZIcjG23PFEB2RwW7UskEYeEyP00j5OB5spTJxp7u7yB7+LGAiNG05FHyHurr8aYYVaN5vESm5GGRpw==","signatures":[{"sig":"MEUCIQCRCqAoUokdnKhE+hco0+MXR3AxYc9ZzTA4VGs1Un//5AIgSLbpYIhIR9EXKvTFDQ66OxzbWRCGaRVPpsDM4mqFVTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579202},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"c1ca2cec1e11007154830f831056cb15afd0df45","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.16_1782935154994_0.4514921250231172","host":"s3://npm-registry-packages-npm-production"}},"2.0.17":{"name":"@bmc-soft/keycloak-auth","version":"2.0.17","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.17","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"968664199bac2ffd61f0eaa95d83a4bcccb10193","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.17.tgz","fileCount":345,"integrity":"sha512-gYWTzeeiiRK4zHUBEznjpzJqwMp42iaS2QDtGx4ujYfy2V3yoQ84MxoxWazqvCvkuYaxHowd/UOeN1aTxg+76Q==","signatures":[{"sig":"MEUCIQCgAd4Dc7hlqJwe2eeXOPXE0gAb4xoCct1q7Tyup3OZCQIgB6lWD8xDsq+gEN/uHKoO6WH4y0k9vsustRQsFo3CsFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579670},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"c1715a34e1b857666a3e62ddb26165c70eef8b98","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.17_1783005472301_0.8594812877182996","host":"s3://npm-registry-packages-npm-production"}},"2.0.18":{"name":"@bmc-soft/keycloak-auth","version":"2.0.18","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.18","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"b15f340919037e371930255c5e06263f0d90d100","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.18.tgz","fileCount":345,"integrity":"sha512-u7OvSF2UAlaxqzDpDXZiDF+JNCDyInCDlAnkBPRtdt6b9Mbn4L0xK/wrS/1qJXx7cIPgl3ql9BAoYGfz5/SN0Q==","signatures":[{"sig":"MEYCIQCzX15qXfdQOo0t7vB7ANLgIRo8/2V2xlIbRXJhiheaRgIhAKfnPSrI4EewlpRMtS4KRaK134vkqHiaxQH99ptSZ6qG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579714},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"8059a8216a4e7c029bccec5b190e3af73ebd5872","scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.18_1783943471089_0.7732930498186794","host":"s3://npm-registry-packages-npm-production"}},"2.0.19":{"name":"@bmc-soft/keycloak-auth","version":"2.0.19","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.19","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"82f4d748ee7eaa0344acf9a00d5d09ae26cb064b","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.19.tgz","fileCount":349,"integrity":"sha512-1u4Sch7aeZhHHmK97J3knqXDcOOWMkDbS76hUTGVTyg7oYtCBZbhxG82IdC/tq457EqPYFr569i6O4XMom5c7w==","signatures":[{"sig":"MEUCIQCG0uh+AOmoVPNhOcBOMjIwZqr/q9SPU0qhHa91q6ZMzAIgfOvnJ4C7bJAxvSWzzzW0HsW/D2CYVKfpCGJg4w4A7h4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599773},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"scripts":{"test":"node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/keycloakConfigStability.test.cjs && node tests/reauthStateMachine.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.19_1784208335219_0.7628609987647945","host":"s3://npm-registry-packages-npm-production"}},"2.0.20":{"name":"@bmc-soft/keycloak-auth","version":"2.0.20","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.20","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"d47774306e7fce4c06703795dad64c259b5b7316","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.20.tgz","fileCount":361,"integrity":"sha512-hKVbequV6K07TK3YJ0+RsJ7sX1DR5CO9mL9HBq7PCvS+V0xtkJULNDJyFS+QC8qVZXQkHA7OM5NXNbivg5oZIg==","signatures":[{"sig":"MEYCIQDCtp0NPo/abN6EHGU+rWGnP7ngAg07/VV7i+W+gcVEIwIhAJw9a3X4ek9OS7q2KDosW8Uaif+PdLlpxv+fTUhOTU1B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":618987},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"scripts":{"test":"node tests/authLayoutMetrics.test.cjs && node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/keycloakConfigStability.test.cjs && node tests/reauthStateMachine.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.20_1786167820387_0.8819940743184813","host":"s3://npm-registry-packages-npm-production"}},"2.0.21":{"name":"@bmc-soft/keycloak-auth","version":"2.0.21","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.21","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"a3a3ee31b9b1a03692c414cc4e16d5f60b1caf2b","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.21.tgz","fileCount":361,"integrity":"sha512-l1bD1NBXcGanof6QppFSc0IJ/bnfZL1ACRKbG+w6s6UUhISIwoMb11MXDptzmf0IJOp+V1aSeWdmRKzG3PqT8A==","signatures":[{"sig":"MEUCIDQqV442JTntUR9hb6bf2fXnoJdAiwMrOF8llXez99qYAiEAhjFDU0mPCi5mBPn0TsUTPvgOayj2W5yQO9WgewYrus4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621981},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"58a900be25c36f4787a29e3c2fd434dbd4befc18","scripts":{"test":"node tests/authLayoutMetrics.test.cjs && node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/keycloakConfigStability.test.cjs && node tests/reauthStateMachine.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.21_1786518173284_0.6601567269037616","host":"s3://npm-registry-packages-npm-production"}},"2.0.22":{"name":"@bmc-soft/keycloak-auth","version":"2.0.22","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.22","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"3f7bb878381ff700c28d07e78140c74e0b9947a6","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.22.tgz","fileCount":361,"integrity":"sha512-F4e/VJFjlx65j5fjJuFaJoDDv5RNyicRuonI9XGNH2DtIKmflF3DPwKyu0lhVD6IEeEQWyaylfzXf98oq/jm+A==","signatures":[{"sig":"MEUCIDg+rho9VxSAUHB7R6xFrYYNCGPkfw5Q3Ij4YY7uJfMBAiEAj1nmHA0J5xvsnYrGV2wvFrqxVMnMh8cXOYYb8Zng8rw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":626520},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"gitHead":"314d724445778b8701cd3535b44881478b2fb3cd","scripts":{"test":"node tests/authLayoutMetrics.test.cjs && node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/keycloakConfigStability.test.cjs && node tests/reauthStateMachine.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.22_1786524079449_0.693663069733045","host":"s3://npm-registry-packages-npm-production"}},"2.0.23":{"name":"@bmc-soft/keycloak-auth","version":"2.0.23","keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","_id":"@bmc-soft/keycloak-auth@2.0.23","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"dist":{"shasum":"3ccf679b75cce354b5245ae8805140227afdaeb2","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.23.tgz","fileCount":369,"integrity":"sha512-rJCOieKRodzyGMStge59sgMzf86/yd65TVBv5qIB9HKMuqKRrCm9p3MsJDGPEb0VoO0VwBLP1Z3VaOKkDo8N/Q==","signatures":[{"sig":"MEQCICFbf94i+Nuj4/ScSAO9d4qGQWCHdiRAMpNRwD/tduAzAiApMjdLeYJtO4+ypjsOjy34yCq6C1Mrm5Drq/oGazQ9KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":659727},"main":"./dist/index.js","_from":"file:/tmp/keycloak-auth-2.0.23.TtSjgD/bmc-soft-keycloak-auth-2.0.23.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js","react-native":"./dist/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","import":"./dist/axios/index.js","default":"./dist/axios/index.js","require":"./dist/axios/index.js","react-native":"./dist/axios/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","default":"./dist/hooks/index.js","require":"./dist/hooks/index.js","react-native":"./dist/hooks/index.js"},"./context":{"types":"./dist/context/index.d.ts","import":"./dist/context/index.js","default":"./dist/context/index.js","require":"./dist/context/index.js","react-native":"./dist/context/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","import":"./dist/screens/index.js","default":"./dist/screens/index.js","require":"./dist/screens/index.js","react-native":"./dist/screens/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","import":"./dist/storage/index.js","default":"./dist/storage/index.js","require":"./dist/storage/index.js","react-native":"./dist/storage/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","import":"./dist/widgets/index.js","default":"./dist/widgets/index.js","require":"./dist/widgets/index.js","react-native":"./dist/widgets/index.js"}},"scripts":{"test":"node tests/authLayoutMetrics.test.cjs && node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/refreshSafety.test.cjs && node tests/tokenStorageOrdering.test.cjs && node tests/autoRefreshLifecycle.test.cjs && node tests/axiosRefreshCleanup.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/keycloakConfigStability.test.cjs && node tests/reauthStateMachine.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs","build":"tsc","clean":"rm -rf dist && rm -f tsconfig.tsbuildinfo","watch":"tsc --watch","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"_resolved":"/tmp/keycloak-auth-2.0.23.TtSjgD/bmc-soft-keycloak-auth-2.0.23.tgz","_integrity":"sha512-rJCOieKRodzyGMStge59sgMzf86/yd65TVBv5qIB9HKMuqKRrCm9p3MsJDGPEb0VoO0VwBLP1Z3VaOKkDo8N/Q==","repository":{"url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git","type":"git"},"_npmVersion":"11.7.0","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","dependencies":{"crypto-js":"^4.2.0","@types/crypto-js":"^4.2.0","react-native-keychain":"^8.1.0","@react-keycloak/keycloak-ts":"^0.2.4","react-native-get-random-values":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"axios":">=1.0.0","react":">=18.0.0","typescript":"^5.3.0","@types/react":"^18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","@types/react-native":"^0.72.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0"},"peerDependencies":{"axios":">=1.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-svg":">=14.0.0","lottie-react-native":">=6.0.0","@gorhom/bottom-sheet":">=5.0.0","react-native-webview":">=13.0.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/keycloak-auth_2.0.23_1787214658167_0.3786606228067526","host":"s3://npm-registry-packages-npm-production"}},"2.0.24":{"name":"@bmc-soft/keycloak-auth","version":"2.0.24","description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","main":"./dist-cjs/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","react-native":"./dist/index.js","import":"./dist-cjs/index.js","require":"./dist-cjs/index.js","default":"./dist-cjs/index.js"},"./screens":{"types":"./dist/screens/index.d.ts","react-native":"./dist/screens/index.js","import":"./dist-cjs/screens/index.js","require":"./dist-cjs/screens/index.js","default":"./dist-cjs/screens/index.js"},"./widgets":{"types":"./dist/widgets/index.d.ts","react-native":"./dist/widgets/index.js","import":"./dist-cjs/widgets/index.js","require":"./dist-cjs/widgets/index.js","default":"./dist-cjs/widgets/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","react-native":"./dist/hooks/index.js","import":"./dist-cjs/hooks/index.js","require":"./dist-cjs/hooks/index.js","default":"./dist-cjs/hooks/index.js"},"./axios":{"types":"./dist/axios/index.d.ts","react-native":"./dist/axios/index.js","import":"./dist-cjs/axios/index.js","require":"./dist-cjs/axios/index.js","default":"./dist-cjs/axios/index.js"},"./context":{"types":"./dist/context/index.d.ts","react-native":"./dist/context/index.js","import":"./dist-cjs/context/index.js","require":"./dist-cjs/context/index.js","default":"./dist-cjs/context/index.js"},"./storage":{"types":"./dist/storage/index.d.ts","react-native":"./dist/storage/index.js","import":"./dist-cjs/storage/index.js","require":"./dist-cjs/storage/index.js","default":"./dist-cjs/storage/index.js"}},"scripts":{"build":"tsc && tsc -p tsconfig.cjs.json","watch":"tsc --watch","clean":"rm -rf dist dist-cjs && rm -f tsconfig.tsbuildinfo tsconfig.cjs.tsbuildinfo","prepack":"npm run build","prepublishOnly":"npm run clean && npm run build","test":"node tests/authLayoutMetrics.test.cjs && node tests/authPageLoaderLayout.test.cjs && node tests/fullscreenLoaderLayout.test.cjs && node tests/sessionPolicy.test.cjs && node tests/publicApiExports.test.cjs && node tests/tokenErrorContract.test.cjs && node tests/tokenRefreshSingleFlight.test.cjs && node tests/refreshSafety.test.cjs && node tests/tokenStorageOrdering.test.cjs && node tests/autoRefreshLifecycle.test.cjs && node tests/interactiveRecovery.test.cjs && node tests/axiosRefreshCleanup.test.cjs && node tests/terminatedRefreshCleanup.test.cjs && node tests/keycloakConfigStability.test.cjs && node tests/reauthStateMachine.test.cjs && node tests/authPatchRegression.test.cjs && node tests/successAuthAnimation.test.cjs && node tests/refreshAdmissionPolicy.test.cjs && node tests/refreshFlight.test.cjs && node tests/releaseArtifactContract.test.cjs && node tests/releaseRuntimeContract.test.cjs","typecheck":"tsc --noEmit"},"keywords":["bmc-soft"],"author":{"name":"BMC-Soft Team"},"license":"MIT","peerDependencies":{"@gorhom/bottom-sheet":">=5.0.0","axios":">=1.0.0","lottie-react-native":">=6.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-reanimated":">=2.8.0 <5","react-native-safe-area-context":">=4.0.0","react-native-svg":">=14.0.0","react-native-webview":">=13.0.0","@react-native-async-storage/async-storage":">=1.17.0"},"peerDependenciesMeta":{"axios":{"optional":true}},"dependencies":{"@react-keycloak/keycloak-ts":"^0.2.4","@types/crypto-js":"^4.2.0","crypto-js":"^4.2.0","react-native-get-random-values":"^1.11.0","react-native-keychain":"^8.1.0"},"devDependencies":{"@gorhom/bottom-sheet":">=5.0.0","@types/react":"^18.0.0","@types/react-native":"^0.72.0","axios":">=1.0.0","lottie-react-native":">=6.0.0","react":">=18.0.0","react-native":">=0.72.0","react-native-reanimated":"^3.19.5","react-native-safe-area-context":">=4.0.0","react-native-svg":">=14.0.0","react-native-webview":">=13.0.0","typescript":"^5.3.0"},"sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git"},"homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"_id":"@bmc-soft/keycloak-auth@2.0.24","gitHead":"91d6b16eb6ada0d47296225b26250c0edd631332","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-7YBduH61jGv4p4T9R+0Rai5zp8KFHxN3WVNs/V2zyraS8W2lLmIDGFFfXkmNslRXOPAbx+x4WOIOGs7UcHr3MQ==","shasum":"9c1eb593b81b7c2d98aaaf8e832d6caae877a015","tarball":"https://registry.npmjs.org/@bmc-soft/keycloak-auth/-/keycloak-auth-2.0.24.tgz","fileCount":581,"unpackedSize":1875992,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCuTDM1IzmPjp6EZFBSQKL0l22yZ4f+OjGukXXEhWcAUQIhALU3QlRnA15FvOb7EMBxg+Nb4Cko5y4YVdeboi54IBRX"}]},"_npmUser":{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"},"directories":{},"maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/keycloak-auth_2.0.24_1787722977767_0.9989697681884073"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-09T19:11:23.316Z","modified":"2026-08-26T05:42:58.134Z","1.0.0":"2026-02-09T19:11:23.575Z","1.0.1":"2026-02-09T19:24:15.517Z","1.0.2":"2026-02-09T19:33:52.890Z","1.0.3":"2026-02-09T19:57:25.506Z","1.0.4":"2026-02-09T20:06:00.215Z","1.0.5":"2026-02-10T07:17:57.466Z","1.0.6":"2026-02-17T08:57:30.561Z","1.0.7":"2026-02-18T08:45:40.812Z","1.0.8":"2026-02-18T16:59:47.834Z","1.0.9":"2026-02-24T13:24:47.492Z","1.0.10":"2026-02-25T10:21:22.672Z","1.0.11":"2026-02-25T14:49:09.120Z","2.0.1":"2026-06-04T08:09:53.694Z","2.0.2":"2026-06-04T17:26:40.653Z","2.0.3":"2026-06-10T08:29:28.094Z","2.0.4":"2026-06-10T08:38:37.891Z","2.0.5":"2026-06-10T08:45:09.398Z","2.0.6":"2026-06-10T16:38:00.976Z","2.0.7":"2026-06-10T22:03:56.713Z","2.0.8":"2026-06-17T08:12:25.976Z","2.0.9":"2026-06-18T22:09:50.452Z","2.0.10":"2026-06-22T16:27:55.930Z","2.0.11":"2026-06-22T17:14:14.529Z","2.0.12":"2026-06-23T06:55:42.543Z","2.0.13":"2026-06-23T11:13:56.017Z","2.0.14":"2026-07-01T11:34:57.765Z","2.0.15":"2026-07-01T17:50:24.564Z","2.0.16":"2026-07-01T19:45:55.154Z","2.0.17":"2026-07-02T15:17:52.446Z","2.0.18":"2026-07-13T11:51:11.254Z","2.0.19":"2026-07-16T13:25:35.389Z","2.0.20":"2026-08-08T05:43:40.547Z","2.0.21":"2026-08-12T07:02:53.440Z","2.0.22":"2026-08-12T08:41:19.605Z","2.0.23":"2026-08-20T08:30:58.317Z","2.0.24":"2026-08-26T05:42:57.921Z"},"bugs":{"url":"https://github.com/waohwaohwaoh/keycloak_auth/issues"},"author":{"name":"BMC-Soft Team"},"license":"MIT","homepage":"https://github.com/waohwaohwaoh/keycloak_auth#readme","keywords":["bmc-soft"],"repository":{"type":"git","url":"git+https://github.com/waohwaohwaoh/keycloak_auth.git"},"description":"Production-ready Keycloak authentication package for React Native with optimized performance and security","maintainers":[{"name":"i.solovev_bmc","email":"il.solovyev@bmc-soft.ru"}],"readme":"# @bmc-soft/keycloak-auth\n\nГотовый к продакшену пакет аутентификации Keycloak для React Native.\n\n## Установка\n\n```bash\nnpm install @bmc-soft/keycloak-auth\n# или\nyarn add @bmc-soft/keycloak-auth\n```\n\nCanonical 2.0.24 release builds are packed as `bmc-soft-keycloak-auth-2.0.24.tgz`. Historical QA tarballs with suffixes such as `refresh-admission` or `reauth-biometry` are preserved for traceability, but they are not the canonical release artifact.\n\n> **Known security limitation.** Legacy security limitation: WebViewLogin can bridge plaintext username/password from the WebView into React Native state and the public onLoginSuccess callback. This behavior predates the offline-access refresh flow and is retained only for compatibility with existing hosts. New integrations should not consume the credential-bearing callback fields. Prefer an authorization-code/PKCE or token-only host flow, and treat the callback `url` as the only field needed for the library's code/token exchange.\n\n### Peer-зависимости\n\nСам пакет устанавливает свои обычные зависимости сам, включая `@react-keycloak/keycloak-ts`, `@types/crypto-js`, `crypto-js`, `react-native-get-random-values` и `react-native-keychain`. Устанавливать `react-native-keychain` отдельной командой не нужно.\n\nТребования к peer dependencies из `package.json`:\n\n| Пакет | Диапазон | Когда нужен |\n|-------|----------|-------------|\n| `react` | `>=18.0.0` | обязательный peer; используйте уже установленную совместимую версию host-приложения |\n| `react-native` | `>=0.72.0` | обязательный peer; используйте уже установленную совместимую версию host-приложения |\n| `@gorhom/bottom-sheet` | `>=5.0.0` | `LogoutConfirmSheet` и host-owned/custom bottom-sheet surfaces; built-in `ReauthBottomSheet` его не использует |\n| `lottie-react-native` | `>=6.0.0` | UI success-анимации |\n| `react-native-reanimated` | `>=2.8.0 <5` | UI; выберите версию, совместимую с RN baseline приложения |\n| `react-native-safe-area-context` | `>=4.0.0` | UI экранов и виджетов |\n| `react-native-svg` | `>=14.0.0` | UI и иконки |\n| `react-native-webview` | `>=13.0.0` | Keycloak login/logout WebView |\n| `@react-native-async-storage/async-storage` | `>=1.17.0` | только legacy/fresh-install cleanup; токены в нём не хранятся |\n| `axios` | `>=1.0.0`, optional | только экспорт `/axios` |\n\nСохраните уже установленные `react` и `react-native`, совместимые с вашим приложением. Для каждого отсутствующего UI/support peer выберите версию из указанного диапазона, которую поддерживает RN baseline host-приложения; не используйте незафиксированные latest-версии native modules, способные тихо изменить эту совместимость.\n\nПри необходимости отдельно добавьте подходящий для baseline вариант `react-native-reanimated`; не используйте для core-пакетов или Reanimated незафиксированную установку, которая может изменить совместимость приложения. `axios` (>= 1.0.0) — единственный optional peer: устанавливайте его только если используете экспорт `/axios`.\n\n```bash\nnpm install axios # только для setupAxiosInterceptors / KeycloakTokenProvider\n```\n\n`@react-native-async-storage/async-storage` используется пакетом только для legacy/fresh-install cleanup; access, refresh/offline и ID tokens остаются в OS Keychain. Не переносите токены в AsyncStorage.\n\n`@gorhom/bottom-sheet` требует `react-native-reanimated` и `react-native-gesture-handler`; последний намеренно не объявлен peer dependency этого пакета, потому что нужен только при использовании Gorhom bottom-sheet surfaces (`LogoutConfirmSheet` или host-owned/custom sheets). Built-in `ReauthBottomSheet` — обычный blocking overlay на React Native `View`, поэтому для него не нужен `BottomSheetModalProvider`. Настройте Gorhom по [официальной инструкции Bottom Sheet](https://gorhom.dev/react-native-bottom-sheet/) (в частности, `GestureHandlerRootView` для Gesture Handler v2) и завершите настройку Reanimated, если используете такие surfaces.\n\n### Нативная настройка\n\nПосле установки нативных пакетов для iOS выполните `npx pod-install` (или `cd ios && pod install`), затем пересоберите приложение. Для Face ID добавьте в `ios/<приложение>/Info.plist` понятное пользователю значение `NSFaceIDUsageDescription`, например:\n\n```xml\n<key>NSFaceIDUsageDescription</key>\n<string>Face ID используется для подтверждения входа.</string>\n```\n\nСм. также инструкции [react-native-keychain](https://github.com/oblador/react-native-keychain), [react-native-webview](https://github.com/react-native-webview/react-native-webview), [safe-area-context](https://github.com/th3rdwave/react-native-safe-area-context), [Lottie](https://github.com/lottie-react-native/lottie-react-native) и [react-native-svg](https://github.com/software-mansion/react-native-svg). React Native автоматически связывает поддерживаемые native modules, но pods и новая сборка всё равно обязательны для iOS.\n\n> Полифиллы для React Native подключаются автоматически при использовании пакета; отдельная настройка keycloak-js не требуется.\n\n---\n\n## Быстрый старт\n\n### 1. Оборачиваем приложение в KeycloakProvider\n\n```tsx\nimport { KeycloakProvider } from '@bmc-soft/keycloak-auth';\n\nconst App = () => (\n  <KeycloakProvider\n    config={{\n      url: 'https://your-keycloak-server.com',\n      realm: 'your-realm',\n      clientId: 'your-client-id',\n    }}\n    redirectUri=\"myapp://callback\"\n  >\n    <YourApp />\n  </KeycloakProvider>\n);\n```\n\n### 2. Экран входа\n\n```tsx\nimport { AuthPage } from '@bmc-soft/keycloak-auth';\n\nconst LoginScreen = () => (\n  <AuthPage\n    logo={require('./logo.png')}\n    onSuccess={(accessToken) => {\n      // Сохраняем access token в сессию приложения и переходим\n      Session.events.onLogin(accessToken);\n      navigation.replace('Home');\n    }}\n    onError={(err) => console.error(err)}\n  />\n);\n```\n\n### 3. (Опционально) Настройка интерцепторов Axios\n\nЕсли используете axios, задайте провайдер токенов (см. [Axios](#axios)) и вызовите `setupAxiosInterceptors` с `tokenProvider` и `onReauthRequired`. Провайдер обычно настраивается внутри KeycloakProvider после инициализации keycloak (см. [Интеграция](#интеграция)).\n\n### Требования к Keycloak client\n\nДля нового mobile flow настройте Keycloak client как:\n\n- **Client type**: public\n- **Flow**: Authorization Code / Standard Flow\n- **PKCE**: required, `S256`\n- **Scope**: разрешён `offline_access`\n- **Redirect URI**: только URI приложения, например `myapp://callback`\n\n`client_secret` не передаётся и не хранится в React Native приложении.\n\n---\n\n## Провайдер и конфигурация\n\n### KeycloakProvider\n\n| Проп | Тип | Обязательный | Описание |\n|------|-----|--------------|----------|\n| `children` | ReactNode | да | Дерево приложения |\n| `config` | KeycloakConfigWith2FA | да | `url`, `realm`, `clientId`; `clientId2fa` оставлен для legacy-сценариев, новый мобильный flow использует один public client + PKCE |\n| `redirectUri` | string | да | URI OAuth callback (например `myapp://callback`) |\n| `theme` | KeycloakTheme | нет | Цвета, шрифты, LoaderComponent, компоненты кнопок |\n| `onTokens` | (tokens: KeycloakTokens) => void | нет | Вызывается при изменении токенов (логин, refresh, logout) |\n| `offlineAccessEnabled` | boolean | нет | Запрашивать `offline_access` в login URL; по умолчанию `true` |\n| `backgroundReauth` | `{ enabled?: boolean; thresholdMs?: number; internalNetworkMode?: 'ip-host-is-internal' }` | нет | Настройки PIN/биометрии после возврата из background; по умолчанию `enabled: true`, `thresholdMs: 60000` |\n| `clientSecret` | string | нет | Секрет confidential client для legacy-конфигураций; для новых мобильных flows предпочтителен public client + PKCE |\n| `getClientSecret` | () => string \\| undefined \\| Promise<string \\| undefined> | нет | Ленивый резолвер секрета; имеет приоритет над `clientSecret` |\n| `initRecoveryStrategy` | `'none' \\| 'clear-tokens-and-retry'` | нет | Что делать, если init со stored tokens упал; по умолчанию `none` |\n| `deferStoredTokensUntilRefresh` | boolean | нет | Не передавать persisted tokens в `keycloak.init()` до локального PIN/биометрии; по умолчанию `false` |\n| `initOnLoad` | `RNKeycloakInitOptions['onLoad']` | нет | Поведение Keycloak при init; если не передан, явный login выполняют `AuthPage`/`WebViewLogin` |\n| `autoRefreshToken` | boolean | нет | По умолчанию `true` |\n| `autoRefreshTokenMinValidity` | number | нет | За сколько секунд до истечения вызывать refresh; по умолчанию `5` |\n| `onReauthRequired` | () => void | нет | Provider-сигнал локальной реавторизации: background PIN gate или **подтверждённая terminal** ошибка auto-refresh; не вызывается для каждой refresh-ошибки |\n| `onInteractiveRecoveryRequired` | (error: KeycloakRefreshOutcomeUnknownError) => void | нет | Provider-сигнал, что результат refresh неизвестен и приложение должно выбрать интерактивное восстановление |\n| `onRefreshLifecycle` | (event: KeycloakRefreshLifecycleEvent) => void | нет | Безопасные диагностические события refresh: `started`, `joined`, `deferred`, `persisted`, `succeeded`, `failed` |\n| `webViewLoginInjectedJavaScript` | string | нет | JavaScript, внедряемый в login WebView до загрузки страницы |\n| `webViewLoginPageTheme` | `'base'` | нет | Встроенная тема страницы входа; `base` для Keycloak base template |\n\n`deferStoredTokensUntilRefresh` полезен для mobile unlock flow: приложение может сначала показать PIN/биометрию, а уже после успешного локального подтверждения выполнить refresh через сохранённый offline token. Это предотвращает преждевременный расход refresh/offline token при старте приложения.\n\nRefresh diagnostics intentionally do not include access, refresh/offline, or ID tokens, authorization headers, cookies, client secrets, PINs, passwords, request bodies, or credentials. Lifecycle telemetry is sanitized: refresh failure events may include safe fields such as `status`, `classification`, `diagnosticCode`, `stage`, `operation`, and `outcomeUnknown`, but OAuth `error` and `errorDescription` are not lifecycle event fields:\n\n```tsx\n<KeycloakProvider\n  config={config}\n  redirectUri={redirectUri}\n  onRefreshLifecycle={event => logger.info('keycloak-refresh', event)}\n>\n  {children}\n</KeycloakProvider>\n```\n\nProvider-owned refreshes emit this callback for token expiry and PIN/biometry reauth paths. Independently constructed Axios token providers are configured separately:\n\n```ts\nconst tokenProvider = new KeycloakTokenProvider(keycloakClient, {\n  onRefreshLifecycle: event => logger.info('keycloak-refresh', event),\n});\n```\n\n### Refresh admission, shared flight и recovery\n\nЕсли передан `refreshAdmission`, refresh допускается только после стабильной проверки exact\nKeycloak token origin. Безопасные defaults библиотеки: два успешных probe, интервал `1000` мс,\ntimeout probe `2000` мс, reassessment `1500` мс и общий deadline `10000` мс; probe method is `GET`.\nТип соединения и VPN metadata используются только как advisory diagnostics и сами по себе не\nразрешают и не запрещают refresh. No corporate VPN is required by the library.\n\nГраница физического запроса явная: admission и journal находятся в `PRE_REQUEST`, а\n`REQUEST_DISPATCHED` начинается синхронно при вызове token POST. Последний caller может отменить\npre-request работу; после dispatch caller только отсоединяется, физический запрос не abort/retry.\nSame-client и cross-client вызовы присоединяются к одному replayable refresh flight через\n`beginTokenUpdate()`, а обычный `updateToken()` остаётся Promise-совместимой обёрткой.\n\n`maxAmbiguousReuseAttempts` is clamped to the integer range `0..3`; non-finite or non-number\nvalues become `0`, and fractional values are truncated. Durable refresh-attempt journal records\nuse the states `IN_FLIGHT`, `QUARANTINED`, and `SESSION_INVALID`; the public stored-token\ndispositions derived from them remain `usable`, `outcome-unknown`, and `session-invalid`.\n\nDurable disposition сохранённого refresh token имеет значения `usable`, `outcome-unknown` и\n`session-invalid`. Unsafe token не hydrate/retry. Outcome unknown и `invalid_grant` открывают\nlocked fresh-login recovery, а `invalid_client`/`unauthorized_client` — отдельный configuration\nrecovery. Transient/deferred ошибки эти состояния не создают. Публичный\n`useKeycloakInteractiveRecovery()` предоставляет `startFreshLogin(action)` и coalesced\n`explicitLogout(action?)`; fresh login завершает recovery только после durable persistence всех\nновых token components.\n\n### KeycloakTheme\n\nВсе поля опциональны; недостающие подставляются из дефолтной темы. Передаётся в KeycloakProvider как `theme`.\n\n- **fonts**: `primary`, `heading`\n- **colors**: `primary`, `background`, `error`, `text`, `button`, `buttonText`, `link`, `outlinedButtonBackground`, `outlinedButtonText`, `numberPadButtonBackground`, `numberPadText`, `numberPadDisabled`, `pinIndicatorEmpty`, `pinIndicatorErrorEmpty`, `border`, `success`\n- **LoaderComponent**: компонент состояния загрузки\n- **ContainedButtonComponent**, **OutlinedButtonComponent**, **IconButtonComponent**: компоненты кнопок (пропсы см. в THEMING.md)\n\nПолная структура и примеры: [THEMING.md](./THEMING.md).\n\n---\n\n## Компоненты\n\n### Экраны\n\n#### AuthPage\n\nПервый вход: логин в WebView → установка PIN → обмен code на токены. Используется на экране «Вход».\n\n| Проп | Тип | По умолчанию | Описание |\n|------|-----|--------------|----------|\n| `onSuccess` | (token: string) => void | — | После успешного обмена code; передаётся access token |\n| `onError` | (error: Error) => void | — | При ошибке обмена или сохранения |\n| `onStageChange` | (stage: `'LOGIN' \\| 'SETUP_PIN' \\| 'PROCESSING' \\| 'SUCCESS'`) => void | — | Смена стадии авторизации |\n| `logo` | ReactNode \\| ImageSourcePropType | — | Логотип приложения |\n| `logoHeight`, `logoWidth` | number | 80 | Размер логотипа при использовании image source |\n| `showBiometryPrompt` | boolean | true | Спрашивать биометрию после установки PIN |\n| `pinLength` | number | 4 | Длина PIN |\n| `style`, `paddingTop`, `paddingBottom` | ViewStyle / number | — | Стили контейнера |\n| `successFeedback` | SuccessFeedbackConfig | см. ниже | Короткое success-состояние перед финальным `onSuccess` |\n\n#### ConfirmAuthPage\n\nПодтверждение сессии: сначала PIN/биометрия, затем продолжение с текущим access token или refresh через offline token. Если repeat-login не может восстановить токены через offline token, открывается обычный Keycloak login. Скрытый ввод username/password в новом flow не используется.\n\nРежимы:\n\n- `login` — повторный вход в приложение; при невозможности refresh открывает обычный Keycloak login.\n- `unlock` — локальная разблокировка после background; refresh выполняется только если access token уже истёк.\n- `reauth` — повторная авторизация после 401; refresh через offline token обязателен.\n\n| Проп | Тип | По умолчанию | Описание |\n|------|-----|--------------|----------|\n| `onSuccess` | () => void | — | Успешное локальное подтверждение и восстановление/проверка access token |\n| `onError` | (error: Error) => void | — | Ошибка outer flow, не неверный PIN: WebView login или refresh в `unlock`/`reauth`, если terminal ошибка не направлена в `onSessionExpired` |\n| `onSessionExpired` | (error: Error) => void | — | В `unlock`/`reauth`: сохранённая Keycloak-сессия подтверждённо истекла или отозвана; показать сообщение и направить на новый login |\n| `onLogout` | () => void | — | После очистки хранилища пакета; в приложении — очистить сессию и перейти на экран входа |\n| `mode` | `'login' \\| 'unlock' \\| 'reauth'` | `\"login\"` | Сценарий: повторный вход, unlock после background или reauth после 401 |\n| `refreshUnavailableContent` | `RefreshUnavailableContent` | English fallback | Локализованные title/message/recommendations и подписи Retry/Logout для admission timeout |\n| `interactiveRecoveryContent` | `InteractiveRecoveryContent` | English fallback | Локализованные тексты fresh-login и configuration recovery; OAuth code остаётся отдельным structured полем |\n| `logoutText` | string | \"Выйти из аккаунта\" | Текст ссылки «Выйти» |\n| `logo` | ReactNode \\| ImageSourcePropType | — | Логотип |\n| `logoHeight` | number | `80` | Высота image-source логотипа |\n| `logoWidth` | number | `80` | Ширина image-source логотипа |\n| `pinLength` | number | 4 | Длина PIN |\n| `allowBiometry`, `autoShowBiometry` | boolean | true | Биометрия |\n| `title` | string | `\"Введите PIN\"` | Заголовок PIN; effective default задаёт `PINConfirm` |\n| `description` | string | отсутствует (`undefined`) | Необязательное описание PIN; по умолчанию не отображается |\n| `layout` | `'screen' \\| 'sheet'` | `\"screen\"` | Компактная раскладка `sheet` для встраивания в BottomSheet |\n| `style` | ViewStyle | — | Стиль контейнера |\n| `successFeedback` | SuccessFeedbackConfig | см. ниже | Короткое success-состояние перед финальным `onSuccess` |\n\nНеверный PIN (и ошибка его проверки) остаётся внутри `PINConfirm`: outer `onError` не вызывается. После локальной проверки PIN access token используется без сети только когда он действителен более 60 секунд; точная граница 60 секунд входит в admission (`minValidity = 61`). При inactive/background in-memory PIN grant немедленно инвалидируется, а stale lifecycle/result не может закрыть новый экран. Outcome-unknown/session-invalid остаются в locked fresh-login recovery; configuration errors показываются отдельно. Явный Logout даёт remote revoke один общий budget 5000 мс (включая чтение token), затем всегда выполняет local library cleanup перед host `onLogout`.\n\n### Виджеты\n\n#### ReauthBottomSheet\n\nBlocking full-screen overlay с подтверждением PIN для реавторизации. Это не Gorhom `BottomSheet` и не `BottomSheetModal`: **отображение (открытие/закрытие) определяется внутри библиотеки** по состоянию реавторизации (`isReauthRequired` из ReauthContext) — передавать видимость снаружи не нужно и `BottomSheetModalProvider` для встроенного `ReauthBottomSheet` не требуется. Остальное управление — через пропсы и коллбэки (не привязан к Session приложения).\n\n| Проп | Тип | По умолчанию | Описание |\n|------|-----|--------------|----------|\n| `onSuccess` | () => void | — | Реавторизация прошла успешно |\n| `onDismiss` | () => void | — | Закрытие без успеха |\n| `onError` | (error: Error) => void | — | Ошибка outer Confirm flow, не неверный PIN: см. `ConfirmAuthPage.onError`; передаётся его вложенному экрану |\n| `onSessionExpired` | (error: Error) => void | — | Сохранённая Keycloak-сессия подтверждённо истекла/отозвана; sheet закроется, приложение выбирает новый login |\n| `onLogout` | () => void | — | Пользователь явно выбрал выход из UI реавторизации; библиотека закроет sheet |\n| `pinLength` | number | 4 | Длина PIN |\n| `allowBiometry`, `autoShowBiometry` | boolean | true | Биометрия |\n| `mode` | `'login' \\| 'unlock' \\| 'reauth'` | авто | Если не передан, `background` открывается как `unlock`, остальные причины как `reauth` |\n| `title` | string | \"Введите PIN\" | Заголовок |\n| `description` | string | отсутствует (`undefined`) | Необязательное описание; по умолчанию не отображается |\n| `refreshUnavailableContent` | `RefreshUnavailableContent` | English fallback | Передаётся в `ConfirmAuthPage` для locked unavailable UI |\n| `interactiveRecoveryContent` | `InteractiveRecoveryContent` | English fallback | Передаётся в `ConfirmAuthPage` для fresh-login/configuration recovery |\n| `successFeedback` | SuccessFeedbackConfig | см. ниже | Короткое success-состояние перед финальным `onSuccess` |\n\n`ReauthBottomSheet` передаёт эти callback-контракты вложенному `ConfirmAuthPage`: неверный PIN не вызывает его `onError`; mode-dependent refresh routing остаётся тем же (`login` → обычный login fallback, terminal `unlock`/`reauth` → `onSessionExpired`, если он задан, иначе `onError`).\n\n### SuccessFeedbackConfig\n\nОбщий для `AuthPage`, `ConfirmAuthPage` и `ReauthBottomSheet` проп. По умолчанию success-состояние включено, показывает текст `\"Успешный вход\"` и держится `650` мс, затем вызывается финальный `onSuccess`.\n\n| Поле | Тип | По умолчанию | Описание |\n|------|-----|--------------|----------|\n| `enabled` | boolean | `true` | Показать success-состояние; при `false` `onSuccess` вызывается сразу |\n| `title` | string | `\"Успешный вход\"` | Текст под анимацией |\n| `durationMs` | number | `650` | Длительность до финального `onSuccess` |\n\n### Кнопки выхода\n\n#### LogoutButtonText\n\nТекстовая кнопка (contained или outlined). По нажатию открывается полноэкранный Modal с WebViewLogout. Должна использоваться внутри KeycloakProvider.\n\n- **Базовые**: `onLogoutSuccess`, `onError`, `style`\n- **Специфичные**: `variant: 'contained' | 'outlined'`, `label: string`\n\n#### LogoutButtonIcon\n\nКнопка выхода только с иконкой. Базовые пропсы плюс `renderIcon: ReactNode`.\n\n### Остальные UI (внутри пакета или для кастомных сценариев)\n\n- **WebViewLogin**, **WebViewLogout** — OAuth-потоки в WebView\n- **PINSetup**, **PINConfirm** — ввод и подтверждение PIN\n- **NumberPad**, **PINIndicator** — UI ввода PIN\n- **LogoutConfirmSheet** — подтверждение выхода\n\n---\n\n## Хуки\n\nВсе хуки должны вызываться внутри KeycloakProvider (если не указано иное).\n\n### useKeycloakAuth()\n\nПолный API авторизации: инстанс keycloak, токен, login, logout, URL, состояние реавторизации.\n\nВозвращает: `keycloak`, `isInitialized`, `isLoading`, `error`, `accessToken`, `token`, `offlineToken`, `refreshToken`, `isExpired`, `isAuthenticated`, `updateToken`, `login`, `logout`, `loadUserProfile`, `createLoginUrl`, `createLogoutUrl`, `clearTokens`, `isReauthRequired`, `showReauth`, `hideReauth`.\n\n### useToken()\n\nДоступ только к токенам (меньше ре-рендеров). Возвращает: `accessToken`, `token`, `offlineToken`, `refreshToken`, `idToken`, `isExpired`, `updateToken`, `clearTokens`.\n\n### useReauth()\n\nСостояние UI реавторизации. Возвращает: `isReauthRequired`, `reauthReason`, `showReauth`, `hideReauth`.\n\n**Состояние isReauthRequired:**\n\n- Флаг `isReauthRequired` выставляется для background PIN gate и Provider-owned подтверждённого terminal refresh failure. Axios выставляет его при исчерпании retry budget (`maxRetries`); structured refresh errors из Axios идут в shared interactive recovery и `onRefreshError`, но не вызывают Axios `onReauthRequired` напрямую.\n- Флаг **сбрасывается автоматически** при успешном завершении реавторизации в компонентах пакета (ReauthBottomSheet, ConfirmAuthPage). Axios скрывает только уже открытый refresh-related флаг после успешного refresh. Вызывать `hideReauth()` в `onSuccess` готовых компонентов обычно не требуется.\n- Если приложение реализует **собственный** экран реавторизации (без ReauthBottomSheet/ConfirmAuthPage пакета), после успешной реавторизации нужно вызвать `hideReauth()`.\n\n### useKeycloakAuthScreen(options?)\n\nОпределяет, какой экран авторизации показывать: `'resolving'`, `'login'` или `'confirm'`. Пока provider не инициализирован или выполняется проверка Keychain, возвращается `'resolving'`; не используйте его как имя маршрута.\n\nВозвращает: `screen: 'resolving' | 'login' | 'confirm' | null`, `isLoading`, `error`.\n\nОпции: `shouldShowConfirm?: () => Promise<boolean>` — переопределить стандартную проверку (наличие offline token и PIN).\n\n### useKeycloakTheme()\n\nТекущая тема (объединённая с дефолтной). Возвращает: `fonts`, `colors`, `LoaderComponent`, `ContainedButtonComponent`, `OutlinedButtonComponent`, `IconButtonComponent`. Можно вызывать вне провайдера (вернётся дефолтная тема).\n\n---\n\n## Хранилище\n\n### tokenStorage\n\nХранение токенов в Keychain. API: `getToken`/`getAccessToken`, `saveToken`/`saveAccessToken`, `getRefreshToken`/`getOfflineToken`, `saveRefreshToken`/`saveOfflineToken`, `getIdToken`, `saveIdToken`, `getTokens`, `saveTokens`, `clearTokens`, `hasTokens`.\n\n`refresh_token` из Keycloak при `offline_access` хранится как offline token. Он не отправляется в backend; backend получает только `Authorization: Bearer <accessToken>`. После успешного ConfirmAuthPage вызовите `tokenStorage.getAccessToken()`, чтобы получить текущий access token и обновить сессию приложения.\n\n> **Важно**: не храните токены в AsyncStorage. Используйте только Keychain через пакет.\n\n### credentialStorage\n\nИспользуется внутри пакета для PIN-verifier и биометрии. Legacy-хранение зашифрованных credentials оставлено для совместимости, но новый offline_access flow не использует username/password для повторного входа.\n\n---\n\n## Axios\n\n### Интерфейс TokenProvider\n\nИспользуется интерцепторами для получения и обновления токенов:\n\n- `getToken(): Promise<string | null> | string | null`\n- `refreshToken(): Promise<string | null>`\n- `clearSession?(): Promise<void> | void` (опционально; очистка локальной auth-сессии после подтверждённой terminal refresh-ошибки)\n- `hasRefreshToken?(): Promise<boolean> | boolean` (опционально)\n- `formatToken?(token: string): string` (опционально; по умолчанию `Bearer ${token}`)\n\n### setupAxiosInterceptors(axiosInstance, config)\n\nДобавляет интерцепторы: в запрос — подстановка токена; в ответ — retry при 401 и refresh. `onRefreshError` вызывается для любой ошибки refresh. `onReauthRequired` вызывается только после подтверждённой terminal ошибки refresh или после исчерпания `maxRetries`; это callback **Axios-конфигурации**, не Provider prop.\n\n**config**: `tokenProvider`, `onReauthRequired`, `onTokenRefreshed`, `onRefreshError`, `onSessionTerminated`, `maxRetries` (по умолчанию 1), `autoAddToken` (true), `autoRetryOn401` (true), `excludeEndpoints`.\n\nПри refresh-ошибке Axios очищает очередь ожидающих 401, отдаёт ошибку в shared interactive\nrecovery controller, вызывает `onRefreshError(error)` и отклоняет исходный запрос этой refresh-\nошибкой. Axios known limitation: `onSessionTerminated` is invoked only for `invalid_grant` in the\ncurrent runtime path. Other structured terminal/configuration errors are handed to shared\ninteractive recovery and `onRefreshError`, but Axios does not own an additional cleanup or reauth\ncallback for them. `tokenProvider.clearSession()` и fallback `tokenStorage.clearTokens()` не\nвызываются из Axios interceptor. Independently constructed Axios token providers also do not\nreceive Provider-owned `onRefreshLifecycle` unless configured on `KeycloakTokenProvider`.\n\nВозвращает `{ cleanup }` для снятия интерцепторов.\n\n### KeycloakTokenProvider\n\nКласс, реализующий TokenProvider на основе инстанса KeycloakReactNativeClient. Удобно, когда инстанс клиента уже есть и нужен адаптер для интерцепторов.\n\n---\n\n## Интеграция\n\nПошаговая интеграция с примерами кода. Рассматривается только Keycloak.\n\n### 1. Оборачивание приложения в KeycloakProvider\n\nКонфиг и `redirectUri` берут из настроек приложения. Тему (Loader, кнопки, цвета) передайте из темы приложения. В `onTokens` сохраняйте access token в хранилище сессии; в `onReauthRequired` показывайте экран реавторизации.\n\n**Порядок провайдеров**: built-in `ReauthBottomSheet` не требует `BottomSheetModalProvider`. Если host всё же использует `BottomSheetModalProvider` из `@gorhom/bottom-sheet` для `LogoutConfirmSheet` или собственных Gorhom-модалок, которые должны читать Keycloak context, размещайте его **внутри** KeycloakProvider. Порядок для такого optional случая: `KeycloakProvider` → `BottomSheetModalProvider` → остальное дерево приложения.\n\n```tsx\nimport { BottomSheetModalProvider } from '@gorhom/bottom-sheet';\nimport { KeycloakProvider, type KeycloakTheme } from '@bmc-soft/keycloak-auth';\n\nconst theme: KeycloakTheme = {\n  colors: {\n    primary: appColors.primary,\n    background: appColors.background,\n    error: appColors.error,\n    text: appColors.text,\n    numberPadButtonBackground: appColors.cardBackground,\n    numberPadText: appColors.text,\n    pinIndicatorEmpty: appColors.textMuted,\n  },\n  LoaderComponent: AppLoader,\n  ContainedButtonComponent: AppContainedButton,\n  OutlinedButtonComponent: AppOutlinedButton,\n  IconButtonComponent: AppIconButton,\n};\n\nexport const App = () => (\n  <KeycloakProvider\n    config={{\n      url: 'https://sso.example.com',\n      realm: 'my-realm',\n      clientId: 'my-app',\n    }}\n    redirectUri=\"myapp://callback\"\n    theme={theme}\n    onTokens={({ accessToken }) => {\n      Session.events.onChangeAuthToken(accessToken);\n    }}\n    onReauthRequired={() => {\n      Session.events.onRequireReauth();\n    }}\n  >\n    <BottomSheetModalProvider>\n      <RootNavigator />\n    </BottomSheetModalProvider>\n  </KeycloakProvider>\n);\n```\n\n### 2. Установка TokenProvider для axios\n\nПровайдер токенов настраивается один раз внутри KeycloakProvider после инициализации keycloak. Он отдаёт backend только access token, а refresh выполняет через offline token.\n\n```tsx\nimport {\n  KeycloakTokenProvider,\n  setupAxiosInterceptors,\n  useKeycloakAuth,\n} from '@bmc-soft/keycloak-auth';\n\nconst api = axios.create({ baseURL: 'https://api.example.com' });\n\nconst KeycloakAxiosTokenProviderSetup = ({ children }) => {\n  const { keycloak, isInitialized } = useKeycloakAuth();\n\n  useEffect(() => {\n    if (!isInitialized || !keycloak) return undefined;\n\n    const { cleanup } = setupAxiosInterceptors(api, {\n      tokenProvider: new KeycloakTokenProvider(keycloak),\n      onReauthRequired: () => {\n        Session.events.onRequireReauth();\n      },\n      onTokenRefreshed: (accessToken) => {\n        Session.events.onChangeAuthToken(accessToken);\n      },\n    });\n\n    return cleanup;\n  }, [isInitialized, keycloak]);\n\n  return <>{children}</>;\n};\n\n// Внутри KeycloakProvider:\n<KeycloakProvider config={...} redirectUri={...} ...>\n  <KeycloakAxiosTokenProviderSetup>\n    <BottomSheetModalProvider>\n      <RootNavigator />\n    </BottomSheetModalProvider>\n  </KeycloakAxiosTokenProviderSetup>\n</KeycloakProvider>\n```\n\nДля Keycloak используйте `KeycloakTokenProvider`: он участвует в общем single-flight refresh и в безопасном порядке persistence. Не вызывайте отдельный `keycloak.updateToken(-1)` из собственного provider — это обходит координацию пакета.\n\n```tsx\nsetupAxiosInterceptors(api, {\n  tokenProvider: new KeycloakTokenProvider(keycloak),\n  onReauthRequired: () => {\n    Session.events.onRequireReauth();\n  },\n});\n```\n\n### 3. Стек авторизации (Login + Confirm)\n\nДва экрана: Login (AuthPage) и Confirm (ConfirmAuthPage). Начальный маршрут задаётся через `useKeycloakAuthScreen()`: показывать Confirm, если есть offline token и PIN, иначе Login.\n\n```tsx\nimport { useKeycloakAuthScreen, AuthPage, ConfirmAuthPage, tokenStorage } from '@bmc-soft/keycloak-auth';\n\nconst Stack = createNativeStackNavigator();\n\nexport const AuthStack = () => {\n  const { screen, isLoading } = useKeycloakAuthScreen();\n\n  if (isLoading) return <Loader />;\n\n  if (screen === 'resolving') return <Loader />;\n\n  const initialRoute = screen === 'confirm' ? 'Confirm' : 'Login';\n\n  return (\n    <Stack.Navigator initialRouteName={initialRoute}>\n      <Stack.Screen name=\"Login\" component={LoginScreen} options={{ headerShown: false }} />\n      <Stack.Screen name=\"Confirm\" component={ConfirmScreen} options={{ headerShown: false }} />\n    </Stack.Navigator>\n  );\n};\n\nconst LoginScreen = () => (\n  <AuthPage\n    logo={require('./logo.png')}\n    onSuccess={(accessToken) => Session.events.onLogin(accessToken)}\n    onError={(err) => console.error(err)}\n  />\n);\n\nconst ConfirmScreen = () => {\n  const navigation = useNavigation();\n\n  const onSuccess = useCallback(async () => {\n    const accessToken = await tokenStorage.getAccessToken();\n    if (accessToken) Session.events.onLogin(accessToken);\n  }, []);\n\n  return (\n    <ConfirmAuthPage\n      onSuccess={onSuccess}\n      onLogout={() => {\n        Session.events.onLogout();\n        navigation.replace('Login');\n      }}\n      pinLength={4}\n    />\n  );\n};\n```\n\n### 4. Реавторизация при 401\n\nПри 401 интерцепторы вызывают `onReauthRequired` только после исчерпания retry budget; структурированные refresh-ошибки передаются в `onRefreshError` и shared recovery. Можно использовать `isReauthRequired` из `useKeycloakAuth()` как единственный источник правды для отображения реавторизации. Если используете готовый **ReauthBottomSheet** из пакета, он сам открывается и закрывается по `isReauthRequired` — достаточно смонтировать компонент и при необходимости передать коллбэки (`onSuccess`, `onDismiss`). ReauthBottomSheet is a blocking full-screen overlay, not a Gorhom BottomSheet or BottomSheetModal; `@gorhom/bottom-sheet` остаётся peer для других UI компонентов/host integration, но этот виджет не управляется Gorhom modal lifecycle. Для кастомной обёртки (свой BottomSheet и контент) можно использовать **ConfirmAuthPage** и вручную управлять видимостью по `isReauthRequired`. После успешного ввода PIN получите access token из пакета, обновите сессию и закройте реавторизацию. Флаг `isReauthRequired` сбрасывается пакетом автоматически при успехе в ReauthBottomSheet/ConfirmAuthPage; в `onSuccess` достаточно своей логики (обновление сессии, закрытие sheet).\n\nПример с кастомным BottomSheet и ConfirmAuthPage (управление видимостью вручную):\n\n```tsx\nimport { ConfirmAuthPage, tokenStorage } from '@bmc-soft/keycloak-auth';\nimport BottomSheet from '@gorhom/bottom-sheet';\n\nexport const CustomReauthSheet = () => {\n  const sheetRef = useRef(null);\n  const showReauth = useStore($reauthRequired); // например Effector / useState\n\n  useEffect(() => {\n    showReauth ? sheetRef.current?.snapToIndex(0) : sheetRef.current?.close();\n  }, [showReauth]);\n\n  const handleSuccess = useCallback(async () => {\n    const accessToken = await tokenStorage.getAccessToken();\n    if (accessToken) {\n      Session.events.onLogin(accessToken);\n      Session.events.onReauthCompleted();\n    }\n    sheetRef.current?.close();\n  }, []);\n\n  return (\n    <BottomSheet ref={sheetRef} snapPoints={['50%']} enablePanDownToClose>\n      <ConfirmAuthPage mode=\"reauth\" onSuccess={handleSuccess} pinLength={4} />\n    </BottomSheet>\n  );\n};\n```\n\n### 5. PIN/биометрия после возврата из background\n\nЕсли `backgroundReauth.enabled !== false`, библиотека отслеживает `AppState`: при возврате из background/inactive через более чем `thresholdMs` миллисекунд открывается `ReauthBottomSheet`.\n\nПо умолчанию:\n\n```tsx\n<KeycloakProvider\n  config={{ url: 'https://sso.example.com', realm: 'my-realm', clientId: 'my-app' }}\n  redirectUri=\"myapp://callback\"\n  backgroundReauth={{\n    enabled: true,\n    thresholdMs: 60000,\n    internalNetworkMode: 'ip-host-is-internal',\n  }}\n>\n  <App />\n</KeycloakProvider>\n```\n\nПравило внутренней сети: если host в `config.url` является IP-адресом, сеть считается внутренней и background sheet не показывается; если host является DNS-именем, сеть считается внешней. Это эвристика background unlock, а не требование corporate VPN.\n\n### 6. Выход\n\nИспользуйте LogoutButtonIcon или LogoutButtonText. По нажатию открывается Modal с WebViewLogout; при успешном выходе вызывается `onLogoutSuccess` — там очищайте сессию приложения. WebView logout проходит через страницу Keycloak, а затем библиотека отзывает текущий offline token (`refresh_token`) через token revocation endpoint до локальной очистки токенов.\n\n```tsx\nimport { LogoutButtonIcon, LogoutButtonText } from '@bmc-soft/keycloak-auth';\n\nexport const LogoutButton = ({ variant }: { variant: 'icon' | 'text' }) => {\n  const handleLogoutSuccess = useCallback(() => {\n    Session.events.onLogout();\n  }, []);\n\n  if (variant === 'icon') {\n    return (\n      <LogoutButtonIcon\n        renderIcon={<Icon name=\"logout\" color={theme.error} />}\n        onLogoutSuccess={handleLogoutSuccess}\n      />\n    );\n  }\n\n  return (\n    <LogoutButtonText\n      variant=\"outlined\"\n      label=\"Выйти\"\n      onLogoutSuccess={handleLogoutSuccess}\n    />\n  );\n};\n```\n\n### Схема потока\n\n```\nKeycloakProvider → инициализация Keycloak → установка TokenProvider для axios\n       ↓\nuseKeycloakAuthScreen → Login (AuthPage) или Confirm (ConfirmAuthPage)\n       ↓\nConfirm → PIN/биометрия → текущий access token или refresh через offline token\n       ↓\nonSuccess → Session.onLogin(accessToken)   |   onLogout → Session.onLogout + навигация\n       ↓\naxios 401 retry budget / background > 60с по эвристике host → ReauthBottomSheet с ConfirmAuthPage\n       ↓\nPIN/биометрия → refresh при необходимости → tokenStorage.getAccessToken() → закрыть sheet\n```\n\n---\n\n## Архитектура и безопасность\n\n### Mobile client и offline_access\n\nДля мобильного приложения используйте Keycloak public client + Authorization Code Flow with PKCE (`S256`). `client_secret` не должен попадать в React Native приложение; confidential client допустим только через backend/BFF.\n\nПри `offlineAccessEnabled=true` библиотека добавляет `offline_access` в login scope. Keycloak возвращает offline token в поле `refresh_token`; библиотека хранит его в Keychain как `offlineToken`/`refreshToken` и использует только для получения новых access token.\n\n### Refresh token rotation\n\nБиблиотека поддерживает строгую ротацию refresh token в Keycloak, включая настройки `Revoke Refresh Token = ON` и `Refresh Token Max Reuse = 0`.\n\nВсе внутренние пути обновления токена (`autoRefreshToken`, `useToken().updateToken`, `KeycloakTokenProvider.refreshToken`) проходят через общий single-flight guard на один Keycloak client. Совместимые параллельные refresh-запросы ждут один и тот же результат, а запрос с большим `minValidity` дожидается текущего refresh и затем проверяет уже актуальную пару токенов. После успешного refresh новая пара `accessToken`/`offlineToken` сохраняется в Keychain до уведомления consumers.\n\nГарантия single-flight распространяется на один React Native JS runtime. API Keychain не предоставляет compare-and-swap, поэтому библиотека не может обеспечить точную взаимную блокировку между несколькими одновременно работающими JS runtime/process без нативного координатора. Поддерживаемая конфигурация основного мобильного приложения использует один runtime; серверная политика ротации Keycloak остаётся последней границей защиты.\n\nИнтеграционному приложению не нужно запускать дополнительные параллельные `keycloak.updateToken()` поверх библиотеки. Если нужен ручной refresh, используйте `useToken().updateToken()` или `KeycloakTokenProvider.refreshToken()`.\n\n### Ошибки обновления токена\n\nЕсли token endpoint Keycloak возвращает ошибку при exchange или refresh, библиотека выбрасывает `KeycloakTokenError`. Это обычный `Error`, поэтому существующий код может продолжать читать `error.message`, но дополнительно доступны структурированные поля:\n\n```ts\ntype KeycloakTokenOperation = 'exchange' | 'refresh' | 'revoke';\n\ntype KeycloakTokenError = Error & {\n  name: 'KeycloakTokenError';\n  operation: KeycloakTokenOperation;\n  status?: number;\n  error?: string;\n  errorDescription?: string;\n  errorUri?: string;\n  details: {\n    operation: KeycloakTokenOperation;\n    status?: number;\n    error?: string;\n    errorDescription?: string;\n    errorUri?: string;\n  };\n};\n```\n\nДля refresh-token ошибок публичный контракт можно сузить до `KeycloakRefreshError`:\n\n```ts\ntype KeycloakRefreshError = Error & {\n  status?: number;\n  error?: string;\n  errorDescription?: string;\n  operation: 'refresh';\n};\n```\n\nПоля `error`, `errorDescription` и `errorUri` соответствуют OAuth token endpoint response (`error`, `error_description`, `error_uri`), а `status` содержит HTTP status ответа. Например, `invalid_grant`, `Offline user session not found`, revoked/expired offline token и HTTP 400/401 различимы по структурированным полям без парсинга `message`. Токены, request body, cookies, authorization headers и client secret в объект ошибки не добавляются.\n\n#### Решение по refresh-ошибке\n\n| Сигнал | Что делает библиотека | Что должен решить host |\n|------|------------------------|------------------------|\n| Подтверждённая terminal OAuth-ошибка: например `invalid_grant`, `invalid_client`, `unauthorized_client`, expired/revoked offline token | Provider auto-refresh does not clear local tokens on terminal refresh errors. Provider-owned `invalid_grant` enters locked session-invalid / fresh-login recovery and may notify `onSessionTerminated`; fresh-login recovery keeps the stored tokens locked until explicit logout, successful fresh authorization, or host-owned cleanup. Axios вызывает `onRefreshError` и передаёт ошибку в shared interactive recovery; текущий Axios interceptor вызывает `onSessionTerminated` только для `invalid_grant` и не делает fallback `tokenProvider.clearSession()`/`tokenStorage.clearTokens()`/Axios `onReauthRequired` для остальных structured terminal ошибок. | Очистить свою прикладную сессию и направить пользователя к новому входу. `ConfirmAuthPage`/`ReauthBottomSheet` могут передать такой случай в `onSessionExpired`; для Axios учитывайте documented known limitation. |\n| `KeycloakRefreshOutcomeUnknownError` | Результат запроса нельзя считать ни успешным, ни terminal. Попытка durable quarantine в Keychain, чтобы прежний refresh token не был автоматически отправлен повторно. Provider вызывает только `onInteractiveRecoveryRequired(error)`; Axios вызывает `onRefreshError(error)`, но не очищает токены и не вызывает Axios `onReauthRequired`. | Выбрать интерактивное восстановление (как правило, новый login) и не запускать автоматический повтор refresh с тем же токеном. |\n| Другая transient/локальная ошибка без подтверждённого terminal OAuth-ответа | Пробрасывается вызывающему коду; библиотека не обещает очистку токенов, показ reauth или deletion session. | Показать recoverable error, проверить сеть/конфигурацию и выбрать дальнейшее действие без предположений о состоянии сессии. |\n\n`KeycloakRefreshOutcomeUnknownError` и `isKeycloakRefreshOutcomeUnknownError` экспортируются из корня пакета. Ошибка имеет `operation: 'refresh'`, `outcomeUnknown: true` и `requiresInteractiveRecovery: true`; используйте type guard вместо текста `message`:\n\n```ts\nimport {\n  isKeycloakRefreshOutcomeUnknownError,\n  type KeycloakRefreshError,\n} from '@bmc-soft/keycloak-auth';\n\nfunction handleRefreshError(error: KeycloakRefreshError | Error) {\n  if (isKeycloakRefreshOutcomeUnknownError(error)) {\n    navigation.replace('Login');\n  }\n}\n```\n\n`useToken().updateToken()` и `useKeycloakAuth().updateToken()` всегда отклоняются с исходной refresh-ошибкой; `KeycloakTokenProvider.refreshToken()` не преобразует её в `null`. Axios `onRefreshError` получает каждую refresh-ошибку своего instance. `ConfirmAuthPage.onError` и `ReauthBottomSheet.onError` вызываются только в описанных выше outer-flow ветках: неверный PIN остаётся внутри `PINConfirm`, `login` может открыть fallback, а terminal `unlock`/`reauth` при наличии `onSessionExpired` идёт туда. Provider callbacks (`onReauthRequired`, `onInteractiveRecoveryRequired`) относятся только к refresh, которым владеет Provider; callbacks в `setupAxiosInterceptors` относятся только к этому Axios instance.\n\nПри logout библиотека сначала выполняет браузерный WebView logout flow, затем отправляет текущий offline token (`refresh_token`) в Keycloak token revocation endpoint (`/protocol/openid-connect/revoke`) с `token_type_hint=refresh_token` и только после этого очищает локальные токены. Это важно для `offline_access`: обычный browser logout не обязан удалять offline-сессию в Keycloak.\n\n### Иерархия контекстов\n\n```\nKeycloakConfigProvider     ← конфиг (редко меняется)\n  └─ KeycloakInstanceProvider ← инстанс (один раз)\n      └─ KeycloakWebViewInjectionProvider ← JS/theme login WebView\n          └─ KeycloakThemeProvider ← тема (опционально; мемоизирована)\n              └─ TokenProvider     ← токены (частые обновления)\n                  └─ ReauthProvider ← состояние реавторизации\n```\n\nОбновление токенов не вызывает ре-рендер компонентов, зависящих только от конфига, инстанса или темы.\n\n### Безопасность\n\n- Токены в OS Keychain (не AsyncStorage)\n- PIN хранится как verifier в Keychain; legacy-хранилище encrypted credentials сохранено только для обратной совместимости\n- Offline token не отправляется в backend и используется только для refresh в Keycloak\n- Запросы по HTTPS\n- Username/password не используются для repeat-login в новом offline_access flow\n\n\n## Экспорты\n\n- **Основной**: `@bmc-soft/keycloak-auth` — провайдер, хуки, экраны, виджеты, UI, хранилище, помощники axios, типы\n- **Подпути**: `@bmc-soft/keycloak-auth/screens`, `/widgets`, `/hooks`, `/axios`, `/context`, `/storage` (см. `exports` в package.json)\n\n---\n\n## Лицензия\n\nMIT © BMC-Soft Team\n","readmeFilename":"README.md"}