capacitor-secure-storage-plugin 0.6.1 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/CapacitorSecureStoragePlugin.podspec +12 -7
  3. package/README.md +6 -5
  4. package/android/build.gradle +13 -7
  5. package/android/src/main/AndroidManifest.xml +3 -5
  6. package/android/src/main/java/com/whitestein/securestorage/{SecureStoragePlugin.java → SecureStoragePluginPlugin.java} +33 -16
  7. package/android/{.gradle/5.6.4/gc.properties → src/main/res/.gitkeep} +0 -0
  8. package/dist/docs.json +93 -0
  9. package/dist/esm/definitions.js +1 -0
  10. package/dist/esm/definitions.js.map +1 -1
  11. package/dist/esm/index.js +1 -1
  12. package/dist/esm/index.js.map +1 -1
  13. package/dist/esm/web.d.ts +2 -4
  14. package/dist/esm/web.js +15 -11
  15. package/dist/esm/web.js.map +1 -1
  16. package/dist/plugin.cjs.js +64 -0
  17. package/dist/plugin.cjs.js.map +1 -0
  18. package/dist/plugin.js +67 -0
  19. package/dist/plugin.js.map +1 -0
  20. package/ios/Plugin/{Plugin.h → SecureStoragePluginPlugin.h} +0 -0
  21. package/ios/Plugin/{Plugin.m → SecureStoragePluginPlugin.m} +0 -0
  22. package/ios/Plugin/{Plugin.swift → SecureStoragePluginPlugin.swift} +18 -9
  23. package/package.json +56 -29
  24. package/android/.gitignore +0 -72
  25. package/android/.gradle/5.6.4/executionHistory/executionHistory.bin +0 -0
  26. package/android/.gradle/5.6.4/executionHistory/executionHistory.lock +0 -0
  27. package/android/.gradle/5.6.4/fileChanges/last-build.bin +0 -0
  28. package/android/.gradle/5.6.4/fileContent/fileContent.lock +0 -0
  29. package/android/.gradle/5.6.4/fileHashes/fileHashes.bin +0 -0
  30. package/android/.gradle/5.6.4/fileHashes/fileHashes.lock +0 -0
  31. package/android/.gradle/5.6.4/fileHashes/resourceHashesCache.bin +0 -0
  32. package/android/.gradle/5.6.4/javaCompile/classAnalysis.bin +0 -0
  33. package/android/.gradle/5.6.4/javaCompile/jarAnalysis.bin +0 -0
  34. package/android/.gradle/5.6.4/javaCompile/javaCompile.lock +0 -0
  35. package/android/.gradle/5.6.4/javaCompile/taskHistory.bin +0 -0
  36. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  37. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  38. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  39. package/android/.gradle/vcs-1/gc.properties +0 -0
  40. package/android/.idea/.gitignore +0 -3
  41. package/android/.idea/compiler.xml +0 -6
  42. package/android/.idea/gradle.xml +0 -20
  43. package/android/.idea/jarRepositories.xml +0 -30
  44. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_0_aar.xml +0 -16
  45. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +0 -13
  46. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml +0 -13
  47. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml +0 -16
  48. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml +0 -13
  49. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +0 -11
  50. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +0 -13
  51. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +0 -11
  52. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml +0 -16
  53. package/android/.idea/libraries/Gradle__androidx_core_core_1_3_2_aar.xml +0 -16
  54. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +0 -13
  55. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +0 -13
  56. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +0 -16
  57. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_0_aar.xml +0 -16
  58. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +0 -13
  59. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_3_0.xml +0 -11
  60. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +0 -13
  61. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_0_aar.xml +0 -13
  62. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_3_0_aar.xml +0 -13
  63. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_0_aar.xml +0 -13
  64. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_0_aar.xml +0 -13
  65. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +0 -13
  66. package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +0 -13
  67. package/android/.idea/libraries/Gradle__androidx_test_core_1_2_0_aar.xml +0 -15
  68. package/android/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_2_0_aar.xml +0 -15
  69. package/android/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_2_0_aar.xml +0 -15
  70. package/android/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_1_aar.xml +0 -15
  71. package/android/.idea/libraries/Gradle__androidx_test_monitor_1_2_0_aar.xml +0 -15
  72. package/android/.idea/libraries/Gradle__androidx_test_runner_1_2_0_aar.xml +0 -15
  73. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +0 -13
  74. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +0 -13
  75. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +0 -13
  76. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +0 -13
  77. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml +0 -9
  78. package/android/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml +0 -13
  79. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +0 -13
  80. package/android/.idea/libraries/Gradle__junit_junit_4_12.xml +0 -13
  81. package/android/.idea/libraries/Gradle__net_bytebuddy_byte_buddy_1_10_18.xml +0 -13
  82. package/android/.idea/libraries/Gradle__net_bytebuddy_byte_buddy_agent_1_10_18.xml +0 -13
  83. package/android/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0.xml +0 -13
  84. package/android/.idea/libraries/Gradle__org_apache_cordova_framework_7_0_0_aar.xml +0 -13
  85. package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml +0 -13
  86. package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml +0 -13
  87. package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml +0 -13
  88. package/android/.idea/libraries/Gradle__org_json_json_20140107.xml +0 -13
  89. package/android/.idea/libraries/Gradle__org_mockito_mockito_core_3_6_28.xml +0 -13
  90. package/android/.idea/libraries/Gradle__org_mockito_mockito_inline_3_6_28.xml +0 -13
  91. package/android/.idea/libraries/Gradle__org_objenesis_objenesis_3_1.xml +0 -13
  92. package/android/.idea/misc.xml +0 -9
  93. package/android/.idea/modules/1586507569/android.capacitor-android.iml +0 -93
  94. package/android/.idea/modules/android.iml +0 -65
  95. package/android/.idea/modules.xml +0 -9
  96. package/android/.idea/vcs.xml +0 -6
  97. package/android/.npmignore +0 -1
  98. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  99. package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  100. package/android/gradle.properties +0 -21
  101. package/android/gradlew +0 -160
  102. package/android/gradlew.bat +0 -90
  103. package/android/local.properties +0 -8
  104. package/android/proguard-rules.pro +0 -21
  105. package/android/settings.gradle +0 -2
  106. package/android/src/androidTest/java/com/getcapacitor/android/ExampleInstrumentedTest.java +0 -121
  107. package/android/src/main/res/layout/bridge_layout_main.xml +0 -15
  108. package/android/src/main/res/values/colors.xml +0 -3
  109. package/android/src/main/res/values/strings.xml +0 -3
  110. package/android/src/main/res/values/styles.xml +0 -3
  111. package/android/src/test/java/com/getcapacitor/ExampleUnitTest.java +0 -17
  112. package/ios/Plugin.xcodeproj/project.pbxproj +0 -735
  113. package/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme +0 -77
  114. package/ios/Plugin.xcodeproj/xcshareddata/xcschemes/TestApp.xcscheme +0 -88
  115. package/ios/Plugin.xcodeproj/xcuserdata/mka.xcuserdatad/xcschemes/xcschememanagement.plist +0 -37
  116. package/ios/Plugin.xcworkspace/contents.xcworkspacedata +0 -10
  117. package/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  118. package/ios/Plugin.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -5
  119. package/ios/Plugin.xcworkspace/xcuserdata/mka.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  120. package/ios/Plugin.xcworkspace/xcuserdata/mka.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -24
  121. package/ios/PluginTests/Info.plist +0 -22
  122. package/ios/PluginTests/PluginTests.swift +0 -245
  123. package/ios/Podfile +0 -18
  124. package/ios/Podfile.lock +0 -29
  125. package/ios/Pods/CapacitorCordova/LICENSE +0 -23
  126. package/ios/Pods/CapacitorCordova/README.md +0 -37
  127. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/CapacitorCordova.h +0 -21
  128. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/AppDelegate.h +0 -8
  129. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/AppDelegate.m +0 -5
  130. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDV.h +0 -28
  131. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVAvailability.h +0 -109
  132. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVCommandDelegate.h +0 -51
  133. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVCommandDelegateImpl.h +0 -39
  134. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVCommandDelegateImpl.m +0 -154
  135. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVConfigParser.h +0 -31
  136. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVConfigParser.m +0 -81
  137. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVInvokedUrlCommand.h +0 -52
  138. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVInvokedUrlCommand.m +0 -116
  139. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVPlugin.h +0 -81
  140. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVPlugin.m +0 -154
  141. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVPluginManager.h +0 -25
  142. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVPluginManager.m +0 -77
  143. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVPluginResult.h +0 -82
  144. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVPluginResult.m +0 -216
  145. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVScreenOrientationDelegate.h +0 -33
  146. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVUIWebViewDelegate.h +0 -41
  147. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVUIWebViewDelegate.m +0 -399
  148. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVURLProtocol.h +0 -27
  149. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVURLProtocol.m +0 -74
  150. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVUserAgentUtil.h +0 -27
  151. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVUserAgentUtil.m +0 -156
  152. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVViewController.h +0 -30
  153. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/CDVViewController.m +0 -34
  154. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/NSDictionary+CordovaPreferences.h +0 -35
  155. package/ios/Pods/CapacitorCordova/ios/CapacitorCordova/CapacitorCordova/Classes/Public/NSDictionary+CordovaPreferences.m +0 -63
  156. package/ios/Pods/Local Podspecs/Capacitor.podspec.json +0 -34
  157. package/ios/Pods/Local Podspecs/CapacitorCordova.podspec.json +0 -26
  158. package/ios/Pods/Manifest.lock +0 -29
  159. package/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -1512
  160. package/ios/Pods/Pods.xcodeproj/xcuserdata/mka.xcuserdatad/xcschemes/Capacitor.xcscheme +0 -58
  161. package/ios/Pods/Pods.xcodeproj/xcuserdata/mka.xcuserdatad/xcschemes/CapacitorCordova.xcscheme +0 -58
  162. package/ios/Pods/Pods.xcodeproj/xcuserdata/mka.xcuserdatad/xcschemes/Pods-Plugin.xcscheme +0 -58
  163. package/ios/Pods/Pods.xcodeproj/xcuserdata/mka.xcuserdatad/xcschemes/Pods-PluginTests.xcscheme +0 -58
  164. package/ios/Pods/Pods.xcodeproj/xcuserdata/mka.xcuserdatad/xcschemes/SwiftKeychainWrapper.xcscheme +0 -58
  165. package/ios/Pods/Pods.xcodeproj/xcuserdata/mka.xcuserdatad/xcschemes/xcschememanagement.plist +0 -36
  166. package/ios/Pods/SwiftKeychainWrapper/LICENSE +0 -22
  167. package/ios/Pods/SwiftKeychainWrapper/README.md +0 -168
  168. package/ios/Pods/SwiftKeychainWrapper/SwiftKeychainWrapper/KeychainItemAccessibility.swift +0 -123
  169. package/ios/Pods/SwiftKeychainWrapper/SwiftKeychainWrapper/KeychainWrapper.swift +0 -447
  170. package/ios/Pods/SwiftKeychainWrapper/SwiftKeychainWrapper/SwiftKeychainWrapper.h +0 -37
  171. package/ios/Pods/Target Support Files/Capacitor/Capacitor-Info.plist +0 -26
  172. package/ios/Pods/Target Support Files/Capacitor/Capacitor-dummy.m +0 -5
  173. package/ios/Pods/Target Support Files/Capacitor/Capacitor-prefix.pch +0 -12
  174. package/ios/Pods/Target Support Files/Capacitor/Capacitor-umbrella.h +0 -23
  175. package/ios/Pods/Target Support Files/Capacitor/Capacitor.debug.xcconfig +0 -13
  176. package/ios/Pods/Target Support Files/Capacitor/Capacitor.modulemap +0 -7
  177. package/ios/Pods/Target Support Files/Capacitor/Capacitor.release.xcconfig +0 -13
  178. package/ios/Pods/Target Support Files/Capacitor/Capacitor.xcconfig +0 -10
  179. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova-Info.plist +0 -26
  180. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova-dummy.m +0 -5
  181. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova-prefix.pch +0 -12
  182. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova-umbrella.h +0 -33
  183. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova.debug.xcconfig +0 -12
  184. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova.modulemap +0 -6
  185. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova.release.xcconfig +0 -12
  186. package/ios/Pods/Target Support Files/CapacitorCordova/CapacitorCordova.xcconfig +0 -9
  187. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin-Info.plist +0 -26
  188. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin-acknowledgements.markdown +0 -83
  189. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin-acknowledgements.plist +0 -127
  190. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin-dummy.m +0 -5
  191. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin-umbrella.h +0 -16
  192. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig +0 -13
  193. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin.modulemap +0 -6
  194. package/ios/Pods/Target Support Files/Pods-Plugin/Pods-Plugin.release.xcconfig +0 -13
  195. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests-Info.plist +0 -26
  196. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests-acknowledgements.markdown +0 -83
  197. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests-acknowledgements.plist +0 -127
  198. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests-dummy.m +0 -5
  199. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests-frameworks.sh +0 -189
  200. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests-umbrella.h +0 -16
  201. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.debug.xcconfig +0 -14
  202. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.modulemap +0 -6
  203. package/ios/Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.release.xcconfig +0 -14
  204. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper-Info.plist +0 -26
  205. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper-dummy.m +0 -5
  206. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper-prefix.pch +0 -12
  207. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper-umbrella.h +0 -17
  208. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper.debug.xcconfig +0 -12
  209. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper.modulemap +0 -6
  210. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper.release.xcconfig +0 -12
  211. package/ios/Pods/Target Support Files/SwiftKeychainWrapper/SwiftKeychainWrapper.xcconfig +0 -9
  212. package/ios/TestApp/AppDelegate.swift +0 -37
  213. package/ios/TestApp/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  214. package/ios/TestApp/Assets.xcassets/Contents.json +0 -6
  215. package/ios/TestApp/Base.lproj/LaunchScreen.storyboard +0 -25
  216. package/ios/TestApp/Base.lproj/Main.storyboard +0 -24
  217. package/ios/TestApp/ContentView.swift +0 -21
  218. package/ios/TestApp/Info.plist +0 -60
  219. package/ios/TestApp/Preview Content/Preview Assets.xcassets/Contents.json +0 -6
  220. package/ios/TestApp/SceneDelegate.swift +0 -64
  221. package/ios/TestApp/TestApp/AppDelegate.swift +0 -46
  222. package/ios/TestApp/TestApp/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  223. package/ios/TestApp/TestApp/Assets.xcassets/Contents.json +0 -6
  224. package/ios/TestApp/TestApp/Base.lproj/LaunchScreen.storyboard +0 -25
  225. package/ios/TestApp/TestApp/Base.lproj/Main.storyboard +0 -24
  226. package/ios/TestApp/TestApp/Info.plist +0 -45
  227. package/ios/TestApp/TestApp/TestApp.entitlements +0 -10
  228. package/ios/TestApp/TestApp/ViewController.swift +0 -20
  229. package/ios/TestApp/TestApp.entitlements +0 -8
  230. package/ios/TestApp/ViewController.swift +0 -20
package/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## v0.7.0
2
+
3
+ - based on current Capacitor 3.5.1 plugin template
4
+ - iOS - access when a device is locked
5
+ - fixed keys() on Web
6
+
7
+ ## v0.6.2
8
+
9
+ - fix keys() serialization error on Android
10
+
1
11
  ## v0.6.1
2
12
 
3
13
  - fix keys() serializable error on iOS
@@ -1,13 +1,18 @@
1
+ require 'json'
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4
+
1
5
  Pod::Spec.new do |s|
2
6
  s.name = 'CapacitorSecureStoragePlugin'
3
- s.version = '0.6.1'
4
- s.summary = 'securely store secrets such as usernames, passwords, tokens, certificates or other sensitive information (strings) on iOS & Android'
5
- s.license = 'MIT'
6
- s.homepage = 'https://github.com/martinkasa/capacitor-secure-storage-plugin.git'
7
- s.author = 'martinkasa'
8
- s.source = { :git => 'https://github.com/martinkasa/capacitor-secure-storage-plugin.git', :tag => s.version.to_s }
7
+ s.version = package['version']
8
+ s.summary = package['description']
9
+ s.license = package['license']
10
+ s.homepage = package['repository']['url']
11
+ s.author = package['author']
12
+ s.source = { :git => package['repository']['url'], :tag => s.version.to_s }
9
13
  s.source_files = 'ios/Plugin/**/*.{swift,h,m,c,cc,mm,cpp}'
10
14
  s.ios.deployment_target = '12.0'
11
15
  s.dependency 'Capacitor'
12
16
  s.dependency 'SwiftKeychainWrapper'
13
- end
17
+ s.swift_version = '5.1'
18
+ end
package/README.md CHANGED
@@ -3,20 +3,19 @@
3
3
  Capacitor plugin for storing string values securly on iOS and Android.
4
4
 
5
5
  ## How to install
6
+
6
7
  For Capacitor v3
7
8
 
8
9
  ```
9
10
  npm install capacitor-secure-storage-plugin
10
11
  ```
11
12
 
12
-
13
13
  For Capacitor v2 - install with fixed version 0.5.1
14
14
 
15
15
  ```
16
16
  npm install capacitor-secure-storage-plugin@0.5.1
17
17
  ```
18
18
 
19
-
20
19
  ## Usage
21
20
 
22
21
  For Capacitor v3
@@ -42,9 +41,9 @@ First line is needed because of web part of the plugin (current behavior of Capa
42
41
 
43
42
  ### Android
44
43
 
45
- In Android you have to register plugins manually in MainActivity class of your app.
44
+ In Android with Capacitor v2 you have to register plugins manually in MainActivity class of your app.
46
45
 
47
- https://capacitor.ionicframework.com/docs/plugins/android/#export-to-capacitor
46
+ https://capacitorjs.com/docs/v2/plugins/android#export-to-capacitor
48
47
 
49
48
  ```
50
49
  import com.whitestein.securestorage.SecureStoragePlugin;
@@ -73,9 +72,11 @@ public class MainActivity extends BridgeActivity {
73
72
 
74
73
  * **keys**(): Promise<{ value: string[] }>
75
74
  * **set**(options: { key: string; value: string }): Promise<{ value: boolean }>
75
+ - return true in case of success otherwise throws an error
76
76
  * **remove**(options: { key: string }): Promise<{ value: boolean }>
77
+ - return true in case of success otherwise throws an error
77
78
  * **clear**(): Promise<{ value: boolean }>
78
- - set, remove and clear return true in case of success and false in case of error
79
+ - return true in case of success otherwise throws an error
79
80
 
80
81
  - **getPlatform**(): Promise<{ value: string }>
81
82
  - returns which implementation is used - one of 'web', 'ios' or 'android'
@@ -1,7 +1,8 @@
1
1
  ext {
2
- junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.12'
3
- androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.1.1'
4
- androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.2.0'
2
+ junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.1'
3
+ androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.2.0'
4
+ androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.1.2'
5
+ androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.3.0'
5
6
  }
6
7
 
7
8
  buildscript {
@@ -10,17 +11,17 @@ buildscript {
10
11
  jcenter()
11
12
  }
12
13
  dependencies {
13
- classpath 'com.android.tools.build:gradle:3.6.1'
14
+ classpath 'com.android.tools.build:gradle:4.2.1'
14
15
  }
15
16
  }
16
17
 
17
18
  apply plugin: 'com.android.library'
18
19
 
19
20
  android {
20
- compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 29
21
+ compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 30
21
22
  defaultConfig {
22
23
  minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 21
23
- targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 29
24
+ targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 30
24
25
  versionCode 1
25
26
  versionName "1.0"
26
27
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -34,18 +35,23 @@ android {
34
35
  lintOptions {
35
36
  abortOnError false
36
37
  }
38
+ compileOptions {
39
+ sourceCompatibility JavaVersion.VERSION_1_8
40
+ targetCompatibility JavaVersion.VERSION_1_8
41
+ }
37
42
  }
38
43
 
39
44
  repositories {
40
45
  google()
41
- jcenter()
42
46
  mavenCentral()
47
+ jcenter()
43
48
  }
44
49
 
45
50
 
46
51
  dependencies {
47
52
  implementation fileTree(dir: 'libs', include: ['*.jar'])
48
53
  implementation project(':capacitor-android')
54
+ implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
49
55
  testImplementation "junit:junit:$junitVersion"
50
56
  androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
51
57
  androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
@@ -1,5 +1,3 @@
1
-
2
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
- package="com.whitestein.securestorage.capacitorsecurestorageplugin">
4
- </manifest>
5
-
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ package="com.whitestein.securestorage">
3
+ </manifest>
@@ -1,19 +1,19 @@
1
1
  package com.whitestein.securestorage;
2
2
 
3
3
  import android.content.Context;
4
-
4
+ import com.getcapacitor.JSArray;
5
5
  import com.getcapacitor.JSObject;
6
6
  import com.getcapacitor.NativePlugin;
7
7
  import com.getcapacitor.Plugin;
8
8
  import com.getcapacitor.PluginCall;
9
9
  import com.getcapacitor.PluginMethod;
10
10
  import com.getcapacitor.annotation.CapacitorPlugin;
11
-
12
11
  import java.nio.charset.Charset;
13
12
  import java.util.Set;
14
13
 
15
- @CapacitorPlugin()
16
- public class SecureStoragePlugin extends Plugin {
14
+ @CapacitorPlugin(name = "SecureStoragePlugin")
15
+ public class SecureStoragePluginPlugin extends Plugin {
16
+
17
17
  private PasswordStorageHelper passwordStorageHelper;
18
18
 
19
19
  @Override
@@ -26,43 +26,52 @@ public class SecureStoragePlugin extends Plugin {
26
26
  this.passwordStorageHelper = new PasswordStorageHelper(context);
27
27
  }
28
28
 
29
- @PluginMethod()
29
+ @PluginMethod
30
30
  public void set(PluginCall call) {
31
31
  String key = call.getString("key");
32
32
  String value = call.getString("value");
33
+ if(value == null) {
34
+ value = "";
35
+ }
36
+
33
37
  try {
34
- call.resolve(this._set(key,value));
38
+ call.resolve(this._set(key, value));
35
39
  } catch (Exception exception) {
36
40
  call.reject(exception.getMessage(), exception);
37
41
  }
38
42
  }
39
43
 
40
- @PluginMethod()
44
+ @PluginMethod
41
45
  public void get(PluginCall call) {
42
46
  String key = call.getString("key");
43
47
  try {
44
- call.resolve(this._get(key));
48
+ call.resolve(this._get(key));
45
49
  } catch (Exception exception) {
46
50
  call.reject(exception.getMessage(), exception);
47
51
  }
48
52
  }
49
53
 
50
- @PluginMethod()
54
+ @PluginMethod
51
55
  public void keys(PluginCall call) {
52
56
  call.resolve(this._keys());
53
57
  }
54
58
 
55
- @PluginMethod()
59
+ @PluginMethod
56
60
  public void remove(PluginCall call) {
57
61
  String key = call.getString("key");
58
62
  try {
59
- call.resolve(this._remove(key));
63
+ if(this.has(key)) {
64
+ call.resolve(this._remove(key));
65
+ }
66
+ else {
67
+ call.reject("Item with given key does not exist");
68
+ }
60
69
  } catch (Exception exception) {
61
70
  call.reject(exception.getMessage(), exception);
62
71
  }
63
72
  }
64
73
 
65
- @PluginMethod()
74
+ @PluginMethod
66
75
  public void clear(PluginCall call) {
67
76
  try {
68
77
  call.resolve(this._clear());
@@ -71,7 +80,7 @@ public class SecureStoragePlugin extends Plugin {
71
80
  }
72
81
  }
73
82
 
74
- @PluginMethod()
83
+ @PluginMethod
75
84
  public void getPlatform(PluginCall call) {
76
85
  call.resolve(this._getPlatform());
77
86
  }
@@ -83,9 +92,18 @@ public class SecureStoragePlugin extends Plugin {
83
92
  return ret;
84
93
  }
85
94
 
95
+ public boolean has(String key) throws Exception {
96
+ byte[] buffer = this.passwordStorageHelper.getData(key);
97
+ if (buffer != null) {
98
+ return true;
99
+ } else {
100
+ return false;
101
+ }
102
+ }
103
+
86
104
  public JSObject _get(String key) throws Exception {
87
105
  byte[] buffer = this.passwordStorageHelper.getData(key);
88
- if (buffer != null && buffer.length > 0) {
106
+ if (buffer != null) {
89
107
  String value = new String(buffer, Charset.forName("UTF-8"));
90
108
  JSObject ret = new JSObject();
91
109
  ret.put("value", value);
@@ -98,7 +116,7 @@ public class SecureStoragePlugin extends Plugin {
98
116
  public JSObject _keys() {
99
117
  String[] keys = this.passwordStorageHelper.keys();
100
118
  JSObject ret = new JSObject();
101
- ret.put("value", keys);
119
+ ret.put("value", JSArray.from(keys));
102
120
  return ret;
103
121
  }
104
122
 
@@ -121,5 +139,4 @@ public class SecureStoragePlugin extends Plugin {
121
139
  ret.put("value", "android");
122
140
  return ret;
123
141
  }
124
-
125
142
  }
package/dist/docs.json ADDED
@@ -0,0 +1,93 @@
1
+ {
2
+ "api": {
3
+ "name": "SecureStoragePluginPlugin",
4
+ "slug": "securestoragepluginplugin",
5
+ "docs": "",
6
+ "tags": [],
7
+ "methods": [
8
+ {
9
+ "name": "get",
10
+ "signature": "(options: { key: string; }) => Promise<{ value: string; }>",
11
+ "parameters": [
12
+ {
13
+ "name": "options",
14
+ "docs": "",
15
+ "type": "{ key: string; }"
16
+ }
17
+ ],
18
+ "returns": "Promise<{ value: string; }>",
19
+ "tags": [],
20
+ "docs": "",
21
+ "complexTypes": [],
22
+ "slug": "get"
23
+ },
24
+ {
25
+ "name": "set",
26
+ "signature": "(options: { key: string; value: string; }) => Promise<{ value: boolean; }>",
27
+ "parameters": [
28
+ {
29
+ "name": "options",
30
+ "docs": "",
31
+ "type": "{ key: string; value: string; }"
32
+ }
33
+ ],
34
+ "returns": "Promise<{ value: boolean; }>",
35
+ "tags": [],
36
+ "docs": "",
37
+ "complexTypes": [],
38
+ "slug": "set"
39
+ },
40
+ {
41
+ "name": "remove",
42
+ "signature": "(options: { key: string; }) => Promise<{ value: boolean; }>",
43
+ "parameters": [
44
+ {
45
+ "name": "options",
46
+ "docs": "",
47
+ "type": "{ key: string; }"
48
+ }
49
+ ],
50
+ "returns": "Promise<{ value: boolean; }>",
51
+ "tags": [],
52
+ "docs": "",
53
+ "complexTypes": [],
54
+ "slug": "remove"
55
+ },
56
+ {
57
+ "name": "clear",
58
+ "signature": "() => Promise<{ value: boolean; }>",
59
+ "parameters": [],
60
+ "returns": "Promise<{ value: boolean; }>",
61
+ "tags": [],
62
+ "docs": "",
63
+ "complexTypes": [],
64
+ "slug": "clear"
65
+ },
66
+ {
67
+ "name": "keys",
68
+ "signature": "() => Promise<{ value: string[]; }>",
69
+ "parameters": [],
70
+ "returns": "Promise<{ value: string[]; }>",
71
+ "tags": [],
72
+ "docs": "",
73
+ "complexTypes": [],
74
+ "slug": "keys"
75
+ },
76
+ {
77
+ "name": "getPlatform",
78
+ "signature": "() => Promise<{ value: string; }>",
79
+ "parameters": [],
80
+ "returns": "Promise<{ value: string; }>",
81
+ "tags": [],
82
+ "docs": "",
83
+ "complexTypes": [],
84
+ "slug": "getplatform"
85
+ }
86
+ ],
87
+ "properties": []
88
+ },
89
+ "interfaces": [],
90
+ "enums": [],
91
+ "typeAliases": [],
92
+ "pluginConfigs": []
93
+ }
@@ -1 +1,2 @@
1
+ export {};
1
2
  //# sourceMappingURL=definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface SecureStoragePluginPlugin {\n get(options: { key: string }): 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 keys(): Promise<{ value: string[] }>;\n getPlatform(): Promise<{ value: string }>;\n}\n"]}
package/dist/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { registerPlugin } from '@capacitor/core';
2
2
  const SecureStoragePlugin = registerPlugin('SecureStoragePlugin', {
3
- web: () => import('./web').then((m) => new m.SecureStoragePluginWeb()),
3
+ web: () => import('./web').then(m => new m.SecureStoragePluginWeb()),
4
4
  });
5
5
  export * from './definitions';
6
6
  export { SecureStoragePlugin };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,mBAAmB,GAAG,cAAc,CAA4B,qBAAqB,EAAE;IAC3F,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC;CACvE,CAAC,CAAC;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,mBAAmB,GAAG,cAAc,CACxC,qBAAqB,EACrB;IACE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC;CACrE,CACF,CAAC;AAEF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type { SecureStoragePluginPlugin } from './definitions';\n\nconst SecureStoragePlugin = registerPlugin<SecureStoragePluginPlugin>(\n 'SecureStoragePlugin',\n {\n web: () => import('./web').then(m => new m.SecureStoragePluginWeb()),\n },\n);\n\nexport * from './definitions';\nexport { SecureStoragePlugin };\n"]}
package/dist/esm/web.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import { WebPlugin } from '@capacitor/core';
2
- import { SecureStoragePluginPlugin } from './definitions';
2
+ import type { SecureStoragePluginPlugin } from './definitions';
3
3
  export declare class SecureStoragePluginWeb extends WebPlugin implements SecureStoragePluginPlugin {
4
4
  PREFIX: string;
5
- constructor();
6
5
  get(options: {
7
6
  key: string;
8
7
  }): Promise<{
@@ -29,6 +28,5 @@ export declare class SecureStoragePluginWeb extends WebPlugin implements SecureS
29
28
  value: string;
30
29
  }>;
31
30
  private addPrefix;
31
+ private removePrefix;
32
32
  }
33
- declare const SecureStoragePlugin: SecureStoragePluginWeb;
34
- export { SecureStoragePlugin };
package/dist/esm/web.js CHANGED
@@ -1,17 +1,16 @@
1
1
  import { WebPlugin } from '@capacitor/core';
2
2
  export class SecureStoragePluginWeb extends WebPlugin {
3
3
  constructor() {
4
- super({
5
- name: 'SecureStoragePlugin',
6
- platforms: ['web'],
7
- });
4
+ super(...arguments);
8
5
  this.PREFIX = 'cap_sec_';
9
6
  this.addPrefix = (key) => this.PREFIX + key;
7
+ this.removePrefix = (key) => key.replace(this.PREFIX, '');
10
8
  }
11
9
  get(options) {
12
- return localStorage.getItem(this.addPrefix(options.key)) !== null
10
+ const value = localStorage.getItem(this.addPrefix(options.key));
11
+ return value !== null
13
12
  ? Promise.resolve({
14
- value: atob(localStorage.getItem(this.addPrefix(options.key))),
13
+ value: atob(value),
15
14
  })
16
15
  : Promise.reject('Item with given key does not exist');
17
16
  }
@@ -20,8 +19,13 @@ export class SecureStoragePluginWeb extends WebPlugin {
20
19
  return Promise.resolve({ value: true });
21
20
  }
22
21
  remove(options) {
23
- localStorage.removeItem(this.addPrefix(options.key));
24
- return Promise.resolve({ value: true });
22
+ if (localStorage.getItem(this.addPrefix(options.key))) {
23
+ localStorage.removeItem(this.addPrefix(options.key));
24
+ return Promise.resolve({ value: true });
25
+ }
26
+ else {
27
+ return Promise.reject('Item with given key does not exist');
28
+ }
25
29
  }
26
30
  clear() {
27
31
  for (const key in localStorage) {
@@ -32,13 +36,13 @@ export class SecureStoragePluginWeb extends WebPlugin {
32
36
  return Promise.resolve({ value: true });
33
37
  }
34
38
  keys() {
35
- const keys = Object.keys(localStorage).filter((k) => k.indexOf(this.PREFIX) === 0);
39
+ const keys = Object.keys(localStorage)
40
+ .filter(k => k.indexOf(this.PREFIX) === 0)
41
+ .map(this.removePrefix);
36
42
  return Promise.resolve({ value: keys });
37
43
  }
38
44
  getPlatform() {
39
45
  return Promise.resolve({ value: 'web' });
40
46
  }
41
47
  }
42
- const SecureStoragePlugin = new SecureStoragePluginWeb();
43
- export { SecureStoragePlugin };
44
48
  //# sourceMappingURL=web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IAEnD;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,CAAC,KAAK,CAAC;SACnB,CAAC,CAAC;QALL,WAAM,GAAG,UAAU,CAAC;QAwCZ,cAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IAlCvD,CAAC;IAED,GAAG,CAAC,OAAwB;QAC1B,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;YAC/D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aAC/D,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC3D,CAAC;IACD,GAAG,CAAC,OAAuC;QACzC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,CAAC,OAAwB;QAC7B,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,KAAK;QACH,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;YAC9B,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAClC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC9B;SACF;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;CAGF;AAED,MAAM,mBAAmB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,OAAO,sBACX,SAAQ,SAAS;IADnB;;QAGE,WAAM,GAAG,UAAU,CAAC;QAyCZ,cAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAC/C,iBAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAzCC,GAAG,CAAC,OAAwB;QAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,KAAK,KAAK,IAAI;YACnB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;aACnB,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;IAC3D,CAAC;IACD,GAAG,CAAC,OAAuC;QACzC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,CAAC,OAAwB;QAC7B,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;YACrD,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACzC;aAAM;YACL,OAAO,OAAO,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;SAC7D;IACH,CAAC;IACD,KAAK;QACH,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;YAC9B,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAClC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC9B;SACF;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACzC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;CAIF","sourcesContent":["import { WebPlugin } from '@capacitor/core';\nimport type { SecureStoragePluginPlugin } from './definitions';\n\nexport class SecureStoragePluginWeb\n extends WebPlugin\n implements SecureStoragePluginPlugin {\n PREFIX = 'cap_sec_';\n\n get(options: { key: string }): Promise<{ value: string }> {\n const value = localStorage.getItem(this.addPrefix(options.key));\n return value !== null\n ? Promise.resolve({\n value: atob(value),\n })\n : Promise.reject('Item with given key does not exist');\n }\n set(options: { key: string; value: string }): Promise<{ value: boolean }> {\n localStorage.setItem(this.addPrefix(options.key), btoa(options.value));\n return Promise.resolve({ value: true });\n }\n remove(options: { key: string }): Promise<{ value: boolean }> {\n if (localStorage.getItem(this.addPrefix(options.key))) {\n localStorage.removeItem(this.addPrefix(options.key));\n return Promise.resolve({ value: true });\n } else {\n return Promise.reject('Item with given key does not exist');\n }\n }\n clear(): Promise<{ value: boolean }> {\n for (const key in localStorage) {\n if (key.indexOf(this.PREFIX) === 0) {\n localStorage.removeItem(key);\n }\n }\n return Promise.resolve({ value: true });\n }\n keys(): Promise<{ value: string[] }> {\n const keys = Object.keys(localStorage)\n .filter(k => k.indexOf(this.PREFIX) === 0)\n .map(this.removePrefix);\n return Promise.resolve({ value: keys });\n }\n\n getPlatform(): Promise<{ value: string }> {\n return Promise.resolve({ value: 'web' });\n }\n\n private addPrefix = (key: string) => this.PREFIX + key;\n private removePrefix = (key: string) => key.replace(this.PREFIX, '');\n}\n"]}
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@capacitor/core');
6
+
7
+ const SecureStoragePlugin = core.registerPlugin('SecureStoragePlugin', {
8
+ web: () => Promise.resolve().then(function () { return web; }).then(m => new m.SecureStoragePluginWeb()),
9
+ });
10
+
11
+ class SecureStoragePluginWeb extends core.WebPlugin {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.PREFIX = 'cap_sec_';
15
+ this.addPrefix = (key) => this.PREFIX + key;
16
+ this.removePrefix = (key) => key.replace(this.PREFIX, '');
17
+ }
18
+ get(options) {
19
+ const value = localStorage.getItem(this.addPrefix(options.key));
20
+ return value !== null
21
+ ? Promise.resolve({
22
+ value: atob(value),
23
+ })
24
+ : Promise.reject('Item with given key does not exist');
25
+ }
26
+ set(options) {
27
+ localStorage.setItem(this.addPrefix(options.key), btoa(options.value));
28
+ return Promise.resolve({ value: true });
29
+ }
30
+ remove(options) {
31
+ if (localStorage.getItem(this.addPrefix(options.key))) {
32
+ localStorage.removeItem(this.addPrefix(options.key));
33
+ return Promise.resolve({ value: true });
34
+ }
35
+ else {
36
+ return Promise.reject('Item with given key does not exist');
37
+ }
38
+ }
39
+ clear() {
40
+ for (const key in localStorage) {
41
+ if (key.indexOf(this.PREFIX) === 0) {
42
+ localStorage.removeItem(key);
43
+ }
44
+ }
45
+ return Promise.resolve({ value: true });
46
+ }
47
+ keys() {
48
+ const keys = Object.keys(localStorage)
49
+ .filter(k => k.indexOf(this.PREFIX) === 0)
50
+ .map(this.removePrefix);
51
+ return Promise.resolve({ value: keys });
52
+ }
53
+ getPlatform() {
54
+ return Promise.resolve({ value: 'web' });
55
+ }
56
+ }
57
+
58
+ var web = /*#__PURE__*/Object.freeze({
59
+ __proto__: null,
60
+ SecureStoragePluginWeb: SecureStoragePluginWeb
61
+ });
62
+
63
+ exports.SecureStoragePlugin = SecureStoragePlugin;
64
+ //# sourceMappingURL=plugin.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst SecureStoragePlugin = registerPlugin('SecureStoragePlugin', {\n web: () => import('./web').then(m => new m.SecureStoragePluginWeb()),\n});\nexport * from './definitions';\nexport { SecureStoragePlugin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class SecureStoragePluginWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.PREFIX = 'cap_sec_';\n this.addPrefix = (key) => this.PREFIX + key;\n this.removePrefix = (key) => key.replace(this.PREFIX, '');\n }\n get(options) {\n const value = localStorage.getItem(this.addPrefix(options.key));\n return value !== null\n ? Promise.resolve({\n value: atob(value),\n })\n : Promise.reject('Item with given key does not exist');\n }\n set(options) {\n localStorage.setItem(this.addPrefix(options.key), btoa(options.value));\n return Promise.resolve({ value: true });\n }\n remove(options) {\n if (localStorage.getItem(this.addPrefix(options.key))) {\n localStorage.removeItem(this.addPrefix(options.key));\n return Promise.resolve({ value: true });\n }\n else {\n return Promise.reject('Item with given key does not exist');\n }\n }\n clear() {\n for (const key in localStorage) {\n if (key.indexOf(this.PREFIX) === 0) {\n localStorage.removeItem(key);\n }\n }\n return Promise.resolve({ value: true });\n }\n keys() {\n const keys = Object.keys(localStorage)\n .filter(k => k.indexOf(this.PREFIX) === 0)\n .map(this.removePrefix);\n return Promise.resolve({ value: keys });\n }\n getPlatform() {\n return Promise.resolve({ value: 'web' });\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
package/dist/plugin.js ADDED
@@ -0,0 +1,67 @@
1
+ var capacitorSecureStoragePlugin = (function (exports, core) {
2
+ 'use strict';
3
+
4
+ const SecureStoragePlugin = core.registerPlugin('SecureStoragePlugin', {
5
+ web: () => Promise.resolve().then(function () { return web; }).then(m => new m.SecureStoragePluginWeb()),
6
+ });
7
+
8
+ class SecureStoragePluginWeb extends core.WebPlugin {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.PREFIX = 'cap_sec_';
12
+ this.addPrefix = (key) => this.PREFIX + key;
13
+ this.removePrefix = (key) => key.replace(this.PREFIX, '');
14
+ }
15
+ get(options) {
16
+ const value = localStorage.getItem(this.addPrefix(options.key));
17
+ return value !== null
18
+ ? Promise.resolve({
19
+ value: atob(value),
20
+ })
21
+ : Promise.reject('Item with given key does not exist');
22
+ }
23
+ set(options) {
24
+ localStorage.setItem(this.addPrefix(options.key), btoa(options.value));
25
+ return Promise.resolve({ value: true });
26
+ }
27
+ remove(options) {
28
+ if (localStorage.getItem(this.addPrefix(options.key))) {
29
+ localStorage.removeItem(this.addPrefix(options.key));
30
+ return Promise.resolve({ value: true });
31
+ }
32
+ else {
33
+ return Promise.reject('Item with given key does not exist');
34
+ }
35
+ }
36
+ clear() {
37
+ for (const key in localStorage) {
38
+ if (key.indexOf(this.PREFIX) === 0) {
39
+ localStorage.removeItem(key);
40
+ }
41
+ }
42
+ return Promise.resolve({ value: true });
43
+ }
44
+ keys() {
45
+ const keys = Object.keys(localStorage)
46
+ .filter(k => k.indexOf(this.PREFIX) === 0)
47
+ .map(this.removePrefix);
48
+ return Promise.resolve({ value: keys });
49
+ }
50
+ getPlatform() {
51
+ return Promise.resolve({ value: 'web' });
52
+ }
53
+ }
54
+
55
+ var web = /*#__PURE__*/Object.freeze({
56
+ __proto__: null,
57
+ SecureStoragePluginWeb: SecureStoragePluginWeb
58
+ });
59
+
60
+ exports.SecureStoragePlugin = SecureStoragePlugin;
61
+
62
+ Object.defineProperty(exports, '__esModule', { value: true });
63
+
64
+ return exports;
65
+
66
+ })({}, capacitorExports);
67
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst SecureStoragePlugin = registerPlugin('SecureStoragePlugin', {\n web: () => import('./web').then(m => new m.SecureStoragePluginWeb()),\n});\nexport * from './definitions';\nexport { SecureStoragePlugin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class SecureStoragePluginWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.PREFIX = 'cap_sec_';\n this.addPrefix = (key) => this.PREFIX + key;\n this.removePrefix = (key) => key.replace(this.PREFIX, '');\n }\n get(options) {\n const value = localStorage.getItem(this.addPrefix(options.key));\n return value !== null\n ? Promise.resolve({\n value: atob(value),\n })\n : Promise.reject('Item with given key does not exist');\n }\n set(options) {\n localStorage.setItem(this.addPrefix(options.key), btoa(options.value));\n return Promise.resolve({ value: true });\n }\n remove(options) {\n if (localStorage.getItem(this.addPrefix(options.key))) {\n localStorage.removeItem(this.addPrefix(options.key));\n return Promise.resolve({ value: true });\n }\n else {\n return Promise.reject('Item with given key does not exist');\n }\n }\n clear() {\n for (const key in localStorage) {\n if (key.indexOf(this.PREFIX) === 0) {\n localStorage.removeItem(key);\n }\n }\n return Promise.resolve({ value: true });\n }\n keys() {\n const keys = Object.keys(localStorage)\n .filter(k => k.indexOf(this.PREFIX) === 0)\n .map(this.removePrefix);\n return Promise.resolve({ value: keys });\n }\n getPlatform() {\n return Promise.resolve({ value: 'web' });\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}