pouchdb-adapter-react-native-sqlcipher

1.0.0 • Public • Published

pouchdb-adapter-react-native-sqlcipher

PouchDB adapter using ReactNative SQLite with SQLCipher implementation by sreejithkrishnanr

Read this blogpost for the complete description.

Install deps

Install PouchDB core packages:

npm i pouchdb-adapter-http pouchdb-mapreduce

And install hacked packages for React Native:

npm i @craftzdog/pouchdb-core-react-native @craftzdog/pouchdb-replication-react-native 

Next, install SQLite3 engine modules:

npm i pouchdb-adapter-react-native-sqlite react-native-sqlcipher-2
react-native link react-native-sqlcipher-2

Then, install some packages to polyfill functions that PouchDB needs:

npm i base-64 events

Create polyfills

Make a js file to polyfill some functions that PouchDB needs:

import {decode, encode} from 'base-64'
 
if (!global.btoa) {
    global.btoa = encode;
}
 
if (!global.atob) {
    global.atob = decode;
}
 
// Avoid using node dependent modules
process.browser = true

Import it at the first line of your index.js.

Load PouchDB

Make pouchdb.js like so:

import PouchDB from '@craftzdog/pouchdb-core-react-native'
import HttpPouch from 'pouchdb-adapter-http'
import replication from '@craftzdog/pouchdb-replication-react-native'
import mapreduce from 'pouchdb-mapreduce'
 
import SQLite from 'react-native-sqlcipher-2'
import SQLiteAdapterFactory from 'pouchdb-adapter-react-native-sqlite'
 
const SQLiteAdapter = SQLiteAdapterFactory(SQLite)
 
export default PouchDB
  .plugin(HttpPouch)
  .plugin(replication)
  .plugin(mapreduce)
  .plugin(SQLiteAdapter)

If you need other plugins like pouchdb-find, just add them to it.

Use PouchDB

Then, use it as usual:

import PouchDB from './pouchdb'
 
function loadDB () {
  return new PouchDB('mydb.db', { adapter: 'react-native-sqlite', auth: {password: 'super secure password' })
}

Use RxDB

import RxDB from 'rxdb';
 
RxDB.create({
  name: 'mislestore',
  adapter: 'react-native-sqlite',
  multiInstance: false,
  pouchSettings: {
    auth: { password }
});

Changelog

  • 1.0.0
    • Initial release

Package Sidebar

Install

npm i pouchdb-adapter-react-native-sqlcipher

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

5.99 kB

Total Files

4

Last publish

Collaborators

  • bigplayalman