{"_id":"@capawesome/capacitor-age-signals","_rev":"12-42347aa16a4c6e1fce77b06fd5979b3d","name":"@capawesome/capacitor-age-signals","dist-tags":{"dev":"0.2.0-dev.1765885034","latest":"0.5.1"},"versions":{"0.1.0":{"name":"@capawesome/capacitor-age-signals","version":"0.1.0","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.1.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://github.com/capawesome-team/capacitor-plugins#readme","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"247a95586d93d40c3084d072ee41c514713456b6","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.1.0.tgz","fileCount":35,"integrity":"sha512-GePnuviKGreDCSPIfKV1JWi0t35TOCgT611ALFUIgtN1MP4H38kKIRjFstftogGuUpt+rFrbJ1S34S/D/aAC2w==","signatures":[{"sig":"MEUCIQC6bfWN5q9WZzY1ENDF2ifJmtvVKU3vZQsg899cTLkzOAIgex1WB0OhWu9oIWZbmyTTQE5gxvh5mAC+I/UC8dVfjEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83419},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"d3f0aa4339da5047d2a727728bfd7fca438983be","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"20.19.5","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.0.1","rollup":"4.30.1","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"4.1.5","@capacitor/cli":"7.0.0","@capacitor/ios":"7.0.0","@capacitor/core":"7.0.0","@capacitor/docgen":"0.3.0","@capacitor/android":"7.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.1.0_1760466585271_0.7139506736027321","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@capawesome/capacitor-age-signals","version":"0.1.1","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.1.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://github.com/capawesome-team/capacitor-plugins#readme","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"c0698f27265c8034e9dd522555ba0bb6b5a34126","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.1.1.tgz","fileCount":41,"integrity":"sha512-ejhhQsQbBnu9icy73xA3sDEah8vgp50SmwhFgTQ2QcFSUc6Bv6cL56IJIqQGxmMLHVioD5U/iz8Tu10ptuJUmQ==","signatures":[{"sig":"MEUCIFP5mhQVBn4amzcd1tepHX8lacaGUsF3TAHsO+/BzNg+AiEApHmx88931DkX4SD2Z4RxOjkt1kqNM1dX8qRazG3h+aw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94030},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"8cdc4f5f706ad34f741bb3247b1ab58555aad995","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"20.19.5","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.0.1","rollup":"4.30.1","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"4.1.5","@capacitor/cli":"7.0.0","@capacitor/ios":"7.0.0","@capacitor/core":"7.0.0","@capacitor/docgen":"0.3.0","@capacitor/android":"7.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.1.1_1764074261096_0.5041348624941908","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@capawesome/capacitor-age-signals","version":"0.2.0","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.2.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://github.com/capawesome-team/capacitor-plugins#readme","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"b25bb5dd8fd927ebbe2f55586178e6c114f6d3df","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.2.0.tgz","fileCount":41,"integrity":"sha512-nXi3D0LoNzA82M89lPaYzw+zLMzPPHcTOmAg96j3K7Bk7rq5AB2ghsdE1JDOl3f0KfnizrcYbtQRL8gjh9jErg==","signatures":[{"sig":"MEUCIQDkfT56qFhUToya/zwUgABHbUiZQj7YbPOLn46JdaYUUQIgE2V9A4Q2/JvRh8QvS4v5e2QtANdi0RbiOG5LkbhkdQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93960},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"b4b40a412e6fca22fc02d3c59493757b19ceadb8","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"20.19.6","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.0.1","rollup":"4.30.1","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"4.1.5","@capacitor/cli":"7.0.0","@capacitor/ios":"7.0.0","@capacitor/core":"7.0.0","@capacitor/docgen":"0.3.0","@capacitor/android":"7.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.2.0_1764912838893_0.5142461026236373","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-dev.1765885034":{"name":"@capawesome/capacitor-age-signals","version":"0.2.0-dev.1765885034","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.2.0-dev.1765885034","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://github.com/capawesome-team/capacitor-plugins#readme","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"dc714a892237c3a452a665deac5e372613bae3b3","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.2.0-dev.1765885034.tgz","fileCount":41,"integrity":"sha512-V8P/5/2RVwkKgjJ/Qlnlu+QZtelMC7gkN5NO54v9U+Ioz96iyejOscnJkJp69e0TfGvVQkmhIiAsv0T5AKjD7g==","signatures":[{"sig":"MEUCIFJXnfeyoVLePrO/C1gfxdvR8iYhnRw8495csQfkTTwNAiEA0hOIwyWzmVz8pfM8eIoKmPzYKFQQxwYUjmREv1HCLVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94221},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"bd386571b9151d22617cccbd0eda18efc0a5df3b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"robingenz","email":"mail@robingenz.dev"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.5.2","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"20.19.4","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.2.0-dev.1765885034_1765885367372_0.16210771230066445","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@capawesome/capacitor-age-signals","version":"0.3.0","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.3.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/plugins/age-signals/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"058d3a9acf3f6aec9bb6ac804d423c621964741a","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.3.0.tgz","fileCount":41,"integrity":"sha512-9smR6/BXULosqHAnbeo7+AvoIwVY6Tz/8jJy2qS8rYotEL2xvIRccrva+/FOOcROFiWbH5Z+j3qw7Xr1BbxEOQ==","signatures":[{"sig":"MEYCIQC9dpfuX6P/48x4+N/tnnPeafTzqlsECwbCThyoiq2EQAIhAO3XA7bbHsFX3r5KdvAkH4XkH9/Bu9CT9X8dl7mhXrn4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94266},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"762a4ca86dd18ce52c3a10977d7446866fe80e80","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.7.0","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"22.21.1","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.3.0_1765974708284_0.7702718659822672","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@capawesome/capacitor-age-signals","version":"0.3.1","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.3.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/plugins/age-signals/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"af91a4ed289c34314f41d8913c3ba9c8961aa398","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.3.1.tgz","fileCount":42,"integrity":"sha512-FeYTbfUDWP4LmYGnkSO7LAucAE/+8zP0/sAYfJ5ZlQFtD/0+N9OCjU0NEAMrw0CT0cRYOBXimEbcUqSpaTxhSg==","signatures":[{"sig":"MEYCIQDpmJHulecyHOgj7owJFz6Wxh5DJwto5hQDVpFrhpdcLAIhAIC+k+9cG4/A5Ja9mdcqgYAdcONrOeOwrbLEHzutPMTJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100745},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"e989eed07303e067045a1b01ba4b932e0fbe1773","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.7.0","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"22.21.1","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.3.1_1766392607562_0.6265459275939906","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@capawesome/capacitor-age-signals","version":"0.3.2","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.3.2","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/plugins/age-signals/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"14229d57ad8ba352b1e094872a971ab4baa49371","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.3.2.tgz","fileCount":45,"integrity":"sha512-BWo+GkhlcDXCiBwHE0oUWfRsVHG8wXYhftOan2c69RbdFfAwOBvuKRYJLDvCLQJU9PX10vCppqgt6cG0HvZ5PQ==","signatures":[{"sig":"MEUCIQDzz7npmwi10CoArn3InL1Eby6/7AB6/y6o7iJipfqQlQIgDHEumfJUDB5lwGTB5J5b42B5/PBqgxIK6hYx0Q09bWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":143677},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"dcf55e52d5ee95f3da847aeb5280e4cd7a282b16","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.7.0","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"22.21.1","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.3.2_1766422180471_0.3717397174607495","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@capawesome/capacitor-age-signals","version":"0.3.3","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.3.3","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/plugins/age-signals/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"498659fc839ca43733e10dd54a51098f23b7491f","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.3.3.tgz","fileCount":45,"integrity":"sha512-qBBPvk5x36pOas5noQOZWuW/vK37oxdehpMDTS/6mN63W/IamoqtMUGQNRY8aQVJRHj1TPNWk65wB9rF/RikGg==","signatures":[{"sig":"MEUCIQDa4+xLRI4Vt5FtRAfHI+MjsrV+i/mZF25fRWceJUOEMwIgL1Tqu1zaIc09Mgwi8lyisFSHllHtIJnISYrVfAADnLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":143540},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"fa5661b9d1f85edd21f503e2eeb9875d0089f0ae","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.10.0","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"22.22.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7","@ionic/swiftlint-config":"2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.3.3_1771486726247_0.056167134705648936","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@capawesome/capacitor-age-signals","version":"0.4.0","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.4.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/plugins/age-signals/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"1d184b957055c6896f69657e4dcc7d42d037ac22","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.4.0.tgz","fileCount":46,"integrity":"sha512-qss78K1nWVzluN6cFnAUjl3TIE2DbavozvCAwsVJuxds5Zb5/4VGiSfaX7FsyfXefrGY6Pef1zsEMlXxh+oMug==","signatures":[{"sig":"MEUCIHETafLApBuny2U5Z/ZZZAgIgjExkF+mV6sxWPDgedPFAiEA2Asrfr7i5gDq0xt8zTRm+456pWBD6CFvBKsBesxAHGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":160326},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"361b6c1f977c5ab68a131a55aad4cbaba44b109c","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.11.0","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"24.14.1","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","prettier":"3.4.2","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.4.0_1778614084486_0.6412329842757285","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@capawesome/capacitor-age-signals","version":"0.4.1","keywords":["capacitor","plugin","native"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.4.1","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/plugins/age-signals/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"ccaa5f186b7f406fc09a290a1130ad2a85c33fd8","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.4.1.tgz","fileCount":46,"integrity":"sha512-RHZoe/gTEP5KlO/tjwhYty7fDvqj3oF1CSGRli1Pr5/Qlhdo7OXplz9gcYhNF11f2PqyLILLJb7L0rC48PmO6g==","signatures":[{"sig":"MEUCIQDk9QW8wCrMWOSrUs2d+5QdzYc1kwYlN9llaP3yfw61CgIgcsGqpk9wer3hSyuhW0N+benaTs8ofu5ETHWYuoepDmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":160500},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"9c3297106f97a3e2f3c05839a5a9a726b757c20c","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin to use the Play Age Signals API to retrieve age-related signals for users.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.4.1_1783278305491_0.8505575754891992","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@capawesome/capacitor-age-signals","version":"0.5.0","keywords":["capacitor","plugin","native","capacitor-plugin","age signals","age verification","age assurance","age gate","declared age range","play age signals","parental controls"],"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","_id":"@capawesome/capacitor-age-signals@0.5.0","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/age-signals/","bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"dist":{"shasum":"c05fd5ae816402db7f31b059186d2879f093393e","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.5.0.tgz","fileCount":56,"integrity":"sha512-t7CPDgEaz6QyZf3FTDkI3PtpjJvE9wzj6lFKlnOeZxJU1emo6SbUck0VkEwAz+q/RpB1oXVCalc/zbvHjU+oow==","signatures":[{"sig":"MEUCIQDdUsNMMUz9lFsbHNgp+YSLBPrgtvva7SZpaF4DhYHzggIgE/xm3/Cat7aMU7DixJOtJPX+wCOgY3OsQ82ikSPwy9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":294375},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","funding":[{"url":"https://github.com/sponsors/capawesome-team/","type":"github"},{"url":"https://opencollective.com/capawesome","type":"opencollective"}],"gitHead":"4f4104ddb36a79fe4f0dfaa8dc9661f1125e3a09","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd ..","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd .."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/capawesome-team/capacitor-plugins.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin to retrieve age-related signals for users via the Play Age Signals API on Android and the Declared Age Range framework on iOS.","directories":{},"_nodeVersion":"24.18.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"8.57.0","rimraf":"6.1.2","rollup":"4.53.3","swiftlint":"2.0.0","typescript":"5.9.3","@capacitor/cli":"8.0.0","@capacitor/ios":"8.0.0","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/android":"8.0.0","@ionic/eslint-config":"0.4.0","prettier-plugin-java":"2.6.7"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-age-signals_0.5.0_1785219798058_0.1662217603300764","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@capawesome/capacitor-age-signals","version":"0.5.1","description":"Capacitor plugin to retrieve age-related signals for users via the Play Age Signals API on Android and the Declared Age Range framework on iOS.","main":"dist/plugin.cjs.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"funding":[{"type":"github","url":"https://github.com/sponsors/capawesome-team/"},{"type":"opencollective","url":"https://opencollective.com/capawesome"}],"homepage":"https://capawesome.io/docs/sdks/capacitor/age-signals/","keywords":["capacitor","plugin","native","capacitor-plugin","age signals","age verification","age assurance","age gate","declared age range","play age signals","parental controls"],"scripts":{"verify":"npm run verify:ios && npm run verify:android && npm run verify:web","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:android":"cd android && ./gradlew clean build test && cd ..","verify:web":"npm run build","lint":"npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint","fmt":"npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format","eslint":"eslint . --ext ts","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","swiftlint":"node-swiftlint","docgen":"docgen --api AgeSignalsPlugin --output-readme README.md --output-json dist/docs.json","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","ios:pod:install":"cd ios && pod install --repo-update && cd ..","ios:spm:install":"cd ios && swift package resolve && cd ..","prepublishOnly":"npm run build"},"devDependencies":{"@capacitor/android":"8.0.0","@capacitor/cli":"8.4.2","@capacitor/core":"8.0.0","@capacitor/docgen":"0.3.1","@capacitor/ios":"8.0.0","@ionic/eslint-config":"0.4.0","eslint":"8.57.0","prettier-plugin-java":"2.9.7","rimraf":"6.1.2","rollup":"4.62.3","swiftlint":"2.0.0","typescript":"5.9.3"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"publishConfig":{"access":"public"},"gitHead":"7c1937ed10b7de86ca2c1cdc3539a2735fd69a00","_id":"@capawesome/capacitor-age-signals@0.5.1","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-Qff0ry4PkkXyrDN1d0indxw929oqKe/IjQDXU0ir/1KQ+idsa72Vx1EUEV00vtF6oPGtOA/GkiV46ugkesBbdg==","shasum":"2d1e739e63feb85e333f2f92412f349748780a7f","tarball":"https://registry.npmjs.org/@capawesome/capacitor-age-signals/-/capacitor-age-signals-0.5.1.tgz","fileCount":56,"unpackedSize":294225,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capawesome%2fcapacitor-age-signals@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC83/BDVByr8LEni2gaw2D7e7jLM7rfDob+bzi7L9hCIAiAFZjPqZUofikMSoqTc/ha4ZjgEfPc65I4zvhKQb0SFzA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:95db927d-6ac3-4b48-9654-a9855b70e9eb"}},"directories":{},"maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-age-signals_0.5.1_1788337291609_0.8265488226734978"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-14T18:29:45.196Z","modified":"2026-09-02T08:21:32.106Z","0.1.0":"2025-10-14T18:29:45.458Z","0.1.1":"2025-11-25T12:37:41.270Z","0.2.0":"2025-12-05T05:33:59.013Z","0.2.0-dev.1765885034":"2025-12-16T11:42:47.523Z","0.3.0":"2025-12-17T12:31:48.438Z","0.3.1":"2025-12-22T08:36:47.708Z","0.3.2":"2025-12-22T16:49:40.633Z","0.3.3":"2026-02-19T07:38:46.401Z","0.4.0":"2026-05-12T19:28:04.623Z","0.4.1":"2026-07-05T19:05:05.611Z","0.5.0":"2026-07-28T06:23:18.190Z","0.5.1":"2026-09-02T08:21:31.750Z"},"bugs":{"url":"https://github.com/capawesome-team/capacitor-plugins/issues"},"author":{"name":"Robin Genz","email":"mail@robingenz.dev"},"license":"Apache-2.0","homepage":"https://capawesome.io/docs/sdks/capacitor/age-signals/","keywords":["capacitor","plugin","native","capacitor-plugin","age signals","age verification","age assurance","age gate","declared age range","play age signals","parental controls"],"repository":{"type":"git","url":"git+https://github.com/capawesome-team/capacitor-plugins.git"},"description":"Capacitor plugin to retrieve age-related signals for users via the Play Age Signals API on Android and the Declared Age Range framework on iOS.","maintainers":[{"name":"robingenz","email":"mail@robingenz.dev"}],"readme":"# Capacitor Age Signals Plugin\n\nCapacitor plugin to use the [Play Age Signals API](https://developer.android.com/google/play/age-signals/overview) (Android) and [DeclaredAgeRange](https://developer.apple.com/documentation/declaredagerange/) (iOS) to request age signals about the user.\n\n<div class=\"capawesome-z29o10a\">\n  <a href=\"https://cloud.capawesome.io/\" target=\"_blank\">\n    <img alt=\"Deliver Live Updates to your Capacitor app with Capawesome Cloud\" src=\"https://cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1\" />\n  </a>\n</div>\n\n## Features\n\nThe Capacitor Age Signals plugin is one of the most complete age assurance solutions for Capacitor apps. Here are some of the key features:\n\n- 🖥️ **Cross-platform**: Supports Android and iOS.\n- 🔍 **Age Verification**: Request user age signals using Play Age Signals API (Android) and DeclaredAgeRange (iOS).\n- 👨‍👩‍👧‍👦 **Parental Controls**: Support for supervised accounts with parental approval status.\n- 🧪 **Testing Support**: Built-in `FakeAgeSignalsManager` integration for testing different age verification scenarios (Android).\n- 🌍 **Compliance Ready**: Built for US state age verification requirements (effective January 1, 2026).\n- 🤝 **Compatibility**: Works alongside the [App Integrity](https://capawesome.io/docs/sdks/capacitor/app-integrity/) and [Root Detection](https://capawesome.io/docs/sdks/capacitor/root-detection/) plugins.\n- 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.\n- 🔁 **Up-to-date**: Always supports the latest Capacitor version.\n\nMissing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!\n\n## Use Cases\n\nThe Age Signals plugin is typically used to comply with age verification requirements and to tailor the app experience to the user's age, for example:\n\n- **Age-gated content**: Restrict access to mature or sensitive content based on the user's verification status and age range.\n- **Regulatory compliance**: Meet US state age verification requirements by requesting age signals from Google Play and Apple's DeclaredAgeRange API.\n- **Parental supervision**: Detect supervised accounts and react to pending or denied parental approvals.\n- **Regional eligibility checks**: Use `getRegulatoryRequirements()` on iOS to determine whether the user is in a region with additional age-related obligations.\n- **Automated testing**: Simulate different age verification scenarios in your Android tests using the built-in fake manager.\n\n## Compatibility\n\n| Plugin Version | Capacitor Version | Status         |\n| -------------- | ----------------- | -------------- |\n| 0.3.x          | >=8.x.x           | Active support |\n| 0.2.x          | 7.x.x             | Deprecated     |\n\n## Installation\n\nYou can use our **AI-Assisted Setup** to install the plugin.\nAdd the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:\n\n```bash\nnpx skills add capawesome-team/skills --skill capacitor-plugins\n```\n\nThen use the following prompt:\n\n```\n Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-age-signals` plugin in my project.\n```\n\nIf you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:\n\n```bash\nnpm install @capawesome/capacitor-age-signals\nnpx cap sync\n```\n\n### Android\n\n#### Variables\n\nIf needed, you can define the following project variable in your app's `variables.gradle` file to change the default version of the dependency:\n\n- `$androidPlayAgeSignalsVersion` version of `com.google.android.play:age-signals` (default: `0.0.4`)\n\nThis can be useful if you encounter dependency conflicts with other plugins in your project.\n\n**Note**: The `FakeAgeSignalsManager` testing API is included in the main `age-signals` library, so no additional dependency is required for testing.\n\n### iOS\n\n#### Entitlements\n\nTo use the DeclaredAgeRange API, you must enable the `com.apple.developer.declared-age-range` entitlement in your app's entitlements file by adding the following key:\n\n```xml\n<key>com.apple.developer.declared-age-range</key>\n<true/>\n```\n\nCheck out the [Apple documentation](https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.contacts.notes) for more information.\n\n## Configuration\n\nNo configuration required for this plugin.\n\n## Usage\n\nThe following examples show how to request the user's age range and how to react to the regulatory requirements that apply to the user.\n\n### Request the user's age range\n\nCall `requestAgeRange(...)` to ask the user to share their age range. The status tells you whether the age range was shared, and the `ageRange` property contains the bounds:\n\n```typescript\nimport { AgeRangeStatus, AgeSignals } from '@capawesome/capacitor-age-signals';\n\nconst requestAgeRange = async () => {\n  const result = await AgeSignals.requestAgeRange();\n  if (result.status !== AgeRangeStatus.Shared) {\n    console.log('The user has not shared their age range:', result.status);\n    return;\n  }\n  console.log('Lower Bound:', result.ageRange?.lowerBound);\n  console.log('Upper Bound:', result.ageRange?.upperBound);\n};\n```\n\nOn Android, a status of `VERIFICATION_REQUIRED` means the user must resolve their status in the Google Play Store before an age range can be shared.\n\n### Read the age range without prompting\n\nCall `getAgeRange()` to read the age range again without showing a prompt. This is useful to poll for a `significantChange` status that moves from `PENDING` to `APPROVED`. Only available on Android:\n\n```typescript\nimport { AgeSignals } from '@capawesome/capacitor-age-signals';\n\nconst getAgeRange = async () => {\n  const result = await AgeSignals.getAgeRange();\n  console.log('Significant Change:', result.significantChange?.status);\n};\n```\n\n### Check the regulatory requirements\n\nCheck whether the user is in a region and account state that requires age assurance, and which regulatory features your app must support. Only available on iOS:\n\n```typescript\nimport {\n  AgeSignals,\n  RegulatoryFeature,\n} from '@capawesome/capacitor-age-signals';\n\nconst getRegulatoryRequirements = async () => {\n  const result = await AgeSignals.getRegulatoryRequirements();\n  if (\n    result.regulatoryFeatures.includes(\n      RegulatoryFeature.SignificantAppChangeRequiresAdultNotification,\n    )\n  ) {\n    await AgeSignals.showSignificantUpdateAcknowledgment({\n      updateDescription: 'This app now supports direct messages between users.',\n    });\n  }\n};\n```\n\n## API\n\n<docgen-index>\n\n* [`getAgeRange()`](#getagerange)\n* [`getRegulatoryRequirements()`](#getregulatoryrequirements)\n* [`isAvailable()`](#isavailable)\n* [`requestAgeRange(...)`](#requestagerange)\n* [`setNextAgeSignalsAccessResult(...)`](#setnextagesignalsaccessresult)\n* [`setNextAgeSignalsException(...)`](#setnextagesignalsexception)\n* [`setNextAgeSignalsResult(...)`](#setnextagesignalsresult)\n* [`setNextRequestAgeSignalsAccessException(...)`](#setnextrequestagesignalsaccessexception)\n* [`setUseFakeManager(...)`](#setusefakemanager)\n* [`showSignificantUpdateAcknowledgment(...)`](#showsignificantupdateacknowledgment)\n* [Interfaces](#interfaces)\n* [Enums](#enums)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### getAgeRange()\n\n```typescript\ngetAgeRange() => Promise<GetAgeRangeResult>\n```\n\nGet the age range that the user has already shared with the app.\n\nThis method never shows a system prompt. Call `requestAgeRange(...)` first\nand only call this method if the returned status was `SHARED`.\n\nUse this method to poll for changes (for example a `significantChange`\nstatus that moves from `PENDING` to `APPROVED`) without prompting the user\nagain.\n\nOnly available on Android.\n\n**Returns:** <code>Promise&lt;<a href=\"#getagerangeresult\">GetAgeRangeResult</a>&gt;</code>\n\n**Since:** 0.5.0\n\n--------------------\n\n\n### getRegulatoryRequirements()\n\n```typescript\ngetRegulatoryRequirements() => Promise<GetRegulatoryRequirementsResult>\n```\n\nGet the regulatory requirements that apply to the current user.\n\nCall this method before starting any age assurance flow to find out\nwhether the user is in a region and account state where age assurance\napplies at all.\n\nOnly available on iOS (26.2+).\n\n**Returns:** <code>Promise&lt;<a href=\"#getregulatoryrequirementsresult\">GetRegulatoryRequirementsResult</a>&gt;</code>\n\n**Since:** 0.5.0\n\n--------------------\n\n\n### isAvailable()\n\n```typescript\nisAvailable() => Promise<IsAvailableResult>\n```\n\nCheck whether age signals are available on this device.\n\nOn **Android**, this checks whether the Google Play Store is installed.\nOn **iOS**, this checks whether the device runs iOS 26.0 or later.\n\nA result of `true` does not guarantee that an age range can be retrieved.\nAlways handle the errors of the other methods as well.\n\n**Returns:** <code>Promise&lt;<a href=\"#isavailableresult\">IsAvailableResult</a>&gt;</code>\n\n**Since:** 0.5.0\n\n--------------------\n\n\n### requestAgeRange(...)\n\n```typescript\nrequestAgeRange(options?: RequestAgeRangeOptions | undefined) => Promise<RequestAgeRangeResult>\n```\n\nAsk the user to share their age range with the app.\n\nThis method may show a system prompt. The system caches the decision of\nthe user, so subsequent calls may resolve without any user interaction.\n\nOn **Android**, the prompt is only shown to unsupervised users who have\nchosen to be asked before sharing. It is not shown in regions where age\nverification is mandatory. In that case the status is\n`VERIFICATION_REQUIRED` and the user must resolve their status in the\nGoogle Play Store. Google Play also suppresses the prompt after the user\nhas dismissed or declined it a few times.\nOn **iOS**, the prompt is not shown in regions where age assurance is\nmandatory. In that case the age range is shared without user interaction.\n\n| Param         | Type                                                                      |\n| ------------- | ------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#requestagerangeoptions\">RequestAgeRangeOptions</a></code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#requestagerangeresult\">RequestAgeRangeResult</a>&gt;</code>\n\n**Since:** 0.5.0\n\n--------------------\n\n\n### setNextAgeSignalsAccessResult(...)\n\n```typescript\nsetNextAgeSignalsAccessResult(options: SetNextAgeSignalsAccessResultOptions) => Promise<void>\n```\n\nSet the next access result to be returned by the fake manager.\n\nOnly available on Android.\n\n| Param         | Type                                                                                                  |\n| ------------- | ----------------------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setnextagesignalsaccessresultoptions\">SetNextAgeSignalsAccessResultOptions</a></code> |\n\n**Since:** 0.5.0\n\n--------------------\n\n\n### setNextAgeSignalsException(...)\n\n```typescript\nsetNextAgeSignalsException(options: SetNextAgeSignalsExceptionOptions) => Promise<void>\n```\n\nSet the next error to be thrown by the fake manager when the age range is\nread.\n\nOnly available on Android.\n\n| Param         | Type                                                                                            |\n| ------------- | ----------------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setnextagesignalsexceptionoptions\">SetNextAgeSignalsExceptionOptions</a></code> |\n\n**Since:** 0.3.1\n\n--------------------\n\n\n### setNextAgeSignalsResult(...)\n\n```typescript\nsetNextAgeSignalsResult(options: SetNextAgeSignalsResultOptions) => Promise<void>\n```\n\nSet the next age range result to be returned by the fake manager.\n\nOnly available on Android.\n\n| Param         | Type                                                                                      |\n| ------------- | ----------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setnextagesignalsresultoptions\">SetNextAgeSignalsResultOptions</a></code> |\n\n**Since:** 0.3.1\n\n--------------------\n\n\n### setNextRequestAgeSignalsAccessException(...)\n\n```typescript\nsetNextRequestAgeSignalsAccessException(options: SetNextRequestAgeSignalsAccessExceptionOptions) => Promise<void>\n```\n\nSet the next error to be thrown by the fake manager when access to the age\nrange is requested.\n\nOnly available on Android.\n\n| Param         | Type                                                                                                                      |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setnextrequestagesignalsaccessexceptionoptions\">SetNextRequestAgeSignalsAccessExceptionOptions</a></code> |\n\n**Since:** 0.5.0\n\n--------------------\n\n\n### setUseFakeManager(...)\n\n```typescript\nsetUseFakeManager(options: SetUseFakeManagerOptions) => Promise<void>\n```\n\nEnable or disable the fake manager for testing.\n\nThe fake manager is only available in debuggable builds. In release builds\nthis method rejects with `FAKE_MANAGER_NOT_ALLOWED`, because it would\notherwise allow age signals to be forged from the web layer.\n\nOnly available on Android.\n\n| Param         | Type                                                                          |\n| ------------- | ----------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#setusefakemanageroptions\">SetUseFakeManagerOptions</a></code> |\n\n**Since:** 0.3.1\n\n--------------------\n\n\n### showSignificantUpdateAcknowledgment(...)\n\n```typescript\nshowSignificantUpdateAcknowledgment(options: ShowSignificantUpdateAcknowledgmentOptions) => Promise<void>\n```\n\nShow a system interface that lets the user acknowledge a significant\nchange to the app.\n\nOnly call this method if `getRegulatoryRequirements()` returned\n`SIGNIFICANT_APP_CHANGE_REQUIRES_ADULT_NOTIFICATION`.\n\nOnly available on iOS (26.4+).\n\n| Param         | Type                                                                                                              |\n| ------------- | ----------------------------------------------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#showsignificantupdateacknowledgmentoptions\">ShowSignificantUpdateAcknowledgmentOptions</a></code> |\n\n**Since:** 0.5.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### GetAgeRangeResult\n\n| Prop                    | Type                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                      | Since |\n| ----------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`ageRange`**          | <code><a href=\"#agerange\">AgeRange</a></code>                   | The age range that the user has shared with the app. `undefined` if the user has not shared their age range.                                                                                                                                                                                                                                                                                                     | 0.5.0 |\n| **`installId`**         | <code>string</code>                                             | An ID assigned to supervised user installs by Google Play, used for the purposes of notifying you of revoked app approval. Only available on Android.                                                                                                                                                                                                                                                            | 0.5.0 |\n| **`significantChange`** | <code><a href=\"#significantchange\">SignificantChange</a></code> | The parental approval state for the significant changes of the app. Significant changes are declared in the Google Play Console. Google Play then asks the parent or guardian of a supervised user to approve them. `undefined` if the user is not supervised, if no significant change has been declared yet or if significant changes do not apply in the jurisdiction of the user. Only available on Android. | 0.5.0 |\n\n\n#### AgeRange\n\n| Prop                         | Type                                                                | Description                                                                                                                                                                     | Since |\n| ---------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`activeParentalControls`** | <code>ParentalControl[]</code>                                      | The parental controls that are active for the user. Only available on iOS.                                                                                                      | 0.5.0 |\n| **`ageRangeDeclaration`**    | <code><a href=\"#agerangedeclaration\">AgeRangeDeclaration</a></code> | How the age range was declared. The more granular values are only returned in some regions. `undefined` if the system does not provide this information. Only available on iOS. | 0.5.0 |\n| **`ageRangeSource`**         | <code><a href=\"#agerangesource\">AgeRangeSource</a></code>           | How the age range was established. `undefined` if the system does not provide this information. Only available on Android.                                                      | 0.5.0 |\n| **`lowerBound`**             | <code>number</code>                                                 | The (inclusive) lower bound of the age range. `undefined` if the user is below the lowest requested age gate.                                                                   | 0.5.0 |\n| **`upperBound`**             | <code>number</code>                                                 | The (inclusive) upper bound of the age range. `undefined` if the user meets or exceeds the highest requested age gate.                                                          | 0.5.0 |\n\n\n#### SignificantChange\n\n| Prop               | Type                                                                        | Description                                                                                                                                                                                                                       | Since |\n| ------------------ | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`approvalDate`** | <code>string</code>                                                         | The effective date of the most recently approved significant change, in ISO 8601 format. All significant changes with an earlier effective date are approved as well. `undefined` if no significant change has been approved yet. | 0.5.0 |\n| **`status`**       | <code><a href=\"#significantchangestatus\">SignificantChangeStatus</a></code> | The parental approval state for the most recent significant change.                                                                                                                                                               | 0.5.0 |\n\n\n#### GetRegulatoryRequirementsResult\n\n| Prop                       | Type                             | Description                                                                                                          | Since |\n| -------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`ageAssuranceRequired`** | <code>boolean</code>             | Whether the user must share their age range because of a law or regulation that applies to their region and account. | 0.5.0 |\n| **`regulatoryFeatures`**   | <code>RegulatoryFeature[]</code> | The regulatory features that the app must support for this user. Empty on iOS versions below 26.4.                   | 0.5.0 |\n\n\n#### IsAvailableResult\n\n| Prop            | Type                 | Description                                       | Since |\n| --------------- | -------------------- | ------------------------------------------------- | ----- |\n| **`available`** | <code>boolean</code> | Whether age signals are available on this device. | 0.5.0 |\n\n\n#### RequestAgeRangeResult\n\n| Prop                    | Type                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                      | Since |\n| ----------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`ageRange`**          | <code><a href=\"#agerange\">AgeRange</a></code>                   | The age range that the user has shared with the app. `undefined` if the status is not `SHARED`.                                                                                                                                                                                                                                                                                                                  | 0.5.0 |\n| **`installId`**         | <code>string</code>                                             | An ID assigned to supervised user installs by Google Play, used for the purposes of notifying you of revoked app approval. Only available on Android.                                                                                                                                                                                                                                                            | 0.5.0 |\n| **`significantChange`** | <code><a href=\"#significantchange\">SignificantChange</a></code> | The parental approval state for the significant changes of the app. Significant changes are declared in the Google Play Console. Google Play then asks the parent or guardian of a supervised user to approve them. `undefined` if the user is not supervised, if no significant change has been declared yet or if significant changes do not apply in the jurisdiction of the user. Only available on Android. | 0.5.0 |\n| **`status`**            | <code><a href=\"#agerangestatus\">AgeRangeStatus</a></code>       | Whether the user has shared their age range with the app.                                                                                                                                                                                                                                                                                                                                                        | 0.5.0 |\n\n\n#### RequestAgeRangeOptions\n\n| Prop           | Type                  | Description                                                                                                                                                                                                                                                                                                                                          | Default                   | Since |\n| -------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ----- |\n| **`ageGates`** | <code>number[]</code> | The age thresholds that are relevant for the app. The provided array must contain at least 1 and at most 3 ages. The ages must be sorted in ascending order and must be at least two years apart from each other. The system may ignore these thresholds and return a different age range if a law or regulation requires it. Only available on iOS. | <code>[13, 15, 18]</code> | 0.5.0 |\n\n\n#### SetNextAgeSignalsAccessResultOptions\n\n| Prop         | Type                                                      | Description                                    | Since |\n| ------------ | --------------------------------------------------------- | ---------------------------------------------- | ----- |\n| **`status`** | <code><a href=\"#agerangestatus\">AgeRangeStatus</a></code> | The status to be returned by the fake manager. | 0.5.0 |\n\n\n#### SetNextAgeSignalsExceptionOptions\n\n| Prop            | Type                                            | Description                                                                                                        | Since |\n| --------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ----- |\n| **`errorCode`** | <code><a href=\"#errorcode\">ErrorCode</a></code> | The error code to be thrown by the fake manager. Only the error codes that are available on Android are supported. | 0.3.1 |\n\n\n#### SetNextAgeSignalsResultOptions\n\n| Prop                                | Type                                                                        | Description                                                                              | Since |\n| ----------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----- |\n| **`ageLower`**                      | <code>number</code>                                                         | The (inclusive) lower bound of the age range.                                            | 0.3.1 |\n| **`ageRangeSource`**                | <code><a href=\"#agerangesource\">AgeRangeSource</a></code>                   | How the age range was established.                                                       | 0.5.0 |\n| **`ageUpper`**                      | <code>number</code>                                                         | The (inclusive) upper bound of the age range.                                            | 0.3.1 |\n| **`installId`**                     | <code>string</code>                                                         | An ID assigned to supervised user installs by Google Play.                               | 0.3.1 |\n| **`significantChangeApprovalDate`** | <code>string</code>                                                         | The effective date of the most recently approved significant change, in ISO 8601 format. | 0.5.0 |\n| **`significantChangeStatus`**       | <code><a href=\"#significantchangestatus\">SignificantChangeStatus</a></code> | The parental approval state for the most recent significant change.                      | 0.5.0 |\n\n\n#### SetNextRequestAgeSignalsAccessExceptionOptions\n\n| Prop            | Type                                            | Description                                                                                                        | Since |\n| --------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ----- |\n| **`errorCode`** | <code><a href=\"#errorcode\">ErrorCode</a></code> | The error code to be thrown by the fake manager. Only the error codes that are available on Android are supported. | 0.5.0 |\n\n\n#### SetUseFakeManagerOptions\n\n| Prop          | Type                 | Description                                  | Default            | Since |\n| ------------- | -------------------- | -------------------------------------------- | ------------------ | ----- |\n| **`useFake`** | <code>boolean</code> | Whether to use the fake manager for testing. | <code>false</code> | 0.3.1 |\n\n\n#### ShowSignificantUpdateAcknowledgmentOptions\n\n| Prop                    | Type                | Description                                                                              | Since |\n| ----------------------- | ------------------- | ---------------------------------------------------------------------------------------- | ----- |\n| **`updateDescription`** | <code>string</code> | A short description of what has changed in the app and why the user must acknowledge it. | 0.5.0 |\n\n\n### Enums\n\n\n#### ParentalControl\n\n| Members                   | Value                               | Description                                                | Since |\n| ------------------------- | ----------------------------------- | ---------------------------------------------------------- | ----- |\n| **`CommunicationLimits`** | <code>'COMMUNICATION_LIMITS'</code> | The system limits the communication features for the user. | 0.5.0 |\n\n\n#### AgeRangeDeclaration\n\n| Members                            | Value                                           | Description                                                                                                           | Since |\n| ---------------------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`CheckedByOtherMethod`**         | <code>'CHECKED_BY_OTHER_METHOD'</code>          | The user set their own age range using an unspecified method. Only available on iOS (26.2+).                          | 0.5.0 |\n| **`Confirmed`**                    | <code>'CONFIRMED'</code>                        | The age range was set using a scrutinized method, like a credit card or government ID. Only available on iOS (26.5+). | 0.4.0 |\n| **`GovernmentIdChecked`**          | <code>'GOVERNMENT_ID_CHECKED'</code>            | The user set their own age range using a government ID. Only available on iOS (26.2+).                                | 0.5.0 |\n| **`GuardianCheckedByOtherMethod`** | <code>'GUARDIAN_CHECKED_BY_OTHER_METHOD'</code> | A parent or guardian set the age range using an unspecified method. Only available on iOS (26.2+).                    | 0.5.0 |\n| **`GuardianDeclared`**             | <code>'GUARDIAN_DECLARED'</code>                | A parent or guardian declared the age range without external verification.                                            | 0.4.0 |\n| **`GuardianGovernmentIdChecked`**  | <code>'GUARDIAN_GOVERNMENT_ID_CHECKED'</code>   | A parent or guardian set the age range using a government ID. Only available on iOS (26.2+).                          | 0.5.0 |\n| **`GuardianPaymentChecked`**       | <code>'GUARDIAN_PAYMENT_CHECKED'</code>         | A parent or guardian set the age range using a payment method, like a credit card. Only available on iOS (26.2+).     | 0.5.0 |\n| **`PaymentChecked`**               | <code>'PAYMENT_CHECKED'</code>                  | The user set their own age range using a payment method, like a credit card. Only available on iOS (26.2+).           | 0.5.0 |\n| **`SelfDeclared`**                 | <code>'SELF_DECLARED'</code>                    | The user declared their own age range without external verification.                                                  | 0.4.0 |\n\n\n#### AgeRangeSource\n\n| Members     | Value                 | Description                                                                                                               | Since |\n| ----------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`TierA`** | <code>'TIER_A'</code> | The user has self-declared their age.                                                                                     | 0.5.0 |\n| **`TierB`** | <code>'TIER_B'</code> | The age of the user is managed by a parent or guardian.                                                                   | 0.5.0 |\n| **`TierC`** | <code>'TIER_C'</code> | The age of the user was assessed using a credit card, an email address, a selfie assessment, a government ID or a tax ID. | 0.5.0 |\n| **`TierD`** | <code>'TIER_D'</code> | The age of the user was checked using a combination of a government ID and a selfie assessment, or using a digital ID.    | 0.5.0 |\n\n\n#### SignificantChangeStatus\n\n| Members        | Value                   | Description                                                                                               | Since |\n| -------------- | ----------------------- | --------------------------------------------------------------------------------------------------------- | ----- |\n| **`Approved`** | <code>'APPROVED'</code> | The parent or guardian has approved the most recent significant change and all prior significant changes. | 0.5.0 |\n| **`Declined`** | <code>'DECLINED'</code> | The parent or guardian has declined one or more significant changes.                                      | 0.5.0 |\n| **`Pending`**  | <code>'PENDING'</code>  | The parent or guardian has not yet approved one or more significant changes.                              | 0.5.0 |\n\n\n#### RegulatoryFeature\n\n| Members                                             | Value                                                             | Description                                                                                                                                                                        | Since |\n| --------------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`DeclaredAgeRangeRequired`**                      | <code>'DECLARED_AGE_RANGE_REQUIRED'</code>                        | The user must share their age range with the app.                                                                                                                                  | 0.5.0 |\n| **`SignificantAppChangeRequiresAdultNotification`** | <code>'SIGNIFICANT_APP_CHANGE_REQUIRES_ADULT_NOTIFICATION'</code> | An adult user must acknowledge a significant change of the app. Use `showSignificantUpdateAcknowledgment(...)` to show the system interface for the acknowledgment.                | 0.5.0 |\n| **`SignificantAppChangeRequiresParentalConsent`**   | <code>'SIGNIFICANT_APP_CHANGE_REQUIRES_PARENTAL_CONSENT'</code>   | A parent or guardian must consent to a significant change of the app. This plugin does not implement the consent flow. Use Apple's PermissionKit framework to request the consent. | 0.5.0 |\n\n\n#### AgeRangeStatus\n\n| Members                    | Value                                | Description                                                                                                                                                                               | Since |\n| -------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`NotShared`**            | <code>'NOT_SHARED'</code>            | The user has not shared their age range with the app.                                                                                                                                     | 0.5.0 |\n| **`Shared`**               | <code>'SHARED'</code>                | The user has shared their age range with the app.                                                                                                                                         | 0.5.0 |\n| **`Unspecified`**          | <code>'UNSPECIFIED'</code>           | The system did not specify whether the user has shared their age range. Treat this value like `NOT_SHARED`. Google Play does not document when it is returned. Only available on Android. | 0.5.0 |\n| **`VerificationRequired`** | <code>'VERIFICATION_REQUIRED'</code> | The user must verify their age in the Google Play Store before the age range can be shared. Only available on Android.                                                                    | 0.5.0 |\n\n\n#### ErrorCode\n\n| Members                              | Value                                           | Description                                                                                                                                                                                 | Since |\n| ------------------------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`ApiNotAvailable`**                | <code>'API_NOT_AVAILABLE'</code>                | The age signals API is not available. On **Android**, the Play Store app version installed on the device might be old. On **iOS**, the system was unable to share the age range.            | 0.0.1 |\n| **`AppNotOwned`**                    | <code>'APP_NOT_OWNED'</code>                    | The app was not installed by Google Play. Only available on Android.                                                                                                                        | 0.0.1 |\n| **`CannotBindToService`**            | <code>'CANNOT_BIND_TO_SERVICE'</code>           | Binding to the service in the Play Store has failed. This can be due to having an old Play Store version installed on the device or device memory is overloaded. Only available on Android. | 0.0.1 |\n| **`ClientTransientError`**           | <code>'CLIENT_TRANSIENT_ERROR'</code>           | There was a transient error in the client device. Only available on Android.                                                                                                                | 0.0.1 |\n| **`FakeManagerNotAllowed`**          | <code>'FAKE_MANAGER_NOT_ALLOWED'</code>         | The fake manager is not available, because the app is not debuggable. Only available on Android.                                                                                            | 0.5.0 |\n| **`FakeManagerNotEnabled`**          | <code>'FAKE_MANAGER_NOT_ENABLED'</code>         | The fake manager is not enabled. Only available on Android.                                                                                                                                 | 0.5.0 |\n| **`InternalError`**                  | <code>'INTERNAL_ERROR'</code>                   | Unknown internal error. Only available on Android.                                                                                                                                          | 0.0.1 |\n| **`InvalidRequest`**                 | <code>'INVALID_REQUEST'</code>                  | The request contains invalid parameters. On **iOS**, this is also returned if the requested age gates are rejected by the system.                                                           | 0.5.0 |\n| **`NetworkError`**                   | <code>'NETWORK_ERROR'</code>                    | No available network is found. Only available on Android.                                                                                                                                   | 0.0.1 |\n| **`NotSupported`**                   | <code>'NOT_SUPPORTED'</code>                    | Age signals are not supported on this device.                                                                                                                                               | 0.5.0 |\n| **`PlayServicesNotFound`**           | <code>'PLAY_SERVICES_NOT_FOUND'</code>          | Play Services is not available or its version is too old. Only available on Android.                                                                                                        | 0.0.1 |\n| **`PlayServicesVersionOutdated`**    | <code>'PLAY_SERVICES_VERSION_OUTDATED'</code>   | Play Services needs to be updated. Only available on Android.                                                                                                                               | 0.0.1 |\n| **`PlayStoreNotFound`**              | <code>'PLAY_STORE_NOT_FOUND'</code>             | No Play Store app is found on the device. Only available on Android.                                                                                                                        | 0.0.1 |\n| **`PlayStoreVersionOutdated`**       | <code>'PLAY_STORE_VERSION_OUTDATED'</code>      | The Play Store app needs to be updated. Only available on Android.                                                                                                                          | 0.0.1 |\n| **`PresentationContextUnavailable`** | <code>'PRESENTATION_CONTEXT_UNAVAILABLE'</code> | No view controller was found to present the system interface. Only available on iOS.                                                                                                        | 0.5.0 |\n| **`SdkVersionOutdated`**             | <code>'SDK_VERSION_OUTDATED'</code>             | The Age Signals SDK version is outdated. Only available on Android.                                                                                                                         | 0.4.0 |\n\n</docgen-api>\n\n## Testing\n\nThe plugin includes support for the `FakeAgeSignalsManager` API on Android, which allows you to simulate different age signals scenarios in your tests without requiring live responses from Google Play.\n\n### Android Testing\n\n**Important**: The fake manager is only available if your app is debuggable. In release builds, `setUseFakeManager(...)` rejects with `FAKE_MANAGER_NOT_ALLOWED`, because it would otherwise allow age signals to be forged from the web layer.\n\n**Important**: Due to a known issue in versions 0.0.1 and 0.0.2 of the Age Signals API, you may encounter a `java.lang.VerifyError` when calling the builder method of `AgeSignalsResult` in unit tests. As a workaround, run your tests as Android instrumented tests within the `androidTest` source set.\n\n#### Example: Testing a Self-Declared Adult User\n\n```typescript\nimport {\n  AgeRangeSource,\n  AgeRangeStatus,\n  AgeSignals,\n} from '@capawesome/capacitor-age-signals';\n\n// Enable the fake manager\nawait AgeSignals.setUseFakeManager({ useFake: true });\n\n// The user agrees to share their age range\nawait AgeSignals.setNextAgeSignalsAccessResult({\n  status: AgeRangeStatus.Shared,\n});\n\n// Set up an adult user\nawait AgeSignals.setNextAgeSignalsResult({\n  ageLower: 18,\n  ageRangeSource: AgeRangeSource.TierA,\n});\n\nconst result = await AgeSignals.requestAgeRange();\nconsole.log(result.status); // 'SHARED'\nconsole.log(result.ageRange?.lowerBound); // 18\n```\n\n#### Example: Testing a Supervised User (13-17 years old)\n\n```typescript\nimport {\n  AgeRangeSource,\n  AgeRangeStatus,\n  AgeSignals,\n} from '@capawesome/capacitor-age-signals';\n\nawait AgeSignals.setUseFakeManager({ useFake: true });\n\nawait AgeSignals.setNextAgeSignalsAccessResult({\n  status: AgeRangeStatus.Shared,\n});\n\nawait AgeSignals.setNextAgeSignalsResult({\n  ageLower: 13,\n  ageUpper: 17,\n  ageRangeSource: AgeRangeSource.TierB,\n  installId: 'fake_install_id',\n});\n\nconst result = await AgeSignals.requestAgeRange();\nconsole.log(result.ageRange?.lowerBound); // 13\nconsole.log(result.ageRange?.upperBound); // 17\nconsole.log(result.installId); // 'fake_install_id'\n```\n\n#### Example: Testing Parental Approval Scenarios\n\n```typescript\nimport {\n  AgeRangeSource,\n  AgeRangeStatus,\n  AgeSignals,\n  SignificantChangeStatus,\n} from '@capawesome/capacitor-age-signals';\n\nawait AgeSignals.setUseFakeManager({ useFake: true });\n\nawait AgeSignals.setNextAgeSignalsAccessResult({\n  status: AgeRangeStatus.Shared,\n});\n\n// Test pending approval\nawait AgeSignals.setNextAgeSignalsResult({\n  ageLower: 13,\n  ageUpper: 17,\n  ageRangeSource: AgeRangeSource.TierB,\n  significantChangeApprovalDate: '2026-02-01T00:00:00.000Z',\n  significantChangeStatus: SignificantChangeStatus.Pending,\n});\n\nconst result = await AgeSignals.requestAgeRange();\nconsole.log(result.significantChange?.status); // 'PENDING'\nconsole.log(result.significantChange?.approvalDate); // '2026-02-01T00:00:00.000Z'\n```\n\n#### Example: Testing a User Who Must Verify Their Age\n\n```typescript\nimport { AgeRangeStatus, AgeSignals } from '@capawesome/capacitor-age-signals';\n\nawait AgeSignals.setUseFakeManager({ useFake: true });\n\nawait AgeSignals.setNextAgeSignalsAccessResult({\n  status: AgeRangeStatus.VerificationRequired,\n});\n\nconst result = await AgeSignals.requestAgeRange();\nconsole.log(result.status); // 'VERIFICATION_REQUIRED'\nconsole.log(result.ageRange); // undefined\n```\n\n#### Example: Testing Error Scenarios\n\n```typescript\nimport { AgeSignals, ErrorCode } from '@capawesome/capacitor-age-signals';\n\nawait AgeSignals.setUseFakeManager({ useFake: true });\n\n// Simulate a network error while access is requested\nawait AgeSignals.setNextRequestAgeSignalsAccessException({\n  errorCode: ErrorCode.NetworkError,\n});\n\ntry {\n  await AgeSignals.requestAgeRange();\n} catch (error) {\n  console.log('Caught network error:', error);\n}\n\n// Simulate a network error while the age range is read\nawait AgeSignals.setNextAgeSignalsException({\n  errorCode: ErrorCode.NetworkError,\n});\n\ntry {\n  await AgeSignals.getAgeRange();\n} catch (error) {\n  console.log('Caught network error:', error);\n}\n```\n\n#### Disabling the Fake Manager\n\n```typescript\nimport { AgeSignals } from '@capawesome/capacitor-age-signals';\n\n// Switch back to the production manager\nawait AgeSignals.setUseFakeManager({ useFake: false });\n\n// This will now use the real Age Signals API\nconst result = await AgeSignals.requestAgeRange();\n```\n\n## FAQ\n\n### Which age verification APIs does this plugin use?\n\nOn Android, the plugin uses the [Play Age Signals API](https://developer.android.com/google/play/age-signals/overview) to request age signals from Google Play. On iOS, it uses Apple's [DeclaredAgeRange](https://developer.apple.com/documentation/declaredagerange/) framework, which requires the `com.apple.developer.declared-age-range` entitlement (see [Installation](#installation)).\n\n### What do the different statuses mean?\n\nThe `status` property tells you whether the user shared their age range. `SHARED` means an age range is available, `NOT_SHARED` means the user declined or is not in an applicable region, and `VERIFICATION_REQUIRED` (Android only) means the user must resolve their status in the Google Play Store first.\n\n### How do the Android age range sources map to the iOS age range declarations?\n\nAndroid reports how an age was established as a tier, while iOS reports a declaration method. They do not map one to one, so both values are exposed as separate properties. The following table shows the closest equivalents:\n\n| Android   | iOS                                                                                                     |\n| --------- | ------------------------------------------------------------------------------------------------------- |\n| `TIER_A`  | `SELF_DECLARED`                                                                                          |\n| `TIER_B`  | `GUARDIAN_DECLARED`                                                                                      |\n| `TIER_C`  | `PAYMENT_CHECKED`, `CHECKED_BY_OTHER_METHOD`, `GUARDIAN_PAYMENT_CHECKED`, `GUARDIAN_CHECKED_BY_OTHER_METHOD` |\n| `TIER_D`  | `GOVERNMENT_ID_CHECKED`, `GUARDIAN_GOVERNMENT_ID_CHECKED`                                                |\n\nOn iOS 26.5 and later, the more granular declarations may be replaced by `CONFIRMED`, which covers both `TIER_C` and `TIER_D`.\n\n### How can I test different age verification scenarios?\n\nOn Android, the plugin integrates the `FakeAgeSignalsManager` API, which lets you simulate age signals without live responses from Google Play. Enable it with `setUseFakeManager(...)` and set the next results or exceptions with `setNextAgeSignalsAccessResult(...)`, `setNextAgeSignalsResult(...)`, `setNextRequestAgeSignalsAccessException(...)` and `setNextAgeSignalsException(...)`. The fake manager is only available if your app is debuggable. See the [Testing](#testing) section for complete examples.\n\n### Why do I get a VerifyError in my Android unit tests?\n\nDue to a known issue in versions 0.0.1 and 0.0.2 of the Age Signals API, calling the builder method of `AgeSignalsResult` in unit tests may throw a `java.lang.VerifyError`. As a workaround, run your tests as Android instrumented tests within the `androidTest` source set.\n\n### Why does the plugin reject with an error like API_NOT_AVAILABLE or APP_NOT_OWNED?\n\nThe Play Age Signals API requires an up-to-date Play Store app and Play Services on the device, so errors like `API_NOT_AVAILABLE`, `PLAY_STORE_VERSION_OUTDATED`, or `PLAY_SERVICES_NOT_FOUND` usually indicate outdated or missing Google Play components. The `APP_NOT_OWNED` error means the app was not installed by Google Play. Check the `ErrorCode` enum in the [API](#api) section for the full list of error codes.\n\n### Can I use this plugin with Ionic, React, Vue or Angular?\n\nYes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.\n\n## Related Plugins\n\n- [App Integrity](https://capawesome.io/docs/sdks/capacitor/app-integrity/): Verify app and device integrity using the Play Integrity API and App Attest.\n- [App Tracking Transparency](https://capawesome.io/docs/sdks/capacitor/app-tracking-transparency/): Request user authorization via Apple's App Tracking Transparency framework.\n- [Root Detection](https://capawesome.io/docs/sdks/capacitor/root-detection/): Detect rooted and jailbroken devices.\n\n## Newsletter\n\nStay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/age-signals/CHANGELOG.md).\n\n## License\n\nSee [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/age-signals/LICENSE).\n","readmeFilename":"README.md"}