@paroicms/server
Version:
The ParoiCMS server
25 lines (24 loc) • 1.6 kB
TypeScript
import { type LiquidPayload, type LoadDescriptor, type WithLoadDescriptor } from "@paroicms/public-server-lib";
import type { RenderingContext } from "./liquidjs-rendering/rendering-context.js";
export interface LiquidDropOptions<T> {
renderingCacheKey: string;
values: LiquidValuesImpl<T>;
}
type LiquidValuesImpl<T> = {
[K in keyof T]: LiquidValueImpl<T[K]>;
};
type LiquidValueImpl<T> = T | LiquidPayload<T> | LiquidPayloadArray<T> | LiquidLazyValue<T>;
type LiquidPayloadArray<T> = T extends (infer V)[] ? LiquidPayload<V>[] : never;
type LiquidLazyValue<T> = () => LiquidLazyResult<T> | Promise<LiquidLazyResult<T>>;
type LiquidLazyResult<T> = T | LiquidPayload<T> | LiquidPayloadArray<T> | undefined | void;
export declare function createLiquidDrop<T>(renderingContext: RenderingContext, optionsOrFn: LiquidDropOptions<T> | (() => Promise<LiquidDropOptions<T>>)): LiquidPayload<T>;
export declare function createLiquidDrop<T, D extends LoadDescriptor>(renderingContext: RenderingContext, optionsOrFn: LiquidDropOptions<Omit<T, "__notARealProperty__">> | (() => Promise<LiquidDropOptions<Omit<T, "__notARealProperty__">>>), options2: {
loadDescriptor: D;
}): LiquidPayload<T & WithLoadDescriptor>;
export declare function loadOrFromRenderingCache<T>(renderingContext: RenderingContext, renderingCacheKey: string, load: () => Promise<T>): Promise<T>;
export declare function createLiquidDropFromPromise<T>({ renderingContext, renderingCacheKey, value, }: {
renderingContext: RenderingContext;
renderingCacheKey: string;
value: Promise<T>;
}): LiquidPayload<T>;
export {};