{"_id":"@doorstepai/dropoff-sdk-capacitor","_rev":"10-897690fbaae4a252f0fdc485bd540054","name":"@doorstepai/dropoff-sdk-capacitor","dist-tags":{"latest":"2.2.6"},"versions":{"1.0.0":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"1.0.0","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","_id":"@doorstepai/dropoff-sdk-capacitor@1.0.0","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"}],"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"dist":{"shasum":"120bf843e1f744786a573280bdf94ca5a15168bd","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-1.0.0.tgz","fileCount":57,"integrity":"sha512-I3lzinp2lYiO/Otu74i4hWj6qs2g5h6GFt2gvhAfN+c4YHWsvVFcb0K4Jxb4dqbA89PnbkF7oCKe5hyfjokZPQ==","signatures":[{"sig":"MEQCIBLoBiiUowEaicu+nOovO3qOJq/azod974RDiguUlun/AiAka1h5yK8ml9YWgCALC2W3ALyLuS2h4MhRTam+REcFEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16511995},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"3ea3c5efb5b1327477ce7a8ecf625b11e955a5cb","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.js","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","directories":{},"_nodeVersion":"20.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","rollup":"^4.18.0","prettier":"~3.3.3","swiftlint":"^2.0.0","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"~2.6.4","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dropoff-sdk-capacitor_1.0.0_1778464322994_0.9956372333845462","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"1.0.1","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","_id":"@doorstepai/dropoff-sdk-capacitor@1.0.1","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"}],"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"dist":{"shasum":"205a5235278f4a1b16982fd403f3f11f53e1324f","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-1.0.1.tgz","fileCount":57,"integrity":"sha512-S0LK26yxEmTQRhgbW37YuRyfydEJ31/tKYQekzIFShVIX0VATpUCwPfhzQcLgKgLAgq4isSx2xDHceuahPsqCg==","signatures":[{"sig":"MEYCIQC2pqHbHbqjBPWQBlp8dpdScgKKoz8LvK2lvIIg1Stl3AIhANlFMwhd5yXTEOqhD1/d3RWpADVrcjEABMkBZm2H3N9j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16676126},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"fa64afbe031f74a5ef530fce9b0c7a41269f866e","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","directories":{},"_nodeVersion":"20.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","rollup":"^4.18.0","prettier":"~3.3.3","swiftlint":"^2.0.0","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"~2.6.4","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dropoff-sdk-capacitor_1.0.1_1779931288689_0.17406363222612287","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"1.0.2","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","_id":"@doorstepai/dropoff-sdk-capacitor@1.0.2","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"}],"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"dist":{"shasum":"80a5a3b1a9d5fb6ba74e063fafaca1c5062dddbc","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-1.0.2.tgz","fileCount":57,"integrity":"sha512-O9ORVMzKKknNIbHEgJRWnuq82iCWl0aGC/Pe9bgnVRiM5e9Os9gl264+izYGD0/CDYjCd0LJOQ16b8ClnIzYxQ==","signatures":[{"sig":"MEUCIGJzlZ+WOTHFazXB1fwkeUpeuhKMSSlCydVvuURs/QtaAiEAmrSq9WHT+Rss7VCkcQm36VOmwXfqzuooLsD4zr1KUSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16677002},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"7b949337aaf1aae0a2001cff03df3d096264b01b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","directories":{},"_nodeVersion":"20.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","rollup":"^4.18.0","prettier":"~3.3.3","swiftlint":"^2.0.0","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"~2.6.4","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dropoff-sdk-capacitor_1.0.2_1782311436036_0.08956781021755855","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"1.0.3","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","_id":"@doorstepai/dropoff-sdk-capacitor@1.0.3","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"},{"name":"kavyadoorstep","email":"kavya@doorstep.ai"}],"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"dist":{"shasum":"c8e4769ffcfefa2e8805d8d229195bab9a09e68e","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-1.0.3.tgz","fileCount":57,"integrity":"sha512-5jZj5V/s00IPRuclUYrbLCXJHpB4kCjfALUwD2SdLIimobA1vTZhFK24PEYyRncFuwPmaIVzTPjawPSaQyFatw==","signatures":[{"sig":"MEUCIQDWedJAG11s/gI/6fVaepd7ZxWadbFEdHif1arfa0HYlgIgWg/usFxaTi3fa6iEKjavMzzaWRfA7gXwAG+tjKezQYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21558225},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"7b949337aaf1aae0a2001cff03df3d096264b01b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","directories":{},"_nodeVersion":"20.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","rollup":"^4.18.0","prettier":"~3.3.3","swiftlint":"^2.0.0","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"~2.6.4","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dropoff-sdk-capacitor_1.0.3_1784171312604_0.33916053157211623","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"1.0.4","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","_id":"@doorstepai/dropoff-sdk-capacitor@1.0.4","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"},{"name":"kavyadoorstep","email":"kavya@doorstep.ai"}],"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"dist":{"shasum":"c113d2be68e8f122c6808b8733b57fbaea9f84c6","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-1.0.4.tgz","fileCount":57,"integrity":"sha512-oR1z9zJJBsyAshfVgzqp+X68j9LlXbG3F7Vk84xDcEjh2h9xrn3U/U1OcUY2pGdWGzi3ylV21YDIQ9Yj61DiKQ==","signatures":[{"sig":"MEYCIQDbHqLdeqcPSaMXf+Qng4qJ1f2N4T3J2vBe0F0luN3ZlwIhAMFBSD+QzSgsLVotRR4M9rppXrvFaWtJS8swfIqTIcWF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21869535},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"7b949337aaf1aae0a2001cff03df3d096264b01b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","directories":{},"_nodeVersion":"20.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","rollup":"^4.18.0","prettier":"~3.3.3","swiftlint":"^2.0.0","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"~2.6.4","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dropoff-sdk-capacitor_1.0.4_1785298687490_0.644619208084942","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"2.2.0","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","_id":"@doorstepai/dropoff-sdk-capacitor@2.2.0","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"},{"name":"kavyadoorstep","email":"kavya@doorstep.ai"}],"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"dist":{"shasum":"ef299c2a4d30b54ff7b9d0dec2ac1199b82bdc6a","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-2.2.0.tgz","fileCount":57,"integrity":"sha512-vpI4DXMLVed1Rj+JYWOeiBVY1taHEgPyA0t2yw32OiUZCnZPOnCXmvLseSXyt8cxqPKDMvj9VL2519vqmSr2Zw==","signatures":[{"sig":"MEYCIQCySOROyK+l2/qePXDiipKEDKTS/ZIsjKYKiO/EulAMuAIhAK83JymMRosegR6Vcmq7EIt8HKqwIYOk+HXw/EjsVWwT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27484688},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"7b949337aaf1aae0a2001cff03df3d096264b01b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","directories":{},"_nodeVersion":"20.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","rollup":"^4.18.0","prettier":"~3.3.3","swiftlint":"^2.0.0","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"~2.6.4","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dropoff-sdk-capacitor_2.2.0_1786387968146_0.1825113520675945","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"2.2.2","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","_id":"@doorstepai/dropoff-sdk-capacitor@2.2.2","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"},{"name":"kavyadoorstep","email":"kavya@doorstep.ai"}],"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"dist":{"shasum":"45c849c750668618328574dca7d602ee6fb74949","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-2.2.2.tgz","fileCount":57,"integrity":"sha512-gsVrleoVMY7BJc6LrhyPivosZbhEoChUstcOcOIVH4Om+qxNmhmKPyzt3m4DNI5kZjDebZhVMIUh9ZJjSagrOA==","signatures":[{"sig":"MEUCIQDOEW8OO3lRIIRAoGGZb3WcU4T4A7iMXLVWPIbVPieQ3gIgGMLZ9U6L4s5JoTsRZVO/O5+96tYqvP7/z9kJCBYlD9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33175708},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"7b949337aaf1aae0a2001cff03df3d096264b01b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"npm run verify:ios && npm run verify:android && npm run verify:web","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:web":"npm run build","prepublishOnly":"npm run build","verify:android":"cd android && ./gradlew clean build test && cd .."},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git","type":"git"},"_npmVersion":"10.8.2","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","directories":{},"_nodeVersion":"20.17.0","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^5.0.5","rollup":"^4.18.0","prettier":"~3.3.3","swiftlint":"^2.0.0","typescript":"~5.4.5","@capacitor/ios":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/android":"^7.0.0","@ionic/eslint-config":"^0.4.0","prettier-plugin-java":"~2.6.4","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dropoff-sdk-capacitor_2.2.2_1787198211562_0.04331386398320447","host":"s3://npm-registry-packages-npm-production"}},"2.2.6":{"name":"@doorstepai/dropoff-sdk-capacitor","version":"2.2.6","description":"Capacitor plugin for DoorstepAI's Dropoff SDK","main":"dist/plugin.cjs.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git"},"keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"scripts":{"verify":"npm run verify:ios && npm run verify:android && npm run verify:web","verify:ios":"cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..","verify:android":"cd android && ./gradlew clean build test && cd ..","verify:web":"npm run build","lint":"npm run eslint && npm run prettier -- --check","fmt":"npm run eslint -- --fix && npm run prettier -- --write","eslint":"eslint . --ext ts","prettier":"prettier \"**/*.{css,html,ts,js,java}\"","docgen":"docgen --api DoorstepAIDropoffSDKPlugin --output-readme README.md --output-json dist/docs.json","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","prepublishOnly":"npm run build"},"devDependencies":{"@capacitor/android":"^7.0.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@capacitor/ios":"^7.0.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0","eslint":"^8.57.0","prettier":"~3.3.3","prettier-plugin-java":"~2.6.4","rimraf":"^5.0.5","rollup":"^4.18.0","swiftlint":"^2.0.0","typescript":"~5.4.5"},"peerDependencies":{"@capacitor/core":"^7.0.0"},"prettier":"@ionic/prettier-config","swiftlint":"@ionic/swiftlint-config","eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"_id":"@doorstepai/dropoff-sdk-capacitor@2.2.6","gitHead":"7b949337aaf1aae0a2001cff03df3d096264b01b","bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-waeM/co2wCGaHBxh9Jq6mtgzN4sNxaFS4ZtszR6NMeFLhtIDISm0aHz2PWXLMRxJSHR20S4o4c5mfB6G4Wu7Yg==","shasum":"ffca0e68a7625d8a695e608fed8e160dc37733c3","tarball":"https://registry.npmjs.org/@doorstepai/dropoff-sdk-capacitor/-/dropoff-sdk-capacitor-2.2.6.tgz","fileCount":57,"unpackedSize":38483091,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCppD4PkK98tO9ZBizRFq/fYIv9Mkwp+mVkQbT7Syww/AIhAK86+JJZnSFA0HjfUI1xTCU1xrx5tVtBuiBA2iwOzoEw"}]},"_npmUser":{"name":"sheelp18","email":"sheel@doorstep.ai"},"directories":{},"maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"},{"name":"kavyadoorstep","email":"kavya@doorstep.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dropoff-sdk-capacitor_2.2.6_1788417697658_0.4214479339492154"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T01:52:02.993Z","modified":"2026-09-03T06:41:38.208Z","1.0.0":"2026-05-11T01:52:03.352Z","1.0.1":"2026-05-28T01:21:28.929Z","1.0.2":"2026-06-24T14:30:36.314Z","1.0.3":"2026-07-16T03:08:32.866Z","1.0.4":"2026-07-29T04:18:07.819Z","2.2.0":"2026-08-10T18:52:48.489Z","2.2.2":"2026-08-20T03:56:51.856Z","2.2.6":"2026-09-03T06:41:37.993Z"},"bugs":{"url":"https://gitlab.com/doorstepai/tracking/sdk/capacitor/issues"},"author":{"name":"Doing Doorstep Better, Inc."},"license":"SEE LICENSE IN LICENSE","homepage":"https://gitlab.com/doorstepai/tracking/sdk/capacitor#readme","keywords":["capacitor","plugin","native","doorstep","dropoff","delivery"],"repository":{"type":"git","url":"git+ssh://git@gitlab.com/doorstepai/tracking/sdk/capacitor.git"},"description":"Capacitor plugin for DoorstepAI's Dropoff SDK","maintainers":[{"name":"sheelp18","email":"sheel@doorstep.ai"},{"name":"kavyadoorstep","email":"kavya@doorstep.ai"}],"readme":"# DoorstepAI Dropoff SDK for Capacitor\n\nThe `@doorstepai/dropoff-sdk-capacitor` package provides Capacitor bindings to DoorstepAI's Dropoff SDK, enabling delivery tracking functionality through the Capacitor bridge and native platform integration.\n\n## 📦 Installation\n\nAdd the SDK to your Capacitor app:\n\n```bash\nnpm install @doorstepai/dropoff-sdk-capacitor\nnpx cap sync\n```\n\nThe imported iOS XCFramework requires iOS 15 or newer.\n\n---\n\n## 🔌 Imports\n\nIn your TypeScript/JavaScript code, import the SDK:\n\n```ts\nimport {\n  DoorstepAIDropoffSDK,\n  AddressType,\n} from '@doorstepai/dropoff-sdk-capacitor';\n```\n\n---\n\n## 🗺️ AddressType\n\nA helper interface to represent a structured address for deliveries:\n\n```ts\ninterface AddressType {\n  streetNumber: string;\n  route: string;\n  subPremise?: string;          // optional\n  locality: string;\n  administrativeAreaLevel1: string;\n  postalCode: string;\n}\n```\n\n---\n\n## 🚚 DoorstepAI API\n\nAll calls go through the Capacitor bridge under the plugin name `DoorstepAIDropoffSDK`. Be sure to `await` each call and wrap in `try/catch`.\n\n### `init` (Android Only)\n\nInitializes the native SDK on Android. This is automatically called by `bootstrapDoorstepAI`, so you typically don't need to call this directly.\n\n```ts\n// Android only: call once before any other API methods\nawait DoorstepAIDropoffSDK.init({\n  notificationTitle: 'Delivery in progress',  // optional\n  notificationText: 'Tap to return to the app', // optional\n});\n```\n\n### `setApiKey`\n\nSet your DoorstepAI API key. This should be called after initialization. Again, you typically don't need to call this directly.\n\n```ts\nawait DoorstepAIDropoffSDK.setApiKey({\n  key: 'YOUR_API_KEY',\n  shouldGetConfig: true, // optional; defaults to true\n});\n```\n\n### `startDeliveryByPlaceID`\n\nBegin a delivery session using a Google Place ID:\n\n```ts\nawait DoorstepAIDropoffSDK.startDeliveryByPlaceID({\n  placeID: 'destination_place_id',\n  deliveryId: 'unique_delivery_id',\n});\n```\n\n### `startDeliveryByPlusCode`\n\nBegin a delivery via Google Plus Code:\n\n```ts\nawait DoorstepAIDropoffSDK.startDeliveryByPlusCode({\n  plusCode: 'destination_plus_code',\n  deliveryId: 'unique_delivery_id',\n});\n```\n\n### `startDeliveryByAddress`\n\nBegin a delivery with a structured address:\n\n```ts\nawait DoorstepAIDropoffSDK.startDeliveryByAddress({\n  address: {\n    streetNumber: '123',\n    route: 'Main St',\n    subPremise: 'Apt 4B',\n    locality: 'New York',\n    administrativeAreaLevel1: 'NY',\n    postalCode: '10001',\n  },\n  deliveryId: 'unique_delivery_id',\n});\n```\n\n### `startDeliveryByAddressString`\n\nBegin a delivery with a free-form address string:\n\n```ts\nawait DoorstepAIDropoffSDK.startDeliveryByAddressString({\n  address: '123 Main St, Apt 4B, New York, NY 10001',\n  deliveryId: 'unique_delivery_id',\n});\n```\n\n### `startDeliveryByLatLng`\n\nBegin a delivery with raw coordinates and an optional sub-unit:\n\n```ts\nawait DoorstepAIDropoffSDK.startDeliveryByLatLng({\n  latitude: 40.7128,\n  longitude: -74.006,\n  subUnit: 'Apt 4B',           // optional\n  deliveryId: 'unique_delivery_id',\n});\n```\n\n> **Shared optional fields** — every `startDelivery*` method also accepts:\n>\n> - `customerId?: string` — your identifier for the customer on this delivery.\n> - `driverId?: string` — your identifier for the driver on this delivery.\n> - `timeoutSeconds?: number` — auto-stops tracking after the given duration, as\n>   a backstop in case an exit geofence is missed.\n>\n> The address-based methods additionally accept an optional\n> `coordinates: { lat, lng }` hint to skip geocoding when you already have it.\n>\n> ```ts\n> await DoorstepAIDropoffSDK.startDeliveryByAddress({\n>   address: {\n>     streetNumber: '123',\n>     route: 'Main St',\n>     locality: 'New York',\n>     administrativeAreaLevel1: 'NY',\n>     postalCode: '10001',\n>   },\n>   deliveryId: 'unique_delivery_id',\n>   customerId: 'customer_42',        // optional\n> });\n> ```\n\n### `newEvent`\n\nSend a delivery event (`taking_pod`, `pod_captured`, etc.):\n\n```ts\nawait DoorstepAIDropoffSDK.newEvent({\n  eventName: 'taking_pod',\n  deliveryId: 'unique_delivery_id',\n});\n```\n\n### `addMetadata`\n\nAttach custom JSON metadata before or after a delivery starts:\n\n```ts\nawait DoorstepAIDropoffSDK.addMetadata({\n  deliveryId: 'unique_delivery_id',\n  metadata: {\n    orderType: 'grocery',\n    bagCount: 4,\n    substitutions: ['milk', 'bread'],\n  },\n});\n```\n\n### `markDropoff`\n\nMark the dropoff outcome for the active delivery as either proof-of-delivery\n(`pod`) or non-POD (`non_pod`):\n\n```ts\nawait DoorstepAIDropoffSDK.markDropoff({\n  deliveryId: 'unique_delivery_id',\n  dropoffType: 'pod', // or 'non_pod'\n});\n```\n\n### `stopDelivery`\n\nEnd the delivery session:\n\n```ts\nawait DoorstepAIDropoffSDK.stopDelivery({\n  deliveryId: 'unique_delivery_id',\n});\n```\n\n### Route geofencing\n\nThe route API uses the native SDKs' unified route model. `routeStopId`,\n`clientRouteId`, route-level `driverId`, and string metadata are forwarded on\nboth platforms. `manualForeground` and `maxAgeSeconds` are Android-only.\n\n```ts\nawait DoorstepAIDropoffSDK.startRouteGeofencing({\n  stops: [{\n    routeStopId: 'route-stop-42',\n    deliveryId: 'delivery-42',\n    address: '123 Main St, New York, NY 10001',\n    latitude: 40.7128,\n    longitude: -74.006,\n  }],\n  options: {\n    clientRouteId: 'route-2026-09-03',\n    driverId: 'driver-7',\n    metadata: { shift: 'morning' },\n    maxAgeSeconds: 57600, // Android only\n  },\n});\n```\n\nUse `updateRouteStops`, `getMonitoredStops`,\n`resumeRouteGeofencingIfNeeded`, and `stopRouteGeofencing` for the rest of the\nroute lifecycle. `geofenceSessionEvent` emits `STARTED` and `STOPPED`; Android\ncan additionally emit `ROUTE_EXPIRED` when the max-age lease ends.\n\n### Permissions\n\nThree methods, both platforms, identical shapes — the pair this plugin has published since\n1.0.4 plus the mandatory second location prompt. All three are thin dispatches onto the\nnative SDKs' own **whitelist** permission API; the plugin keeps no permission list, no\nstate and no prompt sequencing of its own.\n\n```ts\nconst status = await DoorstepAIDropoffSDK.checkPermissions();\n\n// Whitelist: exactly these buckets are requested, and nothing else.\nconst result = await DoorstepAIDropoffSDK.requestPermissions({\n  permissions: ['motion'],\n});\n\n// Omit the array and every bucket is requested.\nawait DoorstepAIDropoffSDK.requestPermissions();\n```\n\n#### Buckets\n\nOne bucket is one user-visible OS decision. These six are the union of the two native sets,\nunder one spelling that works on both platforms:\n\n| bucket | Android | iOS |\n| --- | --- | --- |\n| `locationWhenInUse` | fine + coarse location, one dialog | `requestWhenInUseAuthorization()` |\n| `locationAlways` | `ACCESS_BACKGROUND_LOCATION` (29+) | `requestAlwaysAuthorization()` |\n| `motion` | `ACTIVITY_RECOGNITION` (29+) | Motion & Fitness |\n| `bluetooth` | `BLUETOOTH_SCAN` (31+) | `CBCentralManager` |\n| `nearbyWifiDevices` | `NEARBY_WIFI_DEVICES` (33+) | — reports `unavailable` |\n| `notifications` | `POST_NOTIFICATIONS` (33+) | — reports `unavailable` |\n\nThe two Android-only buckets are still *reported* on iOS, so cross-platform code renders\none table without a platform branch. Earlier spellings are accepted as input —\n`location` → `locationWhenInUse`, `activity` → `motion`, `backgroundLocation` →\n`locationAlways` — as are both natives' own wire names (`activityRecognition`,\n`motionFitness`, `bluetoothScan`). Output keys are always canonical. **An unrecognised\ntoken rejects with `BAD_ARGS`** rather than being ignored.\n\n#### `checkPermissions` — observation, never a prompt\n\n```ts\nconst { permissions, statuses } = await DoorstepAIDropoffSDK.checkPermissions();\n\npermissions.locationWhenInUse;        // 'granted' | 'denied' | 'prompt' | 'prompt-with-rationale'\npermissions.location;                 // legacy mirror of locationWhenInUse (1.0.4 / 2.2.0 key)\nstatuses.locationAlways.state;        // 'whenInUseOnly' — read THIS one\nstatuses.locationAlways.canRequest;   // would a default request raise a prompt?\n```\n\nAll six buckets are always present, on both platforms. `statuses` carries the native SDKs'\nshared eight-name vocabulary; `permissions` is the coarse Capacitor summary derived from\nnative's own `canRequest`.\n\nTwo of those eight names are the reason `statuses` exists:\n\n- **`whenInUseOnly`** — foreground location held, background not. Only ever reported for\n  `locationAlways`, and **never collapse it into `granted`**: locked-phone collection and\n  route geofencing do not work in this state. Getting out of it is a user decision.\n- **`notDeclared`** — the *host build* is missing a `<uses-permission>` entry (Android) or\n  an Info.plist usage-description key (iOS). That is a bug you can fix, not a user refusal.\n\nReads go through the platforms' own non-prompting status APIs. On iOS, Bluetooth is read\nfrom the *static* `CBManager.authorization`: constructing a `CBCentralManager` **is** the\nBluetooth prompt, and doing it without `NSBluetoothAlwaysUsageDescription` hard-crashes the\nhost, so the plugin never constructs one.\n\n#### `requestPermissions` — resolves after the user answers\n\n**`options.permissions` is a whitelist: exactly those buckets are requested. Omit it to\nrequest all six.** (Through 2.2.0 the array could only narrow Bluetooth; both natives have\nsince grown a real whitelist API and this is now a straight dispatch onto it.)\n\nIt **resolves once the user has answered**, not when the prompt is shown — a status\ncaptured while the dialog is still up is already known to be provisional. If nothing needs\nasking it resolves immediately. A second call while one is in flight rejects with\n`PERMISSION_REQUEST_BUSY` rather than interleaving prompts.\n\nNothing is skipped silently: every whitelisted bucket comes back in exactly one of\n`requested`, `alreadyDetermined`, `unavailable` or `deferred`.\n\n```ts\nconst r = await DoorstepAIDropoffSDK.requestPermissions({\n  permissions: ['locationWhenInUse', 'locationAlways'],\n});\nr.requested;              // ['locationWhenInUse']\nr.deferred.locationAlways // \"...must be requested in its own call...\"\n```\n\nTwo native rules produce most `deferred` entries, and both are the OS's, not the plugin's:\n\n- **Android** only ever requests `locationAlways` **alone**, and only once foreground\n  location is granted — Android 11+ auto-denies a bundled background request, and issuing\n  one anyway spends the user's single real chance on a guaranteed refusal.\n- **iOS** raises **one location prompt per call**. Whitelist `locationAlways` and it *is*\n  the location ask, with `locationWhenInUse` riding it.\n\nPrompt order is the native buckets' declaration order, never your array's. On iOS the\nprompts are raised one at a time and each is awaited.\n\nAlso worth knowing:\n\n- **Call it once, from a user-initiated flow**, not at app launch.\n- Requesting Bluetooth on iOS without `NSBluetoothAlwaysUsageDescription` is skipped rather\n  than crashing — the bucket reports `notDeclared`.\n- `{ force: true }` (iOS only) raises a prompt even for an already-answered bucket. It\n  exists for exactly one case: the Always upgrade, below.\n\n#### Background location: still its own entry point\n\nAndroid 11+ auto-denies `ACCESS_BACKGROUND_LOCATION` when it is bundled with the foreground\nrequest, and routes a standalone request to a Settings screen (\"Allow all the time\"), so it\ncannot be folded into `requestPermissions()`. It stays its own method on both platforms — a\nfixed `['locationAlways']` whitelist — to be called only *after* the foreground grant has\nlanded:\n\n```ts\nconst r = await DoorstepAIDropoffSDK.requestBackgroundLocationPermission();\n```\n\nThe plugin does not sequence the two phases for you; `example/components/pages/Permissions.tsx`\nhas a working flow (\"grant everything, in order\").\n\nOne iOS caveat, which is the native SDK's policy rather than the plugin's: from an existing\n\"While Using the App\" choice the SDK deliberately does **not** re-prompt for Always — that\nupgrade is a user decision — and says so in `deferred.locationAlways`. Pass\n`{ force: true }` from an explicit user action to raise it anyway, or deep-link to Settings.\n\nBackground location is what the SDK actually needs: `startDelivery` is refused outright when\nthe process is already backgrounded, and on both platforms a session started while the app\nis visible stops collecting once the app is suspended.\n\n#### Reporting a permanent denial on Android (optional)\n\nCapacitor does not route `onRequestPermissionsResult` to a `@CapacitorPlugin`, and\n`shouldShowRequestPermissionRationale == false` is not on its own evidence of permanence — a\n*cancelled* dialog leaves the same flag behind. Without a forwarded, **answered** denial the\nSDK reports the re-askable `denied` and never guesses, because `permanentlyDenied` sends a\ndriver to a Settings screen. Forward it from your `BridgeActivity` to close that gap:\n\n```kotlin\nimport ai.doorstep.dropoffsdk.capacitor.DoorstepAIDropoffSDKPlugin\n\nclass MainActivity : BridgeActivity() {\n    override fun onRequestPermissionsResult(\n        requestCode: Int, permissions: Array<out String>, grantResults: IntArray\n    ) {\n        DoorstepAIDropoffSDKPlugin.notePermissionRequestResult(this, permissions, grantResults)\n        super.onRequestPermissionsResult(requestCode, permissions, grantResults)\n    }\n}\n```\n\nEach prompt is one-shot (iOS: once per install; Android: after two denials).\nOnce a permission reads `'denied'` the only path left is Settings — send the user\nthere instead of re-requesting.\n\n---\n\n## 📱 Bootstrap Helper: `bootstrapDoorstepAI`\n\nThe `bootstrapDoorstepAI` recipe handles SDK initialization, API key setting, and permission requests in one call. Run it once at app startup, before any `startDelivery*` calls.\n\n```ts\nimport { DoorstepAIDropoffSDK } from '@doorstepai/dropoff-sdk-capacitor';\n\nasync function bootstrapDoorstepAI(opts: {\n  apiKey: string;\n  notificationTitle?: string;\n  notificationText?: string;\n}) {\n  await DoorstepAIDropoffSDK.init({\n    notificationTitle: opts.notificationTitle,\n    notificationText: opts.notificationText,\n  });\n  await DoorstepAIDropoffSDK.setApiKey({ key: opts.apiKey });\n  // One requester on both platforms. On Android, background location is still a\n  // separate second request — see the Permissions section.\n  await DoorstepAIDropoffSDK.requestPermissions();\n}\n\n// Call once at app startup:\nawait bootstrapDoorstepAI({\n  apiKey: 'YOUR_API_KEY',\n  notificationTitle: 'Tracking Delivery',\n  notificationText: 'Tap to return',\n});\n```\n\n### What `bootstrapDoorstepAI` Does Automatically:\n\n1. **Initialization**: Calls `DoorstepAIDropoffSDK.init()` on Android (no-op on iOS).\n2. **API Key Setting**: Calls `DoorstepAIDropoffSDK.setApiKey()` with the provided key.\n3. **Permission Handling**: Calls `requestPermissions()`, which dispatches to the platform's native requester. Background location on Android still needs the second `requestBackgroundLocationPermission()` step.\n4. **Platform Support**: Behaves correctly on each platform — the plugin transparently mounts its hidden host view on iOS when the API key is set.\n\n---\n\n## ✅ Best Practices\n\n- Run `bootstrapDoorstepAI` once at app startup to handle automatic initialization.\n- Wrap all SDK calls in `try/catch` for robust error handling.\n- Keep your `deliveryId` unique per session.\n- Securely store your API key; don't hardcode it in production.\n- Use the same `deliveryId` for all operations within a single delivery session.\n\n---\n\n## 🔧 Platform-Specific Setup\n\n### Android\n\nAdd the following permissions to `android/app/src/main/AndroidManifest.xml`:\n\n```xml\n    <uses-permission android:name=\"android.permission.INTERNET\" />\n    <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />\n\n    <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />\n    <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />\n    <uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\" />\n\n    <uses-permission android:name=\"android.permission.ACTIVITY_RECOGNITION\" />\n\n    <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" />\n    <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_LOCATION\" />\n    <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_DATA_SYNC\" />\n    <uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" />\n    <uses-permission android:name=\"android.permission.WAKE_LOCK\" />\n\n    <uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />\n\n    <uses-feature android:name=\"android.hardware.sensor.accelerometer\" />\n    <uses-feature android:name=\"android.hardware.sensor.gyroscope\" />\n    <uses-feature android:name=\"android.hardware.sensor.barometer\" />\n    <uses-feature android:name=\"android.hardware.sensor.compass\" />\n    <uses-feature android:name=\"android.hardware.sensor.proximity\" />\n```\n\n### iOS\n\nAdd usage descriptions to `ios/App/App/Info.plist`:\n\n```xml\n<key>NSLocationWhenInUseUsageDescription</key>\n<string>This app requires access to your location for enhanced delivery intelligence</string>\n\n<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>\n<string>This app requires access to your location for enhanced delivery intelligence</string>\n\n<key>NSMotionUsageDescription</key>\n<string>This app requires access to motion data for enhanced delivery intelligence</string>\n\n<!-- Required if you let requestPermissions request Bluetooth (its default).\n     Native skips the prompt with a warning when this key is absent; add the key,\n     or omit 'bluetooth' from requestPermissions({ permissions: [...] }). -->\n<key>NSBluetoothAlwaysUsageDescription</key>\n<string>This app uses Bluetooth to improve delivery location accuracy</string>\n\n<key>UIBackgroundModes</key>\n<array>\n    <string>location</string>\n</array>\n\n```\n\n---\n\n## 🧪 Example App\n\nA working Capacitor + Next.js + Ionic example app lives in `example/`. It\nexposes one card per public SDK method so you can drive a delivery end-to-end.\n\n### Setup\n\n```bash\ncd example\ncp .env.example .env.local        # set NEXT_PUBLIC_DOORSTEPAI_API_KEY\nnpm install\nnpx cap add ios                   # first time only\nnpx cap add android               # first time only\n```\n\n### Build & run\n\n```bash\n# from example/\nnpm run build && npm run sync && npm run ios       # or: npm run android\n```\n\n### Permissions after first launch\n\niOS only shows each permission prompt **once per install**. If the user\ndenied (or the prompt didn't appear because an earlier build was missing the\nrequired `Info.plist` keys), grant manually:\n\n- **iOS** — Settings → Privacy & Security → Location Services → DoorstepAI\n  Dropoff Example → **\"Always\"** (required for background tracking; \"While Using\"\n  stops collecting as soon as the app is suspended). Then Motion &\n  Fitness → toggle on.\n- **Android** — Settings → Apps → DoorstepAI Dropoff Example → Permissions\n  → Location → **\"Allow all the time\"**, and enable Physical activity.\n\nTo reset for testing, delete the app and reinstall.\n\n---\n\n## 🧪 Debugging\n\n- Check your debug console for errors thrown by `try/catch` blocks.\n- On Android, verify notification permissions and channel configuration.\n- Use the example app in the `example/` directory to test functionality.\n\n---\n\n## 📋 Complete Example\n\n```ts\nimport {\n  DoorstepAIDropoffSDK,\n  AddressType,\n} from '@doorstepai/dropoff-sdk-capacitor';\n\nasync function bootstrapDoorstepAI(opts: {\n  apiKey: string;\n  notificationTitle?: string;\n  notificationText?: string;\n}) {\n  await DoorstepAIDropoffSDK.init({\n    notificationTitle: opts.notificationTitle,\n    notificationText: opts.notificationText,\n  });\n  await DoorstepAIDropoffSDK.setApiKey({ key: opts.apiKey });\n  await DoorstepAIDropoffSDK.requestPermissions();\n}\n\nlet currentDeliveryId: string | null = null;\n\nasync function startDelivery() {\n  try {\n    const deliveryId = `delivery_${Date.now()}`;\n\n    await DoorstepAIDropoffSDK.startDeliveryByAddress({\n      address: {\n        streetNumber: '123',\n        route: 'Main St',\n        locality: 'New York',\n        administrativeAreaLevel1: 'NY',\n        postalCode: '10001',\n      },\n      deliveryId,\n    });\n\n    currentDeliveryId = deliveryId;\n  } catch (e) {\n    console.error('Error starting delivery:', e);\n  }\n}\n\nasync function stopDelivery() {\n  if (currentDeliveryId !== null) {\n    try {\n      await DoorstepAIDropoffSDK.stopDelivery({ deliveryId: currentDeliveryId });\n      currentDeliveryId = null;\n    } catch (e) {\n      console.error('Error stopping delivery:', e);\n    }\n  }\n}\n\n// At app startup:\nawait bootstrapDoorstepAI({\n  apiKey: 'YOUR_API_KEY',\n  notificationTitle: 'Delivery Update',\n  notificationText: 'Your driver is approaching',\n});\n```\n","readmeFilename":"README.md"}