UNPKG

@enjoys/react-api

Version:
88 lines (83 loc) 3.66 kB
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 };