@airgrid/edgekit
Version:
A privacy focused library for cookie-less audience creation.
42 lines (36 loc) • 994 B
text/typescript
export const timeStampInSecs = (): number => Math.round(Date.now() / 1000);
export const timeout = (milliseconds: number, message: string): Promise<void> =>
new Promise((_, reject) => {
setTimeout(() => reject(new Error(message)), milliseconds);
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const get = (key: string): any => {
const value = localStorage.getItem(key);
if (!value) return undefined;
try {
return JSON.parse(value);
} catch (e) {
return undefined;
}
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
const set = (key: string, value: any): void => {
try {
const serialized = JSON.stringify(value);
localStorage.setItem(key, serialized);
} catch (e) {
// ignore...
}
};
const remove = (key: string): void => {
try {
localStorage.removeItem(key);
} catch (e) {
// ignore...
}
};
export const storage = {
set,
get,
remove,
};