Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ await get("Hello"); // "World!"

The main purpose of **Storage** is to provide a set of adapters that normalize across various client side storage mechanisms (`localStorage` / `sessionStorage`, IndexedDB, cookies, and OPFS) with a consistent key-value API (`get()`, `set()`, etc).

> Note: This project is built for use in a browser context. Compatibility with other platforms is purely coincidental.

## Client Side Storage Adapters

**Storage** ships with adapters for the following storage mechanisms:
Expand Down
18 changes: 9 additions & 9 deletions src/adapter.local-storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@ export default publicAPI;

async function has(name) {
// note: https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem#return_value
return (window.localStorage.getItem(name) !== null);
return (globalThis.localStorage.getItem(name) !== null);
}

async function get(name) {
return safeJSONParse(window.localStorage.getItem(name));
return safeJSONParse(globalThis.localStorage.getItem(name));
}

async function set(name,value) {
try {
window.localStorage.setItem(
globalThis.localStorage.setItem(
name,
value != null && typeof value == "object" ?
JSON.stringify(value) :
Expand All @@ -66,25 +66,25 @@ async function set(name,value) {
}

async function remove(name) {
window.localStorage.removeItem(name);
globalThis.localStorage.removeItem(name);
return true;
}

async function keys() {
var storeKeys = [];
for (let i = 0; i < window.localStorage.length; i++) {
storeKeys.push(window.localStorage.key(i));
for (let i = 0; i < globalThis.localStorage.length; i++) {
storeKeys.push(globalThis.localStorage.key(i));
}
return storeKeys;
}

async function entries() {
var storeEntries = [];
for (let i = 0; i < window.localStorage.length; i++) {
let name = window.localStorage.key(i);
for (let i = 0; i < globalThis.localStorage.length; i++) {
let name = globalThis.localStorage.key(i);
storeEntries.push([
name,
safeJSONParse(window.localStorage.getItem(name)),
safeJSONParse(globalThis.localStorage.getItem(name)),
]);
}
return storeEntries;
Expand Down
18 changes: 9 additions & 9 deletions src/adapter.session-storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,16 @@ export default publicAPI;

async function has(name) {
// note: https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem#return_value
return (window.sessionStorage.getItem(name) !== null);
return (globalThis.sessionStorage.getItem(name) !== null);
}

async function get(name) {
return safeJSONParse(window.sessionStorage.getItem(name));
return safeJSONParse(globalThis.sessionStorage.getItem(name));
}

async function set(name,value) {
try {
window.sessionStorage.setItem(
globalThis.sessionStorage.setItem(
name,
value != null && typeof value == "object" ?
JSON.stringify(value) :
Expand All @@ -67,25 +67,25 @@ async function set(name,value) {
}

async function remove(name) {
window.sessionStorage.removeItem(name);
globalThis.sessionStorage.removeItem(name);
return true;
}

async function keys() {
var storeKeys = [];
for (let i = 0; i < window.sessionStorage.length; i++) {
storeKeys.push(window.sessionStorage.key(i));
for (let i = 0; i < globalThis.sessionStorage.length; i++) {
storeKeys.push(globalThis.sessionStorage.key(i));
}
return storeKeys;
}

async function entries() {
var storeEntries = [];
for (let i = 0; i < window.sessionStorage.length; i++) {
let name = window.sessionStorage.key(i);
for (let i = 0; i < globalThis.sessionStorage.length; i++) {
let name = globalThis.sessionStorage.key(i);
storeEntries.push([
name,
safeJSONParse(window.sessionStorage.getItem(name)),
safeJSONParse(globalThis.sessionStorage.getItem(name)),
]);
}
return storeEntries;
Expand Down