Skip to content

Commit

Permalink
refactor: added data property in memory storages
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurfiorette committed Jan 3, 2022
1 parent e776f01 commit 500ac71
Showing 1 changed file with 29 additions and 5 deletions.
34 changes: 29 additions & 5 deletions src/storage/memory.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,34 @@
import { buildStorage } from './build';
import type { StorageValue } from './types';

export function buildMemoryStorage(obj: Record<string, StorageValue> = {}) {
return buildStorage({
find: (key) => Promise.resolve(obj[key]),
set: (key, value) => Promise.resolve(void (obj[key] = value)),
remove: (key) => Promise.resolve(void delete obj[key])
/**
* Creates a simple in-memory storage. This means that if you need to persist data between
* page or server reloads, this will not help.
*
* This is the storage used by default.
*
* If you need to modify it's data, you can do by the `data` property.
*
* @example
*
* ```js
* const memoryStorage = buildMemoryStorage();
*
* setupCache(axios, { storage: memoryStorage });
*
* // Simple example to force delete the request cache
*
* const { id } = axios.get('url');
*
* delete memoryStorage.data[id];
* ```
*/
export function buildMemoryStorage() {
const data: Record<string, StorageValue> = {};
const storage = buildStorage({
find: (key) => Promise.resolve(data[key]),
set: (key, value) => Promise.resolve(void (data[key] = value)),
remove: (key) => Promise.resolve(void delete data[key])
});
return { ...storage, data };
}

0 comments on commit 500ac71

Please sign in to comment.