{"_id":"@aliakhgar1/react-native-openvpn","name":"@aliakhgar1/react-native-openvpn","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@aliakhgar1/react-native-openvpn","version":"1.0.0","description":"An advanced React Native TurboModule for OpenVPN","source":"./src/index.tsx","main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js"},"./package.json":"./package.json"},"scripts":{"example":"yarn workspace react-native-openvpn-example","test":"jest","typecheck":"tsc","lint":"eslint \"**/*.{js,ts,tsx}\"","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepare":"bob build","release":"release-it","semantic-release":"semantic-release"},"keywords":["react-native","ios","android"],"repository":{"type":"git","url":"git+https://github.com/AliAkhgar/react-native-openvpn.git"},"author":{"name":"Ali Akhgar","email":"theakhgar@gmail.com","url":"https://github.com/AliAkhgar"},"license":"MIT","bugs":{"url":"https://github.com/AliAkhgar/react-native-openvpn/issues"},"homepage":"https://github.com/AliAkhgar/react-native-openvpn#readme","publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"devDependencies":{"@commitlint/config-conventional":"^19.6.0","@eslint/compat":"^1.2.7","@eslint/eslintrc":"^3.3.0","@eslint/js":"^9.22.0","@evilmartians/lefthook":"^1.5.0","@react-native-community/cli":"15.0.1","@react-native/eslint-config":"^0.78.0","@release-it/conventional-changelog":"^9.0.2","@types/jest":"^29.5.5","@types/react":"^19.0.0","commitlint":"^19.6.1","del-cli":"^5.1.0","eslint":"^9.22.0","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.3","jest":"^29.7.0","prettier":"^3.0.3","react":"19.0.0","react-native":"0.78.2","react-native-builder-bob":"^0.40.5","release-it":"^17.10.0","semantic-release":"^24.2.7","turbo":"^1.10.7","typescript":"^5.2.2"},"peerDependencies":{"react":"*","react-native":"*"},"workspaces":["example"],"packageManager":"yarn@3.6.1","jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"commitMessage":"chore: release ${version}","tagName":"v${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":2,"trailingComma":"es5","useTabs":false},"react-native-builder-bob":{"source":"src","output":"lib","targets":["codegen",["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"codegenConfig":{"name":"RNOpenvpnSpec","type":"modules","jsSrcsDir":"src","outputDir":{"ios":"ios/generated","android":"android/generated"},"android":{"javaPackageName":"com.openvpn"},"includesGeneratedCode":true},"create-react-native-library":{"type":"turbo-module","languages":"kotlin-objc","version":"0.49.8"},"_id":"@aliakhgar1/react-native-openvpn@1.0.0","gitHead":"05b71fd13d8eeb3c0655e80ba53eff4dd44bc448","_nodeVersion":"20.19.4","_npmVersion":"10.9.3","dist":{"integrity":"sha512-j+qdkIRRMnYa3MbvyPJvJr76zK7HsCX7ohnyoreNvjQ3i/O5k8KSAN9rukGlSikiyi65Qa7labwb0C5RG/ls8g==","shasum":"5fb3c3334963fe68e6dff17c3b896c125071e3d0","tarball":"https://registry.npmjs.org/@aliakhgar1/react-native-openvpn/-/react-native-openvpn-1.0.0.tgz","fileCount":224,"unpackedSize":93616742,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBcxqTtEuVmnwVW47TrFTsLEpAdKraenZ+iuyVkdq+EkAiADKQhKX9/0nhLnzhCWfjL6l43eir17CCBrGzic3mKq8Q=="}]},"_npmUser":{"name":"aliakhgar","email":"theakhgar@gmail.com"},"directories":{},"maintainers":[{"name":"aliakhgar","email":"theakhgar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-openvpn_1.0.0_1755621098431_0.9069581647027167"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-19T16:31:38.332Z","1.0.0":"2025-08-19T16:31:39.103Z","modified":"2025-08-19T16:31:39.416Z"},"maintainers":[{"name":"aliakhgar","email":"theakhgar@gmail.com"}],"description":"An advanced React Native TurboModule for OpenVPN","homepage":"https://github.com/AliAkhgar/react-native-openvpn#readme","keywords":["react-native","ios","android"],"repository":{"type":"git","url":"git+https://github.com/AliAkhgar/react-native-openvpn.git"},"author":{"name":"Ali Akhgar","email":"theakhgar@gmail.com","url":"https://github.com/AliAkhgar"},"bugs":{"url":"https://github.com/AliAkhgar/react-native-openvpn/issues"},"license":"MIT","readme":"<p align=\"center\">\n  <img src=\"https://aliakhgar.com/ovpheader2.png\" alt=\"React Native OpenVPN Banner\" style=\"width:100%;\">\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/React%20Native-Turbo%20Module-61DAFB?style=flat-square&logo=react&logoColor=white\" alt=\"React Native Turbo Module\" />\n  <img src=\"https://img.shields.io/badge/OpenVPN-2.x%20%7C%203.x-orange?style=flat-square&logo=openvpn\" alt=\"OpenVPN Support\" />\n  <img src=\"https://img.shields.io/badge/License-MIT-green?style=flat-square&logo=opensourceinitiative&logoColor=white\" alt=\"MIT License\" />\n</p>\n\n\n<div valign=\"top\" align=\"right\">\n  <img align=\"right\" padding=\"200\" width=\"53%\" height=\"600\" style=\"margin:200px;\" src=\"https://github.com/user-attachments/assets/8803e977-283f-4c8b-baa3-3175fbee3532\">\n</div>\n\n<h3>Features</h3>\n\n⚡ **Turbo Module** architecture for optimal performance  \n🍎 **+70 Dynamically Controlled** OpenVPN Options  \n🔔 **Customizable notifications** with actions and timers   \n🔄 **Event-driven** connection state management  \n🔧 **OpenVPN 2.x and 3.x** SDK compatibility  \n📝 **Fully typed** APIs with IntelliSense support  \n🔐 **Multiple TLS** profiles and security options  \n📄 **Config file** support and inline configurations  \n🌐 **Advanced routing** and custom DNS features  \n\n## 🧭 Fast Navigation\n\n<div align=\"center\">\n\n**📦 Installation** - Complete setup and platform configuration guide  \n<a href=\"docs/INSTALLATION.md\" style=\"color: #007acc; text-decoration: none;\">→ Browse Installation Guide</a>\n\n**📋 API Reference** - Complete method and interface documentation  \n<a href=\"docs/API.md\" style=\"color: #007acc; text-decoration: none;\">→ Browse API Documentation</a>\n\n**💡 Usage Example** - Practical implementation examples and guides  \n<a href=\"docs/EXAMPLES.md\" style=\"color: #007acc; text-decoration: none;\">→ View Usage Examples</a>\n\n**🔧 Troubleshoot and Debug** - Problem solutions and debugging tools  \n<a href=\"docs/DEBUG.md\" style=\"color: #007acc; text-decoration: none;\">→ Access Troubleshooting Guide</a>\n\n</div>\n\n---\n\n## 📦 Installation\n\n### Quick Install\n\n```bash\n# Using npm\nnpm install @aliakhgar1/react-native-openvpn\n\n# Using yarn\nyarn add @aliakhgar1/react-native-openvpn\n\n# Install iOS dependencies (iOS only)\ncd ios && pod install\n```\n\n### 🎯 Prerequisites\n\n**React Native:** 0.68+  \n**Android:** API 24+  \n**iOS:** 15.1+\n\n---\n\n## 🚀 Quick Start\n\nGet up and running with VPN connectivity in under 5 minutes:\n\n```typescript\nimport * as OpenVPN from 'react-native-openvpn';\n\n// 1. Check permissions (Android only)\nconst connectToVPN = async () => {\n  if (Platform.OS === 'android') {\n    const isPrepared = await OpenVPN.isPrepared();\n    if (!isPrepared) {\n      const granted = await OpenVPN.prepare();\n      if (!granted) return; // User denied permission\n    }\n  }\n\n  // 2. Connect with minimal configuration\n  await OpenVPN.connect({\n    address: 'your-vpn-server.com',\n    username: 'your-username', \n    password: 'your-password',\n    openVPNConfig: yourOvpnConfigString,\n    \n    iOSOptions: {\n      localizedDescription: 'My VPN Connection',\n      networkExtensionBundleIdentifier: 'com.yourapp.vpn-extension',\n      disconnectOnSleep: false,\n      onDemandEnabled: false,\n    },\n    \n    androidOptions: {\n      Notification: {\n        openActivityPackageName: 'com.yourapp.MainActivity',\n        titleNotification: 'VPN Connected',\n        titleConnected: '🔒 Secure Connection Active',\n        titleConnecting: '🔄 Connecting to VPN...',\n        showDisconnectAction: true,\n      },\n    },\n  });\n};\n\n// 3. Listen for connection state changes\nconst subscription = OpenVPN.addOpenVPNStateChangeListener((state) => {\n  switch (state.state) {\n    case OpenVPN.ConnectionState.CONNECTED:\n      console.log('🟢 VPN Connected Successfully!');\n      break;\n    case OpenVPN.ConnectionState.DISCONNECTED:\n      console.log('🔴 VPN Disconnected');\n      break;\n    case OpenVPN.ConnectionState.CONNECTING:\n      console.log('🟡 Connecting to VPN...');\n      break;\n  }\n});\n\n// 4. Disconnect when done\nawait OpenVPN.disconnect();\nsubscription.remove();\n```\n","readmeFilename":"README.md","_rev":"1-e28c41b1f3dbf684da6cbac0200dcf75"}