@enjoys/react-api
Version:
88 lines (83 loc) • 3.66 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
import React from 'react';
type CacheMeta = {
key: string;
createdAt: number;
ttl?: number;
};
declare class CacheStorageUtil<CacheResponseMap extends Record<string, any>> {
private cacheName;
private metaKey;
constructor(cacheName?: string);
private getCache;
private toCacheKey;
private loadMeta;
private saveMeta;
private updateMeta;
private isExpired;
put<K extends keyof CacheResponseMap>(key: K, data: CacheResponseMap[K], ttl?: number): Promise<void>;
get<K extends keyof CacheResponseMap>(key: K): Promise<CacheResponseMap[K] | undefined>;
putHTML(key: string, html: string, ttl?: number): Promise<void>;
getHTML(key: string): Promise<string | null>;
putBlob(key: string, blob: Blob, ttl?: number): Promise<void>;
getBlob(key: string): Promise<Blob | null>;
putArrayBuffer(key: string, buffer: ArrayBuffer, ttl?: number): Promise<void>;
getArrayBuffer(key: string): Promise<ArrayBuffer | null>;
putFile(key: string, file: File, ttl?: number): Promise<void>;
getFile(key: string): Promise<File | null>;
delete(key: string): Promise<void>;
has(key: string): Promise<boolean>;
keys(): Promise<string[]>;
select(predicate: (key: string, meta: CacheMeta) => boolean | Promise<boolean>): Promise<string[]>;
clear(): Promise<void>;
size(): Promise<number>;
}
declare function createCacheProvider<T extends Record<string, any> = Record<string, any>>(): {
CacheProvider: ({ namespace, children, }: {
namespace?: string;
children: React.ReactNode;
}) => react_jsx_runtime.JSX.Element;
useCacheStorage: () => {
put: <K extends keyof T>(key: K, data: T[K], ttl?: number) => Promise<void>;
get: <K extends keyof T>(key: K) => Promise<T[K] | undefined>;
delete: (key: keyof T) => Promise<void>;
has: (key: keyof T) => Promise<boolean>;
keys: () => Promise<string[]>;
clear: () => Promise<void>;
size: () => Promise<number>;
select: (filter: (key: string, meta: any) => boolean) => Promise<string[]>;
};
};
interface MyCacheSchema {
user: {
name: string;
};
token: string;
}
declare const CacheProvider: ({ namespace, children, }: {
namespace?: string;
children: React.ReactNode;
}) => react_jsx_runtime.JSX.Element;
declare const useCacheStorage: () => {
put: <K extends keyof MyCacheSchema>(key: K, data: MyCacheSchema[K], ttl?: number) => Promise<void>;
get: <K extends keyof MyCacheSchema>(key: K) => Promise<MyCacheSchema[K] | undefined>;
delete: (key: keyof MyCacheSchema) => Promise<void>;
has: (key: keyof MyCacheSchema) => Promise<boolean>;
keys: () => Promise<string[]>;
clear: () => Promise<void>;
size: () => Promise<number>;
select: (filter: (key: string, meta: any) => boolean) => Promise<string[]>;
};
declare function useCacheStorage2<T extends Record<string, any>>(namespace?: string): {
put: (key: string, data: any, ttl?: number) => Promise<void>;
get: (key: string) => Promise<T[string] | undefined>;
putFile: (key: string, file: File, ttl?: number) => Promise<void>;
getFile: (key: string) => Promise<File | null>;
delete: (key: string) => Promise<void>;
has: (key: string) => Promise<boolean>;
keys: () => Promise<string[]>;
clear: () => Promise<void>;
size: () => Promise<number>;
select: (filter: (key: string, meta: any) => boolean) => Promise<string[]>;
};
export { type CacheMeta, CacheProvider, CacheStorageUtil, createCacheProvider, useCacheStorage, useCacheStorage2 };