feat(projects): 🎉 init project

This commit is contained in:
skyfeiz
2024-12-01 21:32:54 +08:00
parent b52dd15b36
commit cd8d32ca2b
345 changed files with 30041 additions and 10953 deletions

View File

@@ -1,30 +1,30 @@
import localforage from 'localforage';
/**
* the storage type
*/
/** The storage type */
export type StorageType = 'local' | 'session';
export function createStorage<T extends object>(type: StorageType) {
export function createStorage<T extends object>(type: StorageType, storagePrefix: string) {
const stg = type === 'session' ? window.sessionStorage : window.localStorage;
const storage = {
/**
* set session
* @param key session key
* @param value session value
* Set session
*
* @param key Session key
* @param value Session value
*/
set<K extends keyof T>(key: K, value: T[K]) {
const json = JSON.stringify(value);
stg.setItem(key as string, json);
stg.setItem(`${storagePrefix}${key as string}`, json);
},
/**
* get session
* @param key session key
* Get session
*
* @param key Session key
*/
get<K extends keyof T>(key: K): T[K] | null {
const json = stg.getItem(key as string);
const json = stg.getItem(`${storagePrefix}${key as string}`);
if (json) {
let storageData: T[K] | null = null;
@@ -37,12 +37,12 @@ export function createStorage<T extends object>(type: StorageType) {
}
}
stg.removeItem(key as string);
stg.removeItem(`${storagePrefix}${key as string}`);
return null;
},
remove(key: keyof T) {
stg.removeItem(key as string);
stg.removeItem(`${storagePrefix}${key as string}`);
},
clear() {
stg.clear();