UNPKG

react-native-mock-tmp-build

Version:

A fully mocked and test-friendly version of react native

82 lines (66 loc) 1.55 kB
/** * https://github.com/facebook/react-native/blob/master/Libraries/Storage/AsyncStorage.js */ function wrap(value, callback) { return Promise.resolve(value).then( obj => { if (callback) { callback(null, obj); } return obj; }, err => { if (callback) { callback(err); } throw err; } ); } let db = {}; const AsyncStorage = { getItem(key, callback) { return wrap(db[key] || null, callback); }, setItem(key, value, callback) { db[key] = value; return wrap(null, callback); }, removeItem(key, callback) { delete db[key]; return wrap(null, callback); }, mergeItem(key, value, callback) { db[key] = Object.assign({}, db[key] || {}, value); return wrap(null, callback); }, clear(callback) { db = {}; return wrap(null, callback); }, getAllKeys(callback) { return wrap(Object.keys(db), callback); }, flushGetRequests() { }, multiGet(keys, callback) { return wrap(keys.map(k => [k, db[k] || null]), callback); }, multiSet(keyValuePairs, callback) { keyValuePairs.forEach(([key, value]) => { db[key] = value; }); return wrap(null, callback); }, multiRemove(keys, callback) { keys.forEach(key => delete db[key]); return wrap(null, callback); }, multiMerge(keyValuePairs, callback) { keyValuePairs.forEach(([key, value]) => { db[key] = Object.asign({}, db[key] || {}, value); }); return wrap(null, callback); }, }; module.exports = AsyncStorage;