{"_id":"@aleksandar-argead/roz-keychain-plugin","name":"@aleksandar-argead/roz-keychain-plugin","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@aleksandar-argead/roz-keychain-plugin","version":"0.1.0","description":"A Rozenite plugin for inspecting react-native-keychain credentials in React Native DevTools.","repository":{"type":"git","url":"git+https://github.com/Aleksandar-Argead/roz-keychain-plugin.git"},"type":"module","main":"./dist/react-native/index.cjs","module":"./dist/react-native/index.js","types":"./dist/react-native/index.d.ts","keywords":["react-native","devtools","rozenite","rozenite-plugin","keychain","react-native-keychain"],"scripts":{"build":"rozenite build","dev":"rozenite dev","typecheck":"tsc -p tsconfig.json --noEmit","prepare":"rozenite build"},"dependencies":{"@babel/runtime":"7.25.0","@rozenite/agent-bridge":"^1.13.0","@rozenite/agent-shared":"^1.13.0","@rozenite/plugin-bridge":"^1.13.0"},"devDependencies":{"@rozenite/vite-plugin":"^1.13.0","@tanstack/react-table":"^8.21.3","@types/react":"~19.1.10","autoprefixer":"^10.4.21","lucide-react":"^1.23.0","postcss":"^8.5.6","react":"19.1.0","react-dom":"19.1.0","react-native":"0.81.5","react-native-web":"^0.21.2","rozenite":"^1.13.0","tailwindcss":"^3.4.17","tailwindcss-animate":"^1.0.7","typescript":"~5.9.3","vite":"^7.3.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-keychain":"*"},"license":"MIT","exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./package.json":"./package.json","./sdk":{"development":"./sdk.ts","types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs"}},"publishConfig":{"access":"public"},"gitHead":"d4bb51706eb81da0a9b40fe5870633e46062aa7d","_id":"@aleksandar-argead/roz-keychain-plugin@0.1.0","bugs":{"url":"https://github.com/Aleksandar-Argead/roz-keychain-plugin/issues"},"homepage":"https://github.com/Aleksandar-Argead/roz-keychain-plugin#readme","_nodeVersion":"25.8.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-h8nKDD8zUf+httifspcg7GwsN4DP3OR2NqbTJKShxuTyLlVIuXFIMtL9T991tWM7bUCR2X43hFayFLvCsfumoA==","shasum":"d787fea5d8503eef31602562f2b7a4be914fd39b","tarball":"https://registry.npmjs.org/@aleksandar-argead/roz-keychain-plugin/-/roz-keychain-plugin-0.1.0.tgz","fileCount":32,"unpackedSize":541012,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCjA4ZczcIFnWKJ/M2zG1OwsBZ2R5LWPtO+GbWMu16NqAIhAP91zIV+HEbyiZm4ecL8aaUa/0pgarGKDK2wkTsmRnAZ"}]},"_npmUser":{"name":"aleksandar-argead","email":"aleksandar.popov14@outlook.com"},"directories":{},"maintainers":[{"name":"aleksandar-argead","email":"aleksandar.popov14@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/roz-keychain-plugin_0.1.0_1783938182257_0.053872565078274315"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-13T10:23:02.164Z","0.1.0":"2026-07-13T10:23:02.503Z","modified":"2026-07-13T10:23:02.647Z"},"maintainers":[{"name":"aleksandar-argead","email":"aleksandar.popov14@outlook.com"}],"description":"A Rozenite plugin for inspecting react-native-keychain credentials in React Native DevTools.","homepage":"https://github.com/Aleksandar-Argead/roz-keychain-plugin#readme","keywords":["react-native","devtools","rozenite","rozenite-plugin","keychain","react-native-keychain"],"repository":{"type":"git","url":"git+https://github.com/Aleksandar-Argead/roz-keychain-plugin.git"},"bugs":{"url":"https://github.com/Aleksandar-Argead/roz-keychain-plugin/issues"},"license":"MIT","readme":"# rozenite-keychain-plugin\n\nA [Rozenite](https://www.rozenite.dev) plugin that provides Keychain inspection for React Native applications.\n\nIt lets you inspect and manage the credentials stored by [`react-native-keychain`](https://github.com/oblador/react-native-keychain) directly from your React Native DevTools environment.\n\n## Features\n\n- **Credential Inspection**: View every generic-password service stored in the Keychain\n- **Reveal on Demand**: Passwords are masked by default and revealed per row\n- **Data Management**: Add, edit, and delete credentials from the DevTools panel\n- **Search & Filter**: Quickly find services by name\n- **Blacklist Filtering**: Hide sensitive services using a regex pattern\n- **Agent Tools**: Read and mutate credentials programmatically through Rozenite for Agents\n\n## Installation\n\nInstall the plugin as a dependency:\n\n```bash\nnpm install rozenite-keychain-plugin\n```\n\n**Note**: This plugin requires `react-native-keychain` as a peer dependency:\n\n```bash\nnpm install react-native-keychain\n```\n\nYou also need a project that has [Rozenite configured](https://www.rozenite.dev/docs/getting-started).\n\n## Quick Start\n\n### 1. Install the Plugin\n\n```bash\nnpm install rozenite-keychain-plugin react-native-keychain\n```\n\n### 2. Integrate with Your App\n\nAdd the DevTools hook to your React Native app and pass in the Keychain module:\n\n```typescript\n// App.tsx\nimport * as Keychain from 'react-native-keychain';\nimport { useKeychainDevTools } from 'rozenite-keychain-plugin';\n\nfunction App() {\n  // Enable Keychain DevTools\n  useKeychainDevTools({\n    keychain: Keychain,\n  });\n\n  return <YourApp />;\n}\n```\n\n**With blacklist filtering:**\n\n```typescript\nfunction App() {\n  useKeychainDevTools({\n    keychain: Keychain,\n    // Hide any service containing \"internal\" or the exact \"refreshToken\" service.\n    blacklist: /.*internal.*|^refreshToken$/,\n  });\n\n  return <YourApp />;\n}\n```\n\n### 3. Access DevTools\n\nStart your development server and open React Native DevTools. You'll find the **Keychain** panel in the DevTools interface.\n\n## How It Works\n\n`react-native-keychain` stores generic passwords per `service`. This plugin enumerates all services via `getAllGenericPasswordServices()` and reads each credential with `getGenericPassword({ service })`.\n\nBecause the Keychain does not emit change events, the panel loads a snapshot on connect and provides a **Refresh** button to re-read the current state. Credentials created, edited, or deleted from the panel update immediately.\n\n> **Note:** Internet credentials (`getInternetCredentials` / `setInternetCredentials`) are not enumerated because `react-native-keychain` does not expose an API to list them. This plugin focuses on generic passwords.\n\n## Usage\n\nOnce the hook is active, the panel provides:\n\n- **Service List**: Every stored generic-password service\n- **Reveal Passwords**: Toggle password visibility per credential\n- **Search**: Filter credentials by service name\n- **Backend Indicator**: The secure storage backend reported by the Keychain (when available)\n- **Add / Edit / Delete**: Manage credentials directly from the DevTools panel\n\n## Agent Tools\n\nThis plugin ships [Rozenite for Agents](https://www.rozenite.dev/docs/agent/overview) tools via the `rozenite-keychain-plugin/sdk` entry point:\n\n- `list-credentials`\n- `read-credential`\n- `create-credential`\n- `edit-credential`\n- `remove-credential`\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Start the Rozenite dev host\nnpm run dev\n\n# Type-check\nnpm run typecheck\n\n# Build for publishing\nnpm run build\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-a0a83ab9cffa9b0b7069934c78a96791"}