69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
const AsyncLocalStorage = {
|
|
getItem: (key: string): Promise<any> => new Promise((resolve, reject) => {
|
|
try {
|
|
const value: string | null = window.localStorage.getItem(key)
|
|
resolve(value)
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}),
|
|
|
|
setItem: (key: string, value: string) => new Promise((resolve, reject) => {
|
|
try {
|
|
window.localStorage.setItem(key, value)
|
|
resolve(value)
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}),
|
|
|
|
removeItem: (key: string): Promise<any> => new Promise((resolve, reject) => {
|
|
try {
|
|
const value: string | null = window.localStorage.getItem(key)
|
|
window.localStorage.removeItem(key)
|
|
resolve(value)
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}),
|
|
|
|
clear: () => new Promise((resolve, reject) => {
|
|
try {
|
|
window.localStorage.clear()
|
|
resolve(true)
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}),
|
|
|
|
getAllKeys: () => new Promise((resolve, reject) => {
|
|
try {
|
|
const allKeys = Object.keys(window.localStorage)
|
|
resolve(allKeys)
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}),
|
|
|
|
multiGet: (keys: string[]) => new Promise((resolve, reject) => {
|
|
try {
|
|
const values = keys.map(key => [ key, window.localStorage.getItem(key) ])
|
|
resolve(values)
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}),
|
|
|
|
multiSet: (keyValuePairs: string[][]) => new Promise((resolve, reject) => {
|
|
try {
|
|
keyValuePairs.forEach(keyValuePair => window.localStorage.setItem(keyValuePair[0], keyValuePair[1]))
|
|
const newKeyValuePairs = keyValuePairs.map(keyValuePair => [ keyValuePair[0], window.localStorage.getItem(keyValuePair[0]) ])
|
|
resolve(newKeyValuePairs)
|
|
} catch (error) {
|
|
reject(error)
|
|
}
|
|
}),
|
|
}
|
|
|
|
export default AsyncLocalStorage
|