
Research
/Security News
10 npm Typosquatted Packages Deploy Multi-Stage Credential Harvester
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.
@capgo/capacitor-data-storage-sqlite
Advanced tools

@capgo/capacitor-data-storage-sqlite
CAPACITOR 6
Note from the Owner
This Plugin has been transfered to Capgo org after his original creator @jepiqueau decide to retire.
We will forever be thankful for the work he did.
Capacitor Data Storage SQlite Plugin is a custom Native Capacitor plugin providing a key-value permanent store for simple data of type string only to SQLite on IOS, Android and Electron platforms and to IndexDB for the Web platform.
| Maintainer | GitHub | Social |
|---|---|---|
| Martin Donadieu | riderx | |
| Quéau Jean Pierre | jepiqueau |
The plugin follows the guidelines from the Capacitor Team,
meaning that it will not work in IE11 without additional JavaScript transformations, e.g. with Babel.
The most complete doc is available here: https://capgo.app/docs/plugins/data-storage-sqlite/
npm install --save @capgo/capacitor-data-storage-sqlite
npx cap sync
On iOS, no further steps are needed.
On Android, no further steps are needed.
On Web,
npm install --save localforage
npm install --save @capacitor-community/electron
npx cap add @capacitor-community/electron
Go to the Electron folder of your application
cd electron
npm install --save sqlite3
npm install --save-dev @types/sqlite3
npm run build
cd ..
npx cap sync @capacitor-community/electron
Then build YOUR_APPLICATION
npm run build
npx cap copy
npx cap copy @capacitor-community/electron
npx cap open ios
npx cap open android
npx cap open @capacitor-community/electron
ionic serve
No configuration required for this plugin
| Name | Android | iOS | Electron | Web |
|---|---|---|---|---|
| openStore (non-encrypted DB) | ✅ | ✅ | ✅ | ✅ |
| openStore (encrypted DB) | ✅ | ✅ | ❌ | ❌ |
| closeStore | ✅ | ✅ | ✅ | ❌ |
| isStoreOpen | ✅ | ✅ | ✅ | ❌ |
| isStoreExists | ✅ | ✅ | ✅ | ❌ |
| deleteStore | ✅ | ✅ | ✅ | ❌ |
| setTable | ✅ | ✅ | ✅ | ✅ |
| set | ✅ | ✅ | ✅ | ✅ |
| get | ✅ | ✅ | ✅ | ✅ |
| iskey | ✅ | ✅ | ✅ | ✅ |
| keys | ✅ | ✅ | ✅ | ✅ |
| values | ✅ | ✅ | ✅ | ✅ |
| filtervalues | ✅ | ✅ | ✅ | ✅ |
| keysvalues | ✅ | ✅ | ✅ | ✅ |
| remove | ✅ | ✅ | ✅ | ✅ |
| clear | ✅ | ✅ | ✅ | ✅ |
| isTable | ✅ | ✅ | ✅ | ✅ |
| tables | ✅ | ✅ | ✅ | ✅ |
| deleteTable | ✅ | ✅ | ✅ | ❌ |
| isJsonValid | ✅ | ✅ | ✅ | ✅ |
| importFromJson | ✅ | ✅ | ✅ | ✅ |
| exportToJson | ✅ | ✅ | ✅ | ✅ |
The IOS & Android code use SQLCipher allowing for database encryption.
The Android code is now based on androidx.sqlite. The database is not closed anymore after each transaction for performance improvement.
You must manage the close of the database before opening a new database.
The Web code use localforage package to store the datastore in the Browser.
The Electron code use sqlite3package
Thanks goes to these wonderful people (emoji key):
Jean Pierre Quéau 💻 | Matthew Burke 📖 | Kevin van Schaijk 💻 | Andy Garbett 📖 |
openStore(...)closeStore(...)isStoreOpen(...)isStoreExists(...)deleteStore(...)setTable(...)set(...)get(...)remove(...)clear()iskey(...)keys()values()filtervalues(...)keysvalues()isTable(...)tables()deleteTable(...)importFromJson(...)isJsonValid(...)exportToJson()getPluginVersion()openStore(options: capOpenStorageOptions) => Promise<void>
Open a store
| Param | Type | Description |
|---|---|---|
options | capOpenStorageOptions | : capOpenStorageOptions |
Since: 0.0.1
closeStore(options: capStorageOptions) => Promise<void>
Close the Store
| Param | Type | Description |
|---|---|---|
options | capStorageOptions | : capStorageOptions |
Since: 3.0.0
isStoreOpen(options: capStorageOptions) => Promise<capDataStorageResult>
Check if the Store is opened
| Param | Type | Description |
|---|---|---|
options | capStorageOptions | : capStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 3.0.0
isStoreExists(options: capStorageOptions) => Promise<capDataStorageResult>
Check if the Store exists
| Param | Type | Description |
|---|---|---|
options | capStorageOptions | : capStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 3.0.0
deleteStore(options: capOpenStorageOptions) => Promise<void>
Delete a store
| Param | Type | Description |
|---|---|---|
options | capOpenStorageOptions | : capOpenStorageOptions |
Since: 0.0.1
setTable(options: capTableStorageOptions) => Promise<void>
Set or Add a table to an existing store
| Param | Type | Description |
|---|---|---|
options | capTableStorageOptions | : capTableStorageOptions |
Since: 0.0.1
set(options: capDataStorageOptions) => Promise<void>
Store a data with given key and value
| Param | Type | Description |
|---|---|---|
options | capDataStorageOptions | : capDataStorageOptions |
Since: 0.0.1
get(options: capDataStorageOptions) => Promise<capValueResult>
Retrieve a data value for a given data key
| Param | Type | Description |
|---|---|---|
options | capDataStorageOptions | : capDataStorageOptions |
Returns: Promise<capValueResult>
Since: 0.0.1
remove(options: capDataStorageOptions) => Promise<void>
Remove a data with given key
| Param | Type | Description |
|---|---|---|
options | capDataStorageOptions | : capDataStorageOptions |
Since: 0.0.1
clear() => Promise<void>
Clear the Data Store (delete all keys)
Since: 0.0.1
iskey(options: capDataStorageOptions) => Promise<capDataStorageResult>
Check if a data key exists
| Param | Type | Description |
|---|---|---|
options | capDataStorageOptions | : capDataStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 0.0.1
keys() => Promise<capKeysResult>
Get the data key list
Returns: Promise<capKeysResult>
Since: 0.0.1
values() => Promise<capValuesResult>
Get the data value list
Returns: Promise<capValuesResult>
Since: 0.0.1
filtervalues(options: capFilterStorageOptions) => Promise<capValuesResult>
Get the data value list for filter keys
| Param | Type | Description |
|---|---|---|
options | capFilterStorageOptions | : capFilterStorageOptions |
Returns: Promise<capValuesResult>
Since: 2.4.2
keysvalues() => Promise<capKeysValuesResult>
Get the data key/value pair list
Returns: Promise<capKeysValuesResult>
Since: 0.0.1
isTable(options: capTableStorageOptions) => Promise<capDataStorageResult>
Check if a table exists
| Param | Type | Description |
|---|---|---|
options | capTableStorageOptions | : capTableStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 3.0.0
tables() => Promise<capTablesResult>
Get the table list for the current store
Returns: Promise<capTablesResult>
Since: 3.0.0
deleteTable(options: capTableStorageOptions) => Promise<void>
Delete a table
| Param | Type | Description |
|---|---|---|
options | capTableStorageOptions | : capTableStorageOptions |
Since: 3.0.0
importFromJson(options: capStoreImportOptions) => Promise<capDataStorageChanges>
Import a database From a JSON
| Param | Type |
|---|---|
options | capStoreImportOptions |
Returns: Promise<capDataStorageChanges>
Since: 3.2.0
isJsonValid(options: capStoreImportOptions) => Promise<capDataStorageResult>
Check the validity of a JSON Object
| Param | Type |
|---|---|
options | capStoreImportOptions |
Returns: Promise<capDataStorageResult>
Since: 3.2.0
exportToJson() => Promise<capStoreJson>
Export the given database to a JSON Object
Returns: Promise<capStoreJson>
Since: 3.2.0
getPluginVersion() => Promise<{ version: string; }>
Get the native Capacitor plugin version
Returns: Promise<{ version: string; }>
| Prop | Type | Description |
|---|---|---|
database | string | The storage database name |
table | string | The storage table name |
encrypted | boolean | Set to true for database encryption |
mode | string | * Set the mode for database encryption ["encryption", "secret","newsecret"] |
| Prop | Type | Description |
|---|---|---|
database | string | The storage name |
| Prop | Type | Description |
|---|---|---|
result | boolean | result set to true when successful else false |
message | string | a returned message |
| Prop | Type | Description |
|---|---|---|
table | string | The storage table name |
| Prop | Type | Description |
|---|---|---|
key | string | The data name |
value | string | The data value when required |
| Prop | Type | Description |
|---|---|---|
value | string | the data value for a given data key |
| Prop | Type | Description |
|---|---|---|
keys | string[] | the data key list as an Array |
| Prop | Type | Description |
|---|---|---|
values | string[] | the data values list as an Array |
| Prop | Type | Description |
|---|---|---|
filter | string | The filter data for filtering keys ['%filter', 'filter', 'filter%'] for [starts with filter, contains filter, ends with filter] |
| Prop | Type | Description |
|---|---|---|
keysvalues | any[] | the data keys/values list as an Array of {key:string,value:string} |
| Prop | Type | Description |
|---|---|---|
tables | string[] | the tables list as an Array |
| Prop | Type | Description |
|---|---|---|
changes | number | the number of changes from an importFromJson command |
| Prop | Type | Description |
|---|---|---|
jsonstring | string | Set the JSON object to import |
| Prop | Type | Description |
|---|---|---|
export | JsonStore | an export JSON object |
| Prop | Type | Description |
|---|---|---|
database | string | The database name |
encrypted | boolean | Set to true (database encryption) / false iOS & Android only |
tables | JsonTable[] | * Array of Table (JsonTable) |
| Prop | Type | Description |
|---|---|---|
name | string | The database name |
values | capDataStorageOptions[] | * Array of Values (capDataStorageOptions) |
This project follows the all-contributors specification. Contributions of any kind welcome!
Retirement message of @jepiqueau -->
I have been dedicated to developing and maintaining this plugin for many years since the inception of Ionic Capacitor. Now, at 73+ years old, and with my MacBook Pro becoming obsolete for running Capacitor 6 for iOS, I have made the decision to cease maintenance of the plugin. If anyone wishes to take ownership of this plugin, they are welcome to do so.
It has been a great honor to be part of this development journey alongside the developer community. I am grateful to see many of you following me on this path and incorporating the plugin into your applications. Your comments and suggestions have motivated me to continuously improve it.
I have made this decision due to several family-related troubles that require my full attention and time. Therefore, I will not be stepping back. Thank you to all of you for your support.
End <--
FAQs
SQLite Storage of key/value strings pair
We found that @capgo/capacitor-data-storage-sqlite demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.