Skip to content

Commit e462f28

Browse files
committed
fix: implement memoryStore and fallback
1 parent a13f969 commit e462f28

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { CID } from 'multiformats'
33
import { extractVerifiedContent } from './utils/car.js'
44
import { asAsyncIterable, asyncIteratorToBuffer } from './utils/itr.js'
55
import { randomUUID } from './utils/uuid.js'
6+
import { memoryStorage } from './utils/storage.js'
67

78
class Saturn {
89
/**
@@ -12,6 +13,7 @@ class Saturn {
1213
* @param {string} [opts.cdnURL=saturn.ms]
1314
* @param {number} [opts.connectTimeout=5000]
1415
* @param {number} [opts.downloadTimeout=0]
16+
* @param {import('./utils/storage.js').Storage} [opts.storage]
1517
*/
1618
constructor (opts = {}) {
1719
this.opts = Object.assign({}, {
@@ -20,9 +22,11 @@ class Saturn {
2022
logURL: 'https://twb3qukm2i654i3tnvx36char40aymqq.lambda-url.us-west-2.on.aws/',
2123
connectTimeout: 5_000,
2224
downloadTimeout: 0
25+
2326
}, opts)
2427

2528
this.logs = []
29+
this.storage = this.opts.storage || memoryStorage()
2630
this.reportingLogs = process?.env?.NODE_ENV !== 'development'
2731
this.hasPerformanceAPI = typeof window !== 'undefined' && window?.performance
2832
if (this.reportingLogs && this.hasPerformanceAPI) {

src/utils/storage.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,24 @@ export function indexedDbStorage () {
3636
delete: async (key) => indexedDbExists && (await dbPromise).delete(DEFAULT_SATURN_STORAGE_NAME, key)
3737
}
3838
}
39+
40+
/**
41+
* @function memoryStorage
42+
* @returns {Storage}
43+
*/
44+
export function memoryStorage () {
45+
const storageObject = {}
46+
47+
return {
48+
check: () => true, // Memory storage is always accessible
49+
get: (key) => Promise.resolve(storageObject[key]),
50+
set: (key, value) => {
51+
storageObject[key] = value
52+
return Promise.resolve()
53+
},
54+
delete: (key) => {
55+
delete storageObject[key]
56+
return Promise.resolve()
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)