diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..befe4ee --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +BEARER_TOKEN="..." +OPENAI_API_KEY="..." diff --git a/.github/workflows/all.yml b/.github/workflows/all.yml new file mode 100644 index 0000000..46bf157 --- /dev/null +++ b/.github/workflows/all.yml @@ -0,0 +1,54 @@ +name: Create READMEs + +permissions: + checks: write + contents: read + pull-requests: write + +on: + pull_request_target: + types: + - opened + - synchronize + +jobs: + deploy: + runs-on: ubuntu-latest + name: Build code and release + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Install dependencies + run: | + npm install -g pnpm + pnpm install --frozen-lockfile + + - name: Generate packages list + run: node scripts/generate_actions.mjs + env: + BEARER_TOKEN: ${{ secrets.BEARER_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + + - name: Create READMEs + run: node scripts/write_readme.mjs + env: + BEARER_TOKEN: ${{ secrets.BEARER_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + + - name: Train model from READMEs + run: node scripts/train_model.mjs + env: + BEARER_TOKEN: ${{ secrets.BEARER_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + + - name: Generate tutorials + run: node scripts/generate_tutorials.mjs + env: + BEARER_TOKEN: ${{ secrets.BEARER_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d4c0aa --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# build output +dist/ + +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..6aaca4f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,25 @@ +# build output +dist/ + +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +public/**/* +src/content/**/* +loadedVectorStore/ diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3269d70 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "semi": false, + "printWidth": 180, + "singleQuote": true, + "plugins": ["prettier-plugin-astro"] +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..22a1505 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["astro-build.astro-vscode"], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d642209 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/README.md b/README.md deleted file mode 100644 index 0545099..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# tutorials -Capacitor tutorials diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..7d1aafa --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,11 @@ +import vue from '@astrojs/vue' +import UnoCSS from '@unocss/astro' +import config from './configs.json' +import { defineConfig } from 'astro/config' + +export default defineConfig({ + compressHTML: true, + site: `https://${config.base_domain.prod}`, + image: { service: { entrypoint: 'astro/assets/services/sharp' } }, + integrations: [vue(), UnoCSS({ injectReset: true })], +}) diff --git a/configs.json b/configs.json new file mode 100644 index 0000000..a247711 --- /dev/null +++ b/configs.json @@ -0,0 +1,7 @@ +{ + "base_domain": { + "prod": "capgo.app", + "development": "development.capgo.app", + "local": "localhost:3000" + } +} diff --git a/loadedVectorStore/docstore.json b/loadedVectorStore/docstore.json new file mode 100644 index 0000000..a9ad6ae --- /dev/null +++ b/loadedVectorStore/docstore.json @@ -0,0 +1 @@ +[[["6c78fef2-919d-4a57-a706-0053ceaf49f9",{"pageContent":"Hey","metadata":{}}],["e03d9f1f-7f1e-474f-85ff-632b0a3f8dc1",{"pageContent":"# Capacitor Sign in With Apple\n\n\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)\n\n\n\nCapacitor plugin to support [Sign in With Apple](https://developer.apple.com/sign-in-with-apple/get-started/)\n\n> ### :rotating_light: This plugin is for Capacitor 5 :rotating_light:\n>\n>\n> Capacitor 4 users can use version 4.x\n>\n> Capacitor 3 users can use version 1.x\n>\n> Capacitor 2 users can use version 0.2.0\n\n\n\n \n\n\n \n\n\n## Maintainers\n\n| Maintainer | GitHub | Social | Sponsoring Company |\n| ---------------------- | ------------------------------------------- | ------------------------------------------- | ------------------ |\n| Max Lynch | [mlynch](https://github.com/mlynch) | [@maxlynch](https://twitter.com/maxlynch) | Ionic |\n| Jose \"Pilito\" Martinez | [epicshaggy](https://github.com/epicshaggy) | [@pilito_he](https://twitter.com/pilito_he) | |\n| Laszlo Csoka | [lcsoka](https://github.com/lcsoka) | | |\n\nMaintenance Status: Partially Maintained (help wanted)\n\n## Installation\n\n- `npm i @capacitor-community/apple-sign-in`\n- `npx cap update`\n\n## Usage (iOS, Web)\n\n```ts\nimport {\n SignInWithApple,\n SignInWithAppleResponse,\n SignInWithAppleOptions,\n} from '@capacitor-community/apple-sign-in';\n\nlet options: SignInWithAppleOptions = {\n clientId: 'com.your.webservice',\n redirectURI: 'https://www.yourfrontend.com/login',\n scopes: 'email name',\n state: '12345',\n nonce: 'nonce',\n};\n\nSignInWithApple.authorize(options)\n .then((result: SignInWithAppleResponse) => {\n // Handle user information\n // Validate token with server and create new session\n })\n .catch(error => {\n // Handle error\n });\n```\n\n###\n\n## Instructions (Android)\n\nNot supported.\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\n\n\n\n \n Masahiko Sakakibara💻\n Pilito💻\n lcsoka💻\n \n\n\n\n\n\n\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!","metadata":{"source":"https://raw.githubusercontent.com/capacitor-community/apple-sign-in/master/README.md","loc":{"lines":{"from":1,"to":96}}}}],["f4292957-6f39-4ea6-9cd2-e12bd84ba3f1",{"pageContent":"# Send-Intent\n\nThis is a Capacitor plugin meant to be used in Ionic applications for checking if your App was targeted as a share goal. It supports both Android and iOS and is able to handle a single file or multiple files of any type.\n\nCheck out my app [mindlib - your personal mind library](https://play.google.com/store/apps/details?id=de.mindlib) to see it in action.\n\n## Projects below Capacitor 3\n\nFor projects below Capacitor 3 please use \"send-intent\": \"1.1.7\"!\n\n## Installation\n\n```\nnpm install send-intent\nnpx cap sync\n```\n\n## Usage\n\nImport & Sample call\n\nShared files will be received as URI-String. You can use Capacitor's [Filesystem](https://capacitorjs.com/docs/apis/filesystem) plugin to get the files content. \nThe \"url\"-property of the SendIntent result is also used for web urls, e.g. when sharing a website via browser, so it is not necessarily a file path. Make sure to handle this\neither through checking the \"type\"-property or by error handling!\n\n```js\nimport {SendIntent} from \"send-intent\";\n\nSendIntent.checkSendIntentReceived().then((result: any) => {\n if (result) {\n console.log('SendIntent received');\n console.log(JSON.stringify(result));\n }\n if (result.url) {\n let resultUrl = decodeURIComponent(result.url);\n Filesystem.readFile({path: resultUrl})\n .then((content) => {\n console.log(content.data);\n })\n .catch((err) => console.error(err));\n }\n}).catch(err => console.error(err));\n```\n\n## **Android**\n\nConfigure a new activity in AndroidManifest.xml!\n\n```xml\n\n \n \n \n \n \n \n \n \n\n\n```\n\nOn Android, I strongly recommend closing the send-intent-activity after you have processed the send-intent in your app. Not doing \nthis can lead to app state issues (because you have two instances running) or trigger the same intent again if your app \nreloads from idle mode. You can close the send-intent-activity by calling the \"finish\"-method:\n\n```js\nSendIntent.finish();\n```\n\nHowever, if you want to stay in your app after the send-intent, there is a solution using Deep Links which was worked out here: https://github.com/carsten-klaffke/send-intent/issues/69#issuecomment-1544619608\n\n## **iOS**\n\nCreate a \"Share Extension\" ([Creating an App extension](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionCreation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1)) and make sure that the extensions \"iOS deployment target\" version is in sync with your apps deployment target version! \n\nSet the activation rules in the extensions Info.plist, so that your app will be displayed as share option!","metadata":{"source":"https://raw.githubusercontent.com/carsten-klaffke/send-intent/master/README.md","loc":{"lines":{"from":1,"to":77}}}}],["552d1544-80c4-4aa8-bc8c-41ee451f41ae",{"pageContent":"Set the activation rules in the extensions Info.plist, so that your app will be displayed as share option!\n\n```\n...\n NSExtensionActivationRule\n \n NSExtensionActivationSupportsFileWithMaxCount\n 5\n NSExtensionActivationSupportsImageWithMaxCount\n 5\n NSExtensionActivationSupportsMovieWithMaxCount\n 5\n NSExtensionActivationSupportsText\n \n NSExtensionActivationSupportsWebPageWithMaxCount\n 1\n NSExtensionActivationSupportsWebURLWithMaxCount\n 1\n NSExtensionActivationUsesStrictMatching\n \n \n... \n```\n\nCode for the ShareViewController:\n\n```swift\n//\n// ShareViewController.swift\n// mindlib\n//\n// Created by Carsten Klaffke on 05.07.20.\n//\n\nimport MobileCoreServices\nimport Social\nimport UIKit\n\nclass ShareItem {\n \n public var title: String?\n public var type: String?\n public var url: String?\n}","metadata":{"source":"https://raw.githubusercontent.com/carsten-klaffke/send-intent/master/README.md","loc":{"lines":{"from":77,"to":120}}}}],["1ea576a0-517d-44d6-893c-4bb3e2e19a0b",{"pageContent":"class ShareViewController: UIViewController {\n \n private var shareItems: [ShareItem] = []\n \n override public func viewDidAppear(_ animated: Bool) {\n super.viewDidAppear(animated)\n self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)\n }\n \n private func sendData() {\n let queryItems = shareItems.map {\n [\n URLQueryItem(\n name: \"title\",\n value: $0.title?.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) ?? \"\"),\n URLQueryItem(name: \"description\", value: \"\"),\n URLQueryItem(\n name: \"type\",\n value: $0.type?.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) ?? \"\"),\n URLQueryItem(\n name: \"url\",\n value: $0.url?.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) ?? \"\"),\n ]\n }.flatMap({ $0 })\n var urlComps = URLComponents(string: \"YOUR_APP_URL_SCHEME://\")!\n urlComps.queryItems = queryItems\n openURL(urlComps.url!)\n }\n \n fileprivate func createSharedFileUrl(_ url: URL?) -> String {\n let fileManager = FileManager.default\n \n let copyFileUrl =\n fileManager.containerURL(forSecurityApplicationGroupIdentifier: \"YOUR_APP_GROUP_ID\")!\n .absoluteString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! + url!\n .lastPathComponent.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!\n try? Data(contentsOf: url!).write(to: URL(string: copyFileUrl)!)\n \n return copyFileUrl\n }\n \n func saveScreenshot(_ image: UIImage, _ index: Int) -> String {\n let fileManager = FileManager.default\n \n let copyFileUrl =\n fileManager.containerURL(forSecurityApplicationGroupIdentifier: \"group.SendIntentExample\")!\n .absoluteString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!\n + \"/screenshot_\\(index).png\"\n do {\n try image.pngData()?.write(to: URL(string: copyFileUrl)!)\n return copyFileUrl\n } catch {\n print(error.localizedDescription)\n return \"\"\n }\n }\n \n fileprivate func handleTypeUrl(_ attachment: NSItemProvider)\n async throws -> ShareItem\n {\n let results = try await attachment.loadItem(forTypeIdentifier: kUTTypeURL as String, options: nil)\n let url = results as! URL?\n let shareItem: ShareItem = ShareItem()\n \n if url!.isFileURL {\n shareItem.title = url!.lastPathComponent\n shareItem.type = \"application/\" + url!.pathExtension.lowercased()\n shareItem.url = createSharedFileUrl(url)\n } else {\n shareItem.title = url!.absoluteString\n shareItem.url = url!.absoluteString\n shareItem.type = \"text/plain\"\n }\n \n return shareItem\n }\n \n fileprivate func handleTypeText(_ attachment: NSItemProvider)","metadata":{"source":"https://raw.githubusercontent.com/carsten-klaffke/send-intent/master/README.md","loc":{"lines":{"from":122,"to":199}}}}],["e990ab13-43e0-4b0e-be7f-8a546b944057",{"pageContent":"}\n \n return shareItem\n }\n \n fileprivate func handleTypeText(_ attachment: NSItemProvider)\n async throws -> ShareItem\n {\n let results = try await attachment.loadItem(forTypeIdentifier: kUTTypeText as String, options: nil)\n let shareItem: ShareItem = ShareItem()\n let text = results as! String\n shareItem.title = text\n shareItem.type = \"text/plain\"\n return shareItem\n }\n \n fileprivate func handleTypeMovie(_ attachment: NSItemProvider)\n async throws -> ShareItem\n {\n let results = try await attachment.loadItem(forTypeIdentifier: kUTTypeMovie as String, options: nil)\n let shareItem: ShareItem = ShareItem()\n \n let url = results as! URL?\n shareItem.title = url!.lastPathComponent\n shareItem.type = \"video/\" + url!.pathExtension.lowercased()\n shareItem.url = createSharedFileUrl(url)\n return shareItem\n }\n \n fileprivate func handleTypeImage(_ attachment: NSItemProvider, _ index: Int)\n async throws -> ShareItem\n {\n let data = try await attachment.loadItem(forTypeIdentifier: kUTTypeImage as String, options: nil)\n \n let shareItem: ShareItem = ShareItem()\n switch data {\n case let image as UIImage:\n shareItem.title = \"screenshot_\\(index)\"\n shareItem.type = \"image/png\"\n shareItem.url = self.saveScreenshot(image, index)\n case let url as URL:\n shareItem.title = url.lastPathComponent\n shareItem.type = \"image/\" + url.pathExtension.lowercased()\n shareItem.url = self.createSharedFileUrl(url)\n default:\n print(\"Unexpected image data:\", type(of: data))\n }\n return shareItem\n }\n \n override public func viewDidLoad() {\n super.viewDidLoad()\n \n shareItems.removeAll()\n \n let extensionItem = extensionContext?.inputItems[0] as! NSExtensionItem\n Task {\n try await withThrowingTaskGroup(\n of: ShareItem.self,\n body: { taskGroup in\n \n for (index, attachment) in extensionItem.attachments!.enumerated() {\n if attachment.hasItemConformingToTypeIdentifier(kUTTypeURL as String) {\n taskGroup.addTask {\n return try await self.handleTypeUrl(attachment)\n }\n } else if attachment.hasItemConformingToTypeIdentifier(kUTTypeText as String) {\n taskGroup.addTask {\n return try await self.handleTypeText(attachment)\n }\n } else if attachment.hasItemConformingToTypeIdentifier(kUTTypeMovie as String) {\n taskGroup.addTask {\n return try await self.handleTypeMovie(attachment)\n }","metadata":{"source":"https://raw.githubusercontent.com/carsten-klaffke/send-intent/master/README.md","loc":{"lines":{"from":199,"to":272}}}}],["a6b2db6b-3e34-41e8-a351-6feb0e650fdb",{"pageContent":"return try await self.handleTypeMovie(attachment)\n }\n } else if attachment.hasItemConformingToTypeIdentifier(kUTTypeImage as String) {\n taskGroup.addTask {\n return try await self.handleTypeImage(attachment, index)\n }\n }\n }\n \n for try await item in taskGroup {\n self.shareItems.append(item)\n }\n })\n \n self.sendData()\n \n }\n }\n \n @objc func openURL(_ url: URL) -> Bool {\n var responder: UIResponder? = self\n while responder != nil {\n if let application = responder as? UIApplication {\n return application.perform(#selector(openURL(_:)), with: url) != nil\n }\n responder = responder?.next\n }\n return false\n }\n \n}","metadata":{"source":"https://raw.githubusercontent.com/carsten-klaffke/send-intent/master/README.md","loc":{"lines":{"from":272,"to":302}}}}],["11cae901-f15b-4477-931f-d499d0de9048",{"pageContent":"```\n\nThe share extension is like a little standalone program, so to get to your app the extension has to make an openURL call. In order to make your app reachable by a URL, you have to define a URL scheme ([Register Your URL Scheme](https://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app)). The code above calls a URL scheme named \"YOUR_APP_URL_SCHEME\" (first line in \"didSelectPost\"), so just replace this with your scheme!\nTo allow sharing of files between the extension and your main app, you need to [create an app group](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_application-groups) which is checked for both your extension and main app. Replace \"YOUR_APP_GROUP_ID\" in \"setSharedFileUrl()\" with your app groups name.\n\nFinally, in your AppDelegate.swift, override the following function like this:\n\n```swift\nimport SendIntent\nimport Capacitor\n\n// ...\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n // ...\n\n let store = ShareStore.store\n\n // ...\n\n func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {\n \n var success = true\n if CAPBridge.handleOpenUrl(url, options) {\n success = ApplicationDelegateProxy.shared.application(app, open: url, options: options)\n }\n \n guard let components = NSURLComponents(url: url, resolvingAgainstBaseURL: true),\n let params = components.queryItems else {\n return false\n }\n let titles = params.filter { $0.name == \"title\" }\n let descriptions = params.filter { $0.name == \"description\" }\n let types = params.filter { $0.name == \"type\" }\n let urls = params.filter { $0.name == \"url\" }\n \n store.shareItems.removeAll()\n \n if(titles.count > 0){\n for index in 0...titles.count-1 {\n var shareItem: JSObject = JSObject()\n shareItem[\"title\"] = titles[index].value!\n shareItem[\"description\"] = descriptions[index].value!\n shareItem[\"type\"] = types[index].value!\n shareItem[\"url\"] = urls[index].value!\n store.shareItems.append(shareItem)\n }\n }\n \n store.processed = false\n let nc = NotificationCenter.default\n nc.post(name: Notification.Name(\"triggerSendIntent\"), object: nil )\n \n return success\n }\n\n // ...\n\n}\n```\n\nThis is the function started when an application is open by URL.\n\nMake sure to register the following event-listener! Otherwise you will miss the event fired in the plugin:","metadata":{"source":"https://raw.githubusercontent.com/carsten-klaffke/send-intent/master/README.md","loc":{"lines":{"from":304,"to":369}}}}],["c841c1b4-2514-40c0-a20f-a0fab0890b4e",{"pageContent":"Make sure to register the following event-listener! Otherwise you will miss the event fired in the plugin:\n\n```js\nwindow.addEventListener(\"sendIntentReceived\", () => {\n Plugins.SendIntent.checkSendIntentReceived().then((result: any) => {\n if (result) {\n // ...\n }\n });\n})\n```\n\nYou should also exceute a call on app startup as described in [Usage](#usage), because on a cold start the event-listener might not be registered early enough (see [https://github.com/carsten-klaffke/send-intent/issues/57]).\n\n## Donation\n\nIf you want to support my work, you can donate me on Bitcoin or Stripe.\n\nbitcoin:bc1q60ntnlz4wqfup3yg3hyqmzfkuraf8clmvupqvs\n\n[Donate me a coffee on Stripe](https://buy.stripe.com/5kA9EH5SAe778VO146)\n\n## Consulting\n\nI work as a freelance IT Consultant. If you need help with this plugin or want me to do the complete setup in your App, you can contact me at mail@carsten-klaffke.de.","metadata":{"source":"https://raw.githubusercontent.com/carsten-klaffke/send-intent/master/README.md","loc":{"lines":{"from":369,"to":393}}}}],["43a1deb6-f65a-4e1a-82fb-20caf28536a9",{"pageContent":"Capacitor Camera Preview\n@capacitor-community/camera-preview\n\nCAPACITOR 5\n\n\n Capacitor plugin that allows camera interaction from Javascript and HTML(based on cordova-plugin-camera-preview).\n\n\nVersion 5 of this plugin requires Capacitor 5.\n\n If you are using Capacitor 4, use [version 4](https://github.com/capacitor-community/camera-preview/releases/tag/v4.0.0)\n\nIf you are using Capacitor 3, use [version 3](https://github.com/capacitor-community/camera-preview/releases/tag/v3.1.2)\n\nIf you are using Capacitor 2, use [version 1](https://github.com/capacitor-community/camera-preview/releases/tag/v1.2.1)\n\n**PR's are greatly appreciated.**\n\n-- [@arielhernandezmusa](https://github.com/arielhernandezmusa) and [@pbowyer](https://github.com/pbowyer), current maintainers\n\n\n\n# Installation\n\n```\nyarn add @capacitor-community/camera-preview\n\nor\n\nnpm install @capacitor-community/camera-preview\n```\nThen run\n```\nnpx cap sync\n```\n\n## Extra Android installation steps\n**Important** `camera-preview` 3+ requires Gradle 7. If you are using Gradle 4, please use [version 2](https://github.com/capacitor-community/camera-preview/tree/v2.1.0) of this plugin.\n\nOpen `android/app/src/main/AndroidManifest.xml` and above the closing `` tag add this line to request the CAMERA permission:\n```xml\n\n```\nFor more help consult the [Capacitor docs](https://capacitorjs.com/docs/android/configuration#configuring-androidmanifestxml).\n\n### Variables\n\nThis plugin will use the following project variables (defined in your app's `variables.gradle` file):\n\n- `androidxExifInterfaceVersion`: version of `androidx.exifinterface:exifinterface` (default: `1.3.6`)\n\n## Extra iOS installation steps\nYou will need to add two permissions to `Info.plist`. Follow the [Capacitor docs](https://capacitorjs.com/docs/ios/configuration#configuring-infoplist) and add permissions with the raw keys `NSCameraUsageDescription` and `NSMicrophoneUsageDescription`. `NSMicrophoneUsageDescription` is only required, if audio will be used. Otherwise set the `disableAudio` option to `true`, which also disables the microphone permission request.\n\n## Extra Web installation steps\n\nAdd `import { CameraPreview } from '@capacitor-community/camera-preview';` in the file where you want to use the plugin.\n\nthen in html add ``\n\nand `CameraPreview.start({ parent: \"cameraPreview\"});` will work.\n\n\n# Methods\n\n### start(options)\n\nStarts the camera preview instance.","metadata":{"source":"https://raw.githubusercontent.com/capacitor-community/camera-preview/master/README.md","loc":{"lines":{"from":1,"to":69}}}}],["6081dade-d03d-466b-a4e6-ed0647f9587e",{"pageContent":"# Methods\n\n### start(options)\n\nStarts the camera preview instance.\n\n\n| Option | values | descriptions |\n|----------|---------------|------------------------------------------------------------------------|\n| position | front \\| rear | Show front or rear camera when start the preview. Defaults to front |\n| width | number | (optional) The preview width in pixels, default window.screen.width (applicable to the android and ios platforms only) |\n| height | number | (optional) The preview height in pixels, default window.screen.height (applicable to the android and ios platforms only) |\n| x | number | (optional) The x origin, default 0 (applicable to the android and ios platforms only) |\n| y | number | (optional) The y origin, default 0 (applicable to the android and ios platforms only) |\n| toBack | boolean | (optional) Brings your html in front of your preview, default false (applicable to the android and ios platforms only) |\n| paddingBottom | number | (optional) The preview bottom padding in pixes. Useful to keep the appropriate preview sizes when orientation changes (applicable to the android and ios platforms only) |\n| rotateWhenOrientationChanged | boolean | (optional) Rotate preview when orientation changes (applicable to the ios platforms only; default value is true) |\n| storeToFile | boolean | (optional) Capture images to a file and return back the file path instead of returning base64 encoded data, default false. |\n| disableExifHeaderStripping | boolean | (optional) Disable automatic rotation of the image, and let the browser deal with it, default true (applicable to the android and ios platforms only) |\n| enableHighResolution | boolean | (optional) Defaults to false - iOS only - Activate high resolution image capture so that output images are from the highest resolution possible on the device |\n| disableAudio | boolean | (optional) Disables audio stream to prevent permission requests, default false. (applicable to web and iOS only) |\n| lockAndroidOrientation | boolean | (optional) Locks device orientation when camera is showing, default false. (applicable to Android only) |\n| enableOpacity | boolean | (optional) Make the camera preview see-through. Ideal for augmented reality uses. Default false (applicable to Android and web only)\n| enableZoom | boolean | (optional) Set if you can pinch to zoom. Default false (applicable to the android and ios platforms only)\n\n\n\n```javascript\nimport { CameraPreview, CameraPreviewOptions } from '@capacitor-community/camera-preview';\n\nconst cameraPreviewOptions: CameraPreviewOptions = {\n position: 'rear',\n height: 1920,\n width: 1080\n};\nCameraPreview.start(cameraPreviewOptions);\n```\n\nRemember to add the style below on your app's HTML or body element:","metadata":{"source":"https://raw.githubusercontent.com/capacitor-community/camera-preview/master/README.md","loc":{"lines":{"from":69,"to":107}}}}],["f18ad193-78e6-45ef-a367-72dd015970a5",{"pageContent":"Remember to add the style below on your app's HTML or body element:\n\n```css\nion-content {\n --background: transparent;\n}\n```\n\nTake into account that this will make transparent all ion-content on application, if you want to show camera preview only in one page, just add a custom class to your ion-content and make it transparent:\n\n```css\n.my-custom-camera-preview-content {\n --background: transparent;\n}\n```\n\nIf the camera preview is not displaying after applying the above styles, apply transparent background color to the root div element of the parent component\nEx: VueJS >> App.vue component \n```html\n\n \n \n \n\n\n\n#app {\n background-color: transparent !important;\n}\n\n\n \n \n\n \n \t\n\n```\n\n- Change `windowSplashScreenAnimatedIcon` to match the name of your splash screen drawable.\n- Change the other parameters according to your preferences.\n- In your app’s `AndroidManifest.xml`, set the `android:theme` attribute of the application activity to `\"@style/AppTheme.NoActionBarLaunch\"`.\n- In your app’s `MainActivity.java`, add a call to `SplashScreen.initLaunchTime()`:\n\n```java\nimport com.aparajita.capacitor.splashscreen.SplashScreen;\nimport com.getcapacitor.BridgeActivity;\n\npublic class MainActivity extends BridgeActivity {\n\n @Override\n public void onCreate(Bundle savedInstanceState) {\n SplashScreen.initLaunchTime();\n super.onCreate(savedInstanceState);\n }\n}\n\n```\n\n### All platforms\n\nBecause there is an indeterminate amount of time between when the system launch screen appears and your app is loaded and starts running, it is impossible to predict exactly how long a splash screen should remain visible in order to provide a smooth transition to your app’s UI. At the same time, you want to avoid showing the splash screen for too long, because the user may think the app has frozen.\n\nThis plugin addresses this problem in two ways:\n\n- In the native code of your app, you **must** call [`initLaunchTime`](#initlaunchtime) as soon as the app is fully loaded, as shown above. This is potentially several hundred milliseconds before this plugin is loaded, which is a significant amount of time from a user perspective.\n\n- You may set a `showDuration` configuration option that specifies the **minimum** amount of time the launch screen should remain visible. When you call [`hide`](#hide) or [`animate`](#animate), the plugin will wait until the minimum duration has elapsed before hiding or animating the splash screen. This ensures that if the app is loaded quickly, the splash screen won’t just flash and disappear (unless that is what you want!).\n\n```typescript\nconst config: CapacitorConfig = {\n plugins: {\n SplashScreen: {\n showDuration: 1 // 1 second\n }\n }\n}\n```\n\n#### Logger configuration","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":110,"to":168}}}}],["2ade8e58-c61d-4f22-9d5b-9dff43031828",{"pageContent":"#### Logger configuration\n\nThis plugin uses a custom logger. You can set the logger level and whether or not to log to the system console on iOS. See the `level` and `useSyslog` options in the configuration section of [`@aparajita/capacitor-logger`](https://github.com/aparajita/capacitor-logger/blob/d605d0f7de5f850967caab0b71a3305ed1c3dc8f/README.md#configuration).\n\n```typescript\nconst config: CapacitorConfig = {\n plugins: {\n SplashScreen: {\n logger: {\n level: 'debug',\n useSyslog: true\n }\n }\n }\n}\n```\n\n## Localization\n\nThis plugin supports localization of the launch screen using standard system localization mechanisms. For an example of localized launch screens on iOS and Android, see the [workshop app](https://github.com/aparajita/capacitor-splash-screen-demo).\n\n### iOS\n\nOn iOS, Apple recommends against including text in your launch storyboard, since launch screens are cached by the system. You can, however, configure your app to use separate storyboards for different languages:\n\n- Create a new storyboard for each language you want to support.\n- Create a text file called `InfoPlist.strings` (capitalization is important) in the root of your app’s source code directory. This file should contain a single line:\n\n```text\n// Set the name to the name of the base language launch storyboard.\n\"UILaunchStoryboardName\" = \"LaunchScreen.storyboard\";\n```\n\n- Add the file to your Xcode project, making sure to assign it to the app target.\n- Select the file in the navigator.\n- Open the Inspector panel and click the `Localize…` button.\n- Select the language this file is for and click `Localize`.\n- Select the project in the navigator, then the project in the main editor, and click the `Info` tab.\n- Add whatever languages you want to support to the `Localizations` list. For each language, check `InfoPlist.strings` in the dialog that appears.\n- In the `InfoPlist.strings` file created for each language, change the value of `UILaunchStoryboardName` to the name of the storyboard for that language.\n\n### Android\n\nOn Android, you can use the standard Android localization mechanisms to provide different launch screens for different languages. See the [Android documentation](https://developer.android.com/guide/topics/resources/localization) for more information.\n\n## Usage\n\nHow you show and hide splash screens differs depending on how they are used.\n\n### Launch screens\n\nYou do not have to do anything to show launch screens, they are displayed automatically when the app is launched.\n\nOnce your app is fully mounted, call [`hide`](#hide) to fade out the launch screen, or [`animate`](#animate) to animate the launch screen. If you use `animate`, your custom animation code is responsible for hiding the splash screen.\n\nBoth `hide` and `animate` take a `delay` option. `delay` **may** be necessary because:\n\n1. Capacitor creates the web view.\n1. The web view loads your app.\n1. Your app is mounted in the DOM, but has not yet been rendered.\n1. You call `hide()` or `animate()`.\n1. The web view renders the content generated by your app.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":168,"to":229}}}}],["afca7746-dff0-4262-b6f5-a10fffa07c24",{"pageContent":"When you call `hide()` or `animate()`, the web view may not have been fully rendered. If you hide too quickly, there will be a flash of the web view’s background color just before it renders. That’s why a small delay may be necessary.\n\n### Programmatic splash screens\n\nThis plugin also allows you to show splash screens programmatically. This is useful if you want to show a splash screen [on app suspend/resume](#showing-a-splash-screen-on-app-suspendresume) or to test and tweak the timing of a launch screen.\n\nTo show a programmatic splash screen, call [`show`](#show), passing [`SplashScreenShowOptions`](#splashscreenshowoptions) to configure the splash screen.\n\nIf you want to hide or animate the splash screen after some amount of time, you need to call [`hide`](#hide) or [`animate`](#animate) manually within `setTimeout`. For example:\n\n```typescript\nawait SplashScreen.show(showOptions)\n\nsetTimeout(() => {\n SplashScreen.hide(hideOptions).catch(showErrorAlert)\n}, duration)\n```\n\n### Showing a splash screen on app suspend/resume\n\nYou may wish to show a splash screen every time the app suspends for security purposes, or you may wish to show a splash screen on resume for branding purposes. This plugin provides a convenience function to make that easy to do.\n\n👉 **NOTE:** Although this technique _technically_ works on Android, I advise against it, as the suspend callback is not reliably called before the app becomes inactive on different Android versions, and you will not get the intended effect.\n\n```typescript\n// Vue code\nimport { Capacitor } from '@capacitor/core'\nimport { onMounted, onUnmounted } from 'vue'\n\nlet listenerHandle: PluginListenerHandle\n\nonMounted(async () => {\n if (Capacitor.getPlatform() === 'ios') {\n const onSuspend = (): void => {\n // We want to show the splash screen when we suspend\n // so it will already be there on resume.\n SplashScreen.show({\n source: 'LaunchScreen_hi',\n delay: 0,\n showDuration: 100\n }).catch(console.error)\n }\n\n const onResume = (): void => {\n SplashScreen.hide({\n delay: 300,\n fadeOutDuration: 300\n }).catch(console.error)\n }\n\n listenerHandle = await SplashScreen.listenToAppState({\n onSuspend,\n onResume\n })\n }\n})\n\nonUnmounted(async () => {\n if (listenerHandle) {\n await listenerHandle.remove()\n }\n})\n```\n\nThe trick we are playing here is to show the splash screen as the app is suspended, so that when the app is resumed, the splash screen is already visible, and then we just need to hide it. 😎\n\n## Custom animation\n\nThis plugin provides hooks for custom animation on both iOS and Android. The [workshop app](https://github.com/aparajita/capacitor-splash-screen-demo) contains a complete example of custom animation on both platforms, which you can use as a template for your animation.\n\n👉 **NOTE:** Your custom animation code is responsible for hiding the splash screen.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":231,"to":301}}}}],["0059b11e-cf04-4de2-9d76-2078d22399bb",{"pageContent":"👉 **NOTE:** Your custom animation code is responsible for hiding the splash screen.\n\nOnce you have implemented your custom animation code, performing the animation is just a matter of calling [`animate()`](#animate) instead of `hide()`.\n\n### Events\n\nThere are two possible animation events sent to your animation method. Of those, you are only required to respond to the `animateLaunch` event.\n\n- **animateLaunch** — Sent when the `animate()` method is called for a launch screen, after any delay specified in the animate options.\n\n- **animate** — Sent when the `animate()` method is called after calling `show()`, and after any delay specified in the animate options.\n\n### Event handler\n\nIn order to receive animation events (and thus perform animation), you need to create an animation handler method in your app’s native code. On iOS, a minimal event handler will look like this:\n\n```swift\nimport AparajitaCapacitorSplashScreen\n\nprivate let kDefaultDuration: Double = 0.7 // seconds\n\nextension AppDelegate {\n @objc func onSplashScreenEvent(_ event: String, _ params: [AnyHashable: Any]) {\n animate(withParams: params)\n }\n\n private func animate(withParams params: [AnyHashable: Any]) {\n guard let view = params[\"splashView\"] as? UIView,\n let options = params[\"options\"] as? [AnyHashable: Any],\n let callbacks = params[\"callbacks\"] as? SplashScreen.AnimationCallbacks else {\n return\n }\n\n let animationDuration = SplashScreen.toSeconds(Config.getDouble(\"animationDuration\", inOptions: options) ?? kDefaultDuration)\n\n UIView.animateKeyframes(\n withDuration: animationDuration,\n delay: 0,\n options: [],\n animations: {\n self.performAnimation(forView: view)\n },\n completion: { _ in\n self.finishAnimation(forView: view, done: done)\n }\n )\n }\n\n private func performAnimation(forView view: UIView) {\n // Your animation code goes here\n }\n\n private func finishAnimation(\n forView view: UIView,\n callbacks: SplashScreen.AnimationCallbacks)\n {\n // Your cleanup code goes here\n\n // Make sure to call the done callback so control returns to the app\n callbacks.done()\n }\n}\n```\n\nOn Android, a minimal event handler will look like this:\n\n```java\npublic class SplashScreenAnimator {\n\n static final long DEFAULT_ANIMATION_DURATION = 500;\n\n public void onSplashScreenEvent(\n SplashScreen.HookEventType event,\n HashMap params\n ) {\n animate(params);\n }\n\n private void animate(HashMap params) {\n AnimationCallbacks callbacks = null;\n View splashView = null;\n View iconView = null;\n long duration = DEFAULT_ANIMATION_DURATION;\n\n try {\n splashView = (View) params.get(\"splashView\");\n iconView = (View) params.get(\"iconView\");\n callbacks = (AnimationCallbacks) params.get(\"callbacks\");\n JSObject options = (JSObject) params.get(\"options\");\n Config config = (Config) params.get(\"config\");","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":301,"to":390}}}}],["60d6fc04-51bd-4af7-9939-abd38467584e",{"pageContent":"if (options != null && config != null) {\n duration =\n SplashScreen.toMilliseconds(\n config.getDoubleOption(\n \"animationDuration\",\n options,\n DEFAULT_ANIMATION_DURATION\n )\n );\n }\n } catch (Exception ex) {\n // Handle it below\n }\n\n if (splashView == null || iconView == null) {\n if (callbacks != null) {\n callbacks.error(\n \"Null splash or icon view\",\n SplashScreen.ErrorType.NO_SPLASH\n );\n }\n\n return;\n }\n // Your animation code goes here. Be sure to call\n // callbacks.done() when the animation finishes or\n // is cancelled.\n }\n}\n\n```\n\nTo dispatch to the event handler on Android, your app’s `MainActivity` must implement `onSplashScreenEvent()`:\n\n```java\npublic class MainActivity extends BridgeActivity {\n\n private final SplashScreenAnimator animator = new SplashScreenAnimator();\n\n @Override\n public void onCreate(Bundle savedInstanceState) {\n SplashScreen.initLaunchTime();\n super.onCreate(savedInstanceState);\n }\n\n public void onSplashScreenEvent(\n SplashScreen.HookEventType event,\n HashMap params\n ) {\n animator.onSplashScreenEvent(event, params);\n }\n}\n\n```\n\n👉 **IMPORTANT**❗️\nThe `onSplashScreenEvent` method name and signature must be **exactly** as displayed above.\n\n### Event parameters\n\nEach event receives parameters from the plugin with context that you may need in performing your animation.\n\n| Param | Type (iOS / Android) | Description |\n| :--------- | :---------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |\n| source | String | The `source` option passed to `show()`, defaults to \"\\*\" |\n| splashView | UIView
android.view.View | iOS: The storyboard’s main view controller view
Android: A full screen `FrameLayout` which contains the `iconView`. |\n| iconView | [unused]
View | The splash icon |\n| plugin | CAPPlugin
com.getcapacitor.Plugin | The `SplashScreen` instance which called the event handler |\n| options | [AnyHashable: Any]
com.getcapacitor.JSObject | Options passed to the `animate()` plugin method |\n| callbacks | SplashScreen.AnimationCallbacks
AnimationCallbacks | Contains `done` and `error` functions, one of which you **must** call when the animation is completely finished |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":392,"to":461}}}}],["40b53f04-9b01-460b-b93c-ef03825121c8",{"pageContent":"As noted above, you **must** call either the `done` or `error` callback when the animation is completely done, otherwise control will not be returned to the JavaScript runtime. In most cases you will do this in the animation completion function.\n\n### Android-only event parameters\n\nThe following parameters are only passed on Android:\n\n| Param | Type | Description |\n| :------- | :---------------- | :------------------------------- |\n| iconView | View | The splash icon |\n| config | Config instance | Use to get values from `options` |\n| activity | AppCompatActivity | The current activity |\n\n### Android-specific animation\n\nWhen a splash screen is shown on Android, the status bar and navigation bar colors are smoothly animated from their current color to the background color of the splash screen, which effectively hides them. When your splash screen animation is fading out, you need to show the status and navigation bars (if they were visible in your app).\n\nThe `callbacks` parameter on Android contains two extra methods:\n\n```java\nvoid showStatusBar(long delay, long duration, TimeInterpolator interpolator);\n\nvoid showNavigationBar(\n long delay,\n long duration,\n TimeInterpolator interpolator\n);\n```\n\nCalling these methods will smoothly transition the relevant background color from the splash screen background color to the bar’s previous color. If `interpolator` is `null`, it defaults to `LinearInterpolator`.\n\nFor an example of how to use these callbacks, see [SplashScreenAnimator.java](https://github.com/aparajita/capacitor-splash-screen-demo/blob/main/android/app/src/main/java/com/aparajita/capacitor/splashscreendemo/SplashScreenAnimator.java) in the [workshop app](https://github.com/aparajita/capacitor-splash-screen-demo).\n\n#### Why no immersive mode?\n\nThere are a few reasons why this plugin does not support immersive mode:\n\n- The new system splash screens in Android 12+ do not use immersive mode, they set the status and navigation bar backgrounds to the splash screen background. This plugin endeavors to be as consistent with the system splash screen as possible.\n- Immersive mode slides the status and navigation bars offscreen, but if the user taps the screen before the splash screen is hidden they will reappear.\n- On some versions of Android, when immersive mode is entered a system dialog appears advising the user to tap the screen to show the status and navigation bars. This is not something you want to happen during your app launch.\n\n### Accessing animation options\n\nThis plugin provides a custom Config class that allows you to use different option values for each platform when passing options to `show`, `hide` and `animate`. For example, you may want a different `animationDuration` on each platform:\n\n```typescript\nSplashScreen.animate({\n ios: {\n animationDuration: 500\n },\n android: {\n animationDuration: 700\n }\n})\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":463,"to":516}}}}],["0b1d4aba-a698-49b0-b051-8d603bfb5614",{"pageContent":"In your custom animation code, if you want to get values from the options passed to `animate`, use the custom config class to retrieve those values, as shown in the event handler examples above. In brief, to retrieve a value of `` (String, Double, etc.) from the options passed in the animation params, do the following on iOS:\n\n```text\nlet value = Config.get(, inOptions: options) ?? \n```\n\nand this in Android:\n\n```text\n value = config.getOption(, options, );\n```\n\nSo to retrieve the string value \"foo\" with a default of \"bar\", you would do this on iOS:\n\n```swift\nlet foo = Config.getString(\"foo\", inOptions: options) ?? \"bar\"\n```\n\nand this in Android:\n\n```java\nString foo = config.getStringOption(\"foo\", options, \"bar\");\n```\n\n## API\n\n\n\n- [`show(...)`](#show)\n- [`hide(...)`](#hide)\n- [`animate(...)`](#animate)\n- [`listenToAppState(...)`](#listentoappstate)\n- [Interfaces](#interfaces)\n- [Type Aliases](#type-aliases)\n\n\n\n---\n\n\n\n\n### show(...)\n\n```typescript\nshow(options?: SplashScreenShowOptions) => Promise\n```\n\nShow the splash screen. Does not apply to launch screens.

NOTE: On Android, the size of the splash screen icon may not exactly match the actual launch screen icon size. I was not able to determine the algorithm used by Android to determine the size of the splash screen icon.\n\n| Param | Type |\n| :------ | :------------------------------------------------------------- |\n| options | SplashScreenShowOptions |\n\n---\n\n### hide(...)\n\n```typescript\nhide(options?: SplashScreenHideOptions) => Promise\n```\n\nHide the splash screen. You must call `hide()` or `animate()` to remove a launch screen, typically after your app is fully mounted.\n\n| Param | Type |\n| :------ | :------------------------------------------------------------- |\n| options | SplashScreenHideOptions |\n\n---\n\n### animate(...)\n\n```typescript\nanimate(options?: SplashScreenAnimateOptions) => Promise\n```\n\nAnimate the splash screen. You must call `hide()` or `animate()` to remove a launch screen, typically after your app is fully mounted.\n\n| Param | Type |\n| :------ | :------------------------------------------------------------------- |\n| options | SplashScreenAnimateOptions |\n\n---\n\n### listenToAppState(...)\n\n```typescript\nlistenToAppState(options?: SplashScreenAppStateListeners) => Promise\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":518,"to":606}}}}],["659b2e09-5a6a-412d-bd6c-736aa313a0c0",{"pageContent":"```typescript\nlistenToAppState(options?: SplashScreenAppStateListeners) => Promise\n```\n\nListen to changes in the app state and execute the relevant code. This is a convenience to allow you to easily show a splash when your app resumes. Be sure to save the result of this call somewhere. When you no longer need to listen to the app state (e.g. when a component unmounts), be sure to call the `remove()` method on the returned `PluginListenerHandle`.

NOTE: This cannot be reliably used on Android, as the app may be paused before the listener is called.\n\n| Param | Type |\n| :------ | :------------------------------------------------------------------------- |\n| options | SplashScreenAppStateListeners |\n\n**Returns:** Promise<PluginListenerHandle>\n\n---\n\n### Interfaces\n\n#### SplashScreenShowOptions\n\nShow options may be specified separately for iOS and Android.\n\n| Prop | Type |\n| :------ | :------------------------------------------------------- |\n| ios | SplashScreenShowOpts |\n| android | SplashScreenShowOpts |\n\n#### SplashScreenShowOpts","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":606,"to":631}}}}],["fea23b99-f732-40c2-b531-9839eab3a688",{"pageContent":"#### SplashScreenShowOpts\n\n| Prop | Type | Description |\n| :------------- | :------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| source | string | The source of the splash screen. Does not apply to launch screens. On iOS, it may be a storyboard with the given name. On Android, it may be any vector drawable with the given name. If the name is \"\\*\", on iOS the configured LaunchScreen storyboard in the app's project will be used, on Android the value of the `windowSplashScreenAnimatedIcon` item in the launch theme will be used. |\n| delay | SplashScreenDuration | How long to delay before showing the splash screen. Does not apply to launch screens. |\n| fadeInDuration | SplashScreenDuration | How long to fade in. Does not apply to launch screens. |\n| showDuration | SplashScreenDuration | Launch: The minimum time to show the splash screen. If `animate()` or `hide()` is called before this time elapses, the screen will remain until the duration is finished.

`show()`: How long to show the splash screen after fade in and before fade out. |\n\n#### SplashScreenHideOptions\n\nHide options may be specified separately for iOS and Android.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":631,"to":642}}}}],["56a61f80-6343-416b-a6ea-eed584c75daa",{"pageContent":"#### SplashScreenHideOptions\n\nHide options may be specified separately for iOS and Android.\n\n| Prop | Type |\n| :------ | :------------------------------------------------------- |\n| ios | SplashScreenHideOpts |\n| android | SplashScreenHideOpts |\n\n#### SplashScreenHideOpts\n\n| Prop | Type | Description |\n| :-------------- | :------------------------------------------------------- | :------------------------------- |\n| delay | SplashScreenDuration | How long to delay before hiding. |\n| fadeOutDuration | SplashScreenDuration | How long to fade out. |\n\n#### SplashScreenAnimateOptions\n\nAnimate options may be specified separately for iOS and Android.\n\n| Prop | Type |\n| :------ | :------------------------------------------------------------- |\n| ios | SplashScreenAnimateOpts |\n| android | SplashScreenAnimateOpts |\n\n#### SplashScreenAnimateOpts\n\n| Prop | Type | Description |\n| :---------------- | :------------------------------------------------------- | :----------------------------------------------------- |\n| delay | SplashScreenDuration | How long to delay before starting the animation. |\n| animationDuration | SplashScreenDuration | How long animation should take when calling `animate`. |\n\n#### PluginListenerHandle\n\n| Method | Signature |\n| :--------- | :--------------------------- |\n| **remove** | () => Promise<void> |\n\n#### SplashScreenAppStateListeners\n\n### Type Aliases\n\n#### SplashScreenDuration\n\nIn options objects, when you specify a duration, it can either be in seconds or milliseconds. Any value >= 10 will be considered milliseconds, any value < 10 will be considered seconds.\n\nnumber\n\n
\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-splash-screen.md","loc":{"lines":{"from":642,"to":691}}}}],["242ebca3-8cb4-4de1-8207-7671d088fa94",{"pageContent":"# capacitor-plugin-file-downloader\nfile download for capacitor\n\n中文 | [English](#english)\n\n![android](https://img.shields.io/badge/android-pass-green)\n![ios](https://img.shields.io/badge/ios-pass-green)\n\n一个简单的ionic capacitor 文件下载 native 插件,支持android、ios\n\n> **安装**:\n```\nnpm install capacitor-plugin-file-downloader\nionic capacitor sync\n```\n\n> **配置**:\n\nAndroid配置方法:\n\n在根目录下找到 android 目录 ,依次找到 android/src/main/java/**** (嵌套包名文件夹)/activities/MainActivity.java,修改:\n\n```\n......\nimport com.veluxa.plugins.FileDownloader;\n\npublic class MainActivity extends BridgeActivity {\n ......\n this.init(savedInstanceState, new ArrayList>() {{\n ......\n add(FileDownloader.class);\n }});\n ......\n}\n```\n\nIOS配置方法:\n无需配置\n\n> **调用**:\n\n在需要使用到插件的文件,添加:\n\n```ts\n......\nimport 'capacitor-plugin-file-downloader';\nimport { Plugins } from '@capacitor/core';\nconst { FileDownloader } = Plugins\n\n......\n\nFileDownloader.download({\n url: fileUrl, //下载地址\n filename: filename //包含后缀的文件名\n}).then(doc => {\n //下载成功回调\n console.log(doc.path);\n}).catch(e => {\n //下载失败回调\n})\n......\n```\n\n---\n\nfile download for capacitor\n\nA simple ionic capacitor file download native plug-in, support android, ios\n\n> **Install**:\n```\nnpm install capacitor-plugin-file-downloader\nionic capacitor sync\n```\n\n> **Configuration**:\n\nAndroid:\n\nFind the android directory in the root directory, and then find android/src/main/java/**** (nested package name folder)/activities/MainActivity.java, Do the following changes:\n\n```\n......\nimport com.veluxa.plugins.FileDownloader;\n\npublic class MainActivity extends BridgeActivity {\n ......\n this.init(savedInstanceState, new ArrayList>() {{\n ......\n add(FileDownloader.class);\n }});\n ......\n}\n```\n\nIOS: Don't need to configure\n\n\n> **Use**:\n\nIn the files that need to use the plug-in:\n\n```ts\n......\nimport 'capacitor-plugin-file-downloader';\nimport { Plugins } from '@capacitor/core';\nconst { FileDownloader } = Plugins\n\n......\n\nFileDownloader.download({\n url: fileUrl, //download link\n filename: filename //The file name that contains the suffix\n}).then(doc => {\n //success\n console.log(doc.path);\n}).catch(e => {\n //error\n})\n......\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/veluxa_capacitor-plugin-file-downloader.md","loc":{"lines":{"from":1,"to":121}}}}],["2d1c0ed1-b717-4386-8a0f-bd9682f27d53",{"pageContent":"# background-volume-buttons\n\nThis capacitor.js plugin listens for and reacts to volume button presses when the app is in the background\n\n```\nimport { App } from '@capacitor/app';\nimport { BackgroundVolumeButtonListener } from \"background-volume-buttons\";\n \nApp.addListener('appStateChange', ({ isActive }) => {\n console.log('App state changed. Is active?', isActive);\n if (!isActive) {\n console.debug(\"App going inactive / background\")\n BackgroundVolumeButtonListener.startListening({\n timeout: 1000,\n triggerCount: 3,\n listenerName: \"volumeEventTriggered\"\n })\n } else {\n BackgroundVolumeButtonListener.stopListening()\n }\n});\n\n// Later\nBackgroundVolumeButtonListener.addListener(\"volumeEventTriggered\", async () => {\n // do stuff\n}\n```\n## Install\n\n```bash\nnpm install background-volume-buttons\nnpx cap sync\n```\n\n## API\n\n\n\n* [`startListening(...)`](#startlistening)\n* [`stopListening()`](#stoplistening)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### startListening(...)\n\n```typescript\nstartListening(options: BackgroundVolumeButtonListenerOptions) => Promise\n```\n\nAdds a listener to the volume buttons and fires an event when the volume is changed.\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------------- |\n| **`options`** | BackgroundVolumeButtonListenerOptions |\n\n--------------------\n\n\n### stopListening()\n\n```typescript\nstopListening() => Promise\n```\n\nRemoves above listener\n\n--------------------\n\n\n### Interfaces\n\n\n#### BackgroundVolumeButtonListenerOptions\n\n| Prop | Type | Description |\n| ------------------ | ------------------- | --------------------------------------------------------------------------------------------------------- |\n| **`triggerCount`** | number | The number of times the volume should be changed before the event is fired. Defaults to 3 |\n| **`timeout`** | number | The max time in milliseconds before the `triggerCount` resets. Defaults to 1000 |\n| **`listenerName`** | string | Required. The string name of the listener you would like the event to broadcast to i.e. `volumeTriggered` |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/JTCorrin_background-volume-buttons.md","loc":{"lines":{"from":1,"to":85}}}}],["b1be9254-90aa-426e-a4bf-5c7dbb543309",{"pageContent":"# @cotecna/capacitor-mediastore\n\nManage Android media files\n\n## Install\n\n```bash\nnpm install @cotecna/capacitor-mediastore\nnpx cap sync\n```\n\n## API\n\n\n\n* [`savePicture(...)`](#savepicture)\n* [`saveToDownloads(...)`](#savetodownloads)\n* [`saveVideo(...)`](#savevideo)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### savePicture(...)\n\n```typescript\nsavePicture(options: SavePictureOptions) => any\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------------- |\n| **`options`** | SavePictureOptions |\n\n**Returns:** any\n\n--------------------\n\n\n### saveToDownloads(...)\n\n```typescript\nsaveToDownloads(options: SaveToDownloadsOptions) => any\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------- |\n| **`options`** | SaveToDownloadsOptions |\n\n**Returns:** any\n\n--------------------\n\n\n### saveVideo(...)\n\n```typescript\nsaveVideo(options: SaveVideoOptions) => any\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------- |\n| **`options`** | SaveVideoOptions |\n\n**Returns:** any\n\n--------------------\n\n\n### Interfaces\n\n\n#### SavePictureOptions\n\n| Prop | Type |\n| -------------- | ------------------- |\n| **`album`** | string |\n| **`filename`** | string |\n| **`path`** | string |\n\n\n#### SavePictureResult\n\n| Prop | Type |\n| --------- | ------------------- |\n| **`uri`** | string |\n\n\n#### SaveToDownloadsOptions\n\n| Prop | Type |\n| -------------- | ------------------- |\n| **`filename`** | string |\n| **`path`** | string |\n\n\n#### SaveToDownloadsResult\n\n| Prop | Type |\n| --------- | ------------------- |\n| **`uri`** | string |\n\n\n#### SaveVideoOptions\n\n| Prop | Type |\n| -------------- | ------------------- |\n| **`album`** | string |\n| **`filename`** | string |\n| **`path`** | string |\n\n\n#### SaveVideoResult\n\n| Prop | Type |\n| --------- | ------------------- |\n| **`uri`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/cotecna-inspection_capacitor-mediastore.md","loc":{"lines":{"from":1,"to":120}}}}],["c6d6ee89-33d9-4638-839e-b1cb54347b21",{"pageContent":"# capacitor-plugin-android-insets\n\nCapacitor plugin for retrieving proper top offset of Android status bar.\n\nThis repo is published version with changed name of https://github.com/jorisbertomeu/capacitor-insets-v2, which was based on archived https://github.com/igorcd/capacitor-insets-plugin/. It should work perfectly fine in `Capacitor@4`.\n\n## Install\n\n```bash\n# with npm\nnpm install --save capacitor-plugin-android-insets\n# with yarn\nyarn add capacitor-plugin-android-insets\n# after any install\nnpx cap sync\n```\n\n## Why?\n\nThis plugin is required only on Android when using `StatusBar.setOverlaysWebView({ overlay: true })`. There is a problem with top offset counting, when status bar is transparent. Related issue: https://github.com/ionic-team/capacitor/issues/2840. \n\n## Usage\n\n```ts\nimport { AndroidInsets } from 'capacitor-plugin-android-insets'\n\nconst { value } = await AndroidInsets.top();\n```\n\n## API\n\n\n\n* [`top()`](#top)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### top()\n\n```typescript\ntop() => Promise\n```\n\nReturns top offset of the status bar\n\n**Returns:** Promise<TopReturn>\n\n--------------------\n\n\n### Interfaces\n\n\n#### TopReturn\n\n| Prop | Type |\n| ----------- | ------------------- |\n| **`value`** | number |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/owlsdepartment_capacitor-plugin-android-insets.md","loc":{"lines":{"from":1,"to":64}}}}],["54ab0fd0-102e-4db6-b6fb-08bc4a13852d",{"pageContent":"# zeus-capacitor-push-notifications","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/albafo_zeus-capacitor-push-notifications.md","loc":{"lines":{"from":1,"to":1}}}}],["b3b70799-b988-4af2-a375-f25e6ac17954",{"pageContent":"# bulk-contact\n\nAllow to save multiple contact detail in ionic capacitor \n\n## Install\n\n```bash\nnpm install bulk-contact\nnpx cap sync\n```\n\n## Example\n BulkContact.getPermissions().then(permissionResponse => {\n if (permissionResponse) {\n if (permissionResponse.granted) {\n for (const currentContact of contactList) {\n BulkContact.saveContact({\n name: currentContact.name, \n mobile: currentContact.mobile\n }).then(() => {\n console.log('contact saved');\n }).catch((exception) => {\n console.log(exception);\n }); \n }\n } else {\n console.log('permission denied');\n }\n }\n });\n\n## API\n\n\n\n* [`getPermissions()`](#getpermissions)\n* [`getContacts()`](#getcontacts)\n* [`saveContact(...)`](#savecontact)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### getPermissions()\n\n```typescript\ngetPermissions() => Promise\n```\n\n**Returns:** Promise<PermissionStatus>\n\n--------------------\n\n\n### getContacts()\n\n```typescript\ngetContacts() => Promise<{ contacts: Contact[]; }>\n```\n\n**Returns:** Promise<{ contacts: Contact[]; }>\n\n--------------------\n\n\n### saveContact(...)\n\n```typescript\nsaveContact(contact: NewContact) => Promise\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------- |\n| **`contact`** | NewContact |\n\n--------------------\n\n\n### Interfaces\n\n\n#### PermissionStatus\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`granted`** | boolean |\n\n\n#### Contact\n\n| Prop | Type |\n| ---------------------- | --------------------------- |\n| **`contactId`** | string |\n| **`displayName`** | string |\n| **`phoneNumbers`** | PhoneNumber[] |\n| **`emails`** | EmailAddress[] |\n| **`photoThumbnail`** | string |\n| **`organizationName`** | string |\n| **`organizationRole`** | string |\n| **`birthday`** | string |\n\n\n#### PhoneNumber\n\n| Prop | Type |\n| ------------ | ------------------- |\n| **`label`** | string |\n| **`number`** | string |\n\n\n#### EmailAddress\n\n| Prop | Type |\n| ------------- | ------------------- |\n| **`label`** | string |\n| **`address`** | string |\n\n\n#### NewContact\n\nNew contact schema.\n\n| Prop | Type |\n| ------------ | ------------------- |\n| **`name`** | string |\n| **`mobile`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/anandvsh_bulk-contact-plugin.md","loc":{"lines":{"from":1,"to":130}}}}],["a4c22b66-1747-4b65-962f-34dfae83a359",{"pageContent":"# capacitor3-kakao-login\n\nkakao login for capacitor3\n\n## Install\n\n```bash\nnpm install capacitor3-kakao-login\nnpx cap sync\n```\n\n\n

\n# android\nadd kakao repository (https://devrepo.kakao.com/nexus/content/groups/public/) in root build.gradle \n\n```\nallprojects {\n repositories {\n google()\n jcenter()\n maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }\n }\n}\n\n```\n\n\nadd Global Application for initialize kakao sdk\n\n```java\npackage io.ionic.starter;\n\nimport android.app.Application;\n\nimport com.fumi.capacitor3_kakao_login.Capacitor3KakaoLoginPlugin;\n\npublic class GlobalApplication extends Application {\n\n @Override\n public void onCreate() {\n super.onCreate();\n Capacitor3KakaoLoginPlugin.initKakaoSdk(this,getString(R.string.kakao_app_key));\n }\n\n}\n\n```\n\n\nadd kakao app_key and kakao_schema in res/string.xml\n\n```xml\n kkba2d2cf331e7f4a7fdb0c8f3b3cecc\n kakaokkba2d2cf331e7f4a7fdb0c8f3b3cecc\n kakaolink\n```\n\n\nadd kakao data inside application in AndroidManifest.xml\n```xml\n\n\n\n \n \n \n\n \n\n \n\n \n \n \n\n \n \n\n \n \n \n\n \n\n \n \n\n \n \n\n \n \n\n\n \n \n \n \n\n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/efluvi_capacitor3-kakao-login.md","loc":{"lines":{"from":1,"to":120}}}}],["a3a92290-e327-409f-bcc3-0de92fc3b361",{"pageContent":"\n\n \n \n \n \n\n \n\n \n\n\n\n```\n\n\n

\n\n# IOS\nadd KAKAO_APP_KEY in info.plist\n\n```plist\n\n \n\t\t\n\t\t\tCFBundleURLSchemes\n\t\t\t\n\t\t\t\tkakao[KAKAO_APP_KEY]\n\t\t\t\tcom.example.app\n\t\t\t\n\t\t\n\t\n\n\tKAKAO_APP_KEY\n\t[KAKAO_APP_KEY]\n\tLSApplicationQueriesSchemes\n\t\n\t\tkakao[KAKAO_APP_KEY]\n\t\tkakaokompassauth\n\t\tstorykompassauth\n\t\tkakaolink\n\t\tstorylink\n\t\tkakaotalk\n\t\tkakaotalk-5.9.7\n\t\tkakaostory-2.9.0\n \n\n```\n\nadd kakao code in AppDelegate.swift\n\n```swift\n\nimport UIKit\nimport Capacitor\nimport Capacitor\nimport AppsFlyerLib\nimport AppTrackingTransparency\nimport KakaoSDKAuth\nimport KakaoSDKCommon\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n var window: UIWindow?\n\n func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n \n let key = Bundle.main.infoDictionary?[\"KAKAO_APP_KEY\"] as? String\n KakaoSDK.initSDK(appKey: key!)\n // Override point for customization after application launch.\n return true\n }\n\n func applicationWillResignActive(_ application: UIApplication) {\n // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.\n // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.\n }\n\n func applicationDidEnterBackground(_ application: UIApplication) {\n // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.\n // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n }\n\n func applicationWillEnterForeground(_ application: UIApplication) {\n // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.\n }","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/efluvi_capacitor3-kakao-login.md","loc":{"lines":{"from":120,"to":212}}}}],["358090ff-9f46-49f3-ac99-9cb33372b0dc",{"pageContent":"func applicationDidBecomeActive(_ application: UIApplication) {\n // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.\n }\n\n func applicationWillTerminate(_ application: UIApplication) {\n // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n }\n\n func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {\n // Called when the app was launched with a url. Feel free to add additional processing here,\n // but if you want the App API to support tracking app url opens, make sure to keep this call\n if (AuthApi.isKakaoTalkLoginUrl(url)) {\n return AuthController.handleOpenUrl(url: url)\n }\n\n return ApplicationDelegateProxy.shared.application(app, open: url, options: options)\n\n }\n\n func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {\n // Called when the app was launched with an activity, including Universal Links.\n // Feel free to add additional processing here, but if you want the App API to support\n // tracking app url opens, make sure to keep this call\n\n return ApplicationDelegateProxy.shared.application(application, continue: userActivity, restorationHandler: restorationHandler)\n }\n\n override func touchesBegan(_ touches: Set, with event: UIEvent?) {\n super.touchesBegan(touches, with: event)\n\n let statusBarRect = UIApplication.shared.statusBarFrame\n guard let touchPoint = event?.allTouches?.first?.location(in: self.window) else { return }\n\n if statusBarRect.contains(touchPoint) {\n NotificationCenter.default.post(name: .capacitorStatusBarTapped, object: nil)\n }\n }\n\n}\n\n\n```\n\n\n\n\n## API\n\n\n\n\n\n\n\n* [`initializeKakao(...)`](#initializekakao)\n* [`kakaoLogin()`](#kakaologin)\n* [`kakaoLogout()`](#kakaologout)\n* [`kakaoUnlink()`](#kakaounlink)\n* [`sendLinkFeed(...)`](#sendlinkfeed)\n\n\n\n\n\n\n\n### initializeKakao(...)\n\n```typescript\ninitializeKakao(options: { app_key: string; web_key: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | -------------------------------------------------- |\n| **`options`** | { app_key: string; web_key: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### kakaoLogin()\n\n```typescript\nkakaoLogin() => Promise<{ value: string; }>\n```\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### kakaoLogout()\n\n```typescript\nkakaoLogout() => Promise<{ value: string; }>\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/efluvi_capacitor3-kakao-login.md","loc":{"lines":{"from":214,"to":310}}}}],["a0096e30-0001-48a7-9ede-6a358912a853",{"pageContent":"--------------------\n\n\n### kakaoLogout()\n\n```typescript\nkakaoLogout() => Promise<{ value: string; }>\n```\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### kakaoUnlink()\n\n```typescript\nkakaoUnlink() => Promise<{ value: string; }>\n```\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### sendLinkFeed(...)\n\n```typescript\nsendLinkFeed(options: { title: string; description: string; image_url: string; image_link_url: string; button_title: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | --------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | { title: string; description: string; image_url: string; image_link_url: string; button_title: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/efluvi_capacitor3-kakao-login.md","loc":{"lines":{"from":310,"to":349}}}}],["4cb7cd2b-54c6-4842-827b-c02bc645c211",{"pageContent":"# docx-reader\n\ntext from docx\n\n## Install\n\n```bash\nnpm install docx-reader\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Dipayan2021_capacitor-docx-reader.md","loc":{"lines":{"from":1,"to":37}}}}],["3ed78db9-da7e-4b18-ad36-dc10abc164f7",{"pageContent":"# cap-downloader\n\nDownload files using Android Download Manager\n\n## Install\n\n```bash\nnpm install @bricks-soft/cap-downloader\nnpx cap sync\n```\n\n## API\n\n\n\n* [`download(...)`](#download)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### download(...)\n\n```typescript\ndownload(options: Options) => Promise<{ id?: number; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------- |\n| **`options`** | Options |\n\n**Returns:** Promise<{ id?: number; }>\n\n--------------------\n\n\n### Interfaces\n\n\n#### Options\n\n| Prop | Type |\n| -------------- | ------------------- |\n| **`title`** | string |\n| **`url`** | string |\n| **`filename`** | string |\n| **`mimetype`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/bricks-soft_cap-downloader.md","loc":{"lines":{"from":1,"to":51}}}}],["17e20d30-16b1-475d-a371-55dd811106ce",{"pageContent":"## Created with Capacitor Create App\n\nThis app was created using [`@capacitor/create-app`](https://github.com/ionic-team/create-capacitor-app),\nand comes with a very minimal shell for building an app.\n\n### Running this example\n\nTo run the provided example, you can use `npm start` command.\n\n```bash\nnpm start\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SrknMcT_DRIFTERNFC.md","loc":{"lines":{"from":1,"to":12}}}}],["831f91b8-da81-4bec-88a7-b606db39c227",{"pageContent":"# Capacitor updater\n Capgo - Instant updates for capacitor\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.com/invite/VnYRvBfgA6)\n\"Discord\"\n[![npm](https://img.shields.io/npm/dm/@capgo/capacitor-updater)](https://www.npmjs.com/package/@capgo/capacitor-updater)\n[![GitHub latest commit](https://badgen.net/github/last-commit/Cap-go/capacitor-updater/main)](https://GitHub.com/Cap-go/capacitor-updater/commit/)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capacitor-updater&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=Cap-go_capacitor-updater)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capacitor-updater&metric=bugs)](https://sonarcloud.io/summary/new_code?id=Cap-go_capacitor-updater)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capacitor-updater&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=Cap-go_capacitor-updater)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capacitor-updater&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=Cap-go_capacitor-updater)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capacitor-updater&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=Cap-go_capacitor-updater)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capacitor-updater&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Cap-go_capacitor-updater)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capacitor-updater&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=Cap-go_capacitor-updater)\n[![Open Bounties](https://img.shields.io/endpoint?url=https%3A%2F%2Fconsole.algora.io%2Fapi%2Fshields%2FCapgo%2Fbounties%3Fstatus%3Dopen)](https://console.algora.io/org/Capgo/bounties?status=open)\n[![Rewarded Bounties](https://img.shields.io/endpoint?url=https%3A%2F%2Fconsole.algora.io%2Fapi%2Fshields%2FCapgo%2Fbounties%3Fstatus%3Dcompleted)](https://console.algora.io/org/Capgo/bounties?status=completed)\n\nUpdate Ionic Capacitor apps without App/Play Store review (Code-push / hot-code updates).\n\nYou have 3 ways possible :\n- Use [capgo.app](https://capgo.app) a full featured auto update system in 5 min Setup, to manage version, update, revert and see stats.\n- Use your own server update with auto update system\n- Use manual methods to zip, upload, download, from JS to do it when you want.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":1,"to":23}}}}],["5fd7042b-0ad0-4f7f-9f9e-24721e0e4d8d",{"pageContent":"## Community\nJoin the [discord](https://discord.gg/VnYRvBfgA6) to get help.\n\n## Documentation\nI maintain a more user friendly and complete [documentation here](https://capgo.app/docs/).\n\n## Installation\n\n```bash\nnpm install @capgo/capacitor-updater\nnpx cap sync\n```\n\n## Auto-update setup\n\nCreate your account in [capgo.app](https://capgo.app) and get your [API key](https://capgo.app/app/apikeys)\n- Login to CLI `npx @capgo/cli@latest init API_KEY`\nAnd follow the steps by step to setup your app.\n\nSee more there in the [Auto update documentation](https://capgo.app/docs/plugin/auto-update).\n\n\n## Manual setup\n\nDownload update distribution zipfiles from a custom url. Manually control the entire update process.\n\n- Edit your `capacitor.config.json` like below, set `autoUpdate` to false.\n```json\n// capacitor.config.json\n{\n\t\"appId\": \"**.***.**\",\n\t\"appName\": \"Name\",\n\t\"plugins\": {\n\t\t\"CapacitorUpdater\": {\n\t\t\t\"autoUpdate\": false,\n\t\t}\n\t}\n}\n```\n- Add to your main code\n```javascript\n import { CapacitorUpdater } from '@capgo/capacitor-updater'\n CapacitorUpdater.notifyAppReady()\n```\nThis informs Capacitor Updator that the current update bundle has loaded succesfully. Failing to call this method will cause your application to be rolled back to the previously successful version (or built-in bundle).\n- Add this to your application.\n```javascript\n const version = await CapacitorUpdater.download({\n url: 'https://github.com/Cap-go/demo-app/releases/download/0.0.4/dist.zip',\n })\n await CapacitorUpdater.set(version); // sets the new version, and reloads the app\n```\n- Failed updates will automatically roll back to the last successful version.\n- Example: Using App-state to control updates, with SplashScreen:\nYou might also consider performing auto-update when application state changes, and using the Splash Screen to improve user experience.\n```javascript\n import { CapacitorUpdater, VersionInfo } from '@capgo/capacitor-updater'\n import { SplashScreen } from '@capacitor/splash-screen'\n import { App } from '@capacitor/app'\n\n let version: VersionInfo;\n App.addListener('appStateChange', async (state) => {\n if (state.isActive) {\n // Ensure download occurs while the app is active, or download may fail\n version = await CapacitorUpdater.download({\n url: 'https://github.com/Cap-go/demo-app/releases/download/0.0.4/dist.zip',\n })\n }\n\n if (!state.isActive && version) {\n // Activate the update when the application is sent to background\n SplashScreen.show()\n try {\n await CapacitorUpdater.set(version);\n // At this point, the new version should be active, and will need to hide the splash screen\n } catch () {\n SplashScreen.hide() // Hide the splash screen again if something went wrong\n }\n }\n })\n\n```\n\nTIP: If you prefer a secure and automated way to update your app, you can use [capgo.app](https://capgo.app) - a full-featured, auto update system.\n\n### Packaging `dist.zip` update bundles","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":26,"to":111}}}}],["f238be29-759e-4aed-a250-691c3f9a8e12",{"pageContent":"### Packaging `dist.zip` update bundles\n\nCapacitor Updator works by unzipping a compiled app bundle to the native device filesystem. Whatever you choose to name the file you upload/download from your release/update server URL (via either manual or automatic updating), this `.zip` bundle must meet the following requirements:\n\n- The zip file should contain the full contents of your production Capacitor build output folder, usually `{project directory}/dist/` or `{project directory}/www/`. This is where `index.html` will be located, and it should also contain all bundled JavaScript, CSS, and web resources necessary for your app to run.\n- Do not password encrypt the bundle zip file, or it will fail to unpack.\n- Make sure the bundle does not contain any extra hidden files or folders, or it may fail to unpack.\n\n## API\n\n\n\n* [`notifyAppReady()`](#notifyappready)\n* [`download(...)`](#download)\n* [`next(...)`](#next)\n* [`set(...)`](#set)\n* [`delete(...)`](#delete)\n* [`list()`](#list)\n* [`reset(...)`](#reset)\n* [`current()`](#current)\n* [`reload()`](#reload)\n* [`setMultiDelay(...)`](#setmultidelay)\n* [`cancelDelay()`](#canceldelay)\n* [`getLatest()`](#getlatest)\n* [`setChannel(...)`](#setchannel)\n* [`getChannel()`](#getchannel)\n* [`setCustomId(...)`](#setcustomid)\n* [`addListener('download', ...)`](#addlistenerdownload)\n* [`addListener('noNeedUpdate', ...)`](#addlistenernoneedupdate)\n* [`addListener('updateAvailable', ...)`](#addlistenerupdateavailable)\n* [`addListener('downloadComplete', ...)`](#addlistenerdownloadcomplete)\n* [`addListener('majorAvailable', ...)`](#addlistenermajoravailable)\n* [`addListener('updateFailed', ...)`](#addlistenerupdatefailed)\n* [`addListener('downloadFailed', ...)`](#addlistenerdownloadfailed)\n* [`addListener('appReloaded', ...)`](#addlistenerappreloaded)\n* [`addListener('appReady', ...)`](#addlistenerappready)\n* [`getBuiltinVersion()`](#getbuiltinversion)\n* [`getDeviceId()`](#getdeviceid)\n* [`getPluginVersion()`](#getpluginversion)\n* [`isAutoUpdateEnabled()`](#isautoupdateenabled)\n* [`removeAllListeners()`](#removealllisteners)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\n\n\n\n\n### notifyAppReady()\n\n```typescript\nnotifyAppReady() => Promise<{ bundle: BundleInfo; }>\n```\n\nNotify Capacitor Updater that the current bundle is working (a rollback will occur of this method is not called on every app launch)\nBy default this method should be called in the first 10 sec after app launch, otherwise a rollback will occur.\nChange this behaviour with {@link appReadyTimeout}\n\n**Returns:** Promise<{ bundle: BundleInfo; }>\n\n--------------------\n\n\n### download(...)\n\n```typescript\ndownload(options: { url: string; version: string; sessionKey?: string; checksum?: string; }) => Promise\n```\n\nDownload a new bundle from the provided URL, it should be a zip file, with files inside or with a unique id inside with all your files","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":111,"to":181}}}}],["9b4fdc0d-d2cd-4229-accb-725707c7ba50",{"pageContent":"| Param | Type |\n| ------------- | -------------------------------------------------------------------------------------- |\n| **`options`** | { url: string; version: string; sessionKey?: string; checksum?: string; } |\n\n**Returns:** Promise<BundleInfo>\n\n--------------------\n\n\n### next(...)\n\n```typescript\nnext(options: { id: string; }) => Promise\n```\n\nSet the next bundle to be used when the app is reloaded.\n\n| Param | Type |\n| ------------- | ---------------------------- |\n| **`options`** | { id: string; } |\n\n**Returns:** Promise<BundleInfo>\n\n--------------------\n\n\n### set(...)\n\n```typescript\nset(options: { id: string; }) => Promise\n```\n\nSet the current bundle and immediately reloads the app.\n\n| Param | Type |\n| ------------- | ---------------------------- |\n| **`options`** | { id: string; } |\n\n--------------------\n\n\n### delete(...)\n\n```typescript\ndelete(options: { id: string; }) => Promise\n```\n\nDelete bundle in storage\n\n| Param | Type |\n| ------------- | ---------------------------- |\n| **`options`** | { id: string; } |\n\n--------------------\n\n\n### list()\n\n```typescript\nlist() => Promise<{ bundles: BundleInfo[]; }>\n```\n\nGet all locally downloaded bundles in your app\n\n**Returns:** Promise<{ bundles: BundleInfo[]; }>\n\n--------------------\n\n\n### reset(...)\n\n```typescript\nreset(options?: { toLastSuccessful?: boolean | undefined; } | undefined) => Promise\n```\n\nSet the `builtin` bundle (the one sent to Apple store / Google play store ) as current bundle\n\n| Param | Type |\n| ------------- | -------------------------------------------- |\n| **`options`** | { toLastSuccessful?: boolean; } |\n\n--------------------\n\n\n### current()\n\n```typescript\ncurrent() => Promise<{ bundle: BundleInfo; native: string; }>\n```\n\nGet the current bundle, if none are set it returns `builtin`, currentNative is the original bundle installed on the device\n\n**Returns:** Promise<{ bundle: BundleInfo; native: string; }>\n\n--------------------\n\n\n### reload()\n\n```typescript\nreload() => Promise\n```\n\nReload the view\n\n--------------------\n\n\n### setMultiDelay(...)\n\n```typescript\nsetMultiDelay(options: { delayConditions: DelayCondition[]; }) => Promise\n```\n\nSet DelayCondition, skip updates until one of the conditions is met","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":183,"to":297}}}}],["38d3af33-f755-4fb2-97af-e58afb32339c",{"pageContent":"Set DelayCondition, skip updates until one of the conditions is met\n\n| Param | Type | Description |\n| ------------- | --------------------------------------------------- | ------------------------------------------------------------------------ |\n| **`options`** | { delayConditions: DelayCondition[]; } | are the {@link DelayCondition} list to set |\n\n**Since:** 4.3.0\n\n--------------------\n\n\n### cancelDelay()\n\n```typescript\ncancelDelay() => Promise\n```\n\nCancel delay to updates as usual\n\n**Since:** 4.0.0\n\n--------------------\n\n\n### getLatest()\n\n```typescript\ngetLatest() => Promise\n```\n\nGet Latest bundle available from update Url\n\n**Returns:** Promise<latestVersion>\n\n**Since:** 4.0.0\n\n--------------------\n\n\n### setChannel(...)\n\n```typescript\nsetChannel(options: SetChannelOptions) => Promise\n```\n\nSet Channel for this device, the channel have to allow self assignement to make this work\n\n| Param | Type | Description |\n| ------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------- |\n| **`options`** | SetChannelOptions | is the {@link SetChannelOptions} channel to set |\n\n**Returns:** Promise<channelRes>\n\n**Since:** 4.7.0\n\n--------------------\n\n\n### getChannel()\n\n```typescript\ngetChannel() => Promise\n```\n\nget Channel for this device\n\n**Returns:** Promise<getChannelRes>\n\n**Since:** 4.8.0\n\n--------------------\n\n\n### setCustomId(...)\n\n```typescript\nsetCustomId(options: SetCustomIdOptions) => Promise\n```\n\nSet Channel for this device\n\n| Param | Type | Description |\n| ------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------- |\n| **`options`** | SetCustomIdOptions | is the {@link SetCustomIdOptions} customId to set |\n\n**Since:** 4.9.0\n\n--------------------\n\n\n### addListener('download', ...)\n\n```typescript\naddListener(eventName: \"download\", listenerFunc: DownloadChangeListener) => Promise & PluginListenerHandle\n```\n\nListen for download event in the App, let you know when the download is started, loading and finished","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":297,"to":393}}}}],["f76175b3-470b-45e9-ae1b-89dd95158537",{"pageContent":"Listen for download event in the App, let you know when the download is started, loading and finished\n\n| Param | Type |\n| ------------------ | ------------------------------------------------------------------------- |\n| **`eventName`** | 'download' |\n| **`listenerFunc`** | DownloadChangeListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 2.0.11\n\n--------------------\n\n\n### addListener('noNeedUpdate', ...)\n\n```typescript\naddListener(eventName: \"noNeedUpdate\", listenerFunc: NoNeedListener) => Promise & PluginListenerHandle\n```\n\nListen for no need to update event, usefull when you want force check every time the app is launched\n\n| Param | Type |\n| ------------------ | --------------------------------------------------------- |\n| **`eventName`** | 'noNeedUpdate' |\n| **`listenerFunc`** | NoNeedListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 4.0.0\n\n--------------------\n\n\n### addListener('updateAvailable', ...)\n\n```typescript\naddListener(eventName: \"updateAvailable\", listenerFunc: UpdateAvailabledListener) => Promise & PluginListenerHandle\n```\n\nListen for availbale update event, usefull when you want to force check every time the app is launched\n\n| Param | Type |\n| ------------------ | ----------------------------------------------------------------------------- |\n| **`eventName`** | 'updateAvailable' |\n| **`listenerFunc`** | UpdateAvailabledListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 4.0.0\n\n--------------------\n\n\n### addListener('downloadComplete', ...)\n\n```typescript\naddListener(eventName: \"downloadComplete\", listenerFunc: DownloadCompleteListener) => Promise & PluginListenerHandle\n```\n\nListen for download event in the App, let you know when the download is started, loading and finished","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":393,"to":453}}}}],["4fd02ae1-cc47-42d1-a49f-ae9f8e27d56f",{"pageContent":"Listen for download event in the App, let you know when the download is started, loading and finished\n\n| Param | Type |\n| ------------------ | ----------------------------------------------------------------------------- |\n| **`eventName`** | 'downloadComplete' |\n| **`listenerFunc`** | DownloadCompleteListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 4.0.0\n\n--------------------\n\n\n### addListener('majorAvailable', ...)\n\n```typescript\naddListener(eventName: \"majorAvailable\", listenerFunc: MajorAvailableListener) => Promise & PluginListenerHandle\n```\n\nListen for Major update event in the App, let you know when major update is blocked by setting disableAutoUpdateBreaking\n\n| Param | Type |\n| ------------------ | ------------------------------------------------------------------------- |\n| **`eventName`** | 'majorAvailable' |\n| **`listenerFunc`** | MajorAvailableListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 2.3.0\n\n--------------------\n\n\n### addListener('updateFailed', ...)\n\n```typescript\naddListener(eventName: \"updateFailed\", listenerFunc: UpdateFailedListener) => Promise & PluginListenerHandle\n```\n\nListen for update fail event in the App, let you know when update has fail to install at next app start\n\n| Param | Type |\n| ------------------ | --------------------------------------------------------------------- |\n| **`eventName`** | 'updateFailed' |\n| **`listenerFunc`** | UpdateFailedListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 2.3.0\n\n--------------------\n\n\n### addListener('downloadFailed', ...)\n\n```typescript\naddListener(eventName: \"downloadFailed\", listenerFunc: DownloadFailedListener) => Promise & PluginListenerHandle\n```\n\nListen for download fail event in the App, let you know when download has fail finished","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":453,"to":513}}}}],["01729849-e9d3-471f-a406-0fc245dc5b57",{"pageContent":"Listen for download fail event in the App, let you know when download has fail finished\n\n| Param | Type |\n| ------------------ | ------------------------------------------------------------------------- |\n| **`eventName`** | 'downloadFailed' |\n| **`listenerFunc`** | DownloadFailedListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 4.0.0\n\n--------------------\n\n\n### addListener('appReloaded', ...)\n\n```typescript\naddListener(eventName: \"appReloaded\", listenerFunc: AppReloadedListener) => Promise & PluginListenerHandle\n```\n\nListen for reload event in the App, let you know when reload has happend\n\n| Param | Type |\n| ------------------ | ------------------------------------------------------------------- |\n| **`eventName`** | 'appReloaded' |\n| **`listenerFunc`** | AppReloadedListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 4.3.0\n\n--------------------\n\n\n### addListener('appReady', ...)\n\n```typescript\naddListener(eventName: \"appReady\", listenerFunc: AppReadyListener) => Promise & PluginListenerHandle\n```\n\nListen for app ready event in the App, let you know when app is ready to use\n\n| Param | Type |\n| ------------------ | ------------------------------------------------------------- |\n| **`eventName`** | 'appReady' |\n| **`listenerFunc`** | AppReadyListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 5.1.0\n\n--------------------\n\n\n### getBuiltinVersion()\n\n```typescript\ngetBuiltinVersion() => Promise<{ version: string; }>\n```\n\nGet the native app version or the builtin version if set in config\n\n**Returns:** Promise<{ version: string; }>\n\n**Since:** 5.2.0\n\n--------------------\n\n\n### getDeviceId()\n\n```typescript\ngetDeviceId() => Promise<{ deviceId: string; }>\n```\n\nGet unique ID used to identify device (sent to auto update server)\n\n**Returns:** Promise<{ deviceId: string; }>\n\n--------------------\n\n\n### getPluginVersion()\n\n```typescript\ngetPluginVersion() => Promise<{ version: string; }>\n```\n\nGet the native Capacitor Updater plugin version (sent to auto update server)\n\n**Returns:** Promise<{ version: string; }>\n\n--------------------","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":513,"to":605}}}}],["19ab3822-8c64-4550-a21a-1d2ea2cd90a0",{"pageContent":"**Returns:** Promise<{ version: string; }>\n\n--------------------\n\n\n### isAutoUpdateEnabled()\n\n```typescript\nisAutoUpdateEnabled() => Promise<{ enabled: boolean; }>\n```\n\nGet the state of auto update config. This will return `false` in manual mode.\n\n**Returns:** Promise<{ enabled: boolean; }>\n\n--------------------\n\n\n### removeAllListeners()\n\n```typescript\nremoveAllListeners() => Promise\n```\n\nRemove all listeners for this plugin.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### BundleInfo\n\n| Prop | Type |\n| ---------------- | ----------------------------------------------------- |\n| **`id`** | string |\n| **`version`** | string |\n| **`downloaded`** | string |\n| **`checksum`** | string |\n| **`status`** | BundleStatus |\n\n\n#### DelayCondition\n\n| Prop | Type | Description |\n| ----------- | --------------------------------------------------------- | ---------------------------------------- |\n| **`kind`** | DelayUntilNext | Set up delay conditions in setMultiDelay |\n| **`value`** | string | |\n\n\n#### latestVersion\n\n| Prop | Type | Description | Since |\n| ---------------- | -------------------- | ----------------------- | ----- |\n| **`version`** | string | Res of getLatest method | 4.0.0 |\n| **`major`** | boolean | | |\n| **`message`** | string | | |\n| **`sessionKey`** | string | | |\n| **`error`** | string | | |\n| **`old`** | string | | |\n| **`url`** | string | | |\n\n\n#### channelRes\n\n| Prop | Type | Description | Since |\n| ------------- | ------------------- | ----------------------------- | ----- |\n| **`status`** | string | Current status of set channel | 4.7.0 |\n| **`error`** | any | | |\n| **`message`** | any | | |\n\n\n#### SetChannelOptions\n\n| Prop | Type |\n| ----------------------- | -------------------- |\n| **`channel`** | string |\n| **`triggerAutoUpdate`** | boolean |\n\n\n#### getChannelRes","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":605,"to":688}}}}],["2e67d3dc-5703-48ff-877e-b9d57cecb4aa",{"pageContent":"#### getChannelRes\n\n| Prop | Type | Description | Since |\n| -------------- | -------------------- | ----------------------------- | ----- |\n| **`channel`** | string | Current status of get channel | 4.8.0 |\n| **`error`** | any | | |\n| **`message`** | any | | |\n| **`status`** | string | | |\n| **`allowSet`** | boolean | | |\n\n\n#### SetCustomIdOptions\n\n| Prop | Type |\n| -------------- | ------------------- |\n| **`customId`** | string |\n\n\n#### PluginListenerHandle\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`remove`** | () => Promise<void> |\n\n\n#### DownloadEvent\n\n| Prop | Type | Description | Since |\n| ------------- | ------------------------------------------------- | ---------------------------------------------- | ----- |\n| **`percent`** | number | Current status of download, between 0 and 100. | 4.0.0 |\n| **`bundle`** | BundleInfo | | |\n\n\n#### noNeedEvent\n\n| Prop | Type | Description | Since |\n| ------------ | ------------------------------------------------- | ---------------------------------------------- | ----- |\n| **`bundle`** | BundleInfo | Current status of download, between 0 and 100. | 4.0.0 |\n\n\n#### updateAvailableEvent\n\n| Prop | Type | Description | Since |\n| ------------ | ------------------------------------------------- | ---------------------------------------------- | ----- |\n| **`bundle`** | BundleInfo | Current status of download, between 0 and 100. | 4.0.0 |\n\n\n#### DownloadCompleteEvent\n\n| Prop | Type | Description | Since |\n| ------------ | ------------------------------------------------- | ------------------------------------ | ----- |\n| **`bundle`** | BundleInfo | Emit when a new update is available. | 4.0.0 |\n\n\n#### MajorAvailableEvent\n\n| Prop | Type | Description | Since |\n| ------------- | ------------------- | ------------------------------------------ | ----- |\n| **`version`** | string | Emit when a new major bundle is available. | 4.0.0 |\n\n\n#### UpdateFailedEvent","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":688,"to":749}}}}],["ca3ee329-d2d4-46b0-b86e-d2226ff8e69a",{"pageContent":"#### UpdateFailedEvent\n\n| Prop | Type | Description | Since |\n| ------------ | ------------------------------------------------- | ------------------------------------- | ----- |\n| **`bundle`** | BundleInfo | Emit when a update failed to install. | 4.0.0 |\n\n\n#### DownloadFailedEvent\n\n| Prop | Type | Description | Since |\n| ------------- | ------------------- | -------------------------- | ----- |\n| **`version`** | string | Emit when a download fail. | 4.0.0 |\n\n\n#### AppReadyEvent\n\n| Prop | Type | Description | Since |\n| ------------ | ------------------------------------------------- | -------------------------------- | ----- |\n| **`bundle`** | BundleInfo | Emit when a app is ready to use. | 5.2.0 |\n| **`status`** | string | | |\n\n\n### Type Aliases\n\n\n#### BundleStatus\n\n\"success\" | \"error\" | \"pending\" | \"downloading\"\n\n\n#### DelayUntilNext\n\n\"background\" | \"kill\" | \"nativeVersion\" | \"date\"\n\n\n#### DownloadChangeListener\n\n(state: DownloadEvent): void\n\n\n#### NoNeedListener\n\n(state: noNeedEvent): void\n\n\n#### UpdateAvailabledListener\n\n(state: updateAvailableEvent): void\n\n\n#### DownloadCompleteListener\n\n(state: DownloadCompleteEvent): void\n\n\n#### MajorAvailableListener\n\n(state: MajorAvailableEvent): void\n\n\n#### UpdateFailedListener\n\n(state: UpdateFailedEvent): void\n\n\n#### DownloadFailedListener\n\n(state: DownloadFailedEvent): void\n\n\n#### AppReloadedListener\n\n(state: void): void\n\n\n#### AppReadyListener\n\n(state: AppReadyEvent): void\n\n\n\n### Listen to download events\n\n```javascript\n import { CapacitorUpdater } from '@capgo/capacitor-updater';\n\nCapacitorUpdater.addListener('download', (info: any) => {\n console.log('download was fired', info.percent);\n});\n```\n\nOn iOS, Apple don't allow you to show a message when the app is updated, so you can't show a progress bar.\n\n### Inspiration\n\n- [cordova-plugin-ionic](https://github.com/ionic-team/cordova-plugin-ionic)\n- [capacitor-codepush](https://github.dev/mapiacompany/capacitor-codepush)\n\n\n### Contributors\n\n[jamesyoung1337](https://github.com/jamesyoung1337) Thanks a lot for your guidance and support, it was impossible to make this plugin work without you.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_capacitor-updater.md","loc":{"lines":{"from":749,"to":850}}}}],["2a848af2-3585-4ad3-8a23-e59545605a71",{"pageContent":"# cyranomini\n\nThis minimises the Cyrano App\n\n## Install\n\n```bash\nnpm install cyranomini\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`minimize()`](#minimize)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### minimize()\n\n```typescript\nminimize() => Promise\n```\n\n**Returns:** Promise<any>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SyedSaadUrRehman-MAD_CyranoMini.md","loc":{"lines":{"from":1,"to":49}}}}],["2e37247f-835a-4276-8010-0aa233e9618f",{"pageContent":"# ion-sms-retrieved\n\nImplement Android SMS retrived\n\n## Install\n\n```bash\nnpm install ion-sms-retrieved\nnpx cap sync\n```\n\n## Example\n\n[OTP screen](https://github.com/anhhtbk/ion-sms-retrieved/blob/main/example/src/app/home/home.page.ts)\n\n\n\n```javascript\n// register to SMS receiver when screen appear\nAndroidSmsRetrieved.registerSmsReceiver();\n// unregister from SMS receiver when screen dissappear\nAndroidSmsRetrieved.unregisterSmsReceiver();\n// get otp from sms\nAndroidSmsRetrieved.startSmsUserConsent().then(({ otp }) => {\n this.oneTimeCode = otp;\n});\n```\n\n## API\n\n\n\n* [`registerSmsReceiver()`](#registersmsreceiver)\n* [`unregisterSmsReceiver()`](#unregistersmsreceiver)\n* [`startSmsUserConsent()`](#startsmsuserconsent)\n\n\n\n\n\n\n### registerSmsReceiver()\n\n```typescript\nregisterSmsReceiver() => any\n```\n\n**Returns:** any\n\n--------------------\n\n\n### unregisterSmsReceiver()\n\n```typescript\nunregisterSmsReceiver() => any\n```\n\n**Returns:** any\n\n--------------------\n\n\n### startSmsUserConsent()\n\n```typescript\nstartSmsUserConsent() => Promise<{ otp: string; }>\n```\n\n**Returns:** Promise<{ otp: string; }>\n\n--------------------\n\n\n\n## Ref\n\n[Auto read otp android user consent api](https://androidwave.com/auto-read-otp-android-user-consent-api/) \\\n[Build capacitor plugin](https://devdactic.com/build-capacitor-plugin) \\\n[Custom Native Android Code](https://capacitorjs.com/docs/android/custom-code) \\\n[Create implementation in plugin](https://github.com/capawesome-team/capacitor-badge/blob/cf29ce1d68628a328076d7ed34d21a11ce6eb927/android/src/main/java/dev/robingenz/capacitor/badge/BadgePlugin.java#L17)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/anhhtbk_ion-sms-retrieved.md","loc":{"lines":{"from":1,"to":84}}}}],["6b0e1bc8-d7f2-4d60-81ee-fecd1d3667ff",{"pageContent":"# capacitor-sound-effect\n\nThis plugin provides the ability to natively play sound effects in Capacitor based projects.\n\n## Install\n\n### General\n```bash\nnpm install capacitor-sound-effect\nnpx cap sync\n```\n\n### Ionic\n```bash\nnpm install capacitor-sound-effect\nionic cap sync\n```\n\n## API\n\n\n\n* [`loadSound(...)`](#loadsound)\n* [`play(...)`](#play)\n\n\n\n\n\n\n### loadSound(...)\n\n```typescript\nloadSound(options: { id: string; path: string; }) => any\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------ |\n| **`options`** | { id: string; path: string; } |\n\n**Returns:** any\n\n--------------------\n\n\n### play(...)\n\n```typescript\nplay(options: { id: string; }) => any\n```\n\n| Param | Type |\n| ------------- | ---------------------------- |\n| **`options`** | { id: string; } |\n\n**Returns:** any\n\n--------------------\n\n\n\n## Usage Example\n\nThis example is based on an Ionic (Vue) project, but is generally applicable to other scenarios\n\n#### Import the plugin\n\n```javascript\nimport { SoundEffect } from 'capacitor-sound-effect';\n```\n\n#### Load the sounds\n\nIn Ionic, the path is relative to your 'public' directory. So for a file located in /public/assets/sounds/, the below is applicable:\n\n```javascript\nloadSounds() {\n SoundEffect.loadSound({id:'message', path:'assets/sounds/message.mp3'});\n SoundEffect.loadSound({id:'status', path:'assets/sounds/status.mp3'});\n}\n```\n\nYou must pass an object, as illustrated above, to the loadSound() method. The 'id' must be unique as it is used to reference the sound when you come to playing.\n\n#### Play a sound\n\nWhen playing a sound, you must reference the 'id' you provided during loadSound().\n\n```javascript\nSoundEffect.play({id:'message'});\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/veloce_capacitor-sound-effect.md","loc":{"lines":{"from":1,"to":91}}}}],["8a960704-d3ca-475f-91ac-7a670dd8b363",{"pageContent":"# capacitor-sqlite-android\n\nsqlite\n\n## Install\n\n```bash\nnpm install capacitor-sqlite-android\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`loadDatabase(...)`](#loaddatabase)\n* [`queryForObject(...)`](#queryforobject)\n* [`queryForList(...)`](#queryforlist)\n* [`insertEntity(...)`](#insertentity)\n* [`updateEntity(...)`](#updateentity)\n* [`delEntity(...)`](#delentity)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n测试方法\n\n| Param | Type | Description |\n| ------------- | ------------------------------- | ----------- |\n| **`options`** | { value: string; } | echo params |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### loadDatabase(...)\n\n```typescript\nloadDatabase(options: { dbPath?: string; dbName: string; }) => Promise<{ data: string | boolean; }>\n```\n\n加载数据库\n\n| Param | Type | Description |\n| ------------- | ------------------------------------------------- | ----------------------------- |\n| **`options`** | { dbPath?: string; dbName: string; } | dbPath: 数据库文件位置 dbName: 数据文件名 |\n\n**Returns:** Promise<{ data: string | boolean; }>\n\n--------------------\n\n\n### queryForObject(...)\n\n```typescript\nqueryForObject(options: SQLiteQueryOptions) => Promise<{ data: any; }>\n```\n\n查询单个对象\n\n| Param | Type | Description |\n| ------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- |\n| **`options`** | SQLiteQueryOptions | 查询参数 {@link SQLiteQueryOptions} |\n\n**Returns:** Promise<{ data: any; }>\n\n--------------------\n\n\n### queryForList(...)\n\n```typescript\nqueryForList(options: SQLiteQueryOptions) => Promise<{ data: any[]; }>\n```\n\n查询列表\n\n| Param | Type | Description |\n| ------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- |\n| **`options`** | SQLiteQueryOptions | 查询参数 {@link SQLiteQueryOptions} |\n\n**Returns:** Promise<{ data: any[]; }>\n\n--------------------\n\n\n### insertEntity(...)\n\n```typescript\ninsertEntity(options: SQLiteEnitytOptions) => Promise<{ data: string | boolean; }>\n```\n\n保存实体","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/parselife_capacitor-sqlite.md","loc":{"lines":{"from":1,"to":104}}}}],["e94b6a9e-83fd-4722-8a8c-bca3236fddaf",{"pageContent":"```typescript\ninsertEntity(options: SQLiteEnitytOptions) => Promise<{ data: string | boolean; }>\n```\n\n保存实体\n\n| Param | Type | Description |\n| ------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |\n| **`options`** | SQLiteEnitytOptions | 实体参数 {@link SQLiteEnitytOptions} |\n\n**Returns:** Promise<{ data: string | boolean; }>\n\n--------------------\n\n\n### updateEntity(...)\n\n```typescript\nupdateEntity(options: SQLiteEntityUpdateOptions) => Promise<{ data: string | boolean; }>\n```\n\n更新实体\n\n| Param | Type | Description |\n| ------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |\n| **`options`** | SQLiteEntityUpdateOptions | 更新实体参数 {@link SQLiteEntityUpdateOptions} |\n\n**Returns:** Promise<{ data: string | boolean; }>\n\n--------------------\n\n\n### delEntity(...)\n\n```typescript\ndelEntity(options: SQLiteEntityUpdateOptions) => Promise<{ data: string | boolean; }>\n```\n\n删除实体\n\n| Param | Type | Description |\n| ------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |\n| **`options`** | SQLiteEntityUpdateOptions | 更新实体参数 {@link SQLiteEntityUpdateOptions} |\n\n**Returns:** Promise<{ data: string | boolean; }>\n\n--------------------\n\n\n### Interfaces\n\n\n#### SQLiteQueryOptions\n\n数据库查询对象","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/parselife_capacitor-sqlite.md","loc":{"lines":{"from":104,"to":158}}}}],["b16e8ccb-d18b-4920-b30f-15408dc20df9",{"pageContent":"--------------------\n\n\n### Interfaces\n\n\n#### SQLiteQueryOptions\n\n数据库查询对象\n\n| Prop | Type | Description |\n| ------------------- | --------------------- | ------------------------------- |\n| **`tblName`** | string | 操作表名 |\n| **`selection`** | string | 查询条件 eg: a=? and b like '%?' |\n| **`selectionArgs`** | string[] | 查询的参数 替换 selection 中的 ? |\n| **`returnColumns`** | string[] | 返回的列名 为空则返回所有 |\n| **`groupBy`** | string | groupby 语句 eg: name |\n| **`having`** | string | having 语句 eg: sum(area) > 20 |\n| **`orderBy`** | string | order by 语句 eg: time desc |\n| **`limit`** | number | limit 数量 eg: 10 |\n\n\n#### SQLiteEnitytOptions\n\n数据库实体保存对象\n\n| Prop | Type | Description |\n| ------------- | --------------------------------- | ------------------------------------------------------------------- |\n| **`tblName`** | string | 操作的表名 |\n| **`columns`** | SQLiteEntityColumn[] | 保存的数据列 {@link SQLiteEntityColumn} |\n\n\n#### SQLiteEntityColumn\n\n数据库实体数据列\n\n| Prop | Type | Description |\n| -------------- | ---------------------------------------- | ------------------ |\n| **`name`** | string | 字段名称 |\n| **`value`** | string \\| number \\| boolean | 字段值 |\n| **`nullable`** | boolean | 是否允许为null 默认 false |\n\n\n#### SQLiteEntityUpdateOptions\n\n实体更新对象\n\n| Prop | Type | Description |\n| --------------------- | --------------------------------- | ------------------------------------------------------------------- |\n| **`tblName`** | string | 操作的表名 |\n| **`columns`** | SQLiteEntityColumn[] | 保存的数据列 {@link SQLiteEntityColumn} |\n| **`whereClause`** | string | where 条件 eg: id=? |\n| **`whereClauseArgs`** | string[] | where 条件参数 ? 的值 |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/parselife_capacitor-sqlite.md","loc":{"lines":{"from":158,"to":212}}}}],["5aa7f66a-5021-441a-9df8-fe8a1d043376",{"pageContent":"# native-purchases\n Capgo - Instant updates for capacitor\n \n\n\nIn-app Purchases Made Easy\n\n## Install\n\n```bash\nnpm install native-purchases\nnpx cap sync\n```\n\n## Android\n\nAdd this to manifest\n\n```xml\n\n```\n\n## API\n\n\n\n* [`restorePurchases()`](#restorepurchases)\n* [`purchaseProduct(...)`](#purchaseproduct)\n* [`getProducts(...)`](#getproducts)\n* [`isBillingSupported()`](#isbillingsupported)\n* [`getPluginVersion()`](#getpluginversion)\n* [Interfaces](#interfaces)\n* [Enums](#enums)\n\n\n\n\n\n\n### restorePurchases()\n\n```typescript\nrestorePurchases() => any\n```\n\nRestores a user's previous and links their appUserIDs to any user's also using those .\n\n**Returns:** any\n\n--------------------\n\n\n### purchaseProduct(...)\n\n```typescript\npurchaseProduct(options: { productIdentifier: string; planIdentifier?: string; productType?: PURCHASE_TYPE; quantity?: number; }) => any\n```\n\nStarted purchase process for the given product.\n\n| Param | Type | Description |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |\n| **`options`** | { productIdentifier: string; planIdentifier?: string; productType?: PURCHASE_TYPE; quantity?: number; } | - The product to purchase |\n\n**Returns:** any\n\n--------------------\n\n\n### getProducts(...)\n\n```typescript\ngetProducts(options: { productIdentifiers: string[]; planIdentifier?: string; productType?: PURCHASE_TYPE; }) => any\n```\n\nGets the product info associated with a list of product identifiers.\n\n| Param | Type | Description |\n| ------------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |\n| **`options`** | { productIdentifiers: {}; planIdentifier?: string; productType?: PURCHASE_TYPE; } | - The product identifiers you wish to retrieve information for |\n\n**Returns:** any\n\n--------------------\n\n\n### isBillingSupported()\n\n```typescript\nisBillingSupported() => any\n```\n\nCheck if billing is supported for the current device.\n\n**Returns:** any\n\n--------------------","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_native-purchases.md","loc":{"lines":{"from":1,"to":99}}}}],["8a716b59-59ba-41d1-a110-47b67753b3d9",{"pageContent":"Check if billing is supported for the current device.\n\n**Returns:** any\n\n--------------------\n\n\n### getPluginVersion()\n\n```typescript\ngetPluginVersion() => any\n```\n\nGet the native Capacitor plugin version\n\n**Returns:** any\n\n--------------------\n\n\n### Interfaces\n\n\n#### CustomerInfo","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_native-purchases.md","loc":{"lines":{"from":99,"to":122}}}}],["44815bca-d05d-4bb1-87f4-05e2f096189f",{"pageContent":"| Prop | Type | Description |\n| ------------------------------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **`activeSubscriptions`** | [string] | Set of active subscription skus |\n| **`allPurchasedProductIdentifiers`** | [string] | Set of purchased skus, active and inactive |\n| **`nonSubscriptionTransactions`** | {} | Returns all the non-subscription a user has made. The are ordered by purchase date in ascending order. |\n| **`latestExpirationDate`** | string \\| null | The latest expiration date of all purchased skus |\n| **`firstSeen`** | string | The date this user was first seen in RevenueCat. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_native-purchases.md","loc":{"lines":{"from":124,"to":130}}}}],["4ee382c0-f9a3-406c-a02f-a3b792e3e1b4",{"pageContent":"| **`originalAppUserId`** | string | The original App User Id recorded for this user. |\n| **`requestDate`** | string | Date when this info was requested |\n| **`originalApplicationVersion`** | string \\| null | Returns the version number for the version of the application when the user bought the app. Use this for grandfathering users when migrating to subscriptions. This corresponds to the value of CFBundleVersion (in iOS) in the Info.plist file when the purchase was originally made. This is always null in Android |\n| **`originalPurchaseDate`** | string \\| null | Returns the purchase date for the version of the application when the user bought the app. Use this for grandfathering users when migrating to subscriptions. |\n| **`managementURL`** | string \\| null | URL to manage the active subscription of the user. If this user has an active iOS subscription, this will point to the App Store, if the user has an active Play Store subscription it will point there. If there are no active subscriptions it will be null. If there are multiple for different platforms, it will point to the device store. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_native-purchases.md","loc":{"lines":{"from":131,"to":135}}}}],["4b44faa2-f556-4db4-a2c9-9456a6662bb6",{"pageContent":"#### Transaction\n\n| Prop | Type | Description |\n| ------------------- | ------------------- | -------------------------------------------- |\n| **`transactionId`** | string | RevenueCat Id associated to the transaction. |\n\n\n#### Product\n\n| Prop | Type | Description |\n| --------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------ |\n| **`identifier`** | string | Product Id. |\n| **`description`** | string | Description of the product. |\n| **`title`** | string | Title of the product. |\n| **`price`** | number | Price of the product in the local currency. |\n| **`priceString`** | string | Formatted price of the item, including its currency sign, such as €3.99. |\n| **`currencyCode`** | string | Currency code for price and original price. |\n| **`currencySymbol`** | string | Currency symbol for price and original price. |\n| **`isFamilyShareable`** | boolean | Boolean indicating if the product is sharable with family |\n| **`subscriptionGroupIdentifier`** | string | Group identifier for the product. |\n| **`subscriptionPeriod`** | SubscriptionPeriod | The Product subcription group identifier. |\n| **`introductoryPrice`** | SKProductDiscount \\| null | The Product introductory Price. |\n| **`discounts`** | {} | The Product discounts list. |\n\n\n#### SubscriptionPeriod","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_native-purchases.md","loc":{"lines":{"from":138,"to":163}}}}],["393fa8b3-f9c5-4686-8a08-8eeb8e5af959",{"pageContent":"#### SubscriptionPeriod\n\n| Prop | Type | Description |\n| ------------------- | ------------------- | --------------------------------------- |\n| **`numberOfUnits`** | number | The Subscription Period number of unit. |\n| **`unit`** | number | The Subscription Period unit. |\n\n\n#### SKProductDiscount\n\n| Prop | Type | Description |\n| ------------------------ | ----------------------------------------------------------------- | ------------------------------------------------------------------------ |\n| **`identifier`** | string | The Product discount identifier. |\n| **`type`** | number | The Product discount type. |\n| **`price`** | number | The Product discount price. |\n| **`priceString`** | string | Formatted price of the item, including its currency sign, such as €3.99. |\n| **`currencySymbol`** | string | The Product discount currency symbol. |\n| **`currencyCode`** | string | The Product discount currency code. |\n| **`paymentMode`** | number | The Product discount paymentMode. |\n| **`numberOfPeriods`** | number | The Product discount number Of Periods. |\n| **`subscriptionPeriod`** | SubscriptionPeriod | The Product discount subscription period. |\n\n\n### Enums\n\n\n#### PURCHASE_TYPE\n\n| Members | Value | Description |\n| ----------- | -------------------- | ---------------------------------- |\n| **`INAPP`** | \"inapp\" | A type of SKU for in-app products. |\n| **`SUBS`** | \"subs\" | A type of SKU for subscriptions. |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Cap-go_native-purchases.md","loc":{"lines":{"from":163,"to":196}}}}],["c5d98132-fa6d-41dc-904f-de7cd9d82bd7",{"pageContent":"


\n

Capacitor FCM

\n

@capacitor-community/fcm

\n

\n Capacitor community plugin for enabling FCM capabilities\n

\n\n

\n \n \n
\n \n \n \n\n\n\n

\n\n## Sponsors\n\n\n \n \n \n \n
\n \n \n \n \n \n Intenseloop\n \n
\n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| ------------ | --------------------------------------- | ----------------------------------------- |\n| Stewan Silva | [stewones](https://github.com/stewones) | [@stewones](https://twitter.com/stewones) |\n\n## Notice 🚀\n\nWe're starting fresh under an official org. If you were using the previous npm package `capacitor-fcm`, please update your package.json to `@capacitor-community/fcm`. Check out [changelog](/CHANGELOG.md) for more info.\n\n## Installation\n\nUsing npm:\n\n```bash\nnpm install @capacitor-community/fcm\n```\n\nUsing yarn:\n\n```bash\nyarn add @capacitor-community/fcm\n```\n\nSync native files:\n\n```bash\nnpx cap sync\n```\n\n> ### Notice\n>\n> This plugin is intended to be used combined with Capacitor API for [Push Notifications](https://capacitor.ionicframework.com/docs/apis/push-notifications). Capacitor only provides APN token whereas this plugin offers the possibility to work with FCM tokens and more.\n\n## API","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_fcm.md","loc":{"lines":{"from":1,"to":71}}}}],["d02c8185-01fc-40e2-9fef-12c807262376",{"pageContent":"## API\n\n| method | info | platform |\n| ------------------- | --------------------------------------------- | ----------- |\n| `subscribeTo` | subscribe to fcm topic | ios/android |\n| `unsubscribeFrom` | unsubscribe from fcm topic | ios/android |\n| `getToken` | get fcm token to eventually use from a server | ios/android |\n| `refreshToken` | refresh fcm token to get a new one | ios/android |\n| `deleteInstance` | remove local fcm instance completely | ios/android |\n| `setAutoInit` | enable the auto initialization of the library | ios/android |\n| `isAutoInitEnabled` | check whether auto initialization is enabled | ios/android |\n\n## Usage\n\n```ts\nimport { FCM } from \"@capacitor-community/fcm\";\nimport { PushNotifications } from \"@capacitor/push-notifications\";\n\n// external required step\n// register for push\nawait PushNotifications.requestPermissions();\nawait PushNotifications.register();\n\n// now you can subscribe to a specific topic\nFCM.subscribeTo({ topic: \"test\" })\n .then((r) => alert(`subscribed to topic`))\n .catch((err) => console.log(err));\n\n// Unsubscribe from a specific topic\nFCM.unsubscribeFrom({ topic: \"test\" })\n .then(() => alert(`unsubscribed from topic`))\n .catch((err) => console.log(err));\n\n// Get FCM token instead of the APN one returned by Capacitor\nFCM.getToken()\n .then((r) => alert(`Token ${r.token}`))\n .catch((err) => console.log(err));\n\n// Delete the old FCM token and get a new one\nFCM.refreshToken()\n .then((r) => alert(`Token ${r.token}`))\n .catch((err) => console.log(err));\n\n// Remove FCM instance\nFCM.deleteInstance()\n .then(() => alert(`Token deleted`))\n .catch((err) => console.log(err));\n\n// Enable the auto initialization of the library\nFCM.setAutoInit({ enabled: true }).then(() => alert(`Auto init enabled`));\n\n// Check the auto initialization status\nFCM.isAutoInitEnabled().then((r) => {\n console.log(\"Auto init is \" + (r.enabled ? \"enabled\" : \"disabled\"));\n});\n```\n\n## Add Google config files\n\nNavigate to the project settings page for your app on Firebase.\n\n### iOS\n\nDownload the `GoogleService-Info.plist` file. In Xcode right-click on the yellow folder named \"App\" and select the `Add files to \"App\"`.\n\n> Tip: if you drag and drop your file to this location, Xcode may not be able to find it.\n\n### Android\n\nDownload the `google-services.json` file and copy it to `android/app/` directory of your capacitor project.\n\n### Certificate\n\n- apple\n - create an app identifier (apple site)\n - add push notifications\n - add signing request (https://help.apple.com/developer-account/#/devbfa00fef7)\n - generate an APN key and then note down the ID displayed. also download the p8 file (https://fluffy.es/p8-push-notification/)\n- firebase\n - add the downloaded p8 file to firebase settings with noted key ID and the account team ID\n\n## iOS setup","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_fcm.md","loc":{"lines":{"from":71,"to":152}}}}],["94809b67-ead9-47ba-95ea-bfd19154ebde",{"pageContent":"## iOS setup\n\n- [Install homebrew](https://capacitorjs.com/docs/getting-started/environment-setup#homebrew) _(once)_\n- `brew install cocoapods` _(once a time)_\n- `ionic start my-cap-app --capacitor`\n- `cd my-cap-app`\n- `mkdir www && touch www/index.html`\n- `npx cap add ios`\n- `npm install --save @capacitor-community/fcm`\n- `npx cap sync ios` _(always do sync after a plugin install)_\n- `npx cap open ios`\n\n* sign your app at xcode (general tab)\n* enable remote notification capabilities\n* add `GoogleService-Info.plist` to the app folder in xcode\n\n```\n// (optional) turn off `swizzling` in the `info.plist`\nFirebaseAppDelegateProxyEnabled\nNO\n```\n\n> Tip: every time you change a native code you may need to clean up the cache (Product > Clean build folder) and then run the app again.\n\n### Prevent auto initialization\n\nIf you need to implement opt-in behavior, you can disable the auto initialization of the library by following the [Firebase docs](https://firebase.google.com/docs/cloud-messaging/ios/client#prevent_auto_initialization).\n\n## Android setup\n\n- `ionic start my-cap-app --capacitor`\n- `cd my-cap-app`\n- `mkdir www && touch www/index.html`\n- `npx cap add android`\n- `npm install --save @capacitor-community/fcm`\n- `npx cap sync android` _(always do sync after a plugin install)_\n- `npx cap open android`\n- add `google-services.json` to your `android/app` folder\n\nNow you should be set to go. Try to run your client using `ionic cap run android --livereload`.\n\n> Tip: every time you change a native code you may need to clean up the cache (Build > Clean Project | Build > Rebuild Project) and then run the app again.\n\n### Variables\n\nThis plugin will use the following project variables (defined in your app's `variables.gradle` file):\n\n- `$firebaseMessagingVersion` version of `com.google.firebase:firebase-messaging` (default: `23.1.2`)\n\n### Prevent auto initialization\n\nIf you need to implement opt-in behavior, you can disable the auto initialization of the library by following the [Firebase docs](https://firebase.google.com/docs/cloud-messaging/android/client#prevent-auto-init).\n\n## Example\n\n- https://github.com/capacitor-community/fcm/tree/master/example\n\n## License\n\nMIT\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_fcm.md","loc":{"lines":{"from":152,"to":215}}}}],["c7716a52-567a-4fb9-ac36-800d740ffa9e",{"pageContent":"\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_fcm.md","loc":{"lines":{"from":217,"to":232}}}}],["d54b50a4-6b31-48c5-ae89-8fe0f47f570a",{"pageContent":"\n \n \n \n \n \n \n \n \n \n \n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_fcm.md","loc":{"lines":{"from":233,"to":244}}}}],["ed4a922a-0031-4b1f-ba9c-7248c51a9282",{"pageContent":"\n \n \n \n \n \n \n \n \n \n \n
\"Stew\"/
Stew

💻 📖
\"Daniel
Daniel Pereira

💻 📖
\"Priyank
Priyank Patel

💻
\"Nikolas\"/
Nikolas

🚧
\"Ben
Ben Schattinger

💻
\"James
James Manners

💻
\"Borja
Borja Rodríguez

🚧
\"Karrlllis\"/
Karrlllis

📖
\"jamesmah\"/
jamesmah

💻
\"Josh
Josh Sharpe

🚧
\"Mantas
Mantas Šimkūnas

💻 📖
\"Olivier
Olivier Overstraete

🚧
\"Hemang
Hemang Kumar

💻 🚧
\"Luca
Luca Ban

📖
\"Alex
Alex Griffith

💻 🚧
\"bdirito\"/
bdirito

🚧
\"Ryan\"/
Ryan

🚧
\"Josué
Josué Moreno

💻
\"Marc\"/
Marc

🚧
\"Florian
Florian Gyger

💻
\"jcesarmobile\"/
jcesarmobile

💬 📖 🚧
\"Rami
Rami Khafagi

💻
\"Bittor
Bittor Poza

💻
","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_fcm.md","loc":{"lines":{"from":245,"to":256}}}}],["4c8e6ae6-096a-4ede-9f07-c37420e0f7ff",{"pageContent":"\n\n\n\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_fcm.md","loc":{"lines":{"from":258,"to":263}}}}],["9d9115e0-ffed-4acd-9a5c-8ac2001094a9",{"pageContent":"[![npm version](https://badge.fury.io/js/capacitor-firebase-auth.svg)](https://badge.fury.io/js/capacitor-firebase-auth)\n\n# capacitor-firebase-auth\n\nCapacitor plugin for Firebase Authentication that handle the authentication on Native layer and propagate the token to the web view layer. After the sign-in process completes, the user will be signed in within both tiers.\n\nAuthenticating on the native layer is useful if you have another plugin that also needs authentication. But even if you don't need it, it does not negatively affect performance.\n\nThe plugin supports Google, Twitter, Facebook, Apple and Phone providers in Android, iOS and Web.\n\n## Tracking the Work in Progress\n\n| Platform | Google | Facebook | Twitter | Phone | Apple | Email/Pass |\n|:-----------|:----------:|:---------:|:---------:|:---------:|:---------:|:----------:|\n| Android | ✅ | ✅ | ✅ | ✅ | 🚧 | 🧠 | \n| iOS | ✅ | ✅ | ✅ | ✅ | ✅ | 🧠 | \n| Web | ✅ | ✅ | ✅ | 🧠 | 🧠 | 🧠 | \n\n✅ - Ready \n🚧 - Work in progress \n🧠 - Thinking about, date to be defined \n\n## Important notes for upgrading between minor or major versions.\n\n### from 2.x.y to 3.0.0\n> Use of Capacitor 3.0.0\n> Please follow every step of official [Capacitor migration guide](https://capacitorjs.com/docs/v3/updating/3-0).\n\n#### from 2.x.y to 2.4.x\n> Use of Firebase ^8.0.0\n> Please, for a while read the instructions on issues #128.\n> This is the last release before Capacitor 3.\n\n#### from 2.2.x to 2.3.x\n> Requires Capacitor Framework v2.2.1 or newer. This is another episode of the Capacitor Framework braking changes \n> on Android platform (com.getcapacitor.Config, now com.getcapacitor.CapConfig).\n\n> Really sorry about braking changes in minor release, but I want to follow major version of the Capacitor Framework. \n\n#### from 2.0.x to 2.2.x \n> You need to use version 2.2.0 of the Capacitor Framework due braking changes on Android platform (com.getcapacitor.Config)\n\n#### from 0.3.x to 2.0.0\n> Sorry about that, but there is no path to do it, I my case, me and my team decided to re-build the projects from scratch, this does not mean code \n> rewrite, just a project, configurations and build. The good news is, there is no change on Typescript/Javascript/Java/Swift facades.\n\n> Anyway, you can make a try with Capacitor Framework update instructions:\n>[From <= 1.5.1 to 2.0.0](https://capacitorjs.com/docs/android/updating#from-1-5-1-to-2-0-0)\n\n#### from 0.2.x to 0.3.0: esModuleInterop\n\n> The firebase import was changed using `esModuleInterop`, that was a [Stencil](https://stenciljs.com) requirements, please see issue [#38](https://github.com/baumblatt/capacitor-firebase-auth/issues/38).\n\n```\n1 import firebase from 'firebase/app';\n ~~~~~~~~\n 8601 export = firebase;\n ~~~~~~~~~~~~~~~~~~\n This module is declared with using 'export =', and can only be used with a default import when using the 'allowSyntheticDefaultImports' flag.\n```\nIf you see the message above, please use `esModuleInterop=true` in your `tsconfig.json` file.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":1,"to":61}}}}],["e2821633-8764-4c86-bc8f-2d4ab895f168",{"pageContent":"#### from 0.1.x to 0.2.0: GoogleSignIn 5.0.0\n> Required GoogleSignIn 5.0.0 on iOS platform, run `pod update` if using lower version.\n\n\n## Next steps\n\n1. Test for Apple provider for Android\n2. Apple provider for Web\n3. Link social accounts\n4. Email/Password Provider\n\n> Should we do this? It's very simple to authenticate on WebView without any plugin. \n> For awhile, waiting a good reason to do it. (track interest on Issue #24)\n\n### How to Install\n\nInstall the plugin into your Capacitor project with npm.\n\n```\nnpm install --save capacitor-firebase-auth\n```\n\n> Don't forget to run `npx cap sync` once after the installation to propagate the plugin to native projects. \n \n### How to Config\n\n### The minimal version of some peer dependencies that breaks with previous versions\n\n- FBSDKCoreKit 5.0.0 (see issue #12)\n- FBSDKLoginKit 5.0.0 (see issue #12)\n- GoogleSignIn 5.0.0 (see issue #14 and #15)\n\n## Capacitor Plugins\n\n1. In file `capacitor.config.json` config the providers list, language code and native authentication as desired\n ```\n [...]\n \"plugins\": {\n \"CapacitorFirebaseAuth\": {\n \"providers\": [\"google.com\", \"twitter.com\", \"facebook.com\", \"phone\"],\n \"languageCode\": \"en\",\n \"nativeAuth\": false,\n \"properties\": {\n \"google\": {\n \"hostedDomain\": \"my-custom-domain.com\"\n }\n }, \n \"permissions\": {\n \"google\": [\"profile\", \"https://www.googleapis.com/auth/drive\", ...]\n }\n }\n }\n [...]\n ```\n > Note: `nativeAuth` is a feature supported for Google, Twitter and Facebook (not Phone or Apple) to sign the user on the native layer too.\n >> This is useful if you need to handle any feature provided by another plugin that needs authentication.\n \n > Note 2: Don't forget to remove `hosted domain` properties from Google SignIn in case you don't need it. \n > See more [here](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInOptions.Builder#parameters_6)\n > about this feature.\n\n2. In file `android/app/src/main/java/.../MainActivity.java` add the reference to the Capacitor Firebase Auth plugin inside the Bridge initialization.\n ```\n [...]\n import com.baumblatt.capacitor.firebase.auth.CapacitorFirebaseAuth;\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(CapacitorFirebaseAuth.class);\n }});\n [...]\n ```\n \n3. For Typescript users, please, review your `tsconfig.json` and ensure that you are using `esModuleInterop=true`.\n\n## Firebase","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":63,"to":139}}}}],["45e6949d-a113-40c9-8fd2-71a51dfe0f26",{"pageContent":"## Firebase\n\n1. Follow instructions to add Firebase to your native project:\n * [Add Firebase to your Android project](https://firebase.google.com/docs/android/setup)\n * [Add Firebase to your iOS project ](https://firebase.google.com/docs/ios/setup)\n2. If you haven't yet connected your app to your Firebase project, do so from the [Firebase console](https://console.firebase.google.com/).\n\n> Please, don't forgot your Google Service _.json_ or _.plist_ file or your app will crash on the startup.\n\n#### Firebase iOS specific configurations\n\n1. Add a URL scheme to your project (iOS only)\n * See the official [documentation here](https://developers.google.com/identity/sign-in/ios/start-integrating#add_a_url_scheme_to_your_project).\n\n2. Add the `Firebase/Core` and `Firebase/Auth` pods to the `Podfile` in `ios/App` like this:\n\n ```\n target 'App' do\n capacitor_pods\n # Add your Pods here\n pod 'Firebase/Core'\n pod 'Firebase/Auth'\n end\n ```\n\n#### Extra steps for Android\n\n1. Add Android SHA app hashes to Firebase console (android only)\n * For how to add the hash, check the [documentation here](https://support.google.com/firebase/answer/9137403?hl=en).\n * For _which_ hashes to add:\n * One set is from the local debug keystore which is added by Android Studio\n * Other two sets are from the \"Google Play Console\" if you go to \"Signing\" you can find your \"upload\" keys and your \"release\" keys\n\n## Google\n\n#### Google global configurations\n\n1. Enable Google Sign-In in the Firebase console:\n * In the [Firebase console](https://console.firebase.google.com/), open the **Auth** section.\n * On the **Sign in method** tab, enable the **Google** sign-in method and click **Save**.\n \n#### Google Android specific configurations\n \n1. If you haven't yet specified your app's SHA-1 fingerprint, do so from the [Settings page](https://console.firebase.google.com/project/_/settings/general/) of the Firebase console. See [Authenticating Your Client](https://developers.google.com/android/guides/client-auth) for details on how to get your app's SHA-1 fingerprint.\n\n#### Google iOS specific configurations\n\n1. Add custom URL schemes to your Xcode project:\n * Open your project configuration: double-click the project name in the left tree view. Select your app from the **TARGETS** section, then select the **Info** tab, and expand the **URL Types** section.\n * Click the **+** button, and add a `URL scheme` for your reversed client ID. To find this value, open the `GoogleService-Info.plist` configuration file, and look for the `REVERSED_CLIENT_ID` key. Copy the value of that key, and paste it into the **URL Schemes** box on the configuration page. Leave the other fields blank.\n\n## Phone","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":139,"to":190}}}}],["f43ca37f-7c1a-4d34-8648-3c1cefea2731",{"pageContent":"## Phone\n\n#### Google iOS specific configurations\nSince that Apple using Push Notification service (APNs). You need to have `.p8` key and upload to project FCM config to use phone login or you will get this [Error](https://stackoverflow.com/questions/45091583/invalid-token-when-trying-to-authenticate-phone-number-using-firebase). Do so from the [Settings page](https://console.firebase.google.com/project/_/settings/cloudmessaging/) of the Firebase console. See [Configuring APNs with FCM](https://firebase.google.com/docs/cloud-messaging/ios/certs) for details on how to get your app's P8 key.\n\n## Twitter\n\n#### Twitter global configurations\n\n1. [Register your app](https://apps.twitter.com/) as a developer application on Twitter and get your app's **API Key** and **API Secret**.\n2. Enable Twitter Login:\n * In the [Firebase console](https://console.firebase.google.com/), open the **Auth** section\n * On the **Sign in method** tab, enable the **Twitter** sign-in method and specify the **App ID** and **App Secret** you got from Facebook.\n * Then, make sure your Firebase OAuth redirect URI (e.g. _my-app-12345.firebaseapp.com/\\_\\_/auth/handler_) is set as your Callback URL in your app's settings page on your [Twitter app's config](https://apps.twitter.com/).\n\n#### Twitter Android and iOS specific configurations\n\n1. There isn't any specific configuration on Android and iOs native projects because the use of firebase OAuthProvider.\n> Since version 2.0.0 this plugin does not use Twitter Kit anymore, following implementation reference of Firebase Documentation. \n\n## Facebook\n\n#### Facebook global configurations\n\n1. On the [Facebook for Developers](https://developers.facebook.com/) site, get the **App ID** and an **App Secret** for your app\n2. Enable Facebook Login:\n * In the [Firebase console](https://console.firebase.google.com/), open the **Auth** section\n * On the **Sign in method** tab, enable the **Facebook** sign-in method and specify the **App ID** and **App Secret** you got from Facebook.\n * Then, make sure your **OAuth redirect URI** (e.g. _my-app-12345.firebaseapp.com/__/auth/handler_) is listed as one of your OAuth redirect URIs in your Facebook app's settings page on the [Facebook for Developers](https://developers.facebook.com/) site in the **Product Settings** > **Facebook Login** config.\n\n#### Facebook Android specific configurations","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":190,"to":220}}}}],["70d4f891-f12a-4ad6-a1c3-37f3589f6b6f",{"pageContent":"#### Facebook Android specific configurations \n\n1. Add the dependency for **Facebook SDK** to your app-level build.gradle file:\n ```\n implementation 'com.facebook.android:facebook-android-sdk:5.15.3'\n ```\n2. In file `android/app/src/main/AndroidManifest.xml`, add the following XML elements under `` :\n \n ```xml\n \n \n \n \n \n \n \n \n \n \n \n \n ```\n \n3. In file `android/app/src/main/res/values/ids.xml` add the following lines :\n ```xml\n [APP_ID]\n fb[APP_ID]://authorize\n ```\n > Don't forget to replace `[APP_ID]` by your Facebook **App ID**.\n\n#### Facebook iOS specific configurations\n\n1. Add your your `[APP_ID]` and `[APP_NAME]` keys in the file `ios/App/App/Info.plist`.\n\n ```xml\n \n \n \n \n [...]\n FacebookAppID\n [APP_ID]\n FacebookDisplayName\n [APP_NAME]\n [...]\n \n \n ```\n\n2. Add custom URL schemes to your Xcode project:\n * Open your project configuration: double-click the project name in the left tree view. Select your app from the **TARGETS** section, then select the **Info** tab, and expand the **URL Types** section.\n * Click the **+** button, and add a `URL` scheme for the Callback URL of Facebook Kit for iOS. In **URL Schemes** box on the configuration page use `fb[APP_ID]`. Leave the other fields blank.\n\n3. Add the pods that you want to install. You can include a Pod in your Podfile like this:\n\n ```\n target 'App' do\n capacitor_pods\n # Add your Pods here\n pod 'Firebase/Core'\n pod 'Firebase/Auth'\n pod 'FBSDKCoreKit'\n pod 'FBSDKLoginKit'\n end\n ```\n\n4. Dispatch the designated callback URL to Facebook Kit in your `ios/App/App/AppDelegate.swift` file.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":220,"to":292}}}}],["957579d7-c0ec-4a1b-b4f0-2dc0ac203ff5",{"pageContent":"4. Dispatch the designated callback URL to Facebook Kit in your `ios/App/App/AppDelegate.swift` file.\n\n Facebook SDK\n ```\n import FBSDKCoreKit\n \n ...\n \n func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {\n // Called when the app was launched with a url. Feel free to add additional processing here,\n // but if you want the App API to support tracking app url opens, make sure to keep this call\n \n if let scheme = url.scheme, let host = url.host {\n if scheme == \"fb\\(String(describing: Settings.appID))\" && host == \"authorize\" {\n return ApplicationDelegate.shared.application(app, open: url, options: options)\n }\n }\n \n return CAPBridge.handleOpenUrl(url, options)\n }\n ```\n\n\n> Don't forget to replace `[APP_ID]` and `[APP_NAME]` by your Facebook **App ID** and **App Name** respectively.\n\n## Apple\n\n#### Apple global configurations \n1. Follow carefully sections: \n[Before you begin](https://firebase.google.com/docs/auth/ios/apple#before-you-begin), \n[Join the Apple Developer Program](https://firebase.google.com/docs/auth/ios/apple#join-the-apple-developer-program) and\n[Configure Sign In with Apple](https://firebase.google.com/docs/auth/ios/apple#configure_sign_in_with_apple)\nof Firebase docs.\n\n2. Enable Apple as a sign-in provider, in the [Firebase console](https://console.firebase.google.com/), open the Auth section. On the Sign in method tab, enable the Apple provider. If you are only using Sign In with Apple in an iOS app, you can leave the Service ID, Apple Team ID, private key and key ID fields empty.\n\n#### Apple Android configurations\n\n1. Follow carefully sections:\n[Configure Sign In with Apple](https://firebase.google.com/docs/auth/android/apple?authuser=0#configure-sign-in-with-apple)\n \n#### Apple iOs configurations \nNo additional configurations are required by this plugin.\n\n> Don't forget to enable ```Apple Sign In``` capability for your App on Xcode.\n\n## Usage\n\n#### Sign in\n\n```typescript\nimport {User} from 'firebase/app'\nimport {cfaSignIn} from 'capacitor-firebase-auth';\n\ncfaSignIn('google.com').subscribe(\n\t(user: User) => console.log(user.displayName);\n)\n```\n\n#### Sign in mapping User to UserInfo\n```typescript\n import {cfaSignIn, mapUserToUserInfo} from 'capacitor-firebase-auth';\n import {UserInfo} from 'firebase/app';\n \n cfaSignIn('google.com').pipe(\n \tmapUserToUserInfo(),\n ).subscribe(\n (user: UserInfo) => console.log(user.displayName)\n )\n```\n\n#### Sign out\n\n```typescript\nimport {cfaSignOut} from 'capacitor-firebase-auth';\n\n//[...]\n\ncfaSignOut().subscribe()\n```\n\n#### Phone Verification\n\n```typescript\nimport {cfaSignInPhone} from 'capacitor-firebase-auth';\n\ncfaSignInPhone('+16505551234').subscribe(\n user => console.log(user.phoneNumber)\n)\n```\n\n> On iOS platform the observable will complete without emit (like EMPTY), follow the notifications below to sign on Firebase on Web Layer.\n\n#### Notification for Phone Verification step","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":292,"to":385}}}}],["a983ef60-2a93-4496-a44c-d72000b0d85e",{"pageContent":"#### Notification for Phone Verification step\n\n```typescript\nimport {cfaSignInPhoneOnCodeSent, cfaSignInPhoneOnCodeReceived} from 'capacitor-firebase-auth';\n\n// [...]\n\n// Android and iOS\ncfaSignInPhoneOnCodeSent().subscribe(\n\tverificationId => console.log(verificationId)\n)\n\n// Android Only\ncfaSignInPhoneOnCodeReceived().subscribe(\n\t(event: {verificationId: string, verificationCode: string}) => console.log(`${event.verificationId}:${event.verificationCode}`)\n)\n\n```\n\nSuggestion for web authentication code to iOS, the ```verificationCode`` must be provided by the user, please see [Firebase documentation](https://firebase.google.com/docs/auth/web/phone-auth#sign-in-the-user-with-the-verification-code) for better options.\n```typescript\n\nimport firebase from 'firebase/app';\nimport 'firebase/auth';\n\nconst credential = firebase.auth.PhoneAuthProvider.credential(verificationId, verificationCode);\n\nfirebase.auth().signInWithCredential(credential);\n```\n\n## Alterantive use of Javascript facade\n\nThis implementations of the javascript facade calls, return in addition to the Firebase user \nthe information returned by the plugin from the native layer. For example, in Twitter sign in\nthe token and secret are returned for use with Twitter User API. \n\n> Specials thanks for [@go-u](https://github.com/go-u), by this suggested improvement, more information please see issue [#23](https://github.com/baumblatt/capacitor-firebase-auth/issues/23)!\n\n#### Sign in\n\n```typescript\nimport firebase from 'firebase/app';\nimport {cfaSignIn, SignInResult} from 'capacitor-firebase-auth/alternative'; import {SignInResult} from './definitions';\n\ncfaSignIn('twitter.com').subscribe(\n\t({userCredential, result}: {userCredential: firebase.auth.UserCredential, result: SignInResult}) => {\n\t\tconsole.log(userCredential.user.displayName);\n\t\tconsole.log(result) // will print (providerId, idToken and secret)\n\t}\n)\n```\n\n#### Sign In using direct twitter method\n\n```typescript\nimport firebase from 'firebase/app';\nimport {cfaSignInTwitter, TwitterSignInResult} from 'capacitor-firebase-auth/alternative'; import {SignInResult} from './definitions';\n\ncfaSignInTwitter().subscribe(\n\t({userCredential, result}: {userCredential: firebase.auth.UserCredential, result: TwitterSignInResult}) => {\n\t\tconsole.log(userCredential.user.displayName);\n\t\tconsole.log(result.idToken)\n\t}\n)\n```\n\n#### Sign In; Use credentials for something; and map to UserInfo\n\n```typescript\nimport {UserInfo} from 'firebase/app'; \nimport {cfaSignInTwitter, TwitterSignInResult, mapUserCredentialToUserInfo} from 'capacitor-firebase-auth/alternative'; \nimport {tap} from 'rxjs/operators';\n\ncfaSignInTwitter().pipe(\n tap(({result}:{result: TwitterSignInResult}) => console.log(result.idToken)),\n mapUserCredentialToUserInfo(),\n).subscribe(\n\t(user: UserInfo) => console.log(user.displayName)\n)\n```\n\n## Known limitations\n\n#### Phone Verification","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":385,"to":468}}}}],["247fb48a-e478-4b57-8c6a-56c09cd4e0e7",{"pageContent":"## Known limitations\n\n#### Phone Verification\n\nThe user will be **signed in** only in web layer. This limitation is due to the **verification code** only works once. So, there is no way to authenticate the user in both layers (native and web) with just one SMS Code.\n\n## Pull Request are welcome\n\nThe pull request are always welcome, please, use the `next` branch, so we can take a look together with others ongoing works.\n\n## Buy me a beer\n\nIf you feel that project is useful, please, considered to buy me a beer through [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=GWR8QXSQ7TT8U&item_name=Capacitor+Firebase+Auth¤cy_code=BRL&source=url)\n\nLooking forward to enable FUNDING.yml soon.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":468,"to":482}}}}],["749c1e09-a3d0-4410-b149-beec6ac7cb4b",{"pageContent":"## History\n- Issue #112 - Request hostedDomain support for Google Sign-in\n- Issue #63 - Support for Apple Sign In on iOS platform. Android platform maybe work, not tested yet.\n- Fix the same issue as in PR #104 but now on 'twitter.provider.ts', maybe there was a change in firebase.js (be sure you are using at least 7.17.1). \n- PR #104 - Update 'facebook.provider.ts' (fix the grap of the access token), thanks to [hiepxanh](https://github.com/hiepxanh)\n- PR #99 - Unify firebase imports to recommended syntax, thanks to [Luca Ban](https://github.com/mesqueeb).\n- Remove the steps about `JavaVersion.VERSION_1_8` because the plugin does not use Twitter Toolkit anymore.\n- Issue #90 - Information about `nativeAuth` feature on readme file.\n- PR #82 - Fix  Google silentSignIn crash on Android, this should fix the issue [#69](https://github.com/baumblatt/capacitor-firebase-auth/issues/69)\n- PR #95 - Fix version 2.2.1 not compiling: Update to the new Capacitor Config Class, thanks to [Sergio Milici](https://github.com/sergiomilici)\n- Issue #84 - Upgrade to Capacitor 2.2.0 - braking changes on com.getcapacitor.Config\n- Upgrade to Capacitor 2.0.0\n- Issue #66 - Cannot convert value of type 'NSError' to expected argument type 'String?', thanks to [Greg McKelvey](https://github.com/mckelveygreg).\n- Issue #38 - interoperability with [Stencil](https://stenciljs.com), thanks to [Justin Rich](https://github.com/socalrunner).\n- Issue #29 - plugin doesn't handle expired tokens\n- Issue #23 - Alternative Facade for receive more information from the authentication providers. (fixed a little typo)\n- Issue #26 - No callback when error/cancel in Google SignUp.\n- Issue #16 - Support for Google Sign In Scopes.\n- Issue #14 and Issue #15 - Update ios version to GoogleSignIn 5.0.0\n- Issue #13 - Operator to map firebase.User to firebase.userInfo.\n- Issue 9#: Support for language configurations (Phone Verification)\n- Capacitor v1.1.1\n- Better Facade code (Thanks for @trentcrockett contribution).\n- Notifications for `On Code Sent` and `On Code Received` from Phone Verification process for Android Platform.\n- Notifications for `On Code Sent` from Phone Verification process for iOS Platform (The Firebase does not read the SMS on iOS platform, so there is no way to notify `On Code Received`).\n- Providers list in plugin configurations (braking changes - see How to Config - Capacitor Plugin Item 1)\n- Dependency updates for android platform (Firebase 17 and Facebook 5)\n- Configuration for when authenticate on native layer (default false to avoid double billing)\n- Fix the issue 1#: Default FirebaseApp is not initialized on Android platform\n- WIP: Phone verification sign in on iOS platform.\n- Phone verification sign in on Android platform. \n- How to install and config on Google, Twitter and Facebook.\n- Fix to work without Facebook configurations.\n- Better sign out implementation.\n- Better observable implementations on js facade.\n- Facebook Provider authentication in iOS platform\n- Facebook Provider authentication in Android platform\n- Twitter Provider authentication in iOS platform","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":484,"to":521}}}}],["e4112f1c-729a-4694-915e-36c355e957d3",{"pageContent":"- Facebook Provider authentication in Android platform\n- Twitter Provider authentication in iOS platform\n- Twitter Provider authentication in Android platform\n- The Typescript facade for the plugin\n- Google Provider authentication in iOS Platform\n- Google Provider authentication in Android platform\n- Scaffolding do plugin (npx @capacitor/cli plugin:generate)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baumblatt_capacitor-firebase-auth.md","loc":{"lines":{"from":521,"to":527}}}}],["21fc7fb3-dc1e-4f2e-9a67-abb7345a8ff9",{"pageContent":"# Capacitor плагин для реализации нативной оплаты через Google Pay\n\nПоддерживаются платформы: **Android**, **Web**\n\nРаботу плагина можно посмотреть в [демо-приложении](https://github.com/virusv/capacitor-google-pay-app-demo)\n\nОформление кнопки оплаты обязательно должно соответствовать [правилам использования бренда](https://developers.google.com/pay/api/web/guides/brand-guidelines#mark).\n\n## Добавление плагина\n\n1. Установить плагин\n```bash\nnpm i capacitor-gpay-plugin\n```\n\n2. Добавить инициализацию плагина в `/android/app/src/main/java/<...>/MainActivity.java`\n```java\n// ...\nimport pro.sharks.capacitor.gpay.GPayNative;\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n this.init(savedInstanceState, new ArrayList>() {{\n \n // Инициализация плагина\n add(GPayNative.class);\n }});\n }\n}\n```\n\n3. В файл манифеста `/android/app/src/main/AndroidManifest.xml` добавить мета параметр:\n```xml\n\n\n\n \n\n \n \n```\n\n## Инициализация и оплата\nВсе передаваемые данные описаны на странице:\n[Google Pay (web tutorial)](https://developers.google.com/pay/api/web/guides/tutorial).\n\n```ts\nimport 'capacitor-gpay-plugin' // for web support\nimport { GPayNativePlugin } from 'capacitor-gpay-plugin'\n\nconst GPayNative = Plugins.GPayNative as GPayNativePlugin;\n```\n\n```ts\nimport {\n BaseRequestData,\n PaymentDataRequest,\n PaymentMethod,\n TokenizationSpecificationPaymentGateway,\n PaymentMethodCard,\n AuthMethod,\n CardNetwork,\n PaymentData,\n} from 'capacitor-gpay-plugin'\n\nconst baseRequest: BaseRequestData = {\n apiVersion: 2,\n apiVersionMinor: 0\n};\n\nconst tokenizationSpecification: TokenizationSpecificationPaymentGateway = {\n type: 'PAYMENT_GATEWAY',\n parameters: {\n gateway: 'example',\n gatewayMerchantId: 'exampleGatewayMerchantId',\n }\n};\n\nconst baseCardPaymentMethod: PaymentMethodCard = {\n type: 'CARD',\n parameters: {\n allowedAuthMethods: [\"PAN_ONLY\", \"CRYPTOGRAM_3DS\"] as AuthMethod[],\n allowedCardNetworks: [\"AMEX\", \"DISCOVER\", \"INTERAC\", \"JCB\", \"MASTERCARD\", \"VISA\"] as CardNetwork[],\n }\n};\n\nconst cardPaymentMethod: PaymentMethod = {\n tokenizationSpecification,\n ...baseCardPaymentMethod,\n};\n\n/**\n * Создание объекта типа PaymentsClient, test - означает, что environment будет установлен в TEST\n * В случае WEB: будет загружен скрипт Google Pay Web Api\n */\nawait GPayNative.createClient({ test: true });","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/virusv_capacitor-gpay-plugin.md","loc":{"lines":{"from":1,"to":104}}}}],["0327ebeb-854e-464c-a6df-7f538e166796",{"pageContent":"/* Получение информации о готовности к платежу */\nconst isReadyToPayRequest = {\n ...baseRequest,\n allowedPaymentMethods: [baseCardPaymentMethod],\n};\nconst { isReady } = await GPayNative.isReadyToPay(isReadyToPayRequest);\n\n/* Проведение оплаты */\nconst paymentDataRequest: PaymentDataRequest = {\n ...baseRequest,\n allowedPaymentMethods: [cardPaymentMethod],\n transactionInfo: {\n totalPriceStatus: 'FINAL',\n totalPrice: \"12.34\", // Итоговая стоимость\n currencyCode: 'USD',\n countryCode: 'US',\n checkoutOption: 'COMPLETE_IMMEDIATE_PURCHASE',\n },\n merchantInfo: {\n merchantName: 'Example Merchant',\n // merchantId: 'TEST',\n },\n};\n\ntry {\n const paymentData = await GPayNative.loadPaymentData(paymentDataRequest);\n const token = paymentData.paymentMethodData.tokenizationData.token;\n\n // Отправка токена в процессинговый центр через ваш бэкенд...\n} catch (e) {\n if (e.message === 'canceled') {\n // Пользователь закрыл окно оплаты\n } else {\n // Возникла ошибка e.message\n }\n}\n```\n\n## События\n\n```ts\nGPayNative.addListener('success', (paymentData: PaymentData) => {\n const token = paymentData.paymentMethodData.tokenizationData.token;\n\n // ...\n});\n\nGPayNative.addListener('canceled', () => {\n // Пользователь закрыл окно оплаты\n});\n\nGPayNative.addListener('error', err => {\n // Если err.code === -1, то это значит что при проведении оплаты был\n // получен успешный ответ, но paymentData не удалось преобразовать\n\n console.error(err.message);\n});\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/virusv_capacitor-gpay-plugin.md","loc":{"lines":{"from":106,"to":163}}}}],["6eaf6eaa-3399-4d8d-8643-a1e4b8256641",{"pageContent":"


\n

HTTP

\n

@capacitor-community/http

\n

\n Capacitor community plugin for native HTTP requests, file download/uploads, and cookie management.\n

\n\n

\n \n \n \n
\n \n \n\n\n\n

\n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| ------------ | --------------------------------------------- | ----------------------------------------------- |\n| Max Lynch | [mlynch](https://github.com/mlynch) | [@maxlynch](https://twitter.com/maxlynch) |\n| Thomas Vidas | [thomasvidas](https://github.com/thomasvidas) | [@thomasvidas](https://twitter.com/thomasvidas) |\n\n## Installation\n\n```bash\nnpm install @capacitor-community/http\nnpx cap sync\n```\n\n## Maintence Mode\nThe next iteration of this plugin will be an [official plugin bundled with Capacitor 4.x](https://github.com/ionic-team/capacitor/issues/5145). In order for a smooth transition, this repo will be in maintence mode with no new features added until the plugin moves to the main [Capacitor Plugins repo](https://github.com/ionic-team/capacitor-plugins). In the meantime, if there *are* critical security bug fixes required, they will still be made to this plugin as a patch release.\n\n### Capacitor 2.x\n\nFor Capacitor 2.x projects, you will need to install a version less than 1.0.0. You can do that by specifying the version in your `package.json` or installing like this. The latest 2.x compatible version is `0.3.1`.\n\n```bash\nnpm install @capacitor-community/http@0.x\n```\n\n## Configuration\n\nIn most cases no configuration is required for this plugin.\nIf the Android application connects with use the self-signed certificates or without encryption, see [Network security configuration](https://developer.android.com/training/articles/security-config) article.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":1,"to":48}}}}],["fc24afa6-6ebe-40eb-902c-96e35a4c996d",{"pageContent":"## Usage\n\nTo use the plugin while fully supporting the web version, import and use it like this:\n\n```typescript\nimport { Http } from '@capacitor-community/http';\n\n// Example of a GET request\nconst doGet = () => {\n const options = {\n url: 'https://example.com/my/api',\n headers: { 'X-Fake-Header': 'Max was here' },\n params: { size: 'XL' },\n };\n\n const response: HttpResponse = await Http.get(options);\n\n // or...\n // const response = await Http.request({ ...options, method: 'GET' })\n};\n\n// Example of a POST request. Note: data\n// can be passed as a raw JS Object (must be JSON serializable)\nconst doPost = () => {\n const options = {\n url: 'https://example.com/my/api',\n headers: { 'X-Fake-Header': 'Thomas was here' },\n data: { foo: 'bar', cool: true },\n };\n\n const response: HttpResponse = await Http.post(options);\n\n // or...\n // const response = await Http.request({ ...options, method: 'POST' })\n};\n\nconst setCookie = async () => {\n const options = {\n url: 'http://example.com',\n key: 'language',\n value: 'en',\n };\n\n await Http.setCookie(options);\n};\n\nconst deleteCookie = async () => {\n const options = {\n url: 'http://example.com',\n key: 'language',\n };\n\n await Http.deleteCookie(options);\n};\n\nconst clearCookies = async () => {\n await Http.clearCookies({ url: 'http://example.com' });\n};\n\nconst getCookies = async () => {\n const cookies: HttpCookie[] = await Http.getCookies({\n url: 'http://example.com',\n });\n};\n\nconst downloadFile = async () => {\n const options = {\n url: 'https://example.com/path/to/download.pdf',\n filePath: 'document.pdf',\n fileDirectory: Directory.Downloads,\n // Optional\n method: 'GET',\n };\n\n // Writes to local filesystem\n const response: HttpDownloadFileResult = await Http.downloadFile(options);\n\n // Then read the file\n if (response.path) {\n const read = await Filesystem.readFile({\n path: 'download.pdf',\n directory: Directory.Downloads,\n });\n }\n};\n\nconst uploadFile = async () => {\n const options = {\n url: 'https://example.com/path/to/upload.pdf',\n name: 'myFile',\n filePath: 'document.pdf',\n fileDirectory: FilesystemDirectory.Downloads,\n };\n\n const response: HttpUploadFileResult = await Http.uploadFile();\n};\n```\n\n## API Reference\n\nYou can view the API Reference generated by TypeDoc here: https://capacitor-community.github.io/http/docs/classes/web.httpweb.html\n\n### Third Party Cookies on iOS\n\nAs of iOS 14, you cannot use 3rd party cookies by default. There is an open issue on the Capacitor Core repo on properly patching in cookies on iOS. For now, you must specify a domain of for the cookie you are saving to properly save and send them via requests. You can also add the following lines to your `Info.plist` file to get better support for cookies on iOS. You can add up to 10 domains.\n\n```xml\nWKAppBoundDomains\n\n www.mydomain.com\n api.mydomain.com\n www.myothercooldomain.com\n\n```\n\n## Contributors ✨","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":50,"to":165}}}}],["4ca21246-2c0c-4a78-8a2b-3e33f30c7240",{"pageContent":"## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":165,"to":167}}}}],["045de4ea-6077-4a85-869d-54b7a6679cc2",{"pageContent":"\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":169,"to":184}}}}],["5222986e-04aa-4e00-bd6f-c7c8fc551f59",{"pageContent":"\n \n \n \n \n \n \n \n \n \n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":185,"to":195}}}}],["6dfbcca8-7dae-4a58-9899-bec4acfb579a",{"pageContent":"\n \n \n \n \n \n \n \n
\"\"/
Daniel Sogl

📖
\"\"/
Priyank Patel

💻
\"\"/
Max Lynch

💻
\"\"/
Falk Schieber

👀
\"\"/
Andy Sousa

💻
\"\"/
Thomas Vidas

💻 🚧
\"\"/
Emily Curry

💻
\"\"/
graefenhain

💻
\"\"/
Lee Houghton

🐛
\"\"/
Felix Schwarzmeier

💻
\"\"/
Kamil Jakubus

💻
\"\"/
Joe Flateau

🐛
\"\"/
Frank608

🐛
\"\"/
Joel Nieto

🐛
\"\"/
ultimate-tester

💻
\"\"/
Adrian Sanchez

🐛
\"\"/
milanc

💻
\"\"/
herecoulbeyourname

💻
\"\"/
Landschaft

💻
\"\"/
stonewoodman

🐛
\"\"/
Héctor Cruz

🐛
\"\"/
Patrick Bußmann

💻
\"\"/
Jesper Bjerke

🐛
","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":196,"to":204}}}}],["761f6c5e-dfaf-43e3-876d-fa6a0dbce718",{"pageContent":"\n\n\n\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":206,"to":211}}}}],["0b23d7a9-1525-45d1-929b-731ea5a55f20",{"pageContent":"# bluetooth\n\nbluetooth classic discovery and communication\n\n**currently only works on Android, IOS coming eventually**\n\n## Install\n\n```bash\nnpm install @matfire/ionic_bluetooth_classic\nnpx cap sync\n```\n\n### Permissions\n\n#### Android\n\nadd the following lines to your AndroidManifest.xml file:\n\n```xml\n \n \n \n \n \n \n```\n\n\n## API\n\n\n\n* [`checkPermissions()`](#checkpermissions)\n* [`requestPermissions()`](#requestpermissions)\n* [`startListening()`](#startlistening)\n* [`stopListening()`](#stoplistening)\n* [`write(...)`](#write)\n* [`addListener('deviceConnectionStatusChanged', ...)`](#addlistenerdeviceconnectionstatuschanged)\n* [`addListener('deviceDataReceived', ...)`](#addlistenerdevicedatareceived)\n* [`addListener('deviceDiscovered', ...)`](#addlistenerdevicediscovered)\n* [`getPairedDevices()`](#getpaireddevices)\n* [`connect(...)`](#connect)\n* [`disconnect()`](#disconnect)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n* [Enums](#enums)\n\n\n\n\n\n\n### checkPermissions()\n\n```typescript\ncheckPermissions() => Promise\n```\n\n**Returns:** Promise<PermissionStatus>\n\n--------------------\n\n\n### requestPermissions()\n\n```typescript\nrequestPermissions() => Promise\n```\n\n**Returns:** Promise<PermissionStatus>\n\n--------------------\n\n\n### startListening()\n\n```typescript\nstartListening() => Promise\n```\n\n**Returns:** Promise<boolean>\n\n--------------------\n\n\n### stopListening()\n\n```typescript\nstopListening() => Promise\n```\n\n**Returns:** Promise<boolean>\n\n--------------------\n\n\n### write(...)\n\n```typescript\nwrite(data: { message: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------- |\n| **`data`** | { message: string; } |\n\n**Returns:** Promise<boolean>\n\n--------------------\n\n\n### addListener('deviceConnectionStatusChanged', ...)\n\n```typescript\naddListener(eventName: 'deviceConnectionStatusChanged', listenerFunc: ({ data }: { data: IDeviceStatus; }) => void) => Promise & PluginListenerHandle\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":1,"to":117}}}}],["db8aa51f-71b8-4c08-97e9-8595a88040e7",{"pageContent":"| Param | Type |\n| ------------------ | ----------------------------------------------------------------------------------------- |\n| **`eventName`** | 'deviceConnectionStatusChanged' |\n| **`listenerFunc`** | ({ data }: { data: IDeviceStatus; }) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n--------------------\n\n\n### addListener('deviceDataReceived', ...)\n\n```typescript\naddListener(eventName: 'deviceDataReceived', listenerFunc: ({ data }: { data: IDataReceived; }) => void) => Promise & PluginListenerHandle\n```\n\n| Param | Type |\n| ------------------ | ----------------------------------------------------------------------------------------- |\n| **`eventName`** | 'deviceDataReceived' |\n| **`listenerFunc`** | ({ data }: { data: IDataReceived; }) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n--------------------\n\n\n### addListener('deviceDiscovered', ...)\n\n```typescript\naddListener(eventName: 'deviceDiscovered', listenerFunc: ({ device }: { device: IDevice; }) => void) => Promise & PluginListenerHandle\n```\n\n| Param | Type |\n| ------------------ | --------------------------------------------------------------------------------- |\n| **`eventName`** | 'deviceDiscovered' |\n| **`listenerFunc`** | ({ device }: { device: IDevice; }) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n--------------------\n\n\n### getPairedDevices()\n\n```typescript\ngetPairedDevices() => Promise<{ devices: any[]; }>\n```\n\n**Returns:** Promise<{ devices: any[]; }>\n\n--------------------\n\n\n### connect(...)\n\n```typescript\nconnect(data: { deviceId: string; appUUID: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------- |\n| **`data`** | { deviceId: string; appUUID: string; } |\n\n**Returns:** Promise<boolean>\n\n--------------------\n\n\n### disconnect()\n\n```typescript\ndisconnect() => Promise\n```\n\n**Returns:** Promise<boolean>\n\n--------------------\n\n\n### Interfaces\n\n\n#### PermissionStatus","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":119,"to":201}}}}],["0879e776-f1c9-498c-9a6c-9797c5ef52ea",{"pageContent":"**Returns:** Promise<boolean>\n\n--------------------\n\n\n### Interfaces\n\n\n#### PermissionStatus\n\n| Prop | Type |\n| --------------- | ----------------------------------------------------------- |\n| **`bluetooth`** | PermissionState |\n| **`location`** | PermissionState |\n\n\n#### PluginListenerHandle\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`remove`** | () => Promise<void> |\n\n\n#### IDeviceStatus\n\n| Prop | Type |\n| -------------- | ----------------------------------------------------- |\n| **`deviceId`** | string |\n| **`status`** | DeviceStatus |\n\n\n#### IDataReceived\n\n| Prop | Type |\n| ----------- | ------------------------------------------------- |\n| **`bytes`** | Uint8Array |\n| **`size`** | number |\n\n\n#### Uint8Array\n\nA typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the\nrequested number of bytes could not be allocated an exception is raised.\n\n| Prop | Type | Description |\n| ----------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------- |\n| **`BYTES_PER_ELEMENT`** | number | The size in bytes of each element in the array. |\n| **`buffer`** | ArrayBufferLike | The ArrayBuffer instance referenced by the array. |\n| **`byteLength`** | number | The length in bytes of the array. |\n| **`byteOffset`** | number | The offset in bytes of the array. |\n| **`length`** | number | The length of the array. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":201,"to":251}}}}],["b2fd88e4-29bb-4fd2-867b-f1628dbda57f",{"pageContent":"| Method | Signature | Description |\n| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **copyWithin** | (target: number, start: number, end?: number \\| undefined) => this | Returns the this object after copying a section of the array identified by start and end to the same array starting at position target |\n| **every** | (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any) => boolean | Determines whether all the members of an array satisfy the specified test. |\n| **fill** | (value: number, start?: number \\| undefined, end?: number \\| undefined) => this | Returns the this object after filling the section identified by start and end with value |\n| **filter** | (predicate: (value: number, index: number, array: Uint8Array) => any, thisArg?: any) => Uint8Array | Returns the elements of an array that meet the condition specified in a callback function. |\n| **find** | (predicate: (value: number, index: number, obj: Uint8Array) => boolean, thisArg?: any) => number \\| undefined | Returns the value of the first element in the array where predicate is true, and undefined otherwise. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":253,"to":259}}}}],["2581ec5b-188f-4c10-a3ba-c517b5a25767",{"pageContent":"| **findIndex** | (predicate: (value: number, index: number, obj: Uint8Array) => boolean, thisArg?: any) => number | Returns the index of the first element in the array where predicate is true, and -1 otherwise. |\n| **forEach** | (callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any) => void | Performs the specified action for each element in an array. |\n| **indexOf** | (searchElement: number, fromIndex?: number \\| undefined) => number | Returns the index of the first occurrence of a value in an array. |\n| **join** | (separator?: string \\| undefined) => string | Adds all the elements of an array separated by the specified separator string. |\n| **lastIndexOf** | (searchElement: number, fromIndex?: number \\| undefined) => number | Returns the index of the last occurrence of a value in an array. |\n| **map** | (callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any) => Uint8Array | Calls a defined callback function on each element of an array, and returns an array that contains the results. |\n| **reduce** | (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number) => number | Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":260,"to":266}}}}],["ceec0583-491c-44a5-8a56-0df86bade262",{"pageContent":"| **reduce** | (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue: number) => number | |\n| **reduce** | <U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U) => U | Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. |\n| **reduceRight** | (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number) => number | Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. |\n| **reduceRight** | (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue: number) => number | |\n| **reduceRight** | <U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U) => U | Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. |\n| **reverse** | () => Uint8Array | Reverses the elements in an Array. |\n| **set** | (array: ArrayLike<number>, offset?: number \\| undefined) => void | Sets a value or an array of values. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":267,"to":273}}}}],["c6292543-ed6c-44ba-bfa3-0f8ce8839ab1",{"pageContent":"| **slice** | (start?: number \\| undefined, end?: number \\| undefined) => Uint8Array | Returns a section of an array. |\n| **some** | (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any) => boolean | Determines whether the specified callback function returns true for any element of an array. |\n| **sort** | (compareFn?: ((a: number, b: number) => number) \\| undefined) => this | Sorts an array. |\n| **subarray** | (begin?: number \\| undefined, end?: number \\| undefined) => Uint8Array | Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements at begin, inclusive, up to end, exclusive. |\n| **toLocaleString** | () => string | Converts a number to a string by using the current locale. |\n| **toString** | () => string | Returns a string representation of an array. |\n| **valueOf** | () => Uint8Array | Returns the primitive value of the specified object. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":274,"to":280}}}}],["780210fc-ef38-42e5-ba12-d77fc776456e",{"pageContent":"#### ArrayLike\n\n| Prop | Type |\n| ------------ | ------------------- |\n| **`length`** | number |\n\n\n#### ArrayBufferTypes\n\nAllowed ArrayBuffer types for the buffer of an ArrayBufferView and related Typed Arrays.\n\n| Prop | Type |\n| ----------------- | --------------------------------------------------- |\n| **`ArrayBuffer`** | ArrayBuffer |\n\n\n#### ArrayBuffer\n\nRepresents a raw buffer of binary data, which is used to store data for the\ndifferent typed arrays. ArrayBuffers cannot be read from or written to directly,\nbut can be passed to a typed array or DataView Object to interpret the raw\nbuffer as needed.\n\n| Prop | Type | Description |\n| ---------------- | ------------------- | ------------------------------------------------------------------------------- |\n| **`byteLength`** | number | Read-only. The length of the ArrayBuffer (in bytes). |\n\n| Method | Signature | Description |\n| --------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------- |\n| **slice** | (begin: number, end?: number \\| undefined) => ArrayBuffer | Returns a section of an ArrayBuffer. |\n\n\n#### IDevice\n\n| Prop | Type |\n| ------------- | ------------------- |\n| **`address`** | string |\n| **`name`** | string |\n\n\n### Type Aliases\n\n\n#### PermissionState\n\n'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'\n\n\n#### ArrayBufferLike\n\nArrayBufferTypes[keyof ArrayBufferTypes]\n\n\n### Enums\n\n\n#### DeviceStatus\n\n| Members | Value |\n| ------------------ | -------------- |\n| **`DISCONNECTED`** | 0 |\n| **`CONNECTED`** | 1 |\n| **`CONNECTING`** | 2 |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/matfire_ionic_bluetooth_classic.md","loc":{"lines":{"from":283,"to":347}}}}],["3b50cf30-e3bb-4366-93ca-be1607a130d6",{"pageContent":"# capacitor-jbrandev-jbsqlutils\n\nORM JBSqlUtils es un ORM desarrollado en java por José Carlos Alfredo Bran Aguirre, que permite gestionar BD's SQLite,\nMySQL,\nPostgreSQL y SQLServer, de una manera fácil y rápida sin interrumpir la ejecución del hilo principal del programa,\nlo cual la hace un potente ORM, por medio del cual tendrá acceso a un CRUD, configurando únicamente la conexión del\nmodelo,\nlos atributos que posee la tabla en BD's cómo variables que pertenecerán al modelo en su aplicación.\n\nPara mayor información sobre cómo utilizar JBSqlUtils desde Ionic visitar el siguiente enlace:\n\n\n\nPara mayor información sobre cómo utilizar JBSqlUtils desde Java visitar el siguiente enlace:\n\n\n* * *\n\n## Estado del Proyecto :atom:\n\nJBSqlUtils actualmente está en una etapa de desarrollo continuo, por lo cual sus observaciones y recomendaciones,\nson bienvenidas para mejorar el proyecto.\n***\n\n## Información importante para poder usar JBSqlUtils en IONIC \n\nPara poder utilizar JBSqlUtils en Ionic es importante realizar la siguiente configuración en su aplicación.\n\n1. Ya incluido JBSqlUtils en su aplicación, en android studio, visualizar los archivos en la vista Project, expandiendo el modulo capacitor-jbrandev-jbsqlutils, copiar la carpeta libs a la carpeta principal de su aplicación, de modo que quede en el mismo nivel que la carpeta src, como lo muestra la siguiente imagen.\n\n![](Imagenes/Libs.jpg)\n\n2. Una vez realizado el paso 1, abrir el archivo build.gradle, modificarlo para que contenga la configuración descrita en la siguiente imagen, agregamos lo filtros ndk dentro de la defaultConfig de nuestra aplicación y los sourceSets en el mismo nivel que la defaultConfig.\n\n![](Imagenes/BuildConfig.jpg)\n\n\n***\n\n## Install\n\n```bash\nnpm install capacitor-jbrandev-jbsqlutils\nnpx cap sync\n```\n\n## API\n\n\n\n* [`dropTableIfExist(...)`](#droptableifexist)\n* [`createTable(...)`](#createtable)\n* [`insertInto(...)`](#insertinto)\n* [`update(...)`](#update)\n* [`delete(...)`](#delete)\n* [`select(...)`](#select)\n* [Interfaces](#interfaces)\n* [Enums](#enums)\n\n\n\n\n\n\n### dropTableIfExist(...)\n\n```typescript\ndropTableIfExist(droptableOptions: DropTableOptions) => Promise\n```\n\nElimina la tabla especificada como parametro\n\n| Param | Type | Description |\n| ---------------------- | ------------------------------------------------------------- | ----------------------------- |\n| **`droptableOptions`** | DropTableOptions | Nombre de la tabla a eliminar |\n\n**Returns:** Promise<DropTableResult>\n\n--------------------\n\n\n### createTable(...)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":1,"to":82}}}}],["be215883-c0dd-470c-8bfd-91d4fe9d62d5",{"pageContent":"--------------------\n\n\n### createTable(...)\n\n```typescript\ncreateTable(createtableOptions: CreateTableOptions) => Promise\n```\n\nCrea la tabla especificada como parametro\n\n| Param | Type | Description |\n| ------------------------ | ----------------------------------------------------------------- | ------------------------------ |\n| **`createtableOptions`** | CreateTableOptions | Definicion de la tabla a crear |\n\n**Returns:** Promise<CreateTableResult>\n\n--------------------\n\n\n### insertInto(...)\n\n```typescript\ninsertInto(insertOptions: InsertOptions) => Promise\n```\n\nInserta un nuevo registro en la tabla proporcionada con los valores indicados en insertOptions\n\n| Param | Type | Description |\n| ------------------- | ------------------------------------------------------- | ------------------------------------------------------------------- |\n| **`insertOptions`** | InsertOptions | Tabla sobre la cual se realizara el Insert y los Valores a insertar |\n\n**Returns:** Promise<InsertResult>\n\n--------------------\n\n\n### update(...)\n\n```typescript\nupdate(updateOptions: UpdateOptions) => Promise\n```\n\nActualiza las columnas de la tabla especificada en updateOptions de acuerdo a la logica proporcionada\n\n| Param | Type | Description |\n| ------------------- | ------------------------------------------------------- | ----------------------------------- |\n| **`updateOptions`** | UpdateOptions | Definición de la tabla a actualizar |\n\n**Returns:** Promise<UpdateResult>\n\n--------------------\n\n\n### delete(...)\n\n```typescript\ndelete(deleteOptions: DeleteOptions) => Promise\n```\n\nElimina los registros de la tabla especificada de acuerdo a la logica proporcionada\n\n| Param | Type | Description |\n| ------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------- |\n| **`deleteOptions`** | DeleteOptions | Definición de la logica a aplicar para eliminar los registros de la tabla proporcionada |\n\n**Returns:** Promise<DeleteResult>\n\n--------------------\n\n\n### select(...)\n\n```typescript\nselect(selectOptions: SelectOptions) => Promise<{ 'rows': T[]; }>\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":82,"to":157}}}}],["88491134-7e04-4aac-962d-fcb01405b934",{"pageContent":"--------------------\n\n\n### select(...)\n\n```typescript\nselect(selectOptions: SelectOptions) => Promise<{ 'rows': T[]; }>\n```\n\nObtiene los registros del tipo de dato proporcionado de la tabla especificada en el objeto selectOptions\n\n| Param | Type | Description |\n| ------------------- | ------------------------------------------------------- | -------------------------------------------------- |\n| **`selectOptions`** | SelectOptions | Define la logica de la sentencia Select a ejecutar |\n\n**Returns:** Promise<{ rows: T[]; }>\n\n--------------------\n\n\n### Interfaces\n\n\n#### DropTableResult\n\nResultado del metodo DropTableIfExist\n\n| Prop | Type | Description |\n| ------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |\n| **`execute`** | boolean | True si la tabla fue eliminada en BD's, False si la tabla no existe en BD's o si sucede algun problema al ejecutar la sentencia SQL. |\n\n\n#### DropTableOptions\n\nOpciones disponibles a envíar en el metodo DropTableIfExist\n\n| Prop | Type | Description |\n| ------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| **`tableName`** | string | Nombre de la tabla a eliminar |\n| **`propertysConection`** | ConectionOptions | Define las propiedades de conexión a la BD's a la que se pegara JBSqlUtils |\n\n\n#### ConectionOptions\n\nDefine las propiedades de conexión a la BD's a la que se pegara JBSqlUtils","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":157,"to":201}}}}],["92cf8c2b-13e9-4cc3-b886-5f69ca51a075",{"pageContent":"#### ConectionOptions\n\nDefine las propiedades de conexión a la BD's a la que se pegara JBSqlUtils\n\n| Prop | Type | Description |\n| ------------------ | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`dataBaseType`** | DataBase | Tipo de BD's a la cual se estara conectando el Modelo, los tipos disponibles son MySQL, SQLServer, PostgreSQL, SQLite. |\n| **`dataBase`** | string | Nombre de la Base de Datos a la que se conectara el modelo. |\n| **`port`** | string | Puerto en el cual se encuentra escuchando la BD's a la cual se pegara JBSqlUtils este campo es obligatorio para conectarse a MySQL, SQLServer o PostgreSQL |\n| **`host`** | string | Host en el cual se encuentra la BD's a la que nos queremos conectar. este campo es obligatorio para conectarse a MySQL, SQLServer o PostgreSQL |\n| **`user`** | string | Usuario con el cual el JBSqlUtils se conectara a la BD's. este campo es obligatorio para conectarse a MySQL, SQLServer o PostgreSQL |\n| **`password`** | string | Contraseña del usuario con el cual JBSqlUtils se conectara a la BD's. este campo es obligatorio para conectarse a MySQL, SQLServer o PostgreSQL |\n\n\n#### CreateTableResult\n\nResultado del metodo createTable\n\n| Prop | Type | Description |\n| ------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------- |\n| **`execute`** | boolean | True si la tabla a sido creada, false si la tabla ya existe en BD's o si sucede un error al momento de ejecutar la sentencia SQL |\n\n\n#### CreateTableOptions\n\nRepresentación de la tabla a crear en BD's a traves del metodo createTable","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":201,"to":226}}}}],["f34db30b-b45a-4e46-bb85-4ecef102e326",{"pageContent":"#### CreateTableOptions\n\nRepresentación de la tabla a crear en BD's a traves del metodo createTable\n\n| Prop | Type | Description |\n| ------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| **`tableName`** | string | Nombre de la tabla a crear |\n| **`columnas`** | Column[] | Array de Columnas que tendra la tabla al momento de ser creada en BD's |\n| **`propertysConection`** | ConectionOptions | Define las propiedades de conexión a la BD's a la que se pegara JBSqlUtils |\n\n\n#### Column\n\nRepresentación de una columna a crear en BD's\n\n| Prop | Type | Description |\n| ------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`name`** | string | Nombre de la columna |\n| **`default_value`** | string | Indica el valor por default que tendra la columna en BD's Es importante que para que este sea efectivo, agregar en las restriccions, la Constraint.DEFAULT. |\n| **`dataTypeSQL`** | DataType | DataType que indica el tipo de dato SQL que almacenara la columna. |\n| **`restriccions`** | Constraint[] | Array que Indica las restricciones SQL que tendra este campo. |\n\n\n#### InsertResult\n\nDefine el resultado de insertar un registro en BD's\n\n| Prop | Type | Description |\n| ----------------- | ------------------- | -------------------------------------------------------------------------- |\n| **`rows_insert`** | number | Cantidad de filas que se han visto afectadas al ejecutar la sentencia SQL. |\n\n\n#### InsertOptions\n\nDefine la tabla sobre la cual se realizara el Insert y los valores a insertar","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":226,"to":260}}}}],["e955f89f-0a2b-4f88-9f9c-84c6658718e6",{"pageContent":"#### InsertOptions\n\nDefine la tabla sobre la cual se realizara el Insert y los valores a insertar\n\n| Prop | Type | Description |\n| ------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| **`tableName`** | string | Nombre de la tabla sobre la que se efectuara el Insert |\n| **`values`** | ValuesInsert[] | Array de valores a insertar en la tabla. |\n| **`propertysConection`** | ConectionOptions | Define las propiedades de conexión a la BD's a la que se pegara JBSqlUtils |\n\n\n#### ValuesInsert\n\nDefine el valor a insertar y en que columna\n\n| Prop | Type | Description |\n| --------------- | ------------------- | ------------------------------------------------------------------ |\n| **`columName`** | string | Nombre de la columna en la que se insertara el valor proporcionado |\n| **`value`** | any | Valor a insertar |\n\n\n#### UpdateResult\n\nDefine el resultado de actualizar registros en BD's\n\n| Prop | Type | Description |\n| ----------------- | ------------------- | -------------------------------------------------------------------------- |\n| **`rows_update`** | number | Cantidad de filas que se han visto afectadas al ejecutar la sentencia SQL. |\n\n\n#### UpdateOptions\n\nDefine las columnas que seran actualizadas en la tabla especificada.\n\n| Prop | Type | Description |\n| ------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------- |\n| **`tableName`** | string | Nombre de la tabla a actualizar |\n| **`valueUpdate`** | ValueUpdate | Columnas a actualizar |\n| **`propertysConection`** | ConectionOptions | Define las propiedades de conexión a la BD's a la que se pegara JBSqlUtils |\n\n\n#### ValueUpdate\n\nDefine la columna a actualizar con el valor proporcionado en la tabla especificada","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":260,"to":303}}}}],["0e5d1504-7d2d-4c33-bc54-05f64157c4d0",{"pageContent":"#### ValueUpdate\n\nDefine la columna a actualizar con el valor proporcionado en la tabla especificada\n\n| Prop | Type | Description |\n| -------------------- | --------------------------------------------------- | --------------------------------------------------------------------------------------------- |\n| **`columName`** | string | Nombre de la columna a actualizar |\n| **`value`** | any | Valor a setear en la columna |\n| **`andValueUpdate`** | ValueUpdate | Agrega la capacidad de poder actualizar el valor de otra columna en la misma sentencia Update |\n| **`where`** | Where | Agrega la logica de un filtro where a la actualización de registros en BD's |\n\n\n#### Where\n\nProporciona la logica de una sentencia Where sobre la información que contiene esta interface, añadiendo la capacidad\nde poder filtrar por medio de las sentencias AND, OR, TAKE Y ORDER BY","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":303,"to":318}}}}],["dd8384e2-68f2-4984-ac61-1ff18c778273",{"pageContent":"| Prop | Type | Description |\n| --------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- |\n| **`columName`** | string | Nombre de la columna sobre la cual se evaluara la sentencia WHERE |\n| **`operator`** | Operator | Operador sobre el cual se evalura la columna respecto al valor proporcionado |\n| **`value`** | any | Valor contra el que se evaluara la columna |\n| **`and`** | And | Agrega la logica de una sentencia And sobre la información proporcionada. |\n| **`or`** | Or | Agrega la logica de una sentencia Or sobre la información proporcionada. |\n| **`orderBy`** | OrderBy | Tipo de ordenamiento que deseamos se aplique al realizar una sentencia con filtro where |\n| **`take`** | Take | Cantidad maxima de registros a tomar dentro de una sentencia con filtro where |\n| **`openParentecis`** | OpenParentesis | Puede aperturar un parentecis para filtrar de una mejor manera los registros |\n| **`closeParentecis`** | CloseParentesis | Puede cerrar un parentecis para filtrar de una mejor manera los registros |\n\n\n#### And\n\nProporciona la logica de una sentencia And sobre la información que contiene esta interface, añadiendo la capacidad\nde poder filtrar por medio de las sentencias AND, OR, TAKE Y ORDER BY","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":320,"to":336}}}}],["f5fe51ef-218b-4337-89d3-93fdb1a57257",{"pageContent":"| Prop | Type | Description |\n| --------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- |\n| **`columName`** | string | Nombre de la columna sobre la cual se evaluara la sentencia AND |\n| **`operator`** | Operator | Operador sobre el cual se evalura la columna respecto al valor proporcionado |\n| **`value`** | any | Valor contra el que se evaluara la columna |\n| **`and`** | And | Agrega la logica de una sentencia And sobre la información proporcionada. |\n| **`or`** | Or | Agrega la logica de una sentencia Or sobre la información proporcionada. |\n| **`orderBy`** | OrderBy | Tipo de ordenamiento que deseamos se aplique al realizar una sentencia con filtro where |\n| **`take`** | Take | Cantidad maxima de registros a tomar dentro de una sentencia con filtro where |\n| **`openParentecis`** | OpenParentesis | Puede aperturar un parentecis para filtrar de una mejor manera los registros |\n| **`closeParentecis`** | CloseParentesis | Puede cerrar un parentecis para filtrar de una mejor manera los registros |\n\n\n#### Or\n\nProporciona la logica de una sentencia Or sobre la información que contiene esta interface, añadiendo la capacidad\nde poder filtrar por medio de las sentencias AND, OR, TAKE Y ORDER BY","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":338,"to":354}}}}],["905fed3e-aee0-4ab6-bf4b-a2552fd40fa1",{"pageContent":"| Prop | Type | Description |\n| --------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- |\n| **`columName`** | string | Nombre de la columna sobre la cual se evaluara la sentencia OR |\n| **`operator`** | Operator | Operador sobre el cual se evalura la columna respecto al valor proporcionado |\n| **`value`** | any | Valor contra el que se evaluara la columna |\n| **`and`** | And | Agrega la logica de una sentencia And sobre la información proporcionada. |\n| **`or`** | Or | Agrega la logica de una sentencia Or sobre la información proporcionada. |\n| **`orderBy`** | OrderBy | Tipo de ordenamiento que deseamos se aplique al realizar una sentencia con filtro where |\n| **`take`** | Take | Cantidad maxima de registros a tomar dentro de una sentencia con filtro where |\n| **`openParentecis`** | OpenParentesis | Puede aperturar un parentecis para filtrar de una mejor manera los registros |\n| **`closeParentecis`** | CloseParentesis | Puede cerrar un parentecis para filtrar de una mejor manera los registros |\n\n\n#### OrderBy\n\nDefine el tipo de ordenamiento que deseamos se ejecute al realizar una consulta, añadiendo la capacidad de poder\nlimitar la cantidad de resultados a travez de la sentencia TAKE\n\n| Prop | Type | Description |\n| --------------- | ----------------------------------------------- | ----------------------------------------------------------------------------- |\n| **`columName`** | string | Nombre de la columna por medio de la cual queremos ordenar |\n| **`orderType`** | OrderType | Tipo de ordenamiento que queremos realizar |\n| **`take`** | Take | Cantidad maxima de registros a tomar dentro de una sentencia con filtro where |\n\n\n#### Take\n\nDefine un limite de registros a tomar dentro de una sentencia con filtro Where","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":356,"to":383}}}}],["526b6c58-74b6-4298-9b46-cec847f09b28",{"pageContent":"#### Take\n\nDefine un limite de registros a tomar dentro de una sentencia con filtro Where\n\n| Prop | Type | Description |\n| ------------ | ------------------- | ------------------------------------------------------------------------------------------------------- |\n| **`limite`** | number | Cantidad Maxima de Registros que se desea tomar al filtrar con una sentencia Where |\n\n\n#### OpenParentesis\n\nAgrega la logica de agregar un operador previo y parentecis para filtrar de una mejor manera las consultas\n\n| Prop | Type | Description |\n| --------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- |\n| **`operatorPrev`** | Operator | Operador previo a colocar antes de aperturar el parentecis |\n| **`columName`** | string | Nombre de la columna sobre la cual se evaluara la sentencia AND |\n| **`operator`** | Operator | Operador sobre el cual se evalura la columna respecto al valor proporcionado |\n| **`value`** | any | Valor contra el que se evaluara la columna |\n| **`and`** | And | Agrega la logica de una sentencia And sobre la información proporcionada. |\n| **`or`** | Or | Agrega la logica de una sentencia Or sobre la información proporcionada. |\n| **`orderBy`** | OrderBy | Tipo de ordenamiento que deseamos se aplique al realizar una sentencia con filtro where |\n| **`take`** | Take | Cantidad maxima de registros a tomar dentro de una sentencia con filtro where |\n| **`openParentecis`** | OpenParentesis | Puede aperturar un parentecis para filtrar de una mejor manera los registros |\n| **`closeParentecis`** | CloseParentesis | Puede cerrar un parentecis para filtrar de una mejor manera los registros |\n\n\n#### CloseParentesis\n\nProporciona la logica de un cierre de parentesis","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":383,"to":412}}}}],["ee1eda3a-66ab-4fbb-a076-914a029d82a1",{"pageContent":"#### CloseParentesis\n\nProporciona la logica de un cierre de parentesis\n\n| Prop | Type | Description |\n| --------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- |\n| **`operatorPost`** | Operator | Operador posterior a colocar antes de aperturar el parentecis |\n| **`and`** | And | Agrega la logica de una sentencia And sobre la información proporcionada. |\n| **`or`** | Or | Agrega la logica de una sentencia Or sobre la información proporcionada. |\n| **`orderBy`** | OrderBy | Tipo de ordenamiento que deseamos se aplique al realizar una sentencia con filtro where |\n| **`take`** | Take | Cantidad maxima de registros a tomar dentro de una sentencia con filtro where |\n| **`openParentecis`** | OpenParentesis | Puede aperturar un parentecis para filtrar de una mejor manera los registros |\n| **`closeParentecis`** | CloseParentesis | Puede cerrar un parentecis para filtrar de una mejor manera los registros |\n\n\n#### DeleteResult\n\nDefine el resultado de eliminar registros en BD's\n\n| Prop | Type | Description |\n| ----------------- | ------------------- | -------------------------------------------------------------------------- |\n| **`rows_delete`** | number | Cantidad de filas que se han sido eliminadas al ejecutar la sentencia SQL. |\n\n\n#### DeleteOptions\n\nDefine la tabla y la logica a aplicar al momento de eliminar los registros de BD's","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":412,"to":438}}}}],["b03bd389-8d1f-49bc-a87d-f705baf77ddd",{"pageContent":"#### DeleteOptions\n\nDefine la tabla y la logica a aplicar al momento de eliminar los registros de BD's\n\n| Prop | Type | Description |\n| ------------------------ | ------------------------------------------------------------- | ---------------------------------------------------------------------------- |\n| **`tableName`** | string | Nombre de la tabla en la que se desea eliminar registros |\n| **`where`** | Where | Agrega la logica de un filtro where al momento de eliminar registros en BD's |\n| **`propertysConection`** | ConectionOptions | Define las propiedades de conexión a la BD's a la que se pegara JBSqlUtils |\n\n\n#### SelectOptions\n\nDefine las columnas a obtener en cada registro de la tabla especificada de acuerdo a la \nlogica proporcionada.\n\n| Prop | Type | Description |\n| ------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`tableName`** | string | Nombre de la tabla de la que se desean obtener los registros |\n| **`where`** | Where | Agrega la logica de un filtro where al momento de obtener registros de BD's |\n| **`columns`** | string[] | Define las columnas a obtener de la tabla, de desear obtener todas las columnas, no especificar esta propiedad |\n| **`propertysConection`** | ConectionOptions | Define las propiedades de conexión a la BD's a la que se pegara JBSqlUtils |\n\n\n### Enums\n\n\n#### DataBase\n\n| Members | Value | Description |\n| ---------------- | ------------------------- | ----------- |\n| **`SQLite`** | \"SQLite\" | SQLite |\n| **`MySQL`** | \"MySQL\" | MySQL |\n| **`SQLServer`** | \"SQLServer\" | SQL Server |\n| **`PostgreSQL`** | \"PostgreSQL\" | PostgreSQL |\n\n\n#### DataType","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":438,"to":475}}}}],["3ee4d821-c361-4a6e-b408-90fe6e2a4318",{"pageContent":"| Members | Value | Description |\n| ------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`INTEGER`** | \"INTEGER\" | Entero de 32 bits con signo |\n| **`INT`** | \"INT\" | Entero de 32 bits con signo |\n| **`IDENTITY`** | \"IDENTITY\" | Tipo de dato auto incrementable en SQL Server |\n| **`SERIAL`** | \"SERIAL\" | Tipo de dato auto incrementable en PostgreSQL |\n| **`CHAR`** | \"CHAR\" | Cadena de caracteres de longitud fija |\n| **`VARCHAR`** | \"VARCHAR\" | Cadena de caracteres de longitud variable |\n| **`LONGVARCHAR`** | \"LONGVARCHAR\" | Cadenas de cualquier longitud (varios megabytes), debe definir el tamaño que desea tenga la columna por medio del metodo setSize, para esta numeración en especifico. |\n| **`ENUM`** | \"ENUM\" | Enum se tienen que definir las opciones disponibles a través del metodo setSize, envíando como parametro para esta numeración, las opciones que deseamos tenga disponible |\n| **`SMALLINT`** | \"SMALLINT\" | entero de 16 bits |\n| **`TINYINT`** | \"TINYINT\" | entero de 16 bits |\n| **`REAL`** | \"REAL\" | Valor de coma flotante |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":477,"to":489}}}}],["1c075f00-5a9d-4d9d-89f2-be70508642ac",{"pageContent":"| **`FLOAT`** | \"FLOAT\" | Valor de coma flotante |\n| **`DOUBLE`** | \"DOUBLE\" | Gran valor de punto flotante |\n| **`NUMERIC`** | \"NUMERIC\" | Valores decimales de precisión absoluta |\n| **`DECIMAL`** | \"DECIMAL\" | Valor decimal de precisión absoluta |\n| **`MONEY`** | \"MONEY\" | Valor decimal de precisión absoluta |\n| **`SMALLMONEY`** | \"SMALLMONEY\" | Valor decimal de precisión absoluta |\n| **`BIT`** | \"BIT\" | Bit único/valor binario (activado o desactivado) |\n| **`BOOLEAN`** | \"BOOLEAN\" | Valor Booleano |\n| **`BOOL`** | \"BOOL\" | Valor Booleano |\n| **`BINARY`** | \"BINARY\" | Matriz de valores binarios |\n| **`VARBINARY`** | \"VARBINARY\" | Matriz de longitud variable de valores binarios, en mysql el valor maximo es de 21844 pero en sql server es de 8000 |\n| **`LONGVARBINARY`** | \"LONGVARBINARY\" | Matriz de valores binarios de cualquier longitud (varios megabytes) SQL Server |\n| **`IMAGE`** | \"IMAGE\" | Cadena binaria de ancho variable |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":490,"to":502}}}}],["102d8c0b-842d-45d3-b8ce-57509e82f021",{"pageContent":"| **`OBJECT`** | \"OBJECT\" | Setea que el tipo de dato será un Object |\n| **`JSON`** | \"JSON\" | Setea que el tipo de dato será un JSON |\n| **`DATE`** | \"DATE\" | Valor de fecha |\n| **`TIME`** | \"TIME\" | Valor del tiempo |\n| **`TIMESTAMP`** | \"TIMESTAMP\" | Valor de tiempo con campo adicional de nanosegundos |\n| **`SMALLDATETIME`** | \"SMALLDATETIME\" | Valor de tiempo con campo adicional de nanosegundos |\n| **`DATETIME`** | \"DATETIME\" | Valor de tiempo con campo adicional de nanosegundos |\n| **`DATETIME2`** | \"DATETIME2\" | Valor de tiempo con campo adicional de nanosegundos |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":503,"to":510}}}}],["afe3b581-b4cd-4834-a688-8c60cee4ea13",{"pageContent":"#### Constraint","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":513,"to":513}}}}],["078cc52d-788c-4626-a0b2-842260df92b5",{"pageContent":"| Members | Value | Description |\n| ----------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`NOT_NULL`** | \"NOT_NULL\" | Indica que la columna no acepta valores Nullos. |\n| **`UNIQUE`** | \"UNIQUE\" | El valor de esta columna tiene que ser unico |\n| **`CHECK`** | \"CHECK\" | Restriccion que permite indicarle que tipo de valores si serán aceptados por la columna Lo puede realizar a travez del metodo setRestriccion=String restriccion; de esta numeración. considerar que la misma restricción se aplicara para el resto de columnas que tengan un valor Check. |\n| **`PRIMARY_KEY`** | \"PRIMARY_KEY\" | Indica que la columna funciona como clave primaria del modelo. |\n| **`FOREIGN_KEY`** | \"FOREIGN_KEY\" | Indica que la columna funciona como clave foranea del modelo. |\n| **`CURRENT_TIMESTAMP`** | \"CURRENT_TIMESTAMP\" | Indica que el campo tendra como valor por default el TimeStamp del momento en que se almacene el modelo. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":515,"to":522}}}}],["748946a4-e32a-4fa0-8a0e-60ca751f1dfa",{"pageContent":"| **`DEFAULT`** | \"DEFAULT\" | Indica que la columna tendra un valor por default |\n| **`AUTO_INCREMENT`** | \"AUTO_INCREMENT\" | Indica que la columna autoincrementara su valor cada vez que se almacene un registro en la tabla correspondiente al modelo. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":523,"to":524}}}}],["21db5a4c-c70d-4f19-aa65-2c2e0b629269",{"pageContent":"#### Operator\n\n| Members | Value | Description |\n| ---------------------- | ------------------------------- | ----------------- |\n| **`MAYOR_IGUAL_QUE`** | \"MAYOR_IGUAL_QUE\" | Operador >= |\n| **`MAYOR_QUE`** | \"MAYOR_QUE\" | Operador > |\n| **`IGUAL_QUE`** | \"IGUAL_QUE\" | Operador = |\n| **`DISTINTO`** | \"DISTINTO\" | Operador <> |\n| **`MENOR_QUE`** | \"MENOR_QUE\" | Operador < |\n| **`MENOR_IGUAL_QUE`** | \"MENOR_IGUAL_QUE\" | Operador <= |\n| **`LIKE`** | \"LIKE\" | Operador LIKE |\n| **`OPEN_PARENTESIS`** | \"OPEN_PARENTESIS\" | Operador ( |\n| **`CLOSE_PARENTESIS`** | \"CLOSE_PARENTESIS\" | Operador ) |\n| **`ORDERBY`** | \"ORDERBY\" | Operador ORDER BY |\n| **`AND`** | \"AND\" | Operador AND |\n| **`OR`** | \"OR\" | Operador OR |\n| **`NOT`** | \"NOT\" | Operador NOT |\n\n\n#### OrderType\n\n| Members | Value | Description |\n| ---------- | ------------------- | ----------------------------------------------------------------- |\n| **`ASC`** | \"ASC\" | Indica que deseamos se ordene de manera Ascendente los registros |\n| **`DESC`** | \"DESC\" | Indica que deseamos se ordene de manera Descendente los registros |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Jbranadev_capacitor-jbrandev-jbsqlutils.md","loc":{"lines":{"from":527,"to":553}}}}],["b78c2fda-cc7c-4ff5-8207-d4dddc72b027",{"pageContent":"# zephyr-dfu\n\nThis Capacitor plugin provides an implementation of the McuManager protocol supported by Zephyr. \n\nIt is based on the following libraries:\n\nAndroid: https://github.com/NordicSemiconductor/Android-nRF-Connect-Device-Manager\n\niOS: https://github.com/NordicSemiconductor/IOS-nRF-Connect-Device-Manager\n\n## Install\n\n```bash\nnpm install zephyr-dfu\nnpx cap sync\n```\n\nAny questions? Mail me at: info@rickgroenewegen.nl\n\n## API\n\n\n\n* [`updateFirmware(...)`](#updatefirmware)\n* [`getVersion(...)`](#getversion)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\n\n\n\n\n### updateFirmware(...)\n\n```typescript\nupdateFirmware(options: { fileURL: string; deviceIdentifier: string; }, callback: firmwareUpdateCallback) => Promise\n```\n\n| Param | Type |\n| -------------- | ------------------------------------------------------------------------- |\n| **`options`** | { fileURL: string; deviceIdentifier: string; } |\n| **`callback`** | firmwareUpdateCallback |\n\n**Returns:** Promise<string>\n\n--------------------\n\n\n### getVersion(...)\n\n```typescript\ngetVersion(options: { deviceIdentifier: string; }) => Promise\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------ |\n| **`options`** | { deviceIdentifier: string; } |\n\n**Returns:** Promise<string>\n\n--------------------\n\n\n### Interfaces\n\n\n#### String\n\nAllows manipulation and formatting of text strings and determination and location of substrings within strings.\n\n| Prop | Type | Description |\n| ------------ | ------------------- | ------------------------------------------------------------ |\n| **`length`** | number | Returns the length of a String object. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RickGroenewegen_zephyr-dfu.md","loc":{"lines":{"from":1,"to":74}}}}],["f69a76d4-2739-42e5-8875-7a129523fb34",{"pageContent":"| Method | Signature | Description |\n| --------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| **toString** | () => string | Returns a string representation of a string. |\n| **charAt** | (pos: number) => string | Returns the character at the specified index. |\n| **charCodeAt** | (index: number) => number | Returns the Unicode value of the character at the specified location. |\n| **concat** | (...strings: string[]) => string | Returns a string that contains the concatenation of two or more strings. |\n| **indexOf** | (searchString: string, position?: number \\| undefined) => number | Returns the position of the first occurrence of a substring. |\n| **lastIndexOf** | (searchString: string, position?: number \\| undefined) => number | Returns the last occurrence of a substring in the string. |\n| **localeCompare** | (that: string) => number | Determines whether two strings are equivalent in the current locale. |\n| **match** | (regexp: string \\| RegExp) => RegExpMatchArray \\| null | Matches a string with a regular expression, and returns an array containing the results of that search. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RickGroenewegen_zephyr-dfu.md","loc":{"lines":{"from":76,"to":85}}}}],["93c54805-d210-4a9b-a201-6760678e0093",{"pageContent":"| **replace** | (searchValue: string \\| RegExp, replaceValue: string) => string | Replaces text in a string, using a regular expression or search string. |\n| **replace** | (searchValue: string \\| RegExp, replacer: (substring: string, ...args: any[]) => string) => string | Replaces text in a string, using a regular expression or search string. |\n| **search** | (regexp: string \\| RegExp) => number | Finds the first substring match in a regular expression search. |\n| **slice** | (start?: number \\| undefined, end?: number \\| undefined) => string | Returns a section of a string. |\n| **split** | (separator: string \\| RegExp, limit?: number \\| undefined) => string[] | Split a string into substrings using the specified separator and return them as an array. |\n| **substring** | (start: number, end?: number \\| undefined) => string | Returns the substring at the specified location within a String object. |\n| **toLowerCase** | () => string | Converts all the alphabetic characters in a string to lowercase. |\n| **toLocaleLowerCase** | (locales?: string \\| string[] \\| undefined) => string | Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. |\n| **toUpperCase** | () => string | Converts all the alphabetic characters in a string to uppercase. |\n| **toLocaleUpperCase** | (locales?: string \\| string[] \\| undefined) => string | Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RickGroenewegen_zephyr-dfu.md","loc":{"lines":{"from":86,"to":95}}}}],["3c34f92c-2834-4cd8-ac19-b38c5b8e3167",{"pageContent":"| **trim** | () => string | Removes the leading and trailing white space and line terminator characters from a string. |\n| **substr** | (from: number, length?: number \\| undefined) => string | Gets a substring beginning at the specified location and having the specified length. |\n| **valueOf** | () => string | Returns the primitive value of the specified object. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RickGroenewegen_zephyr-dfu.md","loc":{"lines":{"from":96,"to":98}}}}],["5b51d471-1fab-45b7-8e20-c5d55c2b916c",{"pageContent":"#### RegExpMatchArray\n\n| Prop | Type |\n| ----------- | ------------------- |\n| **`index`** | number |\n| **`input`** | string |\n\n\n#### RegExp\n\n| Prop | Type | Description |\n| ---------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`source`** | string | Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. |\n| **`global`** | boolean | Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. |\n| **`ignoreCase`** | boolean | Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. |\n| **`multiline`** | boolean | Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. |\n| **`lastIndex`** | number | |\n\n| Method | Signature | Description |\n| ----------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |\n| **exec** | (string: string) => RegExpExecArray \\| null | Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. |\n| **test** | (string: string) => boolean | Returns a Boolean value that indicates whether or not a pattern exists in a searched string. |\n| **compile** | () => this | |\n\n\n#### RegExpExecArray\n\n| Prop | Type |\n| ----------- | ------------------- |\n| **`index`** | number |\n| **`input`** | string |\n\n\n### Type Aliases\n\n\n#### firmwareUpdateCallback\n\n(msg: String | null, err?: any): void","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RickGroenewegen_zephyr-dfu.md","loc":{"lines":{"from":101,"to":139}}}}],["02b4ea5a-f159-4af7-800a-4d9fb4354e4f",{"pageContent":"### Type Aliases\n\n\n#### firmwareUpdateCallback\n\n(msg: String | null, err?: any): void\n\n\n#### CallbackID\n\nstring\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RickGroenewegen_zephyr-dfu.md","loc":{"lines":{"from":139,"to":151}}}}],["3b99dcc5-eb08-400f-8cf2-7b66d672c0d4",{"pageContent":"# Native SSE (EventSource) Plugin for Capacitor\n\nBecause of the way Capacitor plugins are designed, it does not exactly follow the format/signature of the \"real\" browser `EventSource` API, but it works similarly.\n\n## Installation\n\n```shell\nnpm install capacitor-eventsource\nnpx cap sync\n```\n\nOn iOS or for pure-web use, no further steps are needed.\n\n### Android Installation\n\nOn Android, update your main activity to pull in the `EventSource` plugin:\n\n```java\nimport com.raccoonfink.plugins.eventsource.EventSource;\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(EventSource.class);\n }});\n }\n}\n```\n\n## Usage\n\n```javascript\nEventSource.configure({\n url: 'https://my-sse-url/',\n reconnectTime: 1000,\n maxReconnectTime: 60000,\n idleTimeout: 30000,\n});\nEventSource.addListener('open', (openResult) => {\n console.debug('Connection opened.');\n});\nEventSource.addListener('message', (messageResult) => {\n console.info('I got a message: ' + messageResult.message);\n});\nEventSource.addListener('error', (errorResult) => {\n console.error('Uh-oh: ' + errorResult.error);\n});\nEventSource.addListener('readyStateChanged', (readyStateChangedResult) => {\n console.debug('Ready state changed: ' + readyStateChangedResult.state);\n});\n```\n\n## Parameters\n\n*note*: all times are in milliseconds\n\n* url: **required** the URL to connect to\n* reconnectTime: time to reconnect after the first failure (iOS/Android)\n* maxReconnectTime: maximum amount of time to wait until attempting a reconnect (iOS/Android)\n* idleTimeout: maximum amount of time between receiving any data before considering the connection to have timed out (iOS/Android)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RangerRick_capacitor-eventsource.md","loc":{"lines":{"from":1,"to":66}}}}],["9a77f4e1-bc2e-42a3-ab34-3f63674170d5",{"pageContent":"## Installation\n\n```bash\n$ npm i --save capacitor-plugin-facebook-analytics\n```\n\nTo use yarn\n\n```bash\nyarn add capacitor-plugin-facebook-analytics\n```\n\n## Android configuration\n\nIn file `android/app/src/main/java/**/**/MainActivity.java`, add the plugin to the initialization list:\n\n```diff\n this.init(savedInstanceState, new ArrayList>() {{\n [...]\n+ add(com.vrba.plugins.facebookanalytics.FacebookAnalytics.class);\n [...]\n }});\n```\n\nIn file `android/app/src/main/AndroidManifest.xml`, add the following XML elements under `` :\n\n```diff\n+ \n```\n\nIn file `android/app/src/main/res/values/strings.xml` add the following lines :\n\n```diff\n+ [APP_ID]\n```\n\nDon't forget to replace `[APP_ID]` by your Facebook application Id.\n\nMore information can be found here: https://developers.facebook.com/docs/app-events/getting-started-app-events-android\n\n## iOS configuration\n\nAdd the following in the `ios/App/App/info.plist` file:\n\n```diff\n+ FacebookAppID\n+ [APP_ID]\n+ FacebookDisplayName\n+ [APP_NAME]\n```\n\nMore information can be found here: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios\n\n## Supported methods\n\n| Name | Android | iOS | Web |\n| :-------------------- | :------ | :-- | :-- |\n| logEvent | ✅ | ✅ | ❌ |\n\n## API\n\n### logEvent\n\n```ts\nimport { Plugins } from '@capacitor/core';\nconst { FacebookAnalytics } = Plugins;\n\n// Example commands.\nawait FacebookAnalytics.logEvent(options: { event: string, params?: any }): Promise;\nawait FacebookAnalytics.logPurchase(options: {amount: number, currency: string, params: any}): Promise;\nawait FacebookAnalytics.logAddPaymentInfo(options: {success: number}): Promise;\nawait FacebookAnalytics.logAddToCart(options: {amount: number, currency: string, params?: any}): Promise;\nawait FacebookAnalytics.logCompleteRegistration(options: {params?: any}): Promise;\nawait FacebookAnalytics.logInitiatedCheckout(options: {amount: number, params?: any}): Promise;\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SpellChucker_capacitor-plugin-facebook-analytics.md","loc":{"lines":{"from":1,"to":76}}}}],["75362925-c2cf-4fcc-a151-954a4e575bdf",{"pageContent":"# capacitor-plugin-to-v4\n\nThis is a command tool that automatically update the capacitor plugin version 3 to 4. This library follows the changes in https://github.com/ionic-team/create-capacitor-plugin/commit/03027bf603626ebfdba084cb9d9a1a359d008554\n\nAt least, this library is used to make the following plugins Capacitor4-compatible.\n\n- @capacitor-community/admob\n- @capacitor-community/stripe\n- @capacitor-community/facebook-login\n\n## usage\n\nrun `npx` command into plugin folder.\n\n```bash\n% npx @rdlabo/capacitor-plugin-to-v4 \n```\n\n## result\n\n```bash\nNeed to install the following packages:\n@rdlabo/capacitor-plugin-to-v4\nOk to proceed? (y) y\n\n[info] @rdlabo/capacitor-plugin-to-v4 path is /Users/sakakibara/.npm/_npx/8b6523b6da3b9745/node_modules/@rdlabo/capacitor-plugin-to-v4/src\n[info] working path is /Users/sakakibara/dev/capacitor-stripe\n[info] get update lines of /Users/sakakibara/dev/capacitor-stripe/package.json\n[info] get update lines of /Users/sakakibara/dev/capacitor-stripe/CapacitorCommunityStripe.podspec and /Users/sakakibara/dev/capacitor-stripe/ios/Podfile\n[info] get update lines of /Users/sakakibara/dev/capacitor-stripe/ios/Plugin.xcodeproj/project.pbxproj\n[info] get update lines of /Users/sakakibara/dev/capacitor-stripe/android/build.gradle\n[info] get update lines of /Users/sakakibara/dev/capacitor-stripe/android/gradle/wrapper/gradle-wrapper.properties\n[success] write /Users/sakakibara/dev/capacitor-stripe/package.json\n[success] write /Users/sakakibara/dev/capacitor-stripe/CapacitorCommunityStripe.podspec\n[success] write /Users/sakakibara/dev/capacitor-stripe/ios/Podfile\n[success] write /Users/sakakibara/dev/capacitor-stripe/ios/Plugin.xcodeproj/project.pbxproj\n[success] write /Users/sakakibara/dev/capacitor-stripe/android/build.gradle\n[success] write /Users/sakakibara/dev/capacitor-stripe/android/gradle/wrapper/gradle-wrapper.properties\n[success] write /Users/sakakibara/dev/capacitor-stripe/android/gradlew\nsuccess migrate to v4🎉\nNext step: You should run `npm install`\n```\n\n## Troubleshooting\n\n### removed `jcenter()` before run\n\nIf plugin had manually removed `jcenter()`, will not work well. When this, you should check `android/build.gradle` and add `mavenCentral()` manually.\n\nFor the correct configuration, please click here:\nhttps://github.com/ionic-team/create-capacitor-plugin/commit/03027bf603626ebfdba084cb9d9a1a359d008554#diff-51795f26cbdfdde24931f6d0f9d6f047f4617fc6a6cb850029cd78c8e0e9b90d","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/rdlabo-team_capacitor-plugin-to-v4.md","loc":{"lines":{"from":1,"to":51}}}}],["2f79c7f0-a017-46ec-a0c7-bad294e91e0e",{"pageContent":"# cap-ocr\n\nThis plugins enables text recognition from images and camera.\nProper documentation and guide how to install & use is coming in future versions.\n\n#### WARNING - this plugin is still in early development. Use with caution.\n#### Version 1.0.0 is expected to be stable and fully usable.\n\n\n## Install\n\n```bash\nnpm install cap-ocr\nnpx cap sync\n```\n\n## API\n\n\n\n* [`detectText(...)`](#detecttext)\n* [`detectData(...)`](#detectdata)\n\n\n\n\n\n\n### detectText(...)\n\n```typescript\ndetectText(options: { imageBase64: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------------- |\n| **`options`** | { imageBase64: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### detectData(...)\n\n```typescript\ndetectData(options: { imageBase64: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------------- |\n| **`options`** | { imageBase64: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/petrzamecnik_cap-ocr.md","loc":{"lines":{"from":1,"to":58}}}}],["db6a998a-0a9e-463a-a3db-93cfc657f877",{"pageContent":"# Capacitor Plugins\n\nThis repository contains the official Capacitor plugins maintained by the Capacitor team. You can find more plugins in the [Capacitor Community](https://github.com/capacitor-community/).\n\n> ### :rotating_light: These plugins are for Capacitor 4 :rotating_light:\n>\n> Capacitor 2 core plugins are bundled with Capacitor itself.\n>\n> For Capacitor 3, use the 1.x version of the plugins.\n\n## Plugins","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agomezmart_capacitor-push-notification-mkcloud.md","loc":{"lines":{"from":1,"to":11}}}}],["39134c51-8b47-422a-8cbb-7cc1faa90d3d",{"pageContent":"| Package | Source | Version |\n| --- | --- | --- |\n| [`@capacitor/action-sheet`](https://capacitorjs.com/docs/apis/action-sheet) | [`./action-sheet`](./action-sheet) | [![npm badge](https://img.shields.io/npm/v/@capacitor/action-sheet?style=flat-square)](https://www.npmjs.com/package/@capacitor/action-sheet)\n| [`@capacitor/app-launcher`](https://capacitorjs.com/docs/apis/app-launcher) | [`./app-launcher`](./app-launcher) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app-launcher?style=flat-square)](https://www.npmjs.com/package/@capacitor/app-launcher)\n| [`@capacitor/app`](https://capacitorjs.com/docs/apis/app) | [`./app`](./app) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app?style=flat-square)](https://www.npmjs.com/package/@capacitor/app)\n| [`@capacitor/browser`](https://capacitorjs.com/docs/apis/browser) | [`./browser`](./browser) | [![npm badge](https://img.shields.io/npm/v/@capacitor/browser?style=flat-square)](https://www.npmjs.com/package/@capacitor/browser)\n| [`@capacitor/camera`](https://capacitorjs.com/docs/apis/camera) | [`./camera`](./camera) | [![npm badge](https://img.shields.io/npm/v/@capacitor/camera?style=flat-square)](https://www.npmjs.com/package/@capacitor/camera)\n| [`@capacitor/clipboard`](https://capacitorjs.com/docs/apis/clipboard) | [`./clipboard`](./clipboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/clipboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/clipboard)\n| [`@capacitor/device`](https://capacitorjs.com/docs/apis/device) | [`./device`](./device) | [![npm badge](https://img.shields.io/npm/v/@capacitor/device?style=flat-square)](https://www.npmjs.com/package/@capacitor/device)\n| [`@capacitor/dialog`](https://capacitorjs.com/docs/apis/dialog) | [`./dialog`](./dialog) | [![npm badge](https://img.shields.io/npm/v/@capacitor/dialog?style=flat-square)](https://www.npmjs.com/package/@capacitor/dialog)\n| [`@capacitor/filesystem`](https://capacitorjs.com/docs/apis/filesystem) | [`./filesystem`](./filesystem) | [![npm badge](https://img.shields.io/npm/v/@capacitor/filesystem?style=flat-square)](https://www.npmjs.com/package/@capacitor/filesystem)\n| [`@capacitor/geolocation`](https://capacitorjs.com/docs/apis/geolocation) | [`./geolocation`](./geolocation) | [![npm badge](https://img.shields.io/npm/v/@capacitor/geolocation?style=flat-square)](https://www.npmjs.com/package/@capacitor/geolocation)\n| [`@capacitor/google-maps`](https://capacitorjs.com/docs/apis/google-maps) | [`./google-maps`](./google-maps) | [![npm badge](https://img.shields.io/npm/v/@capacitor/google-maps?style=flat-square)](https://www.npmjs.com/package/@capacitor/google-maps)\n| [`@capacitor/haptics`](https://capacitorjs.com/docs/apis/haptics) | [`./haptics`](./haptics) | [![npm badge](https://img.shields.io/npm/v/@capacitor/haptics?style=flat-square)](https://www.npmjs.com/package/@capacitor/haptics)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agomezmart_capacitor-push-notification-mkcloud.md","loc":{"lines":{"from":13,"to":26}}}}],["05fccdfc-e03b-4e9b-9429-a7b14749e604",{"pageContent":"| [`@capacitor/keyboard`](https://capacitorjs.com/docs/apis/keyboard) | [`./keyboard`](./keyboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/keyboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/keyboard)\n| [`@capacitor/local-notifications`](https://capacitorjs.com/docs/apis/local-notifications) | [`./local-notifications`](./local-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/local-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/local-notifications)\n| [`@capacitor/motion`](https://capacitorjs.com/docs/apis/motion) | [`./motion`](./motion) | [![npm badge](https://img.shields.io/npm/v/@capacitor/motion?style=flat-square)](https://www.npmjs.com/package/@capacitor/motion)\n| [`@capacitor/network`](https://capacitorjs.com/docs/apis/network) | [`./network`](./network) | [![npm badge](https://img.shields.io/npm/v/@capacitor/network?style=flat-square)](https://www.npmjs.com/package/@capacitor/network)\n| [`@capacitor/preferences`](https://capacitorjs.com/docs/apis/preferences) | [`./preferences`](./preferences) | [![npm badge](https://img.shields.io/npm/v/@capacitor/preferences?style=flat-square)](https://www.npmjs.com/package/@capacitor/preferences)\n| [`@capacitor/push-notifications`](https://capacitorjs.com/docs/apis/push-notifications) | [`./push-notifications`](./push-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/push-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/push-notifications)\n| [`@capacitor/screen-reader`](https://capacitorjs.com/docs/apis/screen-reader) | [`./screen-reader`](./screen-reader) | [![npm badge](https://img.shields.io/npm/v/@capacitor/screen-reader?style=flat-square)](https://www.npmjs.com/package/@capacitor/screen-reader)\n| [`@capacitor/share`](https://capacitorjs.com/docs/apis/share) | [`./share`](./share) | [![npm badge](https://img.shields.io/npm/v/@capacitor/share?style=flat-square)](https://www.npmjs.com/package/@capacitor/share)\n| [`@capacitor/splash-screen`](https://capacitorjs.com/docs/apis/splash-screen) | [`./splash-screen`](./splash-screen) | [![npm badge](https://img.shields.io/npm/v/@capacitor/splash-screen?style=flat-square)](https://www.npmjs.com/package/@capacitor/splash-screen)\n| [`@capacitor/status-bar`](https://capacitorjs.com/docs/apis/status-bar) | [`./status-bar`](./status-bar) | [![npm badge](https://img.shields.io/npm/v/@capacitor/status-bar?style=flat-square)](https://www.npmjs.com/package/@capacitor/status-bar)\n| [`@capacitor/text-zoom`](https://capacitorjs.com/docs/apis/text-zoom) | [`./text-zoom`](./text-zoom) | [![npm badge](https://img.shields.io/npm/v/@capacitor/text-zoom?style=flat-square)](https://www.npmjs.com/package/@capacitor/text-zoom)\n| [`@capacitor/toast`](https://capacitorjs.com/docs/apis/toast) | [`./toast`](./toast) | [![npm badge](https://img.shields.io/npm/v/@capacitor/toast?style=flat-square)](https://www.npmjs.com/package/@capacitor/toast)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agomezmart_capacitor-push-notification-mkcloud.md","loc":{"lines":{"from":27,"to":38}}}}],["0fc51c12-ffcb-479f-b95a-528110f01051",{"pageContent":"## Contributing\n\nSee [`CONTRIBUTING.md`](./CONTRIBUTING.md).","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agomezmart_capacitor-push-notification-mkcloud.md","loc":{"lines":{"from":40,"to":42}}}}],["e8a3fcac-cc47-495f-9768-28688406f96b",{"pageContent":"# Capacitor Plugin VK Auth\n\n## Install\nUse Yarn\n```\nyarn add capacitor-plugin-vk-auth\n```\nUse NPM\n```\nnpm install capacitor-plugin-vk-auth --save\n```\n\n## Using\n```javascript\nVKAuth.initWithId({ id: '7569443' })\nVKAuth.auth({ scope: ['offline'] });\nVKAuth.addListener(\"vkAuthFinished\", (info) => {\n console.log(\"vkAuthFinished was fired\", JSON.stringify(info, null, 2));\n});\n```\n\n## Setup VK APP\n\nSetup App in [vk.com/dev](https://vk.com/dev)\n\nCreate Standalone-application\n

\n\n

\n\nExample both for Android & IOS\n\nP.S. Setup for ios is unnecessary\n

\n\n

\n\n\n## Android\n\n[Click to open useful docs for android](https://vk.com/dev/android_sdk?f=1.%20%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%BA%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E)\n\nAdd VK APP ID to app/res/values/strings.xml\n

\n\n

\n\n## IOS\n\nInsert vkID into your `Info.plist` file like this\n\n

\n\n

\n\n[Click to open useful docs for ios](https://vk.com/dev/ios_sdk?f=1.%20%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%BA%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E)\n\n### Only for IOS 9\n[Click to open settings for IOS 9](https://vk.com/dev/ios_sdk?f=1.2.%20%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B4%D0%BB%D1%8F%20iOS%209)\n\n\n## Support\nFor any support create an issue and describe your problem, we can help you with our plugin ;)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/BazuMax_capacitor-plugin-vk-auth.md","loc":{"lines":{"from":1,"to":63}}}}],["52806553-1115-48a1-ad95-19fc00b9b4f2",{"pageContent":"# plumb5-sdk\n\nPlumb5 sdk capacitor plugin\n\n## Install\n\n```bash\nnpm install plumb5-sdk\nionic cap sync\n```\n## Change the package name in capacitor.config.ts\n\n- Add plugin object with PLUMB5_ACCOUNT_ID, PLUMB5_BASE_URL & PLUMB5_API_KEY\n\n- Change Package name with appId object\n- Change App name with App name object\n\n```typescript\nimport { CapacitorConfig } from '@capacitor/cli';\n\nconst config: CapacitorConfig = {\n appId: string,\n appName: string,\n webDir: 'www',\n bundledWebRuntime: false,\n plugins:{\n Plumb5:{\n PLUMB5_ACCOUNT_ID:number ,\n PLUMB5_BASE_URL:string ,\n PLUMB5_API_KEY: string \n }\n\n }\n\n};\n\nexport default config;\n```\n## Initialize Plumb5 SDK\n\n```typescript\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Component } from '@angular/core';\n\nimport { Plumb5 } from 'plumb5-sdk';\n\nimport { Platform } from '@ionic/angular';\n\nimport { Router, NavigationStart, ActivatedRoute, Navigation } from '@angular/router';\n\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n styleUrls: ['app.component.scss'],\n})\n\n\nexport class AppComponent {\n constructor(\n private platform: Platform,\n private router: Router,\n private pageParameter: ActivatedRoute\n ) {\n\n this.platform.ready().then(() => {\n\n this.Plumb5();\n\n });\n\n\n }\n\n\n\n Plumb5() {\n\n\n //initialize the sdk\n Plumb5.initializePlumb5();\n\n //initialize the sdk page tracking and in-app notfication\n this.router.events\n .subscribe(\n (event) => {\n if(event instanceof NavigationStart) {\n console.log(event);\n\n Plumb5.tracking({\n ScreenName: event.url,\n PageParameter: ''\n });\n\n Plumb5.pushResponse({\n ScreenName: event.url,\n PageParameter: ''\n });\n }\n });\n\n //user details\n Plumb5.setUserDetails({\n Name: 'demo',\n EmailId: 'guru@demo.com',\n PhoneNumber: '987654321',\n LeadType: 1,\n Gender: 'Male',\n Age: '2020-01-27T06:12:01.051Z',\n AgeRange: '10-89',\n MaritalStatus: 'Married',\n Education: 'MCA',\n Occupation: 'SE',\n Interests: 'Eating',\n Location: 'Bangalore'\n });\n\n //Capture PushNotification Data and route navigation from notfication\n window.addEventListener('onPushNotification', (e: any) => {\n console.log('onPushNotification');\n console.log(JSON.stringify(e));\n const routeUrl = e.routeUrl;\n console.log('routeUrl', routeUrl); // similar parameter in case of route or button click\n this.router.navigate([routeUrl]);\n });\n\n //Event post of any kond of component\n Plumb5.eventPost({\n Type: 'Button',\n Name: 'demo@demo.com',\n PhoneNumber: '987654321',\n Value: 1\n });\n\n\n }\n\n}\n\n```\n\n## Add Android platform\n\n```bash\nionic cap add android\n\n```\n\n## Integrating Firebase googleService JSON","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":1,"to":149}}}}],["ab0180b8-846b-403a-afe1-88f2c05c49a4",{"pageContent":"}\n\n}\n\n```\n\n## Add Android platform\n\n```bash\nionic cap add android\n\n```\n\n## Integrating Firebase googleService JSON \n\nYour Android package name should match the appId from your capacitor.capacitor.config file\nWe used com.mydomain.myappname for this Capacitor app ID, so that is what we'll use for this entry.\n\nDownload the google-services.json file to your local machine. Then move the file into your Capacitor Android project directory, specifically under android/app/.\n\n![Firebase](https://capacitorjs.com/docs/assets/images/google-services-location-android-1b89340513696453eb62085eef9b40d8.png)\n\n## Update the credtional\n\nAdd the details in AndroidManifest.xml file\n\nAdd the details under tag\n\n```bash\n \n \n \n``` \n\n## Update the changes\n\n```bash\nionic cap sync\n```\n## Run the App\n\nRun/Build the apllication in android studio\n\n```bash\nionic cap open android\n```\n##Note\nTo recive notfication when app is \n-App in foreground\n-App in background\n-App has been killed\n\n Please add this service in app manifiest and check the service avilablity \n\n```xml\n \n```\n\n\n## Add Ios platform\n\n```bash\nionic cap add ios\n```\n\n## Update the credtional\n\nAdd Information Property List Files under\n\n![Ios](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Art/xcode_infoplist_editor_2x.png)\n\nAdd the details\n\n```bash\n \"PLUMB5_ACCOUNT_ID\" = \"---Account Id------\" \n \"PLUMB5_API_KEY\" = \"---App Key------\" \n \"PLUMB5_BASE_URL\" = \"---Base URL------\"\n``` \n\n## Integrating Firebase GoogleService-Info.plist \n\nYour iOS bundle ID should match the appId from your capacitor.capacitor.config file\nWe used com.mydomain.myappname for this Capacitor app ID, so that is what we'll use for this entry.\n\nDownload the GoogleService-Info.plist provided to your local machine. \n\n```bash\nionic cap open ios\n```\nMove the .plist file into your Xcode project as instructed by Firebase, ensuring to add it to all targets.\n\n![Firebase](https://capacitorjs.com/docs/assets/images/google-plist-location-ios-d809634deabea911f5370c9a861052d5.png)\n\n## Add the Firebase SDK via CocoaPods\n The Push Notification API on iOS makes use of CocoaPods - an iOS dependency management system - and we need to tell CocoaPods to make use of Firebase.\n\n To do this, we need to modify the Podfile, which can be found in Xcode under Pods:\n\n ![Firebase SDK](https://capacitorjs.com/docs/assets/images/podfile-location-ios-342b27c94af4ddc839e7e3caa85482fb.png)\n We need to add Firebase to the CocoaPods provided for our App target. To do that, add pod Firebase/Messaging to your target 'App' section, like so:","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":149,"to":248}}}}],["7f6130ae-b863-4d63-93b1-09a830b54698",{"pageContent":"```bash\n target 'App' do\n capacitor_pods\n # Add your Pods here\n pod 'Firebase/Messaging' # Add this line\nend\n```\nUpdate the Project\n\n```bash\nionic cap update ios\n```\n\n## Add Firebase Initialization Code\n\nTo connect to Firebase when your iOS app starts up, you need to add the following to your AppDelegate.swift file.\n\n```bash\n\nimport Capacitor\nimport Firebase\nimport Plumb5Sdk\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n var window: UIWindow?\n public weak var plugin: CAPPlugin?\n\n func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n // Override point for customization after application launch.\n\n FirebaseApp.configure()\n\n return true\n }\n\n func application(_: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {\n Messaging.messaging().apnsToken = deviceToken\n Messaging.messaging().token(completion: { token, error in\n if let error = error {\n NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)\n } else if let token = token {\n NotificationCenter.default.post(name: .capacitorDidRegisterForRemoteNotifications, object: token)\n }\n })\n }\n\n func application(_: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {\n NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)\n }\n\n func application(\n _: UIApplication,\n didReceiveRemoteNotification userInfo: [AnyHashable: Any],\n fetchCompletionHandler _: @escaping (UIBackgroundFetchResult) -> Void\n ) {\n let data = userInfo[\"data\"]\n\n P5PushNotificationsHandler().pushData(type: \"view\", btnName: \"\", P5UniqueId: userInfo[\"P5UniqueId\"] as! String, WorkFlowDataId: userInfo[\"workflowdataId\"] as! String)\n }\n}\n\n```\n\n## Add a notification service extension\n\n### Step-1. Add File\nFrom Xcode top menu go to: File > New > Target...\n\nA modal will present a list of possible targets, scroll down or use the filter to select Notification Service Extension. Press Next.\n\nAdd a product name (use ImageNotification to follow along) and click Finish\n\nEnable the scheme by clicking Activate\n![Firebase Extension](https://rnfirebase.io/assets/docs/messaging/ios-notification-images-step-1.gif)\n\n### Step-2. Add required code\n\nModify the code of the Notification Service Extension to replace the whole contents of NotificationService.swift \n\n```bash\n\n\n\nimport UIKit\nimport UserNotifications\n\npublic enum MediaType: String {\n case image\n case gif\n case video\n case audio\n}\n\nprivate struct Media {\n private var data: Data\n private var ext: String\n private var type: MediaType\n\n init(forMediaType mediaType: MediaType, withData data: Data, fileExtension ext: String) {\n type = mediaType\n self.data = data\n self.ext = ext\n\n }","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":250,"to":355}}}}],["a1da5704-46a6-4cdf-867d-9ec07632b408",{"pageContent":"}\n\n var attachmentOptions: [String: Any?] {\n switch type {\n case .image:\n return [UNNotificationAttachmentOptionsThumbnailClippingRectKey: CGRect(x: 0.0, y: 0.0, width: 1.0, height: 0.50).dictionaryRepresentation]\n case .gif:\n return [UNNotificationAttachmentOptionsThumbnailTimeKey: 0]\n case .video:\n return [UNNotificationAttachmentOptionsThumbnailTimeKey: 0]\n case .audio:\n return [UNNotificationAttachmentOptionsThumbnailHiddenKey: 1]\n }\n }\n\n var fileIdentifier: String {\n return type.rawValue\n }\n\n var fileExt: String {\n if ext.count > 0 {\n return ext\n } else {\n switch type {\n case .image:\n return \"jpg\"\n case .gif:\n return \"gif\"\n case .video:\n return \"mp4\"\n case .audio:\n return \"mp3\"\n }\n }\n }\n\n var mediaData: Data? {\n return data\n }\n}\n\n// @available(iOSApplicationExtension 10.0, *)\nprivate extension UNNotificationAttachment {\n static func create(fromMedia media: Media) -> UNNotificationAttachment? {\n let fileManager = FileManager.default\n let tmpSubFolderName = ProcessInfo.processInfo.globallyUniqueString\n let tmpSubFolderURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(tmpSubFolderName, isDirectory: true)\n do {\n try fileManager.createDirectory(at: tmpSubFolderURL, withIntermediateDirectories: true, attributes: nil)\n let fileIdentifier = \"\\(media.fileIdentifier).\\(media.fileExt)\"\n let fileURL = tmpSubFolderURL.appendingPathComponent(fileIdentifier)\n\n guard let data = media.mediaData else {\n return nil\n }\n\n try data.write(to: fileURL)\n return create(fileIdentifier: fileIdentifier, fileUrl: fileURL, options: media.attachmentOptions as [String: Any])\n } catch {\n print(\"error \" + error.localizedDescription)\n }\n return nil\n }\n\n static func create(fileIdentifier: String, fileUrl: URL, options: [String: Any]? = nil) -> UNNotificationAttachment? {\n var n: UNNotificationAttachment?\n do {\n n = try UNNotificationAttachment(identifier: fileIdentifier, url: fileUrl, options: options)\n } catch {\n print(\"error \" + error.localizedDescription)\n }\n return n\n }\n}\n\nprivate func resourceURL(forUrlString urlString: String) -> URL? {\n return URL(string: urlString)\n}\n\nprivate func loadAttachment(forMediaType mediaType: MediaType, withUrlString urlString: String, completionHandler: (UNNotificationAttachment?) -> Void) {\n guard let url = resourceURL(forUrlString: urlString) else {\n completionHandler(nil)\n return\n }","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":355,"to":438}}}}],["7bec32bb-173b-4183-9c81-51daddadbba3",{"pageContent":"do {\n let data = try Data(contentsOf: url)\n let media = Media(forMediaType: mediaType, withData: data, fileExtension: url.pathExtension)\n if let attachment = UNNotificationAttachment.create(fromMedia: media) {\n completionHandler(attachment)\n return\n }\n completionHandler(nil)\n } catch {\n print(\"error \" + error.localizedDescription)\n completionHandler(nil)\n }\n}\n\nclass NotificationService: UNNotificationServiceExtension {\n var contentHandler: ((UNNotificationContent) -> Void)?\n var bestAttemptContent: UNMutableNotificationContent?\n\n override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {\n self.contentHandler = contentHandler\n bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)\n\n registerCategory(data: request.content.userInfo)\n if let bestAttemptContent = bestAttemptContent {\n // Modify the notification content here...\n\n let userInfo = bestAttemptContent.userInfo\n // check for a media attachment\n if (userInfo[\"attachment_url\"] as? String) != \"\" {\n guard\n\n let url = userInfo[\"attachment_url\"] as? String,\n let _mediaType = userInfo[\"media_type\"] as? String,\n let mediaType = MediaType(rawValue: _mediaType)\n else {\n contentHandler(bestAttemptContent)\n return\n }\n\n loadAttachment(forMediaType: mediaType, withUrlString: url, completionHandler: { attachment in\n if let attachment = attachment {\n bestAttemptContent.attachments = [attachment]\n }\n\n contentHandler(bestAttemptContent)\n })\n }\n }\n }\n\n override func serviceExtensionTimeWillExpire() {\n // Called just before the extension will be terminated by the system.\n // Use this as an opportunity to deliver your \"best attempt\" at modified content, otherwise the original push payload will be used.\n if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {\n contentHandler(bestAttemptContent)\n }\n }\n\n func registerCategory(data: [AnyHashable: Any]) {\n let title: String = (data[\"title\"] as! String).replacingOccurrences(of: \"~A~\", with: \"&\")\n let message: String = (data[\"message\"] as! String).replacingOccurrences(of: \"~A~\", with: \"&\")\n let workflowdataId: String = (data[\"workflowdataId\"] as! String)\n let P5UniqueId: String = (data[\"P5UniqueId\"] as! String)\n let nExtraAction: String = (data[\"extraaction\"] as! String)\n let nclkAction: String = (data[\"clickaction\"] as! String)\n let atitle: [String] = (title.components(separatedBy: \"^\"))\n\n if nExtraAction != \"\" {","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":440,"to":507}}}}],["a54b4f7d-975a-4c92-959a-5c2ec154b0b3",{"pageContent":"if nExtraAction != \"\" {\n\n\n var pushAction: [PushNotificationCategory] = []\n var pushButtonn: [PushNotificationAction] = []\n if nExtraAction.count > 0 {\n let btnText: [String] = nExtraAction.components(separatedBy: \"|\")\n for obj in btnText {\n if obj != \"\" {\n let bValue: [String] = obj.components(separatedBy: \"^\")\n let bName: String = bValue[0]\n // let bImageId:String = bValue[1]\n let bAction: String = bValue[2]\n let bParm: String = bValue[3]\n // let bExtra:String = bValue[4]\n let bIdentifier: String = \"btn\" + \"^\" + bAction + \"^\" + bParm\n pushButtonn.append(PushNotificationAction(button_title: bName, identifier: bIdentifier))\n }\n }\n pushAction.append(PushNotificationCategory(name: \"P5pushAction\", pushAction: pushButtonn))\n registerPushNotificationCategories(categories: pushAction) { t in\n print(t)\n }\n }\n }\n }\n\n func registerPushNotificationCategories(categories: [PushNotificationCategory]?, completionHandler: @escaping (Bool) -> Void) {\n guard let categories = categories else {\n if #available(iOS 10.0, *) {\n let notificationCategories = Set()\n UNUserNotificationCenter.current().setNotificationCategories(notificationCategories)\n } else {\n // Fallback on earlier versions\n }\n return\n }\n if #available(iOS 10.0, *) {\n var notificationCategories = Set()\n for category in categories {\n var actionList = [UNNotificationAction]()\n for action in category.pushActions! {\n let action = UNNotificationAction(identifier: action.identifier!, title: action.button_title!, options: [.foreground])\n actionList.append(action)\n }\n let category = UNNotificationCategory(identifier: category.name!, actions: actionList, intentIdentifiers: [], options: [])\n notificationCategories.insert(category)\n }\n UNUserNotificationCenter.current().setNotificationCategories(notificationCategories)\n UNUserNotificationCenter.current().getNotificationCategories(completionHandler: { _ in\n completionHandler(true)\n })\n } else {}\n }\n}\n\nstruct PushNotificationCategory {\n var name: String?\n var pushActions: [PushNotificationAction]?\n\n init(name: String?, pushAction: [PushNotificationAction]?) {\n self.name = name\n pushActions = pushAction\n }\n}\n\nstruct PushNotificationAction: Codable {\n var button_title: String?\n var identifier: String?","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":507,"to":575}}}}],["bd3c9fee-19ba-41cd-915d-a8bf7356389e",{"pageContent":"struct PushNotificationAction: Codable {\n var button_title: String?\n var identifier: String?\n\n init(button_title: String?, identifier: String?) {\n self.button_title = button_title\n self.identifier = identifier\n }\n}\n\n```\n### Step-3. Add background mode\nYou need to make sure BackgroundModes is added (little + to the left of Capability) and then check Remote Notifications\n![Firebase Extension](https://www.themoyles.co.uk/wp-content/uploads/2019/11/background-push.png) \n\n\n\n\n## API\n\n\n\n* [`addListener('onPushNotification', ...)`](#addlisteneronpushnotification)\n* [`initializePlumb5()`](#initializeplumb5)\n* [`deviceRegistration()`](#deviceregistration)\n* [`setUserDetails(...)`](#setuserdetails)\n* [`notificationSubscribe()`](#notificationsubscribe)\n* [`tracking(...)`](#tracking)\n* [`pushResponse(...)`](#pushresponse)\n* [`eventPost(...)`](#eventpost)\n* [`register()`](#register)\n* [`getDeliveredNotifications()`](#getdeliverednotifications)\n* [`removeDeliveredNotifications(...)`](#removedeliverednotifications)\n* [`removeAllDeliveredNotifications()`](#removealldeliverednotifications)\n* [`createChannel(...)`](#createchannel)\n* [`deleteChannel(...)`](#deletechannel)\n* [`listChannels()`](#listchannels)\n* [`checkPermissions()`](#checkpermissions)\n* [`requestPermissions()`](#requestpermissions)\n* [`addListener('registration', ...)`](#addlistenerregistration)\n* [`addListener('registrationError', ...)`](#addlistenerregistrationerror)\n* [`addListener('pushNotificationReceived', ...)`](#addlistenerpushnotificationreceived)\n* [`addListener('pushNotificationActionPerformed', ...)`](#addlistenerpushnotificationactionperformed)\n* [`removeAllListeners()`](#removealllisteners)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\n\n\n\n\n### addListener('onPushNotification', ...)\n\n```typescript\naddListener(eventName: 'onPushNotification', listenerFunc: (data: { routeUrl: string; }) => void) => PluginListenerHandle\n```\n\n| Param | Type |\n| ------------------ | ----------------------------------------------------- |\n| **`eventName`** | 'onPushNotification' |\n| **`listenerFunc`** | (data: { routeUrl: string; }) => void |\n\n**Returns:** PluginListenerHandle\n\n--------------------\n\n\n### initializePlumb5()\n\n```typescript\ninitializePlumb5() => Promise\n```\n\n--------------------\n\n\n### deviceRegistration()\n\n```typescript\ndeviceRegistration() => Promise\n```\n\n--------------------\n\n\n### setUserDetails(...)\n\n```typescript\nsetUserDetails(options: UserOptions) => Promise\n```\n\n| Param | Type |\n| ------------- | --------------------------------------------------- |\n| **`options`** | UserOptions |\n\n--------------------\n\n\n### notificationSubscribe()","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":575,"to":674}}}}],["ec224681-df74-4126-bbe1-5006d82af3b8",{"pageContent":"--------------------\n\n\n### notificationSubscribe()\n\n```typescript\nnotificationSubscribe() => Promise\n```\n\n--------------------\n\n\n### tracking(...)\n\n```typescript\ntracking(options: { ScreenName: string; PageParameter: any; }) => Promise\n```\n\n| Param | Type |\n| ------------- | -------------------------------------------------------- |\n| **`options`** | { ScreenName: string; PageParameter: any; } |\n\n--------------------\n\n\n### pushResponse(...)\n\n```typescript\npushResponse(options: { ScreenName: string; PageParameter: any; }) => Promise\n```\n\n| Param | Type |\n| ------------- | -------------------------------------------------------- |\n| **`options`** | { ScreenName: string; PageParameter: any; } |\n\n--------------------\n\n\n### eventPost(...)\n\n```typescript\neventPost(options: EventDetails) => Promise\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | EventDetails |\n\n--------------------\n\n\n### register()\n\n```typescript\nregister() => Promise\n```\n\nRegister the app to receive push notifications.\n\nThis method will trigger the `'registration'` event with the push token or\n`'registrationError'` if there was a problem. It does not prompt the user for\nnotification permissions, use `requestPermissions()` first.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getDeliveredNotifications()\n\n```typescript\ngetDeliveredNotifications() => Promise\n```\n\nGet a list of notifications that are visible on the notifications screen.\n\n**Returns:** Promise<DeliveredNotifications>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeDeliveredNotifications(...)\n\n```typescript\nremoveDeliveredNotifications(delivered: DeliveredNotifications) => Promise\n```\n\nRemove the specified notifications from the notifications screen.\n\n| Param | Type |\n| --------------- | ------------------------------------------------------------------------- |\n| **`delivered`** | DeliveredNotifications |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeAllDeliveredNotifications()\n\n```typescript\nremoveAllDeliveredNotifications() => Promise\n```\n\nRemove all the notifications from the notifications screen.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### createChannel(...)\n\n```typescript\ncreateChannel(channel: Channel) => Promise\n```\n\nCreate a notification channel.\n\nOnly available on Android O or newer (SDK 26+).\n\n| Param | Type |\n| ------------- | ------------------------------------------- |\n| **`channel`** | Channel |\n\n**Since:** 1.0.0\n\n--------------------","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":674,"to":803}}}}],["af22e05c-7d3e-499f-8b3f-667a6028887a",{"pageContent":"**Since:** 1.0.0\n\n--------------------\n\n\n### deleteChannel(...)\n\n```typescript\ndeleteChannel(args: { id: string; }) => Promise\n```\n\nDelete a notification channel.\n\nOnly available on Android O or newer (SDK 26+).\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### listChannels()\n\n```typescript\nlistChannels() => Promise\n```\n\nList the available notification channels.\n\nOnly available on Android O or newer (SDK 26+).\n\n**Returns:** Promise<ListChannelsResult>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### checkPermissions()\n\n```typescript\ncheckPermissions() => Promise\n```\n\nCheck permission to receive push notifications.\n\nOn Android the status is always granted because you can always\nreceive push notifications. If you need to check if the user allows\nto display notifications, use local-notifications plugin.\n\n**Returns:** Promise<PermissionStatus>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### requestPermissions()\n\n```typescript\nrequestPermissions() => Promise\n```\n\nRequest permission to receive push notifications.\n\nOn Android it doesn't prompt for permission because you can always\nreceive push notifications.\n\nOn iOS, the first time you use the function, it will prompt the user\nfor push notification permission and return granted or denied based\non the user selection. On following calls it will get the current status of\nthe permission without prompting again.\n\n**Returns:** Promise<PermissionStatus>\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('registration', ...)\n\n```typescript\naddListener(eventName: 'registration', listenerFunc: (token: Token) => void) => Promise & PluginListenerHandle\n```\n\nCalled when the push notification registration finishes without problems.\n\nProvides the push notification token.\n\n| Param | Type |\n| ------------------ | ----------------------------------------------------------- |\n| **`eventName`** | 'registration' |\n| **`listenerFunc`** | (token: Token) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('registrationError', ...)\n\n```typescript\naddListener(eventName: 'registrationError', listenerFunc: (error: RegistrationError) => void) => Promise & PluginListenerHandle\n```\n\nCalled when the push notification registration finished with problems.\n\nProvides an error with the registration problem.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":803,"to":916}}}}],["e3da3642-d848-4776-af1e-22efeba0b12d",{"pageContent":"Called when the push notification registration finished with problems.\n\nProvides an error with the registration problem.\n\n| Param | Type |\n| ------------------ | ----------------------------------------------------------------------------------- |\n| **`eventName`** | 'registrationError' |\n| **`listenerFunc`** | (error: RegistrationError) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('pushNotificationReceived', ...)\n\n```typescript\naddListener(eventName: 'pushNotificationReceived', listenerFunc: (notification: PushNotificationSchema) => void) => Promise & PluginListenerHandle\n```\n\nCalled when the device receives a push notification.\n\n| Param | Type |\n| ------------------ | ---------------------------------------------------------------------------------------------------- |\n| **`eventName`** | 'pushNotificationReceived' |\n| **`listenerFunc`** | (notification: PushNotificationSchema) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('pushNotificationActionPerformed', ...)\n\n```typescript\naddListener(eventName: 'pushNotificationActionPerformed', listenerFunc: (notification: ActionPerformed) => void) => Promise & PluginListenerHandle\n```\n\nCalled when an action is performed on a push notification.\n\n| Param | Type |\n| ------------------ | -------------------------------------------------------------------------------------- |\n| **`eventName`** | 'pushNotificationActionPerformed' |\n| **`listenerFunc`** | (notification: ActionPerformed) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeAllListeners()\n\n```typescript\nremoveAllListeners() => Promise\n```\n\nRemove all native listeners for this plugin.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### PluginListenerHandle","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":916,"to":988}}}}],["ba4f85fe-25d9-48d7-87b7-99435790446f",{"pageContent":"**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### PluginListenerHandle\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`remove`** | () => Promise<void> |\n\n\n#### UserOptions\n\n| Prop | Type |\n| ------------------- | ------------------- |\n| **`Name`** | string |\n| **`EmailId`** | string |\n| **`PhoneNumber`** | string |\n| **`LeadType`** | number |\n| **`Gender`** | string |\n| **`Age`** | string |\n| **`AgeRange`** | string |\n| **`MaritalStatus`** | string |\n| **`Education`** | string |\n| **`Occupation`** | string |\n| **`Interests`** | string |\n| **`Location`** | string |\n\n\n#### EventDetails\n\n| Prop | Type |\n| ----------------- | ------------------- |\n| **`Type`** | string |\n| **`Name`** | string |\n| **`PhoneNumber`** | string |\n| **`Value`** | number |\n\n\n#### DeliveredNotifications\n\n| Prop | Type | Description | Since |\n| ------------------- | ------------------------------------- | ------------------------------------------------------------------- | ----- |\n| **`notifications`** | PushNotificationSchema[] | List of notifications that are visible on the notifications screen. | 1.0.0 |\n\n\n#### PushNotificationSchema","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":988,"to":1038}}}}],["de74fc0f-7126-4d8a-8b3a-d16ccad89d0c",{"pageContent":"#### PushNotificationSchema\n\n| Prop | Type | Description | Since |\n| ------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`title`** | string | The notification title. | 1.0.0 |\n| **`subtitle`** | string | The notification subtitle. | 1.0.0 |\n| **`body`** | string | The main text payload for the notification. | 1.0.0 |\n| **`id`** | string | The notification identifier. | 1.0.0 |\n| **`tag`** | string | The notification tag. Only available on Android (from push notifications). | 4.0.0 |\n| **`badge`** | number | The number to display for the app icon badge. | 1.0.0 |\n| **`notification`** | any | It's not being returned. | 1.0.0 |\n| **`data`** | any | Any additional data that was included in the push notification payload. | 1.0.0 |\n| **`click_action`** | string | The action to be performed on the user opening the notification. Only available on Android. | 1.0.0 |\n| **`link`** | string | Deep link from the notification. Only available on Android. | 1.0.0 |\n| **`group`** | string | Set the group identifier for notification grouping. Only available on Android. Works like `threadIdentifier` on iOS. | 1.0.0 |\n| **`groupSummary`** | boolean | Designate this notification as the summary for an associated `group`. Only available on Android. | 1.0.0 |\n\n\n#### Channel","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":1038,"to":1056}}}}],["f16118d5-3414-4847-a327-2f2f98fb77a0",{"pageContent":"| Prop | Type | Description | Default | Since |\n| ----------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ----- |\n| **`id`** | string | The channel identifier. | | 1.0.0 |\n| **`name`** | string | The human-friendly name of this channel (presented to the user). | | 1.0.0 |\n| **`description`** | string | The description of this channel (presented to the user). | | 1.0.0 |\n| **`sound`** | string | The sound that should be played for notifications posted to this channel. Notification channels with an importance of at least `3` should have a sound. The file name of a sound file should be specified relative to the android app `res/raw` directory. | | 1.0.0 |\n| **`importance`** | Importance | The level of interruption for notifications posted to this channel. | `3` | 1.0.0 |\n| **`visibility`** | Visibility | The visibility of notifications posted to this channel. This setting is for whether notifications posted to this channel appear on the lockscreen or not, and if so, whether they appear in a redacted form. | | 1.0.0 |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":1058,"to":1065}}}}],["ed2be022-e173-491e-b1ca-a16c6f2cf642",{"pageContent":"| **`lights`** | boolean | Whether notifications posted to this channel should display notification lights, on devices that support it. | | 1.0.0 |\n| **`lightColor`** | string | The light color for notifications posted to this channel. Only supported if lights are enabled on this channel and the device supports it. Supported color formats are `#RRGGBB` and `#RRGGBBAA`. | | 1.0.0 |\n| **`vibration`** | boolean | Whether notifications posted to this channel should vibrate. | | 1.0.0 |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":1066,"to":1068}}}}],["48e66513-111c-491b-9c95-b16529a5447c",{"pageContent":"#### ListChannelsResult\n\n| Prop | Type | Description | Since |\n| -------------- | ---------------------- | --------------------------------------------- | ----- |\n| **`channels`** | Channel[] | List of all the Channels created by your app. | 1.0.0 |\n\n\n#### PermissionStatus\n\n| Prop | Type | Description | Since |\n| ------------- | ----------------------------------------------------------- | -------------------------------------------- | ----- |\n| **`receive`** | PermissionState | Permission state of receiving notifications. | 1.0.0 |\n\n\n#### Token\n\n| Prop | Type | Description | Since |\n| ----------- | ------------------- | ------------------------------------------------------------------------ | ----- |\n| **`value`** | string | On iOS it contains the APNS token. On Android it contains the FCM token. | 1.0.0 |\n\n\n#### RegistrationError\n\n| Prop | Type | Description | Since |\n| ----------- | ------------------- | -------------------------------------------------- | ----- |\n| **`error`** | string | Error message describing the registration failure. | 4.0.0 |\n\n\n#### ActionPerformed\n\n| Prop | Type | Description | Since |\n| ------------------ | ------------------------------------------------------------------------- | --------------------------------------------------------------- | ----- |\n| **`actionId`** | string | The action performed on the notification. | 1.0.0 |\n| **`inputValue`** | string | Text entered on the notification action. Only available on iOS. | 1.0.0 |\n| **`notification`** | PushNotificationSchema | The notification in which the action was performed. | 1.0.0 |\n\n\n### Type Aliases\n\n\n#### Importance\n\nThe importance level. For more details, see the [Android Developer Docs](https://developer.android.com/reference/android/app/NotificationManager#IMPORTANCE_DEFAULT)\n\n1 | 2 | 3 | 4 | 5\n\n\n#### Visibility\n\nThe notification visibility. For more details, see the [Android Developer Docs](https://developer.android.com/reference/androidx/core/app/NotificationCompat#VISIBILITY_PRIVATE)\n\n-1 | 0 | 1\n\n\n#### PermissionState\n\n'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'\n\n\n# plumb5-sdk","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/plumb5_IONIC-CAPACITOR-SDK.md","loc":{"lines":{"from":1071,"to":1130}}}}],["2e79d0cb-7e71-412e-97f0-b7058aba3d04",{"pageContent":"


\n

HTTP

\n

@capacitor-community/http

\n

\n Capacitor community plugin for native HTTP requests, file download/uploads, and cookie management.\n

\n\n

\n \n \n \n
\n \n \n\n\n\n

\n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| ------------ | --------------------------------------------- | ----------------------------------------------- |\n| Max Lynch | [mlynch](https://github.com/mlynch) | [@maxlynch](https://twitter.com/maxlynch) |\n| Thomas Vidas | [thomasvidas](https://github.com/thomasvidas) | [@thomasvidas](https://twitter.com/thomasvidas) |\n\n## Installation\n\n```bash\nnpm install @capacitor-community/http\nnpx cap sync\n```\n\n## Maintence Mode\nThe next iteration of this plugin will be an [official plugin bundled with Capacitor 4.x](https://github.com/ionic-team/capacitor/issues/5145). In order for a smooth transition, this repo will be in maintence mode with no new features added until the plugin moves to the main [Capacitor Plugins repo](https://github.com/ionic-team/capacitor-plugins). In the meantime, if there *are* critical security bug fixes required, they will still be made to this plugin as a patch release.\n\n### Capacitor 2.x\n\nFor Capacitor 2.x projects, you will need to install a version less than 1.0.0. You can do that by specifying the version in your `package.json` or installing like this. The latest 2.x compatible version is `0.3.1`.\n\n```bash\nnpm install @capacitor-community/http@0.x\n```\n\n## Configuration\n\nIn most cases no configuration is required for this plugin.\nIf the Android application connects with use the self-signed certificates or without encryption, see [Network security configuration](https://developer.android.com/training/articles/security-config) article.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":1,"to":48}}}}],["1eeba167-1de3-4c68-822f-b07bb2f4c035",{"pageContent":"## Usage\n\nTo use the plugin while fully supporting the web version, import and use it like this:\n\n```typescript\nimport { Http } from '@capacitor-community/http';\n\n// Example of a GET request\nconst doGet = () => {\n const options = {\n url: 'https://example.com/my/api',\n headers: { 'X-Fake-Header': 'Max was here' },\n params: { size: 'XL' },\n };\n\n const response: HttpResponse = await Http.get(options);\n\n // or...\n // const response = await Http.request({ ...options, method: 'GET' })\n};\n\n// Example of a POST request. Note: data\n// can be passed as a raw JS Object (must be JSON serializable)\nconst doPost = () => {\n const options = {\n url: 'https://example.com/my/api',\n headers: { 'X-Fake-Header': 'Thomas was here' },\n data: { foo: 'bar', cool: true },\n };\n\n const response: HttpResponse = await Http.post(options);\n\n // or...\n // const response = await Http.request({ ...options, method: 'POST' })\n};\n\nconst setCookie = async () => {\n const options = {\n url: 'http://example.com',\n key: 'language',\n value: 'en',\n };\n\n await Http.setCookie(options);\n};\n\nconst deleteCookie = async () => {\n const options = {\n url: 'http://example.com',\n key: 'language',\n };\n\n await Http.deleteCookie(options);\n};\n\nconst clearCookies = async () => {\n await Http.clearCookies({ url: 'http://example.com' });\n};\n\nconst getCookies = async () => {\n const cookies: HttpCookie[] = await Http.getCookies({\n url: 'http://example.com',\n });\n};\n\nconst downloadFile = async () => {\n const options = {\n url: 'https://example.com/path/to/download.pdf',\n filePath: 'document.pdf',\n fileDirectory: Directory.Downloads,\n // Optional\n method: 'GET',\n };\n\n // Writes to local filesystem\n const response: HttpDownloadFileResult = await Http.downloadFile(options);\n\n // Then read the file\n if (response.path) {\n const read = await Filesystem.readFile({\n path: 'download.pdf',\n directory: Directory.Downloads,\n });\n }\n};\n\nconst uploadFile = async () => {\n const options = {\n url: 'https://example.com/path/to/upload.pdf',\n name: 'myFile',\n filePath: 'document.pdf',\n fileDirectory: FilesystemDirectory.Downloads,\n };\n\n const response: HttpUploadFileResult = await Http.uploadFile();\n};\n```\n\n## API Reference\n\nYou can view the API Reference generated by TypeDoc here: https://capacitor-community.github.io/http/docs/classes/web.httpweb.html\n\n### Third Party Cookies on iOS\n\nAs of iOS 14, you cannot use 3rd party cookies by default. There is an open issue on the Capacitor Core repo on properly patching in cookies on iOS. For now, you must specify a domain of for the cookie you are saving to properly save and send them via requests. You can also add the following lines to your `Info.plist` file to get better support for cookies on iOS. You can add up to 10 domains.\n\n```xml\nWKAppBoundDomains\n\n www.mydomain.com\n api.mydomain.com\n www.myothercooldomain.com\n\n```\n\n## Contributors ✨","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":50,"to":165}}}}],["7ac00119-8710-4877-be29-8cca118bd72d",{"pageContent":"## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":165,"to":167}}}}],["a75442b6-33da-4278-b5de-bd154b403bc3",{"pageContent":"\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":169,"to":184}}}}],["7b0700f7-71e2-49c8-82c5-70d33e54a1c5",{"pageContent":"\n \n \n \n \n \n \n \n \n \n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":185,"to":195}}}}],["79dd730e-0896-4635-be7c-f6ac63dbc6ff",{"pageContent":"\n \n \n \n \n \n \n \n
\"\"/
Daniel Sogl

📖
\"\"/
Priyank Patel

💻
\"\"/
Max Lynch

💻
\"\"/
Falk Schieber

👀
\"\"/
Andy Sousa

💻
\"\"/
Thomas Vidas

💻 🚧
\"\"/
Emily Curry

💻
\"\"/
graefenhain

💻
\"\"/
Lee Houghton

🐛
\"\"/
Felix Schwarzmeier

💻
\"\"/
Kamil Jakubus

💻
\"\"/
Joe Flateau

🐛
\"\"/
Frank608

🐛
\"\"/
Joel Nieto

🐛
\"\"/
ultimate-tester

💻
\"\"/
Adrian Sanchez

🐛
\"\"/
milanc

💻
\"\"/
herecoulbeyourname

💻
\"\"/
Landschaft

💻
\"\"/
stonewoodman

🐛
\"\"/
Héctor Cruz

🐛
\"\"/
Patrick Bußmann

💻
\"\"/
Jesper Bjerke

🐛
","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":196,"to":204}}}}],["1332d541-f8bb-46f0-9dc5-932e9d746e53",{"pageContent":"\n\n\n\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_http.md","loc":{"lines":{"from":206,"to":211}}}}],["30eca7a7-30ce-4baa-824c-02f72f8fd737",{"pageContent":"# mock-detector\n\nDetect mock provider location using android's native `isMock()` method.\nReturns state wether device is using mock location and current location.\n\n## Install\n\n```bash\nnpm install @periksa/cap-mock-detector\nnpx cap sync\n```\n\n## API\n\n\n\n* [`detectMock()`](#detectmock)\n\n\n\n\n\n\n### detectMock()\n\n```typescript\ndetectMock() => Promise\n```\n\n**Returns:** Promise<any>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Periksa-Solusi-Indonesia_Capacitor-Mock-Location-Detector.md","loc":{"lines":{"from":1,"to":34}}}}],["deb27aa8-b8b3-4064-bf3d-7908470f4c6a",{"pageContent":"# @nadlowebagentur/capacitor-sip-phone\n\nConnect to SIP phone line\n\n## Install\n\n```bash\nnpm install @nadlowebagentur/capacitor-sip-phone\nnpx cap sync\n```\n\n## API\n\n\n\n* [`initialize()`](#initialize)\n* [`login(...)`](#login)\n* [`logout()`](#logout)\n* [`call(...)`](#call)\n* [`acceptCall()`](#acceptcall)\n* [`hangUp()`](#hangup)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### initialize()\n\n```typescript\ninitialize() => Promise\n```\n\nInitialize plugin state\n\n--------------------\n\n\n### login(...)\n\n```typescript\nlogin(options: SipLoginOptions) => Promise\n```\n\nMake login to the SIP\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------- |\n| **`options`** | SipLoginOptions |\n\n--------------------\n\n\n### logout()\n\n```typescript\nlogout() => Promise\n```\n\nLogout & terminate account\n\n--------------------\n\n\n### call(...)\n\n```typescript\ncall(options: SipOutgoingCallOptions) => Promise\n```\n\nMake outgoing call\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------- |\n| **`options`** | SipOutgoingCallOptions |\n\n--------------------\n\n\n### acceptCall()\n\n```typescript\nacceptCall() => Promise\n```\n\nAccept incoming call\n\n--------------------\n\n\n### hangUp()\n\n```typescript\nhangUp() => Promise\n```\n\nTerminate current call\n\n--------------------\n\n\n### Interfaces\n\n\n#### SipLoginOptions\n\n| Prop | Type | Description |\n| --------------- | ------------------------------------ | -------------------------------- |\n| **`transport`** | 'TLS' \\| 'TCP' \\| 'UDP' | By default \"UDP\" |\n| **`domain`** | string | SIP domain address |\n| **`username`** | string | User login for authentication |\n| **`password`** | string | User password for authentication |\n\n\n#### SipOutgoingCallOptions\n\n| Prop | Type |\n| ------------- | ------------------- |\n| **`address`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nadlowebagentur_capacitor-sip-phone.md","loc":{"lines":{"from":1,"to":122}}}}],["548cf53f-4abf-42e7-9dcb-4fef24542169",{"pageContent":"# Capacitor Firebase Remote Config Plugin\n\nCapacitor community plugin for firebase remote config.\n\n## Installation\n\nTo use npm\n\n```bash\nnpm install @nadavhalfon/firebase-remote-config\n```\n\nTo use yarn\n\n```bash\nyarn add @nadavhalfon/firebase-remote-config\n```\n\nSync native files\n\n```bash\nnpx cap sync\n```\n\nOn iOS, no further steps are needed.\n\nOn Android, register the plugin in your main activity:\n\n```java\nimport com.getcapacitor.community.firebaserc.FirebaseRemoteConfig;\n\npublic class MainActivity extends BridgeActivity {\n\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(\n savedInstanceState,\n new ArrayList>() {\n {\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(FirebaseRemoteConfig.class);\n }\n }\n );\n }\n}\n\n```\n\n## Configuration\n\nDownload appropriate google-services.json or GoogleService-Info.plist and place\nit in the correct platform app directory.\n\n**For Android**: /android/app\n\n**For iOS**: /ios/App/App\n\n## Supported methods\n\n| Name | Android | iOS | Web |\n| :----------------- | :------ | :-- | :-- |\n| initializeFirebase | ✅ | ✅ | ✅ |\n| setDefaultConfig | ✅ | ✅ | ✅ |\n| initialize | ✅ | ✅ | ✅ |\n| fetch | ✅ | ✅ | ✅ |\n| activate | ✅ | ✅ | ✅ |\n| fetchAndActivate | ✅ | ✅ | ✅ |\n| getBoolean | ✅ | ✅ | ✅ |\n| getByteArray | ✅ | ✅ | ✅ |\n| getNumber | ✅ | ✅ | ✅ |\n| getString | ✅ | ✅ | ✅ |\n\n## Usage\n\n```typescript\n// Must import the package once to make sure the web support initializes\nimport \"@nadavhalfon/firebase-remote-config\";\n\nimport { Plugins } from \"@capacitor/core\";\n\nconst { FirebaseRemoteConfig } = Plugins;\n\n/**\n * This method will initialize firebase app if not yet initialized. Note that it\n * is safe to call but does nothing in iOS or Android as initialization is\n * automatic on load.\n *\n * @param firebase configs - from google-service.json or GoogleService-Info.plist\n * @returns void\n */\nFirebaseRemoteConfig.initializeFirebase({\n apiKey: \"...\",\n authDomain: \"...\",\n databaseURL: \"...\",\n projectId: \"...\",\n storageBucket: \"...\",\n messagingSenderId: \"...\",\n appId: \"...\",\n measurementId: \"...\",\n});\n\n/**\n * This method will set default remote config values. On Web, it will read from\n * the parameters give. On Android and iOS it will use the build in mechanisms\n * and ignore any parameters supplied.\n *\n * @param options - key/value params with default values\n * @returns void\n */\nFirebaseRemoteConfig.setDefaultConfig({\n has_sale: false,\n event_name: \"clearance_event\",\n});","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nadavhalfon_firebase-remote-config.md","loc":{"lines":{"from":1,"to":118}}}}],["ca462591-ab84-4411-8e95-a0aa771592bc",{"pageContent":"/**\n * This method will configure remote config object instance and set the minimum\n * fetch interval to allow for frequest refreshes.\n *\n * @param minimumFetchIntervalInSeconds - interval in seconds (default: 3600)\n * @returns void\n */\nFirebaseRemoteConfig.initialize({\n minimumFetchIntervalInSeconds: 3600,\n});\n\n/**\n * This method will execute fetch task to retrieve config\n * @param none\n * @returns void\n */\nFirebaseRemoteConfig.fetch();\n\n/**\n * This method will activate the fetched values making it available for your app\n *\n * @param none\n * @returns void\n */\nFirebaseRemoteConfig.activate();\n\n/**\n * This method will fetch and activate the values making it available for your\n * app\n *\n * @param none\n * @returns void\n */\nFirebaseRemoteConfig.fetchAndActivate();\n\n/**\n * This method will return the parameter value for a given key in boolean\n * @param key - key to obtain boolean value\n * @returns key - key used to obtain value\n * value - boolean value for a given key\n * source - Indicates that the source of value retrieved (default, remote, static)\n */\nFirebaseRemoteConfig.getBoolean({\n key: \"bool key\",\n});\n\n/**\n * This method will return the parameter value for a given key in byte array\n * @param key - key to obtain byte array value\n * @returns key - key used to obtain value\n * value - byte array value for a given key\n * source - Indicates that the source of value retrieved (default, remote, static)\n */\nFirebaseRemoteConfig.getByteArray({\n key: \"array key\",\n});\n\n/**\n * This method will return the parameter value for a given key in double\n * @param key - key to obtain double value\n * @returns key - key used to obtain value\n * value - double value for a given key\n * source - Indicates that the source of value retrieved (default, remote, static)\n */\nFirebaseRemoteConfig.getNumber({\n key: \"number key\",\n});\n\n/**\n * This method will return the parameter value for a given key in string\n * @param key - key to obtain string value\n * @returns key - key used to obtain value\n * value - string value for a given key\n * source - Indicates that the source of value retrieved (default, remote, static)\n */\nFirebaseRemoteConfig.getString({\n key: \"string key\",\n});\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nadavhalfon_firebase-remote-config.md","loc":{"lines":{"from":120,"to":198}}}}],["0d6d28a8-a573-496f-a567-5fe030248584",{"pageContent":"# usb-serial-plugin\n\nThis plugin can be used for reading data from other device over the usb channel\n\n## Install\n\n```bash\nnpm install usb-serial-plugin\nnpx cap sync\n```\n\n## API\n\n\n\n* [`usbAttachedDetached(...)`](#usbattacheddetached)\n* [`connectedDevices()`](#connecteddevices)\n* [`openSerial(...)`](#openserial)\n* [`closeSerial()`](#closeserial)\n* [`readSerial()`](#readserial)\n* [`writeSerial(...)`](#writeserial)\n* [`registerReadCall(...)`](#registerreadcall)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### usbAttachedDetached(...)\n\n```typescript\nusbAttachedDetached(callback: MyPluginCallback) => any\n```\n\n| Param | Type |\n| -------------- | ---------------------------------------------------------------------------------- |\n| **`callback`** | (data: UsbSerialResponse) => void |\n\n**Returns:** any\n\n--------------------\n\n\n### connectedDevices()\n\n```typescript\nconnectedDevices() => any\n```\n\n**Returns:** any\n\n--------------------\n\n\n### openSerial(...)\n\n```typescript\nopenSerial(options: UsbSerialOptions) => any\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------- |\n| **`options`** | UsbSerialOptions |\n\n**Returns:** any\n\n--------------------\n\n\n### closeSerial()\n\n```typescript\ncloseSerial() => any\n```\n\n**Returns:** any\n\n--------------------\n\n\n### readSerial()\n\n```typescript\nreadSerial() => any\n```\n\n**Returns:** any\n\n--------------------\n\n\n### writeSerial(...)\n\n```typescript\nwriteSerial(data: UsbSerialWriteOptions) => any\n```\n\n| Param | Type |\n| ---------- | ----------------------------------------------------------------------- |\n| **`data`** | UsbSerialWriteOptions |\n\n**Returns:** any\n\n--------------------\n\n\n### registerReadCall(...)\n\n```typescript\nregisterReadCall(callback: MyPluginCallback) => any\n```\n\n| Param | Type |\n| -------------- | ---------------------------------------------------------------------------------- |\n| **`callback`** | (data: UsbSerialResponse) => void |\n\n**Returns:** any\n\n--------------------\n\n\n### Interfaces\n\n\n#### UsbSerialResponse","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asad-96_capacitor-plugin-usb-serial.md","loc":{"lines":{"from":1,"to":126}}}}],["8b6f9e3d-58ec-47d1-b7d0-2e207d1330c7",{"pageContent":"**Returns:** any\n\n--------------------\n\n\n### Interfaces\n\n\n#### UsbSerialResponse\n\n| Prop | Type |\n| ------------- | --------------------------------------------------------- |\n| **`success`** | boolean |\n| **`error`** | UsbSerialError |\n| **`data`** | any |\n\n\n#### UsbSerialError\n\n| Prop | Type |\n| ------------- | ------------------- |\n| **`message`** | string |\n| **`cause`** | string |\n\n\n#### UsbSerialOptions\n\n| Prop | Type |\n| ------------------ | -------------------- |\n| **`deviceId`** | number |\n| **`portNum`** | number |\n| **`baudRate`** | number |\n| **`dataBits`** | number |\n| **`stopBits`** | number |\n| **`parity`** | number |\n| **`dtr`** | boolean |\n| **`rts`** | boolean |\n| **`sleepOnPause`** | boolean |\n\n\n#### UsbSerialWriteOptions\n\n| Prop | Type |\n| ---------- | ------------------- |\n| **`data`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asad-96_capacitor-plugin-usb-serial.md","loc":{"lines":{"from":126,"to":172}}}}],["349f2c4c-0747-411e-ac0a-d1dff5f354d6",{"pageContent":"# conekta-capacitor\nA Capacitor plugin for Conekta, that supports Capacitor 2.0\n\n## Supported platforms\nThe plugin supports **JS**, **Android** and **iOS** exposing the Conekta SDK functionalities. Here is the official [Conekta](https://developers.conekta.com/libraries) documentation for the SDK's.\n\n## Installation\n```\nnpm install -s conekta-capacitor\n```\nIf you are working on a framework like Quasar, the package should be installed in the Quasar project and installed again in the capacitor project (inside src-capacitor), so you could use the JS implementation within Quasar and the native version within Capacitor's project. Here is a [Quasar example](https://github.com/RobertoLangarica/conekta-capacitor/tree/master/examples/Quasar/quasar-capacitor2)\n\n*Note:* Remember that after installation an `npx cap sync` call could be needed.\n\n### Extra steps for Android\nAs per the [Capacitor docs](https://capacitorjs.com/docs/plugins/android#export-to-capacitor) the plugin should be added to the app MainActivity.\n\nThe next line should be added to your app `MainActivity`\n```javascript\nadd(com.villavanilla.conekta.capacitor.ConektaPlugin.class);\n```\n\nThe full code should look something like this:\n```\n// Other imports...\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(com.villavanilla.conekta.capacitor.ConektaPlugin.class);\n }});\n }\n}\n```\n\n\n## Usage\n\n```javascript\nimport { Plugins } from '@capacitor/core'\nconst { ConektaPlugin } = Plugins\nimport 'conekta-capacitor' /* This last import import is needed for web support */\n\n/* Your code goes here */\n```\n\nExposed methods:\n```javascript\nConektaPlugin.setPublicKey({ key: string }): Promise;\n\nConektaPlugin.getPublicKey(): Promise<{ key: string }>;\n\nConektaPlugin.setLanguage({ language: string }): Promise;\n\nConektaPlugin.getLanguage(): Promise<{ language: string }>;\n\nConektaPlugin.createToken({ number: string, name: string, cvc: string, exp_month: string, exp_year: string }): Promise;\n\nConektaPlugin.setApiVersion({ api_version: string }): Promise;\n\nConektaPlugin.getApiVersion(): Promise<{ api_version: string }>;\n\nConektaPlugin.deviceFingerPrint(): Promise<{ fingerprint: string }>\n\nConektaPlugin.getBaseUri(): Promise<{ uri: string }>;\n```\n\n### The most important action is the token creation\nHere is an example:\n\n```javascript\nimport { Plugins } from '@capacitor/core'\nconst { ConektaPlugin } = Plugins\nimport 'conekta-capacitor'\n\n/**Some function body**/\nConektaPlugin.setPluginKey({key:\"[YOUR_CONEKTA_KEY]\"})\nlet card = {\n number: 'Card number',\n name: 'Card name',\n cvc: 'Card CVC',\n exp_month: 'Card expiration month',\n exp_year: 'Card expiration year',\n }","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RobertoLangarica_conekta-capacitor.md","loc":{"lines":{"from":1,"to":90}}}}],["26b255d2-d0bb-44b6-945f-3b1949099349",{"pageContent":"try{\nlet result = await ConektaPlugin.createToken(card)\n/* Result schema\n{\n id:String,\n livemode:Boolean,\n object: String | 'token',\n used: boolean\n}\n*/\nconsole.log(`Here is your token: ${result.id}`)\n}catch(error){\n/* Error schema\n{\n code:String\n message:String,\n message_to_purchaser:String,\n object:\"error\",\n type:String,\n validation_error:String\n}\n*/\nconsole.log(error)\n}\n\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/RobertoLangarica_conekta-capacitor.md","loc":{"lines":{"from":92,"to":117}}}}],["61de846b-b0d0-421e-9b7a-fc3239870330",{"pageContent":"# zebra-printer\n\nconnect zebra printer via local IP\n\n## Install\n\n```bash\nnpm i zebra-printer-label\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`print(...)`](#print)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### print(...)\n\n```typescript\nprint(options: { ip: string; port: number; zpl: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------------- |\n| **`options`** | { ip: string; port: number; zpl: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/sashko687_zebra-printer.md","loc":{"lines":{"from":1,"to":53}}}}],["eeb2a523-542d-495c-a7c5-8f42d169be9c",{"pageContent":"# @smart-pro/smartzip\n\nIonic Capacitor plugin for unzip a file.\n\n## Install\n\n```bash\nnpm install @smart-pro/smartzip\nnpx cap sync\n```\n\n## API\n\n\n\n* [`unzip(...)`](#unzip)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### unzip(...)\n\n```typescript\nunzip(options: UnzipOptions) => Promise<{ result: boolean; }>\n```\n\nUnzip a zipPath file to destFolder.\nEvent: \"unzipProgress\"\nentry, entryNumber, total\n\n| Param | Type | Description |\n| ------------- | ----------------------------------------------------- | ----------------- |\n| **`options`** | UnzipOptions | options for unzip |\n\n**Returns:** Promise<{ result: boolean; }>\n\n--------------------\n\n\n### Interfaces\n\n\n#### UnzipOptions\n\n| Prop | Type | Description |\n| ---------------- | ------------------- | ------------------------- |\n| **`zipPath`** | string | Zip file's path |\n| **`destFolder`** | string | Destination folder's path |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/smartphone-pro_SmartZip.md","loc":{"lines":{"from":1,"to":53}}}}],["2e8217e3-5885-40ed-a460-0539499c7e42",{"pageContent":"


\n

Bluetooth Low Energy

\n

@capacitor-community/bluetooth-le

\n

\n Capacitor plugin for Bluetooth Low Energy \n

\n\n

\n \n \n \n
\n \n \n\n\n\n

\n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| ------------- | ----------------------------------- | ------ |\n| Patrick Wespi | [pwespi](https://github.com/pwespi) | |\n\n## Versions\n\n| Plugin | Capacitor | Documentation |\n| ------ | --------- | --------------------------------------------------------------------------------- |\n| 3.x | 5.x | [README](https://github.com/capacitor-community/bluetooth-le/blob/main/README.md) |\n| 2.x | 4.x | [README](https://github.com/capacitor-community/bluetooth-le/blob/2.x/README.md) |\n| 1.x | 3.x | [README](https://github.com/capacitor-community/bluetooth-le/blob/1.x/README.md) |\n| 0.x | 2.x | [README](https://github.com/capacitor-community/bluetooth-le/blob/0.x/README.md) |\n\n## Introduction\n\nThis is a Capacitor plugin for Bluetooth Low Energy. It supports the web, Android and iOS.\n\nThe goal is to support the same features on all platforms. Therefore the [Web Bluetooth API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API) is taken as a guidline for what features to implement.\n\nThis plugin only supports the central role of the Bluetooth Low Energy protocol. If you need the peripheral role, take a look a these plugins:\n\n- https://github.com/randdusing/cordova-plugin-bluetoothle\n- https://github.com/don/cordova-plugin-ble-peripheral\n\nFor support of Web Bluetooth in various browsers, see [implementation status](https://github.com/WebBluetoothCG/web-bluetooth/blob/main/implementation-status.md).","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":1,"to":46}}}}],["1c19bff7-fc7b-45ce-af81-93457482f14e",{"pageContent":"Below is an index of all the methods available.\n\n\n\n- [`initialize(...)`](#initialize)\n- [`isEnabled()`](#isenabled)\n- [`enable()`](#enable)\n- [`disable()`](#disable)\n- [`startEnabledNotifications(...)`](#startenablednotifications)\n- [`stopEnabledNotifications()`](#stopenablednotifications)\n- [`isLocationEnabled()`](#islocationenabled)\n- [`openLocationSettings()`](#openlocationsettings)\n- [`openBluetoothSettings()`](#openbluetoothsettings)\n- [`openAppSettings()`](#openappsettings)\n- [`setDisplayStrings(...)`](#setdisplaystrings)\n- [`requestDevice(...)`](#requestdevice)\n- [`requestLEScan(...)`](#requestlescan)\n- [`stopLEScan()`](#stoplescan)\n- [`getDevices(...)`](#getdevices)\n- [`getConnectedDevices(...)`](#getconnecteddevices)\n- [`connect(...)`](#connect)\n- [`createBond(...)`](#createbond)\n- [`isBonded(...)`](#isbonded)\n- [`disconnect(...)`](#disconnect)\n- [`getServices(...)`](#getservices)\n- [`discoverServices(...)`](#discoverservices)\n- [`getMtu(...)`](#getmtu)\n- [`requestConnectionPriority(...)`](#requestconnectionpriority)\n- [`readRssi(...)`](#readrssi)\n- [`read(...)`](#read)\n- [`write(...)`](#write)\n- [`writeWithoutResponse(...)`](#writewithoutresponse)\n- [`readDescriptor(...)`](#readdescriptor)\n- [`writeDescriptor(...)`](#writedescriptor)\n- [`startNotifications(...)`](#startnotifications)\n- [`stopNotifications(...)`](#stopnotifications)\n- [Interfaces](#interfaces)\n- [Enums](#enums)\n\n\n\nSee [Platform Support](#platform-support) for an overview of supported methods on Android, iOS and web.\n\n## Installation\n\n```\nnpm install @capacitor-community/bluetooth-le\nnpx cap sync\n```\n\n### iOS\n\nOn iOS, add the `NSBluetoothAlwaysUsageDescription` to `Info.plist`, otherwise the app will crash when trying to use Bluetooth (see [here](https://developer.apple.com/documentation/corebluetooth)).\n\nIf the app needs to use Bluetooth while it is in the background, you also have to add `bluetooth-central` to `UIBackgroundModes` (for details see [here](https://developer.apple.com/documentation/bundleresources/information_property_list/uibackgroundmodes)).\n\n`./ios/App/App/Info.plist`:\n\n```diff\n\n\n\n\n\tCFBundleDevelopmentRegion\n\ten\n ...\n+\tNSBluetoothAlwaysUsageDescription\n+\tUses Bluetooth to connect and interact with peripheral BLE devices.\n+\tUIBackgroundModes\n+\t\n+\t\tbluetooth-central\n+\t\n\n\n\n```\n\n**Note**: Bluetooth is **not** available in the iOS simulator. The `initialize` call will be rejected with an error \"BLE unsupported\". You have to test your app on a real device.\n\n### Android\n\nOn Android, no further steps are required to use the plugin (if you are using Capacitor 2, see [here](https://github.com/capacitor-community/bluetooth-le/blob/0.x/README.md#android)).\n\n#### (Optional) Android 12 Bluetooth permissions","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":48,"to":131}}}}],["7caa0d85-102f-4ef4-b7a1-55bbb4e1435a",{"pageContent":"#### (Optional) Android 12 Bluetooth permissions\n\nIf your app targets Android 12 (API level 31) or higher and your app doesn't use Bluetooth scan results to derive physical location information, you can strongly assert that your app doesn't derive physical location. This allows the app to scan for Bluetooth devices without asking for location permissions. See the [Android documentation](https://developer.android.com/guide/topics/connectivity/bluetooth/permissions#declare-android12-or-higher).\n\nThe following steps are required to scan for Bluetooth devices without location permission on Android 12 devices:\n\n- In `android/variables.gradle`, make sure `compileSdkVersion` and `targetSdkVersion` are at least 31 (changing those values can have other consequences on your app, so make sure you know what you're doing).\n- Make sure you have JDK 11+ (it is recommended to use JDK that comes with Android Studio).\n- In `android/app/src/main/AndroidManifest.xml`, add `android:exported=\"true\"` to your activity if not already added (setting [`android:exported`](https://developer.android.com/guide/topics/manifest/activity-element#exported) is required in apps targeting Android 12 and higher).\n- In `android/app/src/main/AndroidManifest.xml`, update the permissions:\n ```diff\n \n + \n + \n + \n ```\n- Set the `androidNeverForLocation` flag to `true` when initializing the `BleClient`.\n ```ts\n import { BleClient } from '@capacitor-community/bluetooth-le';\n await BleClient.initialize({ androidNeverForLocation: true });\n ```\n\n> [_Note_: If you include neverForLocation in your android:usesPermissionFlags, some BLE beacons are filtered from the scan results.](https://developer.android.com/guide/topics/connectivity/bluetooth/permissions#assert-never-for-location)\n\n## Configuration\n\nYou can configure the strings that are displayed in the device selection dialog on iOS and Android when using `requestDevice()`:\n\n`./capacitor.config.json`:\n\n```JSON\n{\n \"...\": \"other configuration\",\n \"plugins\": {\n \"BluetoothLe\": {\n \"displayStrings\": {\n \"scanning\": \"Am Scannen...\",\n \"cancel\": \"Abbrechen\",\n \"availableDevices\": \"Verfügbare Geräte\",\n \"noDeviceFound\": \"Kein Gerät gefunden\"\n }\n }\n }\n}\n```\n\nThe default values are:\n\n```JSON\n{\n \"plugins\": {\n \"BluetoothLe\": {\n \"displayStrings\": {\n \"scanning\": \"Scanning...\",\n \"cancel\": \"Cancel\",\n \"availableDevices\": \"Available devices\",\n \"noDeviceFound\": \"No device found\"\n }\n }\n }\n}\n```\n\nThe display strings can also be set at run-time using [`setDisplayStrings(...)`](#setdisplaystrings).\n\n## Usage","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":131,"to":198}}}}],["5a1024d0-c860-4a19-9dd6-3d9aa02b6fdf",{"pageContent":"The display strings can also be set at run-time using [`setDisplayStrings(...)`](#setdisplaystrings).\n\n## Usage\n\nIt is recommended to not use the plugin class directly. There is a wrapper class `BleClient` which makes events and method arguments easier to work with.\n\n```typescript\n// Import the wrapper class directly\nimport { BleClient } from '@capacitor-community/bluetooth-le';\n\n// DO NOT use this\nimport { BluetoothLe } from '@capacitor-community/bluetooth-le';\n```\n\nHere is an example of how to use the plugin. It shows how to read the heart rate from a BLE heart rate monitor such as the Polar H10.\n\n```typescript\nimport { BleClient, numbersToDataView, numberToUUID } from '@capacitor-community/bluetooth-le';\n\nconst HEART_RATE_SERVICE = '0000180d-0000-1000-8000-00805f9b34fb';\nconst HEART_RATE_MEASUREMENT_CHARACTERISTIC = '00002a37-0000-1000-8000-00805f9b34fb';\nconst BODY_SENSOR_LOCATION_CHARACTERISTIC = '00002a38-0000-1000-8000-00805f9b34fb';\nconst BATTERY_SERVICE = numberToUUID(0x180f);\nconst BATTERY_CHARACTERISTIC = numberToUUID(0x2a19);\nconst POLAR_PMD_SERVICE = 'fb005c80-02e7-f387-1cad-8acd2d8df0c8';\nconst POLAR_PMD_CONTROL_POINT = 'fb005c81-02e7-f387-1cad-8acd2d8df0c8';\n\nexport async function main(): Promise {\n try {\n await BleClient.initialize();\n\n const device = await BleClient.requestDevice({\n services: [HEART_RATE_SERVICE],\n optionalServices: [BATTERY_SERVICE, POLAR_PMD_SERVICE],\n });\n\n // connect to device, the onDisconnect callback is optional\n await BleClient.connect(device.deviceId, (deviceId) => onDisconnect(deviceId));\n console.log('connected to device', device);\n\n const result = await BleClient.read(device.deviceId, HEART_RATE_SERVICE, BODY_SENSOR_LOCATION_CHARACTERISTIC);\n console.log('body sensor location', result.getUint8(0));\n\n const battery = await BleClient.read(device.deviceId, BATTERY_SERVICE, BATTERY_CHARACTERISTIC);\n console.log('battery level', battery.getUint8(0));\n\n await BleClient.write(device.deviceId, POLAR_PMD_SERVICE, POLAR_PMD_CONTROL_POINT, numbersToDataView([1, 0]));\n console.log('written [1, 0] to control point');\n\n await BleClient.startNotifications(\n device.deviceId,\n HEART_RATE_SERVICE,\n HEART_RATE_MEASUREMENT_CHARACTERISTIC,\n (value) => {\n console.log('current heart rate', parseHeartRate(value));\n }\n );\n\n // disconnect after 10 sec\n setTimeout(async () => {\n await BleClient.stopNotifications(device.deviceId, HEART_RATE_SERVICE, HEART_RATE_MEASUREMENT_CHARACTERISTIC);\n await BleClient.disconnect(device.deviceId);\n console.log('disconnected from device', device);\n }, 10000);\n } catch (error) {\n console.error(error);\n }\n}\n\nfunction onDisconnect(deviceId: string): void {\n console.log(`device ${deviceId} disconnected`);\n}","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":198,"to":269}}}}],["c801df8a-b9f9-4dd8-9e98-0e9114db3ce0",{"pageContent":"function onDisconnect(deviceId: string): void {\n console.log(`device ${deviceId} disconnected`);\n}\n\nfunction parseHeartRate(value: DataView): number {\n const flags = value.getUint8(0);\n const rate16Bits = flags & 0x1;\n let heartRate: number;\n if (rate16Bits > 0) {\n heartRate = value.getUint16(1, true);\n } else {\n heartRate = value.getUint8(1);\n }\n return heartRate;\n}\n```\n\nAn example of using the scanning API:\n\n```typescript\nimport { BleClient, numberToUUID } from '@capacitor-community/bluetooth-le';\n\nconst HEART_RATE_SERVICE = numberToUUID(0x180d);\n\nexport async function scan(): Promise {\n try {\n await BleClient.initialize();\n\n await BleClient.requestLEScan(\n {\n services: [HEART_RATE_SERVICE],\n },\n (result) => {\n console.log('received new scan result', result);\n }\n );\n\n setTimeout(async () => {\n await BleClient.stopLEScan();\n console.log('stopped scanning');\n }, 5000);\n } catch (error) {\n console.error(error);\n }\n}\n```\n\n## Example Applications\n\n- [BLE Tester](https://github.com/sourcya/ble-tester) (Ionic/React)\n- [OpenGoPro](https://github.com/gopro/OpenGoPro/tree/main/demos/ionic/file_transfer) (Ionic/Angular)\n- [Quasar BLE](https://github.com/nunogois/quasar-ble) (Quasar/Vue)\n\n## Platform Support\n\n_Note_: web support depends on the browser, see [implementation status](https://github.com/WebBluetoothCG/web-bluetooth/blob/main/implementation-status.md).","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":269,"to":324}}}}],["8cbd6385-6c47-4204-8f58-94521d5b0215",{"pageContent":"| method | Android | iOS | web |\n| -------------------------------------------------------------- | :-----: | :-: | :-: |\n| [`initialize()`](#initialize) | ✅ | ✅ | ✅ |\n| [`isEnabled()`](#isenabled) | ✅ | ✅ | -- |\n| [`enable()`](#enable) | ✅ | ❌ | ❌ |\n| [`disable()`](#disable) | ✅ | ❌ | ❌ |\n| [`startEnabledNotifications(...)`](#startenablednotifications) | ✅ | ✅ | -- |\n| [`stopEnabledNotifications()`](#stopenablednotifications) | ✅ | ✅ | -- |\n| [`isLocationEnabled()`](#islocationenabled) | ✅ | ❌ | ❌ |\n| [`openLocationSettings()`](#openlocationsettings) | ✅ | ❌ | ❌ |\n| [`openBluetoothSettings()`](#openbluetoothsettings) | ✅ | ❌ | ❌ |\n| [`openAppSettings()`](#openappsettings) | ✅ | ✅ | ❌ |\n| [`setDisplayStrings(...)`](#setdisplaystrings) | ✅ | ✅ | -- |\n| [`requestDevice(...)`](#requestdevice) | ✅ | ✅ | ✅ |\n| [`requestLEScan(...)`](#requestlescan) | ✅ | ✅ | 🚩 |\n| [`stopLEScan()`](#stoplescan) | ✅ | ✅ | 🚩 |\n| [`getDevices(...)`](#getdevices) | ✅ | ✅ | 🚩 |\n| [`getConnectedDevices(...)`](#getconnecteddevices) | ✅ | ✅ | 🚩 |\n| [`connect(...)`](#connect) | ✅ | ✅ | ✅ |\n| [`createBond(...)`](#createbond) | ✅ | ❌ | ❌ |\n| [`isBonded(...)`](#isbonded) | ✅ | ❌ | ❌ |\n| [`disconnect(...)`](#disconnect) | ✅ | ✅ | ✅ |\n| [`getServices(...)`](#getservices) | ✅ | ✅ | ✅ |\n| [`discoverServices(...)`](#discoverservices) | ✅ | ✅ | ❌ |\n| [`getMtu(...)`](#getmtu) | ✅ | ✅ | ❌ |\n| [`requestConnectionPriority(...)`](#requestconnectionpriority) | ✅ | ❌ | ❌ |\n| [`readRssi(...)`](#readrssi) | ✅ | ✅ | ❌ |\n| [`read(...)`](#read) | ✅ | ✅ | ✅ |\n| [`write(...)`](#write) | ✅ | ✅ | ✅ |\n| [`readDescriptor(...)`](#read) | ✅ | ✅ | ✅ |\n| [`writeDescriptor(...)`](#write) | ✅ | ✅ | ✅ |\n| [`writeWithoutResponse(...)`](#writewithoutresponse) | ✅ | ✅ | ✅ |\n| [`startNotifications(...)`](#startnotifications) | ✅ | ✅ | ✅ |\n| [`stopNotifications(...)`](#stopnotifications) | ✅ | ✅ | ✅ |\n\n#### Legend","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":326,"to":361}}}}],["2efe5bc4-8ea2-44a9-a7ce-200d85476494",{"pageContent":"#### Legend\n\n- ✅ supported\n- ❌ not supported (throws an `unavailable` error)\n- 🚩 behind a flag in Chrome (see [implementation status](https://github.com/WebBluetoothCG/web-bluetooth/blob/main/implementation-status.md))\n- -- not supported, but does not throw an error\n\n## API\n\n\n\n\n### initialize(...)\n\n```typescript\ninitialize(options?: InitializeOptions | undefined) => Promise\n```\n\nInitialize Bluetooth Low Energy (BLE). If it fails, BLE might be unavailable on this device.\nOn **Android** it will ask for the location permission. On **iOS** it will ask for the Bluetooth permission.\nFor an example, see [usage](#usage).\n\n| Param | Type |\n| ------------- | --------------------------------------------------------------- |\n| **`options`** | InitializeOptions |\n\n---\n\n### isEnabled()\n\n```typescript\nisEnabled() => Promise\n```\n\nReports whether Bluetooth is enabled on this device.\nAlways returns `true` on **web**.\n\n**Returns:** Promise<boolean>\n\n---\n\n### enable()\n\n```typescript\nenable() => Promise\n```\n\nEnable Bluetooth.\nOnly available on **Android**.\n_deprecated_ See https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#enable()\n\n---\n\n### disable()\n\n```typescript\ndisable() => Promise\n```\n\nDisable Bluetooth.\nOnly available on **Android**.\n_deprecated_ See https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#disable()\n\n---\n\n### startEnabledNotifications(...)\n\n```typescript\nstartEnabledNotifications(callback: (value: boolean) => void) => Promise\n```\n\nRegister a callback function that will be invoked when Bluetooth is enabled (true) or disabled (false) on this device.\nNot available on **web** (the callback will never be invoked).\n\n| Param | Type | Description |\n| -------------- | ---------------------------------------- | ---------------------------------------------------------- |\n| **`callback`** | (value: boolean) => void | Callback function to use when the Bluetooth state changes. |\n\n---\n\n### stopEnabledNotifications()\n\n```typescript\nstopEnabledNotifications() => Promise\n```\n\nStop the enabled notifications registered with `startEnabledNotifications`.\n\n---\n\n### isLocationEnabled()\n\n```typescript\nisLocationEnabled() => Promise\n```\n\nReports whether Location Services are enabled on this device.\nOnly available on **Android**.\n\n**Returns:** Promise<boolean>\n\n---\n\n### openLocationSettings()\n\n```typescript\nopenLocationSettings() => Promise\n```\n\nOpen Location settings.\nOnly available on **Android**.\n\n---\n\n### openBluetoothSettings()\n\n```typescript\nopenBluetoothSettings() => Promise\n```\n\nOpen Bluetooth settings.\nOnly available on **Android**.\n\n---\n\n### openAppSettings()","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":361,"to":486}}}}],["232b4528-60f9-43a4-a426-4ac4991d3441",{"pageContent":"Open Bluetooth settings.\nOnly available on **Android**.\n\n---\n\n### openAppSettings()\n\n```typescript\nopenAppSettings() => Promise\n```\n\nOpen App settings.\nNot available on **web**.\nOn **iOS** when a user declines the request to use Bluetooth on the first call of `initialize`, it is not possible\nto request for Bluetooth again from within the app. In this case Bluetooth has to be enabled in the app settings\nfor the app to be able use it.\n\n---\n\n### setDisplayStrings(...)\n\n```typescript\nsetDisplayStrings(displayStrings: DisplayStrings) => Promise\n```\n\nSet the strings that are displayed in the `requestDevice` dialog.\n\n| Param | Type |\n| -------------------- | --------------------------------------------------------- |\n| **`displayStrings`** | DisplayStrings |\n\n---\n\n### requestDevice(...)\n\n```typescript\nrequestDevice(options?: RequestBleDeviceOptions | undefined) => Promise\n```\n\nRequest a peripheral BLE device to interact with. This will scan for available devices according to the filters in the options and show a dialog to pick a device.\nFor an example, see [usage](#usage).\n\n| Param | Type | Description |\n| ------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------- |\n| **`options`** | RequestBleDeviceOptions | Device filters, see [RequestBleDeviceOptions](#RequestBleDeviceOptions) |\n\n**Returns:** Promise<BleDevice>\n\n---\n\n### requestLEScan(...)\n\n```typescript\nrequestLEScan(options: RequestBleDeviceOptions, callback: (result: ScanResult) => void) => Promise\n```\n\nStart scanning for BLE devices to interact with according to the filters in the options. The callback will be invoked on each device that is found.\nScanning will continue until `stopLEScan` is called. For an example, see [usage](#usage).\n**Note**: Use with care on **web** platform, the required API is still behind a flag in most browsers.\n\n| Param | Type |\n| -------------- | --------------------------------------------------------------------------- |\n| **`options`** | RequestBleDeviceOptions |\n| **`callback`** | (result: ScanResult) => void |\n\n---\n\n### stopLEScan()\n\n```typescript\nstopLEScan() => Promise\n```\n\nStop scanning for BLE devices. For an example, see [usage](#usage).\n\n---\n\n### getDevices(...)\n\n```typescript\ngetDevices(deviceIds: string[]) => Promise\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":486,"to":567}}}}],["181e9c47-7009-4edf-8f1e-c95722482fdb",{"pageContent":"---\n\n### getDevices(...)\n\n```typescript\ngetDevices(deviceIds: string[]) => Promise\n```\n\nOn iOS and web, if you want to connect to a previously connected device without scanning first, you can use `getDevice`.\nUses [retrievePeripherals](https://developer.apple.com/documentation/corebluetooth/cbcentralmanager/1519127-retrieveperipherals) on iOS and\n[getDevices](https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth/getDevices) on web.\nOn Android, you can directly connect to the device with the deviceId.\n\n| Param | Type | Description |\n| --------------- | --------------------- | ------------------------------------------------------- |\n| **`deviceIds`** | string[] | List of device IDs, e.g. saved from a previous app run. |\n\n**Returns:** Promise<BleDevice[]>\n\n---\n\n### getConnectedDevices(...)\n\n```typescript\ngetConnectedDevices(services: string[]) => Promise\n```\n\nGet a list of currently connected devices.\nUses [retrieveConnectedPeripherals](https://developer.apple.com/documentation/corebluetooth/cbcentralmanager/1518924-retrieveconnectedperipherals) on iOS,\n[getConnectedDevices]() on Android\nand [getDevices](https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth/getDevices) on web.\n\n| Param | Type | Description |\n| -------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| **`services`** | string[] | List of services to filter the devices by. If no service is specified, no devices will be returned. Only applies to iOS. |\n\n**Returns:** Promise<BleDevice[]>\n\n---\n\n### connect(...)\n\n```typescript\nconnect(deviceId: string, onDisconnect?: ((deviceId: string) => void) | undefined, options?: TimeoutOptions | undefined) => Promise\n```\n\nConnect to a peripheral BLE device. For an example, see [usage](#usage).","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":567,"to":613}}}}],["1efaf75a-7ef0-4a83-8636-9e237754cbf8",{"pageContent":"Connect to a peripheral BLE device. For an example, see [usage](#usage).\n\n| Param | Type | Description |\n| ------------------ | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`onDisconnect`** | ((deviceId: string) => void) | Optional disconnect callback function that will be used when the device disconnects |\n| **`options`** | TimeoutOptions | Options for plugin call |\n\n---\n\n### createBond(...)\n\n```typescript\ncreateBond(deviceId: string) => Promise\n```\n\nCreate a bond with a peripheral BLE device.\nOnly available on **Android**. On iOS bonding is handled by the OS.\n\n| Param | Type | Description |\n| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n\n---\n\n### isBonded(...)\n\n```typescript\nisBonded(deviceId: string) => Promise\n```\n\nReport whether a peripheral BLE device is bonded.\nOnly available on **Android**. On iOS bonding is handled by the OS.\n\n| Param | Type | Description |\n| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n\n**Returns:** Promise<boolean>\n\n---\n\n### disconnect(...)\n\n```typescript\ndisconnect(deviceId: string) => Promise\n```\n\nDisconnect from a peripheral BLE device. For an example, see [usage](#usage).\n\n| Param | Type | Description |\n| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n\n---","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":613,"to":667}}}}],["802712c8-0991-4110-9048-1217d85ae29e",{"pageContent":"---\n\n### getServices(...)\n\n```typescript\ngetServices(deviceId: string) => Promise\n```\n\nGet services, characteristics and descriptors of a device.\n\n| Param | Type | Description |\n| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n\n**Returns:** Promise<BleService[]>\n\n---\n\n### discoverServices(...)\n\n```typescript\ndiscoverServices(deviceId: string) => Promise\n```\n\nDiscover services, characteristics and descriptors of a device.\nYou only need this method if your peripheral device changes its services and characteristics at runtime.\nIf the discovery was successful, the remote services can be retrieved using the getServices function.\nNot available on **web**.\n\n| Param | Type | Description |\n| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n\n---\n\n### getMtu(...)\n\n```typescript\ngetMtu(deviceId: string) => Promise\n```\n\nGet the MTU of a connected device. Note that the maximum write value length is 3 bytes less than the MTU.\nNot available on **web**.\n\n| Param | Type | Description |\n| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n\n**Returns:** Promise<number>\n\n---\n\n### requestConnectionPriority(...)\n\n```typescript\nrequestConnectionPriority(deviceId: string, connectionPriority: ConnectionPriority) => Promise\n```\n\nRequest a connection parameter update.\nOnly available on **Android**. https://developer.android.com/reference/android/bluetooth/BluetoothGatt#requestConnectionPriority(int)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":667,"to":726}}}}],["460c934e-8814-4911-9cf6-1498ea0b6a48",{"pageContent":"| Param | Type | Description |\n| ------------------------ | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`connectionPriority`** | ConnectionPriority | Request a specific connection priority. See [ConnectionPriority](#connectionpriority) |\n\n---\n\n### readRssi(...)\n\n```typescript\nreadRssi(deviceId: string) => Promise\n```\n\nRead the RSSI value of a connected device.\nNot available on **web**.\n\n| Param | Type | Description |\n| -------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n\n**Returns:** Promise<number>\n\n---\n\n### read(...)\n\n```typescript\nread(deviceId: string, service: string, characteristic: string, options?: TimeoutOptions | undefined) => Promise\n```\n\nRead the value of a characteristic. For an example, see [usage](#usage).\n\n| Param | Type | Description |\n| -------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`service`** | string | UUID of the service (see [UUID format](#uuid-format)) |\n| **`characteristic`** | string | UUID of the characteristic (see [UUID format](#uuid-format)) |\n| **`options`** | TimeoutOptions | Options for plugin call |\n\n**Returns:** Promise<DataView>\n\n---\n\n### write(...)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":728,"to":771}}}}],["9ae620f1-ab6a-40d0-aaff-ca6b41e7509c",{"pageContent":"**Returns:** Promise<DataView>\n\n---\n\n### write(...)\n\n```typescript\nwrite(deviceId: string, service: string, characteristic: string, value: DataView, options?: TimeoutOptions | undefined) => Promise\n```\n\nWrite a value to a characteristic. For an example, see [usage](#usage).\n\n| Param | Type | Description |\n| -------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`service`** | string | UUID of the service (see [UUID format](#uuid-format)) |\n| **`characteristic`** | string | UUID of the characteristic (see [UUID format](#uuid-format)) |\n| **`value`** | DataView | The value to write as a DataView. To create a DataView from an array of numbers, there is a helper function, e.g. numbersToDataView([1, 0]) |\n| **`options`** | TimeoutOptions | Options for plugin call |\n\n---\n\n### writeWithoutResponse(...)\n\n```typescript\nwriteWithoutResponse(deviceId: string, service: string, characteristic: string, value: DataView, options?: TimeoutOptions | undefined) => Promise\n```\n\nWrite a value to a characteristic without waiting for a response.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":771,"to":799}}}}],["c2d62b99-8805-4404-98d0-b4d2b0c2ff0e",{"pageContent":"Write a value to a characteristic without waiting for a response.\n\n| Param | Type | Description |\n| -------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`service`** | string | UUID of the service (see [UUID format](#uuid-format)) |\n| **`characteristic`** | string | UUID of the characteristic (see [UUID format](#uuid-format)) |\n| **`value`** | DataView | The value to write as a DataView. To create a DataView from an array of numbers, there is a helper function, e.g. numbersToDataView([1, 0]) |\n| **`options`** | TimeoutOptions | Options for plugin call |\n\n---\n\n### readDescriptor(...)\n\n```typescript\nreadDescriptor(deviceId: string, service: string, characteristic: string, descriptor: string, options?: TimeoutOptions | undefined) => Promise\n```\n\nRead the value of a descriptor.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":799,"to":817}}}}],["8126a424-fde7-420a-a1c0-d1d419bbc41c",{"pageContent":"Read the value of a descriptor.\n\n| Param | Type | Description |\n| -------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`service`** | string | UUID of the service (see [UUID format](#uuid-format)) |\n| **`characteristic`** | string | UUID of the characteristic (see [UUID format](#uuid-format)) |\n| **`descriptor`** | string | UUID of the descriptor (see [UUID format](#uuid-format)) |\n| **`options`** | TimeoutOptions | Options for plugin call |\n\n**Returns:** Promise<DataView>\n\n---\n\n### writeDescriptor(...)\n\n```typescript\nwriteDescriptor(deviceId: string, service: string, characteristic: string, descriptor: string, value: DataView, options?: TimeoutOptions | undefined) => Promise\n```\n\nWrite a value to a descriptor.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":817,"to":837}}}}],["52c1a7ac-5616-41c1-84a4-18d8b8404892",{"pageContent":"Write a value to a descriptor.\n\n| Param | Type | Description |\n| -------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`service`** | string | UUID of the service (see [UUID format](#uuid-format)) |\n| **`characteristic`** | string | UUID of the characteristic (see [UUID format](#uuid-format)) |\n| **`descriptor`** | string | UUID of the descriptor (see [UUID format](#uuid-format)) |\n| **`value`** | DataView | The value to write as a DataView. To create a DataView from an array of numbers, there is a helper function, e.g. numbersToDataView([1, 0]) |\n| **`options`** | TimeoutOptions | Options for plugin call |\n\n---\n\n### startNotifications(...)\n\n```typescript\nstartNotifications(deviceId: string, service: string, characteristic: string, callback: (value: DataView) => void) => Promise\n```\n\nStart listening to changes of the value of a characteristic.\nNote that you should only start the notifications once per characteristic in your app and share the data and\nnot call `startNotifications` in every component that needs the data.\nFor an example, see [usage](#usage).","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":837,"to":859}}}}],["114211fb-8516-4fdb-8c6e-f956363c2632",{"pageContent":"| Param | Type | Description |\n| -------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`service`** | string | UUID of the service (see [UUID format](#uuid-format)) |\n| **`characteristic`** | string | UUID of the characteristic (see [UUID format](#uuid-format)) |\n| **`callback`** | (value: DataView) => void | Callback function to use when the value of the characteristic changes |\n\n---\n\n### stopNotifications(...)\n\n```typescript\nstopNotifications(deviceId: string, service: string, characteristic: string) => Promise\n```\n\nStop listening to the changes of the value of a characteristic. For an example, see [usage](#usage).\n\n| Param | Type | Description |\n| -------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | The ID of the device to use (obtained from [requestDevice](#requestDevice) or [requestLEScan](#requestLEScan)) |\n| **`service`** | string | UUID of the service (see [UUID format](#uuid-format)) |\n| **`characteristic`** | string | UUID of the characteristic (see [UUID format](#uuid-format)) |\n\n---\n\n### Interfaces\n\n#### InitializeOptions","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":861,"to":888}}}}],["3cb56375-0e08-49d3-bb51-98b92dc9746c",{"pageContent":"---\n\n### Interfaces\n\n#### InitializeOptions\n\n| Prop | Type | Description | Default |\n| ----------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ |\n| **`androidNeverForLocation`** | boolean | If your app doesn't use Bluetooth scan results to derive physical location information, you can strongly assert that your app doesn't derive physical location. (Android only) Requires adding 'neverForLocation' to AndroidManifest.xml https://developer.android.com/guide/topics/connectivity/bluetooth/permissions#assert-never-for-location | false |\n\n#### DisplayStrings\n\n| Prop | Type | Default | Since |\n| ---------------------- | ------------------- | -------------------------------- | ----- |\n| **`scanning`** | string | \"Scanning...\" | 0.0.1 |\n| **`cancel`** | string | \"Cancel\" | 0.0.1 |\n| **`availableDevices`** | string | \"Available devices\" | 0.0.1 |\n| **`noDeviceFound`** | string | \"No device found\" | 0.0.1 |\n\n#### BleDevice\n\n| Prop | Type | Description |\n| -------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`deviceId`** | string | ID of the device, which will be needed for further calls. On **Android** this is the BLE MAC address. On **iOS** and **web** it is an identifier. |\n| **`name`** | string | Name of the peripheral device. |\n| **`uuids`** | string[] | |\n\n#### RequestBleDeviceOptions","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":888,"to":915}}}}],["9173ded0-4a49-45b9-ae7f-10ebb6b0317b",{"pageContent":"#### RequestBleDeviceOptions\n\n| Prop | Type | Description |\n| ---------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`services`** | string[] | Filter devices by service UUIDs. UUIDs have to be specified as 128 bit UUID strings, e.g. ['0000180d-0000-1000-8000-00805f9b34fb'] There is a helper function to convert numbers to UUIDs. e.g. [numberToUUID(0x180f)]. (see [UUID format](#uuid-format)) |\n| **`name`** | string | Filter devices by name |\n| **`namePrefix`** | string | Filter devices by name prefix |\n| **`optionalServices`** | string[] | For **web**, all services that will be used have to be listed under services or optionalServices, e.g. [numberToUUID(0x180f)] (see [UUID format](#uuid-format)) |\n| **`allowDuplicates`** | boolean | Normally scans will discard the second and subsequent advertisements from a single device. If you need to receive them, set allowDuplicates to true (only applicable in `requestLEScan`). (default: false) |\n| **`scanMode`** | ScanMode | Android scan mode (default: ScanMode.SCAN_MODE_BALANCED) |\n\n#### ScanResult","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":915,"to":926}}}}],["8bc43cd0-abb9-4d90-a3ca-77f601c81da0",{"pageContent":"| Prop | Type | Description |\n| ---------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`device`** | BleDevice | The peripheral device that was found in the scan. **Android** and **web**: `device.name` is always identical to `localName`. **iOS**: `device.name` is identical to `localName` the first time a device is discovered, but after connecting `device.name` is the cached GAP name in subsequent scans. |\n| **`localName`** | string | The name of the peripheral device from the advertisement data. |\n| **`rssi`** | number | Received Signal Strength Indication. |\n| **`txPower`** | number | Transmit power in dBm. A value of 127 indicates that it is not available. |\n| **`manufacturerData`** | { [key: string]: DataView; } | Manufacturer data, key is a company identifier and value is the data. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":928,"to":934}}}}],["17198f74-4987-4c1f-a74a-48dc917efc70",{"pageContent":"| **`serviceData`** | { [key: string]: DataView; } | Service data, key is a service UUID and value is the data. |\n| **`uuids`** | string[] | Advertised services. |\n| **`rawAdvertisement`** | DataView | Raw advertisement data (**Android** only). |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":935,"to":937}}}}],["cc6c7b20-a5ae-4afd-bce2-7f9b01517165",{"pageContent":"#### DataView\n\n| Prop | Type |\n| ---------------- | --------------------------------------------------- |\n| **`buffer`** | ArrayBuffer |\n| **`byteLength`** | number |\n| **`byteOffset`** | number |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":939,"to":945}}}}],["6e07f489-2697-4d2d-a38d-dfc4736ed259",{"pageContent":"| Method | Signature | Description |\n| -------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **getFloat32** | (byteOffset: number, littleEndian?: boolean \\| undefined) => number | Gets the Float32 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **getFloat64** | (byteOffset: number, littleEndian?: boolean \\| undefined) => number | Gets the Float64 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **getInt8** | (byteOffset: number) => number | Gets the Int8 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **getInt16** | (byteOffset: number, littleEndian?: boolean \\| undefined) => number | Gets the Int16 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **getInt32** | (byteOffset: number, littleEndian?: boolean \\| undefined) => number | Gets the Int32 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **getUint8** | (byteOffset: number) => number | Gets the Uint8 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **getUint16** | (byteOffset: number, littleEndian?: boolean \\| undefined) => number | Gets the Uint16 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **getUint32** | (byteOffset: number, littleEndian?: boolean \\| undefined) => number | Gets the Uint32 value at the specified byte offset from the start of the view. There is no alignment constraint; multi-byte values may be fetched from any offset. |\n| **setFloat32** | (byteOffset: number, value: number, littleEndian?: boolean \\| undefined) => void | Stores an Float32 value at the specified byte offset from the start of the view. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":947,"to":957}}}}],["0c4c8fbd-c6eb-4d77-be55-69a4944b248b",{"pageContent":"| **setFloat64** | (byteOffset: number, value: number, littleEndian?: boolean \\| undefined) => void | Stores an Float64 value at the specified byte offset from the start of the view. |\n| **setInt8** | (byteOffset: number, value: number) => void | Stores an Int8 value at the specified byte offset from the start of the view. |\n| **setInt16** | (byteOffset: number, value: number, littleEndian?: boolean \\| undefined) => void | Stores an Int16 value at the specified byte offset from the start of the view. |\n| **setInt32** | (byteOffset: number, value: number, littleEndian?: boolean \\| undefined) => void | Stores an Int32 value at the specified byte offset from the start of the view. |\n| **setUint8** | (byteOffset: number, value: number) => void | Stores an Uint8 value at the specified byte offset from the start of the view. |\n| **setUint16** | (byteOffset: number, value: number, littleEndian?: boolean \\| undefined) => void | Stores an Uint16 value at the specified byte offset from the start of the view. |\n| **setUint32** | (byteOffset: number, value: number, littleEndian?: boolean \\| undefined) => void | Stores an Uint32 value at the specified byte offset from the start of the view. |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":958,"to":964}}}}],["4213dd52-2780-4740-bf01-196a219664b2",{"pageContent":"#### ArrayBuffer\n\nRepresents a raw buffer of binary data, which is used to store data for the\ndifferent typed arrays. ArrayBuffers cannot be read from or written to directly,\nbut can be passed to a typed array or DataView Object to interpret the raw\nbuffer as needed.\n\n| Prop | Type | Description |\n| ---------------- | ------------------- | ------------------------------------------------------------------------------- |\n| **`byteLength`** | number | Read-only. The length of the ArrayBuffer (in bytes). |\n\n| Method | Signature | Description |\n| --------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------- |\n| **slice** | (begin: number, end?: number \\| undefined) => ArrayBuffer | Returns a section of an ArrayBuffer. |\n\n#### TimeoutOptions\n\n| Prop | Type | Description |\n| ------------- | ------------------- | ---------------------------------------------------------------------------------------------------------- |\n| **`timeout`** | number | Timeout in milliseconds for plugin call. Default is 10000 for `connect` and 5000 for other plugin methods. |\n\n#### BleService\n\n| Prop | Type |\n| --------------------- | -------------------------------- |\n| **`uuid`** | string |\n| **`characteristics`** | BleCharacteristic[] |\n\n#### BleCharacteristic\n\n| Prop | Type |\n| ----------------- | ----------------------------------------------------------------------------------- |\n| **`uuid`** | string |\n| **`properties`** | BleCharacteristicProperties |\n| **`descriptors`** | BleDescriptor[] |\n\n#### BleCharacteristicProperties","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":966,"to":1002}}}}],["a21f08cb-676f-4c3b-aa49-ab0943b7b6f1",{"pageContent":"#### BleCharacteristicProperties\n\n| Prop | Type |\n| -------------------------------- | -------------------- |\n| **`broadcast`** | boolean |\n| **`read`** | boolean |\n| **`writeWithoutResponse`** | boolean |\n| **`write`** | boolean |\n| **`notify`** | boolean |\n| **`indicate`** | boolean |\n| **`authenticatedSignedWrites`** | boolean |\n| **`reliableWrite`** | boolean |\n| **`writableAuxiliaries`** | boolean |\n| **`extendedProperties`** | boolean |\n| **`notifyEncryptionRequired`** | boolean |\n| **`indicateEncryptionRequired`** | boolean |\n\n#### BleDescriptor\n\n| Prop | Type |\n| ---------- | ------------------- |\n| **`uuid`** | string |\n\n### Enums\n\n#### ScanMode\n\n| Members | Value | Description |\n| --------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`SCAN_MODE_LOW_POWER`** | 0 | Perform Bluetooth LE scan in low power mode. This mode is enforced if the scanning application is not in foreground. https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_POWER |\n| **`SCAN_MODE_BALANCED`** | 1 | Perform Bluetooth LE scan in balanced power mode. (default) Scan results are returned at a rate that provides a good trade-off between scan frequency and power consumption. https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_BALANCED |\n| **`SCAN_MODE_LOW_LATENCY`** | 2 | Scan using highest duty cycle. It's recommended to only use this mode when the application is running in the foreground. https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_LATENCY |\n\n#### ConnectionPriority","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":1002,"to":1035}}}}],["c60f1ba1-359f-461c-909a-70770bada8dd",{"pageContent":"#### ConnectionPriority\n\n| Members | Value | Description |\n| ----------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **`CONNECTION_PRIORITY_BALANCED`** | 0 | Use the connection parameters recommended by the Bluetooth SIG. This is the default value if no connection parameter update is requested. https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_BALANCED |\n| **`CONNECTION_PRIORITY_HIGH`** | 1 | Request a high priority, low latency connection. An application should only request high priority connection parameters to transfer large amounts of data over LE quickly. Once the transfer is complete, the application should request CONNECTION_PRIORITY_BALANCED connection parameters to reduce energy use. https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_HIGH |\n| **`CONNECTION_PRIORITY_LOW_POWER`** | 2 | Request low power, reduced data rate connection parameters. https://developer.android.com/reference/android/bluetooth/BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER |\n\n\n\n### UUID format\n\nAll UUIDs have to be provided in 128 bit format as string, e.g. `'0000180d-0000-1000-8000-00805f9b34fb'`. There is a helper function to convert 16 bit UUID numbers to string:\n\n```typescript\nimport { numberToUUID } from '@capacitor-community/bluetooth-le';\n\nconst HEART_RATE_SERVICE = numberToUUID(0x180d);\n// '0000180d-0000-1000-8000-00805f9b34fb'\n```\n\n## Troubleshooting\n\n#### Connection fails on Android\n\nOn some Android devices `connect()` may fail when the device was connected before, even if the device is not actually connected.\nIn that case you should first call `disconnect()`, e.g.:","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":1035,"to":1061}}}}],["1c64020b-d556-4238-b4fd-338f5c16cc9d",{"pageContent":"```typesceript\nconst device = await BleClient.requestDevice({\n // ...\n});\n// ...\nawait BleClient.disconnect(device.deviceId);\nawait BleClient.connect(device.deviceId);\n```\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":1063,"to":1074}}}}],["d2f027b3-2f7d-47e0-951d-17b483f34ab2",{"pageContent":"\n\n\n\n \n \n \n \n \n \n \n \n \n \n ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":1076,"to":1090}}}}],["85c0a678-311f-4f24-a483-0305efff954d",{"pageContent":"\n \n \n \n \n \n \n \n
\"pwespi\"/
pwespi

💻 📖
\"Dennis
Dennis Ameling

💻
\"Johannes
Johannes la Poutre

📖 💻
\"Kasymbekov
Kasymbekov Sultanmyrza

💻
\"Mutasim
Mutasim Issa

📖
\"Marco
Marco Marche

💻
\"Johannes
Johannes Koch

💻
\"Johnny
Johnny Robeson

💻
\"Aadit
Aadit Olkar

💻
\"Yoann
Yoann N.

💻
\"Andy3189\"/
Andy3189

💻
","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":1090,"to":1098}}}}],["622b2274-d02b-42cb-99c8-8ce6d67a15e6",{"pageContent":"\n\n\n\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_bluetooth-le.md","loc":{"lines":{"from":1100,"to":1105}}}}],["89d63497-8514-4ece-9123-c56c1fb64e9e",{"pageContent":"# CleverPush Capacitor SDK\n\n## Documentation\n\nhttps://developers.cleverpush.com/docs/sdks/capacitor/setup","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/cleverpush_cleverpush-capacitor-sdk.md","loc":{"lines":{"from":1,"to":5}}}}],["c66c7bf2-01be-4fc5-87bb-bb2ec4ee4e5b",{"pageContent":"# Capacitor Plugins\n\nThis repository contains the official Capacitor plugins maintained by the Capacitor team. You can find more plugins in the [Capacitor Community](https://github.com/capacitor-community/).\n\n> ### :rotating_light: These plugins are for Capacitor 3 :rotating_light:\n>\n> Capacitor 2 core plugins are bundled with Capacitor itself.\n\n## Plugins","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jdonermeoracle_capacitor-plugins.md","loc":{"lines":{"from":1,"to":9}}}}],["6474fea4-4635-4af2-a30a-4701d5406c1f",{"pageContent":"| Package | Source | Version |\n| --- | --- | --- |\n| [`@capacitor/action-sheet`](https://capacitorjs.com/docs/v3/apis/action-sheet) | [`./action-sheet`](./action-sheet) | [![npm badge](https://img.shields.io/npm/v/@capacitor/action-sheet?style=flat-square)](https://www.npmjs.com/package/@capacitor/action-sheet)\n| [`@capacitor/app-launcher`](https://capacitorjs.com/docs/v3/apis/app-launcher) | [`./app-launcher`](./app-launcher) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app-launcher?style=flat-square)](https://www.npmjs.com/package/@capacitor/app-launcher)\n| [`@capacitor/app`](https://capacitorjs.com/docs/v3/apis/app) | [`./app`](./app) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app?style=flat-square)](https://www.npmjs.com/package/@capacitor/app)\n| [`@capacitor/browser`](https://capacitorjs.com/docs/v3/apis/browser) | [`./browser`](./browser) | [![npm badge](https://img.shields.io/npm/v/@capacitor/browser?style=flat-square)](https://www.npmjs.com/package/@capacitor/browser)\n| [`@capacitor/camera`](https://capacitorjs.com/docs/v3/apis/camera) | [`./camera`](./camera) | [![npm badge](https://img.shields.io/npm/v/@capacitor/camera?style=flat-square)](https://www.npmjs.com/package/@capacitor/camera)\n| [`@capacitor/clipboard`](https://capacitorjs.com/docs/v3/apis/clipboard) | [`./clipboard`](./clipboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/clipboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/clipboard)\n| [`@capacitor/device`](https://capacitorjs.com/docs/v3/apis/device) | [`./device`](./device) | [![npm badge](https://img.shields.io/npm/v/@capacitor/device?style=flat-square)](https://www.npmjs.com/package/@capacitor/device)\n| [`@capacitor/dialog`](https://capacitorjs.com/docs/v3/apis/dialog) | [`./dialog`](./dialog) | [![npm badge](https://img.shields.io/npm/v/@capacitor/dialog?style=flat-square)](https://www.npmjs.com/package/@capacitor/dialog)\n| [`@capacitor/filesystem`](https://capacitorjs.com/docs/v3/apis/filesystem) | [`./filesystem`](./filesystem) | [![npm badge](https://img.shields.io/npm/v/@capacitor/filesystem?style=flat-square)](https://www.npmjs.com/package/@capacitor/filesystem)\n| [`@capacitor/geolocation`](https://capacitorjs.com/docs/v3/apis/geolocation) | [`./geolocation`](./geolocation) | [![npm badge](https://img.shields.io/npm/v/@capacitor/geolocation?style=flat-square)](https://www.npmjs.com/package/@capacitor/geolocation)\n| [`@capacitor/haptics`](https://capacitorjs.com/docs/v3/apis/haptics) | [`./haptics`](./haptics) | [![npm badge](https://img.shields.io/npm/v/@capacitor/haptics?style=flat-square)](https://www.npmjs.com/package/@capacitor/haptics)\n| [`@capacitor/keyboard`](https://capacitorjs.com/docs/v3/apis/keyboard) | [`./keyboard`](./keyboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/keyboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/keyboard)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jdonermeoracle_capacitor-plugins.md","loc":{"lines":{"from":11,"to":24}}}}],["caceb8ba-841b-4ca1-9970-be98d91e8f51",{"pageContent":"| [`@capacitor/local-notifications`](https://capacitorjs.com/docs/v3/apis/local-notifications) | [`./local-notifications`](./local-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/local-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/local-notifications)\n| [`@capacitor/motion`](https://capacitorjs.com/docs/v3/apis/motion) | [`./motion`](./motion) | [![npm badge](https://img.shields.io/npm/v/@capacitor/motion?style=flat-square)](https://www.npmjs.com/package/@capacitor/motion)\n| [`@capacitor/network`](https://capacitorjs.com/docs/v3/apis/network) | [`./network`](./network) | [![npm badge](https://img.shields.io/npm/v/@capacitor/network?style=flat-square)](https://www.npmjs.com/package/@capacitor/network)\n| [`@capacitor/push-notifications`](https://capacitorjs.com/docs/v3/apis/push-notifications) | [`./push-notifications`](./push-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/push-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/push-notifications)\n| [`@capacitor/screen-reader`](https://capacitorjs.com/docs/v3/apis/screen-reader) | [`./screen-reader`](./screen-reader) | [![npm badge](https://img.shields.io/npm/v/@capacitor/screen-reader?style=flat-square)](https://www.npmjs.com/package/@capacitor/screen-reader)\n| [`@capacitor/share`](https://capacitorjs.com/docs/v3/apis/share) | [`./share`](./share) | [![npm badge](https://img.shields.io/npm/v/@capacitor/share?style=flat-square)](https://www.npmjs.com/package/@capacitor/share)\n| [`@capacitor/splash-screen`](https://capacitorjs.com/docs/v3/apis/splash-screen) | [`./splash-screen`](./splash-screen) | [![npm badge](https://img.shields.io/npm/v/@capacitor/splash-screen?style=flat-square)](https://www.npmjs.com/package/@capacitor/splash-screen)\n| [`@capacitor/status-bar`](https://capacitorjs.com/docs/v3/apis/status-bar) | [`./status-bar`](./status-bar) | [![npm badge](https://img.shields.io/npm/v/@capacitor/status-bar?style=flat-square)](https://www.npmjs.com/package/@capacitor/status-bar)\n| [`@capacitor/storage`](https://capacitorjs.com/docs/v3/apis/storage) | [`./storage`](./storage) | [![npm badge](https://img.shields.io/npm/v/@capacitor/storage?style=flat-square)](https://www.npmjs.com/package/@capacitor/storage)\n| [`@capacitor/text-zoom`](https://capacitorjs.com/docs/v3/apis/text-zoom) | [`./text-zoom`](./text-zoom) | [![npm badge](https://img.shields.io/npm/v/@capacitor/text-zoom?style=flat-square)](https://www.npmjs.com/package/@capacitor/text-zoom)\n| [`@capacitor/toast`](https://capacitorjs.com/docs/v3/apis/toast) | [`./toast`](./toast) | [![npm badge](https://img.shields.io/npm/v/@capacitor/toast?style=flat-square)](https://www.npmjs.com/package/@capacitor/toast)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jdonermeoracle_capacitor-plugins.md","loc":{"lines":{"from":25,"to":35}}}}],["5e19d3db-a0ee-40fc-a942-3eedb71b7452",{"pageContent":"## Contributing\n\nSee [`CONTRIBUTING.md`](./CONTRIBUTING.md).","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jdonermeoracle_capacitor-plugins.md","loc":{"lines":{"from":37,"to":39}}}}],["4c579344-4c95-4599-b4ca-ee052b9cb588",{"pageContent":"# capacitor-plugin-moonbounce\n\nA Capacitor plugin for the Moonbounce VPN library.\n\n## Install\n\n```bash\nnpm install capacitor-plugin-moonbounce\nnpx cap sync\n```\n\n## API\n\n\n\n* [`checkPermissions()`](#checkpermissions)\n* [`requestPermissions()`](#requestpermissions)\n* [`startVPN(...)`](#startvpn)\n* [`stopVPN()`](#stopvpn)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\n\n\n\n\n### checkPermissions()\n\n```typescript\ncheckPermissions() => Promise\n```\n\n**Returns:** Promise<PermissionStatus>\n\n--------------------\n\n\n### requestPermissions()\n\n```typescript\nrequestPermissions() => Promise\n```\n\n**Returns:** Promise<PermissionStatus>\n\n--------------------\n\n\n### startVPN(...)\n\n```typescript\nstartVPN(options: { serverIP: string; serverPort: number; disallowedApp: string; excludeIP: string; }) => Promise\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------ |\n| **`options`** | { serverIP: string; serverPort: number; disallowedApp: string; excludeIP: string; } |\n\n--------------------\n\n\n### stopVPN()\n\n```typescript\nstopVPN() => Promise\n```\n\n--------------------\n\n\n### Interfaces\n\n\n#### PermissionStatus\n\n| Prop | Type |\n| ------------------- | ----------------------------------------------------------- |\n| **`vpnConnection`** | PermissionState |\n\n\n### Type Aliases\n\n\n#### PermissionState\n\n'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/OperatorFoundation_capacitor-plugin-moonbounce.md","loc":{"lines":{"from":1,"to":89}}}}],["a6e4ff22-8e3a-4b3f-b658-989d526bb512",{"pageContent":"![Logo](https://mobile-api.s3.amazonaws.com/Extras/inloco-logo-medium.png)\n\nInloco Capacitor SDK\n===\n\n# Disclaimer\n\nThis plugin is a work in progress and we don't offer any official support yet. Currently it is intended to be used as a kickstarter for Ionic integrations.\n\n# Capacitor\n\nIn order to use this plugin into your Ionic app Capacitor must be integrated first. [Capacitor](https://capacitorjs.com/docs) is a cross-platform native runtime that makes it easy to build web apps that run natively on iOS, Android, and the web. Representing the next evolution of Hybrid apps, it provides a modern native container approach for teams who want to build web-first apps with full access to native SDKs when they need it. For the newest versions of Ionic CLI, Capacitor is the recommended tool to handle Native SDKs.\n\n> **Cordova vs Capacitor**\nIn this [article](https://ionicframework.com/resources/articles/capacitor-vs-cordova-modern-hybrid-app-development), you can find information about how Capacitor stacks up against Cordova as the preferred foundation for hybrid mobile apps.\n\n\n## Migrating your app to Capacitor\n\nCapacitor is [easily installed directly](https://capacitorjs.com/docs/getting-started/with-ionic) into any Ionic project (1.0-4.x+). The official documentation also provides a more detailed step-by-step [guide](https://capacitorjs.com/docs/cordova/migrating-from-cordova-to-capacitor) about how to migrate from Cordova to Capacitor. \n\n \n> **Migration Strategy**\nWe strongly recommend you to read the [Migration Strategy](https://capacitorjs.com/docs/cordova/migration-strategy) article first. This article list all consideration you must have before starting the migration. \n\n\n## Application Creation\n\nIt is necessary to register your **Application** [](https://www.notion.so/learning/concepts/applications)at our dashboard for **each** of your mobile app platforms. An Application contains an unique identifier, the **[App](https://docs.incognia.com/learning/concepts/identifiers/app-id) [Id](https://www.notion.so/learning/concepts/identifiers/app-id)**, which is required to initialize the Incognia SDK.\n\nTo create a new Application, go to the **[Applications](https://dash.inloco.ai/myapps)** page and select a platform on the `Add App`card.\n\n![application creation](https://mobile-api.s3.amazonaws.com/Extras/capacitor-doc-application-creation.png)\n\nFill the application name , package and privacy policy url , then click Add App.\n\n![add app](https://mobile-api.s3.amazonaws.com/Extras/capacitor-doc-add-app.png)\n\n> **Important**\nAs we don't support Ionic officially you will need to choose React Native as platform and, you will need to create an Application for Android and another for iOS.\n\n# SDK Integration\n\nAfter creating your Application, you can now start integrating the Incognia SDK. To do it, visit your applications page on the **[Inloco Platform](https://dash.inloco.ai/myapps)** and click on Integrate SDK.\n\n![Integration](https://mobile-api.s3.amazonaws.com/Extras/capacitor-doc-integration.png)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/In-Loco-Media_inloco-capacitor-plugin.md","loc":{"lines":{"from":1,"to":46}}}}],["4a63b223-c179-45d3-ac5e-cae2a0fd3afe",{"pageContent":"![Integration](https://mobile-api.s3.amazonaws.com/Extras/capacitor-doc-integration.png)\n\nTo successfully integrate the Incognia SDK into your company's Ionic app, follow the steps below.\n\n> **Capacitor is required**\nStarting from this part of the guide, it is assumed that your app have Capacitor already installed or the migration from Cordova was made.\n\n## Minimum requirements\n\nFirst, check out if you fulfill the SDK minimum requirements.\n\n| Requirements | Version | \n|----------|:-------------:|\n| Capacitor | 2 |\n| Minimum Android SDK version | API level 21 or above |\n| Android Support | v4 |\n| Google Play Services Ads | 12.+ |\n| Google Play Services Location | 12.+ |\n| Android WebView with Chrome | 50 or above |\n| XCode | 11 or above |\n| CocoaPods | 1.2.0 or higher |\n| Minimum iOS version | 11 or above |\n\n## Installing the module\n\nFrom the command line:\n\n```bash\nnpm install inloco-capacitor-plugin@0.1.1 --save\n```\n\n## Include the required Android permissions\n\nAdd the following `` tags inside the tag `` to your manifest file located at `path-to-your-app/android/app/src/main/AndroidManifest.xml`.\n\n```xml\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n```\n\n## Permissions on iOS\n\nTo prepare your app for requesting runtime permissions, you must add keys with purpose strings to your app's `Info.plist` file. The system displays your purpose strings in the authorization request dialogs. Configure the keys in Xcode with the following keys:\n\n| Key | Description | \n|----------|:-------------:|\n| NSLocationWhenInUseUsageDescription | Your app requests When In Use authorization or Always authorization. |\n| NSLocationAlwaysAndWhenInUseUsageDescription | Your app requests Always authorization. |\n| NSLocationAlwaysUsageDescription | Your app supports iOS 10 and earlier and requests Always authorization. |\n\n> **Important**\nYou must add the required keys to your app’s `Info.plist` file. If a required key isn’t present, authorization requests fail immediately.\n\n## Plugin Registration","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/In-Loco-Media_inloco-capacitor-plugin.md","loc":{"lines":{"from":46,"to":117}}}}],["bafb483a-2e59-4ef4-a611-a89703ab3870",{"pageContent":"## Plugin Registration\n\nIn Android it is required to register the Inloco plugin in order to Capacitor make it available in the WebView.\nRegister the plugin in your main Activity like this:\n\n```java\n//Other imports...\nimport com.inlocomedia.engage.InlocoEngage;\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Register the plugin\n this.init(savedInstanceState, new ArrayList>() {{\n add(InlocoEngage.class);\n }});\n }\n}\n```\n\n## Initialize the SDK\n\nThe Inloco SDK initialization relies on the presence of an `inloco.xml` file in the `app/src/main/res/values` directory in your Android project and an `InLocoOptions.plist` file in your iOS project.\n\nNow, in the method `initializeApp` of your main App component, initialize the Inloco SDK as shown below:\n\n```tsx\nimport { Component } from '@angular/core';\nimport { Platform } from '@ionic/angular';\nimport { InLoco } from 'inloco-capacitor-plugin';\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n styleUrls: ['app.component.scss']\n})\nexport class AppComponent {\n\t\n\tconstructor(private platform: Platform){\n this.initializeApp();\n }\n\n\tinitializeApp() {\n this.platform.ready().then(() => {\n InLoco.init();\n });\n }\n}\n```\n\nIf the SDK was initialized properly, the following lines should be printed on the native console logs when your app is executed:\n\n**Android**\n\n```bash\nI/InLocoMedia: In Loco Engage 5.x.x is running\nI/InLocoMedia: In Loco 5.x.x is running\nI/InLocoMedia: The installation identifier is: \n```\n\n**iOS**\n\n```bash\nInLoco-Engage-Sample - InLocoMedia: In Loco Location SDK v5.x.x is running.\nInLoco-Engage-Sample - InLocoMedia: In Loco Engage SDK v5.x.x is running.\nInLoco-Engage-Sample - InLocoMedia: This device identifier is .\n```\n\n> **Important**\nEvery time you perform a build (e.g. ionic build) that changes your web directory, you'll need to sync those changes down to your native projects:\n`npx cap sync`\n\n## Request runtime permissions\n\nThe steps above will enable the SDK, but your application will need to request the location permissions to the user on its own. You can do it using a library such as [Diagnostic](https://ionicframework.com/docs/native/diagnostic) as seen below:\n\n```tsx\n//...\nimport { Diagnostic } from '@ionic-native/diagnostic/ngx';\n\n@NgModule({\n //...\n providers: [\n //...\n Diagnostic,\n ]\n})\n```\n\n```tsx\nimport { Diagnostic } from '@ionic-native/diagnostic/ngx';\n//...\nconstructor(private diagnostic: Diagnostic) {\n\t//...\n}\n//Runtime permission request\nthis.diagnostic.isLocationAuthorized()\n .then((isAuthorized) => {\n if (!isAuthorized) {\n //Request is made base on platform and API version\n this.diagnostic.requestLocationAuthorization(this.diagnostic.locationAuthorizationMode.ALWAYS)\n .catch(e => console.error(e));\n }\n })\n .catch(e => console.error(e));\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/In-Loco-Media_inloco-capacitor-plugin.md","loc":{"lines":{"from":117,"to":224}}}}],["37c3eb6d-732c-4e57-9e2e-d6d7549cc8d8",{"pageContent":"Diagnostic implementation\nCheck [isLocationAuthorized](https://github.com/dpa99c/cordova-diagnostic-plugin#islocationauthorized) and [requestLocationAuthorization](https://github.com/dpa99c/cordova-diagnostic-plugin#requestlocationauthorization) documentation for more info.\n\n> **Attention** \nThe Incognia SDK makes use of Apple's Visits Location Service, which requires the **Always authorization**. Not being able to acquire this authorization may greatly reduce the frequency of location-based features. More about the Visits Location Service can be found here.\nIt is extremely important that the user is asked for location permissions and that the app has a relevant reason to do so.\n\n---\n\n## **Set and clear user ids**\n\nThe Incognia SDK automatically generates and synchronizes unique device IDs with the Incognia backend. However, your application and backend systems might **use your own User IDs**. Passing your User ID to the Incognia SDK allows for easier integration and control, as your User ID will be readily available as an alias.\n\n> **Attention**\nAn identifier is a piece of information that is associated with a unique user. While data such as e-mail and phone number are examples of identifiers, their use in the Incognia SDK is forbidden. Consider using non-personal information, such as UUIDs, when setting a User ID.\n\n### **Setting User IDs**\n\nThe Incognia SDK provides a User ID setter for passing this information when it is available in your app. This setting is persisted between sessions.\n\n```tsx\nInLoco.setUser(\"YOUR_USER_ID\");\n```\n\nSetting the User ID might trigger a network request to update the Incognia backend.\n\n### **Clearing User IDs**\n\nYou can also clear a previous set User ID using the following method:\n\n```tsx\nInLoco.clearUser();\n```\n\n> **Tips:** If your app uses authentication, it is recommended that the user information is passed during login, and cleared during logout.\n\n---\n\n# Secure new customers with address verification\n\nThrough network signals and device sensor data, our Address Verification feature analyzes location behavior to confirm if users actually live at the address provided during new customer onboarding. Learn how this features works.\n\n![Secure](https://mobile-api.s3.amazonaws.com/Extras/capacitor-doc-secure.png)\n\n![Address Verification](https://mobile-api.s3.amazonaws.com/Extras/capacitor-doc-av.png)\n\n## **Submitting user address using SDK**\n\nVisit your applications page on **[Inloco Platform](https://dash.inloco.ai/myapps)** and click on `Integrate anti-fraud` to begin.\n\n![https://gblobscdn.gitbook.com/assets%2F-M6pEqY5IXA2-iuPS9L_%2F-MCi1ctOYFsmeh5-VxLJ%2F-MCi26uOYAtUNQiZgaty%2Fdemo-3.gif?alt=media&token=91bf348f-7f5c-4a08-b704-2cd43d89c3bf](https://gblobscdn.gitbook.com/assets%2F-M6pEqY5IXA2-iuPS9L_%2F-MCi1ctOYFsmeh5-VxLJ%2F-MCi26uOYAtUNQiZgaty%2Fdemo-3.gif?alt=media&token=91bf348f-7f5c-4a08-b704-2cd43d89c3bf)\n\nIf you integrated the SDK through, you have already completed the `Location Permissions` and `User ID` steps:","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/In-Loco-Media_inloco-capacitor-plugin.md","loc":{"lines":{"from":226,"to":278}}}}],["cd2a3916-066e-44d7-a0cb-c1f45fa5201b",{"pageContent":"If you integrated the SDK through, you have already completed the `Location Permissions` and `User ID` steps:\n\n![https://gblobscdn.gitbook.com/assets%2F-M6pEqY5IXA2-iuPS9L_%2F-MCi-P3oJ3nGHir1Il9d%2F-MCi0xRxuH0Cg4-keUsc%2Fimage.png?alt=media&token=dca8ee13-39fd-4227-9093-a7b5ce54434d](https://gblobscdn.gitbook.com/assets%2F-M6pEqY5IXA2-iuPS9L_%2F-MCi-P3oJ3nGHir1Il9d%2F-MCi0xRxuH0Cg4-keUsc%2Fimage.png?alt=media&token=dca8ee13-39fd-4227-9093-a7b5ce54434d)\n\nSend the user's address to Incognia to validate if this address belongs to the informed user. To register an user address using Incognia SDK, you need to create an object for the address. Just follow the example below. 🏠\n\n```tsx\nvar address = {\n locale: LOCALE,\n countryName: COUNTRY_NAME,\n countryCode: COUNTRY_CODE,\n adminArea: ADMIN_AREA,\n subAdminArea: SUB_ADMIN_AREA,\n locality: LOCALITY,\n subLocality: SUB_LOCALITY,\n thoroughfare: THOROUGHFARE,\n subThoroughfare: SUB_THOROUGHFARE,\n postalCode: POSTAL_CODE\n};\n\n```\n\n| Field | Description | Example |\n|----------|:-------------:|-------------:|\n| locale | Refers to the Address Language. | \"pt_BR\" |\n| countryName | The country name. | \"Brasil\" |\n| countryCode | The country code. | \"BR\" |\n| adminArea | The state. | \"Pernambuco\" |\n| subAdminArea | The country city. | \"Recife\" |\n| locality | The city. | \"Recife\" |\n| subLocality | The city neighborhood. | \"Boa Viagem\" |\n| thoroughfare | The street. | \"Antonio Goes Street\" |\n| subThoroughfare | The building number or number range. | \"300A\" |\n| postalCode | The postal code. | \"51110-100\" |\n\nOnce the user's address is defined, it can be passed to the Incognia SDK.\n\n```tsx\nInLoco.setUserAddress(address);\n```\n\nAnd that's it. You submitted the user address.\n\n---\n\n# Prevent account takeover\n\nMitigate mobile fraud by verifying the location of a device at the exact moment that an important in-app action takes place. If the real-time location deviates from the device's historical location pattern, step-up authentication can be triggered. Learn how this feature works.\n\n![Account Takeover](https://mobile-api.s3.amazonaws.com/Extras/capacitor-doc-account-takeover.png)\n\n## **Triggering location updates**\n\nThe code below sends an event to Incognia with the current location associated.\n\n> **Tips:** Replace `your_event_name` with an event name that explains the user action. Exemplifying: `user_started_transaction`\n\n```tsx\n//is optional\n/*{\n \"custom_key_1\": \"custom_value_1\",\n \"custom_key_2\": \"custom_value_2\"\n}*/\nInLoco.trackLocalizedEvent(\"your_event_name\", {\n \"custom_key_1\": \"custom_value_1\",\n \"custom_key_2\": \"custom_value_2\"\n});\n\n```\n\n---\n\n## Getting the Installation ID\n\nThe Installation ID is a unique identifier that is automatically generated for each instance of your company's app. It is used to reference a specific installation when interacting with Inloco SDK.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/In-Loco-Media_inloco-capacitor-plugin.md","loc":{"lines":{"from":278,"to":352}}}}],["441573ff-5ba4-4d2a-bed9-c59a566df321",{"pageContent":"Once generated, the Installation ID remains the same until the user **re-installs** the app or **clears** its data. It is important to obtain the Installation ID and associate it with your users on the server to be able to use the some of our features.\n\nThe code below shows how to obtain the Installation ID using the Inloco SDK:\n\n```tsx\nInLoco.getInstallationId().then((installationId) => {\n console.log(\"installationId: \"+ installationId.value);\n});\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/In-Loco-Media_inloco-capacitor-plugin.md","loc":{"lines":{"from":354,"to":362}}}}],["d829b217-9d61-4faf-a044-465474abcfc7",{"pageContent":"# Capacitor File Picker\n\n## Description\n\nPlugin to pick files/images/videos from android or ios.\n\n## Installation\n\n- `npm i filepicker-updated`\n\nfor Capacitor v2\n\n- `npm i capacitor2-fle-picker`\n- https://github.com/mantosh59/capacitor2-file-picker\n## Usage\n\nimport { FilePicker } from \"filepicker-updated\"; \n\nFilePicker.showFilePicker({\n fileTypes: [\"image/*\", \"video/*\"],\n}).then(\n (fileResult: FilePickerResult) => {\n const fileUri = fileResult.uri;\n const fileName = fileResult.name;\n const fileMimeType = fileResult.mimeType;\n const fileExtension = fileResult.extension;\n const fileSize = fileResult.size;\n },\n (error) => {\n console.log(error);\n }\n);\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/mantosh59_capacitor-file-picker.md","loc":{"lines":{"from":1,"to":33}}}}],["e7cd191a-2783-43d4-9fb4-bdd1e1bbad35",{"pageContent":"# capacitor-detect-screen-capture\n\niOS only\n\n# Available events:\n\n- didScreenshot\n- didScreenRecording\n\n# Usage example:\n\n1. In your module (e.g. `app.module.ts`)\n\n```ts\n...\nimport { DetectScreenCapture } from 'capacitor-detect-screen-capture'\n\n@NgModule({\n\t...\n\tproviders: [\n\t\t...\n\t\tDetectScreenCapture,\n\t],\n})\nexport class AppModule {}\n\n```\n\n2. In your component or service (e.g. `analytics.service.ts`)\n\n```ts\n...\nimport { DetectScreenCapture } from 'capacitor-detect-screen-capture'\n\n@Injectable()\nexport class AnalyticsService {\n\tconstructor(private detectScreenCapture: DetectScreenCapture, private zone: NgZone) {}\n\n init() {\n \tthis.detectScreenCapture.addListener('didScreenshot', () => {\n\t\t\tthis.zone.run(() => {this.logEvent('didScreenshot') })\n\t\t})\n\n\t\tthis.detectScreenCapture.addListener('didScreenRecording', () => {\n\t\t\tthis.zone.run(() => { this.logEvent('didScreenRecording') })\n\t\t})\n }\n\n\tasync logEvent(name: string, params?: Object) {\n ...\n }\n\n\n}\n\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/rediska1114_capacitor-detect-screen-capture.md","loc":{"lines":{"from":1,"to":56}}}}],["e267cc81-6ff3-471b-9eaa-44852bd51195",{"pageContent":"# capacitor-plugin-bluetooth-transfer\nplugin for transfer file to device android\n\n# Example\n\n- For sending raw json data:\n~~~\nimport 'capacitor-plugin-bluetooth-transfer';\nimport { Plugins } from '@capacitor/core';\n\nconst result = await BluetoothFileTransfer.sendObject(\n { filename: 'file.txt', data: 'data to send' }\n );","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ProDInfo_capacitor-plugin-bluetooth-transfer.md","loc":{"lines":{"from":1,"to":13}}}}],["3c9065b9-cb38-4c80-9db8-b0544f865563",{"pageContent":"# crowdhub-plugin-flurryanalytics\n\nThis plugin provides an interface for Capacitor apps to use the Flurry Analytics API\n\n## Install\n\n```bash\nnpm install crowdhub-plugin-flurryanalytics\nnpx cap sync\n```\n\n## Implementation\n\n# Web\n\nIn order to initialize a session, you simply need to call once within your app's session, so you'd likely want to include this call on a deviceready event.\n\n```typescript\nimport { FlurryAnalytics } from 'crowdhub-plugin-flurryanalytics';\n\nFlurryAnalytics.initialize({\n apiKey: 'YOUR-API-KEY-HERE',\n});\n```\n\nAfterwards you can safely call any of the provided methods from the FlurryAnalytics class!\n\nFor demographics methods (setAge, setGender, setUserId), these must be called prior to initializing a Flurry session.\n\n# iOS\n\n# Android\n\nAs with many community created Capacitor plugins, you may need to manually register this plugin in your MainActivity.java like so:\n\n```java\npackage your.app.bundle;\n\nimport android.os.Bundle;\nimport com.crowdhubapps.plugin.flurryanalytics.FlurryAnalyticsPlugin;\nimport com.getcapacitor.BridgeActivity;\n\npublic class MainActivity extends BridgeActivity {\n\n @Override\n public void onCreate(Bundle savedInstanceState) {\n registerPlugin(FlurryAnalyticsPlugin.class);\n super.onCreate(savedInstanceState);\n }\n}\n\n```\n\nIf you get an error related to finding the package, you may also need to Right-Click the crowdhub-flurry-analytics folder in Android Studio and select the 'Convert Java File to Kotlin File' option. This will prompt you to configure Kotlin in the project, which is what the plugin is written in. You only need to configure Single module: android.crowdhubapps-plugin-flurryanalytics.\n\n## API\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":1,"to":58}}}}],["3a29a79d-9ead-4f50-977d-1f58cc630b3c",{"pageContent":"## API\n\n\n\n* [`initialize(...)`](#initialize)\n* [`logContentRated(...)`](#logcontentrated)\n* [`logContentViewed(...)`](#logcontentviewed)\n* [`logContentSaved(...)`](#logcontentsaved)\n* [`logProductCustomized()`](#logproductcustomized)\n* [`logSubscriptionStarted(...)`](#logsubscriptionstarted)\n* [`logSubscriptionEnded(...)`](#logsubscriptionended)\n* [`logGroupJoined(...)`](#loggroupjoined)\n* [`logGroupLeft(...)`](#loggroupleft)\n* [`logLogin(...)`](#loglogin)\n* [`logLogout(...)`](#loglogout)\n* [`logUserRegistered(...)`](#loguserregistered)\n* [`logSearchResultViewed(...)`](#logsearchresultviewed)\n* [`logKeywordSearched(...)`](#logkeywordsearched)\n* [`logLocationSearched(...)`](#loglocationsearched)\n* [`logInvite(...)`](#loginvite)\n* [`logShare(...)`](#logshare)\n* [`logLike(...)`](#loglike)\n* [`logComment(...)`](#logcomment)\n* [`logMediaCaptured(...)`](#logmediacaptured)\n* [`logMediaStarted(...)`](#logmediastarted)\n* [`logMediaStopped(...)`](#logmediastopped)\n* [`logMediaPaused(...)`](#logmediapaused)\n* [`logCustomEvent(...)`](#logcustomevent)\n* [`endTimedEvent(...)`](#endtimedevent)\n* [`setUserId(...)`](#setuserid)\n* [`setAge(...)`](#setage)\n* [`setGender(...)`](#setgender)\n* [`logError(...)`](#logerror)\n* [`logAdClick(...)`](#logadclick)\n* [`logAdImpression(...)`](#logadimpression)\n* [`logAdRewarded(...)`](#logadrewarded)\n* [`logAdSkipped(...)`](#logadskipped)\n* [`logCreditsSpent(...)`](#logcreditsspent)\n* [`logCreditsPurchased(...)`](#logcreditspurchased)\n* [`logCreditsEarned(...)`](#logcreditsearned)\n* [`logAchievementUnlocked(...)`](#logachievementunlocked)\n* [`logLevelCompleted(...)`](#loglevelcompleted)\n* [`logLevelFailed(...)`](#loglevelfailed)\n* [`logLevelUp(...)`](#loglevelup)\n* [`logLevelStarted(...)`](#loglevelstarted)\n* [`logLevelSkip(...)`](#loglevelskip)\n* [`logScorePosted(...)`](#logscoreposted)\n* [`logAppActivated()`](#logappactivated)\n* [`logApplicationSubmitted()`](#logapplicationsubmitted)\n* [`logAddItemToCart(...)`](#logadditemtocart)\n* [`logAddItemToWishList(...)`](#logadditemtowishlist)\n* [`logCompletedCheckout(...)`](#logcompletedcheckout)\n* [`logPaymentInfoAdded(...)`](#logpaymentinfoadded)\n* [`logItemViewed(...)`](#logitemviewed)\n* [`logItemListViewed(...)`](#logitemlistviewed)\n* [`logPurchased(...)`](#logpurchased)\n* [`logPurchaseRefunded(...)`](#logpurchaserefunded)\n* [`logRemoveItemFromCart(...)`](#logremoveitemfromcart)\n* [`logCheckoutInitiated(...)`](#logcheckoutinitiated)\n* [`logFundsDonated(...)`](#logfundsdonated)\n* [`logUserScheduled()`](#loguserscheduled)\n* [`logOfferPresented(...)`](#logofferpresented)\n* [`logTutorialStarted(...)`](#logtutorialstarted)\n* [`logTutorialCompleted(...)`](#logtutorialcompleted)\n* [`logTutorialStepCompleted(...)`](#logtutorialstepcompleted)\n* [`logTutorialSkipped(...)`](#logtutorialskipped)\n* [`logPrivacyPromptDisplayed()`](#logprivacypromptdisplayed)\n* [`logPrivacyOptIn()`](#logprivacyoptin)\n* [`logPrivacyOptOut()`](#logprivacyoptout)\n\n\n\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":58,"to":131}}}}],["b4a44b9c-52ac-4d81-806e-9f0cfd5a657d",{"pageContent":"\n\n\n\n\n### initialize(...)\n\n```typescript\ninitialize(options: { apiKey: string; logLevel?: \"verbose\" | \"debug\" | \"info\" | \"warn\" | \"error\"; crashReportingEnabled?: boolean; appVersion?: string; iapReportingEnabled?: boolean; }) => Promise<{ value: string; }>\n```\n\nInitialize Flurry once within the session by passing through an API key\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | { apiKey: string; logLevel?: 'error' \\| 'warn' \\| 'info' \\| 'verbose' \\| 'debug'; crashReportingEnabled?: boolean; appVersion?: string; iapReportingEnabled?: boolean; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logContentRated(...)\n\n```typescript\nlogContentRated(options: { contentId: string; contentRating: string; contentName?: string; contentType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user rates a content in the App\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------------ |\n| **`options`** | { contentId: string; contentRating: string; contentName?: string; contentType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logContentViewed(...)\n\n```typescript\nlogContentViewed(options: { contentId: string; contentName?: string; contentType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a specific content is viewed by a user\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------- |\n| **`options`** | { contentId: string; contentName?: string; contentType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logContentSaved(...)\n\n```typescript\nlogContentSaved(options: { contentId: string; contentName?: string; contentType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user saves the content in the App\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------- |\n| **`options`** | { contentId: string; contentName?: string; contentType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logProductCustomized()","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":131,"to":204}}}}],["4b2de9b0-ce6d-42fa-a94a-0e90baf65aa5",{"pageContent":"**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logProductCustomized()\n\n```typescript\nlogProductCustomized() => Promise<{ value: string; }>\n```\n\nLog this event when a user customizes the App/product\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logSubscriptionStarted(...)\n\n```typescript\nlogSubscriptionStarted(options: { price: number; isAnnualSubscription: boolean; trialDays?: number; predictedLTV?: string; currencyType?: string; subscriptionCountry?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event at the start of a paid subscription for a service or product\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | { price: number; isAnnualSubscription: boolean; trialDays?: number; predictedLTV?: string; currencyType?: string; subscriptionCountry?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logSubscriptionEnded(...)\n\n```typescript\nlogSubscriptionEnded(options: { isAnnualSubscription: boolean; currencyType?: string; subscriptionCountry?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user unsubscribes from a paid subscription for a service or product\n\n| Param | Type |\n| ------------- | ---------------------------------------------------------------------------------------------------- |\n| **`options`** | { isAnnualSubscription: boolean; currencyType?: string; subscriptionCountry?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logGroupJoined(...)\n\n```typescript\nlogGroupJoined(options: { groupName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when user joins a group.\n\n| Param | Type |\n| ------------- | ------------------------------------ |\n| **`options`** | { groupName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logGroupLeft(...)\n\n```typescript\nlogGroupLeft(options: { groupName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when user leaves a group\n\n| Param | Type |\n| ------------- | ------------------------------------ |\n| **`options`** | { groupName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLogin(...)\n\n```typescript\nlogLogin(options: { userId?: string; method?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user login on the App","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":204,"to":296}}}}],["18438020-a0ed-4972-82f7-e6032f5cf06f",{"pageContent":"Log this event when a user login on the App\n\n| Param | Type |\n| ------------- | -------------------------------------------------- |\n| **`options`** | { userId?: string; method?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLogout(...)\n\n```typescript\nlogLogout(options: { userId?: string; method?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user logout of the App\n\n| Param | Type |\n| ------------- | -------------------------------------------------- |\n| **`options`** | { userId?: string; method?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logUserRegistered(...)\n\n```typescript\nlogUserRegistered(options: { userId?: string; method?: string; }) => Promise<{ value: string; }>\n```\n\nLog the event when a user registers (signup). Helps capture the method used to sign-up (signup with google/apple or email address)\n\n| Param | Type |\n| ------------- | -------------------------------------------------- |\n| **`options`** | { userId?: string; method?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logSearchResultViewed(...)\n\n```typescript\nlogSearchResultViewed(options: { query?: string; searchType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when user views search results\n\n| Param | Type |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | { query?: string; searchType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logKeywordSearched(...)\n\n```typescript\nlogKeywordSearched(options: { query?: string; searchType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user searches for a keyword using Search\n\n| Param | Type |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | { query?: string; searchType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLocationSearched(...)\n\n```typescript\nlogLocationSearched(options: { query?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user searches for a location using Search\n\n| Param | Type |\n| ------------- | -------------------------------- |\n| **`options`** | { query?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logInvite(...)\n\n```typescript\nlogInvite(options: { userId?: string; method?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user invites another user","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":296,"to":398}}}}],["34680f80-679c-4f19-ac92-cbff94266d2f",{"pageContent":"Log this event when a user invites another user\n\n| Param | Type |\n| ------------- | -------------------------------------------------- |\n| **`options`** | { userId?: string; method?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logShare(...)\n\n```typescript\nlogShare(options: { socialContentId: string; socialContentName?: string; method?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user shares content with another user in the App\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------------------- |\n| **`options`** | { socialContentId: string; socialContentName?: string; method?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLike(...)\n\n```typescript\nlogLike(options: { socialContentId: string; socialContentName?: string; likeType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user likes a social content. e.g. likeType captures what kind of like is logged (“celebrate”, “insightful”, etc)\n\n| Param | Type |\n| ------------- | ---------------------------------------------------------------------------------------- |\n| **`options`** | { socialContentId: string; socialContentName?: string; likeType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logComment(...)\n\n```typescript\nlogComment(options: { socialContentId: string; socialContentName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user comments or replies on a social post\n\n| Param | Type |\n| ------------- | --------------------------------------------------------------------- |\n| **`options`** | { socialContentId: string; socialContentName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logMediaCaptured(...)\n\n```typescript\nlogMediaCaptured(options: { mediaId?: string; mediaName?: string; mediaType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an image, audio or a video is captured\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------- |\n| **`options`** | { mediaId?: string; mediaName?: string; mediaType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logMediaStarted(...)\n\n```typescript\nlogMediaStarted(options: { mediaId?: string; mediaName?: string; mediaType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an audio or video starts","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":398,"to":483}}}}],["5316587f-5a33-4d95-beef-e7876b28b052",{"pageContent":"Log this event when an audio or video starts\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------- |\n| **`options`** | { mediaId?: string; mediaName?: string; mediaType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logMediaStopped(...)\n\n```typescript\nlogMediaStopped(options: { duration: number; mediaId?: string; mediaName?: string; mediaType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an audio or video is stopped\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------------------------- |\n| **`options`** | { duration: number; mediaId?: string; mediaName?: string; mediaType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logMediaPaused(...)\n\n```typescript\nlogMediaPaused(options: { duration: number; mediaId?: string; mediaName?: string; mediaType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an audio or video is paused\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------------------------- |\n| **`options`** | { duration: number; mediaId?: string; mediaName?: string; mediaType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logCustomEvent(...)\n\n```typescript\nlogCustomEvent(options: { eventName: string; eventParams?: { [key: string]: string; } | undefined; eventTimed?: boolean | undefined; }) => Promise<{ value: string; }>\n```\n\nLog a custom event in the app.\nYou may provide up to ten additional parameters as key/value pairs, both of which must be strings\nYou may also enable this event to be timed, calling endTimedEvent to terminate its logging\n\n| Param | Type |\n| ------------- | --------------------------------------------------------------------------------------------------- |\n| **`options`** | { eventName: string; eventParams?: { [key: string]: string; }; eventTimed?: boolean; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### endTimedEvent(...)\n\n```typescript\nendTimedEvent(options: { eventName: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ----------------------------------- |\n| **`options`** | { eventName: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### setUserId(...)\n\n```typescript\nsetUserId(options: { userId: string; }) => Promise<{ value: string; }>\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":483,"to":566}}}}],["b0159a32-3527-4fd2-97d4-cd1d45ae1ced",{"pageContent":"### setUserId(...)\n\n```typescript\nsetUserId(options: { userId: string; }) => Promise<{ value: string; }>\n```\n\nAfter identifying the user, use this to log the user’s assigned ID or username in your system.\nYou must call this function prior to starting the Flurry session\n\n| Param | Type |\n| ------------- | -------------------------------- |\n| **`options`** | { userId: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### setAge(...)\n\n```typescript\nsetAge(options: { userAge: number; }) => Promise<{ value: string; }>\n```\n\nAfter identifying the user, use this to log the user’s age. Valid inputs are between 1 and 109.\nYou must call this function prior to starting the Flurry session\n\n| Param | Type |\n| ------------- | --------------------------------- |\n| **`options`** | { userAge: number; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### setGender(...)\n\n```typescript\nsetGender(options: { userGender: \"m\" | \"f\"; }) => Promise<{ value: string; }>\n```\n\nAfter identifying the user, use this to log the user’s gender. Valid inputs are m (male) or f (female).\nYou must call this function prior to starting the Flurry session\n\n| Param | Type |\n| ------------- | ---------------------------------------- |\n| **`options`** | { userGender: 'm' \\| 'f'; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logError(...)\n\n```typescript\nlogError(options: { errorId?: string; errorMessage?: string; error?: string; }) => Promise<{ value: string; }>\n```\n\nUse this to log exceptions and/or errors that occur in your app. Flurry will report the first 10 errors that occur in each session.\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------- |\n| **`options`** | { errorId?: string; errorMessage?: string; error?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAdClick(...)\n\n```typescript\nlogAdClick(options: { adType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user clicks on an Ad\n\n| Param | Type |\n| ------------- | --------------------------------- |\n| **`options`** | { adType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAdImpression(...)\n\n```typescript\nlogAdImpression(options: { adType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user views an Ad impression\n\n| Param | Type |\n| ------------- | --------------------------------- |\n| **`options`** | { adType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAdRewarded(...)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":566,"to":671}}}}],["94fce2b9-001a-4162-b136-4c0429573af7",{"pageContent":"**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAdRewarded(...)\n\n```typescript\nlogAdRewarded(options: { adType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user is granted a reward for viewing a rewarded Ad\n\n| Param | Type |\n| ------------- | --------------------------------- |\n| **`options`** | { adType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAdSkipped(...)\n\n```typescript\nlogAdSkipped(options: { adType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user skips an Ad\n\n| Param | Type |\n| ------------- | --------------------------------- |\n| **`options`** | { adType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logCreditsSpent(...)\n\n```typescript\nlogCreditsSpent(options: { levelNumber?: number; totalAmount: number; isCurrencySoft?: boolean; creditType?: string; creditId?: string; creditName?: string; currencyType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user spends credit in the app\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | { levelNumber?: number; totalAmount: number; isCurrencySoft?: boolean; creditType?: string; creditId?: string; creditName?: string; currencyType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logCreditsPurchased(...)\n\n```typescript\nlogCreditsPurchased(options: { levelNumber?: number; totalAmount: number; isCurrencySoft?: boolean; creditType?: string; creditId?: string; creditName?: string; currencyType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user purchases credit in the app\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | { levelNumber?: number; totalAmount: number; isCurrencySoft?: boolean; creditType?: string; creditId?: string; creditName?: string; currencyType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logCreditsEarned(...)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":671,"to":744}}}}],["7f54d075-bd13-420c-9ce8-661ec1a1a582",{"pageContent":"**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logCreditsEarned(...)\n\n```typescript\nlogCreditsEarned(options: { levelNumber?: number; totalAmount: number; isCurrencySoft?: boolean; creditType?: string; creditId?: string; creditName?: string; currencyType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user earns credit in the app\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | { levelNumber?: number; totalAmount: number; isCurrencySoft?: boolean; creditType?: string; creditId?: string; creditName?: string; currencyType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAchievementUnlocked(...)\n\n```typescript\nlogAchievementUnlocked(options: { achievementId?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user unlocks an achievement in the app\n\n| Param | Type |\n| ------------- | ---------------------------------------- |\n| **`options`** | { achievementId?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLevelCompleted(...)\n\n```typescript\nlogLevelCompleted(options: { levelNumber: number; levelName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an App user completes a level\n\n| Param | Type |\n| ------------- | --------------------------------------------------------- |\n| **`options`** | { levelNumber: number; levelName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLevelFailed(...)\n\n```typescript\nlogLevelFailed(options: { levelNumber: number; levelName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an App user fails a level\n\n| Param | Type |\n| ------------- | --------------------------------------------------------- |\n| **`options`** | { levelNumber: number; levelName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLevelUp(...)\n\n```typescript\nlogLevelUp(options: { levelNumber: number; levelName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an App user levels up\n\n| Param | Type |\n| ------------- | --------------------------------------------------------- |\n| **`options`** | { levelNumber: number; levelName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLevelStarted(...)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":744,"to":834}}}}],["d4d991e7-615d-49b7-be79-33f35cea1f85",{"pageContent":"**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLevelStarted(...)\n\n```typescript\nlogLevelStarted(options: { levelNumber: number; levelName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an App user starts a level\n\n| Param | Type |\n| ------------- | --------------------------------------------------------- |\n| **`options`** | { levelNumber: number; levelName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logLevelSkip(...)\n\n```typescript\nlogLevelSkip(options: { levelNumber: number; levelName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an App user skips a level\n\n| Param | Type |\n| ------------- | --------------------------------------------------------- |\n| **`options`** | { levelNumber: number; levelName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logScorePosted(...)\n\n```typescript\nlogScorePosted(options: { levelNumber?: number; score: number; }) => Promise<{ value: string; }>\n```\n\nLog this event when an App user posts his score\n\n| Param | Type |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | { levelNumber?: number; score: number; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAppActivated()\n\n```typescript\nlogAppActivated() => Promise<{ value: string; }>\n```\n\nLog this event when the App is activated\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logApplicationSubmitted()\n\n```typescript\nlogApplicationSubmitted() => Promise<{ value: string; }>\n```\n\nLog this event when a user submits an application through the App\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAddItemToCart(...)\n\n```typescript\nlogAddItemToCart(options: { itemCount: number; price: number; itemId?: string; itemName?: string; itemType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an item is added to the cart\n\n| Param | Type |\n| ------------- | --------------------------------------------------------------------------------------------------------- |\n| **`options`** | { itemCount: number; price: number; itemId?: string; itemName?: string; itemType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logAddItemToWishList(...)\n\n```typescript\nlogAddItemToWishList(options: { itemCount: number; price: number; itemId?: string; itemName?: string; itemType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an item is added to the wish list","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":834,"to":939}}}}],["3c832bf0-038d-428b-9401-07ac3a05fd00",{"pageContent":"Log this event when an item is added to the wish list\n\n| Param | Type |\n| ------------- | --------------------------------------------------------------------------------------------------------- |\n| **`options`** | { itemCount: number; price: number; itemId?: string; itemName?: string; itemType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logCompletedCheckout(...)\n\n```typescript\nlogCompletedCheckout(options: { itemCount: number; totalAmount: number; currencyType?: string; transactionId?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when checkout is completed or transaction is successfully completed\n\n| Param | Type |\n| ------------- | ------------------------------------------------------------------------------------------------------- |\n| **`options`** | { itemCount: number; totalAmount: number; currencyType?: string; transactionId?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logPaymentInfoAdded(...)\n\n```typescript\nlogPaymentInfoAdded(options: { success: boolean; paymentType: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when payment information is added during a checkout process\n\n| Param | Type |\n| ------------- | ------------------------------------------------------- |\n| **`options`** | { success: boolean; paymentType: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logItemViewed(...)\n\n```typescript\nlogItemViewed(options: { price?: number; itemId: string; itemName?: string; itemType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an item is viewed\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------------------- |\n| **`options`** | { price?: number; itemId: string; itemName?: string; itemType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logItemListViewed(...)\n\n```typescript\nlogItemListViewed(options: { itemListType: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a list of items is viewed\n\n| Param | Type |\n| ------------- | -------------------------------------- |\n| **`options`** | { itemListType: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logPurchased(...)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":939,"to":1018}}}}],["5372a024-3a2f-4498-8232-bace9c6e7b7f",{"pageContent":"**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logPurchased(...)\n\n```typescript\nlogPurchased(options: { totalAmount: number; success: boolean; itemCount?: number; itemId?: string; itemName?: string; itemType?: string; currencyType?: string; transactionId?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user does a purchase in the App\n\n| Param | Type |\n| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | { totalAmount: number; success: boolean; itemCount?: number; itemId?: string; itemName?: string; itemType?: string; currencyType?: string; transactionId?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logPurchaseRefunded(...)\n\n```typescript\nlogPurchaseRefunded(options: { price: number; currencyType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a purchase is refunded\n\n| Param | Type |\n| ------------- | ------------------------------------------------------ |\n| **`options`** | { price: number; currencyType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logRemoveItemFromCart(...)\n\n```typescript\nlogRemoveItemFromCart(options: { price?: number; itemId: string; itemName?: string; itemType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user removes an item from the cart\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------------------- |\n| **`options`** | { price?: number; itemId: string; itemName?: string; itemType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logCheckoutInitiated(...)\n\n```typescript\nlogCheckoutInitiated(options: { itemCount: number; totalAmount: number; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user starts checkout\n\n| Param | Type |\n| ------------- | -------------------------------------------------------- |\n| **`options`** | { itemCount: number; totalAmount: number; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logFundsDonated(...)\n\n```typescript\nlogFundsDonated(options: { price: number; currencyType?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user donates fund to your App or through the App","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":1018,"to":1097}}}}],["c8a8435b-cbed-4eae-b3e2-1807abcb27f6",{"pageContent":"Log this event when a user donates fund to your App or through the App\n\n| Param | Type |\n| ------------- | ------------------------------------------------------ |\n| **`options`** | { price: number; currencyType?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logUserScheduled()\n\n```typescript\nlogUserScheduled() => Promise<{ value: string; }>\n```\n\nLog this event when user schedules an appointment using the App\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logOfferPresented(...)\n\n```typescript\nlogOfferPresented(options: { price: number; itemId: string; itemName?: string; itemCategory?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when an offer is presented to the user\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------------------------------------- |\n| **`options`** | { price: number; itemId: string; itemName?: string; itemCategory?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logTutorialStarted(...)\n\n```typescript\nlogTutorialStarted(options: { tutorialName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user starts a tutorial\n\n| Param | Type |\n| ------------- | --------------------------------------- |\n| **`options`** | { tutorialName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logTutorialCompleted(...)\n\n```typescript\nlogTutorialCompleted(options: { tutorialName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a user completes a tutorial\n\n| Param | Type |\n| ------------- | --------------------------------------- |\n| **`options`** | { tutorialName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logTutorialStepCompleted(...)\n\n```typescript\nlogTutorialStepCompleted(options: { stepNumber: number; tutorialName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when a specific tutorial step is completed\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------- |\n| **`options`** | { stepNumber: number; tutorialName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logTutorialSkipped(...)\n\n```typescript\nlogTutorialSkipped(options: { stepNumber: number; tutorialName?: string; }) => Promise<{ value: string; }>\n```\n\nLog this event when user skips the tutorial","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":1097,"to":1195}}}}],["22d4deaa-a954-47db-9b75-9aac0c7e6ad5",{"pageContent":"Log this event when user skips the tutorial\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------- |\n| **`options`** | { stepNumber: number; tutorialName?: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logPrivacyPromptDisplayed()\n\n```typescript\nlogPrivacyPromptDisplayed() => Promise<{ value: string; }>\n```\n\nLog this event when a privacy prompt is displayed\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logPrivacyOptIn()\n\n```typescript\nlogPrivacyOptIn() => Promise<{ value: string; }>\n```\n\nLog this event when a user opts in (on the privacy prompt)\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### logPrivacyOptOut()\n\n```typescript\nlogPrivacyOptOut() => Promise<{ value: string; }>\n```\n\nLog this event when a user opts out (on the privacy prompt)\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n\n░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░\n░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░\n░░▒▒▒▒▒▒░░░░░░▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒░░░░░░▒▒▒▒▒▒\n░░▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒\n░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\n░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░████░░░░░░░░████░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░\n░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░████░░░░░░░░████░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░\n░░░░░░▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒░░░░\n░░░░░░░░▒▒▒▒▒▒░░░░░░░░░░░░▒▒▒▒░░░░░░░░▒▒▒▒░░░░░░░░░░░░▒▒▒▒▒▒░░░░░░\n░░░░░░░░▒▒▒▒▒▒░░░░░░░░░░░░▒▒▒▒░░░░░░░░▒▒▒▒░░░░░░░░░░░░▒▒▒▒▒▒░░░░░░\n░░░░░░░░▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒░░░░░░\n░░░░░░░░▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒░░░░░░\n░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░\n░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░\n░░░░░░▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒░░░░\n░░░░▒▒▒▒░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒░░\n░░░░▒▒▒▒░░░░░░░░▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒░░░░░░░░▒▒▒▒░░\n░░░░▒▒▒▒░░░░░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░░░░░░▒▒▒▒░░\n░░░░░░▒▒░░░░░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░░░░░░▒▒░░░░\n░░░░░░▒▒░░░░░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░░░░░░▒▒░░░░\n░░░░░░░░░░░░░░░░▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░░░░░░░░░░░░░\n░░░░░░░░░░░░░░░░▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░░░░░░░░░░░░░","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ajisakson_crowdhub-plugin-flurryanalytics.md","loc":{"lines":{"from":1195,"to":1267}}}}],["afe7ae45-6b47-4a34-b369-ec85e66b84b8",{"pageContent":"# capacitor-custom-google-maps\n\ncapacitor custom plugin google maps \n- add function for create circle on the maps (support for web, android and ios)\n- support hide my location button if the my location is true\n\n## Install\n\n```bash\nnpm install capacitor-custom-google-maps\nnpx cap sync\n```\n\n## API\n\n\n\n* [`create(...)`](#create)\n* [`addCircle(...)`](#addcircle)\n* [`addMarker(...)`](#addmarker)\n* [`addMarkers(...)`](#addmarkers)\n* [`removeMarker(...)`](#removemarker)\n* [`removeMarkers(...)`](#removemarkers)\n* [`enableClustering(...)`](#enableclustering)\n* [`disableClustering(...)`](#disableclustering)\n* [`destroy(...)`](#destroy)\n* [`setCamera(...)`](#setcamera)\n* [`setMapType(...)`](#setmaptype)\n* [`enableIndoorMaps(...)`](#enableindoormaps)\n* [`enableTrafficLayer(...)`](#enabletrafficlayer)\n* [`enableAccessibilityElements(...)`](#enableaccessibilityelements)\n* [`enableCurrentLocation(...)`](#enablecurrentlocation)\n* [`setMyLocationButtonEnabled(...)`](#setmylocationbuttonenabled)\n* [`setPadding(...)`](#setpadding)\n* [`onScroll(...)`](#onscroll)\n* [`dispatchMapEvent(...)`](#dispatchmapevent)\n* [`getMapBounds(...)`](#getmapbounds)\n* [`checkMockLocation(...)`](#checkmocklocation)\n* [Interfaces](#interfaces)\n* [Enums](#enums)\n\n\n\n\n\n\n### create(...)\n\n```typescript\ncreate(options: CreateMapArgs) => Promise\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------------- |\n| **`options`** | CreateMapArgs |\n\n--------------------\n\n\n### addCircle(...)\n\n```typescript\naddCircle(args: CircleOptions) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------- |\n| **`args`** | CircleOptions |\n\n--------------------\n\n\n### addMarker(...)\n\n```typescript\naddMarker(args: AddMarkerArgs) => Promise<{ id: string; }>\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------- |\n| **`args`** | AddMarkerArgs |\n\n**Returns:** Promise<{ id: string; }>\n\n--------------------\n\n\n### addMarkers(...)\n\n```typescript\naddMarkers(args: AddMarkersArgs) => Promise<{ ids: string[]; }>\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------- |\n| **`args`** | AddMarkersArgs |\n\n**Returns:** Promise<{ ids: string[]; }>\n\n--------------------\n\n\n### removeMarker(...)\n\n```typescript\nremoveMarker(args: RemoveMarkerArgs) => Promise\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":1,"to":107}}}}],["0deec685-64e6-453c-b603-e768800c058e",{"pageContent":"--------------------\n\n\n### removeMarker(...)\n\n```typescript\nremoveMarker(args: RemoveMarkerArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------------- |\n| **`args`** | RemoveMarkerArgs |\n\n--------------------\n\n\n### removeMarkers(...)\n\n```typescript\nremoveMarkers(args: RemoveMarkersArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------------- |\n| **`args`** | RemoveMarkersArgs |\n\n--------------------\n\n\n### enableClustering(...)\n\n```typescript\nenableClustering(args: { id: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n--------------------\n\n\n### disableClustering(...)\n\n```typescript\ndisableClustering(args: { id: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n--------------------\n\n\n### destroy(...)\n\n```typescript\ndestroy(args: DestroyMapArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------- |\n| **`args`** | DestroyMapArgs |\n\n--------------------\n\n\n### setCamera(...)\n\n```typescript\nsetCamera(args: CameraArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------- |\n| **`args`** | CameraArgs |\n\n--------------------\n\n\n### setMapType(...)\n\n```typescript\nsetMapType(args: MapTypeArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------- |\n| **`args`** | MapTypeArgs |\n\n--------------------\n\n\n### enableIndoorMaps(...)\n\n```typescript\nenableIndoorMaps(args: IndoorMapArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------- |\n| **`args`** | IndoorMapArgs |\n\n--------------------\n\n\n### enableTrafficLayer(...)\n\n```typescript\nenableTrafficLayer(args: TrafficLayerArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------------- |\n| **`args`** | TrafficLayerArgs |\n\n--------------------\n\n\n### enableAccessibilityElements(...)\n\n```typescript\nenableAccessibilityElements(args: AccElementsArgs) => Promise\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":107,"to":231}}}}],["476dc95e-f5e7-4d64-920d-303900546d72",{"pageContent":"### enableAccessibilityElements(...)\n\n```typescript\nenableAccessibilityElements(args: AccElementsArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ----------------------------------------------------------- |\n| **`args`** | AccElementsArgs |\n\n--------------------\n\n\n### enableCurrentLocation(...)\n\n```typescript\nenableCurrentLocation(args: CurrentLocArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------- |\n| **`args`** | CurrentLocArgs |\n\n--------------------\n\n\n### setMyLocationButtonEnabled(...)\n\n```typescript\nsetMyLocationButtonEnabled(args: CurrentLocArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------- |\n| **`args`** | CurrentLocArgs |\n\n--------------------\n\n\n### setPadding(...)\n\n```typescript\nsetPadding(args: PaddingArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------- |\n| **`args`** | PaddingArgs |\n\n--------------------\n\n\n### onScroll(...)\n\n```typescript\nonScroll(args: OnScrollArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ----------------------------------------------------- |\n| **`args`** | OnScrollArgs |\n\n--------------------\n\n\n### dispatchMapEvent(...)\n\n```typescript\ndispatchMapEvent(args: { id: string; focus: boolean; }) => Promise\n```\n\n| Param | Type |\n| ---------- | -------------------------------------------- |\n| **`args`** | { id: string; focus: boolean; } |\n\n--------------------\n\n\n### getMapBounds(...)\n\n```typescript\ngetMapBounds(args: { id: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n**Returns:** Promise<LatLngBounds>\n\n--------------------\n\n\n### checkMockLocation(...)\n\n```typescript\ncheckMockLocation(args: { id: string; }) => Promise<{ isMockLocation: boolean; }>\n```\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n**Returns:** Promise<{ isMockLocation: boolean; }>\n\n--------------------\n\n\n### Interfaces\n\n\n#### CreateMapArgs\n\nAn interface containing the options used when creating a map.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":231,"to":344}}}}],["0babbb8e-a087-4e0c-8d18-c6ee855abd4f",{"pageContent":"--------------------\n\n\n### Interfaces\n\n\n#### CreateMapArgs\n\nAn interface containing the options used when creating a map.\n\n| Prop | Type | Description | Default |\n| ----------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------ |\n| **`id`** | string | A unique identifier for the map instance. | |\n| **`apiKey`** | string | The Google Maps SDK API Key. | |\n| **`config`** | GoogleMapConfig | The initial configuration settings for the map. | |\n| **`element`** | HTMLElement | The DOM element that the Google Map View will be mounted on which determines size and positioning. | |\n| **`forceCreate`** | boolean | Destroy and re-create the map instance if a map with the supplied id already exists | false |\n\n\n#### GoogleMapConfig\n\nFor web, all the javascript Google Maps options are available as\nGoogleMapConfig extends google.maps.MapOptions.\nFor iOS and Android only the config options declared on GoogleMapConfig are available.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":344,"to":367}}}}],["480d307f-2fec-491d-9f7f-0738ed849204",{"pageContent":"| Prop | Type | Description | Default | Since |\n| ---------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- |\n| **`width`** | number | Override width for native map. | | |\n| **`height`** | number | Override height for native map. | | |\n| **`x`** | number | Override absolute x coordinate position for native map. | | |\n| **`y`** | number | Override absolute y coordinate position for native map. | | |\n| **`center`** | LatLng | Default location on the Earth towards which the camera points. | | |\n| **`zoom`** | number | Sets the zoom of the map. | | |\n| **`androidLiteMode`** | boolean | Enables image-based lite mode on Android. | false | |\n| **`devicePixelRatio`** | number | Override pixel ratio for native map. | | |\n| **`styles`** | MapTypeStyle[] \\| null | Styles to apply to each of the default map types. Note that for satellite, hybrid and terrain modes, these styles will only apply to labels and geometry. | | 4.3.0 |\n\n\n#### LatLng\n\nAn interface representing a pair of latitude and longitude coordinates.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":369,"to":384}}}}],["a714a1dd-ced1-48df-b58e-ee84db7bc686",{"pageContent":"#### LatLng\n\nAn interface representing a pair of latitude and longitude coordinates.\n\n| Prop | Type | Description |\n| --------- | ------------------- | ------------------------------------------------------------------------- |\n| **`lat`** | number | Coordinate latitude, in degrees. This value is in the range [-90, 90]. |\n| **`lng`** | number | Coordinate longitude, in degrees. This value is in the range [-180, 180]. |\n\n\n#### CircleOptions\n\nAn interface representing the viewports latitude and longitude bounds.\n\n| Prop | Type |\n| ----------------- | ----------------------------------------- |\n| **`radius`** | number |\n| **`mapId`** | string |\n| **`center`** | LatLng |\n| **`fillColor`** | string |\n| **`strokeColor`** | string |\n| **`strokeWidth`** | number |\n\n\n#### AddMarkerArgs\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`id`** | string |\n| **`marker`** | Marker |\n\n\n#### Marker\n\nA marker is an icon placed at a particular point on the map's surface.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":384,"to":418}}}}],["f28de01c-711b-4f52-b201-18bd2f195916",{"pageContent":"| Prop | Type | Description | Default | Since |\n| ---------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- |\n| **`coordinate`** | LatLng | Marker position | | |\n| **`opacity`** | number | Sets the opacity of the marker, between 0 (completely transparent) and 1 inclusive. | 1 | |\n| **`title`** | string | Title, a short description of the overlay. | | |\n| **`snippet`** | string | Snippet text, shown beneath the title in the info window when selected. | | |\n| **`isFlat`** | boolean | Controls whether this marker should be flat against the Earth's surface or a billboard facing the camera. | false | |\n| **`iconUrl`** | string | Path to a marker icon to render. It can be relative to the web app public directory, or a https url of a remote marker icon. **SVGs are not supported on native platforms.** | | 4.2.0 |\n| **`iconSize`** | Size | Controls the scaled size of the marker image set in `iconUrl`. | | 4.2.0 |\n| **`iconOrigin`** | Point | The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image . | | 4.2.0 |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":420,"to":429}}}}],["af6dab5f-6535-49dc-b4dd-dacd43156bc2",{"pageContent":"| **`iconAnchor`** | Point | The position at which to anchor an image in correspondence to the location of the marker on the map. By default, the anchor is located along the center point of the bottom of the image. | | 4.2.0 |\n| **`tintColor`** | { r: number; g: number; b: number; a: number; } | Customizes the color of the default marker image. Each value must be between 0 and 255. Only for iOS and Android. | | 4.2.0 |\n| **`draggable`** | boolean | Controls whether this marker can be dragged interactively | false | |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":430,"to":432}}}}],["0465e95a-d186-4a31-b38a-2d179a063ece",{"pageContent":"#### Size\n\n| Prop | Type |\n| ------------ | ------------------- |\n| **`width`** | number |\n| **`height`** | number |\n\n\n#### Point\n\n| Prop | Type |\n| ------- | ------------------- |\n| **`x`** | number |\n| **`y`** | number |\n\n\n#### AddMarkersArgs\n\n| Prop | Type |\n| ------------- | --------------------- |\n| **`id`** | string |\n| **`markers`** | Marker[] |\n\n\n#### RemoveMarkerArgs\n\n| Prop | Type |\n| -------------- | ------------------- |\n| **`id`** | string |\n| **`markerId`** | string |\n\n\n#### RemoveMarkersArgs\n\n| Prop | Type |\n| --------------- | --------------------- |\n| **`id`** | string |\n| **`markerIds`** | string[] |\n\n\n#### DestroyMapArgs\n\n| Prop | Type |\n| -------- | ------------------- |\n| **`id`** | string |\n\n\n#### CameraArgs\n\n| Prop | Type |\n| ------------ | ----------------------------------------------------- |\n| **`id`** | string |\n| **`config`** | CameraConfig |\n\n\n#### CameraConfig\n\nConfiguration properties for a Google Map Camera","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":435,"to":492}}}}],["c4f01399-924c-4de3-aab8-0012ce9e52c2",{"pageContent":"#### CameraConfig\n\nConfiguration properties for a Google Map Camera\n\n| Prop | Type | Description | Default |\n| ----------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------ |\n| **`coordinate`** | LatLng | Location on the Earth towards which the camera points. | |\n| **`zoom`** | number | Sets the zoom of the map. | |\n| **`bearing`** | number | Bearing of the camera, in degrees clockwise from true north. | 0 |\n| **`angle`** | number | The angle, in degrees, of the camera from the nadir (directly facing the Earth). The only allowed values are 0 and 45. | 0 |\n| **`animate`** | boolean | Animate the transition to the new Camera properties. | false |\n| **`animationDuration`** | number | This configuration option is not being used. | |\n\n\n#### MapTypeArgs\n\n| Prop | Type |\n| ------------- | ------------------------------------------- |\n| **`id`** | string |\n| **`mapType`** | MapType |\n\n\n#### IndoorMapArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### TrafficLayerArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### AccElementsArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### CurrentLocArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### PaddingArgs","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":492,"to":546}}}}],["58ff6b1d-f8d5-4178-9cd8-706ec9e5940d",{"pageContent":"#### PaddingArgs\n\n| Prop | Type |\n| ------------- | ------------------------------------------------- |\n| **`id`** | string |\n| **`padding`** | MapPadding |\n\n\n#### MapPadding\n\nControls for setting padding on the 'visible' region of the view.\n\n| Prop | Type |\n| ------------ | ------------------- |\n| **`top`** | number |\n| **`left`** | number |\n| **`right`** | number |\n| **`bottom`** | number |\n\n\n#### OnScrollArgs\n\n| Prop | Type |\n| --------------- | --------------------------------------------------------------------- |\n| **`id`** | string |\n| **`mapBounds`** | { x: number; y: number; width: number; height: number; } |\n\n\n#### LatLngBounds\n\nAn interface representing the viewports latitude and longitude bounds.\n\n| Prop | Type |\n| --------------- | ----------------------------------------- |\n| **`southwest`** | LatLng |\n| **`center`** | LatLng |\n| **`northeast`** | LatLng |\n\n\n### Enums\n\n\n#### MapType\n\n| Members | Value | Description |\n| --------------- | ------------------------ | ---------------------------------------- |\n| **`Normal`** | 'Normal' | Basic map. |\n| **`Hybrid`** | 'Hybrid' | Satellite imagery with roads and labels. |\n| **`Satellite`** | 'Satellite' | Satellite imagery with no labels. |\n| **`Terrain`** | 'Terrain' | Topographic data. |\n| **`None`** | 'None' | No base map tiles. |\n\n\n# capacitor-custom-google-maps","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/nasasutisna_capacitor-custom-google-maps.md","loc":{"lines":{"from":546,"to":599}}}}],["058f60bd-2cfd-4a26-8a01-d4cf0e395f0c",{"pageContent":"
\n\n# capacitor-native-decorator  [![npm version](https://badge.fury.io/js/@aparajita%2Fcapacitor-native-decorator.svg)](https://badge.fury.io/js/@aparajita%2Fcapacitor-native-decorator)\n\n### ❗️This package is now deprecated. Please read below if you are using Capacitor 4.\n\nAfter spending many hours tracing through and reading through the Capacitor 4 source code and doing some experimentation with different coding conventions, I have come to the conclusion that this package is no longer needed.\n\n### Issues this package was originally designed to solve\n\nThis package was originally created to solve several issues:\n\n1. The need to manually maintain the `Plugin.m` file for iOS.\n2. The inability to use non-native methods in a class on native platforms.\n3. The necessity to unwrap single return values from an object.\n\n#1 was a convenient side-effect of solving #2 and #3. In reality, it isn’t that important, as the API for a plugin doesn’t change that much.\n\n#2 is no longer a problem with Capacitor 4. You can call any method on a plugin object, even if it’s not native.\n\n#3 is easily solved by using object deconstruction.\n\n### Issues created by this package\n\nThere are three issues this package created:\n\n1. It was relying on private API within Capacitor that could change in the future, thus preventing users of this package from upgrading to the latest version of Capacitor.\n2. It was circumventing the Capacitor plugin method calling mechanism entirely, which eventually could lead to unexpected behavior in future versions of Capacitor.\n3. It did not support lazy loading of plugins, which is now the recommended way.\n\nUsing standard Capacitor mechanisms instead of this package solves all of these issues.\n\n> **Note:** When plugins are lazy loaded, **all** of the methods in the plugin class must be async and return a Promise.\n\n### The remaining Capacitor issue\n\nThere is one problem with Capacitor 4 that needs to be solved if you want to get the most flexibility in your plugins. While you **can** call non-native methods in a plugin class, because of the way Capacitor implements plugins, within non-native plugin methods you **can’t** call native methods via `this`.\n\nWhy would you want to do this? There are two main advantages:\n\n- It allows you to create hybrid plugins that are part TypeScript, part native code. By putting as much functionality in TypeScript as possible, that’s one less language in which to write and test code.\n- You can use TypeScript methods to provide a more natural syntax for calling native methods, as is shown in the example below.\n\nThis can be achieved by storing the plugin reference returned by `registerPlugin` (which is actually a bare Proxy) inside your plugin class and calling native methods via that reference. Here is an example of how to do this:\n\n```typescript\n// definitions.ts\nexport interface AwesomePlugin extends WebPlugin {\n setItem(key: string, value: unknown): Promise\n getItem(key: string): Promise\n}","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-native-decorator.md","loc":{"lines":{"from":1,"to":51}}}}],["1f1a48c6-0c74-4be9-896f-98694106cb6a",{"pageContent":"// base.ts\nexport abstract class AwesomeBase extends WebPlugin implements AwesomePlugin {\n private readonly _plugin: AwesomePlugin\n\n constructor(plugin: AwesomePlugin) {\n super()\n this._plugin = plugin\n }\n\n abstract setItem(key: string, value: unknown): Promise\n\n abstract getItem(key: string): Promise\n}\n\n// web.ts\nexport class AwesomeWeb extends AwesomeBase {\n async setItem(key: string, value: unknown): Promise {\n return localStorage.setItem(key, value)\n }\n\n async getItem(key: string): Promise {\n return Promise.resolve(localStorage.getItem(key))\n }\n}\n\n// native.ts\nexport class AwesomeNative extends AwesomeBase {\n async nativeSetItem({\n key,\n value\n }: {\n key: string\n value: unknown\n }): Promise {\n // Code is never called, but we have to keep TS happy\n return Promise.resolve()\n }\n\n async setItem(key: string, value: unknown): Promise {\n // We can't use `this` directly, we have to use the Capacitor plugin reference\n return this._plugin.nativeSetItem({ key, value })\n }\n\n async nativeGetItem({ key }: { key: string }): Promise {\n // Code is never called, but we have to keep TS happy\n return Promise.resolve(undefined)\n }\n\n async getItem(key: string): Promise {\n // We can't use `this` directly, we have to use the Capacitor plugin reference\n const { value } = await this._plugin.nativeGetItem({ key })\n return Promise.resolve(value)\n }\n}\n\n// index.ts\nimport { registerPlugin } from '@capacitor/core'\nimport type { AwesomePlugin } from './definitions'\n\nconst proxy = registerPlugin('AwesomeNative', {\n web: async () =>\n import('./web').then((module) => new module.AwesomeWeb(proxy)),\n ios: async () =>\n import('./native').then((module) => new module.AwesomeNative(proxy)),\n android: async () =>\n import('./native').then((module) => new module.AwesomeNative(proxy))\n})\n\nexport * from './definitions'\nexport { proxy as Awesome }\n\n// somefile.ts\nimport { Awesome } from '@awesome/awesome'\n\nasync function setCredentials(credentials: {\n username: string\n password: string\n}) {\n await Awesome.setItem('credentials', JSON.stringify(credentials))\n}\n\nasync function getCredentials(): Promise<{\n username: string\n password: string\n}> {\n const credentials = await Awesome.getItem('credentials')\n return JSON.parse(credentials)\n}\n```\n\n```swift\n// ios/Plugin/Plugin.m\n#import \n#import \n\nCAP_PLUGIN(AwesomeNative, \"AwesomeNative\",\n CAP_PLUGIN_METHOD(nativeSetItem, CAPPluginReturnPromise);\n CAP_PLUGIN_METHOD(nativeGetItem, CAPPluginReturnPromise);\n)\n```\n\nAnd so on with the other native files. Some examples:\n\n[capacitor-biometric-auth](https://github.com/aparajita/capacitor-biometric-auth)\n\n
","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/aparajita_capacitor-native-decorator.md","loc":{"lines":{"from":53,"to":158}}}}],["1d34967f-1b13-4463-8101-55f2eda51c54",{"pageContent":"# sqlite-electron","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/DevAashishCodes_sqlite-electron.md","loc":{"lines":{"from":1,"to":1}}}}],["2c3e4170-b0a8-4404-bf82-f8e9c400f9d8",{"pageContent":"# Capacitor File Picker\n\n## Description\n\nPresents the device's native file picking ui and returns the selected file's uri.\n\n## Installation\n\n- `npm i capacitor2-file-picker --save`\n\nFor Capacitor V3\n\n- `npm i filepicker-updated --save`\n- `https://github.com/mantosh59/capacitor-file-picker`\n\n## Usage\n\n```ts\nimport { Plugins } from \"@capacitor/core\";\n\nconst { FilePicker } = Plugins;\n\nFilePicker.showFilePicker({\n fileTypes: [\"image/*\", \"application/pdf\"],\n}).then(\n (fileResult: FilePickerResult) => {\n const fileUri = fileResult.uri;\n const fileName = fileResult.name;\n const fileMimeType = fileResult.mimeType;\n const fileExtension = fileResult.extension;\n const fileSize = fileResult.size;\n },\n (error) => {\n console.log(error);\n }\n);\n```\n \n## Android\n\nRegister the plugin by adding it to your MainActivity's onCreate:\n\n```java\nimport com.devmantosh.filepicker.FilePicker;\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(FilePicker.class);\n }});\n }\n}\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/mantosh59_capacitor2-file-picker.md","loc":{"lines":{"from":1,"to":59}}}}],["6171edf6-09d2-4898-a93c-1b9394c06416",{"pageContent":"# Video Player One - Capacitor Plugin\nVideo Player One is a custom Native Capacitor plugin to play video fullscreen on iOS, android and PWA.\n\nForked from [capacitor-video-player](https://www.npmjs.com/package/capacitor-video-player)\n\n## Methods available\n\n play({url:string})\n\n## To use the Plugin in your Project\n```bash\nnpm install --save video-player-one\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/irontec_video-player-one.md","loc":{"lines":{"from":1,"to":13}}}}],["3a6ff9be-104a-4ae4-a5a1-c76a9fccb01c",{"pageContent":"# capacitor-secure-storage-plugin\n\nCapacitor plugin for storing string values securly on iOS and Android.\n\n## How to install\nFor Capacitor v3\n\n```\nnpm install capacitor-secure-storage-plugin\n```\n\n\nFor Capacitor v2 - install with fixed version 0.5.1\n\n```\nnpm install capacitor-secure-storage-plugin@0.5.1\n```\n\n\n## Usage\n\nFor Capacitor v3\n\nIn a component where you want to use this plugin add to or modify imports:\n\n```\nimport { SecureStoragePlugin } from 'capacitor-secure-storage-plugin';\n```\n\nFor Capacitor v2\n\nIn a component where you want to use this plugin add to or modify imports:\n\n```\nimport 'capacitor-secure-storage-plugin';\nimport { Plugins } from '@capacitor/core';\n\nconst { SecureStoragePlugin } = Plugins;\n```\n\nFirst line is needed because of web part of the plugin (current behavior of Capacitor, this may change in future releases).\n\n### Android\n\nIn Android you have to register plugins manually in MainActivity class of your app.\n\nhttps://capacitor.ionicframework.com/docs/plugins/android/#export-to-capacitor\n\n```\nimport com.whitestein.securestorage.SecureStoragePlugin;\n\n...\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(SecureStoragePlugin.class);\n }});\n }\n}\n```\n\n## Methods\n\n- **get**(options: { key: string }): Promise<{ value: string }>\n - if item with specified key does not exist, throws an Error\n\n* **keys**(): Promise<{ value: string[] }>\n* **set**(options: { key: string; value: string }): Promise<{ value: boolean }>\n* **remove**(options: { key: string }): Promise<{ value: boolean }>\n* **clear**(): Promise<{ value: boolean }>\n - set, remove and clear return true in case of success and false in case of error\n\n- **getPlatform**(): Promise<{ value: string }>\n - returns which implementation is used - one of 'web', 'ios' or 'android'\n\n## Example\n\n```\nconst key = 'username';\nconst value = 'hellokitty2';\n\nSecureStoragePlugin.set({ key, value })\n .then(success => console.log(success))\n```\n\n```\nconst key = 'username';\nSecureStoragePlugin.get({ key })\n .then(value => {\n console.log(value);\n })\n .catch(error => {\n console.log('Item with specified key does not exist.');\n });\n```\n\n```\nasync getUsername(key: string) {\n return await SecureStoragePlugin.get({ key });\n}\n```\n\n## Platform specific information\n\n### iOS\n\nThis plugin uses SwiftKeychainWrapper under the hood for iOS.\n\n##### Warning\n\nUp to version v0.4.0 there was standard keychain used. Since v0.5.0 there is separate keychain wrapper, so keys() method returns only keys set in v0.5.0 or higher version.\n\n### Android\n\nOn Android it is implemented by AndroidKeyStore and SharedPreferences. Source: [Apriorit](https://www.apriorit.com/dev-blog/432-using-androidkeystore)\n\n##### Warning\n\nFor Android API < 18 values are stored as simple base64 encoded strings.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/wayforward-io_capacitor-secure-storage-plugin.md","loc":{"lines":{"from":1,"to":126}}}}],["7d57b8d5-4c75-48af-8959-fa61a46a401f",{"pageContent":"##### Warning\n\nFor Android API < 18 values are stored as simple base64 encoded strings.\n\n### Web\n\nThere is no secure storage in browser (not because it is not implemented by this plugin, but it does not exist at all). Values are stored in LocalStorage, but they are at least base64 encoded. Plugin adds 'cap*sec*' prefix to keys to avoid conflicts with other data stored in LocalStorage.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/wayforward-io_capacitor-secure-storage-plugin.md","loc":{"lines":{"from":126,"to":132}}}}],["ebd8fc43-4729-4db1-9180-06e179445167",{"pageContent":"# Capacitor Google Auth plugin\n\n### Install\n\n```bash\nnpm i capacitor-google-auth\n\nnpx cap update\n```\n\n### iOS\n\nMake sure you have `GoogleService-Info.plist` with `CLIENT_ID`\n\nAdd `REVERSED_CLIENT_ID` as url scheme to `Info.plist`\n\n### Android\n\nInside your `strings.xml`\n\n```xml\n\n Your Web Client Key\n\n```\n\nImport package inside your `MainActivity`\n\n```java\nimport com.rediska1114.plugins.GoogleAuth;\n\n```\n\nRegister plugin inside your `MainActivity.onCreate`\n\n```java\nthis.init(savedInstanceState, new ArrayList>() {{\n add(GoogleAuth.class);\n}});\n```\n\n### Configure\n\nProvide configuration in root `capacitor.config.json`\n\n```json\n{\n \"plugins\": {\n \"GoogleAuth\": {\n \"scopes\": [\"profile\", \"email\"],\n \"serverClientId\": \"xxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com\",\n \"forceCodeForRefreshToken\": true\n }\n }\n}\n```\n\nNote : `forceCodeForRefreshToken` force user to select email address to regenerate AuthCode used to get a valid refreshtoken (work on iOS and Android) (This is used for offline access and serverside handling)\n\n# Available methods:\n\n- `signIn()`\n- `refresh()` (iOS only)\n- `signOut()`\n\n# Usage example:\n\n1. In your module (e.g. `app.module.ts`)\n\n```ts\n...\nimport { GoogleAuth } from 'capacitor-google-auth'\n\n@NgModule({\n\t...\n\tproviders: [\n\t\t...\n\t\tGoogleAuth,\n\t],\n})\nexport class AppModule {}\n\n```\n\n2. In your component or service (e.g. `auth.service.ts`)\n\n```ts\n...\nimport { GoogleAuth } from 'capacitor-google-auth'\n\n@Injectable()\nexport class AuthService {\n\tconstructor(private googleAuth: GoogleAuth, private api: ApiService) {}\n\n async googleSignIn() {\n\t\tconst googleUser = await this.googleAuth.signIn();\n\t\tconst { token } = await this.api.signInWithGoogle(googleUser)\n\t}\n}\n\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/rediska1114_capacitor-google-auth.md","loc":{"lines":{"from":1,"to":101}}}}],["16e5e2ee-a5f3-4768-bba2-ee445e9e6e84",{"pageContent":"


\n\n

Google Maps

\n

@capacitor-community/google-maps

\n

Capacitor Plugin using native Google Maps SDK for Android and iOS.

\n

\n

\n\n

\n \n \n \n \n
\n \n \n\n\n\n

\n\n## Purpose\n\nUnder the hood this package makes use of the Native SDKs for Google Maps, written in Java and Swift for both Android and iOS respectively. In comparison to the JavaScript SDK the Native SDKs have much better performance and are more cost effective1. It also adds support for offline caching. \n\n[1] The \"Dynamic Maps\" SKU for the Native SDKs is offered free of charge by Google ([Native Dynamic Maps pricing](https://developers.google.com/maps/billing-and-pricing/pricing#mobile-dynamic)), as opposed to the on-demand pricing model for the JavaScript SDK ([JavaScript Dynamic Maps pricing](https://developers.google.com/maps/billing-and-pricing/pricing#dynamic-maps)).\n\n## Documentation\n\nExtensive documentation is available [here](https://capacitor-community.github.io/google-maps/).\n\n## Shortcuts\n\n- [Documentation homepage](https://capacitor-community.github.io/google-maps/)\n\n- [Installation](https://capacitor-community.github.io/google-maps/#/getting-started/installation)\n\n- [Should you use this plugin](https://capacitor-community.github.io/google-maps/#/about/should-you-use-this-plugin)\n\n- [API reference](https://capacitor-community.github.io/google-maps/#/api)\n\n- [Examples](https://github.com/capacitor-community/google-maps-examples)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_capacitor-googlemaps-native.md","loc":{"lines":{"from":1,"to":42}}}}],["98392570-5ee6-4a7c-9bbc-3f8fb1585b59",{"pageContent":"


\n\n

App Actions

\n

capacitor-app-actions

\n

\n Capacitor iOS and Android Plugin for App Actions\n

\n\n

\n \n \n \n
\n \n \n\n\n\n

\n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| -----------| -------| -------|\n| Nitish Sachar | [uioporqwerty](https://github.com/uioporqwerty) | [LinkedIn](https://linkedin.com/in/nitish-sachar) |\n\n## Installation\n\n```bash\nnpm install capacitor-app-actions\nnpx cap sync\n```\n\n## Configuration\n\nAndroid:\n\nNo additional configuration required.\n\niOS:\n\nAdd the following to `AppDelegate.swift`. This snippet allows the plugin to recognize when an app action has been selected so that you can respond to those events.\n\n```swift\nfunc application(_ application: UIApplication,\n performActionFor shortcutItem: UIApplicationShortcutItem,\n completionHandler: @escaping (Bool) -> Void)\n{\n NotificationCenter.default.post(name: NSNotification.Name(\"appActionReceived\"), object: nil, userInfo: [\"actionId\" : shortcutItem.type])\n}\n```\n\n## Usage\n\nTypically app actions are added at application startup, but you can add them where appropriate:\n\n```\nimport { AppActions } from 'capacitor-app-actions'\n\nawait Capacitor.Plugins.AppActions.set({ \"actions\": [ \n { id: \"order\", title: \"Order\", subtitle: \"Place an Order\", icon: \"star.fill\" }, \n { id: \"locations\", title: \"Find location\", subtitle: \"Find nearby location\", icon: \"star.fill\"}\n ]});\n```\nListen to an event triggered by an existing app action:\n\n```\nAppActions.addListener(\"order\", (info) => {\n // Do your in app work. Navigate to the appropriate page or trigger other in app actions.\n });\n```\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/uioporqwerty_capacitor-app-actions.md","loc":{"lines":{"from":1,"to":74}}}}],["af1c2f19-60e3-4b64-82b9-22a6b9af4412",{"pageContent":"Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\n\n\n\n \n \n \n
\"\"/
Nitish Sachar

🚧 💻
\n\n\n\n\n\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/uioporqwerty_capacitor-app-actions.md","loc":{"lines":{"from":74,"to":90}}}}],["45bfd778-2346-4d9d-83d5-b75a07872784",{"pageContent":"# capacitor-greatday-camera-location\n\nThe capacitor plugin for camera with location funtion\n\n## Install\n\n```bash\nnpm install capacitor-greatday-camera-location\nnpx cap sync\n```\n\n## API\n\n\n\n* [`getLocationCamera(...)`](#getlocationcamera)\n* [`getLocationCameraSwap(...)`](#getlocationcameraswap)\n* [`getLocationRadiusCamera(...)`](#getlocationradiuscamera)\n* [`getLocationRadiusCameraSwap(...)`](#getlocationradiuscameraswap)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### getLocationCamera(...)\n\n```typescript\ngetLocationCamera(options?: LocationCameraOptions | undefined) => Promise\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------------------- |\n| **`options`** | LocationCameraOptions |\n\n**Returns:** Promise<any>\n\n--------------------\n\n\n### getLocationCameraSwap(...)\n\n```typescript\ngetLocationCameraSwap(options?: LocationCameraOptions | undefined) => Promise\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------------------- |\n| **`options`** | LocationCameraOptions |\n\n**Returns:** Promise<any>\n\n--------------------\n\n\n### getLocationRadiusCamera(...)\n\n```typescript\ngetLocationRadiusCamera(options?: LocationRadiusCameraOptions | undefined) => Promise\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------------------------------- |\n| **`options`** | LocationRadiusCameraOptions |\n\n**Returns:** Promise<any>\n\n--------------------\n\n\n### getLocationRadiusCameraSwap(...)\n\n```typescript\ngetLocationRadiusCameraSwap(options?: LocationRadiusCameraOptions | undefined) => Promise\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------------------------------------- |\n| **`options`** | LocationRadiusCameraOptions |\n\n**Returns:** Promise<any>\n\n--------------------\n\n\n### Interfaces\n\n\n#### LocationCameraOptions\n\n| Prop | Type |\n| --------------- | ------------------- |\n| **`photoName`** | string |\n| **`quality`** | string |\n| **`maxSize`** | string |\n\n\n#### LocationRadiusCameraOptions","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asephermann_capacitor-greatday-camera-location.md","loc":{"lines":{"from":1,"to":99}}}}],["374c49a5-7529-471a-ba14-8d7a7633f070",{"pageContent":"#### LocationRadiusCameraOptions\n\n| Prop | Type |\n| ----------------- | -------------------- |\n| **`photoName`** | string |\n| **`quality`** | string |\n| **`maxSize`** | string |\n| **`location`** | string |\n| **`label1`** | string |\n| **`label2`** | string |\n| **`showAddress`** | boolean |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asephermann_capacitor-greatday-camera-location.md","loc":{"lines":{"from":99,"to":111}}}}],["7d0d3dd1-e321-4770-80ca-bde006c79238",{"pageContent":"# GeoFenceService\nPlugin for Tracking GeoFence Regions","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/baluworks_GeoFenceService.md","loc":{"lines":{"from":1,"to":2}}}}],["54abc4a0-c277-4c29-9dad-1845669e9680",{"pageContent":"# capacitor-plugin-printer\n\nCapacitor plugin for printing HTML format value iOS/Android apps.\n\nThis plugin supports Capacitor v5.x\n\n```typescript\nPrinter.print({ content: 'Lorem ipsum...'})\n```\n![screenshoots](https://github.com/BarisCanYesil/capacitor-plugin-printer/assets/17790689/818ea860-f3ba-4d8f-b08a-4df19ec57a43)\n\n\n### Supported Platforms\n\n- Android 5.1+\n- iOS 13+\n\n### Supported Contents\n\n- HTML (can use CSS inline styling)\n- Text\n- Image(as HTML)\n\n## Install\n\n```bash\nnpm install @bcyesil/capacitor-plugin-printer\nnpx cap sync\n```\n\n## Usage\n ```typescript\nimport { Printer } from '@bcyesil/capacitor-plugin-printer';\n\n.\n.\n.\n\n Printer.print({ content: 'Lorem ipsum...', name: 'lorem-filename', orientation: 'landscape' })\n```\n\n## Examples\nText:\n```typescript\n Printer.print({ content: 'Lorem ipsum...'})\n```\n\nHTML:\n```typescript\n Printer.print({ content: '

Lorem

'})\n```\n\nSuggestion for multiple lines:\n```typescript\n let contentTest: string = \"\";\n\n contentTest += '
  • Tea
  • '\n contentTest += '
  • Coffee
  • '\n contentTest += ''\n\n Printer.print({ content: contentTest })\n```\n\nImages with HTML:\n```typescript\n Printer.print({ content: ''})\n```\n\nwith inline CSS:\n```typescript\n Printer.print({ content: 'Lorem ipsum'})\n```\n\n## API\n\n\n\n* [`print(...)`](#print)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### print(...)\n\n```typescript\nprint(printOptions: PrintOptions) => Promise\n```\n\n| Param | Type |\n| ------------------ | ----------------------------------------------------- |\n| **`printOptions`** | PrintOptions |\n\n--------------------\n\n\n### Interfaces\n\n\n#### PrintOptions\n\n| Prop | Type | Description | Default | Since |\n| ----------------- | ------------------- | ----------------------------------------------------------- | -------------------------------------------------------------- | ----- |\n| **`content`** | string | HTML content for print. | | 0.0.1 |\n| **`name`** | string | Name of the print of the document. | iOS=YourAppName/Android=Document+CurrentTimestamp | 0.0.1 |\n| **`orientation`** | string | Orientation of the printing page. \"portrait\" or \"landscape\" | \"portrait\" | 0.0.1 |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/BarisCanYesil_capacitor-plugin-printer.md","loc":{"lines":{"from":1,"to":110}}}}],["754c7fe6-ecd5-4e8e-817e-7a48fe593dfc",{"pageContent":"# capacitor-plugin-ehr\nIonic Capacitor plugin to access iOS Clinical Records (FHIR). iOS only.\n\n## iOS installation\n\n- `npm i capacitor-plugin-ehr && npx cap sync`\n\n## API\n\n- authorize()\n- queryClinicalSampleType()\n- getRequestStatusForAuthorization()\n\n## Usage\n\n```ts\nimport { Injectable } from '@angular/core';\nimport { EhrPlugin, ClinicalRecordAuthorization, HKClinicalRecord, HKClinicalSampleType } from 'capacitor-plugin-ehr';\ndeclare var Capacitor;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HealthkitService {\n public ehrPlugin: EhrPlugin = Capacitor.Plugins.EhrPlugin as any;\n\n public async authorize() {\n return this.ehrPlugin.authorize({\n writePermissions: environment.healthKit.writePermissions as [HKClinicalSampleType],\n readPermissions: environment.healthKit.readPermissions as [HKClinicalSampleType]\n });\n }\n\n public async calculateAuthorizationStatus() {\n return await this.ehrPlugin.getRequestStatusForAuthorization({\n writePermissions: environment.healthKit.writePermissions as [HKClinicalSampleType],\n readPermissions: environment.healthKit.readPermissions as [HKClinicalSampleType]\n });\n }\n\n public async queryClinicalSampleType(sampleType: HKClinicalSampleType) {\n return this.ehrPlugin.queryClinicalSampleType({ sampleType });\n }\n}\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Chuckv01_capacitor-plugin-ehr.md","loc":{"lines":{"from":1,"to":45}}}}],["0469b73c-d10c-453b-a942-f1580f86a553",{"pageContent":"# Ionic Capacitor Screen Orientation\n\nFor detailed tutorial on how to use this plugin visit:\nhttps://medium.com/@hinddeep.purohit007/handling-screen-orientation-changes-in-capacitor-apps-19fe339578a6\n\nDemo Application: https://github.com/hinddeep/Demo-Ionic-Screen_Orientation\n\nPlatforms Supported: Android, iOS\n\nThe Capacitor plugin I’ve developed can be used to detect the current of orientation of the screen, lock the screen in a particular orientation (disable auto-rotate) or unlock screen rotation (enable auto-rotate) and to listen for orientation changes.\n\n# Installation
    \n\n npm install capacitor-screen-orientation \n\n# Android Configuration:
    \n\nOpen MainActivity.java and add the following code inside this.init()
    \n add(ScreenOrientation.class);
    \nAdding the above mentioned line will add the following import statement:
    \n import com.bkon.capacitor.screenorientation.ScreenOrientation;
    \nIf you encounter errors, please add both the lines manually to MainActivity.java

    \n\nIf you want to listen for the orientation change event on Android:
    \n\n1. Open “AndroidManifest.xml” for your app
    \n2. Find the Activity tag
    \n3. Go to android:configChanges=”...”
    \n4. Remove ‘orientation |’ from configChanges

    \n\nSupported Orientations:
    \n\n1. LANDSCAPE: left of right is decided by the device’s sensor
    \n2. LANDSCAPE_PRIMARY: explicitly specified by developer
    \n3. LANDSCAPE_SECONDARY: explicitly specified by developer
    \n4. PORTRAIT: up or upside down is decided by the device’s sensor
    \n5. PORTRAIT_PRIMARY: explicitly specified by the user
    \n6. PORTRAIT_SECONDARY: explicitly specified by the user
    \n7. CURRENT: current orientation of the device
    \n\nSPECIAL NOTE: Ionic has implicitly disabled PORTRAIT_SECONDARY.
    \n\n# iOS Configuration:
    \n\nIf you want to lock the screen to the specified orientation on iOS:
    \n\n1. Open AppDelegate.swift for your app
    \n2. Add the following code:
    \n\nvar orientationLock = UIInterfaceOrientationMask.all

    \n\nfunc application(\\_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    \nreturn self.orientationLock
    \n}
    ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hinddeep_capacitor-screen-orientation.md","loc":{"lines":{"from":1,"to":54}}}}],["fe66f2c9-c032-48c5-9012-cd5d1bde260c",{"pageContent":"@objc func setOrientationLock(_ notification: Notification)
    \n {
    \n if let data = notification.userInfo as? [String: Int]
    \n {
    \n for (_, mask) in data
    \n {
    \n switch mask
    \n {
    \n case 1: self.orientationLock = UIInterfaceOrientationMask.portrait
    \n break;
    \n case 2: self.orientationLock = UIInterfaceOrientationMask.portraitUpsideDown
    \n break;
    \n case 3: self.orientationLock = UIInterfaceOrientationMask.landscapeRight
    \n break;
    \n case 4: self.orientationLock = UIInterfaceOrientationMask.landscapeLeft
    \n break;
    \n case 5: self.orientationLock = UIInterfaceOrientationMask.landscape
    \n break;
    \n default: self.orientationLock = UIInterfaceOrientationMask.all
    \n }
    \n }
    \n }
    \n }
    \n\n3. Locate: \"func application(\\_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\"
    \n4. Add the following code inside the function:
    \n NotificationCenter.default.addObserver(self, selector: #selector(self.setOrientationLock), name: NSNotification.Name(rawValue: \"CAPOrientationLocked\"), object: nil)
    \n\n\nSupported Orientations:
    \n\n1. all: all orientations
    \n2. allButUpsideDown: all orientations other than upside down
    \n3. landscape: left of right is decided by the device’s sensor
    \n4. landscapeLeft: explicitly specified by the user
    \n5. landscapeRight: explicitly specified by the user
    \n6. portrait: up or upside down is decided by the device’s sensor
    \n7. portraitUpsideDown: explicitly specified by the user
    \n\n SPECIAL NOTE: Ionic has implicitly disabled portraitUpsideDown.
    \n\n# Import the Plugin in your Web app
    \n\nOpen app.component.ts file and import the plugin as follows:
    \n import { Plugins } from \"@capacitor/core\";
    \n const { ScreenOrientation } = Plugins;
    \n import 'capacitor-screen-orientation'
    \n\n SPECIAL NOTE: Remove import 'capacitor-screen-orientation' when compiling app for Android and iOS. THe native plugin will not be invoked if you forget to remove the import statement before building for Android and iOS Platform.
    \n\n# Handle screen orientation:\n\n1. Create a function to get the current screen orientation:
    \n async getOrientation() {
    \n let obj = await ScreenOrientation.getScreenOrientation();
    \n this.screen_orientation = obj.orientation;
    \n }
    \n\n2. Create a function to lock the screen in a particular orientation:\n async lockOrientation() {
    \n await ScreenOrientation.lockScreenOrientation({
    \n orientation: this.screen_orientation_lock,
    \n });
    \n }
    ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hinddeep_capacitor-screen-orientation.md","loc":{"lines":{"from":56,"to":119}}}}],["2fb6f3d9-0fea-4ce6-94a0-aaf731b88500",{"pageContent":"Supported values for screen_orientation_lock variable:
    \n\n1. LANDSCAPE_PRIMARY (Android and iOS)
    \n2. PORTRAIT_PRIMARY (Android and iOS)
    \n3. LANDSCAPE_SECONDARY (Android and iOS)
    \n4. PORTRAIT_SECONDARY (Android and iOS)
    \n5. LANDSCAPE (Android only)
    \n6. PORTRAIT (Android only)
    \n7. CURRENT (Android only)
    \n\n3) Create a function to unlock screen rotation:
    \n async UnlockOrientation() {
    \n await ScreenOrientation.unlockScreenOrientation({});
    \n }
    \n\n4) Create a function that handles subscription to the orientation change event:
    \n subscribeToOrientationChanges() {
    \n ScreenOrientation.addListener(\"orientation_changed\", (data) => {
    \n this.screen_orientation_event = data.orientation;
    \n });
    \n }
    \n\n# Rotate to a specific orientation (without locking the orientation): \nNOTE: NOT supported on Android
    \nasync rotate() {
    \n await ScreenOrientation.rotateTo({
    \n orientation: this.rotateTo,
    \n });
    \n }
    ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hinddeep_capacitor-screen-orientation.md","loc":{"lines":{"from":121,"to":149}}}}],["d57a2082-ed9c-4896-95ee-d55f37cfe982",{"pageContent":"# Capacitor Contacts plugin\n\nThis plugin retrieves all your phone contacts: name and phones (Only works in Android)\n\n## Installation\n\n```bash\nnpm install @arturober/capacitor-contacts@latest\n```\n\n## Necessary permissions\n\n```xml\n\n```\n\n## Usage\n\n```TypeScript\nimport { Plugins } from '@capacitor/core';\nconst { ContactsPlugin } = Plugins;\n\n@Component({\n selector: 'app-contacts',\n templateUrl: './contacts.page.html',\n styleUrls: ['./contacts.page.scss']\n})\nexport class ContactsPage implements OnInit {\n constructor() {}\n\n async ngOnInit() {\n const result = await ContactsPlugin.getContacts();\n console.log(result);\n }\n}\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/arturober_capacitor-contacts.md","loc":{"lines":{"from":1,"to":36}}}}],["64e25715-5e13-4ded-ac17-191d8c6956cf",{"pageContent":"# capacitor-plugin-barcodescanner\n\n[Capacitor Plugin](https://capacitor.ionicframework.com/docs/basics/using-plugins) to add barcode scanner capabilities to your capacitor app.\n\n_Note_ it only supports the android platform at the moment.\n\n## Installation\n\nInstall the plugin package by calling\n\n```CLI\nnpm install capacitor-plugin-barcodescanner\n```\n\nthen call\n\n```CLI\nnpx cap update\n```\n\nto update the android platfrom.\n\n### Android\n\nOpen the android project and the `MainActivity.java` to register the plugin\n\n```JAVA\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(BarcodeScanner.class);\n }});\n\n // some other code\n }\n```\n\n## Usage\n\nIn your web app, to consume the plugin you have to register for a barcode scanner notifications:\n\n```TypeScript\nimport { Plugins, Capacitor } from '@capacitor/core';\nimport {\n BarcodeScannerPlugin,\n EVENT_BARCODE_SCANNED,\n IBarcodeScannerEventPayload,\n} from 'capacitor-plugin-barcodescanner';\n\n// can be used later to remove BarcodeScanner listener\nlet removeScannerHandler?: (() => void) = undefined;\n\nconst barcodeScanned = (state: IBarcodeScannerEventPayload): void => {\n console.log(\"BarcodeScanned - \",state.cancelled, state.barcode, state.error)\n}\n// Get the BarcodeScanner plugin\n const BarcodeScanner = Plugins.BarcodeScanner as BarcodeScannerPlugin;\n// Register listener\n removeScannerHandler = BarcodeScanner.addListener(\n EVENT_BARCODE_SCANNED,\n barcodeScanned\n ).remove;\n\n// call to start scanning....\nBarcodeScanner.scan();\n// this will call the plugin's scan method which starts scanning activity, after finishing the `EVENT_BARCODE_SCANNED` will be issued.\n\n\n// when not needed\nif(removeScannerHandler) {\n removeScannerHandler();\n removeScannerHandler = undefined;\n}\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/LukaszGrela_capacitor-plugin-barcodescanner.md","loc":{"lines":{"from":1,"to":79}}}}],["ce623a62-0d21-43e6-9141-9ab2230e01af",{"pageContent":"
    \n
    \n

    \n \"Capacitor\n

    \n
    \n
    \n

    \n \n \n \n \n \n \n

    \n\n## Features\n\nCapacitor Firebase is a collection of Capacitor plugins that make it easier for you to use [Firebase](https://firebase.google.com/) in your Capacitor project.[^1]\n\n- 🔋 Supports **Android, iOS and the Web**\n- ⚡️ **Capacitor 5** support\n- 🔥 **Firebase Web SDK version 9** (modular) support\n- 🦋 Consistent versioning (no more SDK versions conflicts)\n- 👁 Unified Typescript definitions\n- 📄 Full documentation\n- ⚙️ Under active development, more plugins coming soon\n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| ---------- | ----------------------------------------- | --------------------------------------------- |\n| Robin Genz | [robingenz](https://github.com/robingenz) | [@robin_genz](https://twitter.com/robin_genz) |\n\n## Sponsors\n\nThis is an Apache-2.0-licensed open source project.\nIt can grow thanks to the support by these awesome people.\nIf you'd like to join them, please read more [here](https://github.com/sponsors/capawesome-team).\n\n\n\n\n\n\"cycraft\"\n\n## Installation\n\nEach plugin has its own installation instructions.\nClick on the name of the desired plugin under the [`Plugins`](#plugins) section to get to the installation guide.\n\n## Plugins","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/robingenz_capacitor-firebase.md","loc":{"lines":{"from":1,"to":52}}}}],["0a70aed4-8ea6-4843-9f26-b1d78126a21d",{"pageContent":"| Name | Package | Version | Downloads |\n| ------------------------------------------------ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| [Analytics](./packages/analytics) | `@capacitor-firebase/analytics` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/analytics?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/analytics) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/analytics?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/analytics) |\n| [App](./packages/app) | `@capacitor-firebase/app` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/app?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/app) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/app?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/app) |\n| [App Check](./packages/app-check) | `@capacitor-firebase/app-check` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/app-check?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/app-check) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/app-check?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/app-check) |\n| [Authentication](./packages/authentication) | `@capacitor-firebase/authentication` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/authentication?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/authentication) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/authentication?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/authentication) |\n| [Crashlytics](./packages/crashlytics) | `@capacitor-firebase/crashlytics` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/crashlytics?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/crashlytics) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/crashlytics?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/crashlytics) |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/robingenz_capacitor-firebase.md","loc":{"lines":{"from":54,"to":60}}}}],["62266037-faaf-4f8d-b437-f48e36f79cb3",{"pageContent":"| [Cloud Messaging](./packages/messaging) | `@capacitor-firebase/messaging` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/messaging?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/messaging) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/messaging?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/messaging) |\n| [Performance Monitoring](./packages/performance) | `@capacitor-firebase/performance` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/performance?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/performance) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/performance?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/performance) |\n| [Remote Config](./packages/remote-config) | `@capacitor-firebase/remote-config` | [![npm badge](https://img.shields.io/npm/v/@capacitor-firebase/remote-config?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/remote-config) | [![npm downloads](https://img.shields.io/npm/dw/@capacitor-firebase/remote-config?style=flat-square)](https://www.npmjs.com/package/@capacitor-firebase/remote-config) |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/robingenz_capacitor-firebase.md","loc":{"lines":{"from":61,"to":63}}}}],["cd7ea6bd-6f3b-4e2b-b9b8-4465a76ea15e",{"pageContent":"## Changelogs\n\nEach plugin has its own `CHANGELOG.md` file which contains information about version changes.\nClick on the name of the desired plugin under the [`Plugins`](#plugins) section to get to the plugin folder.\n\n## Breaking Changes\n\nEach plugin has its own `BREAKING.md` file which contains information about breaking changes.\nClick on the name of the desired plugin under the [`Plugins`](#plugins) section to get to the plugin folder.\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## License\n\nSee [LICENSE](./LICENSE).\n\n[^1]: This project is not affiliated with, endorsed by, sponsored by, or approved by Google LLC or any of their affiliates or subsidiaries.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/robingenz_capacitor-firebase.md","loc":{"lines":{"from":65,"to":83}}}}],["6252c99d-d3dd-4f47-a43e-4d07d3b3a014",{"pageContent":"# capacitor-notificationlistener\n\nObserve android notification being posted / removed using this NotificationListenerService wrapper for capacitor.\n\n## Installation\n\n```\nnpm i capacitor-notificationlistener\nnpx cap sync\n```\n\nRegister this plugin using ```add(NotificationListenerPlugin.class)``` in your ```MainActivity.java``` like in the following example:\n```java\n// ... code ...\nimport ch.asinz.capacitornotificationlistener.NotificationListenerPlugin;\n// ... code ...\n this.init(savedInstanceState, new ArrayList>() {{\n // Put it here!\n add(NotificationListenerPlugin.class);\n }});\n// ... code ...\n```\n### Permissions\nAdd the following, contained in ``````, to your AndroidManifest.xml:\n\n```xml\n\n \n \n \n\n```\n\n## Usage \nImport the plugin.\n```typescript\nimport { SystemNotification, SystemNotificationListener } from 'capacitor-notificationlistener';\nconst sn = new SystemNotificationListener();\n```\n\nStart listening for notifications. \n```typescript\nsn.startListening();\n```\n\nAdd a listener for new notifications or the removal of notifications.\nMake sure you have called ```sn.startListening()``` to be able to receive notifications.\n```typescript\nsn.addListener(\"notificationReceivedEvent\", (info: SystemNotification) => {\n // logic ...\n});\nsn.addListener(\"notificationRemovedEvent\", (info: SystemNotification) => {\n // logic ...\n});\n```\n\nSystemNotification Interface.\nThe anotomy of android notifications is explained [here](https://developer.android.com/guide/topics/ui/notifiers/notifications#Templates).\n```typescript\ninterface SystemNotification {\n apptitle: string; // Title of a notifications' app\n text: string; // Text of a notification\n textlines: string[]; // Text of a multi-line notification\n title: string; // Title of a notification\n time: Date; // Time when a notification was received\n package: string; // Package-name of a notifications' app\n}\n```\n\nCheck if the App is listening for notifications.\nIf it is not, even though ```sn.startListening()``` was called,\nyour app doesn't have sufficient permissions to observe notifications.\n```typescript\nsn.isListening().then((value : boolean) => {\n // logic ... \n // example code:\n // if not listening\n if (!value)\n // ask for Permission\n sn.requestPermission()\n});\n```\n\nOpen settings so that the user can authorize your app.\n```typescript\nsn.requestPermission();\n```\n\nStop listening for notifications.\n```typescript\nsn.stopListening();\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Alone2_capacitor-notificationlistener.md","loc":{"lines":{"from":1,"to":94}}}}],["2261ba49-6d58-47ab-8b56-74a15527b9e4",{"pageContent":"

    This is a README file for hello-cap

    \nlatest version: \n

    1.0.0

    ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/iamshubh_capacitorPlugin.md","loc":{"lines":{"from":1,"to":3}}}}],["5baad486-0217-42b4-878a-b58934cf48ca",{"pageContent":"## Capacitor Plugin Sensors\n\n### Support platform\n\n* android\n\n### Install\n\n> npm i --save capacitor-plugin-sensors\n\n### Usage example\n\n``` typescript\n\nimport { SensorsPlugin, SensorType, Sensor } from 'capacitor-plugin-sensors/dist/esm';\n\n// query sensors by type\nSensorsPlugin.get(SensorType.ALL).then(\n sensors => {\n\n // find sensor whos type is SensorType.LIGHT\n let lightSensor: Sensor = null;\n for (const sensor of sensors) {\n if (sensor.type == SensorType.LIGHT && lightSensor == null) {\n lightSensor = sensor;\n }\n \n console.log(`get sensor: ${sensor.id} ${sensor.name} ${sensor.type}`);\n }\n\n if (lightSensor != null) {\n // start sensor and listening its values\n SensorsPlugin.start(lightSensor, values => {\n console.log(`get light values: ${values}`);\n }, error => {\n console.error(`get light value error: ${error}`);\n });\n }\n }\n).catch(e => console.error(e));\n\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/zzlcoding_capacitor-plugin-sensors.md","loc":{"lines":{"from":1,"to":42}}}}],["898ac6f0-dccf-4bfb-a726-11792c06cdcc",{"pageContent":"# Capacitor Plugin Demo\nAn example of a Capacitor plugin which make native Swift and Java code available for use in Typescript for an Ionic project\n\n## TypeScript Interface\n\nOpen [src/definitions.ts](src/definitions.ts)\n\n```\ndeclare module \"@capacitor/core\" {\n interface PluginRegistry {\n DemoPlugin: DemoPluginPlugin;\n }\n}\n\nexport interface DemoPluginPlugin {\n sum(options: { first: number, second: number}): Promise<{value: number}>;\n}\n```\n\n## Example of exposing native code\n### iOS\n\nOpen [ios/Plugin/Plugin.swift](ios/Plugin/Plugin.swift)\n\nA Capacitor plugin for iOS is a simple Swift class that extends CAPPlugin and has some exported methods that will be callable from Typescript.\n\n```\n@objc(DemoPlugin)\npublic class DemoPlugin: CAPPlugin {\n \n @objc func sum(_ call: CAPPluginCall) {\n guard let first = call.getInt(\"first\"),\n let second = call.getInt(\"second\") else {\n call.reject(\"Received invalid input\")\n return\n }\n let sum = first + second\n call.success([\"sum\": sum])\n }\n}\n```\n\nEach plugin method receives an instance of CAPPluginCall containing all the information of the plugin method invocation from the client.\n\n#### Export to Capacitor\n\nOpen [ios/Plugin/Plugin.m](ios/Plugin/Plugin.m)\n\nTo make sure Capacitor can see your plugin, you must do two things: export your Swift class to Objective-C, and register it using the provided Capacitor Objective-C Macros.\n\n```\nCAP_PLUGIN(DemoPlugin, \"DemoPlugin\",\n CAP_PLUGIN_METHOD(sum, CAPPluginReturnPromise);\n```\n\n### Android\n\nOpen [android/src/main/java/com/louisdebaere/demo/plugin/DemoPlugin.java](android/src/main/java/com/louisdebaere/demo/plugin/DemoPlugin.java)\n\nA Capacitor plugin for Android is a simple Java class that extends com.getcapacitor.Plugin and have a @NativePlugin annotation. It has some methods with @PluginMethod() annotation that will be callable from Typescript.\n\n```\n@NativePlugin()\npublic class DemoPlugin extends Plugin {\n\n @PluginMethod()\n public void sum(PluginCall call) {\n Integer first = call.getInt(\"first\");\n Integer second = call.getInt(\"second\");\n Integer sum = first + second;\n JSObject ret = new JSObject();\n ret.put(\"sum\", sum);\n call.success(ret);\n }\n}\n```\n\nEach plugin method receives an instance of com.getcapacitor.PluginCall containing all the information of the plugin method invocation from the client.\n\n#### Export to Capacitor\n\nBy using the @NativePlugin and @PluginMethod() annotations in your plugins, you make them available to Capacitor, but you still need an extra step in your application to make Capacitor aware of the plugins.\n\nThis is done in your apps MainActivity, where you add it in e.g. `src/main/java/com/example/myapp/MainActivity.java` like so:\n\n```\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/louisdebaere_capacitor-demo-plugin.md","loc":{"lines":{"from":1,"to":90}}}}],["7ebda04f-9f3a-4a7c-8061-0fed07e6ec73",{"pageContent":"// Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(DemoPlugin.class);\n }});\n }\n}\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/louisdebaere_capacitor-demo-plugin.md","loc":{"lines":{"from":92,"to":100}}}}],["f47c8109-c882-45f8-bbd9-5ca841c351a5",{"pageContent":"# Capacitor Square Payments\n\nThis is massively WIP. Only has iOS support as of 2/20/21. Still need to figure out how to enable ejecting Swift Views.\n\n## Installation\n\n```\nnpm install --save capacitor-square-payments\nnpx cap update\n```\n\nThen:\n\n```\nimport { Plugins } from '@capacitor/core';\nconst { SquarePayment } = Plugins;\n\nSquarePayment.initApp({\n\t\t\tapplicationId: 'REPLACE_ME',\n\t\t\tappleMerchantId: 'REPLACE ME: APPLE MERCHANT ID',\n\t\t});\n\n// Request Payment (Returns a nonce you can use to complete payment)\nasync makeNativePaymentRequest() {\n\t\t\treturn await SquarePayment.requestNonce({\n\t\t\t\tamount: this.order.order_total,\n\t\t\t});\n\t\t},\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jbrown0824_capacitor-square-payments.md","loc":{"lines":{"from":1,"to":29}}}}],["a9b53318-deb5-4e26-894d-ea43275efb3a",{"pageContent":"# multiplatform-biometric-auth\n\nPlugin para autenticar con metodos biometricos\n\n## Install\n\n```bash\nnpm install multiplatform-biometric-auth\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`deviceSupportBiometricLogin()`](#devicesupportbiometriclogin)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### deviceSupportBiometricLogin()\n\n```typescript\ndeviceSupportBiometricLogin() => Promise<{ value: boolean; }>\n```\n\n**Returns:** Promise<{ value: boolean; }>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/gabii998_capacitorAuthPlugin.md","loc":{"lines":{"from":1,"to":49}}}}],["6e727bf9-a3be-4e67-b115-bd7c98d57479",{"pageContent":"# capacitor-yooga-bematech","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/cassianogf_capacitor-yooga-bematech.md","loc":{"lines":{"from":1,"to":1}}}}],["78469bde-d559-44bb-9d56-b8df04fb7342",{"pageContent":"# printer\n\nPrinter for the MOZ POS android device.\n\n## Install\n\n```bash\nnpm install printer\nnpx cap sync\n```\n\n## API\n\n\n\n* [`print(...)`](#print)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### print(...)\n\n```typescript\nprint(options: any) => Promise\n```\n\n| Param | Type |\n| ------------- | ---------------- |\n| **`options`** | any |\n\n**Returns:** Promise<SuccessResponse>\n\n--------------------\n\n\n### Interfaces\n\n\n#### SuccessResponse\n\n| Prop | Type |\n| ------------- | ------------------- |\n| **`message`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/ekasi-developer_printer.md","loc":{"lines":{"from":1,"to":48}}}}],["6bc6505b-e110-429d-a42d-f83ea3bd8427",{"pageContent":"

    \n\"Capacitor

    \n\n

    Capacitor-Android-Hotspot

    \n\n

    \n\n \n \n

    \n\n

    \nDocumentation Website\n

    \n\n**Current version: 0.0.8**\n\n**NPM release: https://www.npmjs.com/package/capacitor-android-hotspot**\n\n--- \n\n**Only for Android .... in case the name of the plugin is not explicit enough**\n\nCapacitor plugin to allow creating a local only hotspot that an application can use to communicate \nbetween co-located devices connected to the created WiFi hotspot. \n\nThe network created by this method **WILL NOT HAVE INTERNET ACCESS**. This is an Android *limitation*, or design decision. \n\nEach application can make a single request for the hotspot, but multiple applications could be requesting \nthe hotspot at the same time. When multiple applications have successfully registered concurrently, \nthey will be sharing the underlying hotspot. \n\n**This is a work in progress for an internal project**\n\n## How to use this\n\nIf you want to use the official version that is published on npm : \n\n```\nyarn add capacitor-android-hotspot\n```\n\nIf you want to use a clone of this repository: \n\n* Git clone this code\n\n* Build it using : `yarn build`\n\n* Add the plugin to your Capacitor Android Project\n\n```\nyarn add file:/path/to/capacitor-android-hotspot\n```\n\n**Now do Android Plugin integration:**\n\n```java\npackage com.example.android.project;\n\nimport android.os.Bundle;\n\nimport com.getcapacitor.BridgeActivity;\nimport com.getcapacitor.Plugin;\n\nimport java.util.ArrayList;\n\n// ----------------- IMPORT THE PLUGIN ---------------------- \nimport com.jbaysolutions.capacitor.hotspot.AndroidHotspotPlugin; \n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n \n // -------------- ADD THE PLUGIN ------------- \n add(AndroidHotspotPlugin.class);\n }});\n }\n}\n```\n\n* Use it on your Capacitor Project:\n\n```javascript\n// Import bits\nimport { Plugins } from '@capacitor/core'\nimport 'capacitor-android-hotspot'\nconst { AndroidHotspotPlugin } = Plugins\n\n// and then use the AndroidHotspotPlugin","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jbaysolutions_capacitor-android-hotspot.md","loc":{"lines":{"from":1,"to":95}}}}],["b68e95f0-8e44-4498-9cd2-8c01d4fe9129",{"pageContent":"// and then use the AndroidHotspotPlugin\n\nAndroidHotspotPlugin.hasPermissions();\nAndroidHotspotPlugin.requestAndroidPermissions();\nAndroidHotspotPlugin.createHotspot();\nAndroidHotspotPlugin.stopHotspot();\nAndroidHotspotPlugin.getHotspotConfig();\nAndroidHotspotPlugin.openLocationSettings();\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jbaysolutions_capacitor-android-hotspot.md","loc":{"lines":{"from":95,"to":103}}}}],["83b05d39-a0cf-4d2c-a430-83f3b463c2e5",{"pageContent":"# coop-nfc\n\nPlugin for reading card numbers\n\n## Install\n\n```bash\nnpm install coop-nfc\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`waitNFC()`](#waitnfc)\n* [`startNfcListening()`](#startnfclistening)\n* [`handleOnNewIntent()`](#handleonnewintent)\n* [`startScan()`](#startscan)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### waitNFC()\n\n```typescript\nwaitNFC() => Promise\n```\n\n--------------------\n\n\n### startNfcListening()\n\n```typescript\nstartNfcListening() => Promise\n```\n\n--------------------\n\n\n### handleOnNewIntent()\n\n```typescript\nhandleOnNewIntent() => Promise\n```\n\n--------------------\n\n\n### startScan()\n\n```typescript\nstartScan() => Promise\n```\n\n**Returns:** Promise<ScanResult>\n\n--------------------\n\n\n### Interfaces\n\n\n#### IScanResultWithContent","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/harrisonkungu_coopnfc.md","loc":{"lines":{"from":1,"to":85}}}}],["c36965fa-c381-4976-b802-bc7593787ffa",{"pageContent":"--------------------\n\n\n### Interfaces\n\n\n#### IScanResultWithContent\n\n| Prop | Type | Description | Since |\n| ---------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`hasContent`** | true | This indicates whether or not the scan resulted in readable content. When stopping the scan with `resolveScan` set to `true`, for example, this parameter is set to `false`, because no actual content was scanned. | 1.0.0 |\n| **`content`** | string | This holds the content of the nfc if available. | 1.0.0 |\n| **`cardType`** | string | This holds the card type detected. | 1.0.0 |\n| **`cardNumber`** | string | This holds the card number detected. | 1.0.0 |\n| **`expiryDate`** | string | This holds the expiry date of the card detected. | 1.0.0 |\n| **`format`** | string | This returns format of scan result. | 2.1.0 |\n\n\n#### IScanResultWithoutContent","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/harrisonkungu_coopnfc.md","loc":{"lines":{"from":85,"to":103}}}}],["8de07120-32bf-442d-96d3-9fa931423122",{"pageContent":"#### IScanResultWithoutContent\n\n| Prop | Type | Description | Since |\n| ---------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |\n| **`hasContent`** | false | This indicates whether or not the scan resulted in readable content. When stopping the scan with `resolveScan` set to `true`, for example, this parameter is set to `false`, because no actual content was scanned. | 1.0.0 |\n| **`content`** | | This holds the content of the nfc if available. | 1.0.0 |\n| **`format`** | | This returns format of scan result. | 2.1.0 |\n\n\n### Type Aliases\n\n\n#### ScanResult\n\nIScanResultWithContent | IScanResultWithoutContent\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/harrisonkungu_coopnfc.md","loc":{"lines":{"from":103,"to":119}}}}],["bb0f8b73-22a8-4ffc-9bf8-8b351189c188",{"pageContent":"## Created with Capacitor Create App\n\nThis app was created using [`@capacitor/create-app`](https://github.com/ionic-team/create-capacitor-app),\nand comes with a very minimal shell for building an app.\n\n### Running this example\n\nTo run the provided example, you can use [serve](https://www.npmjs.com/package/serve):\n\n```bash\nnpm start\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SrknMcT_RouteNavigation.md","loc":{"lines":{"from":1,"to":12}}}}],["2c2f4f43-60bd-4128-92d9-919d42574f36",{"pageContent":"# capacitor-plugin-dynamsoft-label-recognizer\n\nCapacitor plugin of [Dynamsoft Label Recognizer](https://www.dynamsoft.com/label-recognition/overview/) which brings text recognition ability to your apps.\n\n## Install\n\n```bash\nnpm install capacitor-plugin-dynamsoft-label-recognizer\nnpx cap sync\n```\n\n## Demo\n\n[Vanilla JS example](https://github.com/tony-xlh/capacitor-plugin-dynamsoft-label-recognizer/tree/main/example)\n\n## API\n\n\n\n* [`initialize()`](#initialize)\n* [`initLicense(...)`](#initlicense)\n* [`recognizeBase64String(...)`](#recognizebase64string)\n* [`updateRuntimeSettings(...)`](#updateruntimesettings)\n* [`resetRuntimeSettings()`](#resetruntimesettings)\n* [`setEngineResourcesPath(...)`](#setengineresourcespath)\n* [`addListener('onResourcesLoadStarted', ...)`](#addlisteneronresourcesloadstarted)\n* [`addListener('onResourcesLoaded', ...)`](#addlisteneronresourcesloaded)\n* [`removeAllListeners()`](#removealllisteners)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\n\n\n\n\n### initialize()\n\n```typescript\ninitialize() => Promise\n```\n\n--------------------\n\n\n### initLicense(...)\n\n```typescript\ninitLicense(options: { license: string; }) => Promise\n```\n\n| Param | Type |\n| ------------- | --------------------------------- |\n| **`options`** | { license: string; } |\n\n--------------------\n\n\n### recognizeBase64String(...)\n\n```typescript\nrecognizeBase64String(options: { base64: string; }) => Promise<{ results: DLRResult[]; }>\n```\n\n| Param | Type |\n| ------------- | -------------------------------- |\n| **`options`** | { base64: string; } |\n\n**Returns:** Promise<{ results: DLRResult[]; }>\n\n--------------------\n\n\n### updateRuntimeSettings(...)\n\n```typescript\nupdateRuntimeSettings(options: { settings: RuntimeSettings; }) => Promise\n```\n\n| Param | Type |\n| ------------- | -------------------------------------------------------------------------- |\n| **`options`** | { settings: RuntimeSettings; } |\n\n--------------------\n\n\n### resetRuntimeSettings()\n\n```typescript\nresetRuntimeSettings() => Promise\n```\n\n--------------------\n\n\n### setEngineResourcesPath(...)\n\n```typescript\nsetEngineResourcesPath(options: { path: string; }) => Promise\n```\n\n| Param | Type |\n| ------------- | ------------------------------ |\n| **`options`** | { path: string; } |\n\n--------------------\n\n\n### addListener('onResourcesLoadStarted', ...)\n\n```typescript\naddListener(eventName: 'onResourcesLoadStarted', listenerFunc: onResourcesLoadStartedListener) => Promise & PluginListenerHandle\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/tony-xlh_capacitor-plugin-dynamsoft-label-recognizer.md","loc":{"lines":{"from":1,"to":113}}}}],["23039e88-f3dd-40d7-83b4-800c809fec83",{"pageContent":"| Param | Type |\n| ------------------ | ----------------------------------------------------------------------------------------- |\n| **`eventName`** | 'onResourcesLoadStarted' |\n| **`listenerFunc`** | onResourcesLoadStartedListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n--------------------\n\n\n### addListener('onResourcesLoaded', ...)\n\n```typescript\naddListener(eventName: 'onResourcesLoaded', listenerFunc: onResourcesLoadedListener) => Promise & PluginListenerHandle\n```\n\n| Param | Type |\n| ------------------ | ------------------------------------------------------------------------------- |\n| **`eventName`** | 'onResourcesLoaded' |\n| **`listenerFunc`** | onResourcesLoadedListener |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n--------------------\n\n\n### removeAllListeners()\n\n```typescript\nremoveAllListeners() => Promise\n```\n\n--------------------\n\n\n### Interfaces\n\n\n#### DLRResult\n\n| Prop | Type |\n| ----------------- | ------------------------------------------------------------- |\n| **`location`** | DLRQuadrilateral |\n| **`confidence`** | number |\n| **`lineResults`** | DLRLineResult[] |\n\n\n#### DLRQuadrilateral\n\n| Prop | Type |\n| ------------ | ----------------------- |\n| **`points`** | DLRPoint[] |\n\n\n#### DLRPoint\n\n| Prop | Type |\n| ------- | ------------------- |\n| **`x`** | number |\n| **`y`** | number |\n\n\n#### DLRLineResult\n\n| Prop | Type |\n| ------------------------- | ------------------------------------------------------------- |\n| **`text`** | string |\n| **`location`** | DLRQuadrilateral |\n| **`confidence`** | number |\n| **`isCheckDigitMatched`** | boolean |\n\n\n#### RuntimeSettings","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/tony-xlh_capacitor-plugin-dynamsoft-label-recognizer.md","loc":{"lines":{"from":115,"to":187}}}}],["ea7b3271-c824-4dbc-a8b0-3aad34406a78",{"pageContent":"#### RuntimeSettings\n\n| Prop | Type |\n| ----------------------- | --------------------------------------------------------------- |\n| **`template`** | string |\n| **`customModelConfig`** | CustomModelConfig |\n\n\n#### CustomModelConfig\n\n| Prop | Type |\n| -------------------------- | --------------------- |\n| **`customModelFolder`** | string |\n| **`customModelFileNames`** | string[] |\n\n\n#### PluginListenerHandle\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`remove`** | () => Promise<void> |\n\n\n### Type Aliases\n\n\n#### onResourcesLoadStartedListener\n\n(resourcePath: string): void\n\n\n#### onResourcesLoadedListener\n\n(resourcePath: string): void\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/tony-xlh_capacitor-plugin-dynamsoft-label-recognizer.md","loc":{"lines":{"from":187,"to":222}}}}],["e6324c55-ebf1-4f29-bbce-3d6f80be5444",{"pageContent":"\n\n\n\n\n\n# Android Send Intent Plugin for Capacitor\nThis plugin allows you to expose a listener in your Javascript application for when another application sends data to your Capacitor application via the Android share menu or share sheet. This is useful if your Android application would like to receive data from other apps and your app can handle the shared data.\n\nThe `SendIntent` plugin exposes one event `appSendActionIntent` that receives a `data` object which contains the information received from the native intent verbatim. This is why you will see the keys for some of the objects are strange (i.e `android.intent.extra.TEXT`). However, this is intentional as it ensures compatibility with Android's contants for these values. \n\nThis plugin currently only supports Android.\n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| -----------| -------| -------|\n| Gustavo San Jose | [tavosansal](https://github.com/tavosansal) | [@tavosansal](https://twitter.com/tavosansal) |\n\n## Installation\n\n```bash\nnpm i capacitor-plugin-send-intent\n```\n\n## Configuration\n\n### Register Plugin on Capacitor Android App\n\nFirst you must register this plugin as part of your Android capacitor app. This is done in the `MainActivity.java file`. It should be located at `your-project-name/android/app/src/main/java/com/yourdomain/yourproject/MainActivity.java`\n\n```java\nimport com.gustavosanjose.sendintentplugin.SendIntent;\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/tavosansal_capacitor-plugin-send-intent.md","loc":{"lines":{"from":1,"to":51}}}}],["f716f460-d7d9-4772-97e5-12ea6ad21b4f",{"pageContent":"// Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(SendIntent.class);\n }});\n }\n}\n```\n\n### Register Intent Filters\nNext, you must add what type of intents your application can receive from other apps. This is done in the `AndroidManifest.xml` file located at `your-project-name/android/app/src/main/AndroidManifest.xml`. Under the `` node you can add intent filters for your application. Here is an example for an intent filter that receives plain text from other apps.\n\n```xml\n\n \n \n \n\n```\n\nIt is possible to receive other different date types like images and video. You may add your intent filters here as well.\n\nYou can find more information about intent filters [here](https://developer.android.com/guide/components/intents-filters)\n\n## Usage\n\nOnce setup is complete, you can add an event listener for when a different application sends data to your application with the specified Intent Filter. \nThis usually happens from the Android share sheet. You can hook into that intent filter and handle the information in your Capacitor application. Here is an example event listener in Javascript code:\n\n```javascript\n// This is a contribed example. You probably want to add this listener where you have other Capacitor listeners in your corresponding app code for your framework of choice.\n\nimport { Plugins } from \"@capacitor/core\";\n\nconst { SendIntent } = Plugins;\n\nSendIntent.addListener('appSendActionIntent', (data) => {\n const { extras } = data;\n const textKey = 'android.intent.extra.TEXT';\n \n alert(`This ${extras[textKey]} was shared from another app!`);\n});\n```\n\nSince the native event will relay the `extras` as they come to your Javascript project you don't necesarily need a different event for each intent filter your application will handle. You can handle different types from within the same event listener:\n\n```javascript\nSendIntent.addListener('appSendActionIntent', (data) => {\n const { extras } = data;\n const textKey = 'android.intent.extra.TEXT';\n // Usually for image and video intent\n const streamKey = 'android.intent.extra.STREAM';\n \n if (extras[textKey]) {\n // Do something with the text\n } else if (extras[streamKey]) {\n // Do something with the stream\n }\n});\n```\n\n## Tips\n### Be Aware of Framework Lifecycle\nIf you register an event and you share information from another app to your Capacitor app bear in mind that your app might not be booted at that time. Therefore you might not have your framework's code at your disposal. So depending on what you are doing you might have to save that information from `extras` and consume it once your Capacitor app is fully booted up. This usually happens on a cold boot of the app.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/tavosansal_capacitor-plugin-send-intent.md","loc":{"lines":{"from":53,"to":117}}}}],["79a0cffc-707a-461b-b97b-f30e2596207c",{"pageContent":"### What about iOS?\niOS is technically possible but it is a much more involved process that requires you to create a Share Target for your application. This is something I may do in the future but I cannot guaranteed that functionality.\n\n### What about the browser's Share API?\nThe share API works for sharing data from your app to another app. It is fully supported on Chrome for Android.\nHowever, if you want the inverse and receive data from other apps you need to use this plugin.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/tavosansal_capacitor-plugin-send-intent.md","loc":{"lines":{"from":120,"to":125}}}}],["90a08750-5cc6-4e24-ad8a-225dc2601a34",{"pageContent":"

    Capacitor Background Geolocation

    \n

    capacitor-background-geolocation

    \n

    \n Capacitor plugin for enabling background geolocation service\n

    \n\n[![npm version](https://badge.fury.io/js/capacitor-background-geolocation.svg)](https://badge.fury.io/js/capacitor-background-geolocation)\n![NPM Publish](https://github.com/seididieci/capacitor-backround-geolocation/workflows/NPM%20Publish/badge.svg)\n\n## Maintainers\n\n| Maintainer | GitHub |\n| --------------- | ------------------------------------------- |\n| Damiano Brunori | [seididieci](https://github.com/seididieci) |\n\n## Notice 🚀\n\nThis plugin actually works only in android. It creates a foreground service (with a notification on android) to keep your app getting location updates.\n\n## Installation\n\nUsing npm:\n\n```bash\nnpm install capacitor-background-geolocation\n```\n\nSync native files:\n\n```bash\nnpx cap sync\n```\n\n## API\n\n| method | info | platform |\n| ---------------- | -------------------------------------------------------- | ----------- |\n| `initialize` | initialize/start service and configure | web/android |\n| `start` | starts the service getting location updates | web/android |\n| `stop` | stops the service getting location updates | web/android |\n| `goForeground` | bring the service on foreground (showing a notification) | android |\n| `stopForeground` | bring the service back to the bacground | android |\n\n## Usage steps (TypeScript)\n\n### Import plugin and types\n\n```ts\nimport { Plugins } from '@capacitor/core';\nconst { BackgroundGeolocation } = Plugins;\n\nimport {\n BgLocationEvent,\n BgGeolocationAccuracy,\n} from 'capacitor-background-geolocation';\n```\n\n### Add listner(s) for location updates\n\n```ts\nBackgroundGeolocation.addListener('onLocation', (location: BgLocationEvent) => {\n console.log('Got new location', location);\n // Put your logic here.\n});\n```\n\n### Start service after the user accept permissions (through Android popup)\n```ts\nBackgroundGeolocation.addListener('onPermissions', (data: BgPermissions) => {\n console.log('BGLocation permissions:', location);\n\n // Start geolocation if user granted location permisiions\n if (data.fineLocation)\n BackgroundGeolocation.start();\n});\n```\n\n### Initialize the plugin settings (required)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/seididieci_capacitor-backround-geolocation.md","loc":{"lines":{"from":1,"to":78}}}}],["84012d5d-2950-4fee-96bb-fa9548b45bb8",{"pageContent":"### Initialize the plugin settings (required)\n\n```ts\nBackgroundGeolocation.initialize({\n notificationText: 'Your app is running, tap to open.',\n notificationTitle: 'App Running',\n updateInteval: 10000,\n requestedAccuracy: BgGeolocationAccuracy.HIGH_ACCURACY,\n // Small icon has to be in 'drawable' resources of your app\n // if you does not provide one (or it is not found) a fallback icon will be used.\n smallIcon: 'ic_small_icon',\n // Start getting location updates right away. You can set this to false or not set at all (se below).\n startImmediately: true,\n});\n```\n### Request permissions to user\n```ts\n// After user accept permissions the handler above will start the service\nBackgroundGeolocation.requestPermissions();\n```\n\n### Evnetually stop getting location updates when done\n```ts\nBackgroundGeolocation.stop();\n```\n\n### Control background/foreground behaviour\n```ts\n// Force the service to run in foreground\n// It will show the android notification also when your app is up and running\nBackgroundGeolocation.goFroreground();\n\n// Restore the service to run in backgroud/default mode: the android notification will be shown only when your app goes in background.\nBackgroundGeolocation.stopForeground();\n\n```\nKeep in mind that the plugin will send the service in the foreground when your APP is going into background until you stop the service or quit the APP.\n\n### Android\n\n> ### Notice\n>\n> Remember to add this plugin to your app main acctivity:\n>\n> ```java\n> import com.getcapacitor.community.bglocation.BackgroundGeolocation;\n>\n> //....\n>\n> // Initializes the Bridge\n> this.init(savedInstanceState, new ArrayList>() {{\n> // Additional plugins you've installed go here\n>\n> // \n>\n> add(BackgroundGeolocation.class);\n> }});\n> ```\n>The `AndroidManifest.xml` should be automaticcaly filled with the right permissions through a `cap sync` command but sometimes it doesn't...
    \n>Check that there are `FOREGROUND_SERVICE` and `ACCESS_FINE_LOCATION` permissions. in your App Manifest.\n\n### iOS\n\nThis plugin is not yet implemented iOS side, if someone wants to help I will appreciate it...\n\n## License\n\ncapacitor-background-geolocation is 100% free and open-source, under the [MIT license](LICENSE). Use it however you want.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/seididieci_capacitor-backround-geolocation.md","loc":{"lines":{"from":78,"to":145}}}}],["a079df39-14da-48d3-a105-07ee5512f004",{"pageContent":"# capacitor-firebase-upload-file\nCapacitor Firebase Upload File use the Firebase Storage Native, With the plugin you can upload any type of formats.\n> especially for MP4 for Videos and PNG/JPG for Images also compress the file.\n> Android Platform use the siliCompressor for compress MP4 and PNG/JPG files; [More information:](https://github.com/Tourenathan-G5organisation/SiliCompressor)\n\nNOTE: The plugin its supports only for Android also the compress its only available for Video format, not iOS and Web for now.\n\n| Platform | |\n|----------|:-:|\n| Android |✅|\n| iOS |🧠|\n| Web |🧠|\n\n✅ - Ready\n🧠 - Thinking about, date to be defined\n\n\n## How to install\nInstall the plugin into your Capacitor project with npm.\n\n```\nnpm install --save capacitor-firebase-upload-file@0.0.1\n```\n\n## How to use on JavaAndroid\n\nImport the class in the MainActivity.java:\n\n```java:\nimport com.jdesigner.firebaseuploadfile.plugin.FirebaseUploadFile;\n```\n\nAdd class inside the public MainActivity class:\n\n```java:\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(FirebaseUploadFile.class);\n }});\n }\n}\n```\n\nIMPORTANT NOTE: Make sure you added google-services.json in the android/app/... \n\n## How to use on JS\n\nImport the capacitor plugin: \n```js:\n\nimport \"capacitor-firebase-upload-file\";\nconst { FirebaseUploadFile } = Plugins;\n```\n\nUse the Plugin with a simple Promise:\n```js:\n FirebaseUploadFile.putStorageFile({ \n fileLocalName: yourLocalFileName,\n fileNewStorageName: \"newfile.mp4\",\n fileNewStorageUrl: \"yourpath/firebase/\",\n fileCompress: true // only for Video formats\n }).then(res => {\n alert(JSON.stringify(res))\n }).catch(err => {\n alert(JSON.stringify(err))\n });\n```\n\n## Parameters\n| Parameters | Details |\n|----------|:-:|\n| fileLocalName |Name with which previously saved due |\n| fileNewStorageName |Name of the file to be saved to storage, example: myfile.mp4 |\n| fileNewStorageUrl |Firebase Storage URL of the file to be saved to storage, example: /myfiles/ |\n| fileCompress | only for Video formats like MP4, example: true or false |\n\n## Response\n\n| Parameters | Details |\n|----------|:-:|\n| status | return success or error |\n| response | return the message |\n| downloadUrl | return the public url |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jdesignermayor_capacitor-firebase-upload-file.md","loc":{"lines":{"from":1,"to":90}}}}],["382e99a7-a9fa-43a8-8da5-c7a9246408dd",{"pageContent":"# capacitor-root-jailbreak-detector\n\nCapacitor Plugin Root/Jailbreak Detection\n\n## Install\n\n```bash\nnpm install capacitor-root-jailbreak-detector\nnpx cap sync\n```\n\n## API\n\n\n\n* [`isRooted()`](#isrooted)\n* [`isRootedWithBusyBox()`](#isrootedwithbusybox)\n* [`isRootedWithEmulator()`](#isrootedwithemulator)\n* [`isRootedWithBusyBoxWithEmulator()`](#isrootedwithbusyboxwithemulator)\n* [`isDetectRootManagementAppsRooted()`](#isdetectrootmanagementappsrooted)\n* [`isDetectPotentiallyDangerousAppsRooted()`](#isdetectpotentiallydangerousappsrooted)\n* [`isTestKeysRooted()`](#istestkeysrooted)\n* [`isCheckForBusyBoxBinaryRooted()`](#ischeckforbusyboxbinaryrooted)\n* [`isCheckForSuBinaryRooted()`](#ischeckforsubinaryrooted)\n* [`isCheckSuExistsRooted()`](#ischecksuexistsrooted)\n* [`isCheckForRWPathsRooted()`](#ischeckforrwpathsrooted)\n* [`isCheckForDangerousPropsRooted()`](#ischeckfordangerouspropsrooted)\n* [`isCheckForRootNativeRooted()`](#ischeckforrootnativerooted)\n* [`isDetectRootCloakingAppsRooted()`](#isdetectrootcloakingappsrooted)\n* [`isSelinuxFlagInEnabled()`](#isselinuxflaginenabled)\n* [`isExistBuildTagsRooted()`](#isexistbuildtagsrooted)\n* [`doesSuperuserApkExistRooted()`](#doessuperuserapkexistrooted)\n* [`isExistSUPathRooted()`](#isexistsupathrooted)\n* [`isCheckDirPermissionsRooted()`](#ischeckdirpermissionsrooted)\n* [`isCheckExecutingCommandsRooted()`](#ischeckexecutingcommandsrooted)\n* [`isCheckInstalledPackagesRooted()`](#ischeckinstalledpackagesrooted)\n* [`isCheckforOverTheAirCertificatesRooted()`](#ischeckforovertheaircertificatesrooted)\n* [`isRunningOnEmulatorRooted()`](#isrunningonemulatorrooted)\n* [`isRunningOnEmulator()`](#isrunningonemulator)\n* [`simpleCheckEmulatorRooted()`](#simplecheckemulatorrooted)\n* [`simpleCheckSDKBF86Rooted()`](#simplechecksdkbf86rooted)\n* [`simpleCheckQRREFPHRooted()`](#simplecheckqrrefphrooted)\n* [`simpleCheckBuildRooted()`](#simplecheckbuildrooted)\n* [`checkGenymotionRooted()`](#checkgenymotionrooted)\n* [`checkGenericRooted()`](#checkgenericrooted)\n* [`checkGoogleSDKRooted()`](#checkgooglesdkrooted)\n* [`getDeviceInfo()`](#getdeviceinfo)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### isRooted()\n\n```typescript\nisRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isRootedWithBusyBox()\n\n```typescript\nisRootedWithBusyBox() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isRootedWithEmulator()\n\n```typescript\nisRootedWithEmulator() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isRootedWithBusyBoxWithEmulator()\n\n```typescript\nisRootedWithBusyBoxWithEmulator() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isDetectRootManagementAppsRooted()","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asephermann_capacitor-root-jailbreak-detector.md","loc":{"lines":{"from":1,"to":99}}}}],["5ff4416b-b00a-400d-8a6e-55df53a56fd4",{"pageContent":"**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isDetectRootManagementAppsRooted()\n\n```typescript\nisDetectRootManagementAppsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isDetectPotentiallyDangerousAppsRooted()\n\n```typescript\nisDetectPotentiallyDangerousAppsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isTestKeysRooted()\n\n```typescript\nisTestKeysRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckForBusyBoxBinaryRooted()\n\n```typescript\nisCheckForBusyBoxBinaryRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckForSuBinaryRooted()\n\n```typescript\nisCheckForSuBinaryRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckSuExistsRooted()\n\n```typescript\nisCheckSuExistsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckForRWPathsRooted()\n\n```typescript\nisCheckForRWPathsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckForDangerousPropsRooted()\n\n```typescript\nisCheckForDangerousPropsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckForRootNativeRooted()\n\n```typescript\nisCheckForRootNativeRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isDetectRootCloakingAppsRooted()\n\n```typescript\nisDetectRootCloakingAppsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isSelinuxFlagInEnabled()\n\n```typescript\nisSelinuxFlagInEnabled() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isExistBuildTagsRooted()\n\n```typescript\nisExistBuildTagsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### doesSuperuserApkExistRooted()\n\n```typescript\ndoesSuperuserApkExistRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isExistSUPathRooted()\n\n```typescript\nisExistSUPathRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckDirPermissionsRooted()\n\n```typescript\nisCheckDirPermissionsRooted() => Promise<{ isRooted: boolean; }>\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asephermann_capacitor-root-jailbreak-detector.md","loc":{"lines":{"from":99,"to":262}}}}],["cb4a9385-04d3-4f02-8984-9188b18f6033",{"pageContent":"### isCheckDirPermissionsRooted()\n\n```typescript\nisCheckDirPermissionsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckExecutingCommandsRooted()\n\n```typescript\nisCheckExecutingCommandsRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckInstalledPackagesRooted()\n\n```typescript\nisCheckInstalledPackagesRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isCheckforOverTheAirCertificatesRooted()\n\n```typescript\nisCheckforOverTheAirCertificatesRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isRunningOnEmulatorRooted()\n\n```typescript\nisRunningOnEmulatorRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### isRunningOnEmulator()\n\n```typescript\nisRunningOnEmulator() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### simpleCheckEmulatorRooted()\n\n```typescript\nsimpleCheckEmulatorRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### simpleCheckSDKBF86Rooted()\n\n```typescript\nsimpleCheckSDKBF86Rooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### simpleCheckQRREFPHRooted()\n\n```typescript\nsimpleCheckQRREFPHRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### simpleCheckBuildRooted()\n\n```typescript\nsimpleCheckBuildRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### checkGenymotionRooted()\n\n```typescript\ncheckGenymotionRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### checkGenericRooted()\n\n```typescript\ncheckGenericRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### checkGoogleSDKRooted()\n\n```typescript\ncheckGoogleSDKRooted() => Promise<{ isRooted: boolean; }>\n```\n\n**Returns:** Promise<{ isRooted: boolean; }>\n\n--------------------\n\n\n### getDeviceInfo()\n\n```typescript\ngetDeviceInfo() => Promise\n```\n\n**Returns:** Promise<DeviceInfo>\n\n--------------------\n\n\n### Interfaces\n\n\n#### DeviceInfo","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asephermann_capacitor-root-jailbreak-detector.md","loc":{"lines":{"from":262,"to":419}}}}],["0b235f13-3bf5-4311-adfb-f7e9928cce8a",{"pageContent":"--------------------\n\n\n### Interfaces\n\n\n#### DeviceInfo\n\n| Prop | Type |\n| ------------------- | ------------------- |\n| **`DEVICE`** | string |\n| **`MODEL`** | string |\n| **`MANUFACTURER`** | string |\n| **`BRAND`** | string |\n| **`BOARD`** | string |\n| **`HARDWARE`** | string |\n| **`PRODUCT`** | string |\n| **`FINGERPRINT`** | string |\n| **`HOST`** | string |\n| **`USER`** | string |\n| **`OSNAME`** | string |\n| **`OSVERSION`** | string |\n| **`V_INCREMENTAL`** | string |\n| **`V_RELEASE`** | string |\n| **`V_SDK_INT`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/asephermann_capacitor-root-jailbreak-detector.md","loc":{"lines":{"from":419,"to":445}}}}],["5e977c75-951c-41e8-be40-815737cfcdb4",{"pageContent":"# capacitor-zip [(npm)](https://www.npmjs.com/package/capacitor-zip-plugin)\n\n\n\nWork in progress. Zip and Unzip files on android. Based on Zip4j library. Zip functionnality still not implemented only unzip works for now. Tested on capacitor v3, not tested on older capacitor versions.\n\n## Install\n\n```bash\nnpm install capacitor-zip\nnpx cap sync\n```\n\n## Android permissions\nMake sure to add the following permissions in the application android manifest.xml\n```xml\n\n\n```\n\n## API\n\n\n\n* [`unzip(...)`](#unzip)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### unzip(...)\n\n```typescript\nunzip(options: UnzipOptions) => Promise\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | UnzipOptions |\n\n**Returns:** Promise<UnzipResult>\n\n--------------------\n\n\n### Interfaces\n\n\n#### UnzipResult\n\n| Prop | Type |\n| ------------- | ------------------- |\n| **`message`** | string |\n| **`uri`** | string |\n\n\n#### UnzipOptions\n\n| Prop | Type |\n| ----------------- | ------------------- |\n| **`source`** | string |\n| **`destination`** | string |\n| **`password`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/m3allimm4a4_capacitor-zip.md","loc":{"lines":{"from":1,"to":67}}}}],["efe76352-3128-455d-8f73-0a7e38dcf198",{"pageContent":"# capacitor-plugin-secure-storage\n\nCapacitor plugin for storing string values securely on Android.\n\n## How to install\n\n```\nnpm install @komed/capacitor-plugin-secure-storage\n```\n\n\n### Android\n\nYou have to register plugins manually in MainActivity class of your app.\n\nhttps://capacitor.ionicframework.com/docs/plugins/android/#export-to-capacitor\n\n```\nimport com.komedhealth.plugin.CapacitorSecureStoragePlugin;\n\n...\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(CapacitorSecureStoragePlugin.class);\n }});\n }\n}\n```\n\n\n## Usage\n\nIn a component where you want to use this plugin add to or modify imports:\n\n```\nimport { Plugins } from '@capacitor/core';\n\nconst { CapacitorSecureStoragePlugin } = Plugins;\n```\n\n## Methods\n\n- **get**(options: { key: string }): Promise<{ value: string | null }>\n - if item with specified key does not exist, rerturns null value\n* **set**(options: { key: string; value: string }): Promise< void >\n* **remove**(options: { key: string }): Promise< void >\n* **clear**(): Promise< void >\n* **key**() : Promise<{ keys: string[] }>\n - returns array of all existing keys\n\n## Example\n\n```\nconst key = 'name';\nconst value = 'charlie';\n\nawait CapacitorSecureStoragePlugin.set({ key, value })\n```\n\n```\nconst key = 'name';\nconst data = CapacitorSecureStoragePlugin.get({ key })\nconsole.log(data);\nconsole.log(data.value);\n```\n\n## Platform specific information\n\n### Android\n\nOn Android it is implemented by [AndroidX Security Library](https://developer.android.com/reference/androidx/security/crypto/package-summary)\n\nIn order to use this plugin we need to migrate app to the AndroidX.\nMore information about migration can be found here.\nhttps://developer.android.com/jetpack/androidx/migrate#migrate_an_existing_project_using_android_studio\n\n##### Warning\n\nFor Android minSdk must be >= 23, in order to use the plugin.\n\n### Web\n\nThere is no secure storage in browser (not because it is not implemented by this plugin, but it does not exist at all). Values are stored in LocalStorage, but they are at least base64 encoded. Plugin adds **cap_sec_** prefix to keys to avoid conflicts with other data stored in LocalStorage.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/komed-health_capacitor-plugin-secure-storage.md","loc":{"lines":{"from":1,"to":91}}}}],["0a1dce99-795a-4dd4-a5db-97154c0db794",{"pageContent":"# capacitor-notification-extensions \nGithub link: https://github.com/no-dap/capacitor-notification-extensions \nCapacitor plugin with some features \n>- Background-handled data notification \n>- Client-side notification filtering (SQLite based) \n> - Custom boolean filters \n> - Time based filters \n>- Force-fire `localNotificationReceived` event listener which is not working properly \n> in LocalNotification plugin \n>\n \nThose features all works fine irrelevant with the app's state(on foreground, on background, or not on process).\n\n# Dependency\n![maintained](https://img.shields.io/badge/maintained-yes-green.svg?style=plastic)\n![license](https://img.shields.io/badge/license-MIT-green?style=plastic)\n![ionic-capacitor](https://img.shields.io/badge/capacitor-2.x-blue.svg?style=plastic) \nWorks fine with Capacitor 2.x \nNot compatible with Capacitor 3.x \nUse SQLite via Helper(from [capacitor sqlite plugin](https://github.com/capacitor-community/sqlite)) \n\n# Installation\n```bash\nnpm i capacitor-notification-extensions --save\n```\n## Android\n1. Add NotificationExtension class to your MainActivity.\n```java\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n add(YourAwesomePlugins.class);\n ...\n add(NotificationExtension.class);\n add(LocalNotificationExtension.class);\n }});\n }\n}\n```\n2. Add meta data and intent filter to manifest inside application tag and add db_name to string values.\n- AndroidManifest.xml\n```xml\n\n\n \n ...\n \n \n \n \n \n \n \n
    \n
    \n```\n- strings.xml\n```xml\n\n\n TODO\n\n```\n\n## iOS\n1. Add silent notification to your AppDelegate\n```swift\nclass AppDelegate: UIResponder, UIAppicationDelegate {\n ...\n func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {\n NotificationCenter.default.post(name: Notification.Name(\"SilentNotification\"), object: nil, userInfo: userInfo)\n }\n ...\n}\n```\n2. Add some data to your Info.plist\n```xml\n\n\n\n\n ...\n LocalDatabase\n TODO\n ...\n UIBackgroundModes\n \n remote-notification\n \n ...\n\n\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/no-dap_capacitor-notification-extensions.md","loc":{"lines":{"from":1,"to":96}}}}],["bbe70785-a644-46ea-b848-d3e5dac56e56",{"pageContent":"## Electron\nHave no plans to support yet.\n\n# Documentation\n## [NotificationExtension](https://github.com/no-dap/capacitor-notification-extensions/blob/master/src/definitions.d.ts) \n>If you are new on firebase messaging, I recommend [reading this documentation](https://firebase.google.com/docs/cloud-messaging/concept-options) first to understand about two concepts of notification message. \n> \nNotificationExtension class is child of default plugin PushNotification. You can check arguments and return of methods from the link above. \nThis plugin creates a sqlite table `notification_extensions_filter` with its own schema.\n\n### Data notification payload\nMessage in both platform shouldn't contain `notification` key which makes message as alert message.\n- Android \n Get data from `yourMessagePayload.data`. [(Check how payload parsed)](https://github.com/no-dap/capacitor-notification-extensions/blob/master/android/src/main/java/com/woot/notification/extensions/FirebaseMessagingService.kt#L13)\n- iOS \n Get data from `yourMessagePayload.apns.payload.aps.custom_data`. [(Check how payload parsed)](https://github.com/no-dap/capacitor-notification-extensions/blob/master/ios/Plugin/Plugin.swift#L53) \n \n \n---\nBoth platforms' payload should contain keys below.\n- isShown: Optional, boolean string('true' or 'false'), always true if not exists.\n- body: Optional, string, body of notification message\n- title: Optional, string, title of notification message\n- filter: Optional, comma-separated string, hide notification if matched filter with false value exists.\n- Any other data you that want to use in your application\n\n### Filters\nAll key-value based filters which is added or removed by addFilters and removeFilters method will be saved in the local database. \nThere are two filters that specially checks before show notification, which is time-based filter and logged-in filter. \n- logged-in filter \n If you add a filter with key `is_logged_in`, this filter will always be checked on a message received even if payload doesn't contain filter key. \n- time-based filter\n If you add a filter with addTimeFilter method, three rows will be generated in the local database. (filter_start_from, filter_end_at, is_time_filter_on) \n This filter will always be checked on a message received even if payload doesn't contain filter key. \n addTimeFilter method only takes string with `HH:mm` format and will raise some validation error if is malformed.\n\n### Usage\nIn your js application, \n```typescript\nimport { Plugins } from '@capacitor/core';\n\nconst { NotificationExtension } = Plugins\n\nNotificationExtension.addListener('pushNotificationActionPerformed', (notification: PushNotificationActionPerformed) => {\n // Same as PushNotification plugin\n // You can deal with your payload \n});\n\nNotificationExtension.addListener('pushNotificationReceived', (notification: YourPayloadType) => {\n // Same as PushNotification plugin\n // Only works when the app is on foreground\n});\n\nNotificationExtension.register();","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/no-dap_capacitor-notification-extensions.md","loc":{"lines":{"from":98,"to":151}}}}],["ac02d5b0-b4cc-4ddf-b0c3-6b2da19c8d1c",{"pageContent":"NotificationExtension.register();\n\nNotificationExtension.addFilters({ filters: ['anyString', 'youPromised', 'withBackend'] });\n// Any data notification that contains key named 'filter' with value matched above will be suppressed by plugin.\n\nNotificationExtension.removeFilters({ filters: ['youPromised'] });\n// filtering 'youPromised' stop working\n\nNotificationExtension.getFilters().then((result) => {\n // result will be { value: ['anyString', 'withBackend'] }\n});\n\n\nNotificationExtension.addTimeFilter({ startFrom: '23:00', endAt: '07:00' });\n// every notification that received between 11PM to 7AM will be suppressed\n```\n\n## LocalNotificationExtension \n`LocalNotification.addListener('localNotificationReceived')` doesn't work in android if you use capacitor 2.x, \nthis class just a bug fix that only overrides a receiver to notify a message received event to listener. \n(This will be solved in capacitor 3.x, [merged commit link](https://github.com/ionic-team/capacitor-plugins/pull/217/commits/a499ddf4f8729119550c55f9c44549d29cf544f4))\nUse this plugin for android only. (This class hasn't implemented for iOS) \n\n### Usage\n```typescript\nimport { LocalNotification, Plugins } from '@capacitor/core';\n\nconst { LocalNotifications, LocalNotificationExtension } = Plugins;\n\nclass YourServiceOrComponent {\n constructor() {}\n \n get localNotificationPlugin() {\n return this.platform.is('android') ? LocalNotificationExtension : LocalNotifications;\n }\n \n yourMethod() {\n this.LocalNotificationPlugin.addListener('localNotificationReceived', (localNotification: LocalNotification) => {\n // Do what you want\n });\n }\n}\n```\n\n# Issue & Questionnaire\nFeel free to ask anything on project issues. Any kind of contributions and bug reports are also welcomed.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/no-dap_capacitor-notification-extensions.md","loc":{"lines":{"from":151,"to":196}}}}],["d2f6ddf1-fc34-417a-90f5-30545b874ca2",{"pageContent":"# freshconnect-capacitor-webchat\n## 插件使用示例\n- 安装插件 \n ``` \n cd src-capacitor\n npm i -S freshconnect-capacitor-webchat\n ```\n- android代码修改\n - 将manifest中的org.capacitor.quasar.app字符串全部替换为当前app的包路径\n - 修改/src-capacitor/app工程下的build.gradle的google源为https://maven.aliyun.com/repository/google\n - quasar build -m capacitor -T android // 工程根目录执行\n - 启动android IDE\n ``` \n cd src-capacitor // 进入android子工程\n npx cap update android\n npx cap open android //如果android工程未加载插件代码,可以通过Android IDE执行File/Invalidate Caches / Restart重启IDE\n ``` \n - 将插件注册到capacitor\n ```\n public class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n\n //注册插件代码\n add(FreshconnectWebChat.class);\n }});\n }\n }\n ```\n - 修改/src-capacitor/app/res/values/strings.xml \n ```\n 新增如下配置\n 微信开发平台申请的APP ID\n ```\n- JS代码 \n - 引入插件 \n ``` \n import { Plugins } from \"@capacitor/core\";\n ``` \n - 获取微信插件实例\n ``` \n const { FreshconnectWebChat } = Plugins;\n ``` \n - 业务调用 \n ``` \n var request = {\n text:\"测试\", \n description:\"测试描述\", \n scene:1\n }\n FreshconnectWebChat.shareText(request);\n ``` \n## 插件功能列表\n- 分享文本 \n ``` \n var request = {\n text:string, // 文本内容\n description:string, // 文本描述\n scene:number //0:分享到会话 1:分享到朋友圈 2:分享到收藏\n }\n FreshconnectWebChat.shareText(request);\n ``` \n\n- 分享图片 \n ``` \n var request = {\n imgData:string, // 图片路径或者base64编码图片或者手机相对路径\n description:string, // 文本描述\n scene:number //0:分享到会话 1:分享到朋友圈 2:分享到收藏\n }\n FreshconnectWebChat.sharePicture(request);\n ``` \n\n- 分享小程序 \n ``` \n var request = {\n webpageUrl:string, // 兼容低版本的网页链接\n userName:string, // 小程序原始 ID 获取方法:登录小程序管理后台-设置-基本设置-帐号信息\n path:string, //小程序页面路径;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 \"?foo=bar\"\n title:string, // 小程序消息标题\n description:string, // 小程序描述\n thumbData:string, // 小程序缩略图\n miniprogramType:number //0:正式版小程序 1:测试版小程序 2:预览版小程序\n };\n FreshconnectWebChat.shareMiniProgram(request);\n ``` \n\n- 拉起小程序 \n ``` \n var request = {\n userName:string, // 小程序原始 ID 获取方法:登录小程序管理后台-设置-基本设置-帐号信息\n path:string, //小程序页面路径;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 \"?foo=bar\"\n miniprogramType:number //0:正式版小程序 1:测试版小程序 2:预览版小程序\n };\n FreshconnectWebChat.launchMiniProgram(request);\n ``` \n\n- 消息订阅 \n ``` \n var request = {\n templateID:string, // 消息模板ID\n scene:number //重定向后会带上 scene 参数,开发者可以填 0-10000 的整形值,用来标识订阅场值\n };\n FreshconnectWebChat.subscribeMessage(request).then(function (e) {\n console.info(\"subscribeMessage:\" + JSON.stringify(e));\n });\n ``` \n\n- 微信认证 \n ``` \n FreshconnectWebChat.authLogin().then(function (e) {\n console.info(\"authLogin:\" + JSON.stringify(e));\n });\n ``` \n\n## 本地插件测试\n- 运行 sudo npm link","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/FreshConnectDevelopment_freshconnect-capacitor-webchat.md","loc":{"lines":{"from":1,"to":123}}}}],["4b06e15f-a86c-4eed-a971-7da5cf8b9e77",{"pageContent":"## 本地插件测试\n- 运行 sudo npm link \n\n 在需要添加插件的工程运行下面的命令\n\n- 运行 sudo npm link freshconnect-capacitor-webchat\n- 运行 sudo npm install freshconnect-capacitor-webchat\n\n## 插件开发注意的事情 \n- 在android studio中debug的时候会在node_modules中新增xml文件,如果之前已经debug过生成的文件后面会增加数字,当数字增加到3之后debug会出现报错,提示文件名校验失败。需要根据Android studio报错路径删除带数字的文件,删除后需要rebuild一下才会起效。\n- 发布的时候需要切换npm源为官方源\nnpm config set registry https://registry.npmjs.org\n\nnpm config set registry https://registry.npm.taobao.org","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/FreshConnectDevelopment_freshconnect-capacitor-webchat.md","loc":{"lines":{"from":123,"to":136}}}}],["81e759bd-9925-4986-b152-4796da7d97b6",{"pageContent":"# capacitor-jd-udp\nCapacitor plugin to send individual UDP requests. Has been developed for a special application and is not intended for reuse.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/jalixdesign_capacitor-jd-udp.md","loc":{"lines":{"from":1,"to":2}}}}],["86866e1a-509f-4541-9bc8-39d4398207ed",{"pageContent":"# capacitor-aigens-change-app-icon\n\n``for Capacitor V3``\n \ncapacitor plugin: help you change app icon dynamically.\n\n## Install\n\n```bash\nnpm install capacitor-aigens-change-app-icon\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`changeAppIcon(...)`](#changeappicon)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### changeAppIcon(...)\n\n```typescript\nchangeAppIcon(options: { name: string; allNames: string[]; }) => Promise<{ name: string; allNames: string[]; }>\n```\n\n| Param | Type |\n| ------------- | -------------------------------------------------- |\n| **`options`** | { name: string; allNames: string[]; } |\n\n**Returns:** Promise<{ name: string; allNames: string[]; }>\n\n--------------------\n\n\n\n### USE \n\n* this capacitor v3 plugin\n\n```typescript\n import { ChangeAppIcon } from \"capacitor-aigens-change-app-icon\";\n const allNames = [\n 'com.xx.xxx.app.MainActivity', //main\n 'com.xx.xxx.app.1Activity', \n 'com.xx.xxx.app.2tivity',\n ]\n const isIos = Capacitor.getPlatform() == 'ios';\n const p = {\n name: isIos ? 'xx' : 'com.xx.xxx.app.1Activity'\n allNames,\n }\n\n // to main\n // const p = {\n // name: isIos ? 'main' : 'com.xx.xxx.app.MainActivity'\n // allNames,\n // }\n ChangeAppIcon.changeAppIcon(p);\n\n```\n\n### Config\n\n* android\n\n```xml\n at your AndroidManifest.xml , under application , add\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n```\n\n```plist\nat your app info.plist, add","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/PeiJueChen_capacitor-aigens-change-app-icon.md","loc":{"lines":{"from":1,"to":122}}}}],["6df1ccc0-3d20-49a4-ba59-081fe3904480",{"pageContent":"```\n\n```plist\nat your app info.plist, add\n\nCFBundleIcons\n\t\n\t\tCFBundleAlternateIcons\n\t\t\n\t\t\txx\n\t\t\t\n\t\t\t\tCFBundleIconFiles\n\t\t\t\t\n 1-icon\n\t\t\t\t\t1-icon-20\n 1-icon-29\n 1-icon-30\n 1-icon-40\n 1-icon-60\n 1-icon-76\n 1-icon-83.5\n 1-icon-1024\n\t\t\t\t\n\t\t\t\tUIPrerenderedIcon\n\t\t\t\t\n\t\t\t\n\t\t\n\t\tCFBundlePrimaryIcon\n\t\t\n\t\t\tCFBundleIconFiles\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\tUIPrerenderedIcon\n\t\t\t\n\t\t\n\t\tUINewsstandIcon\n\t\t\n\t\t\tCFBundleIconFiles\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\tUINewsstandBindingType\n\t\t\tUINewsstandBindingTypeMagazine\n\t\t\tUINewsstandBindingEdge\n\t\t\tUINewsstandBindingEdgeLeft\n\t\t\n\t\n\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/PeiJueChen_capacitor-aigens-change-app-icon.md","loc":{"lines":{"from":122,"to":171}}}}],["c131fd8c-356a-4add-af05-0a1592bc0f83",{"pageContent":"# Capacitor Speech Recognition Plugin\n\nCapacitor community plugin for speech recognition.\n\n## Maintainers\n\n| Maintainer | GitHub | Social | Sponsoring Company |\n| --------------- | ------------------------------------------- | ------------------------------------------------ | ------------------ |\n| Priyank Patel | [priyankpat](https://github.com/priyankpat) | [@priyankpat\\_](https://twitter.com/priyankpat_) | Ionic |\n| Matteo Padovano | [mrbatista](https://github.com/mrbatista) | [@mrba7ista](https://twitter.com/mrba7ista) | |\n\nMaintenance Status: Actively Maintained\n\n## Installation\n\nTo use npm\n\n```bash\nnpm install @capacitor-community/speech-recognition\n```\n\nTo use yarn\n\n```bash\nyarn add @capacitor-community/speech-recognition\n```\n\nSync native files\n\n```bash\nnpx cap sync\n```\n\n## iOS\n\niOS requires the following usage descriptions be added and filled out for your app in `Info.plist`:\n\n- `NSSpeechRecognitionUsageDescription` (`Privacy - Speech Recognition Usage Description`)\n- `NSMicrophoneUsageDescription` (`Privacy - Microphone Usage Description`)\n\n## Android\n\nNo further action required.\n\n## Configuration\n\nNo configuration required for this plugin\n\n## Supported methods\n\n| Name | Android | iOS | Web |\n| :-------------------- | :------ | :-- | :-- |\n| available | ✅ | ✅ | ❌ |\n| start | ✅ | ✅ | ❌ |\n| stop | ✅ | ✅ | ❌ |\n| getSupportedLanguages | ✅ | ✅ | ❌ |\n| hasPermission | ✅ | ✅ | ❌ |\n| requestPermission | ✅ | ✅ | ❌ |\n\n## Usage\n\n```typescript\nimport { SpeechRecognition } from \"@capacitor-community/speech-recognition\";\n\n/**\n * This method will check if speech recognition feature is available on the device.\n * @param none\n * @returns available - boolean true/false for availability\n */\nSpeechRecognition.available();\n\n/**\n * This method will start to listen for utterance.\n * @param language - language key returned from getSupportedLanguages()\n * maxResults - maximum number of results to return (5 is max)\n * prompt - prompt message to display on popup (Android only)\n * partialResults - return partial results if found\n * popup - display popup window when listening for utterance (Android only)\n * If partialResults is true, the function respond directly without result and event `partialResults` will be emit for each partial result, until stopped.\n * @returns void\n */\nSpeechRecognition.start({\n language: \"en-US\",\n maxResults: 2,\n prompt: \"Say something\",\n partialResults: true,\n popup: true,\n});\n// listen to partial results\nSpeechRecognition.addListener(\"partialResults\", (data: any) => {\n console.log(\"partialResults was fired\", data.matches);\n});\n\n// stop listening partial results\nSpeechRecognition.removeAllListeners();\n\n/**\n * This method will stop listening for utterance\n * @param none\n * @returns void\n */\nSpeechRecognition.stop();","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_speech-recognition.md","loc":{"lines":{"from":1,"to":102}}}}],["3c586102-5190-450a-b88c-41ab16330fd9",{"pageContent":"/**\n * This method will stop listening for utterance\n * @param none\n * @returns void\n */\nSpeechRecognition.stop();\n\n/**\n * This method will return list of languages supported by the speech recognizer.\n * @param none\n * @returns languages - array string of languages\n */\nSpeechRecognition.getSupportedLanguages();\n\n/**\n * This method will check for audio permissions.\n * @param none\n * @returns permission - boolean true/false if permissions are granted\n */\nSpeechRecognition.hasPermission();\n\n/**\n * This method will prompt the user for audio permission.\n * @param none\n * @returns void\n */\nSpeechRecognition.requestPermission();\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/capacitor-community_speech-recognition.md","loc":{"lines":{"from":102,"to":129}}}}],["320ff312-3692-4500-8051-6bc7f190dccd",{"pageContent":"# Native XR for Web\nAn XR polyfill for building native apps to iOS and Android using Capacitor.\n\nNOTE: This project is under active development and testing. The API was originally designed to serve Capacitor only, and is being rewritten to XR compliance. If you need a cross platform native or iOS browser compatible solution immediately, create a Github issue or email us.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/XRFoundation_webxr-native.md","loc":{"lines":{"from":1,"to":4}}}}],["e535a0b5-8b32-46c3-97f7-bfbeadf23f7e",{"pageContent":"# capacitor-secure-config-storage\n\nAccess native config settings\n\n## Install\n\n```bash\nnpm install capacitor-secure-config-storage\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`getValueFromConfig(...)`](#getvaluefromconfig)\n* [`storeConfigValue(...)`](#storeconfigvalue)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => any\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** any\n\n--------------------\n\n\n### getValueFromConfig(...)\n\n```typescript\ngetValueFromConfig(options: { key: string; }) => any\n```\n\n| Param | Type |\n| ------------- | ----------------------------- |\n| **`options`** | { key: string; } |\n\n**Returns:** any\n\n--------------------\n\n\n### storeConfigValue(...)\n\n```typescript\nstoreConfigValue(options: { key: string; }) => any\n```\n\n| Param | Type |\n| ------------- | ----------------------------- |\n| **`options`** | { key: string; } |\n\n**Returns:** any\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/paulmojicatech_capacitor-secure-config-storage.md","loc":{"lines":{"from":1,"to":69}}}}],["71398117-ac1e-47f1-8262-e4637bdae15e",{"pageContent":"

    Capacitor Phone Event Usage

    \n

    capacitor-phone-event-usage

    \n

    A capacitor plugin to track phone app usage.

    \n\n## Maintainers\n\n| Maintainer | GitHub | Social |\n| ------------- | ------------------------------------------- | ------------------------------------------------ |\n| Daniel Leightley| [DrDanL](https://github.com/DrDanL) | [@_Dr_Daniel](https://twitter.com/_Dr_Daniel) |\n\nMaintenance Status: Actively Maintained.\n\nHudge credit to [ciitamjadibraheem UsageStats Package](https://github.com/ciitamjadibraheem/UsageStats).\n\n**This is an early release and the plugin requires further development. All contributions welcome.**\n\n## Installation\n\nUsing npm:\n\n```bash\nnpm install capacitor-phone-event-usage\n```\n\nSync native files:\n\n```bash\nnpx cap sync\n```\nOn Android, register the plugin in your main activity:\n\n```java\nimport cap.phone.usage.PhoneEventUsage;\n\npublic class MainActivity extends BridgeActivity {\n\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(\n savedInstanceState,\n new ArrayList>() {\n {\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(PhoneEventUsage.class);\n }\n }\n );\n }\n}\n```\nIn the Android Manifest add system level permission.\n\n```xml\n\n\n \n \n\n\n```\n\n## Configuration\n\nNo configuration is required for this plugin.\n\n## Examples\n\nYou can also clone the repository:\n\n```bash\ngit clone https://github.com/DrDanL/capacitor-phone-event-usage\ngit checkout -b capacitor-phone-event-usage\n```\n\n## Supported methods\n\n| Name | Android | iOS | Web |\n| :------------------------ | :------ | :-- | :-- |\n| enable | ✅ | ❌ | ❌ |\n| getPermissionStatus | ✅ | ❌ | ❌ |\n| getAppUsage | ✅ | ❌ | ❌ |\n\n## Usage\n\nBelow is an example of how to run the plugin.\n\n```typescript\nimport { Plugins } from '@capacitor/core';\nimport 'capacitor-phone-event-usage';\nconst { PhoneEventUsage, Device, Modals } = Plugins;\n\n@Component(...)\nexport class MyPage {\n\n async getPermission() {\n\n //Direct user to local permission page\n await PhoneEventUsage.enable();\n }\n\n async checkPermission() {\n\n const info = await Device.getInfo();\n if (info.platform === \"android\") {\n //Currently this plugin only works with Android.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/DrDanL_capacitor-phone-event-usage.md","loc":{"lines":{"from":1,"to":109}}}}],["dc5bcc7c-1f56-48ce-9a41-93dfa0a45b9e",{"pageContent":"//Check to see if the has has provided permission\n const result = await PhoneEventUsage.getPermissionStatus();\n\n //Perform action\n }\n } else {\n console.log('iOS platform')\n }\n }\n\n async getAppUsage() {\n const info = await Device.getInfo();\n if (info.platform === \"android\") {\n //Currently this plugin only works with Android.\n\n //Get app usage data - input is the number of days from today\n const result = await PhoneEventUsage.getAppUsage(10);\n\n //Perform action\n }\n } else {\n console.log('iOS platform')\n }\n }\n}\n\n```\n\n## Further info\n\n- [Android](https://developer.android.com/reference/android/app/usage/UsageStats)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/DrDanL_capacitor-phone-event-usage.md","loc":{"lines":{"from":111,"to":141}}}}],["65da3991-9206-47dd-9526-a3c539594004",{"pageContent":"# capacitor-plugin-toggle-fullscreen\n\n## Install\nUsing npm:\n```\nnpm install --save capacitor-plugin-toggle-fullscreen\n```\n\nor using yarn:\n```\nyarn add capacitor-plugin-toggle-fullscreen\n```\n\n## Use\n### Register the plugin in your Activity:\n```java\n// Other imports...\nimport com.lianlf.capacitoryfullscreen.ToggleFullScreen;\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(ToggleFullScreen.class);\n }});\n }\n}\n```\n\n### In JS code:\n```react\n ToggleFullScreen.toggle()}\n>\n Toggle Screen\n\n ToggleFullScreen.toggle({ orientation: 'LANDSCAPE' })}\n>\n Set Landscape\n\n ToggleFullScreen.toggle({ orientation: 'PORTRAIT' })}\n>\n Set Portrait\n\n```\n\n### Run\n\n```sh\nnpx cap sync && npx cap open android\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/Lian-LF_capacitory-toggle-fullscreen.md","loc":{"lines":{"from":1,"to":58}}}}],["3bbfa47c-ac05-4b82-b763-eebdd70d8a1d",{"pageContent":"# open-subscription-settings\n\nAllows to user to open the subscription settings of their native platform from within the application.\n\n## Install\n\n```bash\nnpm install open-subscription-settings\nnpx cap sync\n```\n\n## API\n\n\n\n* [`triggerOpenSettings()`](#triggeropensettings)\n* [`triggerOpenSubscriptions()`](#triggeropensubscriptions)\n\n\n\n\n\n\n### triggerOpenSettings()\n\n```typescript\ntriggerOpenSettings() => Promise\n```\n\n--------------------\n\n\n### triggerOpenSubscriptions()\n\n```typescript\ntriggerOpenSubscriptions() => Promise\n```\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hex-digital_capacitor-plugin-open-subscription-setting.md","loc":{"lines":{"from":1,"to":41}}}}],["48ddc054-db2a-4f89-bd5b-0990d6fa6ad2",{"pageContent":"MongoDB Mobile Capacitor Plugin\n===============================\n\nMongoDB is one of the easiest databases to use for small javascript-based projects, so it is \na fantastic fit for many capacitor apps. The goal of this project is to provide a full-featured\ninterface to allow using MongoDB Mobile from a capacitor app.\n\nThis project does not atttempt to clean up the interface and all documents sent are\nin MongoDB's canonical Extended JSON format. For those who don't undrestand what that means,\na MongoDB document may look like this:\n\n {\n _id: ObjectId(\"5d12cabe21c6fa8a7deb6b9d\"),\n name: \"This is a cool thing\",\n number: 127,\n date: Date(\"2019-05-13 17:33:22\")\n }\n\nSince the above document can't be represented accurately using json, and all communication with\ncordova plugins is done using json, we use the extended json format and it looks like this:\n\n {\n _id: {$oid: \"5d12cabe21c6fa8a7deb6b9d\"},\n name: \"This is a cool thing\",\n number: {$numberInt: \"127\"},\n date: {$date: {$numberLong: \"1557790402\"}}\n }\n\nIn general when you pass things into the plugin to save in the database it'll do its best\nto figure out what you meant even if you didn't use the full canonical format, but things like\nObjectIds must be passed as an {$oid: \"...\"} or it will just be treated as a string.\n\nInstalling\n==========\n\n npm install @hamstudy/capacitor-mongodb-mobile\n\n\nCurrent State\n=============\n\nWith beta.3 out we believe we have full support on iOS *and* Android -- but we've so far only\ntested a limited number of the APIs. We have not yet assembled an entire test suite, but at this\npoint it's very likely that any lingering issues should be *relatively* easy to fix as long\nas we are aware of them and particularly if tests for them are added to the \n[Capacitor MongoDB Mobile Test App](https://github.com/HamStudy/capacitor-mongodb-mobile-testApp)\ntest suite (which uses the MongoDB Mobile Client library, but if needed tests could be added\nwhich don't).\n\nSpecial considerations for Android\n==================================\n\nTo work on an android emulator you *must* use one based on x86_64 -- the default is usually x86\nbased and will not work due to missing mongodb libraries.\n\nMongoDB Mobile Client\n=====================\n\nBecause dealing with the above is a pain (and also because the interface forced on us by having\nto do everything with a single layer API is awkward) we have created a project which provides\na wrapper around this plugin which provides an interface *very* similar to the \n[node-native-mongodb](http://mongodb.github.io/node-mongodb-native/3.2/) driver API.\n\nFor more information, see the [mongodb-mobile-client](https://github.com/HamStudy/mongodb-mobile-client)\nproject.\n\n\nHelping out\n===========\n\nThis was created for use with our own internal projects but of course I hope it'll catch on; I'll \ntry to be around (taxilian) on the [Capacitor Slack channels](https://getcapacitor.slack.com)\nif anyone would like to help; even just making the docs a little more accessible would be awesome.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hamstudy_capacitor-mongodb-mobile.md","loc":{"lines":{"from":1,"to":73}}}}],["c1b774fb-d8e0-4020-860f-a44331c11bea",{"pageContent":"# capacitor-crashlytics-cc [![npm version](https://badge.fury.io/js/capacitor-crashlytics-cc-fork.svg)](https://badge.fury.io/js/capacitor-crashlytics-cc-fork)\n\n__Fork of capacitor-crashlytics__\n\nCapacitor plugin to enable features from Firebase Crashlytics\n\n> Android coming soon\n\n![Capacitor Firebase Crashlytics Plugin](https://i.imgur.com/d2JLtWt.gif)\n\n## API\n\n- `crash(): Promise`\n- `logUser(options: {id: string, email:string, name: string}): Promise`\n\n> For more information check the [`definitions`](/src/definitions.ts) file\n\n## Usage\n\n```js\nimport { Crashlytics } from 'capacitor-crashlytics';\nconst crashlytics = new Crashlytics();\n\n//\n// log user\ncrashlytics\n .logUser({\n name: this.name,\n email: this.email,\n id: this.id\n })\n .then(() => alert(`user logged`))\n .catch(err => alert(err.message));\n\n//\n// force a crash\ncrashlytics.crash();\n```\n\n## Add Google config files\n\nNavigate to the project settings page for your app on Firebase.\n\n### iOS\n\nDownload the `GoogleService-Info.plist` file. In Xcode right-click on the yellow folder named \"App\" and select the `Add files to \"App\"`.\n\n> Tip: if you drag and drop your file to this location, Xcode may not be able to find it.\n\n### Android\n\nDownload the `google-services.json` file and copy it to `android/app/` directory of your capacitor project.\n\n## iOS setup\n\n- `ionic start my-cap-app --capacitor`\n- `cd my-cap-app`\n- `npm install --save capacitor-crashlytics`\n- `mkdir www && touch www/index.html`\n- `sudo gem install cocoapods` (only once)\n- `npx cap add ios`\n- `npx cap sync ios` (every time you run `npm install`)\n- `npx cap open ios`\n- sign your app at xcode (general tab)\n- add `GoogleService-Info.plist` to the app folder in xcode\n\n> Tip: every time you change a native code you may need to clean up the cache (Product > Clean build folder) and then run the app again.\n\n### Build phase\n\n1. [Create a Fabric account](https://fabric.io/kits?show_signup=true)\n2. Go to [install instructions](https://fabric.io/kits/ios/crashlytics/install)\n3. Follow steps on **Add a Run Script Build Phase**\n4. Follow steps on **Add Your API Key**\n\nAfter you build the app in xcode you should be able to link it in Firebase console. To start seeing logs in the panel, force a crash using method `crash` (app must not be running within xcode) and then re-start the app.\n\n### Not seeing a crash in the dashboard?\n\n- Double-check in your Build Settings that your Debug Information Format is **DWARF with dSYM File** for both Debug and Release\n- Make sure to launch the app after crashing it, so that the crash can be uploaded\n- If you don’t see the crash after a few minutes, run your app again to retry crash delivery.\n\n## Android setup","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/codeculturehq_capacitor-crashlytics.md","loc":{"lines":{"from":1,"to":84}}}}],["b3b87a7a-f993-4e9c-b808-7dd2cb45e0fb",{"pageContent":"## Android setup\n\n- `ionic start my-cap-app --capacitor`\n- `cd my-cap-app`\n- `npm install --save capacitor-crashlytics`\n- `mkdir www && touch www/index.html`\n- `npx cap add android`\n- `npx cap sync android` (every time you run `npm install`)\n- `npx cap open android`\n- add `google-services.json` to your `android/app` folder\n- `[extra step]` in android case we need to tell Capacitor to initialise the plugin:\n\n> on your `MainActivity.java` file add `import io.stewan.capacitor.crashlytics.CrashlyticsPlugin;` and then inside the init callback `add(CrashlyticsPlugin.class);`\n\nNow you should be set to go. Try to run your client using `ionic cap run android --livereload --address=0.0.0.0`.\n\n> Tip: every time you change a native code you may need to clean up the cache (Build > Clean Project | Build > Rebuild Project) and then run the app again.\n\n### Build phase\n\n1. [Create a Fabric account](https://fabric.io/kits?show_signup=true)\n2. Go to [install instructions](https://fabric.io/kits/android/crashlytics/install)\n3. Follow steps on **Add a Run Script Build Phase**\n4. Follow steps on **Add Your API Key**\n\nAfter you build the app in xcode you should be able to link it in Firebase console. To start seeing logs in the panel, force a crash using method `crash` (app must not be running within xcode) and then re-start the app.\n\n### Not seeing a crash in the dashboard?\n\n## Updating\n\nFor existing projects you can upgrade all capacitor related packages (including this plugin) with this single command\n\n`npx npm-upgrade '*capacitor*' && npm install`\n\n## Sample app\n\nhttps://github.com/stewwan/capacitor-crashlytics-demo\n\n## You may also like\n\n- [capacitor-analytics](https://github.com/stewwan/capacitor-analytics)\n- [capacitor-fcm](https://github.com/stewwan/capacitor-fcm)\n- [capacitor-intercom](https://github.com/stewwan/capacitor-intercom)\n- [capacitor-twitter](https://github.com/stewwan/capacitor-twitter)\n\nCheers 🍻\n\nFollow me [@Twitter](https://twitter.com/StewanSilva)\n\n## License\n\nMIT","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/codeculturehq_capacitor-crashlytics.md","loc":{"lines":{"from":84,"to":136}}}}],["2664c1f8-66b5-4033-9436-d0ba80df3521",{"pageContent":"# Cashfree PG Cordova Demo App\nThis demo app illustrates integration of [cashfree_pg_sdk_cordova](https://www.npmjs.com/package/cashfree_pg_sdk_cordova).\n\n## Environment\nFor setting up cordova environment refer [here](https://cordova.apache.org/docs/en/10.x/guide/cli/)\n\n---\n\n## Setup\nEnter the following command in your shell.\n### Step 1 (Clone the Repo)\n```shell\ngit clone https://github.com/cashfree/cordova-pgsdk-demo-app.git\n```\n### Step 2 (Install dependencies)\n```shell\nnpm install\ncordova plugin add\n```\n### Step 3 (Sync project)\n```shell\ncordova prepare\n```\n\n---\n\n\n## Configure the App\n* navigate to www/js and open index.js\n

    \n \"setting-api-keys\"\n

    \n\n* Replace APP_ID and APP_SECRET with the credentials from your Cashfree's account PG dashboard.\n\n* Set the ENV as per the environment from where the credentials are used ( 'TEST' or 'PROD' ).\n\n---\n\n## Installing The App\n### Android\nTo install the app in android run the following command.\n\n```shell\ncordova run android\n```\n\n### iOS\nTo install the app in iOS run the following command.\n\n```shell\ncordova run ios\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/cashfree_cordova-pgsdk-demo-app.md","loc":{"lines":{"from":1,"to":53}}}}],["f337fd32-eda0-4fce-ab21-8d63ac758476",{"pageContent":"# Capacitor pdf\n\nEl propósito del plugin es tener una alternativa a un lector de pdf nativo para capacitor. En este momento se encuentra funcional solo para andriod pero, no en mucho tiempo, tenemos la version actualizada para ios. En las siguientes secciones vamos a documentar como utilizar el plugin y las entradas que tiene el mismo.\n\n## Contribución\n\n\"Buy\n\n## Instalación\n\nnpm i capacitor-pdf\n\n## Utilización en javascript\n\n### Anotaciones en pdf\n\nEn este momento solo se tiene anotaciones de tipo link, que se insertan como un boton en el pdf. Cuando se da click en el este, abre un navegador interno que muestra la página del enlace enviado.\n\nSe debe enviar al método del plugin, un dato tipo json que incluyes los siguientes parámetros:\npage: 1, // no funcionan por ahora\npoint_x: 500,\npoint_y: 500,\npoint_link: \"Enlace del link\",\npoint_icon: 'ic_info',// no funcionan por ahora\npoint_color_icon: 'white',// no funcionan por ahora\npoint_background_icon: 'blue' // no funcionan por ahora\n\nPor ahora está funcionando la los items point_x, point_y y point_link. Los demas parámetros irán funcionando poco a poco.\n\n### Integración javascript\n\nEn el ejemplo se está utilizando angular, pero puede funcionar con cualquier aplicacion hecha en javascript.\n\n```Javascript\nimport { Plugins } from '@capacitor/core';\nconst { PdfPlugin } = Plugins;\n...\n viewPdf() {\n const annotations: any[] = [\n {\n page: 1, // no funcionan por ahora\n point_x: 500,\n point_y: 500,\n point_link: \"https://www.elpais.com.co\",\n point_icon: 'ic_info',// no funcionan por ahora\n point_color_icon: 'white',// no funcionan por ahora\n point_background_icon: 'blue' // no funcionan por ahora\n }\n ]\n const options: any = {\n linkPdf: \"enlace del pdf\",\n annotations\n }\n PdfPlugin.viewPdf({...options});\n }\n```\n\n## Integración en android\n\nPasos para integrar el plugin en android:\n\n- ionic capacitor run android\n- En el MainActivity.java, debes añadir el siguiente código:\n ```Java\n public class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(PdfPlugin.class);\n }});\n }\n }\n ```\n- Correr aplicación en un dispositivo\n\n## Integración en ios","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/programlabco_capacitor-pdf.md","loc":{"lines":{"from":1,"to":81}}}}],["e6f926e7-0a9c-42c7-a19b-5da23caedc35",{"pageContent":"## Integración en ios\n\nPrimer version de ios lanzada. Solo esta funcionando el pdf. Ya tenemos soporte para ios!! 🥳🥳🥳🥳🥳","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/programlabco_capacitor-pdf.md","loc":{"lines":{"from":81,"to":83}}}}],["d0faf8d4-d4bf-455d-854d-02519a9f51c2",{"pageContent":"# capacitor-plugin-wxalipay\n\ncapacitor 3 plugin for wechatPay and alipay\n\nforked from [veluxa/capacitor-plugin-pay](https://github.com/veluxa/capacitor-plugin-pay)\n\n## 配置\n\n- 修改项目中的配置文件`capacitor.config.json`,增加微信 appid 配置`plugins.wxalipay.wxappId`\n- 修改项目中插件的`build.gradle`文件, `def wxPayPackageName = \"\"`改为自己的包名\n\n## Install\n\n```bash\nnpm install capacitor-plugin-wxalipay\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`wxPayRequest(...)`](#wxpayrequest)\n* [`aliPayRequest(...)`](#alipayrequest)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => any\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** any\n\n--------------------\n\n\n### wxPayRequest(...)\n\n```typescript\nwxPayRequest(options: WxParams) => any\n```\n\n| Param | Type |\n| ------------- | --------------------------------------------- |\n| **`options`** | WxParams |\n\n**Returns:** any\n\n--------------------\n\n\n### aliPayRequest(...)\n\n```typescript\naliPayRequest(options: AlipayParams) => any\n```\n\n| Param | Type |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | AlipayParams |\n\n**Returns:** any\n\n--------------------\n\n\n### Interfaces\n\n\n#### WxParams\n\n| Prop | Type |\n| --------------- | ------------------- |\n| **`appId`** | string |\n| **`mchId`** | string |\n| **`prepayId`** | string |\n| **`noncestr`** | string |\n| **`timestamp`** | number |\n| **`sign`** | string |\n\n\n#### AlipayParams\n\n| Prop | Type |\n| --------------- | ------------------- |\n| **`orderInfo`** | string |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/fwindpeak_capacitor-plugin-wxalipay.md","loc":{"lines":{"from":1,"to":99}}}}],["64f18e2a-e776-42f9-8634-e0de4deb1a3e",{"pageContent":"# Android Intent Plugin for Capacitor\n\n![npm](https://img.shields.io/npm/v/@vinit_poojary/capacitor-intent)\n![npm bundle size](https://img.shields.io/bundlephobia/minzip/@vinit_poojary/capacitor-intent)\n![NPM](https://img.shields.io/npm/l/@vinit_poojary/capacitor-intent)\n\nCapacitor Plugin for android intent\n\n## Install\n\n```bash\nnpm install @vinit_poojary/capacitor-intent\nnpx cap sync\n```\n\n```bash\nyarn add @vinit_poojary/capacitor-intent\nyarn cap sync\n```\n## Configuration\n\n```xml\n\n \n \n \n\n```\n\n## Usage/Examples\n\n```javascript\nimport { CapacitorIntent } from '@vinit_poojary/capacitor-intent';\n```\n\n```javascript\nCapacitorIntent.addListener('getSentIntent', async ({ extraData, type }) => {\n console.log('type', type);\n console.log('extraData', extraData);\n});\n```\n\n## API\n\n\n\n* [`addListener('getSentIntent', ...)`](#addlistenergetsentintent)\n* [Interfaces](#interfaces)\n\n\n\n\n\n\n### addListener('getSentIntent', ...)\n\n```typescript\naddListener(eventName: 'getSentIntent', listenerFunc: (data: IntentData) => void) => Promise & PluginListenerHandle\n```\n\n| Param | Type |\n| ------------------ | -------------------------------------------------------------------- |\n| **`eventName`** | 'getSentIntent' |\n| **`listenerFunc`** | (data: IntentData) => void |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n--------------------\n\n\n### Interfaces\n\n\n#### PluginListenerHandle\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`remove`** | () => Promise<void> |\n\n\n#### IntentData\n\n| Prop | Type |\n| --------------- | ---------------- |\n| **`extraData`** | any |\n| **`type`** | any |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/vinit-poojary_capacitor-intent.md","loc":{"lines":{"from":1,"to":88}}}}],["b13ab335-a4b2-490f-8608-9351e24d5975",{"pageContent":"# 📱 Capacitor NodeJS-Integration\n\n:arrow_right: A full-fledged [Node.js](https://nodejs.org/) runtime for [Capacitor](https://capacitorjs.com) apps.\n\n> [!NOTE] \n> This project uses the [Node.js for Mobile Apps](https://github.com/nodejs-mobile/nodejs-mobile) toolkit to add Node.js support in Android and iOS\n\n> [!WARNING] \n> **WIP - Work in Progress**\n\n**Table of contents**\n\n* [Install](#install)\n + [Supported Platforms](#supported-platforms)\n* [Examples](#examples)\n* [Getting Started](#getting-started)\n + [Basics](#basics)\n + [Minimal example](#minimal-example)\n + [Inter-Process Communication](#inter-process-communication)\n* [Complex Projects](#complex-projects)\n + [Custom starting point](#custom-starting-point)\n + [Install Node.js Modules](#install-nodejs-modules)\n + [Improve Node.js loading times](#improve-nodejs-loading-times)\n + [Manual Node.js runtime start](#manual-nodejs-runtime-start)\n + [Data storage](#data-storage)\n* [Mobile Node.js APIs differences](#mobile-nodejs-apis-differences)\n* [Configuration](#configuration)\n* [API - Bridge module](#api---bridge-module)\n* [API - Capacitor layer](#api---capacitor-layer)\n\n## Install\n\n**Capacitor v5 or newer is required. This project isn't compatible with lower versions of Capacitor.**\n\n```bash\nnpm install https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.4/capacitor-nodejs.tgz\nnpx cap sync\n```\n\n> [!NOTE] \n> For now Android 32-bit x86 support is disabled since Capacitor-NodeJS v1.0.0-beta.2 _(based on node.js v16)_ as there is currently no support for it in the latest version of the nodejs-mobile core library.\n\n### Supported Platforms\n\n- [x] Android\n- [ ] IOS _(coming soon)_\n- [x] Using the [`capacitor-community/electron` plugin](https://github.com/capacitor-community/electron):\n - [x] Windows\n - [x] Linux\n - [x] macOS\n- [ ] _Web (maybe in future with WebAssembly?)_\n\n## Examples\n\nExample projects can be found in the [hampoelz/Capacitor-NodeJS_Examples](https://github.com/hampoelz/Capacitor-NodeJS_Examples) repository.\nEach example project is provided in a separate branch.\n\n## Getting Started\n\nThis guide shows how to add a minimal Node.js project to a Capacitor application and communicate between these processes.\n\n### Basics\n\nIn the example below the Vite build system is used. However, any build system can be used as long as the following criteria are met:\n\n1. The Node.js project (to be executed by the engine) must be located in a subdirectory named `nodejs` _(or the path set via `nodeDir`)_ of the Capacitor `webDir`.\n2. The Node.js project must have a starting point, this can either be a script named `index.js` or a package.json with a `main` field.\n\n> For example if the Node.js project needs to be compiled or bundled then this output should be located in the subdirectory of the Capacitor `webDir`.\n\n### Minimal example","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":1,"to":71}}}}],["e56700aa-6ed0-4dc1-a75a-2234fb6b5cc9",{"pageContent":"### Minimal example\n\nIn this example the directory for the app's source files is named `src`, the directory for static assets is named `static`,\nthe directory for the compiled files is named `dist`, and the directory for the Node.js project is named `nodejs`.\n\nSo the configurations should contain at least the following values:\n\n**Vite Configurations:**\n\n```typescript\n// in vite.config.js or vite.config.ts\n{\n root: './src',\n publicDir: '../static',\n build: {\n outDir: '../dist'\n }\n}\n```\n\n**Capacitor Configurations:**\n\n```typescript\n// in capacitor.config.json or capacitor.config.ts\n{\n \"webDir\": 'dist',\n \"plugins\": {\n \"CapacitorNodeJS\": {\n \"nodeDir\": \"nodejs\"\n }\n }\n}\n```\n\n
    \n\nTo meet the criteria from above using Vite, just create a new directory called `nodejs` inside the `static` directory.\nAnd create a new file called `index.js` in it as the starting point.\n\n> Vite will copy assets from the `static` directory to the root of the `dist` directory as-is.\n> So the created `nodejs` project directory will be placed in the Capacitor `webdir` after build.\n\n
    \n\nThe project structure should now look something like this:\n\n```diff\n capacitor-app/\n ├── ...\n ├── dist/ # Capacitor webdir\n ├── src/ # app source directory\n+ ├── static/ # static assets\n+ │ ├── nodejs/ # Node.js project directory\n+ │ │ ├── index.js # Node.js main script\n ├── capacitor.config.json\n ├── vite.config.ts\n ├── ...\n```\n\n
    \n\nAfter building and syncing the project, the main script will be executed by the Node.js runtime when the app is launched.\n\nA guide for a more complex Node.js project can be found in the [Complex Projects](#complex-projects) section.\n\n### Inter-Process Communication\n\nA bridge module to communicate between the Capacitor layer and the Node.js process is built-in.\n\nUse the following code in a Node.js script to wait for messages from the Capacitor layer and send messages back:\n\n```javascript\nconst { channel } = require('bridge');\n\n// Listens to \"msg-from-capacitor\" from the Capacitor layer.\nchannel.addListener('msg-from-capacitor', message => {\n console.log('[Node.js] Message from Capacitor: ' + message);\n \n // Sends a message back to the Capacitor layer.\n channel.send(\"msg-from-nodejs\",\n `Replying to the message '${message}'.`,\n \"And optionally add more arguments.\"\n );\n});\n```\n\n
    \n\nNow it is possible to communicate with the Node.js process in the Capacitor app:\n\n```typescript\nimport { NodeJS } from 'capacitor-nodejs';\n\n// Listens to \"msg-from-nodejs\" from the Node.js process.\nNodeJS.addListener('msg-from-nodejs', event => {\n document.body.innerHTML = `\n

    \n Message from Capacitor
    \n First argument: ${event.args[0]}
    \n Second argument: ${event.args[1]}\n

    \n `;\n console.log(event);\n});\n\n// Waits for the Node.js process to initialize.\nNodeJS.whenReady().then(() => {","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":71,"to":177}}}}],["60013ce8-c632-4b21-8320-0d7c6d0715a7",{"pageContent":"// Waits for the Node.js process to initialize.\nNodeJS.whenReady().then(() => {\n\n // Sends a message to the Node.js process.\n NodeJS.send({\n eventName: \"msg-from-capacitor\",\n args: [ \"Hello from Capacitor!\" ]\n });\n\n});\n```\n\nA full API documentation can be found in the [API - Bridge module](#api---bridge-module) section.\n\n---\n\n## Complex Projects\n\n**The examples in this guide are a continuation of the examples in the [Getting Started](#getting-started) guide.**\n\n### Custom starting point\n\nIn the [Getting Started](#getting-started) guide, the default starting point `index.js` was used for the Node.js project.\nHowever, the main script can be renamed or moved to subdirectories for a better organized project.\n\nTo change this starting point, add a file called `package.json` to the Node.js project, which describes the project more in detail.\nUsing the `main` field in this file, a custom starting point for the Node.js project can be specified.\nThis should be a module relative to the root of the Node.js project directory.\n\nThe package.json file could look like the following, if the `main` field is set to `server.js`:\n\n```javascript\n// static/nodejs/package.json\n{\n \"name\": \"capacitor-nodejs-project\",\n \"version\": \"1.0.0\",\n \"main\": \"./server.js\"\n}\n```\n\nThe project structure should then change to something like this:\n\n```diff\n capacitor-app/\n ├── ...\n ├── dist/\n ├── src/\n ├── static/\n │ ├── nodejs/ # Node.js project directory\n- │ │ ├── index.js # main script (old)\n+ │ │ ├── server.js # main script (new)\n+ │ │ ├── package.json # starting point\n ├── capacitor.config.json\n ├── vite.config.ts\n ├── ...\n```\n\n### Install Node.js Modules\n\nTo install Node.js modules, the project requires a `package.json` file.\nSee section [Custom starting point](#custom-starting-point) for more details.\n\nThe modules have to be installed in the Node.js project directory in which the `package.json` file was created using the npm CLI.\nAfter installing modules, rebuild and sync the Capacitor project to update the application with the Node.js project.\n\nFor convenience, a postinstall script can be added to the main `package.json` in the root of the Capacitor project to automatically install the modules of the Node.js project:\n\n```javascript\n// package.json\n{\n \"scripts\": {\n \"postinstall\": \"cd static/nodejs/ && npm install\"\n },\n // other config options\n}\n```\n\n> You may also want to add a gitignore file to ignore unnecessary files.\n> To do this, create a new file called `.gitignore` in the Node.js project directory and copy the contents of [github/gitignore/Node.gitignore](https://github.com/github/gitignore/blob/main/Node.gitignore) into it.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":177,"to":255}}}}],["5e189672-f01e-4c3f-99ea-c0a021272f0f",{"pageContent":"> [!IMPORTANT] \n> If the [`capacitor-community/electron`](https://github.com/capacitor-community/electron) plugin is used, packaging with the electron-builder may cause problems since it does not include the modules installed in the Node.js project by default.\n>\n> To fix this issue, add the configuration `\"includeSubNodeModules\": true` to the `electron-builder.config.json`.\n\n### Improve Node.js loading times\n\nThe Node.js project can quickly grow very large when installing modules.\nFor projects that contain a large number of files, the load time can be reduced by decreasing the number of files and the file sizes.\n\nFor this reason, it is recommended to use bunder tools such as [Rollup.js](https://rollupjs.org/).\nIn the following example, Rollup is used to bundle the Node.js project with all its modules to a single file.\n\nTo get started install Rollup and its plugins \"commonjs\", \"node-resolve\" and \"json\" into the root of the Capacitor project.\nIf Vite is used as build system, Rollup is already pre-installed and does not need to be installed:\n\n```bash\n# Install Rollup (If Vite is used, this command is not needed)\nnpm i --save-dev rollup\n\n# Install Rollup Plugins\nnpm i --save-dev @rollup/plugin-commonjs @rollup/plugin-json @rollup/plugin-node-resolve\n```\n\nSince the Node.js project is now to be bundled, the project structure needs some changes.\nThe Node.js project should no longer be copied directly from Vite to the Capacitor webDir directory, instead it will be bundled with Rollup.\n\nThis means that the Node.js project directory needs to be moved from the static assets to somewhere else.\nFor example to the root directory of the Capcitors project:\n\n```diff\n capacitor-app/\n ├── ...\n ├── dist/\n ├── src/\n ├── static/\n- │ ├── nodejs/\n- │ │ ├── node_modules/\n- │ │ ├── server.js\n- │ │ ├── package.json\n- │ │ ├── ...\n+ ├── nodejs/\n+ │ ├── node_modules/\n+ │ ├── server.js\n+ │ ├── package.json\n+ │ ├── ...\n ├── capacitor.config.json\n ├── vite.config.ts\n ├── ...\n```\n\n> Don't forget to update the new path to the project in the postinstall script,\n> if one is used, as described in the [Installing Node.js modules](#install-nodejs-modules) section. \n\nAfter the restructuring of the project, Rollup can be configured.\nCreate a new file called `rollup.config.mjs` with the following content:\n\n```typescript\n// rollup.config.mjs\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport nodeResolve from '@rollup/plugin-node-resolve';\n\nexport default {\n input: 'nodejs/server.js',\n output: {\n file: 'dist/nodejs/index.js',\n format: 'cjs',\n },\n external: ['bridge'],\n plugins: [\n commonjs(),\n json(),\n nodeResolve({\n preferBuiltins: true,\n }),\n ],\n};\n```\n\nTo add bundling of the Node.js project to the build steps, modify the main `package.json` in the root of the Capacitor project \nand add `&& rollup -c rollup.config.mjs` to the `build` entry in the `scripts` object:","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":257,"to":338}}}}],["9ebf7e4e-6002-49e6-8897-809600651220",{"pageContent":"```diff\n# package.json\n{\n \"scripts\": {\n- \t\"build\": \"vite build\"\n+ \t\"build\": \"vite build && rollup -c rollup.config.mjs\"\n }\n}\n```\n\nSo the project structure should look something like this:\n\n```diff\n capacitor-app/\n ├── ...\n ├── dist/\n ├── src/\n ├── nodejs/\n │ ├── node_modules/\n │ ├── server.js\n │ ├── package.json\n │ ├── ...\n ├── capacitor.config.json\n+ ├── rollup.config.mjs\n ├── vite.config.ts\n ├── ...\n```\n\n\n\nAfter building and syncing the project, the Node.js runtime should start faster now.\n\n### Manual Node.js runtime start\n\nBy default, the Node.js runtime starts automatically with application start.\nHowever, this behavior may not be suitable for all projects. \n\nThis behavior can be disabled globally via the `startMode` plugin configuration:\n\n```diff\n# in capacitor.config.json or capacitor.config.ts\n{\n \"webDir\": 'dist',\n \"plugins\": {\n \"CapacitorNodeJS\": {\n \"nodeDir\": \"nodejs\",\n+ \"startMode\": \"manual\",\n },\n },\n}\n```\n\nNow the Node.js runtime has to be started manually with the `NodeJS.start()` command:\n\n```typescript\nimport { NodeJS } from 'capacitor-nodejs';\n\n// Starts the Node.js engine.\nNodeJS.start();\n\n// Waits for the Node.js process to initialize.\nNodeJS.whenReady().then(() => {\n // Communicate with the Node.js process.\n});\n```\n\nManually starting the Node.js runtime provides options to override the `nodeDir` configuration or even the path for the main script.\n\nIn addition, arguments can be passed to the main script and environment variables for the Node.js runtime can be set:\n\n```typescript\nimport { NodeJS } from 'capacitor-nodejs';\n\n// Options for starting the Node.js engine manually.\nconst options = {\n args: [ \"--option\", \"value\" ],\n env: {\n \"DB_HOST\": \"localhost\",\n \"DB_USER\": \"myuser\",\n \"DB_PASS\": \"mypassword\"\n }\n}\n\n// Starts the Node.js engine with properties as set by the `options`.\nNodeJS.start(options);\n```\n\n> [!Note] \n>\n> Due to limitations in the Node.js for Mobile Apps toolkit, restarting the runtime after it has finished is not supported.\n\n### Data storage\n\nMobile platforms are different than the usual desktop platforms in that they require applications to write in specific sandboxed paths and don't have permissions to write elsewhere.\n\nThe built-in bridge module provides an API to get a per-user application data directory on each platform:\n\n```javascript\nconst { getDataPath } = require('bridge');\n\n// Get a path where data can be read and written.\nconst dataPath = getDataPath();\n```\n\n> [!WARNING] \n> \n> Do not use the Node.js project directory itself for data storage, it will be overwritten after each application update!\n\nTo get a path for temporary files, the node.js inbuilt method `os.tmpdir()` can be used:\n\n```javascript\nconst os = require('os');\n\n// Get a path for temporary files.\nconst tmpPath = os.tmpdir();\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":340,"to":455}}}}],["26f00efa-4e52-43f2-ad5c-d3f7e98bc13d",{"pageContent":"```javascript\nconst os = require('os');\n\n// Get a path for temporary files.\nconst tmpPath = os.tmpdir();\n```\n\n> [!WARNING] \n> \n> On Android, the files in the cache are kept until the system needs space, so it increases the application's disk space unless the developer manually deletes them.\n\n---\n\n## Mobile Node.js APIs differences\n\n> [!NOTE]\n>\n> This section is based on the documentation of the Node.js for Mobile Apps toolkits.\n\nNot every API is supported on mobile devices. Mobile operating systems do not allow applications to call certain APIs that are expected to be available on other operating systems.\n\n### child_process module\n\nMobile applications are expected to be a single process.\nAPIs that create new processes, such as `child_process.spawn()` or `child_process.fork()` will therefore run into permission issues.\n\n### file system (fs) module\n\nOn mobile platforms, the current working directory is the root directory of the file system.\nThis can lead to unexpected behavior in code that assumes that the current working directory is set to the directory of the Node.js project.\n\nOn Android creating hard links (`fs.link()` and `fs.linkSync()`) is not supported.\n\n### internationalization (intl) module\n\nThe internationalization (`intl`) module is not available on current nodejs-mobile builds.\n\n### os module\n\n- `os.cpus()` may return inconsistent/unreliable results, since different OS versions will have different permissions for accessing CPU information.\n- `os.homedir()` on mobile platforms there is no concept of user home directories.\n- `os.platform()` can also return 'android' or 'ios', depending on the platform.\n\nOn Android, the files in the cache (`os.tmpdir()`) are kept until the system needs space, so it increases the application's disk space unless the developer manually deletes them.\n\n### process module\n\n- `process.cwd()` is the root directory of the file system, instead of the start directory of the project.\n- `process.exit()` is not allowed by the Apple App Store guildelines.\n- `process.stdin` is not available.\n- `process.platform` can also be 'android' or 'ios', depending on the platform.\n- `process.versions` includes the 'mobile' key, containing the nodejs-mobile core library version.\n\nThe following functions are only available on POSIX platforms, so they are unavailable on Android:\n\n- `process.getegid()`\n- `process.geteuid()`\n- `process.getgid()`\n- `process.getgroups()`\n- `process.getuid()`\n- `process.setegid()`\n- `process.seteuid()`\n- `process.setgid()`\n- `process.setgroups()`\n- `process.setuid()`\n\n---\n\n## Configuration\n\n\n\n\nThese config values are available:","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":455,"to":528}}}}],["a4a4ca7d-4fe3-4805-987a-fb05ef5f9094",{"pageContent":"These config values are available:\n\n| Prop | Type | Description | Default | Since |\n| --------------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ----- |\n| **`nodeDir`** | string | Relative path of the integrated Node.js project based on the Capacitor webdir. | \"nodejs\" | 1.0.0 |\n| **`startMode`** | 'auto' \\| 'manual' | Startup mode of the Node.js engine. The following values are accepted: **`auto`**: The Node.js engine starts automatically when the application is launched. **`manual`**: The Node.js engine is started via the `NodeJS.start()` method. | \"auto\" | 1.0.0 |\n\n### Examples\n\nIn `capacitor.config.json`:\n\n```json\n{\n \"plugins\": {\n \"CapacitorNodeJS\": {\n \"nodeDir\": \"custom-nodejs\",\n \"startMode\": \"manual\"\n }\n }\n}\n```\n\nIn `capacitor.config.ts`:\n\n```ts\n/// \n\nimport { CapacitorConfig } from '@capacitor/cli';\n\nconst config: CapacitorConfig = {\n plugins: {\n CapacitorNodeJS: {\n nodeDir: \"custom-nodejs\",\n startMode: \"manual\",\n },\n },\n};\n\nexport default config;\n```\n\n\n\n---\n\n## API - Bridge module\n\nThe `bridge` module is built-in. It provides an API to communicate between the Capacitor layer and the Node.js process, as well as an API to get a per-user application data directory on each platform.\n\nTypeScript declarations for this `bridge` module can be manually installed as dev-dependency. If needed, the types-only package can be found under `node_modules/capacitor-nodejs/assets/types/bridge` in the root of the Capacitor project.\n\n* [`getDataPath()`](#getDataPath)\n* [`channel`](#channel)\n\n\n### getDataPath()\n\n```typescript\ngetDataPath: () => string\n```\n\nReturns a path for a per-user application data directory on each platform, where data can be read and written.\n\n**Since:** 1.0.0\n\n--------------------\n\n### channel\n\nThe `channel` class of the `bridge` module is an [Event Emitter](https://nodejs.org/api/events.html#events_class_eventemitter). It provides a few methods to send messages from the Node.js process to the Capacitor layer, and to receive replies from the Capacitor layer.\n\nIt has the following method to listen for events and send messages:","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":528,"to":599}}}}],["de7a2db4-9ff0-4025-8402-428290e82570",{"pageContent":"It has the following method to listen for events and send messages:\n\n* [`send(...)`](#channelsend)\n* [`on(string, ...)`](#channelonstring)\n* [`once(string, ...)`](#channeloncestring)\n* [`addListener(string, ...)`](#channeladdlistenerstring)\n* [`removeListener(...)`](#channelremovelistener)\n* [`removeAllListeners(...)`](#channelremovealllisteners)\n\n### channel.send(...)\n\n```typescript\nsend: (eventName: string, ...args: any[]) => void\n```\n\nSends a message to the Capacitor layer via `eventName`, along with arguments.\nArguments will be serialized with JSON.\n\n| Param | Type | Description | Since |\n| --------------- | ------------------- | ------------------------------------ | ----- |\n| **`eventName`** | string | The name of the event being send to. | 1.0.0 |\n| **`args`** | any[] | The Array of arguments to send. | 1.0.0 |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### channel.on(string, ...)\n\n```typescript\non: (eventName: string, listener: (...args: any[]) => void) => void\n```\n\nListens to `eventName` and calls `listener(args...)` when a new message arrives from the Capacitor layer.\n\n| Param | Type |\n| --------------- | ------------------------------------- |\n| **`eventName`** | string |\n| **`listener`** | (...args: any[]) => void |\n\n```typescript\nlistener: (...args: any[]) => void\n```\n\n| Param | Type | Description | Since |\n| ---------- | ------------------- | -------------------------------- | ----- |\n| **`args`** | any[] | The received array of arguments. | 1.0.0 |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### channel.once(string, ...)\n\n```typescript\nonce: (eventName: string, listener: (...args: any[]) => void) => void\n```\n\nListens one time to `eventName` and calls `listener(args...)` when a new message arrives from the Capacitor layer, after which it is removed.\n\n| Param | Type |\n| --------------- | ------------------------------------- |\n| **`eventName`** | string |\n| **`listener`** | (...args: any[]) => void |\n\n```typescript\nlistener: (...args: any[]) => void\n```\n\n| Param | Type | Description | Since |\n| ---------- | ------------------- | -------------------------------- | ----- |\n| **`args`** | any[] | The received array of arguments. | 1.0.0 |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### channel.addListener(string, ...)\n\n```typescript\naddListener: (eventName: string, listener: (...args: any[]) => void) => void\n```\n\nAlias for [`channel.on(string, ...)`](#channelonstring).\n\n| Param | Type |\n| --------------- | ------------------------------------- |\n| **`eventName`** | string |\n| **`listener`** | (...args: any[]) => void |\n\n```typescript\nlistener: (...args: any[]) => void\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":599,"to":694}}}}],["27959308-193e-43ff-9c6b-807efd790e70",{"pageContent":"```typescript\nlistener: (...args: any[]) => void\n```\n\n| Param | Type | Description | Since |\n| ---------- | ------------------- | -------------------------------- | ----- |\n| **`args`** | any[] | The received array of arguments. | 1.0.0 |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### channel.removeListener(...)\n\n```typescript\nremoveListener: (eventName: string, listener: (...args: any[]) => void) => void\n```\n\nRemoves the specified `listener` from the listener array for the specified `eventName`.\n\n| Param | Type |\n| --------------- | ------------------------------------- |\n| **`eventName`** | string |\n| **`listener`** | (...args: any[]) => void |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### channel.removeAllListeners(...)\n\n```typescript\nremoveAllListeners: (eventName?: string) => void\n```\n\nRemoves all listeners, or those of the specified `eventName`.\n\n| Param | Type | Description | Since |\n| --------------- | ------------------- | --------------------------------------------------------- | ----- |\n| **`eventName`** | string | The name of the event all listeners will be removed from. | 1.0.0 |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n## API - Capacitor layer\n\nThe `NodeJS` module is the API used in the Capacitor app. It provides a few methods to send messages from the Node.js layer and wait for them.\n\nIt has the following methods:\n\n\n\n* [`start(...)`](#start)\n* [`send(...)`](#send)\n* [`whenReady()`](#whenready)\n* [`addListener(string, ...)`](#addlistenerstring)\n* [`removeListener(...)`](#removelistener)\n* [`removeAllListeners(...)`](#removealllisteners)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n\n\n\n\n\n### start(...)\n\n```typescript\nstart(options?: StartOptions) => Promise\n```\n\nStarts the Node.js engine with properties as set by the `options`.\n\n**Note:** This method is only available if the Node.js engine startup mode was set to `'manual'` via the plugin configuration.\n\n| Param | Type |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | StartOptions |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### send(...)\n\n```typescript\nsend(args: ChannelPayloadData) => Promise\n```\n\nSends a message to the Node.js process.\n\n| Param | Type |\n| ---------- | ----------------------------------------------------------------- |\n| **`args`** | ChannelPayloadData |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### whenReady()\n\n```typescript\nwhenReady() => Promise\n```\n\nResolves when the Node.js process is initialized.\n\n**Since:** 1.0.0","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":694,"to":808}}}}],["cd25b0d6-0353-4d76-920f-08b1a55f7d91",{"pageContent":"```typescript\nwhenReady() => Promise\n```\n\nResolves when the Node.js process is initialized.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener(string, ...)\n\n```typescript\naddListener(eventName: string, listenerFunc: ChannelListenerCallback) => Promise & PluginListenerHandle\n```\n\nListens to `eventName` and calls `listenerFunc(data)` when a new message arrives from the Node.js process.\n\n**Note:** When using the Electron platform, [`PluginListenerHandle.remove()`](#pluginlistenerhandle) does not work due to limitations.\nUse [`removeListener(listenerFunc)`](#removelistener) instead.\n\n| Param | Type |\n| ------------------ | --------------------------------------------------------------------------- |\n| **`eventName`** | string |\n| **`listenerFunc`** | ChannelListenerCallback |\n\n**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeListener(...)\n\n```typescript\nremoveListener(listenerHandle: PluginListenerHandle) => Promise\n```\n\nRemoves the specified `listenerHandle` from the listener array for the event it refers to.\n\n| Param | Type |\n| -------------------- | --------------------------------------------------------------------- |\n| **`listenerHandle`** | PluginListenerHandle |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeAllListeners(...)\n\n```typescript\nremoveAllListeners(eventName?: string) => Promise\n```\n\nRemoves all listeners, or those of the specified `eventName`, for this plugin.\n\n| Param | Type |\n| --------------- | ------------------- |\n| **`eventName`** | string |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### StartOptions\n\nAn interface containing the options used when starting the Node.js engine manually.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":808,"to":881}}}}],["7e93f800-92d6-4e2d-960a-5aa3d88dab1d",{"pageContent":"### Interfaces\n\n\n#### StartOptions\n\nAn interface containing the options used when starting the Node.js engine manually.\n\n| Prop | Type | Description | Since |\n| ------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- |\n| **`nodeDir`** | string | Relative path of the integrated Node.js project based on the Capacitor webdir. Defaults to the `nodeDir` field of the global plugin configuration. If the `nodeDir` config is not set, `nodejs` in the Capacitor webdir is used as Node.js project directory. | 1.0.0 |\n| **`script`** | string | The primary entry point to the Node.js program. This should be a module relative to the root of the Node.js project folder. Defaults to the `main` field in the project's package.json. If the `main` field is not set, `index.js` in the project's root folder is used. | 1.0.0 |\n| **`args`** | string[] | A list of string arguments. | 1.0.0 |\n| **`env`** | NodeEnv | Environment key-value pairs. | 1.0.0 |\n\n\n#### NodeEnv\n\nAn interface that holds environment variables as string key-value pairs.\n\n\n#### ChannelPayloadData\n\nThe payload data to send a message to the web page via `eventName`,\nalong with arguments. Arguments will be serialized with JSON.\n\n| Prop | Type | Description | Since |\n| --------------- | ------------------- | ------------------------------------ | ----- |\n| **`eventName`** | string | The name of the event being send to. | 1.0.0 |\n| **`args`** | any[] | The array of arguments to send. | 1.0.0 |\n\n\n#### PluginListenerHandle\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`remove`** | () => Promise<void> |\n\n\n#### ChannelCallbackData\n\nThe callback data object when a message from the Node.js process arrives.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":881,"to":921}}}}],["c2e2817d-a798-4364-bd90-5d6ba0f54622",{"pageContent":"#### ChannelCallbackData\n\nThe callback data object when a message from the Node.js process arrives.\n\n| Prop | Type | Description | Since |\n| ---------- | ------------------ | -------------------------------- | ----- |\n| **`args`** | any[] | The received array of arguments. | 1.0.0 |\n\n\n### Type Aliases\n\n\n#### ChannelListenerCallback\n\nThe callback function to be called when listen to messages from the Node.js process.\n\n(data: ChannelCallbackData): void\n\n\n\n---\n\n

    \n Made with ❤️ by Rene Hampölz\n

    \n \"GitHub\"\n \"Instagram\"\n \"Twitter\"\n

    ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/hampoelz_Capacitor-NodeJS.md","loc":{"lines":{"from":921,"to":949}}}}],["7971fb7b-ad50-44d6-b90f-3e0881cea549",{"pageContent":"# capacitor-secure-storage-plugin\n\nCapacitor plugin for storing string values securly on iOS and Android.\n\n## How to install\n\nFor Capacitor < 2.0.0\n\n```\nnpm install capacitor-secure-storage-plugin@0.3.2\n```\n\nFor Capacitor >= 2.0.0 (supported from 0.4.0)\n\n```\nnpm install capacitor-secure-storage-plugin\n```\n\n## Usage\n\nIn a component where you want to use this plugin add to or modify imports:\n\n```\nimport 'capacitor-secure-storage-plugin';\nimport { Plugins } from '@capacitor/core';\n\nconst { SecureStoragePlugin } = Plugins;\n```\n\nFirst line is needed because of web part of the plugin (current behavior of Capacitor, this may change in future releases).\n\n### Android\n\nIn Android you have to register plugins manually in MainActivity class of your app.\n\nhttps://capacitor.ionicframework.com/docs/plugins/android/#export-to-capacitor\n\n```\nimport com.whitestein.securestorage.SecureStoragePlugin;\n\n...\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(SecureStoragePlugin.class);\n }});\n }\n}\n```\n\n## Methods\n\n- **get**(options: { key: string }): Promise<{ value: string }>\n - if item with specified key does not exist, throws an Error\n\n* **keys**(): Promise<{ value: string[] }>\n* **set**(options: { key: string; value: string }): Promise<{ value: boolean }>\n* **remove**(options: { key: string }): Promise<{ value: boolean }>\n* **clear**(): Promise<{ value: boolean }>\n - set, remove and clear return true in case of success and false in case of error\n\n- **getPlatform**(): Promise<{ value: string }>\n - returns which implementation is used - one of 'web', 'ios' or 'android'\n\n## Example\n\n```\nconst key = 'username';\nconst value = 'hellokitty2';\n\nSecureStoragePlugin.set({ key, value })\n .then(success => console.log(success))\n```\n\n```\nconst key = 'username';\nSecureStoragePlugin.get({ key })\n .then(value => {\n console.log(value);\n })\n .catch(error => {\n console.log('Item with specified key does not exist.');\n });\n```\n\n```\nasync getUsername(key: string) {\n return await SecureStoragePlugin.get({ key });\n}\n```\n\n## Platform specific information\n\n### iOS\n\nThis plugin uses SwiftKeychainWrapper under the hood for iOS.\n\n##### Warning\n\nUp to version v0.4.0 there was standard keychain used. Since v0.5.0 there is separate keychain wrapper, so keys() method returns only keys set in v0.5.0 or higher version.\n\n### Android\n\nOn Android it is implemented by AndroidKeyStore and SharedPreferences. Source: [Apriorit](https://www.apriorit.com/dev-blog/432-using-androidkeystore)\n\n##### Warning\n\nFor Android API < 18 values are stored as simple base64 encoded strings.\n\n### Web","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/PayClearly_capacitor-secure-storage-plugin.md","loc":{"lines":{"from":1,"to":117}}}}],["36e98eb4-b8cb-46bf-aed8-e20c637a1fc4",{"pageContent":"##### Warning\n\nFor Android API < 18 values are stored as simple base64 encoded strings.\n\n### Web\n\nThere is no secure storage in browser (not because it is not implemented by this plugin, but it does not exist at all). Values are stored in LocalStorage, but they are at least base64 encoded. Plugin adds 'cap*sec*' prefix to keys to avoid conflicts with other data stored in LocalStorage.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/PayClearly_capacitor-secure-storage-plugin.md","loc":{"lines":{"from":117,"to":123}}}}],["7e69432d-a751-49c2-a338-42929061e738",{"pageContent":"# ion-pkg\n\nnill\n\n## Install\n\n```bash\nnpm install ion-pkg\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/usama712_ion-pkg.md","loc":{"lines":{"from":1,"to":37}}}}],["4e1ddccf-4dbc-4418-9583-54adc6528c9c",{"pageContent":"# capacitor-plugin-python\n\nclose\n\n## Install\n\n```bash\nnpm install capacitor-plugin-python\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/himanushi_capacitor-plugin-python.md","loc":{"lines":{"from":1,"to":37}}}}],["ad37c0b4-4f67-40fb-8fc0-bb7c4d2ba7ed",{"pageContent":"# capacitor-plugin-awake-wxmini\n\ncapacitor-plugin-awake-wxmini可以让用户在App中唤起微信小程序,并在操作完成后返回到App中的一个插件。\n\n### 支持平台\n* Android\n\n### 使用方法\n```markdown\nnpm install capacitor-plugin-awake-wxmini --save\n\n/* 在android的MainActivity.java中添加插件 */\n\n// 引入插件\nimport com.brainy.awakewxmini.AwakeWxMiniPlugin;\n// 添加插件\nadd(AwakeWxMiniPlugin.class);\n\n```\n\n### API\n\n### awake\n\n```\nawake(options:AwakeOptions):void\n```\nApp中调用改方法唤起微信小程序。\n\noptions:AwakeOptions\n\nreturn:void\n\n\n### Interface Used\n\n#### AwakeOptions\n\n```javascript\n\ninterface AwakeOptions {\n appId: string;\n // 应用id,微信开放平台申请的\n miniId:string;\n // 微信小程序原始Id,gh_开头\n path:string;\n // 小程序打开路径,不填则为小程序默认打开路径,可通过路径传参。如:\"/path?a=1&b=2\"\n type:number;\n // 小程序打开类型,0:正式版,1:开发版,2:体验版\n}\n\n```\n\n### Example\n\n```markdown\n import { Plugins } from '@capacitor/core';\n\n Plugins.AwakeWxMiniPlugin.awake({\n appId: \"\",\n miniId: \"\",\n path: \"\",\n type: 0\n })\n```\n\n#### Tips:\n如果需要实现小程序执行完成回到app中,需要做以下操作:\n\n1.在项目的MainActivity同级目录中新建文件夹wxapi,并在wxapi中新建WXEntryActivity类,并填入以下内容\n```markdown\npackage com.brainy.manager.wxapi;//注意更改为自己的包名路径\n\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.util.Log;\n\nimport com.brainy.awakewxmini.AwakeWxMiniPlugin;\nimport com.getcapacitor.JSObject;\nimport com.getcapacitor.PluginCall;\nimport com.tencent.mm.opensdk.constants.ConstantsAPI;\nimport com.tencent.mm.opensdk.modelbase.BaseReq;\nimport com.tencent.mm.opensdk.modelbase.BaseResp;\nimport com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;\nimport com.tencent.mm.opensdk.openapi.IWXAPI;\nimport com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;\n\n\npublic class WXEntryActivity extends Activity implements IWXAPIEventHandler {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n IWXAPI api = AwakeWxMiniPlugin.getWxApi(this);\n\n if (api == null) {\n startMainActivity();\n } else {\n api.handleIntent(getIntent(), this);\n }\n }\n\n @Override\n protected void onNewIntent(Intent intent) {\n super.onNewIntent(intent);\n\n setIntent(intent);\n\n IWXAPI api = AwakeWxMiniPlugin.getWxApi(this);\n if (api == null) {\n startMainActivity();\n } else {\n api.handleIntent(intent, this);\n }\n\n }\n\n @Override\n public void onResp(BaseResp resp) {\n Log.d(\"WX\", resp.toString());\n\n PluginCall call = AwakeWxMiniPlugin.getCall();\n\n if (call == null) {\n startMainActivity();\n return ;\n }","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/DaiHuaXieHuaKai_capacitor-plugin-awake-wxmini.md","loc":{"lines":{"from":1,"to":128}}}}],["853f7b14-f098-40f8-bc12-6cbe80036dca",{"pageContent":"if (call == null) {\n startMainActivity();\n return ;\n }\n\n switch (resp.errCode) {\n case BaseResp.ErrCode.ERR_OK:\n switch (resp.getType()) {\n case ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM:\n Log.d(\"WX\", \"miniprogram back;\");\n WXLaunchMiniProgram.Resp miniProResp = (WXLaunchMiniProgram.Resp) resp;\n launchMiniProResp(miniProResp);\n break;\n default:\n call.success();\n break;\n }\n break;\n case BaseResp.ErrCode.ERR_USER_CANCEL:\n call.error(\"用户取消\");\n break;\n case BaseResp.ErrCode.ERR_AUTH_DENIED:\n call.error(\"授权失败\");\n break;\n case BaseResp.ErrCode.ERR_SENT_FAILED:\n call.error(\"发送请求失败\");\n break;\n case BaseResp.ErrCode.ERR_UNSUPPORT:\n call.error(\"微信不支持\");\n break;\n case BaseResp.ErrCode.ERR_COMM:\n call.error(\"普通错误\");\n break;\n default:\n call.error(\"未知错误\");\n break;\n }\n\n finish();\n }\n\n @Override\n public void onReq(BaseReq req) {\n finish();\n }\n\n protected void startMainActivity() {\n Intent intent = new Intent();\n intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\n intent.setPackage(getApplicationContext().getPackageName());\n getApplicationContext().startActivity(intent);\n }\n\n protected void launchMiniProResp(WXLaunchMiniProgram.Resp launchMiniProResp){\n PluginCall call = AwakeWxMiniPlugin.getCall();\n String extraData =launchMiniProResp.extMsg; //对应小程序组件 \n `,\n styles: [\n `\n capacitor-google-map {\n display: inline-block;\n width: 275px;\n height: 400px;\n }\n `,\n ],\n})\nexport class MyMap {\n @ViewChild('map')\n mapRef: ElementRef;\n newMap: GoogleMap;\n\n async createMap() {\n this.newMap = await GoogleMap.create({\n id: 'my-cool-map',\n element: this.mapRef.nativeElement,\n apiKey: environment.apiKey,\n config: {\n center: {\n lat: 33.6,\n lng: -117.9,\n },\n zoom: 8,\n },\n });\n }\n}\n```\n\n### React\n\n```jsx\nimport { GoogleMap } from '@capacitor/google-maps';\nimport { useRef } from 'react';\n\nconst MyMap: React.FC = () => {\n const mapRef = useRef();\n let newMap: GoogleMap;\n\n async function createMap() {\n if (!mapRef.current) return;\n\n newMap = await GoogleMap.create({\n id: 'my-cool-map',\n element: mapRef.current,\n apiKey: process.env.REACT_APP_YOUR_API_KEY_HERE,\n config: {\n center: {\n lat: 33.6,\n lng: -117.9\n },\n zoom: 8\n }\n })\n }\n\n return (\n
    \n \n\n \n
    \n )\n}\n\nexport default MyMap;\n```\n\n### Javascript\n\n```html\n\n\n\n\n\n\n```\n\n## API\n\n\n\n* [`create(...)`](#create)\n* [`resize(...)`](#resize)\n* [`addMarker(...)`](#addmarker)\n* [`addMarkers(...)`](#addmarkers)\n* [`removeMarker(...)`](#removemarker)\n* [`removeOverlayPositionChangeListener(...)`](#removeoverlaypositionchangelistener)\n* [`removeMarkers(...)`](#removemarkers)\n* [`enableClustering(...)`](#enableclustering)\n* [`disableClustering(...)`](#disableclustering)\n* [`destroy(...)`](#destroy)\n* [`setCamera(...)`](#setcamera)\n* [`setMapType(...)`](#setmaptype)\n* [`enableIndoorMaps(...)`](#enableindoormaps)\n* [`toScreenLocation(...)`](#toscreenlocation)\n* [`enableTrafficLayer(...)`](#enabletrafficlayer)\n* [`enableAccessibilityElements(...)`](#enableaccessibilityelements)\n* [`enableCurrentLocation(...)`](#enablecurrentlocation)\n* [`setPadding(...)`](#setpadding)\n* [`onScroll(...)`](#onscroll)\n* [`dispatchMapEvent(...)`](#dispatchmapevent)\n* [`getMapBounds(...)`](#getmapbounds)\n* [Interfaces](#interfaces)\n* [Enums](#enums)\n\n\n\n\n\n\n### create(...)\n\n```typescript\ncreate(options: CreateMapArgs) => Promise\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------------- |\n| **`options`** | CreateMapArgs |\n\n--------------------\n\n\n### resize(...)\n\n```typescript\nresize(options: ResizeArgs) => Promise\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------------- |\n| **`options`** | ResizeArgs |\n\n--------------------\n\n\n### addMarker(...)\n\n```typescript\naddMarker(args: AddMarkerArgs) => Promise<{ id: string; }>\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------- |\n| **`args`** | AddMarkerArgs |\n\n**Returns:** Promise<{ id: string; }>\n\n--------------------\n\n\n### addMarkers(...)\n\n```typescript\naddMarkers(args: AddMarkersArgs) => Promise<{ ids: string[]; }>\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":249,"to":347}}}}],["02ae2c36-6d12-45c5-ac02-a277083b3b4b",{"pageContent":"--------------------\n\n\n### addMarkers(...)\n\n```typescript\naddMarkers(args: AddMarkersArgs) => Promise<{ ids: string[]; }>\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------- |\n| **`args`** | AddMarkersArgs |\n\n**Returns:** Promise<{ ids: string[]; }>\n\n--------------------\n\n\n### removeMarker(...)\n\n```typescript\nremoveMarker(args: RemoveMarkerArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------------- |\n| **`args`** | RemoveMarkerArgs |\n\n--------------------\n\n\n### removeOverlayPositionChangeListener(...)\n\n```typescript\nremoveOverlayPositionChangeListener(args: RemoveOverlay) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------- |\n| **`args`** | RemoveOverlay |\n\n--------------------\n\n\n### removeMarkers(...)\n\n```typescript\nremoveMarkers(args: RemoveMarkersArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------------- |\n| **`args`** | RemoveMarkersArgs |\n\n--------------------\n\n\n### enableClustering(...)\n\n```typescript\nenableClustering(args: { id: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n--------------------\n\n\n### disableClustering(...)\n\n```typescript\ndisableClustering(args: { id: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n--------------------\n\n\n### destroy(...)\n\n```typescript\ndestroy(args: DestroyMapArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------- |\n| **`args`** | DestroyMapArgs |\n\n--------------------\n\n\n### setCamera(...)\n\n```typescript\nsetCamera(args: CameraArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------- |\n| **`args`** | CameraArgs |\n\n--------------------\n\n\n### setMapType(...)\n\n```typescript\nsetMapType(args: MapTypeArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------- |\n| **`args`** | MapTypeArgs |\n\n--------------------\n\n\n### enableIndoorMaps(...)","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":347,"to":469}}}}],["0961ca2a-a51f-4d29-ab2e-ac9ac1631fee",{"pageContent":"--------------------\n\n\n### enableIndoorMaps(...)\n\n```typescript\nenableIndoorMaps(args: IndoorMapArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------- |\n| **`args`** | IndoorMapArgs |\n\n--------------------\n\n\n### toScreenLocation(...)\n\n```typescript\ntoScreenLocation(args: ToScreenLocationArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------------------- |\n| **`args`** | ToScreenLocationArgs |\n\n**Returns:** Promise<any>\n\n--------------------\n\n\n### enableTrafficLayer(...)\n\n```typescript\nenableTrafficLayer(args: TrafficLayerArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ------------------------------------------------------------- |\n| **`args`** | TrafficLayerArgs |\n\n--------------------\n\n\n### enableAccessibilityElements(...)\n\n```typescript\nenableAccessibilityElements(args: AccElementsArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ----------------------------------------------------------- |\n| **`args`** | AccElementsArgs |\n\n--------------------\n\n\n### enableCurrentLocation(...)\n\n```typescript\nenableCurrentLocation(args: CurrentLocArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------------- |\n| **`args`** | CurrentLocArgs |\n\n--------------------\n\n\n### setPadding(...)\n\n```typescript\nsetPadding(args: PaddingArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | --------------------------------------------------- |\n| **`args`** | PaddingArgs |\n\n--------------------\n\n\n### onScroll(...)\n\n```typescript\nonScroll(args: OnScrollArgs) => Promise\n```\n\n| Param | Type |\n| ---------- | ----------------------------------------------------- |\n| **`args`** | OnScrollArgs |\n\n--------------------\n\n\n### dispatchMapEvent(...)\n\n```typescript\ndispatchMapEvent(args: { id: string; focus: boolean; }) => Promise\n```\n\n| Param | Type |\n| ---------- | -------------------------------------------- |\n| **`args`** | { id: string; focus: boolean; } |\n\n--------------------\n\n\n### getMapBounds(...)\n\n```typescript\ngetMapBounds(args: { id: string; }) => Promise\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":469,"to":582}}}}],["520e9eb9-d42f-494a-a92a-7541f053e30e",{"pageContent":"--------------------\n\n\n### getMapBounds(...)\n\n```typescript\ngetMapBounds(args: { id: string; }) => Promise\n```\n\n| Param | Type |\n| ---------- | ---------------------------- |\n| **`args`** | { id: string; } |\n\n**Returns:** Promise<LatLngBounds>\n\n--------------------\n\n\n### Interfaces\n\n\n#### CreateMapArgs\n\nAn interface containing the options used when creating a map.\n\n| Prop | Type | Description | Default |\n| ----------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------ |\n| **`id`** | string | A unique identifier for the map instance. | |\n| **`apiKey`** | string | The Google Maps SDK API Key. | |\n| **`config`** | GoogleMapConfig | The initial configuration settings for the map. | |\n| **`element`** | HTMLElement | The DOM element that the Google Map View will be mounted on which determines size and positioning. | |\n| **`forceCreate`** | boolean | Destroy and re-create the map instance if a map with the supplied id already exists | false |\n\n\n#### GoogleMapConfig\n\nFor web, all the javascript Google Maps options are available as\nGoogleMapConfig extends google.maps.MapOptions.\nFor iOS and Android only the config options declared on GoogleMapConfig are available.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":582,"to":620}}}}],["74a5a9b9-55c0-4426-a135-7968646de407",{"pageContent":"| Prop | Type | Description | Default | Since |\n| ---------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- |\n| **`width`** | number | Override width for native map. | | |\n| **`height`** | number | Override height for native map. | | |\n| **`x`** | number | Override absolute x coordinate position for native map. | | |\n| **`y`** | number | Override absolute y coordinate position for native map. | | |\n| **`center`** | LatLng | Default location on the Earth towards which the camera points. | | |\n| **`zoom`** | number | Sets the zoom of the map. | | |\n| **`androidLiteMode`** | boolean | Enables image-based lite mode on Android. | false | |\n| **`devicePixelRatio`** | number | Override pixel ratio for native map. | | |\n| **`styles`** | MapTypeStyle[] \\| null | Styles to apply to each of the default map types. Note that for satellite, hybrid and terrain modes, these styles will only apply to labels and geometry. | | 4.3.0 |\n\n\n#### LatLng\n\nAn interface representing a pair of latitude and longitude coordinates.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":622,"to":637}}}}],["787ae72b-6289-4f88-bff9-a26d60d3073b",{"pageContent":"#### LatLng\n\nAn interface representing a pair of latitude and longitude coordinates.\n\n| Prop | Type | Description |\n| --------- | ------------------- | ------------------------------------------------------------------------- |\n| **`lat`** | number | Coordinate latitude, in degrees. This value is in the range [-90, 90]. |\n| **`lng`** | number | Coordinate longitude, in degrees. This value is in the range [-180, 180]. |\n\n\n#### ResizeArgs\n\n| Prop | Type |\n| ------------ | -------------------- |\n| **`id`** | string |\n| **`bounds`** | DOMRect |\n\n\n#### AddMarkerArgs\n\n| Prop | Type |\n| ------------ | ----------------------------------------- |\n| **`id`** | string |\n| **`marker`** | Marker |\n\n\n#### Marker\n\nA marker is an icon placed at a particular point on the map's surface.","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":637,"to":665}}}}],["4a7b794d-4c29-4471-a96d-a524288b1ac1",{"pageContent":"| Prop | Type | Description | Default | Since |\n| ---------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- |\n| **`coordinate`** | LatLng | Marker position | | |\n| **`opacity`** | number | Sets the opacity of the marker, between 0 (completely transparent) and 1 inclusive. | 1 | |\n| **`title`** | string | Title, a short description of the overlay. | | |\n| **`snippet`** | string | Snippet text, shown beneath the title in the info window when selected. | | |\n| **`isFlat`** | boolean | Controls whether this marker should be flat against the Earth's surface or a billboard facing the camera. | false | |\n| **`iconUrl`** | string | Path to a marker icon to render. It can be relative to the web app public directory, or a https url of a remote marker icon. **SVGs are not supported on native platforms.** | | 4.2.0 |\n| **`iconSize`** | Size | Controls the scaled size of the marker image set in `iconUrl`. | | 4.2.0 |\n| **`iconOrigin`** | Point | The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image . | | 4.2.0 |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":667,"to":676}}}}],["62d7c3d8-31c4-4714-aa02-4de7ae8ccdc0",{"pageContent":"| **`iconAnchor`** | Point | The position at which to anchor an image in correspondence to the location of the marker on the map. By default, the anchor is located along the center point of the bottom of the image. | | 4.2.0 |\n| **`tintColor`** | { r: number; g: number; b: number; a: number; } | Customizes the color of the default marker image. Each value must be between 0 and 255. Only for iOS and Android. | | 4.2.0 |\n| **`draggable`** | boolean | Controls whether this marker can be dragged interactively | false | |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":677,"to":679}}}}],["2b5e79ce-7119-4c50-a9a4-4dc073a362e9",{"pageContent":"#### Size\n\n| Prop | Type |\n| ------------ | ------------------- |\n| **`width`** | number |\n| **`height`** | number |\n\n\n#### Point\n\n| Prop | Type |\n| ------- | ------------------- |\n| **`x`** | number |\n| **`y`** | number |\n\n\n#### AddMarkersArgs\n\n| Prop | Type |\n| ------------- | --------------------- |\n| **`id`** | string |\n| **`markers`** | Marker[] |\n\n\n#### RemoveMarkerArgs\n\n| Prop | Type |\n| -------------- | ------------------- |\n| **`id`** | string |\n| **`markerId`** | string |\n\n\n#### RemoveOverlay\n\n| Prop | Type |\n| ---------------- | ------------------- |\n| **`id`** | string |\n| **`callbackId`** | string |\n\n\n#### RemoveMarkersArgs\n\n| Prop | Type |\n| --------------- | --------------------- |\n| **`id`** | string |\n| **`markerIds`** | string[] |\n\n\n#### DestroyMapArgs\n\n| Prop | Type |\n| -------- | ------------------- |\n| **`id`** | string |\n\n\n#### CameraArgs\n\n| Prop | Type |\n| ------------ | ----------------------------------------------------- |\n| **`id`** | string |\n| **`config`** | CameraConfig |\n\n\n#### CameraConfig\n\nConfiguration properties for a Google Map Camera","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":682,"to":747}}}}],["31ff9f1a-09b1-4213-af2a-aa21e030dc98",{"pageContent":"#### CameraConfig\n\nConfiguration properties for a Google Map Camera\n\n| Prop | Type | Description | Default |\n| ----------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------ |\n| **`coordinate`** | LatLng | Location on the Earth towards which the camera points. | |\n| **`zoom`** | number | Sets the zoom of the map. | |\n| **`bearing`** | number | Bearing of the camera, in degrees clockwise from true north. | 0 |\n| **`angle`** | number | The angle, in degrees, of the camera from the nadir (directly facing the Earth). The only allowed values are 0 and 45. | 0 |\n| **`animate`** | boolean | Animate the transition to the new Camera properties. | false |\n| **`animationDuration`** | number | This configuration option is not being used. | |\n\n\n#### MapTypeArgs\n\n| Prop | Type |\n| ------------- | ------------------------------------------- |\n| **`id`** | string |\n| **`mapType`** | MapType |\n\n\n#### IndoorMapArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### ToScreenLocationArgs\n\n| Prop | Type |\n| --------- | ------------------- |\n| **`id`** | string |\n| **`lat`** | number |\n| **`lng`** | number |\n\n\n#### TrafficLayerArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### AccElementsArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### CurrentLocArgs\n\n| Prop | Type |\n| ------------- | -------------------- |\n| **`id`** | string |\n| **`enabled`** | boolean |\n\n\n#### PaddingArgs","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":747,"to":810}}}}],["377a68aa-e5fa-4df6-990d-35c71d5181c1",{"pageContent":"#### PaddingArgs\n\n| Prop | Type |\n| ------------- | ------------------------------------------------- |\n| **`id`** | string |\n| **`padding`** | MapPadding |\n\n\n#### MapPadding\n\nControls for setting padding on the 'visible' region of the view.\n\n| Prop | Type |\n| ------------ | ------------------- |\n| **`top`** | number |\n| **`left`** | number |\n| **`right`** | number |\n| **`bottom`** | number |\n\n\n#### OnScrollArgs\n\n| Prop | Type |\n| --------------- | --------------------------------------------------------------------- |\n| **`id`** | string |\n| **`mapBounds`** | { x: number; y: number; width: number; height: number; } |\n\n\n#### LatLngBounds\n\nAn interface representing the viewports latitude and longitude bounds.\n\n| Prop | Type |\n| --------------- | ----------------------------------------- |\n| **`southwest`** | LatLng |\n| **`center`** | LatLng |\n| **`northeast`** | LatLng |\n\n\n### Enums\n\n\n#### MapType\n\n| Members | Value | Description |\n| --------------- | ------------------------ | ---------------------------------------- |\n| **`Normal`** | 'Normal' | Basic map. |\n| **`Hybrid`** | 'Hybrid' | Satellite imagery with roads and labels. |\n| **`Satellite`** | 'Satellite' | Satellite imagery with no labels. |\n| **`Terrain`** | 'Terrain' | Topographic data. |\n| **`None`** | 'None' | No base map tiles. |\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/SowouldyouTech_google-maps.md","loc":{"lines":{"from":810,"to":862}}}}],["256c6150-6317-4b97-9488-4057e6bdc9f3",{"pageContent":"# Capacitor Bluetooth Serial Plugin\n\nA client implementation for interacting with Bluetooth\n\nSupported platforms\n\n- [ ] Web\n- [x] Android\n- [ ] iOS\n\n## Usage\n\nInstall the plugin via npm\n```\nnpm install --save capacitor-bluetooth-serial\n```\n\nIn your capacitor project, make sure to register the Android plugin in\nin the projects `MainActivity` as follows\n\n```java\nimport com.bluetoothserial.plugin.BluetoothSerial;\n\npublic class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n this.init(savedInstanceState, new ArrayList>() {{\n add(BluetoothSerial.class);\n }});\n }\n}\n```\n\n\n\n```typescript\nimport {Plugins} from \"@capacitor/core\";\n\nconst { BluetoothSerial } = Plugins;\n\n//...do something with plugin\n\n```\n\n## API Documentation\n\nInterface and type definitions can be found [here](./src/definitions.ts).\n\n# API\n\n## Methods\n\n- [BluetoothSerial.isEnabled](#isEnabled)\n- [BluetoothSerial.enable](#enable)\n- [BluetoothSerial.scan](#scan)\n- [BluetoothSerial.connect](#connect)\n- [BluetoothSerial.connectInsecure](#connectInsecure)\n- [BluetoothSerial.disconnect](#disconnect)\n- [BluetoothSerial.isConnected](#isConnected)\n- [BluetoothSerial.read](#read)\n- [BluetoothSerial.readUntil](#readUntil)\n- [BluetoothSerial.enableNotifications](#enableNotifications)\n- [BluetoothSerial.disableNotifications](#disableNotifications)\n- [BluetoothSerial.enableRawNotifications](#enableRawNotifications)\n- [BluetoothSerial.disableRawNotifications](#disableRawNotifications)\n- [BluetoothSerial.write](#write)\n\n## isEnabled\n\nReports if bluetooth is enabled.\n\n `isEnabled(): Promise;`\n\n### Description\n\nFunction `isEnabled` calls the success whatever bluetooth is enabled or not. The promise will contain an attribute `enabled` indicating if bluetooth is enabled or *not* enabled. The failure callback will be called only if an error occurs.\n\nIf you want to enable bluetooth afterwards, you can use #enable directly, once #enable also check if the bluetooth is conected or not.\n\n### Parameters\n\nNone.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .isEnabled()\n .then((response: BluetoothEnabledResult) => {\n const message = response.enabled ? 'enabled' : 'disabled';\n console.log(`Bluetooth is ${message}`);\n })\n .catch(() => {\n console.log('Error checking bluetooth status');\n });\n```\n\n## enable\n\n Enable bluetooth if it is not enabled. Also request permissions for bluetooth access if it is necessary.\n\n `enable(): Promise;`\n\n### Description\n\nFunction `enable` calls the success whatever bluetooth is successfully enabled or not. The promise will contain an attribute `enabled` indicating if bluetooth is enabled or *not* enabled after the process. The failure callback will be called only if an error occurs.\n\nIf the app does not have permission to use bluetooth, it will request it.\n\n### Parameters\n\nNone.\n\n### Quick Example","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agro1desenvolvimento_capacitor-bluetooth-serial.md","loc":{"lines":{"from":1,"to":116}}}}],["e9d051fb-39b0-4865-8efe-0bb0fab07f89",{"pageContent":"If the app does not have permission to use bluetooth, it will request it.\n\n### Parameters\n\nNone.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .enable()\n .then((response: BluetoothEnabledResult) => {\n const message = response.enabled ? 'enabled' : 'disabled';\n console.log(`Bluetooth is ${message}`);\n })\n .catch(() => {\n console.log('Error enabling bluetooth');\n });\n```\n\n## scan\n\nDiscover devices visible and close to the device\n\n `scan(): Promise;`\n\n### Description\n\n#### Android\n\nFunction `scan` discovers Bluetooth devices close to the device and visible. The success callback is called with a list of objects similar to `list`, or an empty list if no devices are found.\n\nExample list passed to success callback.\n\n```json\n[{\n \"class\": 0,\n \"id\": \"00:11:22:33:44:55\",\n \"address\": \"00:11:22:33:44:55\",\n \"name\": \"Device 1\"\n}, {\n \"class\": 7936,\n \"id\": \"01:23:6645:4D67:89:00\",\n \"address\": \"01:23:6645:4D67:89:00\",\n \"name\": \"Device 2\"\n}]\n```\n\nThe discovery process takes a while to happen.\nYou may want to show a progress indicator while waiting for the discover proces to finish, and the sucess callback to be invoked.\n\nCalling `connect` on an unpaired Bluetooth device should begin the Android pairing process.\n\n### Parameters\n\nNone.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .scan()\n .then((result: BluetoothScanResult) => {\n result.devices.forEach((device: BluetoothDevice) {\n console.log(device.id);\n });\n })\n .catch(() => {\n console.log('Error scanning devices');\n });\n```\n\n## connect\n\nConnect to a Bluetooth device.\n\n `connect(options: BluetoothConnectOptions): Promise`;\n\n### Description\n\nFunction `connect` connects to a Bluetooth device. The callback Success will be called when the connection is successful. Failure is called if the connection fails.\n\n#### Android\nFor Android, `connect` takes a MAC address of the remote device.\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .connect({\n address: '00:11:22:33:44:55',\n })\n .then(() => {\n console.log('Successfully connected')\n })\n .catch(() => {\n console.log('Error connecting...');\n });\n```\n\n## connectInsecure\n\nConnect insecurely to a Bluetooth device.\n\n `connectInsecure(options: BluetoothConnectOptions): Promise`;\n\n### Description\n\nFunction `connectInsecure` connects to a Bluetooth device. The callback Success will be called when the connection is successful. Failure is called if the connection fails.\nFunction `connectInsecure` works like [BluetoothSerial.connect](#connect), but creates an insecure connection to a Bluetooth device. See the [Android docs](https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#createInsecureRfcommSocketToServiceRecord(java.util.UUID)) for more information.\n\n#### Android\nFor Android, `connectInsecure` takes a MAC address of the remote device.\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n\n### Quick Example","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agro1desenvolvimento_capacitor-bluetooth-serial.md","loc":{"lines":{"from":116,"to":238}}}}],["a9e4b8c1-cd68-419a-9c26-bccde833516d",{"pageContent":"### Parameters\n\n- { __address__ }: Identifier of the remote device.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .connectInsecure({\n address: '00:11:22:33:44:55',\n })\n .then(() => {\n console.log('Successfully connected')\n })\n .catch(() => {\n console.log('Error connecting...');\n });\n```\n\n## disconnect\n\nDisconnect a Bluetooth device.\n\n `disconnect(options: BluetoothConnectOptions): Promise`;\n\n### Description\n\nFunction `disconnect` disconnects a Bluetooth device. The callback Success will be called when the disconnection is successful. Failure is called if the disconnection fails.\n\n#### Android\nFor Android, `disconnect` takes a MAC address of the remote device.\n\n**Warning**: If no address is passed, all devices will be disconnected.\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .disconnect({\n address: '00:11:22:33:44:55',\n })\n .then(() => {\n console.log('Successfully disconnected')\n })\n .catch(() => {\n console.log('Error disconnecting...');\n });\n```\n\n## isConnected\n\nReports the connection status.\n\n `isConnected(options: BluetoothConnectOptions): Promise`;\n\n### Description\n\nFunction `isConnected` calls the success callback with the connection status (connected or not connected). Failure will be called only if an error occurs.\n\n#### Android\nFor Android, `isConnected` takes a MAC address of the remote device.\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .isConnected({\n address: '00:11:22:33:44:55',\n })\n .then((result: BluetoothConnectResult) => {\n const status = result.connected ? 'connected' : 'disconnected';\n console.log(`Device is ${status}`);\n })\n .catch(() => {\n console.log('Error checking connection status');\n });\n```\n\n## read\n\nReads data from the buffer.\n\n `read(options: BluetoothReadOptions): Promise`;\n\n### Description\n\nFunction `read` reads the data from the buffer. The data is passed to the success callback as a String. Calling `read` when no data is available will pass an empty String to the callback.\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .read({\n address: '00:11:22:33:44:55',\n })\n .then((result: BluetoothDataResult) => {\n console.log(result.data);\n })\n .catch(() => {\n console.log('Error reading data from device');\n });\n```\n\n## readUntil\n\nReads data from the buffer until it reaches a delimiter.\n\n `readUntil(options: BluetoothReadUntilOptions): Promise`;\n\n### Description\n\nFunction `readUntil` reads the data from the buffer until it reaches a delimiter. The data is passed to the success callback as a String. If the buffer does not contain the delimiter, an empty String is passed to the callback.\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n- { __delimiter__ }: Delimiter.\n\n### Quick Example","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agro1desenvolvimento_capacitor-bluetooth-serial.md","loc":{"lines":{"from":238,"to":368}}}}],["8ba4f75f-e46f-4a22-b64b-5c7348d6fd20",{"pageContent":"### Parameters\n\n- { __address__ }: Identifier of the remote device.\n- { __delimiter__ }: Delimiter.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .readUntil({\n address: '00:11:22:33:44:55',\n delimiter: '\\n',\n })\n .then((result: BluetoothDataResult) => {\n console.log(result.data);\n })\n .catch(() => {\n console.log('Error reading data from device');\n });\n```\n\n## enableNotifications\n\nEnable and be notified when any data is received.\n\n `enableNotifications(options: BluetoothEnableNotificationsOptions): Promise`;\n\n### Description\n\nFunction `enableNotifications` enable notifications. The success callback will return an event name. In order to retrieve the values, one has to use an Event Listener with the returned event name.\n\n``` typescript\nconst listener = BluetoothSerial.addListener( eventName , (data: BluetoothDataResult) => {\n\n const { value } = data.data;\n //Do something with the data\nq\n});\n```\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n- { __delimiter__ }: Delimiter for notification.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .enableNotifications({\n address: '00:11:22:33:44:55',\n delimiter: '\\n',\n })\n .then((result: BluetoothEnableNotificationsResult) => {\n event = BluetoothSerial.addListener(result.eventName, (data: BluetoothDataResult) => {\n console.log(data.data);\n });\n })\n .catch(() => {\n console.log('Error enabling listener for device');\n });\n```\n\n## disableNotifications\n\nStops the propagation of value changes.\n\n `disableNotifications(options: BluetoothDisableNotificationsOptions): Promise`;\n\n### Description\n\nFunction `disableNotifications` disable notifications. Additionally, the event listener has to be removed.\n\n```typescript\nlistener.remove();\n```\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .disableNotifications({\n address: '00:11:22:33:44:55',\n })\n .then(() => {\n event.remove();\n })\n .catch(() => {\n console.log('Error disabling listener for device');\n });\n```\n\n## enableRawNotifications\n\n Under development.\n\n## disableRawNotifications\n\n Under development.\n\n## write\n\nWrite data to the buffer.\n\n `write(options: BluetoothWriteOptions): Promise`;\n\n### Description\n\nFunction `write` writes data to the buffer.\n\n### Parameters\n\n- { __address__ }: Identifier of the remote device.\n- { __value__ }: String to send.\n\n### Quick Example\n\n```typescript\nBluetoothSerial\n .write({\n address: '00:11:22:33:44:55',\n value: 'Hello world',\n })\n .then(() => {\n console.log('Value sent to device');\n })\n .catch(() => {\n console.log('Error writing data to device');\n });\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/agro1desenvolvimento_capacitor-bluetooth-serial.md","loc":{"lines":{"from":368,"to":501}}}}],["3370ec2d-e035-4e30-b45a-86c27ef0e0fa",{"pageContent":"# Capacitor Email\n\n\n## Usage\n\n\n```ts\nimport { Email } from '@teamhive/capacitor-email';\n\nconst email = new Email();\n\nconst hasPermission = await email.hasPermission();\n\nif(!hasPermission){\n await email.requestPermission();\n}\n\nconst available = await email.isAvailable({\n alias: 'gmail' // gmail, outlook, yahoo *optional*,\n});\n\n// available.hasAccount *If email is setup*\n// available.hasApp *If device has alias supplied*\n\n\nif(available.hasAccount){\n email.open({\n to:['me@myemail.com'],\n cc: ['bro@hisemail.com'],\n bcc: ['sis@heremail.com'],\n subject: 'Party',\n body: 'Hi bring drinks...',\n isHtml: false,\n attachments: [SomeFilePath]\n })\n}\n```\n\n\n## Api\n\n| Method | Default | Type | Description |\n| ---------------------------------------- | ------- | ---------------------------- | ----------------------------------------------------- |\n| isAvailable(options?: AvailableOptions) | | `Promise` | |\n| open(options?: EmailOptions) | | `Promise` | |\n| openDraft() | | `Promise` | | |\n| requestPermission() | | `Promise` | |\n| hasPermission() | | `Promise` | |\n| getDefaults() | | `Promise` | |\n| getAliases() | | `Promise` | |","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/TeamHive_capacitor-email.md","loc":{"lines":{"from":1,"to":50}}}}],["89b1fbb2-8d6e-4d4b-8fa7-66ee57f86101",{"pageContent":"# Capacitor Geofencing\n\n[![npm version](https://badge.fury.io/js/capacitor-geofencing.svg)](https://badge.fury.io/js/capacitor-geofencing)\n\nThis is a plugin for Capacitor that exposes native iOS geofencing capabilities to your capacitor app. \n\n\n\n## Why?\n\nWe needed a way to find out when users enter and exit a region in a capacitor app that would only be built for iOS. Since we can't wake the entire hybrid part of the app to handle a callback or a promise, we need to handle everything natively. This plugin handles that by taking an url to which it will send a payload when users enter or leave the registered regions.\n\n\n\n## Installation\n\n`npm i capacitor-geofencing`\n\n\n\n## Configuration\n\nThe plugin needs some configuration:\n\n```typescript\nimport { Plugins } from \"@capacitor/core\";\nimport { CapacitorGeofencingPlugin } from \"capacitor-geofencing\";\nlet { CapacitorGeofencing } = Plugins;\n\nCapacitorGeofencing.setup({\n url: \"\", \t\t\t\t// Endpoint to which the plugin will POST the payload.\n notifyOnEntry: true, \t// Whether the plugin will notify on entry yes or no.\n notifyOnExit: true,\t\t// Whether the plugin will notify on exit yes or no.\n payload: {}\t\t\t\t// Object that will be sent to the server.\n}); // This returns a promise with a success/error message.\n```\n\nThe promise returned here is important: an error will be returned when supplied invalid parameters, or when the user gave an invalid location authorization status (the only valid status is .alwaysAuthorization).\n\nYou also need to add the following keys to your info.plist file:\n\n```xml\nNSLocationAlwaysAndWhenInUseUsageDescription\nReason for always usage.\nNSLocationWhenInUseUsageDescription\nReasen for when in usage.\n```\n\nThe `payload` parameter here is interesting; this will be sent through a POST request to the given `url`. However, the plugin will inject some other data into that request: the identifier(String) of the geofence that was triggered, and an enter(Boolean) property indicating whether the user entered or left the area.\n\n\n\n## Register a region\n\nAfter setting up the plugin you can register regions. **It is recommended to set up geofences in the success Promise returned by the setup function. For more information, see the complete example at the bottom of this page.**\n\n```typescript\nCapacitorGeofencing.addRegion({\n latitude: 37.33182,\n longitude: 122.03118,\n identifier: \"infinite-loop\",\n radius: 500\n});\t// This returns a promise with a success/error message.\n```\n\n\n\n## Stop monitoring a region\n\nWhen you're done monitoring a region, you can remove it by supplying the identifier.\n\n```typescript\nCapacitorGeofencing.stopMonitoring({\n identifier: \"infinite-loop\"\n});\t// This returns a promise with a success/error message.\n```\n\n\n\n## List all monitored regions\n\nThis lists the identifiers of the regions that are currently being monitored.\n\n```typescript\nCapacitorGeofencing.monitoredRegions()\n .then(regions => {\n \t// regions is an array of Strings.\n });\n```\n\n\n\n## Complete example","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/JillevdW_Capacitor-Geofencing.md","loc":{"lines":{"from":1,"to":93}}}}],["b374a64a-bede-4e6b-a006-534919ab059c",{"pageContent":"## Complete example\n\n```typescript\nimport { Plugins } from \"@capacitor/core\";\nimport { CapacitorGeofencingPlugin } from \"capacitor-geofencing\";\nlet { CapacitorGeofencing } = Plugins;\n\nCapacitorGeofencing.setup({\n url: \"\",\n notifyOnEntry: true,\n notifyOnExit: true,\n payload: {}\n})\n.then(s => {\n console.log(\"Successfully finished setting up.\");\n return CapacitorGeofencing.addRegion({\n latitude: 37.33182,\n longitude: 122.03118,\n identifier: \"infinite-loop\",\n radius: 500\n })\n})\n.then(s => {\n console.log(\"Successfully added geofence.\");\n})\n.catch(e => {\n console.log(`Error: ${JSON.stringify(e)}`);\n});\n```","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/JillevdW_Capacitor-Geofencing.md","loc":{"lines":{"from":93,"to":121}}}}],["f9706dc7-04bc-4450-9d1f-c889b21a1fa5",{"pageContent":"# [Capacitor SocialShare](https://github.com/rahadur/capacitor-socialshare.git)\n\nCapacitor SocialShare is a native `ShareActionProvider` & `SharingViewController` implementation for IOS & Android. Now you can use this package as a [Ionic Capacitor](https://capacitor.ionicframework.com) Plugin in your App.\n\n## Suported\n\n- [x] Android\n- [ ] IOS\n- [ ] Electron\n\n## Installation\n\n`npm install --save capacitor-socialshare`\n\n\n## Getting Start\n\n```typescript\nimport { Plugins } from '@capacitor/core';\n\nimport { ShareOption } from 'capacitor-socialshare'; // Import SocialShare Modules\n\n\n// Assign Parameters\n\nshareOption: ShareOption = {\n subject: 'YOUR SUBJECT', \n\n body: 'YOUR MESSAGE BODY',\n\n url: 'YOUR APP/PLAY STORE URL'\n}\n\n\n// Use Plugin Method\n\nPlugins.SocialShare.share(this.shareOption).then(\n (res) => { console.log(res.value) },\n (err) => { console.log(err) }\n);\n\n```\n\n\n\n## Methods\n\n| Status | Name | Parameter | Return | Descrription |\n| ----------| ------------- | ------------- | ------------- | -------------\n| - [x] | share(option: ShareOption) | ShareOption | Promise<{value: boolean}> | It will show `Share Intent` in Android & `Share Action` in IOS. |\n| - [ ] | shareViaEmail(option: ShareOption) | ShareOption | Promise<{value: boolean}> | It will share App usigin list of email. |\n\n\n## Interfaces\n```typescript\ninterface ShareOption {\n\n subject?: string;\n\n body?: string;\n\n url?: string;\n\n}\n```\n\n## Screenshot\n\n| Android | IOS |\n| ---------- | ---------- |\n| Comming soon | Comming soon |\n\n\n## Contributing\n\n- Star this repository\n- Open issue for feature requests\n\n\n## Roadmap\n - [Capacitor Plugins](https://capacitor.ionicframework.com/docs/plugins/)\n\n - [IOS](https://capacitor.ionicframework.com/docs/plugins/ios/)\n\n - [Android](https://capacitor.ionicframework.com/docs/plugins/android/)\n\n\n## License:\n\nCapacitor SocialShare is [MIT licensed](./LICENSE).","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/rahadur_capacitor-socialshare.md","loc":{"lines":{"from":1,"to":90}}}}],["9ffe8b43-b5aa-4794-832b-79d0f22e70e1",{"pageContent":"# cap-nfc-plugin\n## Installing\n---\n\n $ npm i cap-nfc-plugin\n \n## Methods\n---\n* 监听读取NFC信息: `NFCPlugin.addListener('readNFCResult',callback)`\n* 监听开始写入NFC: `NFCPlugin.addListener('beginWriteNFC',callback)`\n* 监听写入NFC成功或失败的结果: `NFCPlugin.addListener('writeNFCResult',callback)`\n* NFC开始读写后,向android发送任务信息: `NFCPlugin.sendTaskInfo({taskInfo: Object})`\n \n## Usage\n---\nImport the plugin you want to use into your x.component.ts file .\n\n import { Plugins, Capacitor } from '@capacitor/core';\n const { NFCPlugin } = Plugins;\n @Component({\n selector: 'x',\n templateUrl: './x.component.html'\n })\n \n export class AppComponent implements AfterViewInit { \n ngAfterViewInit(): void {\n NFCPlugin.addListener('readNFCResult', (info: any) => {\n console.log('readNFCResult was fired', info);\n });\n NFCPlugin.addListener('beginWriteNFC', (info: any) => {\n console.log('beginWriteNFC was fired', info);\n });\n NFCPlugin.addListener('writeNFCResult', (info: any) => {\n console.log('writeNFCResult was fired', info);\n });\n }\n \n sendTaskInfo() {\n NFCPlugin.sendTaskInfo({\n taskInfo: {\n id: 1,\n taskNumber: \"111111\",\n process: \"joy\",\n },\n });\n }\n }\n \n## Update Your Project\n---\njust running command \n\n npm run android\n \n## Upgrade Plugin\n---\n1. `delete current project's node_modules folder and android folder` \n2. `npm i`\n3. `npm i cap-nfc-plugin@latest`\n4. `npx cap add android`\n5. `npm run android`\n6. 到此步骤会自动打开Android studio, 找到`MainActivity.java`文件\n7. 将Plugin添加到mainActivity中\n \n public class MainActivity extends BridgeActivity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n \n // Initializes the Bridge\n this.init(savedInstanceState, new ArrayList>() {{\n // Additional plugins you've installed go here\n // Ex: add(TotallyAwesomePlugin.class);\n add(NFCPlugin.class);\n }});\n }\n }\n8. 找到`app/manifests/AndroidManifest.xml`文件,将`android:usesCleartextTraffic=\"true\"`添加到`application`中\n\n \n \n9. 现在可以打包出来啦,Finished\n\n## Debugger In Chrome\n----\nopen url `chrome://inspect/#devices` in chrome, you can find device in it","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/JoyZhou007_cap-nfc-plugin.md","loc":{"lines":{"from":1,"to":93}}}}],["dedda13a-ae21-4024-998e-0c576240f2d0",{"pageContent":"pasos
    \n1 git clone https://github.com/yesid0401/pusheBeams-plugin .git
    \n2 cd pusheBeams-plugin
    \n3 npm i
    \n4 poner la carpeta pusheBeams-plugin en el mismo directorio que tu proyecto capacitor
    \n5 en tu proyecto capacitor ejecutar npm i ./pusheBeams-plugin
    \n6 ejecutar npx cap sync
    \n7 importar pusheBeams-plugin en el archivo que lo vayas a utilizar import 'pusherBeams-plugin' y const {PusherBeamsPlugin} = Plugins
    \n8 ir a tu clase MainActivity.java e importar import app.tissini.pusherBeams.PusherBeamsPlugin;
    \n9 en la clase MainActivity.java dentro del metodo this.init() colocar add(PusherBeamsPlugin.class);
    \n\n

    Metodos


    \nPusherBeamsPlugin.addDeviceInterest({interest: 'aqui escribe tu interes a crear'})
    \nPusherBeamsPlugin.removeDeviceInterest({interest: 'aqui escribe tu interes a eliminar'})\nPusherBeamsPlugin.getDeviceInterests(): // obtener todos los intereses a los que el dispositivo esta subscrito
    \nPusherBeamsPlugin.clearDeviceInterests(): // Anula la suscripción del dispositivo a todos los intereses.
    ","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/yesid0401_pusheBeams-plugin.md","loc":{"lines":{"from":1,"to":16}}}}],["f114fd7c-3f05-4141-88e9-120586350fe7",{"pageContent":"# content-provider\n\nComunication through apps\n\n## Install\n\n```bash\nnpm install content-provider\nnpx cap sync\n```\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`test(...)`](#test)\n* [`getValues()`](#getvalues)\n* [`insertValue(...)`](#insertvalue)\n* [`deleteValue(...)`](#deletevalue)\n* [`updateValue(...)`](#updatevalue)\n* [`addListener(string, ...)`](#addlistenerstring)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### test(...)\n\n```typescript\ntest(options: { name: string; }) => Promise<{ result: any; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------ |\n| **`options`** | { name: string; } |\n\n**Returns:** Promise<{ result: any; }>\n\n--------------------\n\n\n### getValues()\n\n```typescript\ngetValues() => Promise<{ result: any[]; }>\n```\n\n**Returns:** Promise<{ result: any[]; }>\n\n--------------------\n\n\n### insertValue(...)\n\n```typescript\ninsertValue(options: { name: string; }) => Promise<{ result: any; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------ |\n| **`options`** | { name: string; } |\n\n**Returns:** Promise<{ result: any; }>\n\n--------------------\n\n\n### deleteValue(...)\n\n```typescript\ndeleteValue(options: { id: string; }) => Promise<{ result: any; }>\n```\n\n| Param | Type |\n| ------------- | ---------------------------- |\n| **`options`** | { id: string; } |\n\n**Returns:** Promise<{ result: any; }>\n\n--------------------\n\n\n### updateValue(...)\n\n```typescript\nupdateValue(options: { id: string; name: string; }) => Promise<{ result: any; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------------------ |\n| **`options`** | { id: string; name: string; } |\n\n**Returns:** Promise<{ result: any; }>\n\n--------------------\n\n\n### addListener(string, ...)\n\n```typescript\naddListener(evtName: string, callback: (a: void) => any) => void\n```\n\n| Param | Type |\n| -------------- | -------------------------------- |\n| **`evtName`** | string |\n| **`callback`** | (a: void) => any |\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/dupuyivan_contentProvider.md","loc":{"lines":{"from":1,"to":128}}}}],["801bd199-a9be-4e3c-9b67-36307b4ddca4",{"pageContent":"# printv\n\nPrinter Blueetooth\n\n## Install\n\n```bash\nnpm install printv\nnpx cap sync\n```\n## How to Use\n **The printer must be connected to the device via Bluetooth **\n\n**you must import the library where you want:**\n\n import { PrintV } from \"printv\";\n\n## Definitions\n \"\\n it's a line break\"\n \n \"[L] It is used to position the text to the left\"\n \n \"[C] It is used to position the text in the center\"\n \n \"[R] Used to position the text to the right\" \n\n## Example\n\n let textToPrint= \"[L]\\n\" +\n \n \"[L] bold text\\n\\n\" +\n \n \"[C] I am a text in the center\\n\" +\n \n \"[R] I am a text to the right\\n\" + \n \n \"[L] I am a text to the left\\n\" +\n \n \"[L] inserting text\\n\" ,\n \n let dataPrinter = textToPrint;\n\n**\" Information is sent to the printer\"**\n\n PrintV.blPrint({ value: dataPrinter });\n\n## API\n\n\n\n* [`echo(...)`](#echo)\n* [`blPrint(...)`](#blprint)\n* [`testingMessage()`](#testingmessage)\n* [`getNotifications()`](#getnotifications)\n\n\n\n\n\n\n### echo(...)\n\n```typescript\necho(options: { value: string; }) => Promise<{ value: string; }>\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** Promise<{ value: string; }>\n\n--------------------\n\n\n### blPrint(...)\n\n```typescript\nblPrint(options: { value: string; }) => boolean\n```\n\n| Param | Type |\n| ------------- | ------------------------------- |\n| **`options`** | { value: string; } |\n\n**Returns:** boolean\n\n--------------------\n\n\n### testingMessage()\n\n```typescript\ntestingMessage() => boolean\n```\n\n**Returns:** boolean\n\n--------------------\n\n\n### getNotifications()\n\n```typescript\ngetNotifications() => any\n```\n\n**Returns:** any\n\n--------------------\n\n","metadata":{"source":"/Users/rishirajjain/Desktop/pr-tut/openai-readmes/emysaulconsultingdr_PrinterBluetooth.md","loc":{"lines":{"from":1,"to":112}}}}],["77a862e1-2fc2-4b4f-9da8-cab44739dbd4",{"pageContent":"# capacitor file choose\n\nOpen native browser selector to check file(s)/folder(s) at filesystem. **Only in android.**\n\n## Import\n\nInstall the library with `npm install -s capacitor-file-chooser`\n\nTo launch de plugin, add:\n\n```\nimport { Plugins } from '@capacitor/core';\nimport 'capacitor-file-chooser';\nconst { CapacitorFileChooser } = Plugins;\n\n...\nlet result = await CapacitorFileChooser.picker({mode: \"showFolderpicker\", initPath: \"/storage/emulated/0/\"});\nconsole.log(result);\n...\n```\n**Note**: It isn't need update `app.component.ts`\n\nUpdate `styles.xml` adding\n```\nfalse\ntrue\n```\nin the section ` + + +``` + +## API + + + +- [`create(...)`](#create) +- [`resize(...)`](#resize) +- [`addMarker(...)`](#addmarker) +- [`addMarkers(...)`](#addmarkers) +- [`removeMarker(...)`](#removemarker) +- [`removeOverlayPositionChangeListener(...)`](#removeoverlaypositionchangelistener) +- [`removeMarkers(...)`](#removemarkers) +- [`enableClustering(...)`](#enableclustering) +- [`disableClustering(...)`](#disableclustering) +- [`destroy(...)`](#destroy) +- [`setCamera(...)`](#setcamera) +- [`setMapType(...)`](#setmaptype) +- [`enableIndoorMaps(...)`](#enableindoormaps) +- [`toScreenLocation(...)`](#toscreenlocation) +- [`enableTrafficLayer(...)`](#enabletrafficlayer) +- [`enableAccessibilityElements(...)`](#enableaccessibilityelements) +- [`enableCurrentLocation(...)`](#enablecurrentlocation) +- [`setPadding(...)`](#setpadding) +- [`onScroll(...)`](#onscroll) +- [`dispatchMapEvent(...)`](#dispatchmapevent) +- [`getMapBounds(...)`](#getmapbounds) +- [Interfaces](#interfaces) +- [Enums](#enums) + + + + + + +### create(...) + +```typescript +create(options: CreateMapArgs) => Promise +``` + +| Param | Type | +| ------------- | ------------------------------------------------------- | +| **`options`** | CreateMapArgs | + +--- + +### resize(...) + +```typescript +resize(options: ResizeArgs) => Promise +``` + +| Param | Type | +| ------------- | ------------------------------------------------- | +| **`options`** | ResizeArgs | + +--- + +### addMarker(...) + +```typescript +addMarker(args: AddMarkerArgs) => Promise<{ id: string; }> +``` + +| Param | Type | +| ---------- | ------------------------------------------------------- | +| **`args`** | AddMarkerArgs | + +**Returns:** Promise<{ id: string; }> + +--- + +### addMarkers(...) + +```typescript +addMarkers(args: AddMarkersArgs) => Promise<{ ids: string[]; }> +``` + +| Param | Type | +| ---------- | --------------------------------------------------------- | +| **`args`** | AddMarkersArgs | + +**Returns:** Promise<{ ids: string[]; }> + +--- + +### removeMarker(...) + +```typescript +removeMarker(args: RemoveMarkerArgs) => Promise +``` + +| Param | Type | +| ---------- | ------------------------------------------------------------- | +| **`args`** | RemoveMarkerArgs | + +--- + +### removeOverlayPositionChangeListener(...) + +```typescript +removeOverlayPositionChangeListener(args: RemoveOverlay) => Promise +``` + +| Param | Type | +| ---------- | ------------------------------------------------------- | +| **`args`** | RemoveOverlay | + +--- + +### removeMarkers(...) + +```typescript +removeMarkers(args: RemoveMarkersArgs) => Promise +``` + +| Param | Type | +| ---------- | --------------------------------------------------------------- | +| **`args`** | RemoveMarkersArgs | + +--- + +### enableClustering(...) + +```typescript +enableClustering(args: { id: string; }) => Promise +``` + +| Param | Type | +| ---------- | ---------------------------- | +| **`args`** | { id: string; } | + +--- + +### disableClustering(...) + +```typescript +disableClustering(args: { id: string; }) => Promise +``` + +| Param | Type | +| ---------- | ---------------------------- | +| **`args`** | { id: string; } | + +--- + +### destroy(...) + +```typescript +destroy(args: DestroyMapArgs) => Promise +``` + +| Param | Type | +| ---------- | --------------------------------------------------------- | +| **`args`** | DestroyMapArgs | + +--- + +### setCamera(...) + +```typescript +setCamera(args: CameraArgs) => Promise +``` + +| Param | Type | +| ---------- | ------------------------------------------------- | +| **`args`** | CameraArgs | + +--- + +### setMapType(...) + +```typescript +setMapType(args: MapTypeArgs) => Promise +``` + +| Param | Type | +| ---------- | --------------------------------------------------- | +| **`args`** | MapTypeArgs | + +--- + +### enableIndoorMaps(...) + +```typescript +enableIndoorMaps(args: IndoorMapArgs) => Promise +``` + +| Param | Type | +| ---------- | ------------------------------------------------------- | +| **`args`** | IndoorMapArgs | + +--- + +### toScreenLocation(...) + +```typescript +toScreenLocation(args: ToScreenLocationArgs) => Promise +``` + +| Param | Type | +| ---------- | --------------------------------------------------------------------- | +| **`args`** | ToScreenLocationArgs | + +**Returns:** Promise<any> + +--- + +### enableTrafficLayer(...) + +```typescript +enableTrafficLayer(args: TrafficLayerArgs) => Promise +``` + +| Param | Type | +| ---------- | ------------------------------------------------------------- | +| **`args`** | TrafficLayerArgs | + +--- + +### enableAccessibilityElements(...) + +```typescript +enableAccessibilityElements(args: AccElementsArgs) => Promise +``` + +| Param | Type | +| ---------- | ----------------------------------------------------------- | +| **`args`** | AccElementsArgs | + +--- + +### enableCurrentLocation(...) + +```typescript +enableCurrentLocation(args: CurrentLocArgs) => Promise +``` + +| Param | Type | +| ---------- | --------------------------------------------------------- | +| **`args`** | CurrentLocArgs | + +--- + +### setPadding(...) + +```typescript +setPadding(args: PaddingArgs) => Promise +``` + +| Param | Type | +| ---------- | --------------------------------------------------- | +| **`args`** | PaddingArgs | + +--- + +### onScroll(...) + +```typescript +onScroll(args: OnScrollArgs) => Promise +``` + +| Param | Type | +| ---------- | ----------------------------------------------------- | +| **`args`** | OnScrollArgs | + +--- + +### dispatchMapEvent(...) + +```typescript +dispatchMapEvent(args: { id: string; focus: boolean; }) => Promise +``` + +| Param | Type | +| ---------- | -------------------------------------------- | +| **`args`** | { id: string; focus: boolean; } | + +--- + +### getMapBounds(...) + +```typescript +getMapBounds(args: { id: string; }) => Promise +``` + +| Param | Type | +| ---------- | ---------------------------- | +| **`args`** | { id: string; } | + +**Returns:** Promise<LatLngBounds> + +--- + +### Interfaces + +#### CreateMapArgs + +An interface containing the options used when creating a map. + +| Prop | Type | Description | Default | +| ----------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------ | +| **`id`** | string | A unique identifier for the map instance. | | +| **`apiKey`** | string | The Google Maps SDK API Key. | | +| **`config`** | GoogleMapConfig | The initial configuration settings for the map. | | +| **`element`** | HTMLElement | The DOM element that the Google Map View will be mounted on which determines size and positioning. | | +| **`forceCreate`** | boolean | Destroy and re-create the map instance if a map with the supplied id already exists | false | + +#### GoogleMapConfig + +For web, all the javascript Google Maps options are available as +GoogleMapConfig extends google.maps.MapOptions. +For iOS and Android only the config options declared on GoogleMapConfig are available. + +| Prop | Type | Description | Default | Since | +| ---------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- | +| **`width`** | number | Override width for native map. | | | +| **`height`** | number | Override height for native map. | | | +| **`x`** | number | Override absolute x coordinate position for native map. | | | +| **`y`** | number | Override absolute y coordinate position for native map. | | | +| **`center`** | LatLng | Default location on the Earth towards which the camera points. | | | +| **`zoom`** | number | Sets the zoom of the map. | | | +| **`androidLiteMode`** | boolean | Enables image-based lite mode on Android. | false | | +| **`devicePixelRatio`** | number | Override pixel ratio for native map. | | | +| **`styles`** | MapTypeStyle[] \| null | Styles to apply to each of the default map types. Note that for satellite, hybrid and terrain modes, these styles will only apply to labels and geometry. | | 4.3.0 | + +#### LatLng + +An interface representing a pair of latitude and longitude coordinates. + +| Prop | Type | Description | +| --------- | ------------------- | ------------------------------------------------------------------------- | +| **`lat`** | number | Coordinate latitude, in degrees. This value is in the range [-90, 90]. | +| **`lng`** | number | Coordinate longitude, in degrees. This value is in the range [-180, 180]. | + +#### ResizeArgs + +| Prop | Type | +| ------------ | -------------------- | +| **`id`** | string | +| **`bounds`** | DOMRect | + +#### AddMarkerArgs + +| Prop | Type | +| ------------ | ----------------------------------------- | +| **`id`** | string | +| **`marker`** | Marker | + +#### Marker + +A marker is an icon placed at a particular point on the map's surface. + +| Prop | Type | Description | Default | Since | +| ---------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- | +| **`coordinate`** | LatLng | Marker position | | | +| **`opacity`** | number | Sets the opacity of the marker, between 0 (completely transparent) and 1 inclusive. | 1 | | +| **`title`** | string | Title, a short description of the overlay. | | | +| **`snippet`** | string | Snippet text, shown beneath the title in the info window when selected. | | | +| **`isFlat`** | boolean | Controls whether this marker should be flat against the Earth's surface or a billboard facing the camera. | false | | +| **`iconUrl`** | string | Path to a marker icon to render. It can be relative to the web app public directory, or a https url of a remote marker icon. **SVGs are not supported on native platforms.** | | 4.2.0 | +| **`iconSize`** | Size | Controls the scaled size of the marker image set in `iconUrl`. | | 4.2.0 | +| **`iconOrigin`** | Point | The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image . | | 4.2.0 | +| **`iconAnchor`** | Point | The position at which to anchor an image in correspondence to the location of the marker on the map. By default, the anchor is located along the center point of the bottom of the image. | | 4.2.0 | +| **`tintColor`** | { r: number; g: number; b: number; a: number; } | Customizes the color of the default marker image. Each value must be between 0 and 255. Only for iOS and Android. | | 4.2.0 | +| **`draggable`** | boolean | Controls whether this marker can be dragged interactively | false | | + +#### Size + +| Prop | Type | +| ------------ | ------------------- | +| **`width`** | number | +| **`height`** | number | + +#### Point + +| Prop | Type | +| ------- | ------------------- | +| **`x`** | number | +| **`y`** | number | + +#### AddMarkersArgs + +| Prop | Type | +| ------------- | --------------------- | +| **`id`** | string | +| **`markers`** | Marker[] | + +#### RemoveMarkerArgs + +| Prop | Type | +| -------------- | ------------------- | +| **`id`** | string | +| **`markerId`** | string | + +#### RemoveOverlay + +| Prop | Type | +| ---------------- | ------------------- | +| **`id`** | string | +| **`callbackId`** | string | + +#### RemoveMarkersArgs + +| Prop | Type | +| --------------- | --------------------- | +| **`id`** | string | +| **`markerIds`** | string[] | + +#### DestroyMapArgs + +| Prop | Type | +| -------- | ------------------- | +| **`id`** | string | + +#### CameraArgs + +| Prop | Type | +| ------------ | ----------------------------------------------------- | +| **`id`** | string | +| **`config`** | CameraConfig | + +#### CameraConfig + +Configuration properties for a Google Map Camera + +| Prop | Type | Description | Default | +| ----------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------ | +| **`coordinate`** | LatLng | Location on the Earth towards which the camera points. | | +| **`zoom`** | number | Sets the zoom of the map. | | +| **`bearing`** | number | Bearing of the camera, in degrees clockwise from true north. | 0 | +| **`angle`** | number | The angle, in degrees, of the camera from the nadir (directly facing the Earth). The only allowed values are 0 and 45. | 0 | +| **`animate`** | boolean | Animate the transition to the new Camera properties. | false | +| **`animationDuration`** | number | This configuration option is not being used. | | + +#### MapTypeArgs + +| Prop | Type | +| ------------- | ------------------------------------------- | +| **`id`** | string | +| **`mapType`** | MapType | + +#### IndoorMapArgs + +| Prop | Type | +| ------------- | -------------------- | +| **`id`** | string | +| **`enabled`** | boolean | + +#### ToScreenLocationArgs + +| Prop | Type | +| --------- | ------------------- | +| **`id`** | string | +| **`lat`** | number | +| **`lng`** | number | + +#### TrafficLayerArgs + +| Prop | Type | +| ------------- | -------------------- | +| **`id`** | string | +| **`enabled`** | boolean | + +#### AccElementsArgs + +| Prop | Type | +| ------------- | -------------------- | +| **`id`** | string | +| **`enabled`** | boolean | + +#### CurrentLocArgs + +| Prop | Type | +| ------------- | -------------------- | +| **`id`** | string | +| **`enabled`** | boolean | + +#### PaddingArgs + +| Prop | Type | +| ------------- | ------------------------------------------------- | +| **`id`** | string | +| **`padding`** | MapPadding | + +#### MapPadding + +Controls for setting padding on the 'visible' region of the view. + +| Prop | Type | +| ------------ | ------------------- | +| **`top`** | number | +| **`left`** | number | +| **`right`** | number | +| **`bottom`** | number | + +#### OnScrollArgs + +| Prop | Type | +| --------------- | --------------------------------------------------------------------- | +| **`id`** | string | +| **`mapBounds`** | { x: number; y: number; width: number; height: number; } | + +#### LatLngBounds + +An interface representing the viewports latitude and longitude bounds. + +| Prop | Type | +| --------------- | ----------------------------------------- | +| **`southwest`** | LatLng | +| **`center`** | LatLng | +| **`northeast`** | LatLng | + +### Enums + +#### MapType + +| Members | Value | Description | +| --------------- | ------------------------ | ---------------------------------------- | +| **`Normal`** | 'Normal' | Basic map. | +| **`Hybrid`** | 'Hybrid' | Satellite imagery with roads and labels. | +| **`Satellite`** | 'Satellite' | Satellite imagery with no labels. | +| **`Terrain`** | 'Terrain' | Topographic data. | +| **`None`** | 'None' | No base map tiles. | + + diff --git a/openai-readmes/SpellChucker_capacitor-plugin-facebook-analytics.md b/openai-readmes/SpellChucker_capacitor-plugin-facebook-analytics.md new file mode 100644 index 0000000..eb8bb78 --- /dev/null +++ b/openai-readmes/SpellChucker_capacitor-plugin-facebook-analytics.md @@ -0,0 +1,76 @@ +## Installation + +```bash +$ npm i --save capacitor-plugin-facebook-analytics +``` + +To use yarn + +```bash +yarn add capacitor-plugin-facebook-analytics +``` + +## Android configuration + +In file `android/app/src/main/java/**/**/MainActivity.java`, add the plugin to the initialization list: + +```diff + this.init(savedInstanceState, new ArrayList>() {{ + [...] ++ add(com.vrba.plugins.facebookanalytics.FacebookAnalytics.class); + [...] + }}); +``` + +In file `android/app/src/main/AndroidManifest.xml`, add the following XML elements under `` : + +```diff ++ +``` + +In file `android/app/src/main/res/values/strings.xml` add the following lines : + +```diff ++ [APP_ID] +``` + +Don't forget to replace `[APP_ID]` by your Facebook application Id. + +More information can be found here: https://developers.facebook.com/docs/app-events/getting-started-app-events-android + +## iOS configuration + +Add the following in the `ios/App/App/info.plist` file: + +```diff ++ FacebookAppID ++ [APP_ID] ++ FacebookDisplayName ++ [APP_NAME] +``` + +More information can be found here: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios + +## Supported methods + +| Name | Android | iOS | Web | +| :------- | :------ | :-- | :-- | +| logEvent | ✅ | ✅ | ❌ | + +## API + +### logEvent + +```ts +import { Plugins } from '@capacitor/core'; +const { FacebookAnalytics } = Plugins; + +// Example commands. +await FacebookAnalytics.logEvent(options: { event: string, params?: any }): Promise; +await FacebookAnalytics.logPurchase(options: {amount: number, currency: string, params: any}): Promise; +await FacebookAnalytics.logAddPaymentInfo(options: {success: number}): Promise; +await FacebookAnalytics.logAddToCart(options: {amount: number, currency: string, params?: any}): Promise; +await FacebookAnalytics.logCompleteRegistration(options: {params?: any}): Promise; +await FacebookAnalytics.logInitiatedCheckout(options: {amount: number, params?: any}): Promise; +``` diff --git a/openai-readmes/SpryRocks_capacitor-socket-connection-plugin.md b/openai-readmes/SpryRocks_capacitor-socket-connection-plugin.md new file mode 100644 index 0000000..05b8283 --- /dev/null +++ b/openai-readmes/SpryRocks_capacitor-socket-connection-plugin.md @@ -0,0 +1,37 @@ +# @spryrocks/capacitor-socket-connection-plugin + +Capacitor Socket Connection Plugin + +## Install + +```bash +npm install @spryrocks/capacitor-socket-connection-plugin +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => Promise<{ value: string; }> +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** Promise<{ value: string; }> + +--- + + diff --git a/openai-readmes/SrknMcT_DRIFTERNFC.md b/openai-readmes/SrknMcT_DRIFTERNFC.md new file mode 100644 index 0000000..486ed63 --- /dev/null +++ b/openai-readmes/SrknMcT_DRIFTERNFC.md @@ -0,0 +1,12 @@ +## Created with Capacitor Create App + +This app was created using [`@capacitor/create-app`](https://github.com/ionic-team/create-capacitor-app), +and comes with a very minimal shell for building an app. + +### Running this example + +To run the provided example, you can use `npm start` command. + +```bash +npm start +``` diff --git a/openai-readmes/SrknMcT_RouteNavigation.md b/openai-readmes/SrknMcT_RouteNavigation.md new file mode 100644 index 0000000..9ce116a --- /dev/null +++ b/openai-readmes/SrknMcT_RouteNavigation.md @@ -0,0 +1,12 @@ +## Created with Capacitor Create App + +This app was created using [`@capacitor/create-app`](https://github.com/ionic-team/create-capacitor-app), +and comes with a very minimal shell for building an app. + +### Running this example + +To run the provided example, you can use [serve](https://www.npmjs.com/package/serve): + +```bash +npm start +``` diff --git a/openai-readmes/Start9Labs_capacitor-tor.md b/openai-readmes/Start9Labs_capacitor-tor.md new file mode 100644 index 0000000..ba8e130 --- /dev/null +++ b/openai-readmes/Start9Labs_capacitor-tor.md @@ -0,0 +1,113 @@ +# capacitor-tor + +capacitor-tor, also known internally as "captor" is an [Ionic/Capacitor](https://capacitor.ionicframework.com/) plugin +for managing the [Tor](https://www.torproject.org/) daemon on mobile platforms in a hybrid mobile application. This +ultimately makes it possible to communicate over tor as a transport layer for your mobile app's communications. + +## What this plugin does + +This plugin allows you to start, stop, reconnect, and change tor circuits. Since Tor is not a core operating system feature +like a TCP/IP stack, a mobile app that depends on tor functionality must have a way to access it in another app (which +is not feasible on iOS), or it must bring its own Tor functionality with it. This plugin gives you a fairly easy way to +"bring your own tor daemon" into a mobile app. + +## What this plugin does _not_ do + +This plugin is not an HTTP library, nor any kind of networking library for that matter. It's only job is to manage the +Tor [SOCKS5](https://en.wikipedia.org/wiki/SOCKS) proxy that networking applications can route its traffic through. As +such, in order to use an arbitrary networking protocol with this plugin, it is necessary that the code you have written +or pulled in that has SOCKS5 support. + +It does not matter whether the code that negotiates a socks5 connection is written in a hybrid (JS/TS) or native environment. +Since the SOCSK5 protocol is entirely network driven, as long as you can talk to the port that is listening for SOCKS +connections, you can make use of it. + +## Installation + +To install into your ionic project: + +```bash +$ npm i --save capacitor-tor +$ npx cap update + +... add module into the typescript how you like ... + +$ ionic build +$ npx cap sync +$ npx cap open ios && npx cap open android +``` + +You MUST also add the following lines to the `build.gradle` within your `android` folder: + +1. In the 'dependencies:{ ... }' section include this line: `implementation 'org.torproject:tor-android-binary:0.4.2.5'` +1. In the 'repositories:{ ... }' section include this line: `maven { url "https://raw.githubusercontent.com/guardianproject/gpmaven/master" }` + as well as edit your android 'android/app/src/main/java/.../MainActivity.java' + +As with other capacitor Plugins, you will have to specifically register the plugin in your activity with the java side. + +```java +... +import tor.plugin.TorPlugin; + +public class MainActivity extends BridgeActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Initializes the Bridge + this.init(savedInstanceState, new ArrayList>() {{ + // Additional plugins you've installed go here + add(TorPlugin.class); + }}); + } +} + +``` + +## Usage + +Sample use in an ionic app: + +```typescript +import { Component } from '@angular/core'; +import { Tor } from 'capacitor-tor'; +@Component({ + selector: 'app-tab1', + templateUrl: 'tab1.page.html', + styleUrls: ['tab1.page.scss'] +}) +export class Tab1Page { + private readonly tor = new Tor(); + + constructor() { + } + + async ngOnInit() { + console.log('Initializing Tor Daemon.'); + /* Start tor socks listener on socksPort (9250). + If tor takes longer than initTimeout (15000) to start and bootstrap fully, + the returned observable will error out. If initTimeout is omitted, tor + will attempt to connect forever and the observable will never error out. + */ + this.tor.start({socksPort: 9250, controlPort: 9251, initTimeout: 15000}).subscribe({ + next: progressPercentage => this.handleConnecting(progressPercentage), + error: whatHappened => { throw new Error('Tor subscription blew up: ' + whatHappened) } + }) + console.log(`Tor Daemon initialized.`); + } + ... +} +``` + +## State of the Project + +We have been using this in production at Start9 Labs since May 2020, but that does not mean it is without its quirks. +The tor binaries themselves are still maturing for use in this kind of an environment, and the internals are still +quite rough around the edges. We currently use this in Ionic applications for iOS and Android. If you are trying to use +it in a project that exceeds that scope (Electron, React Native), you should expect to do some trailblazing. + +## Contributions + +Contributions are welcome. This project is very much in the spirit of FOSS. If you want to submit PR's to the code or +documentation, please feel free to do so. If you want to get in contact with us about this project, please email +keagan@start9labs.com or aaron@start9labs.com diff --git a/openai-readmes/Start9Labs_http-api-proxy.md b/openai-readmes/Start9Labs_http-api-proxy.md new file mode 100644 index 0000000..dd23f9c --- /dev/null +++ b/openai-readmes/Start9Labs_http-api-proxy.md @@ -0,0 +1,80 @@ +# capacitor-http + +A native http client (that is, request are made outside of the WebView, hence dodging mobile CORS issues) capable of making JSON api requests and supporting SOCKS and HTTP proxies. This is an extension of the https://ionicframework.com/docs/native/http Cordova plugin and the work in https://github.com/ionic-team/capacitor/tree/http-api experimental branch of the capacitor core project. + +To install into your ionic project: + +``` +$ npm i --save capacitor-http +$ npx cap update + +... add module into the typescript how you like ... + +$ ionic build +$ npx cap sync +$ npx cap open ios && npx cap open android +``` + +You MUST also edit your android 'android/app/src/main/java/.../MainActivity.java' + +``` +... +import http.plugin.HttpPlugin; // <-- add this + +public class MainActivity extends BridgeActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Initializes the Bridge + this.init(savedInstanceState, new ArrayList>() {{ + // Additional plugins you've installed go here + add(HttpPlugin.class); // <-- add this + }}); + } +} + +``` + +Sample use in an ionic app: + +``` +import { Component } from '@angular/core'; +import { HttpPluginNativeImpl } from 'capacitor-http'; // <-- import it via 'web' syntax to get type safety in the client code. + +@Component({ + selector: 'app-tab1', + templateUrl: 'tab1.page.html', + styleUrls: ['tab1.page.scss'] +}) +export class Tab1Page { + private readonly torClient = new TorClient(); + + httpReply1: any + httpReply2: any + + constructor() { + } + + async ngOnInit() { + } + + async testHttplient() { + this.httpReply1 = await HttpPluginNativeImpl.request({ + url: 'http://jsonplaceholder.typicode.com/todos/1', + method: 'GET', + }).then(JSON.stringify), + + // Can be used with SOCKS5/SOCKS4/HTTP proxies. + this.httpReply2 = await HttpPluginNativeImpl.request({ + url: 'http://fm6q2a2azyh5u2byw2rqh3ixmdnmmedtudsdit5fym3lqypevvli52yd.onion:5959/version', + method: 'GET', + proxy: { + host: 'localhost', + port: 59590, + protocol: 'SOCKS' + } + }).then(JSON.stringify); + } +} +``` diff --git a/openai-readmes/SyedSaadUrRehman-MAD_CyranoMini.md b/openai-readmes/SyedSaadUrRehman-MAD_CyranoMini.md new file mode 100644 index 0000000..c54b2e4 --- /dev/null +++ b/openai-readmes/SyedSaadUrRehman-MAD_CyranoMini.md @@ -0,0 +1,48 @@ +# cyranomini + +This minimises the Cyrano App + +## Install + +```bash +npm install cyranomini +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) +- [`minimize()`](#minimize) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => Promise<{ value: string; }> +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** Promise<{ value: string; }> + +--- + +### minimize() + +```typescript +minimize() => Promise +``` + +**Returns:** Promise<any> + +--- + + diff --git a/openai-readmes/THARUE_barcode-scanner.md b/openai-readmes/THARUE_barcode-scanner.md new file mode 100644 index 0000000..09d8f72 --- /dev/null +++ b/openai-readmes/THARUE_barcode-scanner.md @@ -0,0 +1,505 @@ +


    +

    Barcode Scanner

    +

    @capacitor-community/barcode-scanner

    +

    + A fast and efficient (QR) barcode scanner for Capacitor. +

    + +

    + + +
    + + + + + +

    + +## Table of Contents + +- [Maintainers](#maintainers) +- [About](#about) +- [Installation](#installation) +- [Usage](#usage) +- [Troubleshooting](#troubleshooting) + +## Maintainers + +| Maintainer | GitHub | Active | +| ---------- | ------------------------------------- | ------ | +| thegnuu | [thegnuu](https://github.com/thegnuu) | yes | +| tafelnl | [tafelnl](https://github.com/tafelnl) | no | + +## About + +### Supported barcodes + +On **iOS** this library makes use of Apple's own `AVFoundation`. This means **[this list of barcodes](https://developer.apple.com/documentation/avfoundation/avmetadatamachinereadablecodeobject/machine-readable_object_types)** should be supported. + +On **Android** this library uses [`zxing-android-embedded`](https://github.com/journeyapps/zxing-android-embedded) which uses [`zxing`](https://github.com/zxing/zxing) under the hood. That means **[this list of barcodes](https://github.com/zxing/zxing/#supported-formats)** is supported. + +### Note on supported Capacitor versions + +`v2.x` supports Capacitor `v3.x` + +`v1.x` supports Capacitor `v2.x` + +All releases of this package can be found on [npm](https://www.npmjs.com/package/@capacitor-community/barcode-scanner?activeTab=versions) and on [GitHub Releases](https://github.com/capacitor-community/barcode-scanner/releases) + +## Installation + +```bash +npm install @capacitor-community/barcode-scanner +npx cap sync +``` + +### iOS + +For iOS you need to set a usage description in your info.plist file. + +This can be done by either adding it to the Source Code directly or by using Xcode Property List inspector. + +**Adding it to the source code directly** + +1. Open up the Info.plist (in Xcode right-click > Open As > Source Code) +2. With `` change the following + +```diff + ++ NSCameraUsageDescription ++ To be able to scan barcodes + +``` + +_NOTE:_ "To be able to scan barcodes" can be substituted for anything you like. + +**Adding it by using Xcode Property List inspector** + +1. Open up the Info.plist **in Xcode** (right-click > Open As > Property List) +2. Next to "Information Property List" click on the tiny `+` button. +3. Under `key`, type "Privacy - Camera Usage Description" +4. Under `value`, type "To be able to scan barcodes" + +_NOTE:_ "To be able to scan barcodes" can be substituted for anything you like. + +More info here: https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription + +### Android + +Within your `AndroidManifest.xml` file, change the following: + +```diff + + + + + + ++ + ++ + +``` + +## Usage + +The complete API reference can be found [here](./API_REFERENCE.md). + +Scanning a (QR) barcode can be as simple as: + +```js +import { BarcodeScanner } from '@capacitor-community/barcode-scanner' + +const startScan = async () => { + BarcodeScanner.hideBackground() // make background of WebView transparent + + const result = await BarcodeScanner.startScan() // start scanning and wait for a result + + // if the result has content + if (result.hasContent) { + console.log(result.content) // log the raw scanned content + } +} +``` + +### Opacity of the WebView + +Because of the fact that the Scanner View will be rendered behind the WebView, you will have to call `hideBackground()` to make the WebView and the `` element transparent. Every other element that needs transparency, you will have to handle yourself. + +The `` element is made transparent by adding `background: 'transparent';` to the `style=""` attribute. So in theory it is possible that this is overwritten by some CSS property in your setup. Because this plugin does not aim to fix every single scenario out there, you will have to think of a workaround for this yourself, if this applies to you (probably not). + +If you still cannot see the camera view, check if any other elements are blocking it. For more info on this see [here](#the-scanner-view-does-not-show-up). + +### Stopping a scan + +After `startScan()` is resolved, the Scanner View will be automatically destroyed to save battery. But if you want to cancel the scan before `startScan()` is resolved (AKA no code has been recognized yet), you will have to call `stopScan()` manually. Example: + +```js +import { BarcodeScanner } from '@capacitor-community/barcode-scanner' + +const stopScan = () => { + BarcodeScanner.showBackground() + BarcodeScanner.stopScan() +} +``` + +It is also important to think about cases where a users hits some sort of a back button (either hardware or software). It is advised to call `stopScan()` in these types of situations as well. + +In Vue.js you could do something like this in a specific view where you use the scanner: + +```vue + +``` + +### Preparing a scan + +To boost performance and responsiveness (by just a bit), a `prepare()` method is available. If you know your script will call `startScan()` sometime very soon, you can call `prepare()` to make `startScan()` work even faster. + +For example: + +```js +import { BarcodeScanner } from '@capacitor-community/barcode-scanner' + +const prepare = () => { + BarcodeScanner.prepare() +} + +const startScan = async () => { + BarcodeScanner.hideBackground() + const result = await BarcodeScanner.startScan() + if (result.hasContent) { + console.log(result.content) + } +} + +const stopScan = () => { + BarcodeScanner.showBackground() + BarcodeScanner.stopScan() +} + +const askUser = () => { + prepare() + + const c = confirm('Do you want to scan a barcode?') + + if (c) { + startScan() + } else { + stopScan() + } +} + +askUser() +``` + +This is fully optional and would work the same as: + +```js +import { BarcodeScanner } from '@capacitor-community/barcode-scanner' + +const startScan = async () => { + BarcodeScanner.hideBackground() + const result = await BarcodeScanner.startScan() + if (result.hasContent) { + console.log(result.content) + } +} + +const askUser = () => { + const c = confirm('Do you want to scan a barcode?') + + if (c) { + startScan() + } +} + +askUser() +``` + +The latter will just appear a little slower to the user. + +### Permissions + +This plugin does not automatically handle permissions. But the plugin _does_ have a utility method to check and request the permission. You will have to request the permission from JavaScript. A simple example follows: + +```js +import { BarcodeScanner } from '@capacitor-community/barcode-scanner' + +const checkPermission = async () => { + // check or request permission + const status = await BarcodeScanner.checkPermission({ force: true }) + + if (status.granted) { + // the user granted permission + return true + } + + return false +} +``` + +A more detailed and more UX-optimized example: + +```js +import { BarcodeScanner } from '@capacitor-community/barcode-scanner' + +const didUserGrantPermission = async () => { + // check if user already granted permission + const status = await BarcodeScanner.checkPermission({ force: false }) + + if (status.granted) { + // user granted permission + return true + } + + if (status.denied) { + // user denied permission + return false + } + + if (status.asked) { + // system requested the user for permission during this call + // only possible when force set to true + } + + if (status.neverAsked) { + // user has not been requested this permission before + // it is advised to show the user some sort of prompt + // this way you will not waste your only chance to ask for the permission + const c = confirm('We need your permission to use your camera to be able to scan barcodes') + if (!c) { + return false + } + } + + if (status.restricted || status.unknown) { + // ios only + // probably means the permission has been denied + return false + } + + // user has not denied permission + // but the user also has not yet granted the permission + // so request it + const statusRequest = await BarcodeScanner.checkPermission({ force: true }) + + if (statusRequest.asked) { + // system requested the user for permission during this call + // only possible when force set to true + } + + if (statusRequest.granted) { + // the user did grant the permission now + return true + } + + // user did not grant the permission, so he must have declined the request + return false +} + +didUserGrantPermission() +``` + +If a user denied the permission for good, `status.denied` will be set to true. On Android this will happen only when the user checks the box `never ask again`. To get the permission anyway you will have to redirect the user to the settings of the app. This can be done simply be doing the following: + +```js +import { BarcodeScanner } from '@capacitor-community/barcode-scanner' + +const checkPermission = async () => { + const status = await BarcodeScanner.checkPermission() + + if (status.denied) { + // the user denied permission for good + // redirect user to app settings if they want to grant it anyway + const c = confirm('If you want to grant permission for using your camera, enable it in the app settings.') + if (c) { + BarcodeScanner.openAppSettings() + } + } +} +``` + +### Target only specific barcodes + +You can setup the scanner to only recognize specific types of barcodes like this: + +```ts +import { BarcodeScanner, SupportedFormat } from '@capacitor-community/barcode-scanner' + +BarcodeScanner.startScan({ targetedFormats: [SupportedFormat.QR_CODE] }) // this will now only target QR-codes +``` + +If `targetedFormats` is _not specified_ or _left empty_, _all types_ of barcodes will be targeted. + +Targeting only specific types can have the following benefits: + +- Improved performance (since the decoder only has to look for the specified barcodes) +- Improved User Experience (since scanning a barcode that is not supported by your case, will not work) + +The following types are supported: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CategoryTypeAndroidiOS
    1D Product
    UPC_A✔**
    UPC_E
    UPC_EAN_EXTENSION
    EAN_8
    EAN_13
    1D Industrial
    CODE_39
    CODE_39_MOD_43
    CODE_93
    CODE_128
    CODABAR
    ITF
    ITF_14
    2D
    AZTEC
    DATA_MATRIX
    MAXICODE
    PDF_417
    QR_CODE
    RSS_14
    RSS_EXPANDED
    + +\*\* `UPC_A` is supported on iOS, but according to the offical [Apple docs](https://developer.apple.com/documentation/avfoundation/avmetadataobject/objecttype/1618807-ean13) it is part of `EAN_13`. So you should specify `EAN_13` to be able to scan this. If you want to distinguish them from one another, you should manually do so after getting the result. + +## Troubleshooting + +### I have a `Error: Plugin BarcodeScanner does not respond to method call` error message on iOS + +In Xcode click on `Product` > `Clean Build Folder` and try to build again. + +### I have a `Cannot resolve symbol BarcodeScanner` error message in Android Studio + +In Android Studio click `File` > `Sync Project with Gradle Files` and try to build again. + +### The scanner view does not show up + +First check that the camera permission is granted. If the scanner view does still not appear it is likely that some UI element is blocking it. Check out these issues for more information on how to resolve such an issue: [#7](https://github.com/capacitor-community/barcode-scanner/issues/7#issuecomment-744441148) and [#26](https://github.com/capacitor-community/barcode-scanner/issues/26) + +## TODO + +A non-exhaustive list of todos: + +- Support for switching between cameras +- Support for toggling the flashlight +- Support for web diff --git a/openai-readmes/TalesMattos_fcm-23-for-capacitor-v2-ionic-4-android-s.md b/openai-readmes/TalesMattos_fcm-23-for-capacitor-v2-ionic-4-android-s.md new file mode 100644 index 0000000..f15b4e3 --- /dev/null +++ b/openai-readmes/TalesMattos_fcm-23-for-capacitor-v2-ionic-4-android-s.md @@ -0,0 +1,6 @@ +

    Capacitor V2 FCM (for Android S+)

    +

    Fork from @capacitor-community/fcm@1.1.2

    +@capacitor-community/fcm +

    + This plugin fork enables FCM capabilities (23.0.5 version of Firebase-Messaging) on Android S+ for Capacitor V2 Ionic 4 apps! +

    diff --git a/openai-readmes/TeamBrahma_capacitor-native-plugins.md b/openai-readmes/TeamBrahma_capacitor-native-plugins.md new file mode 100644 index 0000000..1ac18fc --- /dev/null +++ b/openai-readmes/TeamBrahma_capacitor-native-plugins.md @@ -0,0 +1,88 @@ +# custom + +Android native plugin for Ionic (Capacitor) + +## Install + +```bash +npm install @brahmaesolutions/native +yarn add @brahmaesolutions/native +npx cap sync +``` + +```diff +package io.ionic.starter; ++ import com.brahma.plugins.custom.CustomPlugin; + +import android.os.Bundle; + +import com.getcapacitor.BridgeActivity; +import com.getcapacitor.Plugin; + +import java.util.ArrayList; + +public class MainActivity extends BridgeActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Initializes the Bridge + this.init(savedInstanceState, new ArrayList>() {{ + // Additional plugins you have installed go here ++ add(CustomPlugin.class); + }}); + } + +} +``` + +## API + + + +- [`echo(...)`](#echo) +- [`getContacts(...)`](#getcontacts) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => any +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** any + +--- + +### getContacts(...) + +```typescript +getContacts(filter: string) => any +``` + +| Param | Type | +| ------------ | ------------------- | +| **`filter`** | string | + +**Returns:** any + +--- + +## Example + +```bash +import { Contacts } from '@brahmaesolutions/native'; +Contacts.getContacts("").then((result: any) => { + console.log(result['results']); +}) +``` + + diff --git a/openai-readmes/TeamHive_capacitor-email.md b/openai-readmes/TeamHive_capacitor-email.md new file mode 100644 index 0000000..2979d3d --- /dev/null +++ b/openai-readmes/TeamHive_capacitor-email.md @@ -0,0 +1,46 @@ +# Capacitor Email + +## Usage + +```ts +import { Email } from '@teamhive/capacitor-email' + +const email = new Email() + +const hasPermission = await email.hasPermission() + +if (!hasPermission) { + await email.requestPermission() +} + +const available = await email.isAvailable({ + alias: 'gmail', // gmail, outlook, yahoo *optional*, +}) + +// available.hasAccount *If email is setup* +// available.hasApp *If device has alias supplied* + +if (available.hasAccount) { + email.open({ + to: ['me@myemail.com'], + cc: ['bro@hisemail.com'], + bcc: ['sis@heremail.com'], + subject: 'Party', + body: 'Hi bring drinks...', + isHtml: false, + attachments: [SomeFilePath], + }) +} +``` + +## Api + +| Method | Default | Type | Description | +| --------------------------------------- | ------- | --------------------------- | ----------- | --- | +| isAvailable(options?: AvailableOptions) | | `Promise` | | +| open(options?: EmailOptions) | | `Promise` | | +| openDraft() | | `Promise` | | | +| requestPermission() | | `Promise` | | +| hasPermission() | | `Promise` | | +| getDefaults() | | `Promise` | | +| getAliases() | | `Promise` | | diff --git a/openai-readmes/TeamHive_capacitor-webview-overlay.md b/openai-readmes/TeamHive_capacitor-webview-overlay.md new file mode 100644 index 0000000..4d791ec --- /dev/null +++ b/openai-readmes/TeamHive_capacitor-webview-overlay.md @@ -0,0 +1,23 @@ +# @teamhive/capacitor-webview-overlay + +Webview Overlay + +## Install + +```bash +npm install @teamhive/capacitor-webview-overlay +npx cap sync +``` + +## API + + + + + + + + +## Usage + +This plugin uses a custom Javascript frontend, so each instance of the `WebviewOverlay` class will control a separate webview. The plugin requires an empty HTML element to determine the position and dimensions of the webview. This element is also used to display a screen capture of the webview if you need to have any app UI elements overlay the webview at any time. See the example project for implementation. diff --git a/openai-readmes/TeamMaestro_capacitor-single-sign-on.md b/openai-readmes/TeamMaestro_capacitor-single-sign-on.md new file mode 100644 index 0000000..ac7a7e4 --- /dev/null +++ b/openai-readmes/TeamMaestro_capacitor-single-sign-on.md @@ -0,0 +1,37 @@ +# @teamhive/capacitor-single-signon + +This plugin is designed to streamline the single signon process between android and ios + +## Install + +```bash +npm install @teamhive/capacitor-single-signon +npx cap sync +``` + +## API + + + +- [`authenticate(...)`](#authenticate) + + + + + + +### authenticate(...) + +```typescript +authenticate(options: { url: string; customScheme?: string; }) => any +``` + +| Param | Type | +| ------------- | ---------------------------------------------------- | +| **`options`** | { url: string; customScheme?: string; } | + +**Returns:** any + +--- + + diff --git a/openai-readmes/Tespie_Tj-Root-JailBreak-Checker.md b/openai-readmes/Tespie_Tj-Root-JailBreak-Checker.md new file mode 100644 index 0000000..c69f25a --- /dev/null +++ b/openai-readmes/Tespie_Tj-Root-JailBreak-Checker.md @@ -0,0 +1,63 @@ +# TJ Root Checker Plugin for Capacitor + +## Description + +TJ Root Checker is a lightweight and user-friendly npm package designed to detect whether an Android or iOS device is rooted or jailbroken. With simple integration into your projects, this package empowers developers to ensure the security and integrity of their applications by identifying potential security risks associated with rooted or jailbroken devices. + +## Installation + +To use the TJ Root Checker plugin in your Ionic Capacitor app, follow these steps: + +1. Install the npm package in your app's root directory: + +```bash +npm install tj-root-check +npx cap sync +``` + +## Usage + +Import the plugin in your TypeScript code: + +```bash +import { Plugins } from '@capacitor/core'; +const { RootCheckerPlugin } = Plugins; +``` + +You can use the RootCheckerPlugin in your TypeScript code to check whether the device is rooted or jailbroken. + +```bash +async function checkRootStatus() { + try { + const result = await RootCheckerPlugin.isDeviceRooted(); + console.log('Device is rooted:', result.isRooted); + } catch (error) { + console.error('Error checking rooted status:', error); + } +} + +// Call the function to check rooted status +checkRootStatus(); +``` + +## Return Value + +The isDeviceRooted() function returns a Promise that resolves to an object with a single property isRooted, which is a boolean indicating whether the device is rooted or jailbroken. If the device is rooted/jailbroken, isRooted will be true; otherwise, it will be false. + +## Compatibility + +This plugin is compatible with Capacitor 2.x and above. +It supports both Android and iOS (build for ios pending) platforms. +License +This package is open-source and available under the MIT License. + +## Issues and Contributions + +If you encounter any issues or have suggestions for improvements, feel free to open an issue or submit a pull request on our GitHub repository: https://github.com/Tespie/Tj-Root-JailBreak-Checker + +## Support + +For any questions or support, you can reach out to the package author: + +Name: Mr. Tj Patel +Email: tjpatel@reachable.com diff --git a/openai-readmes/TheeMachine_presentation-capacitor.md b/openai-readmes/TheeMachine_presentation-capacitor.md new file mode 100644 index 0000000..6e70e5f --- /dev/null +++ b/openai-readmes/TheeMachine_presentation-capacitor.md @@ -0,0 +1,89 @@ +# presentation-capacitor + +Capacitor Plugin for presentation api + +## Install + +```bash +npm install presentation-capacitor +npx cap sync +``` + +## API + + + +- [`openLink(...)`](#openlink) +- [`addListener('onSuccessLoadUrl', ...)`](#addlisteneronsuccessloadurl) +- [`addListener('onFailLoadUrl', ...)`](#addlisteneronfailloadurl) +- [`getDisplays()`](#getdisplays) +- [Interfaces](#interfaces) + + + + + + +### openLink(...) + +```typescript +openLink(options: { url: string; }) => Promise<{ success?: any; error?: any; url?: any; }> +``` + +| Param | Type | +| ------------- | ----------------------------- | +| **`options`** | { url: string; } | + +**Returns:** Promise<{ success?: any; error?: any; url?: any; }> + +--- + +### addListener('onSuccessLoadUrl', ...) + +```typescript +addListener(eventName: 'onSuccessLoadUrl', listenerFunc: (data: any) => void) => Promise & PluginListenerHandle +``` + +| Param | Type | +| ------------------ | ----------------------------------- | +| **`eventName`** | 'onSuccessLoadUrl' | +| **`listenerFunc`** | (data: any) => void | + +**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle + +--- + +### addListener('onFailLoadUrl', ...) + +```typescript +addListener(eventName: 'onFailLoadUrl', listenerFunc: (data: any) => void) => Promise & PluginListenerHandle +``` + +| Param | Type | +| ------------------ | ----------------------------------- | +| **`eventName`** | 'onFailLoadUrl' | +| **`listenerFunc`** | (data: any) => void | + +**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle + +--- + +### getDisplays() + +```typescript +getDisplays() => Promise<{ displays: number; }> +``` + +**Returns:** Promise<{ displays: number; }> + +--- + +### Interfaces + +#### PluginListenerHandle + +| Prop | Type | +| ------------ | ----------------------------------------- | +| **`remove`** | () => Promise<void> | + + diff --git a/openai-readmes/ThomasKientz_capacitor-plugin-file-infos.md b/openai-readmes/ThomasKientz_capacitor-plugin-file-infos.md new file mode 100644 index 0000000..01ee6a2 --- /dev/null +++ b/openai-readmes/ThomasKientz_capacitor-plugin-file-infos.md @@ -0,0 +1,13 @@ +# File Infos Plugin + +Capacitor plugin for Android to get file's name and size from an uri. + +### Install + +``` +npm i --save capacitor-plugin-file-infos +npx cap update + +``` + +### Usage diff --git a/openai-readmes/TimoZacherl_capacitor-plugin-siri-shortcuts.md b/openai-readmes/TimoZacherl_capacitor-plugin-siri-shortcuts.md new file mode 100644 index 0000000..188d7df --- /dev/null +++ b/openai-readmes/TimoZacherl_capacitor-plugin-siri-shortcuts.md @@ -0,0 +1,239 @@ +![ios](https://shields.io/badge/iOS-%3E%3D12.0-informational) +![xcode](https://shields.io/badge/Xcode-%3E%3D10.0-informational) +![npm](https://shields.io/npm/dw/capacitor-plugin-siri-shorts) +![GitHub](https://shields.io/github/license/timozacherl/capacitor-plugin-siri-shortcuts) +![npm](https://shields.io/npm/v/capacitor-plugin-siri-shorts) +![capacitor](https://shields.io/badge/Capacitor-%3E%3D3.0.0-informational) + +# Capacitor Plugin for Siri Shortcuts + +## 💥 Breaking Changes + +Version 5 of this Plugin only works with Capacitor 5. + +- For Capacitor 3 or 4 install `npm i capacitor-plugin-siri-shorts@3.0.0`. +- For Capacitor 2 install `npm i capacitor-plugin-siri-shorts@1.0.3`. + +## 🔧 Setup + +The Plugin requires at least iOS 12 and Xcode 10. + +```sh +npm i capacitor-plugin-siri-shorts +``` + +### iOS Project + +Add a new Item to `NSUserActivityTypes` inside your `Info.plist` with your Bundle Identifier: + +```sh +$(PRODUCT_BUNDLE_IDENTIFIER).shortcut +``` + +Extend the `application:continueuserActivity,restorationHandler` function inside your `AppDelegate.swift` with the following line: + +```swift +NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: "appLaunchBySiriShortcuts"), object: userActivity, userInfo: userActivity.userInfo)) +``` + +**Put this line before the return statement!** + +The function should look similar to that: + +```swift +func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { + NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: "appLaunchBySiriShortcuts"), object: userActivity, userInfo: userActivity.userInfo)) + return CAPBridge.handleContinueActivity(userActivity, restorationHandler) +} +``` + +## ✨ Example Usage + +### A full Ionic + Angular example is available [here](https://github.com/lovetodream/siri-shortcuts-ionic-angular-sample) + +Basic example of the donate function: + +```ts +import { SiriShortcuts } from 'capacitor-plugin-siri-shorts'; + +... + +someAction() { + SiriShortcuts.donate({ + persistentIdentifier: "someIdentifier", + title: "A descriptive title" + }) +} +``` + +It's recommended to add a listener into the `initializeApp()` function inside `app.component.ts`. + +```ts +initializeApp() { + this.platform.ready().then(() => { + + ... + + SiriShortcuts.addListener('appLaunchBySiriShortcuts', (res) => { + // do something with the response of the shortcut here + console.log(res) + }); + }); +} +``` + +## 🏗️ API Reference + + + +- [`donate(...)`](#donate) +- [`present(...)`](#present) +- [`delete(...)`](#delete) +- [`deleteAll()`](#deleteall) +- [`addListener('appLaunchBySiriShortcuts', ...)`](#addlistenerapplaunchbysirishortcuts) +- [`removeAllListeners()`](#removealllisteners) +- [Interfaces](#interfaces) + + + + + + +### donate(...) + +```typescript +donate(options: Options) => Promise +``` + +Donates the provided action to Siri/Shortcuts + +| Param | Type | Description | +| ------------- | ------------------------------------------- | ---------------------------------------------------------- | +| **`options`** | Options | Options to specify for the donation | + +**Returns:** Promise<any> + +**Since:** 1.0.0 + +--- + +### present(...) + +```typescript +present(options: Options) => Promise +``` + +Presents a modal to the user to add the shortcut to siri and access it via voice + +| Param | Type | Description | +| ------------- | ------------------------------------------- | ---------------------------------------------------------- | +| **`options`** | Options | Options to specify for the donation | + +**Returns:** Promise<any> + +**Since:** 2.2.0 + +--- + +### delete(...) + +```typescript +delete(options: DeleteOptions) => Promise +``` + +Deletes the previous donations with the provided persistent identifiers + +| Param | Type | +| ------------- | ------------------------------------------------------- | +| **`options`** | DeleteOptions | + +**Since:** 2.1.0 + +--- + +### deleteAll() + +```typescript +deleteAll() => Promise +``` + +Delets all the previously donated activities + +**Since:** 2.1.0 + +--- + +### addListener('appLaunchBySiriShortcuts', ...) + +```typescript +addListener(eventName: 'appLaunchBySiriShortcuts', listenerFunc: (shortcut: Shortcut) => void) => Promise & PluginListenerHandle +``` + +Listens to events associated with Siri Shortcuts +and notifies the listenerFunc if a Shortcuts has been executed. + +| Param | Type | Description | +| ------------------ | -------------------------------------------------------------------- | ----------------------------------------------- | +| **`eventName`** | 'appLaunchBySiriShortcuts' | Name of the event | +| **`listenerFunc`** | (shortcut: Shortcut) => void | Function to execute when listener gets notified | + +**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle + +**Since:** 2.0.1 + +--- + +### removeAllListeners() + +```typescript +removeAllListeners() => Promise +``` + +Remove all listeners for this plugin. + +**Since:** 2.0.1 + +--- + +### Interfaces + +#### Options + +Options to specify for the donation + +| Prop | Type | Description | +| ------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **`persistentIdentifier`** | string | Specify an identifier to uniquely identify the shortcut, in order to be able to remove it | +| **`title`** | string | Specify a title for the shortcut, which is visible to the user as the name of the shortcut | +| **`userInfo`** | UserInfo | Provide a key-value object that contains information about the shortcut, this will be returned in the getActivatedShortcut method. It is not possible to use the persistentIdentifier key, it is used internally | +| **`suggestedInvocationPhrase`** | string | Specify the phrase to give the user some inspiration on what the shortcut to call | +| **`isEligibleForSearch`** | boolean | This value defaults to true, set this value to make it searchable in Siri | +| **`isEligibleForPrediction`** | boolean | This value defaults to true, set this value to set whether the shortcut eligible for prediction | + +#### UserInfo + +#### DeleteOptions + +Options to specify for a deletion + +| Prop | Type | Description | +| ----------------- | --------------------- | ------------------------------------------------------- | +| **`identifiers`** | string[] | Array of persistent identifiers which should be deleted | + +#### PluginListenerHandle + +| Prop | Type | +| ------------ | ----------------------------------------- | +| **`remove`** | () => Promise<void> | + +#### Shortcut + +Object which will be returned by the listener which +contains the persistent identifier and the userinfo +of a shortcut + +| Prop | Type | +| -------------------------- | ------------------- | +| **`persistentIdentifier`** | string | + + diff --git a/openai-readmes/Unicorns-and-Unicorns_capacitor-sensors-v2.md b/openai-readmes/Unicorns-and-Unicorns_capacitor-sensors-v2.md new file mode 100644 index 0000000..f4c0281 --- /dev/null +++ b/openai-readmes/Unicorns-and-Unicorns_capacitor-sensors-v2.md @@ -0,0 +1,55 @@ +# How to use + +### Installation + +``` +npm install @unicorns-and-unicorns/capacitor-sensors-v2 --save +npx cap sync +``` + +### In your Ionic Android project, add this code, to make to make Capacitor aware of the plugins + +```java +import com.ctss.sensors.Sensors; + +public class MainActivity extends BridgeActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // Initializes the Bridge + this.init(savedInstanceState, new ArrayList>() {{ + // Additional plugins you've installed go here + add(Sensors.class); + }}); + } +} +``` + +### You can use the Sensors like this + +```tsx +import { Plugins } from '@capacitor/core' +import { SensorData, Sensors } from 'sensors' + +useEffect(() => { + Plugins.Sensors.addListener('magnetometerChange', (res: SensorData) => { + setMangetometerX(res.x) + setMangetometerY(res.y) + setMangetometerZ(res.z) + }) + Plugins.Sensors.addListener('gyroscopeChange', (res: SensorData) => { + setGyroscopeX(res.x) + setGyroscopeY(res.y) + setGyroscopeZ(res.z) + }) + Plugins.Sensors.addListener('accelerometerChange', (res: SensorData) => { + setAccelerometerX(res.x) + setAccelerometerY(res.y) + setAccelerometerZ(res.z) + }) + + return () => { + Plugins.Sensors.removeAllListeners() + } +}, []) +``` diff --git a/openai-readmes/Unicorns-and-Unicorns_capacitor-sensors.md b/openai-readmes/Unicorns-and-Unicorns_capacitor-sensors.md new file mode 100644 index 0000000..708afe3 --- /dev/null +++ b/openai-readmes/Unicorns-and-Unicorns_capacitor-sensors.md @@ -0,0 +1,139 @@ +# How to use + +### First build the plugin + +``` +npm install +npm run build +``` + +### In the ionic project install it like this (just change path to yours) + +``` +npm install /{path-to-plugin}/capacitor-sensors +``` + +### And then + +``` +ionic capacitor sync android +ionic capacitor sync ios +``` + +### You can use the Sensors like this + +```typescript +import { Sensors, SensorData } from 'sensors' + +useEffect(() => { + Sensors.addListener('magnetometerChange', (res: SensorData) => { + setMangetometerX(res.x) + setMangetometerY(res.y) + setMangetometerZ(res.z) + }) + Sensors.addListener('gyroscopeChange', (res: SensorData) => { + setGyroscopeX(res.x) + setGyroscopeY(res.y) + setGyroscopeZ(res.z) + }) + Sensors.addListener('accelerometerChange', (res: SensorData) => { + setAccelerometerX(res.x) + setAccelerometerY(res.y) + setAccelerometerZ(res.z) + }) +}, []) +``` + +# sensors + +Reading motion sensors. + +## Install + +```bash +npm install sensors +npx cap sync +``` + +## API + + + +- [`addListener('magnetometerChange', ...)`](#addlistenermagnetometerchange) +- [`addListener('accelerometerChange', ...)`](#addlisteneraccelerometerchange) +- [`addListener('gyroscopeChange', ...)`](#addlistenergyroscopechange) +- [Interfaces](#interfaces) + + + + + + +### addListener('magnetometerChange', ...) + +```typescript +addListener(eventName: 'magnetometerChange', listenerFunc: (magnetometerData: SensorData) => void) => Promise & PluginListenerHandle +``` + +Listens for magnetometer data change. + +| Param | Type | +| ------------------ | -------------------------------------------------------------------------------- | +| **`eventName`** | 'magnetometerChange' | +| **`listenerFunc`** | (magnetometerData: SensorData) => void | + +**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle + +--- + +### addListener('accelerometerChange', ...) + +```typescript +addListener(eventName: 'accelerometerChange', listenerFunc: (magnetometerData: SensorData) => void) => Promise & PluginListenerHandle +``` + +Listens for accelerometer data change. + +| Param | Type | +| ------------------ | -------------------------------------------------------------------------------- | +| **`eventName`** | 'accelerometerChange' | +| **`listenerFunc`** | (magnetometerData: SensorData) => void | + +**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle + +--- + +### addListener('gyroscopeChange', ...) + +```typescript +addListener(eventName: 'gyroscopeChange', listenerFunc: (magnetometerData: SensorData) => void) => Promise & PluginListenerHandle +``` + +Listens for gyroscope data change. + +| Param | Type | +| ------------------ | -------------------------------------------------------------------------------- | +| **`eventName`** | 'gyroscopeChange' | +| **`listenerFunc`** | (magnetometerData: SensorData) => void | + +**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle + +--- + +### Interfaces + +#### PluginListenerHandle + +| Prop | Type | +| ------------ | ----------------------------------------- | +| **`remove`** | () => Promise<void> | + +#### SensorData + +| Prop | Type | +| ------- | ------------------- | +| **`x`** | number | +| **`y`** | number | +| **`z`** | number | + + diff --git a/openai-readmes/VarsitySoftware_capacitor-plugin-read-key.md b/openai-readmes/VarsitySoftware_capacitor-plugin-read-key.md new file mode 100644 index 0000000..75eac2e --- /dev/null +++ b/openai-readmes/VarsitySoftware_capacitor-plugin-read-key.md @@ -0,0 +1,37 @@ +# @varsitysoftware/capacitor-plugin-read-key + +A simple plugin to read a string from info.plist or strings.xml + +## Install + +```bash +npm install @varsitysoftware/capacitor-plugin-read-key +npx cap sync +``` + +## API + + + +- [`read(...)`](#read) + + + + + + +### read(...) + +```typescript +read(options: { key: string; }) => Promise<{ key: string; }> +``` + +| Param | Type | +| ------------- | ----------------------------- | +| **`options`** | { key: string; } | + +**Returns:** Promise<{ key: string; }> + +--- + + diff --git a/openai-readmes/VarsitySoftware_capacitor-plugin-safe-area.md b/openai-readmes/VarsitySoftware_capacitor-plugin-safe-area.md new file mode 100644 index 0000000..b616ced --- /dev/null +++ b/openai-readmes/VarsitySoftware_capacitor-plugin-safe-area.md @@ -0,0 +1,68 @@ +# @varsitysoftware/capacitor-plugin-safe-area + +A plugin to get safe area info + +## Install + +```bash +npm install @varsitysoftware/capacitor-plugin-safe-area +npx cap sync +``` + +## API + + + +- [`getSafeAreaInsets()`](#getsafeareainsets) +- [`getStatusBarHeight()`](#getstatusbarheight) +- [Interfaces](#interfaces) + + + + + + +### getSafeAreaInsets() + +```typescript +getSafeAreaInsets() => Promise +``` + +**Returns:** Promise<SafeAreaInsets> + +--- + +### getStatusBarHeight() + +```typescript +getStatusBarHeight() => Promise +``` + +**Returns:** Promise<StatusBarInfo> + +--- + +### Interfaces + +#### SafeAreaInsets + +| Prop | Type | +| ------------ | --------------------------------------------- | +| **`insets`** | SafeArea | + +#### SafeArea + +| Prop | Type | +| ------------ | ------------------- | +| **`top`** | number | +| **`right`** | number | +| **`bottom`** | number | +| **`left`** | number | + +#### StatusBarInfo + +| Prop | Type | +| --------------------- | ------------------- | +| **`statusBarHeight`** | number | + + diff --git a/openai-readmes/VelocityCubed_capacitor-plugins.md b/openai-readmes/VelocityCubed_capacitor-plugins.md new file mode 100644 index 0000000..c253725 --- /dev/null +++ b/openai-readmes/VelocityCubed_capacitor-plugins.md @@ -0,0 +1,40 @@ +# Capacitor Plugins + +This repository contains the official Capacitor plugins maintained by the Capacitor team. You can find more plugins in the [Capacitor Community](https://github.com/capacitor-community/). + +> ### :rotating_light: These plugins are for Capacitor 3 :rotating_light: +> +> Capacitor 2 core plugins are bundled with Capacitor itself. + +## Plugins + +| Package | Source | Version | +| -------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`@capacitor/action-sheet`](https://capacitorjs.com/docs/v3/apis/action-sheet) | [`./action-sheet`](./action-sheet) | [![npm badge](https://img.shields.io/npm/v/@capacitor/action-sheet?style=flat-square)](https://www.npmjs.com/package/@capacitor/action-sheet) | +| [`@capacitor/app-launcher`](https://capacitorjs.com/docs/v3/apis/app-launcher) | [`./app-launcher`](./app-launcher) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app-launcher?style=flat-square)](https://www.npmjs.com/package/@capacitor/app-launcher) | +| [`@capacitor/app`](https://capacitorjs.com/docs/v3/apis/app) | [`./app`](./app) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app?style=flat-square)](https://www.npmjs.com/package/@capacitor/app) | +| [`@capacitor/browser`](https://capacitorjs.com/docs/v3/apis/browser) | [`./browser`](./browser) | [![npm badge](https://img.shields.io/npm/v/@capacitor/browser?style=flat-square)](https://www.npmjs.com/package/@capacitor/browser) | +| [`@capacitor/camera`](https://capacitorjs.com/docs/v3/apis/camera) | [`./camera`](./camera) | [![npm badge](https://img.shields.io/npm/v/@capacitor/camera?style=flat-square)](https://www.npmjs.com/package/@capacitor/camera) | +| [`@capacitor/clipboard`](https://capacitorjs.com/docs/v3/apis/clipboard) | [`./clipboard`](./clipboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/clipboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/clipboard) | +| [`@capacitor/device`](https://capacitorjs.com/docs/v3/apis/device) | [`./device`](./device) | [![npm badge](https://img.shields.io/npm/v/@capacitor/device?style=flat-square)](https://www.npmjs.com/package/@capacitor/device) | +| [`@capacitor/dialog`](https://capacitorjs.com/docs/v3/apis/dialog) | [`./dialog`](./dialog) | [![npm badge](https://img.shields.io/npm/v/@capacitor/dialog?style=flat-square)](https://www.npmjs.com/package/@capacitor/dialog) | +| [`@capacitor/filesystem`](https://capacitorjs.com/docs/v3/apis/filesystem) | [`./filesystem`](./filesystem) | [![npm badge](https://img.shields.io/npm/v/@capacitor/filesystem?style=flat-square)](https://www.npmjs.com/package/@capacitor/filesystem) | +| [`@capacitor/geolocation`](https://capacitorjs.com/docs/v3/apis/geolocation) | [`./geolocation`](./geolocation) | [![npm badge](https://img.shields.io/npm/v/@capacitor/geolocation?style=flat-square)](https://www.npmjs.com/package/@capacitor/geolocation) | +| [`@capacitor/google-maps`](https://capacitorjs.com/docs/v3/apis/google-maps) | [`./google-maps`](./google-maps) | [![npm badge](https://img.shields.io/npm/v/@capacitor/google-maps?style=flat-square)](https://www.npmjs.com/package/@capacitor/google-maps) | +| [`@capacitor/haptics`](https://capacitorjs.com/docs/v3/apis/haptics) | [`./haptics`](./haptics) | [![npm badge](https://img.shields.io/npm/v/@capacitor/haptics?style=flat-square)](https://www.npmjs.com/package/@capacitor/haptics) | +| [`@capacitor/keyboard`](https://capacitorjs.com/docs/v3/apis/keyboard) | [`./keyboard`](./keyboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/keyboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/keyboard) | +| [`@capacitor/local-notifications`](https://capacitorjs.com/docs/v3/apis/local-notifications) | [`./local-notifications`](./local-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/local-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/local-notifications) | +| [`@capacitor/motion`](https://capacitorjs.com/docs/v3/apis/motion) | [`./motion`](./motion) | [![npm badge](https://img.shields.io/npm/v/@capacitor/motion?style=flat-square)](https://www.npmjs.com/package/@capacitor/motion) | +| [`@capacitor/network`](https://capacitorjs.com/docs/v3/apis/network) | [`./network`](./network) | [![npm badge](https://img.shields.io/npm/v/@capacitor/network?style=flat-square)](https://www.npmjs.com/package/@capacitor/network) | +| [`@capacitor/push-notifications`](https://capacitorjs.com/docs/v3/apis/push-notifications) | [`./push-notifications`](./push-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/push-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/push-notifications) | +| [`@capacitor/screen-reader`](https://capacitorjs.com/docs/v3/apis/screen-reader) | [`./screen-reader`](./screen-reader) | [![npm badge](https://img.shields.io/npm/v/@capacitor/screen-reader?style=flat-square)](https://www.npmjs.com/package/@capacitor/screen-reader) | +| [`@capacitor/share`](https://capacitorjs.com/docs/v3/apis/share) | [`./share`](./share) | [![npm badge](https://img.shields.io/npm/v/@capacitor/share?style=flat-square)](https://www.npmjs.com/package/@capacitor/share) | +| [`@capacitor/splash-screen`](https://capacitorjs.com/docs/v3/apis/splash-screen) | [`./splash-screen`](./splash-screen) | [![npm badge](https://img.shields.io/npm/v/@capacitor/splash-screen?style=flat-square)](https://www.npmjs.com/package/@capacitor/splash-screen) | +| [`@capacitor/status-bar`](https://capacitorjs.com/docs/v3/apis/status-bar) | [`./status-bar`](./status-bar) | [![npm badge](https://img.shields.io/npm/v/@capacitor/status-bar?style=flat-square)](https://www.npmjs.com/package/@capacitor/status-bar) | +| [`@capacitor/storage`](https://capacitorjs.com/docs/v3/apis/storage) | [`./storage`](./storage) | [![npm badge](https://img.shields.io/npm/v/@capacitor/storage?style=flat-square)](https://www.npmjs.com/package/@capacitor/storage) | +| [`@capacitor/text-zoom`](https://capacitorjs.com/docs/v3/apis/text-zoom) | [`./text-zoom`](./text-zoom) | [![npm badge](https://img.shields.io/npm/v/@capacitor/text-zoom?style=flat-square)](https://www.npmjs.com/package/@capacitor/text-zoom) | +| [`@capacitor/toast`](https://capacitorjs.com/docs/v3/apis/toast) | [`./toast`](./toast) | [![npm badge](https://img.shields.io/npm/v/@capacitor/toast?style=flat-square)](https://www.npmjs.com/package/@capacitor/toast) | + +## Contributing + +See [`CONTRIBUTING.md`](./CONTRIBUTING.md). diff --git a/openai-readmes/Videodock_capacitor-media-session.md b/openai-readmes/Videodock_capacitor-media-session.md new file mode 100644 index 0000000..d72ff78 --- /dev/null +++ b/openai-readmes/Videodock_capacitor-media-session.md @@ -0,0 +1,132 @@ +# capacitor-media-session + +Capacitor plugin which manages the media session and fire media events for Android TV. + +## Install + +```bash +yarn add @videodock/capacitor-media-session +npx cap sync +``` + +## Usage + +All API methods are exposed on the `CapacitorMediaSession` plugin. Import the plugin like so: + +```js +import { CapacitorMediaSession } from '@videodock/capacitor-media-session' +``` + +You can now call any API method: + +```js +// call when player gets mounted +CapacitorMediaSession.initMediaSession(mediaState) +``` + +```js +// call when player gets unmounted/stopped +CapacitorMediaSession.releaseMediaSession() +``` + +```js +// call when media state changes (one of the MediaState properties) +CapacitorMediaSession.setMediaState(mediaState) +``` + +## API + + + +- [`initMediaSession(...)`](#initmediasession) +- [`releaseMediaSession()`](#releasemediasession) +- [`setMediaState(...)`](#setmediastate) +- [`addListener('mediaSessionEvent', ...)`](#addlistenermediasessionevent) +- [Interfaces](#interfaces) +- [Type Aliases](#type-aliases) + + + + + + +### initMediaSession(...) + +```typescript +initMediaSession(mediaState: MediaState) => Promise<{ call: string; }> +``` + +| Param | Type | +| ---------------- | ------------------------------------------------- | +| **`mediaState`** | MediaState | + +**Returns:** Promise<{ call: string; }> + +--- + +### releaseMediaSession() + +```typescript +releaseMediaSession() => Promise<{ call: string; }> +``` + +**Returns:** Promise<{ call: string; }> + +--- + +### setMediaState(...) + +```typescript +setMediaState(mediaState: MediaState) => Promise<{ call: string; mediaState: MediaState; }> +``` + +| Param | Type | +| ---------------- | ------------------------------------------------- | +| **`mediaState`** | MediaState | + +**Returns:** Promise<{ call: string; mediaState: MediaState; }> + +--- + +### addListener('mediaSessionEvent', ...) + +```typescript +addListener(eventName: 'mediaSessionEvent', listenerFunc: MediaSessionListenerFunc) => Promise & PluginListenerHandle +``` + +| Param | Type | +| ------------------ | ----------------------------------------------------------------------------- | +| **`eventName`** | 'mediaSessionEvent' | +| **`listenerFunc`** | MediaSessionListenerFunc | + +**Returns:** Promise<PluginListenerHandle> & PluginListenerHandle + +--- + +### Interfaces + +#### PluginListenerHandle + +| Prop | Type | +| ------------ | ----------------------------------------- | +| **`remove`** | () => Promise<void> | + +### Type Aliases + +#### MediaState + +{ isPlaying: boolean; isActive: boolean; title: string; subtitle: string; artworkUri: string; position: number; } + +#### MediaSessionListenerFunc + +(event: MediaSessionEvent): void + +#### MediaSessionEvent + +{ eventName: MediaSessionEventType } + +#### MediaSessionEventType + +'onPlay' | 'onPause' | 'onPlayPause' | 'onStop' | 'onNext' | 'onPrev' | 'onFastForward' | 'onRewind' + + diff --git a/openai-readmes/WaseemRakab_CapFirebaseDynamicLinks.md b/openai-readmes/WaseemRakab_CapFirebaseDynamicLinks.md new file mode 100644 index 0000000..7f95878 --- /dev/null +++ b/openai-readmes/WaseemRakab_CapFirebaseDynamicLinks.md @@ -0,0 +1,63 @@ +# cap-firebase-dynamic-links + +Capacitor plugin for Firebase Dynamic Links + +- For iOS configuration: + - make sure Associated Domains Capability in Xcode is configured properly, + - for iOS configuration docs: + - https://firebase.google.com/docs/dynamic-links/ios/receive#open-dynamic-links-in-your-app + - read step 1, 2 or 3 if u have custom domain, the other steps are unnecessary. +- for Android configuration: nothing. + +--- + +## Install + +```bash +npm install cap-firebase-dynamic-links +npx cap sync +``` + +## API + + + +- [`addListener('onDynamicLink', ...)`](#addlistenerondynamiclink-) +- [Interfaces](#interfaces) + + + + + + +### addListener('onDynamicLink', ...) + +```typescript +addListener(eventName: 'onDynamicLink', listenerFunc: (data: DynamicLinkData) => void) => PluginListenerHandle +``` + +| Param | Type | +| ------------------ | ------------------------------------------------------------------------------ | +| **`eventName`** | 'onDynamicLink' | +| **`listenerFunc`** | (data: DynamicLinkData) => void | + +**Returns:** PluginListenerHandle + +--- + +### Interfaces + +#### PluginListenerHandle + +| Prop | Type | +| ------------ | ----------------------------------------- | +| **`remove`** | () => Promise<void> | + +#### DynamicLinkData + +| Prop | Type | +| ---------------------- | ------------------- | +| **`url`** | string | +| **`timestampClicked`** | number | + + diff --git a/openai-readmes/Web-Media-Foundation_infrastructure.md b/openai-readmes/Web-Media-Foundation_infrastructure.md new file mode 100644 index 0000000..e4ef945 --- /dev/null +++ b/openai-readmes/Web-Media-Foundation_infrastructure.md @@ -0,0 +1,71 @@ +[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://stand-with-ukraine.pp.ua) + +
    + Web Media Foundation +
    + +Web Media Foundation is a comprehensive system to help creators to build interactive media for the modern web platform. The Web Media Foundation aims to allow creators to build their dreaming interactive content without bothering with trivial troubles of the performance issue, compatibility, etc. + +Our architectural design allows creators to integrate a variety of content from diverse sources, with several types into a solitary product, like video, interactive programs, and distribute it to different platforms, in multiple forms, including desktop clients, mobile applications, and websites. + +It is highly recommended to use `Web Media Foundation Studio` with this system, which can handle resource management, automatic compatibility issue fixing, internationalization, version control, media publishing, application bundling, and more tasks with ease. + +## Status + +Web Media Foundation is under active development, and we are currently focusing on optimizing the architecture, refining the documentation, and completing the functionality. + +You can expect breaking changes at any time until we release the stable version. + +## Contributing + +We use [nx](https://nx.dev/) to manage multiple packages in this repository. + +### Building + +to build all packages, use: + +``` +yarn build +``` + +### Committing + +To write a changelog that reflects your commit, run this command **before** commit your codes: + +``` +yarn changelog +``` + +Answer the questions generated by [changesets](https://github.com/changesets/changesets) and commit the generated file with the code. + +### Publishing + +Bump the version code with: + +``` +yarn version +``` + +commit all generated changes with the following commit message: + +``` +chore: Bump version +``` + +Publishing all packages to NPM: + +``` +yarn publish +``` + +Nx will automatically build and publish all changed packages. + +### Creating a new package + +If you think we need to create a new package, use the following command: + +``` +yarn nx generate @nrwl/js:library --name=[name] --publishable --importPath @web-media/[name] +``` + +Replace `[name]` with your package name. diff --git a/openai-readmes/WebsiteBeaver_capacitor-document-scanner.md b/openai-readmes/WebsiteBeaver_capacitor-document-scanner.md new file mode 100644 index 0000000..943e390 --- /dev/null +++ b/openai-readmes/WebsiteBeaver_capacitor-document-scanner.md @@ -0,0 +1,201 @@ +# Capacitor Document Scanner + +[![Npm package version](https://img.shields.io/npm/v/capacitor-document-scanner/latest.svg?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/capacitor-document-scanner) [![npm peer dependency version](https://img.shields.io/npm/dependency-version/capacitor-document-scanner/peer/@capacitor/core?color=222d3a&logo=capacitor&style=for-the-badge)](https://github.com/WebsiteBeaver/capacitor-document-scanner/blob/master/package.json) + +This is a Capacitor plugin that lets you scan documents using Android and iOS. You can use it to create +apps that let users scan notes, homework, business cards, receipts, or anything with a rectangular shape. + +| iOS | Android | +| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| ![Dollar-iOS](https://user-images.githubusercontent.com/26162804/160485984-e6c46563-56ee-4be9-b241-34a186e0029d.gif) | ![Dollar Android](https://user-images.githubusercontent.com/26162804/160306955-af9c5dd6-5cdf-4e2c-8770-c734a594985d.gif) | + +## Install + +```bash +npm install capacitor-document-scanner +npx cap sync +``` + +## Examples + +- [Basic Example](#basic-example) +- [Limit Number of Scans](#limit-number-of-scans) +- [Remove Cropper](#remove-cropper) + +### Basic Example + +```typescript +import { Capacitor } from '@capacitor/core' +import { DocumentScanner } from 'capacitor-document-scanner' + +const scanDocument = async () => { + // start the document scanner + const { scannedImages } = await DocumentScanner.scanDocument() + + // get back an array with scanned image file paths + if (scannedImages.length > 0) { + // set the img src, so we can view the first scanned image + const scannedImage = document.getElementById('scannedImage') as HTMLImageElement + scannedImage.src = Capacitor.convertFileSrc(scannedImages[0]) + } +} +``` + +Here's what this example looks like with several items + +https://user-images.githubusercontent.com/26162804/160264220-0a77a55c-33b1-492a-9617-6d2c083b0583.mp4 + +https://user-images.githubusercontent.com/26162804/160264222-bef1ba3d-d6c1-43c8-ba2e-77ff5baef836.mp4 + +https://user-images.githubusercontent.com/26162804/161643046-57536193-0c6c-4edf-8f29-6f3ef9854dc5.mp4 + +https://user-images.githubusercontent.com/26162804/161643075-365b5008-4bc8-4507-969d-b2c188f372ec.mp4 + +https://user-images.githubusercontent.com/26162804/161643102-35283536-73a3-4b05-bd76-c06514ca3928.mp4 + +https://user-images.githubusercontent.com/26162804/161643126-f5c2461d-768d-481c-8dee-4d74a0cae778.mp4 + +https://user-images.githubusercontent.com/26162804/161643156-4ce1abac-d78b-4211-a99a-f0bebd40e2a6.mp4 + +https://user-images.githubusercontent.com/26162804/161643167-fc751455-1a1a-4b1c-b06f-a3a2cef0d0b0.mp4 + +https://user-images.githubusercontent.com/26162804/161643192-71db71af-392d-4b6a-b94d-851a3369dbf3.mp4 + +https://user-images.githubusercontent.com/26162804/161643203-2a265cc1-5cf1-4474-b43c-7b1b2dcba704.mp4 + +### Limit Number of Scans + +You can limit the number of scans. For example if your app lets a user scan a business +card you might want them to only capture the front and back. In this case you can set +maxNumDocuments to 2. This only works on Android. + +```typescript +import { Capacitor } from '@capacitor/core' +import { DocumentScanner } from 'capacitor-document-scanner' + +const scanDocument = async () => { + // limit the number of scans to 2 + const { scannedImages } = await DocumentScanner.scanDocument({ + maxNumDocuments: 2, + }) + + // get back an array with scanned image file paths + if (scannedImages.length > 0) { + // set the img src, so we can view the first scanned image + const scannedImage = document.getElementById('scannedImage') as HTMLImageElement + scannedImage.src = Capacitor.convertFileSrc(scannedImages[0]) + } +} +``` + +https://user-images.githubusercontent.com/26162804/161643345-6fe15f33-9414-46f5-b5d5-24d88948e801.mp4 + +### Remove Cropper + +You can automatically accept the detected document corners, and prevent the user from +making adjustments. Set letUserAdjustCrop to false to skip the crop screen. This limits +the max number of scans to 1. This only works on Android. + +```typescript +import { Capacitor } from '@capacitor/core' +import { DocumentScanner } from 'capacitor-document-scanner' + +const scanDocument = async () => { + // skip the crop screen + const { scannedImages } = await DocumentScanner.scanDocument({ + letUserAdjustCrop: false, + }) + + // get back an array with scanned image file paths + if (scannedImages.length > 0) { + // set the img src, so we can view the first scanned image + const scannedImage = document.getElementById('scannedImage') as HTMLImageElement + scannedImage.src = Capacitor.convertFileSrc(scannedImages[0]) + } +} +``` + +https://user-images.githubusercontent.com/26162804/161643377-cabd7f51-a16f-4f5e-938a-afb6f3b1c8cb.mp4 + +## iOS + +iOS requires the following usage description be added and filled out for your app in `Info.plist`: + +- `NSCameraUsageDescription` (`Privacy - Camera Usage Description`) + +Read about [Configuring `Info.plist`](https://capacitorjs.com/docs/ios/configuration#configuring-infoplist) in the [iOS Guide](https://capacitorjs.com/docs/ios) for more information on setting iOS permissions in Xcode + +## Documentation + + + +- [`scanDocument(...)`](#scandocument) +- [Interfaces](#interfaces) +- [Enums](#enums) + + + + + + +### scanDocument(...) + +```typescript +scanDocument(options?: ScanDocumentOptions | undefined) => Promise +``` + +Opens the camera, and starts the document scan + +| Param | Type | +| ------------- | ------------------------------------------------------------------- | +| **`options`** | ScanDocumentOptions | + +**Returns:** Promise<ScanDocumentResponse> + +--- + +### Interfaces + +#### ScanDocumentResponse + +| Prop | Type | Description | +| ------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| **`scannedImages`** | string[] | This is an array with either file paths or base64 images for the document scan. | +| **`status`** | ScanDocumentResponseStatus | The status lets you know if the document scan completes successfully, or if the user cancels before completing the document scan. | + +#### ScanDocumentOptions + +| Prop | Type | Description | Default | +| ------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| **`croppedImageQuality`** | number | Android only: The quality of the cropped image from 0 - 100. 100 is the best quality. | : 100 | +| **`letUserAdjustCrop`** | boolean | Android only: If true then once the user takes a photo, they get to preview the automatically detected document corners. They can then move the corners in case there needs to be an adjustment. If false then the user can't adjust the corners, and the user can only take 1 photo (maxNumDocuments can't be more than 1 in this case). | : true | +| **`maxNumDocuments`** | number | Android only: The maximum number of photos an user can take (not counting photo retakes) | : 24 | +| **`responseType`** | ResponseType | The response comes back in this format on success. It can be the document scan image file paths or base64 images. | : ResponseType.ImageFilePath | + +### Enums + +#### ScanDocumentResponseStatus + +| Members | Value | Description | +| ------------- | ---------------------- | --------------------------------------------------------------------------------------------------------- | +| **`Success`** | 'success' | The status comes back as success if the document scan completes successfully. | +| **`Cancel`** | 'cancel' | The status comes back as cancel if the user closes out of the camera before completing the document scan. | + +#### ResponseType + +| Members | Value | Description | +| ------------------- | ---------------------------- | ------------------------------------------------------------------------------- | +| **`Base64`** | 'base64' | Use this response type if you want document scan returned as base64 images. | +| **`ImageFilePath`** | 'imageFilePath' | Use this response type if you want document scan returned as inmage file paths. | + + + +## License + +Copyright 2022 David Marcus + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/openai-readmes/WisdomGardenInc_barcode-scanner.md b/openai-readmes/WisdomGardenInc_barcode-scanner.md new file mode 100644 index 0000000..67511bd --- /dev/null +++ b/openai-readmes/WisdomGardenInc_barcode-scanner.md @@ -0,0 +1,24 @@ +

    Barcode Scanner

    +

    @wisdomgarden/barcode-scanner

    +

    + A fast and efficient (QR) barcode scanner for Capacitor. +

    + +## from + +Fork from capacitor-community/barcode-scanner of 1.2.1 +Specific usage check [@capacitor-community/barcode-scanner](https://github.com/capacitor-community/barcode-scanner) + +# v1.1.3 + +feat: + +- scan manual zoom +- scan click focus + +# v1.1.4 + +fix: + +- fix manual zoom bug +- fix scan scaling speed too fast by android diff --git a/openai-readmes/Woody174_CapacitorCustomDevice.md b/openai-readmes/Woody174_CapacitorCustomDevice.md new file mode 100644 index 0000000..ba256cf --- /dev/null +++ b/openai-readmes/Woody174_CapacitorCustomDevice.md @@ -0,0 +1,48 @@ +# @akostdev/device-model + +Get IOS device model + +## Install + +```bash +npm install @akostdev/device-model +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) +- [`getModelInfo()`](#getmodelinfo) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => Promise<{ value: string; }> +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** Promise<{ value: string; }> + +--- + +### getModelInfo() + +```typescript +getModelInfo() => Promise<{ model: string; }> +``` + +**Returns:** Promise<{ model: string; }> + +--- + + diff --git a/openai-readmes/XRFoundation_XREngine.md b/openai-readmes/XRFoundation_XREngine.md new file mode 100644 index 0000000..9fcc82b --- /dev/null +++ b/openai-readmes/XRFoundation_XREngine.md @@ -0,0 +1,150 @@ +![Ethereal Engine logo](https://user-images.githubusercontent.com/5104160/181167947-2cf42b34-7dd6-4e71-b840-c25b8cf850e6.png) + +> Manifest your dreams on the open social spatial web. + +## Table of Contents + +- [Table of Contents](#table-of-contents) +- [Background](#background) +- [Demos](#demos) +- [Project API](#project-api) + - [Library of EE Projects](#library-of-ee-projects) + - [Create your own projects](#create-your-own-projects) +- [Launch Ethereal Engine with Control Center Install - **_RECOMMENDED_**](#launch-ethereal-engine-with-control-center-install---recommended) + - [Use Metaverse Control Plane Managment GUI](#use-metaverse-control-plane-managment-gui) +- [Advanced Development Install](#advanced-development-install) + - [Pre-Requisites](#pre-requisites) + - [Getting Started](#getting-started) +- [Usage](#usage) + - [Documentation](#documentation) +- [Contributing](#contributing) + - [Let's build it together](#lets-build-it-together) + - [Join our Discord ](#join-our-discord--) + - [Sponsorship ](#sponsorship-) +- [License](#license) + +## Background + +https://user-images.githubusercontent.com/507127/142818955-51d7757f-a432-45da-8f8f-56037358ad58.mp4 + +We ([Ethereal Engine](https://github.com/etherealengine)) believe that the Metaverse, +Web AR, VR, and XR should be easy. + +We want a Star Trek future where participating in immersive communication +technology and shared simulations should be as easy and natural as making a website. + +- Includes a self-deployable platform, UI, worlds, avatars, and games +- Fully customizable for any kind of game, social experience, event or spatial web app +- User management, avatars and inventory with optional blockchain integration (see our Blockchain-in-a-Box repo) +- Social features like chat, groups, friends, blocking and moderation +- Complete world editing and administration +- 2D, 3D and XR Avatars with full inverse kinematics and facial expressions +- Fully networked physics using Rapier Physics +- Voice and video over WebRTC +- Instant login and location sharing with phone number or email +- Modular- Use the engine, server, client, editor and scalable devops infrastructure as needed +- OAuth login with Facebook, Google, Steam, Github or instant login with email or phone +- WebGL client deployable to iOS, Android and desktop +- Free, open source, CPAL licensed + +## Demos + +Guest Demos + +- **_[Apartment - CCO from Sketchfab](https://app.etherealengine.com/location/apartment)_** +- **_[Star Station - our dev coommunity hangout](https://app.etherealengine.com/location/sky-station)_** +- **_[Globe Concert Hall - collab with WildCapture.io](https://app.etherealengine.com/location/globe-theater)_** + +Host Demos + +- [Admin Console - Demo Cluster - Request Demo Access on our Discord](https://demo.etherealengine.com/admin) +- [Ethereal Studio - Demo Cluster - Request Demo Access on our Discord](https://demo.etherealengine.com/studio) + +## Project API + +### [Library of EE Projects](https://github.com/EtherealEngine/project-manifest) + +Create composable plug-ins for Ethereal Engine experiences with the Projects API + +### [Create your own projects](https://etherealengine.github.io/etherealengine-docs/docs/concepts/projects_api) + +## Launch Ethereal Engine with Control Center Install - **_RECOMMENDED_** + +### [Use Metaverse Control Plane Managment GUI](https://github.com/etherealengine/etherealengine-Control-Center) + +Best for simple self hosting, advanced editor content creation, and XRProject Pack Project development. + +## Advanced Development Install + +### Pre-Requisites + +To install Ethereal Engine locally, the following pre-reqs are required. + +- Linux (many of us develop on Ubuntu), Mac OS X, or Windows (we recommend WSL2) +- Node.js v16 or later (we recommend installing via [`nvm`](https://github.com/nvm-sh/nvm) + or [`asdf`](https://github.com/asdf-vm/asdf).) +- C++ (for `node-gyp`), Python >=3.6 + [PIP](https://pypi.org/project/pip/), `make` + and other build tools, for compiling Mediasoup. + Although most of Ethereal Engine is written in TypeScript, it uses a [Mediasoup](https://mediasoup.org/) + engine for WebRTC conferencing. See the [Mediasoup install instructions](https://mediasoup.org/documentation/v3/mediasoup/installation/) + for more details. +- Docker. (Although Docker is technically optional, running Ethereal Engine requires starting up + half a dozen different services, and using Docker Compose will make your life dramatically + easier.) +- MariaDB and Redis. (If you're using Docker, containers for MariaDB and Redis + will automatically be started up.) + +### Getting Started + +See the [Installation instructions](https://etherealengine.github.io/etherealengine-docs/docs/installation/) +for more details. + +## Usage + +### Documentation + +- [General Ethereal Engine documentation](https://etherealengine.github.io/etherealengine-docs/docs) +- [Auto-generated (tsdoc) API reference](https://etherealengine.github.io/etherealengine-docs/docs/generated/common/) +- [Avatar, Scene & Asset Pipeline](https://github.com/etherealengine/etherealengine/wiki/Avatar,-Scene-&-Asset-Pipeline) +- [Why are we building Ethereal Engine?](https://etherealengine.github.io/etherealengine-docs/docs/) + +## Contributing + +- We expect contributors and community members to follow our + [Code of Conduct](CODE_OF_CONDUCT.md). +- See the **[Contributing Guide](CONTRIBUTING.md)** and corresponding + [wiki entry](https://github.com/etherealengine/etherealengine/wiki/Contributing) + for more details. +- Version numbering of the Ethereal Engine monorepo follows the + [Semantic versioning](http://semver.org/) approach. +- We use the [Prettier.io](https://prettier.io/) formatter for our code style. +- [Standard Readme](https://github.com/RichardLitt/standard-readme) for + the README structure. + +### Let's build it together + +We believe that projects like this are extremely complex and difficult, and can +only be built when large groups of people work together, out in the open. If you +believe that your calling is to build a free, open network that everyone, +everywhere can get value from, then you are welcome in our community, and we'll +do our best to get you set up. + +We are always hiring talented people who want to be leaders in what is to come. +Inquire with anyone who seems like they know what's going on and they'll help +you find who you need to talk to. + +![msf-member-badge-small](https://user-images.githubusercontent.com/5104160/181168132-57a91f8b-16c9-45f0-a0ee-c89f8f018a80.png) + +### [Join our Discord](https://discord.gg/xrf) [![Discord Chat](https://img.shields.io/discord/692672143053422678.svg)](https://discord.gg/xrf) + +### [Sponsorship](https://opencollective.com/etherealengine) [![Open Collective](https://opencollective.com/etherealengine/tiers/badge.svg)](https://opencollective.com/etherealengine) + +## License + +[CPAL](LICENSE) - Copyright (c) 2021-2023 Ethereal Engine, formerly known as XREngine by XR Foundation + +If you wish to use Ethereal Engine under the open-source CPAL license, attribution is required. +Please see attribution guidelines in the [LICENSE](LICENSE) file. +Other licensing options are available, please contact us for more information. + +[Release History and Author Archive](/HISTORY.md) diff --git a/openai-readmes/XRFoundation_webxr-native.md b/openai-readmes/XRFoundation_webxr-native.md new file mode 100644 index 0000000..fcd39ae --- /dev/null +++ b/openai-readmes/XRFoundation_webxr-native.md @@ -0,0 +1,5 @@ +# Native XR for Web + +An XR polyfill for building native apps to iOS and Android using Capacitor. + +NOTE: This project is under active development and testing. The API was originally designed to serve Capacitor only, and is being rewritten to XR compliance. If you need a cross platform native or iOS browser compatible solution immediately, create a Github issue or email us. diff --git a/openai-readmes/Xiaoxue-Zheng_capacitor-plugins.md b/openai-readmes/Xiaoxue-Zheng_capacitor-plugins.md new file mode 100644 index 0000000..68a9d74 --- /dev/null +++ b/openai-readmes/Xiaoxue-Zheng_capacitor-plugins.md @@ -0,0 +1,39 @@ +# Capacitor Plugins + +This repository contains the official Capacitor plugins maintained by the Capacitor team. You can find more plugins in the [Capacitor Community](https://github.com/capacitor-community/). + +> ### :rotating_light: These plugins are for Capacitor 3 :rotating_light: +> +> Capacitor 2 core plugins are bundled with Capacitor itself. + +## Plugins + +| Package | Source | Version | +| -------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`@capacitor/action-sheet`](https://capacitorjs.com/docs/v3/apis/action-sheet) | [`./action-sheet`](./action-sheet) | [![npm badge](https://img.shields.io/npm/v/@capacitor/action-sheet?style=flat-square)](https://www.npmjs.com/package/@capacitor/action-sheet) | +| [`@capacitor/app-launcher`](https://capacitorjs.com/docs/v3/apis/app-launcher) | [`./app-launcher`](./app-launcher) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app-launcher?style=flat-square)](https://www.npmjs.com/package/@capacitor/app-launcher) | +| [`@capacitor/app`](https://capacitorjs.com/docs/v3/apis/app) | [`./app`](./app) | [![npm badge](https://img.shields.io/npm/v/@capacitor/app?style=flat-square)](https://www.npmjs.com/package/@capacitor/app) | +| [`@capacitor/browser`](https://capacitorjs.com/docs/v3/apis/browser) | [`./browser`](./browser) | [![npm badge](https://img.shields.io/npm/v/@capacitor/browser?style=flat-square)](https://www.npmjs.com/package/@capacitor/browser) | +| [`@capacitor/camera`](https://capacitorjs.com/docs/v3/apis/camera) | [`./camera`](./camera) | [![npm badge](https://img.shields.io/npm/v/@capacitor/camera?style=flat-square)](https://www.npmjs.com/package/@capacitor/camera) | +| [`@capacitor/clipboard`](https://capacitorjs.com/docs/v3/apis/clipboard) | [`./clipboard`](./clipboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/clipboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/clipboard) | +| [`@capacitor/device`](https://capacitorjs.com/docs/v3/apis/device) | [`./device`](./device) | [![npm badge](https://img.shields.io/npm/v/@capacitor/device?style=flat-square)](https://www.npmjs.com/package/@capacitor/device) | +| [`@capacitor/dialog`](https://capacitorjs.com/docs/v3/apis/dialog) | [`./dialog`](./dialog) | [![npm badge](https://img.shields.io/npm/v/@capacitor/dialog?style=flat-square)](https://www.npmjs.com/package/@capacitor/dialog) | +| [`@capacitor/filesystem`](https://capacitorjs.com/docs/v3/apis/filesystem) | [`./filesystem`](./filesystem) | [![npm badge](https://img.shields.io/npm/v/@capacitor/filesystem?style=flat-square)](https://www.npmjs.com/package/@capacitor/filesystem) | +| [`@capacitor/geolocation`](https://capacitorjs.com/docs/v3/apis/geolocation) | [`./geolocation`](./geolocation) | [![npm badge](https://img.shields.io/npm/v/@capacitor/geolocation?style=flat-square)](https://www.npmjs.com/package/@capacitor/geolocation) | +| [`@capacitor/haptics`](https://capacitorjs.com/docs/v3/apis/haptics) | [`./haptics`](./haptics) | [![npm badge](https://img.shields.io/npm/v/@capacitor/haptics?style=flat-square)](https://www.npmjs.com/package/@capacitor/haptics) | +| [`@capacitor/keyboard`](https://capacitorjs.com/docs/v3/apis/keyboard) | [`./keyboard`](./keyboard) | [![npm badge](https://img.shields.io/npm/v/@capacitor/keyboard?style=flat-square)](https://www.npmjs.com/package/@capacitor/keyboard) | +| [`@capacitor/local-notifications`](https://capacitorjs.com/docs/v3/apis/local-notifications) | [`./local-notifications`](./local-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/local-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/local-notifications) | +| [`@capacitor/motion`](https://capacitorjs.com/docs/v3/apis/motion) | [`./motion`](./motion) | [![npm badge](https://img.shields.io/npm/v/@capacitor/motion?style=flat-square)](https://www.npmjs.com/package/@capacitor/motion) | +| [`@capacitor/network`](https://capacitorjs.com/docs/v3/apis/network) | [`./network`](./network) | [![npm badge](https://img.shields.io/npm/v/@capacitor/network?style=flat-square)](https://www.npmjs.com/package/@capacitor/network) | +| [`@capacitor/push-notifications`](https://capacitorjs.com/docs/v3/apis/push-notifications) | [`./push-notifications`](./push-notifications) | [![npm badge](https://img.shields.io/npm/v/@capacitor/push-notifications?style=flat-square)](https://www.npmjs.com/package/@capacitor/push-notifications) | +| [`@capacitor/screen-reader`](https://capacitorjs.com/docs/v3/apis/screen-reader) | [`./screen-reader`](./screen-reader) | [![npm badge](https://img.shields.io/npm/v/@capacitor/screen-reader?style=flat-square)](https://www.npmjs.com/package/@capacitor/screen-reader) | +| [`@capacitor/share`](https://capacitorjs.com/docs/v3/apis/share) | [`./share`](./share) | [![npm badge](https://img.shields.io/npm/v/@capacitor/share?style=flat-square)](https://www.npmjs.com/package/@capacitor/share) | +| [`@capacitor/splash-screen`](https://capacitorjs.com/docs/v3/apis/splash-screen) | [`./splash-screen`](./splash-screen) | [![npm badge](https://img.shields.io/npm/v/@capacitor/splash-screen?style=flat-square)](https://www.npmjs.com/package/@capacitor/splash-screen) | +| [`@capacitor/status-bar`](https://capacitorjs.com/docs/v3/apis/status-bar) | [`./status-bar`](./status-bar) | [![npm badge](https://img.shields.io/npm/v/@capacitor/status-bar?style=flat-square)](https://www.npmjs.com/package/@capacitor/status-bar) | +| [`@capacitor/storage`](https://capacitorjs.com/docs/v3/apis/storage) | [`./storage`](./storage) | [![npm badge](https://img.shields.io/npm/v/@capacitor/storage?style=flat-square)](https://www.npmjs.com/package/@capacitor/storage) | +| [`@capacitor/text-zoom`](https://capacitorjs.com/docs/v3/apis/text-zoom) | [`./text-zoom`](./text-zoom) | [![npm badge](https://img.shields.io/npm/v/@capacitor/text-zoom?style=flat-square)](https://www.npmjs.com/package/@capacitor/text-zoom) | +| [`@capacitor/toast`](https://capacitorjs.com/docs/v3/apis/toast) | [`./toast`](./toast) | [![npm badge](https://img.shields.io/npm/v/@capacitor/toast?style=flat-square)](https://www.npmjs.com/package/@capacitor/toast) | + +## Contributing + +See [`CONTRIBUTING.md`](./CONTRIBUTING.md). diff --git a/openai-readmes/YES-MARKETING-LDA_msal-capacitor-plugin.md b/openai-readmes/YES-MARKETING-LDA_msal-capacitor-plugin.md new file mode 100644 index 0000000..f4413d8 --- /dev/null +++ b/openai-readmes/YES-MARKETING-LDA_msal-capacitor-plugin.md @@ -0,0 +1,54 @@ +# wgbn-msal-capacitor-plugin + +MSAL capacitor plugin + +WARNING: Work only with android + +## Install + +```bash +npm install msal-capacitor-plugin +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) +- [`loginWithMsAD(...)`](#loginwithmsad) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => any +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** any + +--- + +### loginWithMsAD(...) + +```typescript +loginWithMsAD(options: any) => any +``` + +| Param | Type | +| ------------- | ---------------- | +| **`options`** | any | + +**Returns:** any + +--- + + diff --git a/openai-readmes/Yagnik031_Facebook-ads.md b/openai-readmes/Yagnik031_Facebook-ads.md new file mode 100644 index 0000000..18a708b --- /dev/null +++ b/openai-readmes/Yagnik031_Facebook-ads.md @@ -0,0 +1,52 @@ +# facebook-ads + +to create facebook ads this plugin will help... + +## Install + +```bash +npm install facebook-ads +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) +- [`createBanner(...)`](#createbanner) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => Promise<{ value: string; }> +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** Promise<{ value: string; }> + +--- + +### createBanner(...) + +```typescript +createBanner(options: any) => Promise +``` + +| Param | Type | +| ------------- | ---------------- | +| **`options`** | any | + +**Returns:** Promise<boolean> + +--- + + diff --git a/openai-readmes/Yagnik031_cap-plugins.md b/openai-readmes/Yagnik031_cap-plugins.md new file mode 100644 index 0000000..9f476d0 --- /dev/null +++ b/openai-readmes/Yagnik031_cap-plugins.md @@ -0,0 +1,179 @@ +# scanner + +this plugin is combo of flash-light && scanner + +## Install + +```bash +npm install scanner +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) +- [`isAvailable()`](#isavailable) +- [`switchOn(...)`](#switchon) +- [`switchOff()`](#switchoff) +- [`isSwitchedOn()`](#isswitchedon) +- [`prepare()`](#prepare) +- [`hideBackground()`](#hidebackground) +- [`showBackground()`](#showbackground) +- [`startScan()`](#startscan) +- [`stopScan()`](#stopscan) +- [`checkPermission(...)`](#checkpermission) +- [`openAppSettings()`](#openappsettings) +- [Interfaces](#interfaces) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => Promise<{ value: string; }> +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** Promise<{ value: string; }> + +--- + +### isAvailable() + +```typescript +isAvailable() => Promise<{ value: boolean; }> +``` + +**Returns:** Promise<{ value: boolean; }> + +--- + +### switchOn(...) + +```typescript +switchOn(options: { intensity?: number; }) => Promise +``` + +| Param | Type | +| ------------- | ------------------------------------ | +| **`options`** | { intensity?: number; } | + +--- + +### switchOff() + +```typescript +switchOff() => Promise +``` + +--- + +### isSwitchedOn() + +```typescript +isSwitchedOn() => Promise<{ value: boolean; }> +``` + +**Returns:** Promise<{ value: boolean; }> + +--- + +### prepare() + +```typescript +prepare() => Promise +``` + +--- + +### hideBackground() + +```typescript +hideBackground() => Promise +``` + +--- + +### showBackground() + +```typescript +showBackground() => Promise +``` + +--- + +### startScan() + +```typescript +startScan() => Promise +``` + +**Returns:** Promise<ScanResult> + +--- + +### stopScan() + +```typescript +stopScan() => Promise +``` + +--- + +### checkPermission(...) + +```typescript +checkPermission(options: CheckPermissionOptions) => Promise +``` + +| Param | Type | +| ------------- | ------------------------------------------------------------------------- | +| **`options`** | CheckPermissionOptions | + +**Returns:** Promise<CheckPermissionResult> + +--- + +### openAppSettings() + +```typescript +openAppSettings() => Promise +``` + +--- + +### Interfaces + +#### ScanResult + +| Prop | Type | +| ---------------- | -------------------- | +| **`hasContent`** | boolean | +| **`content`** | string | + +#### CheckPermissionResult + +| Prop | Type | +| ---------------- | -------------------- | +| **`granted`** | boolean | +| **`denied`** | boolean | +| **`asked`** | boolean | +| **`neverAsked`** | boolean | +| **`restricted`** | boolean | +| **`unknown`** | boolean | + +#### CheckPermissionOptions + +| Prop | Type | +| ----------- | -------------------- | +| **`force`** | boolean | + + diff --git a/openai-readmes/Yagnik031_capacitor-plugins.md b/openai-readmes/Yagnik031_capacitor-plugins.md new file mode 100644 index 0000000..bc69aab --- /dev/null +++ b/openai-readmes/Yagnik031_capacitor-plugins.md @@ -0,0 +1,81 @@ +# yagnik-flashlight + +this is flash light plugin + +## Install + +```bash +npm install yagnik-flashlight +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) +- [`isAvailable()`](#isavailable) +- [`switchOn(...)`](#switchon) +- [`switchOff()`](#switchoff) +- [`isSwitchedOn()`](#isswitchedon) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => Promise<{ value: string; }> +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** Promise<{ value: string; }> + +--- + +### isAvailable() + +```typescript +isAvailable() => Promise<{ value: boolean; }> +``` + +**Returns:** Promise<{ value: boolean; }> + +--- + +### switchOn(...) + +```typescript +switchOn(options: { intensity?: number; }) => Promise +``` + +| Param | Type | +| ------------- | ------------------------------------ | +| **`options`** | { intensity?: number; } | + +--- + +### switchOff() + +```typescript +switchOff() => Promise +``` + +--- + +### isSwitchedOn() + +```typescript +isSwitchedOn() => Promise<{ value: boolean; }> +``` + +**Returns:** Promise<{ value: boolean; }> + +--- + + diff --git a/openai-readmes/Yagnik031_contact-plugin.md b/openai-readmes/Yagnik031_contact-plugin.md new file mode 100644 index 0000000..37e9810 --- /dev/null +++ b/openai-readmes/Yagnik031_contact-plugin.md @@ -0,0 +1,52 @@ +# yagnik-contacts + +this plugin will fetch your contacts from your device. + +## Install + +```bash +npm install yagnik-contacts +npx cap sync +``` + +## API + + + +- [`echo(...)`](#echo) +- [`getContacts(...)`](#getcontacts) + + + + + + +### echo(...) + +```typescript +echo(options: { value: string; }) => Promise<{ value: string; }> +``` + +| Param | Type | +| ------------- | ------------------------------- | +| **`options`** | { value: string; } | + +**Returns:** Promise<{ value: string; }> + +--- + +### getContacts(...) + +```typescript +getContacts(filter: string) => Promise<{ results: any[]; }> +``` + +| Param | Type | +| ------------ | ------------------- | +| **`filter`** | string | + +**Returns:** Promise<{ results: any[]; }> + +--- + + diff --git a/openai-readmes/ZimbaroosGeeks_paytm-allinonesdk-capacitor.md b/openai-readmes/ZimbaroosGeeks_paytm-allinonesdk-capacitor.md new file mode 100644 index 0000000..097e6ce --- /dev/null +++ b/openai-readmes/ZimbaroosGeeks_paytm-allinonesdk-capacitor.md @@ -0,0 +1,42 @@ +# capacitor-paytm-allinonesdk + +capacitor plugin for paytm payment gateway + +# Steps to install capacitor-paytm-allinonesdk plugin for android + +1. install plugin using + +``` + npm i capacitor-paytm-allinonesdk +``` + +2. import **in.zimbaroosgeeks.paytmAllinonesdk.AllInOneSDK** and add **add(AllInOneSDK.class)** to the init function of **MainActivity.java** located at project-root/android/app/src/main/java/**your-package-name** + +3. Add the line below to ‘repositories’ section of your project-root/android/build.gradle. + +``` +allprojects { + repositories { + ... + maven { + url "https://artifactory.paytm.in/libs-release-local" + } + } +} +``` + +4. Add the line below to 'dependencies' section of your project-root/android/app/build.gradle. + +``` +implementation 'com.paytm.appinvokesdk:appinvokesdk:1.5.3' +``` + +# Steps to use capacitor-paytm-allinonesdk plugin + +``` + import { Plugins } from '@capacitor/core'; + import 'capacitor-paytm-allinonesdk'; + import { PaymentIntentModel } from 'capacitor-paytm-allinonesdk'; + + const { AllInOneSDK } = Plugins; +``` diff --git a/openai-readmes/abishekilango-wayfwd_capacitor-secure-storage-plugin.md b/openai-readmes/abishekilango-wayfwd_capacitor-secure-storage-plugin.md new file mode 100644 index 0000000..f075b6a --- /dev/null +++ b/openai-readmes/abishekilango-wayfwd_capacitor-secure-storage-plugin.md @@ -0,0 +1,129 @@ +# capacitor-secure-storage-plugin + +Capacitor plugin for storing string values securly on iOS and Android. + +## How to install + +For Capacitor v3 + +``` +npm install @abishekilango-wayfwd/capacitor-secure-storage-plugin +``` + +For Capacitor v2 - install with fixed version 0.5.1 + +``` +npm install @abishekilango-wayfwd/capacitor-secure-storage-plugin@0.5.1 +``` + +## Usage + +For Capacitor v3 + +In a component where you want to use this plugin add to or modify imports: + +``` +import { SecureStoragePlugin } from '@abishekilango-wayfwd/capacitor-secure-storage-plugin'; +``` + +For Capacitor v2 + +In a component where you want to use this plugin add to or modify imports: + +``` +import '@abishekilango-wayfwd/capacitor-secure-storage-plugin'; +import { Plugins } from '@capacitor/core'; + +const { SecureStoragePlugin } = Plugins; +``` + +First line is needed because of web part of the plugin (current behavior of Capacitor, this may change in future releases). + +### Android + +In Android you have to register plugins manually in MainActivity class of your app. + +https://capacitor.ionicframework.com/docs/plugins/android/#export-to-capacitor + +``` +import com.whitestein.securestorage.SecureStoragePlugin; + +... + +public class MainActivity extends BridgeActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Initializes the Bridge + this.init(savedInstanceState, new ArrayList>() {{ + // Additional plugins you've installed go here + // Ex: add(TotallyAwesomePlugin.class); + add(SecureStoragePlugin.class); + }}); + } +} +``` + +## Methods + +- **get**(options: { key: string }): Promise<{ value: string }> + - if item with specified key does not exist, throws an Error + +* **keys**(): Promise<{ value: string[] }> +* **set**(options: { key: string; value: string }): Promise<{ value: boolean }> +* **remove**(options: { key: string }): Promise<{ value: boolean }> +* **clear**(): Promise<{ value: boolean }> + - set, remove and clear return true in case of success and false in case of error + +- **getPlatform**(): Promise<{ value: string }> + - returns which implementation is used - one of 'web', 'ios' or 'android' + +## Example + +``` +const key = 'username'; +const value = 'hellokitty2'; + +SecureStoragePlugin.set({ key, value }) + .then(success => console.log(success)) +``` + +``` +const key = 'username'; +SecureStoragePlugin.get({ key }) + .then(value => { + console.log(value); + }) + .catch(error => { + console.log('Item with specified key does not exist.'); + }); +``` + +``` +async getUsername(key: string) { + return await SecureStoragePlugin.get({ key }); +} +``` + +## Platform specific information + +### iOS + +This plugin uses SwiftKeychainWrapper under the hood for iOS. + +##### Warning + +Up to version v0.4.0 there was standard keychain used. Since v0.5.0 there is separate keychain wrapper, so keys() method returns only keys set in v0.5.0 or higher version. + +### Android + +On Android it is implemented by AndroidKeyStore and SharedPreferences. Source: [Apriorit](https://www.apriorit.com/dev-blog/432-using-androidkeystore) + +##### Warning + +For Android API < 18 values are stored as simple base64 encoded strings. + +### Web + +There is no secure storage in browser (not because it is not implemented by this plugin, but it does not exist at all). Values are stored in LocalStorage, but they are at least base64 encoded. Plugin adds 'cap*sec*' prefix to keys to avoid conflicts with other data stored in LocalStorage. diff --git a/openai-readmes/abritopach_capacitor-heatmap.md b/openai-readmes/abritopach_capacitor-heatmap.md new file mode 100644 index 0000000..cedb32d --- /dev/null +++ b/openai-readmes/abritopach_capacitor-heatmap.md @@ -0,0 +1,477 @@ +![Built With Capacitor](https://img.shields.io/badge/-Built%20With%20Capacitor-16161d.svg?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI%2BCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI%2BCgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU%2BCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MjQuNywzNzMuOWMwLDM3LjYtNTUuMSw2OC42LTkyLjcsNjguNkgxODAuNGMtMzcuOSwwLTkyLjctMzAuNy05Mi43LTY4LjZ2LTMuNmgzMzYuOVYzNzMuOXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTQyNC43LDI5Mi4xSDE4MC40Yy0zNy42LDAtOTIuNy0zMS05Mi43LTY4LjZ2LTMuNkgzMzJjMzcuNiwwLDkyLjcsMzEsOTIuNyw2OC42VjI5Mi4xeiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDI0LjcsMTQxLjdIODcuN3YtMy42YzAtMzcuNiw1NC44LTY4LjYsOTIuNy02OC42SDMzMmMzNy45LDAsOTIuNywzMC43LDkyLjcsNjguNlYxNDEuN3oiLz4KPC9zdmc%2BCg%3D%3D&colorA=16161d&style=flat-square) + +# CapacitorHeatmap + +[![Ask me anything](https://img.shields.io/badge/ask%20me-anything-1abc9c.svg)](https://github.com/abritopach) [![Version](https://img.shields.io/npm/v/capacitor-heatmap.svg)](https://www.npmjs.com/package/capacitor-heatmap) +[![Downloads](https://img.shields.io/npm/dt/capacitor-heatmap.svg)](https://www.npmjs.com/package/capacitor-heatmap) [![License](https://img.shields.io/github/license/abritopach/capacitor-heatmap.svg)](https://github.com/abritopach/capacitor-heatmap/blob/master/LICENSE) + +**If this project has been useful to you and you want to help me to keep contributing to the open source with projects, examples, plugins,... collaborate and buy me a coffee.** + +Buy Me A Coffee + +Capacitor Heatmap is a custom Native Capacitor plugin to show Heatmap on Web, IOS and Android platforms. + +Currently you can choose from **four types** of heatmaps with only one plugin :) (only WEB at this moment): + + + + + + + + + + + + + + +
    Simple HeatmapGoogle Maps HeatmapLeaflet Maps HeatmapMapbox Maps Heatmap
    + +## Simple Heatmap + +![SimpleHeatmap](readme_resources/simple_heatmap.gif 'SimpleHeatmap') + +![ColorScale](readme_resources/color_scale.gif 'ColorScale') + +## Google Maps Heatmap + +![GoogleMapsHeatmap](readme_resources/google_maps_heatmap.gif 'GoogleMapsHeatmap') + +## Leaflet Maps Heatmap + +![LeafletMapsHeatmap](readme_resources/leaflet_maps_heatmap.gif 'LeafletMapsHeatmap') + +## Mapbox Maps Heatmap + +![MapboxMapsHeatmap](readme_resources/mapbox_maps_heatmap.gif 'MapboxMapsHeatmap') + +# Capacitor + +Capacitor is a cross-platform API and code execution layer that makes it easy to call Native SDKs from web code and to write custom Native plugins that your app might need. Additionally, Capacitor provides first-class Progressive Web App support so you can write one app and deploy it to the app stores, and the mobile web. + +Capacitor is being designed by the Ionic Framework team as an eventual alternative to Cordova, though backwards compatibility with Cordova plugins is a priority and is actively being worked on. Capacitor can be used without Ionic Framework, but soon it'll become a core part of the Ionic developer experience. + +Capacitor also comes with a Plugin API for building native plugins. On iOS, first-class Swift support is available, and much of the iOS Capacitor runtime is written in Swift. Plugins may also be written in Objective-C. On Android, support for writing plugins with Java and Kotlin is supported. + +## Capacitor Heatmap WEB Interfaces & Types + +```bash + +INTERFACES & TYPES + +/** + * Description [Interface to define heatmap logs.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface HeatmapLog { + log(primaryMessage: string, ...supportingData: any[]): void; + debug(primaryMessage: string, ...supportingData: any[]): void; + warn(primaryMessage: string, ...supportingData: any[]): void; + error(primaryMessage: string, ...supportingData: any[]): void; + info(primaryMessage: string, ...supportingData: any[]): void; +} + +/** + * Description [Interface to define color scale options.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface ColorScale { + show: boolean; + position?: { + vertical: VerticalPosition; + horizontal: HorizontalPosition; + }; + boxShadow?: string; + text?: { + start?: string; + end?: string; + color?: string; + }, + background?: string; + gradientColorMode?: 'original' | 'inverted' +} + +/** + * Description [Interface to define color scale styles.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface ColorScaleStyles { + width: number; + height: number; + borderRadius: string; + position: string; + zIndex: string; + marginTop: string; + margin: string; + padding: string; + boxShadow: string; + fillTextStart: string; + fillTextEnd: string; + fillTextColor: string; + background: string; +} + +/** + * Description [Interface to define simple heatmap initialize options.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface HeatmapOptions { + element: string; + type: HeatmapType; + data?: HeatmapData; + debug?: boolean; + colorScale?: ColorScale; +} + +/** + * Description [Interface to define simple heatmap point.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface Coordinate { + x: number; + y: number; +} + +/** + * Description [Interface to define simple heatmap point.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface Point { + x: number; + y: number; + thickness: number; +} + +export enum HeatmapType { + Simple = 'simple', + GoogleMaps = 'googlemaps', + LeafletMaps = 'leafletmaps', + MapboxMaps = 'mapboxmaps' +} + +/** + * Description [Interface to define heatmap draw options.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface HeatmapDrawOptions { + opacity?: number, + radius?: number, + gradient?: HeatmapGradient | GMHeatmapGradient + data?: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData +} + +export type HeatmapGradient = Record; +export type HeatmapPoint = number[] | Point; +export type HeatmapPosition = number[] | Coordinate; +export type HeatmapData = (number[] | Point)[]; + +/** + * Description [Interface to define google maps heatmap initialize options.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface GMHeatmapOptions { + map: google.maps.Map; + type: HeatmapType; + data?: GMHeatmapData; + debug?: boolean; +} + +export type GMHeatmapGradient = string[]; +export type GMHeatmapPoint = google.maps.LatLng | google.maps.visualization.WeightedLocation; +export type GMHeatmapCoordinate = google.maps.LatLng; +export type GMHeatmapData = google.maps.MVCArray; + + +/** + * Description [Interface to define leaflet maps heatmap initialize options.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface LMHeatmapOptions { + map: Map; + type: HeatmapType; + data?: LMHeatmapData; + debug?: boolean; +} + +export type LMHeatmapData = LatLngExpression[]; +export type LMHeatmapPoint = LatLngExpression; +export type LMHeatmapCoordinate = LatLngTuple; + +/** + * Description [Interface to define mapbox maps heatmap initialize options.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface MapboxHeatmapOptions { + map: mapboxgl.Map; + type: HeatmapType; + data?: MapboxHeatmapData; + debug?: boolean; +} + +/** + * Description [Interface to define location.] + * + * @author abrito + * @version 0.0.1 + * + * @interface +*/ +export interface Location { + lat: number; + long: number; + thickness?: number; +} + +export type MapboxHeatmapData = (number[] | Location)[]; +export type MapBoxHeatmapPoint = Location; +export type MapboxHeatmapCoordinate = [number, number] | Location; + +``` + +## Capacitor Heatmap WEB public API methods. + +### `initialize(options: IHeatmapOptions | IGMHeatmapOptions | ILMHeatmapOptions | MapboxHeatmapOptions): Promise<{value: HTMLCanvasElement | google.maps.visualization.HeatmapLayer | mapboxgl.Map}>` + +```bash +Initialize heatmap. + +async initializeHeatmap() { + const options = {element: 'your-element-id', debug: true}}; + const result = await Heatmap.initialize(options); + console.log('result', result); +} + +``` + +#### Returns + +Type: `Promise<{value: HTMLCanvasElement | google.maps.visualization.HeatmapLayer | mapboxgl.Map}>` + +### `destroy(): Promise<{value: HTMLCanvasElement | google.maps.visualization.HeatmapLayer}>` + +```bash +Destroy heatmap. + +async destroyHeatmap() { + const result = await Heatmap.destroy(); + console.log('result', result); +} + +``` + +### 📈 Methods for handling heatmap data. + +### `setData(data: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData): Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +```bash +Set heatmap data of [[x, y, thickness], ...] or [{x: value, y: value, thickness: value},...] format. + +const d = await Heatmap.setData(this.data); + +``` + +#### Returns + +Type: `Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +### `getData(): Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +```bash +Get heatmap data of [[x, y, thickness], ...] format. + +const d = await Heatmap.getData(); + +``` + +#### Returns + +Type: `Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +### ` getValueAt(position: HeatmapPosition | GMHeatmapCoordinate | LMHeatmapCoordinate | MapboxHeatmapCoordinate): Promise<{value: number}>` + +```bash +Returns value at datapoint position. + +const result = await Heatmap.getValueAt([10, 10]); // x = 10 & y = 10 + +``` + +#### Returns + +Type: `Promise<{value: number}>` + +### `clearData(): Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +```bash +Clear heatmap data. + +const d = await Heatmap.clearData(); + +``` + +#### Returns + +Type: `Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +### `addPoint(point: HeatmapPoint | GMHeatmapPoint | LMHeatmapPoint | MapBoxHeatmapPoint): Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +```bash +Add new point to heatmap data. + +canvas.onmousemove = (e) => { + const rect = canvas.getBoundingClientRect(); + const resultAddPoint = Heatmap.addPoint([e.clientX - rect.left, e.clientY - rect.top, 18]); + window.requestAnimationFrame(this.drawHeatmap); +}; + +``` + +#### Returns + +Type: `Promise<{value: HeatmapData | GMHeatmapData | LMHeatmapData | MapboxHeatmapData}>` + +### `setMax(max: number): Promise<{value: number}>` + +```bash +Set max data value (1 by default). + +const newMax = Heatmap.setMax(18); + +``` + +### 🎨 Methods for rendering heatmap. + +### `draw(options: IHeatmapDrawOptions): Promise<{value: boolean}>` + +```bash +Draw heatmap. + +async drawHeatmap(data) { + const options = {data}; + const result = await Heatmap.draw(options); +} + +``` + +#### Returns + +Type: `Promise<{value: boolean}>` + +### 🖌️ Methods for handling heatmap appearance. + +### `resize(options: {width: number, height: number}): Promise<{value: {newWidth: number, newHeight: number}}>` + +```bash +Resize heatmap canvas. + +async resizeHeatmap(width: number, height: number) { + const options = {width, height}; + const resultResize = await Heatmap.resize(options); + console.log('result resize', resultResize); +} + +``` + +#### Returns + +Type: `Promise<{value: {newWidth: number, newHeight: number}}>` + +### `gradient(grad: HeatmapGradient | GMHeatmapGradient): Promise<{value: Uint8ClampedArray | GMHeatmapGradient}>` + +```bash +Set gradient colors as HeatmapGradient. + +const resultGradient = await Heatmap.gradient(grad); + +``` + +#### Returns + +Type: `Promise<{value: Uint8ClampedArray | GMHeatmapGradient}>` + +### `opacity(opa: number): Promise<{value: number}>` + +```bash +Set the opacity of the heatmap, expressed as a number between 0 and 1. + +const resultOpacity = await Heatmap.opacity(opa); + +``` + +#### Returns + +Type: `Promise<{value: number}>` + +### `radius(rad: number): Promise<{value: number}>` + +```bash +Set the radius of the heatmap. + +const resultRadius = await Heatmap.radius(rad); + +``` + +#### Returns + +Type: `Promise<{value: number}>` + +### 📸 Method to obtain the image of the canvas. + +### `getDataURL(type: string, imageQuality: number): Promise<{value: string}>` + +```bash +Returns dataURL string. The returned value is the base64 encoded dataURL of the heatmap instance. + +const resultDataUrl = await Heatmap.getDataURL('image/jpeg', 0.5); + +``` + +#### Returns + +Type: `Promise<{value: string}>` + +# TODO + +- Simple Heatmap, Google Maps Heatmap, Leaflet Maps Heaptmap & Mapbox Maps Heatmap for ANDROID. +- Simple Heatmap, Google Maps Heatmap, Leaflet Maps Heaptmap & Mapbox Maps Heatmap for IOS. diff --git a/openai-readmes/abritopach_capacitor-youtube-player.md b/openai-readmes/abritopach_capacitor-youtube-player.md new file mode 100644 index 0000000..4ac59f0 --- /dev/null +++ b/openai-readmes/abritopach_capacitor-youtube-player.md @@ -0,0 +1,295 @@ +![Built With Capacitor](https://img.shields.io/badge/-Built%20With%20Capacitor-16161d.svg?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI%2BCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI%2BCgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU%2BCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MjQuNywzNzMuOWMwLDM3LjYtNTUuMSw2OC42LTkyLjcsNjguNkgxODAuNGMtMzcuOSwwLTkyLjctMzAuNy05Mi43LTY4LjZ2LTMuNmgzMzYuOVYzNzMuOXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTQyNC43LDI5Mi4xSDE4MC40Yy0zNy42LDAtOTIuNy0zMS05Mi43LTY4LjZ2LTMuNkgzMzJjMzcuNiwwLDkyLjcsMzEsOTIuNyw2OC42VjI5Mi4xeiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDI0LjcsMTQxLjdIODcuN3YtMy42YzAtMzcuNiw1NC44LTY4LjYsOTIuNy02OC42SDMzMmMzNy45LDAsOTIuNywzMC43LDkyLjcsNjguNlYxNDEuN3oiLz4KPC9zdmc%2BCg%3D%3D&colorA=16161d&style=flat-square) + +# CapacitorYoutubePlayer + +[![Ask me anything](https://img.shields.io/badge/ask%20me-anything-1abc9c.svg)](https://github.com/abritopach) [![Version](https://img.shields.io/npm/v/capacitor-youtube-player.svg)](https://www.npmjs.com/package/capacitor-youtube-player) +[![Downloads](https://img.shields.io/npm/dt/capacitor-youtube-player.svg)](https://www.npmjs.com/package/capacitor-youtube-player) [![License](https://img.shields.io/github/license/abritopach/capacitor-youtube-player.svg)](https://github.com/abritopach/capacitor-youtube-player/blob/master/LICENSE) + +**If this project has been useful to you and you want to help me to keep contributing to the open source with projects, examples, plugins,... collaborate and buy me a coffee.** + +Buy Me A Coffee + +Capacitor Youtube Player is a custom Native Capacitor plugin to show Youtube Player on Web, IOS and Android platforms. + +![Technologies](readme_resources/technologies.jpg 'Technologies') + +# Capacitor + +Capacitor is a cross-platform API and code execution layer that makes it easy to call Native SDKs from web code and to write custom Native plugins that your app might need. Additionally, Capacitor provides first-class Progressive Web App support so you can write one app and deploy it to the app stores, and the mobile web. + +Capacitor is being designed by the Ionic Framework team as an eventual alternative to Cordova, though backwards compatibility with Cordova plugins is a priority and is actively being worked on. Capacitor can be used without Ionic Framework, but soon it'll become a core part of the Ionic developer experience. + +Capacitor also comes with a Plugin API for building native plugins. On iOS, first-class Swift support is available, and much of the iOS Capacitor runtime is written in Swift. Plugins may also be written in Objective-C. On Android, support for writing plugins with Java and Kotlin is supported. + +## Plugin preview + +![Ionic App](readme_resources/ionic_app.gif 'App') + +![App](readme_resources/app.gif 'App') + +## Plugin log mode + +When initializing a youtube player you can enable debug mode to display the logs in the console. + +```bash + async initializeYoutubePlayerPluginWeb() { + const options = {playerId: 'youtube-player', playerSize: {width: 640, height: 360}, videoId: 'tDW2C6rcH6M', debug: true}; + const result = await YoutubePlayerWeb.initialize(options); + } +``` + +## Methods available + +## WEB + +**IMPORTANT NOTE** + +--- + +### Autoplay + +Currently most browsers **do not support autoplay unless the video is loaded without sound.** + +This is the behaviour of the web plugin if you pass a value of 1 in the autoplay parameter of playerVars. +The video will start playing but without sound. + +```bash + ... + playerVars: { + autoplay: 1, + rel: 0, + color: 'white', + showinfo: 1, + }, + ... +``` + +You can read more about the autoplay policy in different browsers by clicking on the following links: + +[Google Chrome](https://developer.chrome.com/blog/autoplay/) + +[Firefox](https://blog.mozilla.org/en/products/firefox/block-autoplay/) + +### Fullscreen + +To display a video in full screen, **user interaction is required**... either by clicking on the play button, another button,... + +You can read more about the fullscreen policy in different browsers by clicking on the following links: + +[Google Chrome](https://developers.google.com/web/fundamentals/native-hardware/fullscreen) + +--- + +| Functionality | Methods | Description | Expects | Returns | +| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------------------- | +| Load player API & Create Player & Destroy Player | `initialize(options: {playerId: string, playerSize: IPlayerSize, playerVars?: IPlayerVars, videoId: string, debug?: boolean})` | Promise - Load player API & create player. | JSON Object | data | +| Load player API & Create Player & Destroy Player | ` destroy(playerId: string)` | Promise - Destroy player | string | data | +| Playback controls and player settings | `stopVideo(playerId: string)` | Promise - Stops and cancels loading of the current video. This function should be reserved for rare situations when you know that the user will not be watching additional video in the player. If your intent is to pause the video, you should just call the pauseVideo function. If you want to change the video that the player is playing, you can call one of the queueing functions without calling stopVideo first. | string | data | +| Playback controls and player settings | `playVideo(playerId: string)` | Promise - Plays the currently cued/loaded video. The final player state after this function executes will be playing (1). | string | data | +| Playback controls and player settings | `pauseVideo(playerId: string)` | Promise - Pauses the currently playing video. The final player state after this function executes will be paused (2) unless the player is in the ended (0) state when the function is called, in which case the player state will not change. | string | data | +| Playback controls and player settings | `seekTo(playerId: string, seconds: number, allowSeekAhead: boolean)` | Promise - Seeks to a specified time in the video. If the player is paused when the function is called, it will remain paused. If the function is called from another state (playing, video cued, etc.), the player will play the video. | string, number, boolean | data | +| Playback controls and player settings | `loadVideoById(playerId: string, options: {videoId: string, startSeconds?: number, endSeconds?: number, suggestedQuality?: string})` | Promise - Loads and plays the specified video. | string, JSON Object | data | +| Playback controls and player settings | `cueVideoById(playerId: string, options: {videoId: string, startSeconds?: number, endSeconds?: number, suggestedQuality?: string})` | Promise - Loads the specified video's thumbnail and prepares the player to play the video. The player does not request the FLV until playVideo() or seekTo() is called. | string, JSON Object | data | +| Changing the player volume | `mute(playerId: string)` | Promise - Mutes the player. | string | data | +| Changing the player volume | `unMute(playerId: string)` | Promise - Unmutes the player. | string | data | +| Changing the player volume | `isMuted(playerId: string)` | Promise - Returns true if the player is muted, false if not. | string | data | +| Changing the player volume | `setVolume(playerId: string, volume: Number)` | Promise - Sets the volume. Accepts an integer between 0 and 100. | string, number | data | +| Changing the player volume | `getVolume(playerId: string)` | Promise - Returns the player's current volume, an integer between 0 and 100. Note that getVolume() will return the volume even if the player is muted. | string | data | +| Setting the player size | `setSize(playerId: string, width:Number, height:Number)` | Promise - Sets the size in pixels of the