UNPKG

@rspack/core

Version:

The fast Rust-based web bundler with webpack-compatible API

168 lines (167 loc) 5.71 kB
/** * The following code is modified based on * https://github.com/webpack/webpack/blob/4b4ca3b/lib/CacheFacade.js * * MIT Licensed * Author Tobias Koppers @sokra * Copyright (c) JS Foundation and other contributors * https://github.com/webpack/webpack/blob/main/LICENSE */ import type { Cache, CallbackCache, Etag } from "./Cache"; import type WebpackError from "./WebpackError"; import type { HashConstructor, HashableObject } from "./cache/getLazyHashedEtag"; type CallbackNormalErrorCache<T> = (err?: WebpackError | null, result?: T) => void; declare abstract class BaseCache { abstract get<T>(callback: CallbackCache<T>): void; abstract getPromise<T>(): Promise<T | undefined>; abstract store<T>(data: T, callback: CallbackCache<void>): void; abstract storePromise<T>(data: T): Promise<void>; } export declare class MultiItemCache implements BaseCache { _items: ItemCacheFacade[]; /** * @param items item caches * @returns */ constructor(items: ItemCacheFacade[]); /** * @param callback signals when the value is retrieved * @returns */ get<T>(callback: CallbackCache<T>): void; /** * @returns promise with the data */ getPromise<T>(): Promise<T | undefined>; /** * @param data the value to store * @param callback signals when the value is stored * @returns */ store<T>(data: T, callback: CallbackCache<void>): void; /** * @param data the value to store * @returns promise signals when the value is stored */ storePromise<T>(data: T): Promise<void>; } export declare class ItemCacheFacade implements BaseCache { _cache: Cache; _name: string; _etag: Etag | null; /** * @param cache the root cache * @param name the child cache item name * @param etag the etag * @returns */ constructor(cache: Cache, name: string, etag: Etag | null); /** * @param callback signals when the value is retrieved * @returns */ get<T>(callback: CallbackCache<T>): void; /** * @returns promise with the data */ getPromise<T>(): Promise<T | undefined>; /** * @param data the value to store * @param callback signals when the value is stored * @returns */ store<T>(data: T, callback: CallbackCache<void>): void; /** * @param data the value to store * @returns promise signals when the value is stored */ storePromise<T>(data: T): Promise<void>; /** * @param computer function to compute the value if not cached * @param callback signals when the value is retrieved * @returns */ provide<T>(computer: (callback: CallbackNormalErrorCache<T>) => void, callback: CallbackNormalErrorCache<T>): void; /** * @param computer function to compute the value if not cached * @returns promise with the data */ providePromise<T>(computer: () => Promise<T> | T): Promise<T>; } export declare class CacheFacade { _name: string; _cache: Cache; _hashFunction: string | HashConstructor; /** * @param cache the root cache * @param name the child cache name * @param hashFunction the hash function to use */ constructor(cache: Cache, name: string, hashFunction: string | HashConstructor); /** * @param name the child cache name# * @returns child cache */ getChildCache(name: string): CacheFacade; /** * @param identifier the cache identifier * @param etag the etag * @returns item cache */ getItemCache(identifier: string, etag: Etag | null): ItemCacheFacade; /** * @param obj an hashable object * @returns an etag that is lazy hashed */ getLazyHashedEtag(obj: HashableObject): Etag; /** * @param a an etag * @param b another etag * @returns an etag that represents both */ mergeEtags(a: Etag, b: Etag): Etag; /** * @param identifier the cache identifier * @param etag the etag * @param callback signals when the value is retrieved * @returns */ get<T>(identifier: string, etag: Etag | null, callback: CallbackCache<T>): void; /** * @param identifier the cache identifier * @param etag the etag * @returns promise with the data */ getPromise<T>(identifier: string, etag: Etag | null): Promise<T | undefined>; /** * @param identifier the cache identifier * @param etag the etag * @param data the value to store * @param callback signals when the value is stored * @returns */ store<T>(identifier: string, etag: Etag | null, data: T, callback: CallbackCache<void>): void; /** * @param identifier the cache identifier * @param etag the etag * @param data the value to store * @returns promise signals when the value is stored */ storePromise<T>(identifier: string, etag: Etag | null, data: T): Promise<void>; /** * @param identifier the cache identifier * @param etag the etag * @param computer function to compute the value if not cached * @param callback signals when the value is retrieved * @returns */ provide<T>(identifier: string, etag: Etag | null, computer: (callback: CallbackNormalErrorCache<T>) => void, callback: CallbackNormalErrorCache<T>): void; /** * @param identifier the cache identifier * @param etag the etag * @param computer function to compute the value if not cached * @returns promise with the data */ providePromise<T>(identifier: string, etag: Etag | null, computer: () => Promise<T> | T): Promise<{} | T | null>; } export default CacheFacade;