UNPKG

kutaisan-react-native-mmkv-storage

Version:

This library aims to provide a fast & reliable solution for you data storage needs in react-native apps. It uses [MMKV](https://github.com/Tencent/MMKV) by Tencent under the hood on Android and iOS both that is used by their WeChat app(more than 1 Billion

79 lines (67 loc) 1.94 kB
import generatePassword from "./keygen"; import API from "./api"; import { stringToHex, ACCESSIBLE, MODES, options } from "./utils"; import { currentInstancesStatus } from "./initializer"; import { handleAction } from "./handlers"; export default class Loader { constructor() { this.options = { instanceID: "default", initWithEncryption: false, secureKeyStorage: false, accessibleMode: ACCESSIBLE.WHEN_UNLOCKED, processingMode: MODES.SINGLE_PROCESS, aliasPrefix: "com.MMKV.", alias: null, key: null, initialized: false, }; } withInstanceID(id) { this.options.instanceID = id; return this; } withEncryption() { this.options.initWithEncryption = true; this.options.key = generatePassword(); this.options.alias = stringToHex( this.options.aliasPrefix + this.options.instanceID ); this.options.secureKeyStorage = true; return this; } setAccessibleIOS(accessible) { this.options.accessibleMode = accessible; return this; } encryptWithCustomKey(key, secureKeyStorage, alias) { this.options.key = key; this.options.secureKeyStorage = false; if (secureKeyStorage) { this.options.secureKeyStorage = true; if (alias) { this.options.alias = stringToHex(this.options.aliasPrefix + alias); } else { this.options.alias = stringToHex( this.options.aliasPrefix + this.options.instanceID ); } } return this; } setProcessingMode(mode) { this.options.processingMode = mode; return this; } initialize() { currentInstancesStatus[this.options.instanceID] = false; options[this.options.instanceID] = this.options; let instance = new API(this.options.instanceID); handleAction(null, this.options.instanceID); return instance; } generateKey() { this.options.key = generatePassword(); return this; } }