
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
pouchdb-adapter-react-native-sqlite
Advanced tools
PouchDB adapter using op-sqlite as its backing store on React Native. It's much faster than AsyncStorage.
As of v4.0.0, it no longer requires @craftzdog/pouchdb-adapter-websql-core
.
It now directly uses op-sqlite, so it's more efficient.
yarn add @op-engineering/op-sqlite react-native-quick-crypto @craftzdog/react-native-buffer @craftzdog/pouchdb-errors
Create a shim.ts
file like so:
import { install } from 'react-native-quick-crypto'
install()
Configure babel to use the shim modules. First, you need to install babel-plugin-module-resolver
.
yarn add --dev babel-plugin-module-resolver
Then, in your babel.config.js
, add the plugin to swap the crypto
, stream
and buffer
dependencies:
plugins: [
[
'module-resolver',
{
extensions: ['.tsx', '.ts', '.js', '.json'],
alias: {
crypto: 'react-native-quick-crypto',
stream: 'readable-stream',
buffer: '@craftzdog/react-native-buffer',
'pouchdb-errors': '@craftzdog/pouchdb-errors'
},
},
],
],
Then restart your bundler using yarn start --reset-cache
.
Now it's ready to use PouchDB!
yarn add pouchdb-core pouchdb-mapreduce pouchdb-replication pouchdb-adapter-http pouchdb-adapter-react-native-sqlite
Create pouchdb.ts
:
import PouchDB from 'pouchdb-core'
import HttpPouch from 'pouchdb-adapter-http'
import replication from 'pouchdb-replication'
import mapreduce from 'pouchdb-mapreduce'
import sqliteAdapter from 'pouchdb-adapter-react-native-sqlite'
export default PouchDB.plugin(HttpPouch)
.plugin(replication)
.plugin(mapreduce)
.plugin(sqliteAdapter)
import PouchDB from './pouchdb'
const pouch = new PouchDB('mydb', {
adapter: 'react-native-sqlite',
// Other options
})
You can specify the following options in the PouchDB options:
location
: The location of the SQLite database file. See op-sqlite's docs for more details.encryptionKey
: The encryption key for SQLCipher. See op-sqlite's docs for more details.install()
on launchYou amy get the following error when new arch is enabled:
(NOBRIDGE) ERROR Error: Failed to install react-native-quick-crypto: React Native is not running on-device. QuickCrypto can only be used when synchronous method invocations (JSI) are possible. If you are using a remote debugger (e.g. Chrome), switch to an on-device debugger (e.g. Flipper) instead.
(NOBRIDGE) ERROR TypeError: Cannot read property 'install' of undefined
For now, you have to edit:
lib/module/NativeQuickCrypto/NativeQuickCrypto.js
And comment them out:
// Check if we are running on-device (JSI)
// if (global.nativeCallSyncHook == null || QuickCryptoModule.install == null) {
// throw new Error('Failed to install react-native-quick-crypto: React Native is not running on-device. QuickCrypto can only be used when synchronous method invocations (JSI) are possible. If you are using a remote debugger (e.g. Chrome), switch to an on-device debugger (e.g. Flipper) instead.');
// }
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT © Takuya Matsuyama
FAQs
PouchDB adapter for React Native SQLite
The npm package pouchdb-adapter-react-native-sqlite receives a total of 518 weekly downloads. As such, pouchdb-adapter-react-native-sqlite popularity was classified as not popular.
We found that pouchdb-adapter-react-native-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
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.