{"_id":"@daflan/keyward-recovery","_rev":"4-92ebd739a26f0068f76c2ac6ec73efca","name":"@daflan/keyward-recovery","dist-tags":{"latest":"0.0.13"},"versions":{"0.0.10":{"name":"@daflan/keyward-recovery","version":"0.0.10","license":"MIT","_id":"@daflan/keyward-recovery@0.0.10","maintainers":[{"name":"mashadow","email":"mashadow@outlook.com"}],"homepage":"https://github.com/daflan-org/keyward#readme","bugs":{"url":"https://github.com/daflan-org/keyward/issues"},"dist":{"shasum":"e928e3ac7aa9f034ab1bd79ed6d2ff33535923c1","tarball":"https://registry.npmjs.org/@daflan/keyward-recovery/-/keyward-recovery-0.0.10.tgz","fileCount":23,"integrity":"sha512-/nQZFKxn1rihM2o+Auu3h/GhZbi3eeONk6bvUeXOKavZDrFyX9mngKYnXrC2l0VrxlRz6wJXzUcfzY3DirUybg==","signatures":[{"sig":"MEQCIAlFMBGN9P7p+OKJS+IAoqBd0fYL/aF0xmeiUYYbBWFMAiBlJxEwTWjx5j+KG/ks4MiDJmpdKahvMnArrI6tEFTmNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@daflan%2fkeyward-recovery@0.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49344},"main":"dist/index.cjs","type":"module","_from":"file:package.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"biome check src/","test":"vitest run --passWithNoTests","build":"tsup","clean":"rm -rf dist ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true","prepack":"yarn prepare:ios && yarn prepare:android","lint:fix":"biome check --write src/","postpack":"rm -rf ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true","typecheck":"tsc --noEmit","prepare:ios":"test -d ../platform-ios-recovery/Sources/KeywardRecovery && rm -rf ios/Sources/KeywardRecovery && cp -r ../platform-ios-recovery/Sources/KeywardRecovery ios/Sources/KeywardRecovery","prepare:android":"test -d ../platform-android-recovery/src/main/java/org/keyward/recovery && cp ../platform-android-recovery/src/main/java/org/keyward/recovery/*.java android/src/main/java/org/keyward/recovery/"},"_npmUser":{"name":"mashadow","email":"mashadow@outlook.com"},"_resolved":"/home/runner/work/keyward/keyward/packages/recovery-capacitor/package.tgz","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"_integrity":"sha512-/nQZFKxn1rihM2o+Auu3h/GhZbi3eeONk6bvUeXOKavZDrFyX9mngKYnXrC2l0VrxlRz6wJXzUcfzY3DirUybg==","repository":{"url":"git+https://github.com/daflan-org/keyward.git","type":"git","directory":"packages/recovery-capacitor"},"_npmVersion":"10.9.8","description":"Capacitor bridge for Keyward recoverable secrets (passkey-PRF native + recovery-core)","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@daflan/keyward-recovery-core":"0.0.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.4","typescript":"^6.0.2","@capacitor/core":"^8.3.0"},"peerDependencies":{"@capacitor/core":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/keyward-recovery_0.0.10_1785439325358_0.5846092944881303","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@daflan/keyward-recovery","version":"0.0.11","license":"MIT","_id":"@daflan/keyward-recovery@0.0.11","maintainers":[{"name":"mashadow","email":"mashadow@outlook.com"}],"homepage":"https://github.com/daflan-org/keyward#readme","bugs":{"url":"https://github.com/daflan-org/keyward/issues"},"dist":{"shasum":"5db6539ee3ee62bcafb67bb5e693eac60159dd2c","tarball":"https://registry.npmjs.org/@daflan/keyward-recovery/-/keyward-recovery-0.0.11.tgz","fileCount":23,"integrity":"sha512-1l2wLxdNEVhFWTV3ty4sCHj0hTzop3mQAfQLDa6lqYhKQ1ED+ICRkkJm+FZLDsfjIkEnGmGuUbcpdiR1Sza2zQ==","signatures":[{"sig":"MEYCIQCMQpRSbek6edWZ/FuW99AORBXjm490oLQkNk+xFA+ffAIhAIfk87O28oTVJ4xmYynmm7+YPzclNFl5R5rBc9/D30VC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@daflan%2fkeyward-recovery@0.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49326},"main":"dist/index.cjs","type":"module","_from":"file:package.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"biome check src/","test":"vitest run --passWithNoTests","build":"tsup","clean":"rm -rf dist ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true","prepack":"yarn prepare:ios && yarn prepare:android","lint:fix":"biome check --write src/","postpack":"rm -rf ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true","typecheck":"tsc --noEmit","prepare:ios":"test -d ../platform-ios-recovery/Sources/KeywardRecovery && rm -rf ios/Sources/KeywardRecovery && cp -r ../platform-ios-recovery/Sources/KeywardRecovery ios/Sources/KeywardRecovery","prepare:android":"test -d ../platform-android-recovery/src/main/java/org/keyward/recovery && cp ../platform-android-recovery/src/main/java/org/keyward/recovery/*.java android/src/main/java/org/keyward/recovery/"},"_npmUser":{"name":"mashadow","email":"mashadow@outlook.com"},"_resolved":"/home/runner/work/keyward/keyward/packages/recovery-capacitor/package.tgz","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"_integrity":"sha512-1l2wLxdNEVhFWTV3ty4sCHj0hTzop3mQAfQLDa6lqYhKQ1ED+ICRkkJm+FZLDsfjIkEnGmGuUbcpdiR1Sza2zQ==","repository":{"url":"git+https://github.com/daflan-org/keyward.git","type":"git","directory":"packages/recovery-capacitor"},"_npmVersion":"10.9.8","description":"Capacitor bridge for Keyward recoverable secrets (passkey-PRF native + recovery-core)","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@daflan/keyward-recovery-core":"0.0.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.4","typescript":"^6.0.2","@capacitor/core":"^8.3.0"},"peerDependencies":{"@capacitor/core":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/keyward-recovery_0.0.11_1785446287991_0.9299240046552606","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@daflan/keyward-recovery","version":"0.0.12","license":"MIT","_id":"@daflan/keyward-recovery@0.0.12","maintainers":[{"name":"mashadow","email":"mashadow@outlook.com"}],"homepage":"https://github.com/daflan-org/keyward#readme","bugs":{"url":"https://github.com/daflan-org/keyward/issues"},"dist":{"shasum":"d1395e3a1647f78e9499ef2cbdb0defdda6ab6c3","tarball":"https://registry.npmjs.org/@daflan/keyward-recovery/-/keyward-recovery-0.0.12.tgz","fileCount":23,"integrity":"sha512-YfKicBpIXo3+RcfEa5evIU/xluqvDQjpnkEXkC3CmWo3QNYQgtn9kM7pucV4x5O1/SxUqKN5qsVzzptuoaLvuw==","signatures":[{"sig":"MEUCIGGoH4o4ngIWBn8CrUEolUm+oIr+7qbzpqaZAme937HvAiEA69xhSYkbuQfBZ4EAIj/NnZBAa1OpbhkdBz/Dbh7Mq38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@daflan%2fkeyward-recovery@0.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49804},"main":"dist/index.cjs","type":"module","_from":"file:package.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"biome check src/","test":"vitest run --passWithNoTests","build":"tsup","clean":"rm -rf dist ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true","prepack":"yarn prepare:ios && yarn prepare:android","lint:fix":"biome check --write src/","postpack":"rm -rf ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true","typecheck":"tsc --noEmit","prepare:ios":"test -d ../platform-ios-recovery/Sources/KeywardRecovery && rm -rf ios/Sources/KeywardRecovery && cp -r ../platform-ios-recovery/Sources/KeywardRecovery ios/Sources/KeywardRecovery","prepare:android":"test -d ../platform-android-recovery/src/main/java/org/keyward/recovery && cp ../platform-android-recovery/src/main/java/org/keyward/recovery/*.java android/src/main/java/org/keyward/recovery/"},"_npmUser":{"name":"mashadow","email":"mashadow@outlook.com"},"_resolved":"/home/runner/work/keyward/keyward/packages/recovery-capacitor/package.tgz","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"_integrity":"sha512-YfKicBpIXo3+RcfEa5evIU/xluqvDQjpnkEXkC3CmWo3QNYQgtn9kM7pucV4x5O1/SxUqKN5qsVzzptuoaLvuw==","repository":{"url":"git+https://github.com/daflan-org/keyward.git","type":"git","directory":"packages/recovery-capacitor"},"_npmVersion":"10.9.8","description":"Capacitor bridge for Keyward recoverable secrets (passkey-PRF native + recovery-core)","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@daflan/keyward-recovery-core":"0.0.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.4","typescript":"^6.0.2","@capacitor/core":"^8.3.0"},"peerDependencies":{"@capacitor/core":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/keyward-recovery_0.0.12_1785450242886_0.7120678283992969","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@daflan/keyward-recovery","version":"0.0.13","description":"Capacitor bridge for Keyward recoverable secrets (passkey-PRF native + recovery-core)","license":"MIT","repository":{"type":"git","url":"git+https://github.com/daflan-org/keyward.git","directory":"packages/recovery-capacitor"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build":"tsup","test":"vitest run --passWithNoTests","lint":"biome check src/","lint:fix":"biome check --write src/","typecheck":"tsc --noEmit","clean":"rm -rf dist ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true","prepare:ios":"test -d ../platform-ios-recovery/Sources/KeywardRecovery && rm -rf ios/Sources/KeywardRecovery && cp -r ../platform-ios-recovery/Sources/KeywardRecovery ios/Sources/KeywardRecovery","prepare:android":"test -d ../platform-android-recovery/src/main/java/org/keyward/recovery && cp ../platform-android-recovery/src/main/java/org/keyward/recovery/*.java android/src/main/java/org/keyward/recovery/","prepack":"yarn prepare:ios && yarn prepare:android","postpack":"rm -rf ios/Sources/KeywardRecovery && find android/src/main/java/org/keyward/recovery -maxdepth 1 -name '*.java' -delete 2>/dev/null; true"},"peerDependencies":{"@capacitor/core":"^8.0.0"},"dependencies":{"@daflan/keyward-recovery-core":"0.0.13"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"devDependencies":{"@capacitor/core":"^8.3.0","tsup":"^8.5.1","typescript":"^6.0.2","vitest":"^4.1.4"},"_id":"@daflan/keyward-recovery@0.0.13","bugs":{"url":"https://github.com/daflan-org/keyward/issues"},"homepage":"https://github.com/daflan-org/keyward#readme","_integrity":"sha512-tT1QrzkVM+g5BGwJH1UbdEVq63pZmnMDw43di2v8/Ck6ujZDAES/Rz8OR6Mo0FwNw+Z9IJDVE1t+QneV450LvQ==","_resolved":"/home/runner/work/keyward/keyward/packages/recovery-capacitor/package.tgz","_from":"file:package.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-tT1QrzkVM+g5BGwJH1UbdEVq63pZmnMDw43di2v8/Ck6ujZDAES/Rz8OR6Mo0FwNw+Z9IJDVE1t+QneV450LvQ==","shasum":"a7a25b740ff82cf07d4ee925c4cd7d01c910ce0b","tarball":"https://registry.npmjs.org/@daflan/keyward-recovery/-/keyward-recovery-0.0.13.tgz","fileCount":23,"unpackedSize":50503,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@daflan%2fkeyward-recovery@0.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG6fajlsIZlHots4nTWoN2A3uj+KeAB+G7HltfPc1bwuAiEA+kJA3NkZeB73rSSsqjk8IvF/38aD38SswoNesP/EsdU="}]},"_npmUser":{"name":"mashadow","email":"mashadow@outlook.com"},"directories":{},"maintainers":[{"name":"mashadow","email":"mashadow@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/keyward-recovery_0.0.13_1785461889977_0.6921252152433444"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-30T19:22:05.145Z","modified":"2026-07-31T01:38:10.417Z","0.0.10":"2026-07-30T19:22:05.525Z","0.0.11":"2026-07-30T21:18:08.110Z","0.0.12":"2026-07-30T22:24:03.013Z","0.0.13":"2026-07-31T01:38:10.126Z"},"bugs":{"url":"https://github.com/daflan-org/keyward/issues"},"license":"MIT","homepage":"https://github.com/daflan-org/keyward#readme","repository":{"type":"git","url":"git+https://github.com/daflan-org/keyward.git","directory":"packages/recovery-capacitor"},"description":"Capacitor bridge for Keyward recoverable secrets (passkey-PRF native + recovery-core)","maintainers":[{"name":"mashadow","email":"mashadow@outlook.com"}],"readme":"# @daflan/keyward-recovery\n\nCapacitor bridge for Keyward **recoverable secrets**. Registers the native\n`KeywardRecovery` plugin (passkey WebAuthn PRF I/O) and wires it to the platform-\nagnostic `@daflan/keyward-recovery-core`. Tracking: KW-29.\n\n## What it does\n\n- Native PRF I/O only: `capabilities`, `prfRegister`, `prfAssert`.\n  - iOS: `AuthenticationServices` typed PRF (iOS 18+, `prfSupported=false` below).\n  - Android: Jetpack `CredentialManager`, PRF via the WebAuthn JSON `prf` extension.\n- All crypto (envelope, HKDF, AES-GCM) lives in `recovery-core`. No server-side\n  WebAuthn verification: `challenge` is client-random.\n\n## Usage\n\n```ts\nimport { createRecoverable } from '@daflan/keyward-recovery';\n\nconst recoverable = createRecoverable({\n  transport: myBackendEnvelopeTransport, // your own EnvelopeTransport adapter\n  rpId: 'app.example.com',               // your domain (hosts the association files)\n});\n\nawait recoverable.set('family.key', familyKeyBytes, {\n  userId, userName, recipients: [{ kind: 'passkey' }],\n});\n```\n\n## Native packaging\n\nMirrors `@daflan/keyward-capacitor`: `prepack` copies the pure native libs\n(`platform-ios-recovery`, `platform-android-recovery`) into `ios/` and `android/`.\nThe Android CredentialManager implementation lives here (it needs the Android SDK);\nthe pure Java interface is copied in.\n\n## Consumer prerequisites\n\n- Own the RP-ID domain and host `apple-app-site-association` + `assetlinks.json`.\n- Provide an `EnvelopeTransport` (your backend).\n\n## License\n\n[MIT](../../LICENSE)\n","readmeFilename":"README.md"}