@fastly/esi
Version:
ESI implementation for JavaScript, using the modern fetch and streaming APIs.
61 lines • 2.44 kB
TypeScript
import { XmlElement, XmlElementNode } from "./XmlModel.js";
import { IXmlTransformer } from "./XmlTransformStream.js";
import StreamerState from "./StreamerState.js";
import { ValueOrPromise } from "./util.js";
import { IEsiVariables } from "./EsiVariables.js";
import { EsiExpressionEvaluator } from "./EsiExpressions.js";
export declare class EsiError extends Error {
constructor(message: string);
}
export declare class EsiElementError extends EsiError {
el: XmlElement;
constructor(el: XmlElement, message: string);
}
export declare class EsiIncludeError extends EsiElementError {
constructor(el: XmlElement, message: string);
}
export declare class EsiStructureError extends EsiElementError {
constructor(el: XmlElement, message: string);
}
export type EsiIncludeResult = {
url: URL;
headers: Headers;
res: Response;
};
export type ProcessIncludeResponseFunc = (esiIncludeResult: EsiIncludeResult) => ValueOrPromise<string>;
export interface HandleIncludeErrorEvent {
url: URL;
headers: Headers;
el: XmlElement;
customErrorString: string | null;
}
export type HandleIncludeErrorFunc = (e: HandleIncludeErrorEvent) => ValueOrPromise<void>;
export type EsiTransformerOptions = {
vars?: IEsiVariables;
fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
processIncludeResponse?: ProcessIncludeResponseFunc;
handleIncludeError?: HandleIncludeErrorFunc;
};
export default class EsiTransformer implements IXmlTransformer {
static namespace: string;
static depthLimit: number;
url: URL;
headers: Headers;
options: EsiTransformerOptions;
depth: number;
expressionEvaluator?: EsiExpressionEvaluator;
applyVars: boolean;
/**
* Construct an instance of EsiTransformer.
* @param url Absolute URL of request that was used when fetching the stream
* @param headers The request headers that were used when fetching the stream
* @param options Transformer options
* @param depth Depth of recursion
*/
constructor(url: string | URL, headers?: HeadersInit, options?: EsiTransformerOptions, depth?: number);
transformChildElements(el: XmlElement): Promise<XmlElementNode[]>;
transformElementNode(node: XmlElementNode): Promise<XmlElementNode | null>;
isInEsiComment: boolean;
xmlStreamerBeforeProcess(streamerState: StreamerState): void;
}
//# sourceMappingURL=EsiTransformer.d.ts.map