Skip to content

Commit

Permalink
[storages] move to separate storages.js file
Browse files Browse the repository at this point in the history
  • Loading branch information
rt2zz committed Aug 28, 2016
1 parent e3fbe6e commit 38c5e85
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 23 deletions.
File renamed without changes.
4 changes: 4 additions & 0 deletions src/defaultStorages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import createAsyncLocalStorage from './defaults/asyncLocalStorage'

export const asyncLocalStorage = createAsyncLocalStorage('local')
export const asyncSessionStorage = createAsyncLocalStorage('session')
40 changes: 22 additions & 18 deletions src/defaults/asyncLocalStorage.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,41 +32,48 @@ function getStorage (type) {
: { getItem: noStorage, setItem: noStorage, removeItem: noStorage, getAllKeys: noStorage }
}
}
export default function (type) {
export default function (type, config) {
const deprecated = config && config.deprecated
let storage = getStorage(type)
return {
getItem (key, cb) {
getAllKeys: function (cb) {
// warn if deprecated
if (deprecated) console.warn('redux-persist: ', deprecated)

return new Promise((resolve, reject) => {
try {
var s = storage.getItem(key)
var keys = []
for (var i = 0; i < storage.length; i++) {
keys.push(storage.key(i))
}
nextTick(() => {
cb && cb(null, s)
resolve(s)
cb && cb(null, keys)
resolve(keys)
})
} catch (e) {
cb && cb(e)
reject(e)
}
})
},
setItem (key, string, cb) {
getItem (key, cb) {
return new Promise((resolve, reject) => {
try {
storage.setItem(key, string)
var s = storage.getItem(key)
nextTick(() => {
cb && cb(null)
resolve()
cb && cb(null, s)
resolve(s)
})
} catch (e) {
cb && cb(e)
reject(e)
}
})
},
removeItem (key, cb) {
setItem (key, string, cb) {
return new Promise((resolve, reject) => {
try {
storage.removeItem(key)
storage.setItem(key, string)
nextTick(() => {
cb && cb(null)
resolve()
Expand All @@ -77,16 +84,13 @@ export default function (type) {
}
})
},
getAllKeys: function (cb) {
removeItem (key, cb) {
return new Promise((resolve, reject) => {
try {
var keys = []
for (var i = 0; i < storage.length; i++) {
keys.push(storage.key(i))
}
storage.removeItem(key)
nextTick(() => {
cb && cb(null, keys)
resolve(keys)
cb && cb(null)
resolve()
})
} catch (e) {
cb && cb(e)
Expand Down
10 changes: 8 additions & 2 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@ import getStoredState from './getStoredState'
import persistStore from './persistStore'
import purgeStoredState from './purgeStoredState'

const storageDeprecatedMessage = (type) => `
To import async${type}Storage please import from 'redux-persist/storages'. For Example:
\`import { async${type}Storage } from 'redux-persist/storages'\`
or \`var async${type}Storage = require('redux-persist/storages').async${type}Storage\`
`

const storages = {
asyncLocalStorage: createAsyncLocalStorage('local'),
asyncSessionStorage: createAsyncLocalStorage('session')
asyncLocalStorage: createAsyncLocalStorage('local', { deprecated: storageDeprecatedMessage('Local') }),
asyncSessionStorage: createAsyncLocalStorage('session', { deprecated: storageDeprecatedMessage('Session') })
}

export { autoRehydrate, createPersistor, createTransform, getStoredState, persistStore, purgeStoredState, storages }
1 change: 1 addition & 0 deletions storages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('./lib/defaultStorages')
7 changes: 4 additions & 3 deletions test/purgeStoredState.spec.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import test from 'ava'

import { purgeStoredState, storages } from '../src'
import { purgeStoredState } from '../src'
import { asyncLocalStorage } from '../src/defaultStorages'

test('purgeStoredState (all) returns a promise', t => {
let purgeResult = purgeStoredState({ storage: storages.asyncLocalStorage })
let purgeResult = purgeStoredState({ storage: asyncLocalStorage })
t.true(isPromise(purgeResult))
return purgeResult
})

test('purgeStoredState (whitelist) returns a promise', t => {
let purgeResult = purgeStoredState({ storage: storages.asyncLocalStorage }, ['foo'])
let purgeResult = purgeStoredState({ storage: asyncLocalStorage }, ['foo'])
t.true(isPromise(purgeResult))
return purgeResult
})
Expand Down

0 comments on commit 38c5e85

Please sign in to comment.