Packages
plinth
0.4.14
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.13
0.1.12
0.1.11
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Bindings to Node.js and browser platform APIs
Current section
Files
Jump to
Current section
Files
src/storage_ffi.mjs
import { Ok, Error } from "./gleam.mjs";
export function localStorage() {
try {
if (
globalThis.Storage &&
globalThis.localStorage instanceof globalThis.Storage
) {
return new Ok(globalThis.localStorage);
} else {
return new Error(null);
}
} catch {
return new Error(null);
}
}
export function sessionStorage() {
try {
if (
globalThis.Storage &&
globalThis.sessionStorage instanceof globalThis.Storage
) {
return new Ok(globalThis.sessionStorage);
} else {
return new Error(null);
}
} catch {
return new Error(null);
}
}
export function length(storage) {
return storage.length;
}
export function key(storage, index) {
return null_or(storage.key(index));
}
export function getItem(storage, keyName) {
return null_or(storage.getItem(keyName));
}
export function setItem(storage, keyName, keyValue) {
try {
storage.setItem(keyName, keyValue);
return new Ok(null);
} catch {
return new Error(null);
}
}
export function removeItem(storage, keyName) {
storage.removeItem(keyName);
}
export function clear(storage) {
storage.clear();
}
function null_or(val) {
if (val !== null) {
return new Ok(val);
} else {
return new Error(null);
}
}