/** * @typedef {import('./resource.js').default} PodiumClientResource * @typedef {import('./resource.js').PodiumClientResourceOptions} PodiumClientResourceOptions * @typedef {import('./response.js').default} PodiumClientResponse * @typedef {import('./http-outgoing.js').PodiumRedirect} PodiumRedirect * @typedef {import('@podium/schemas').PodletManifestSchema} PodletManifest */ /** * @typedef {object} PodiumClientOptions * @property {string} name * @property {import('abslog').AbstractLoggerOptions} [logger] * @property {number} [retries=4] * @property {number} [timeout=1000] In milliseconds * @property {number} [maxAge=Infinity] * @property {boolean} [rejectUnauthorized=true] * @property {number} [resolveThreshold] * @property {number} [resolveMax] * @property {import('http').Agent} [httpAgent] * @property {import('https').Agent} [httpsAgent] */ /** * @typedef {object} RegisterOptions * @property {string} name A unique name for the podlet * @property {string} uri URL to the podlet's `manifest.json` * @property {number} [retries=4] Number of retries before serving fallback * @property {number} [timeout=1000] In milliseconds, the amount of time to wait before serving fallback. * @property {boolean} [throwable=false] Set to `true` and surround `fetch` in `try/catch` to serve different content in case podlet is unavailable. Will not server fallback content. * @property {boolean} [redirectable=false] Set to `true` to allow podlet to respond with a redirect. You need to look for the redirect response from the podlet and return a redirect response to the browser yourself. * @property {import('./resource.js').RequestFilterOptions} [excludeBy] Used by `fetch` to conditionally skip fetching the podlet content based on values on the request. * @property {import('./resource.js').RequestFilterOptions} [includeBy] Used by `fetch` to conditionally skip fetching the podlet content based on values on the request. */ export default class PodiumClient extends EventEmitter<[never]> { /** * @constructor * @param {PodiumClientOptions} options */ constructor(options?: PodiumClientOptions); get registry(): any; get metrics(): Metrics; get state(): "instantiated" | "stable" | "initializing" | "unhealthy" | "unstable"; /** * Register a podlet so you can fetch its contents later with {@link PodiumClientResource.fetch}. * * @param {RegisterOptions} options * @returns {PodiumClientResource} * * @example * ```js * const headerPodlet = layout.client.register({ * name: 'header', * uri: 'http://header/manifest.json', * }); * ``` */ register(options: RegisterOptions): PodiumClientResource; dump(): any; load(dump: any): any; /** * Refreshes the cached podlet manifest for all {@link register}ed podlets. */ refreshManifests(): Promise; #private; } export type PodiumClientResource = import("./resource.js").default; export type PodiumClientResourceOptions = import("./resource.js").PodiumClientResourceOptions; export type PodiumClientResponse = import("./response.js").default; export type PodiumRedirect = import("./http-outgoing.js").PodiumRedirect; export type PodletManifest = import("@podium/schemas").PodletManifestSchema; export type PodiumClientOptions = { name: string; logger?: import("abslog").AbstractLoggerOptions; retries?: number; /** * In milliseconds */ timeout?: number; maxAge?: number; rejectUnauthorized?: boolean; resolveThreshold?: number; resolveMax?: number; httpAgent?: import("http").Agent; httpsAgent?: import("https").Agent; }; export type RegisterOptions = { /** * A unique name for the podlet */ name: string; /** * URL to the podlet's `manifest.json` */ uri: string; /** * Number of retries before serving fallback */ retries?: number; /** * In milliseconds, the amount of time to wait before serving fallback. */ timeout?: number; /** * Set to `true` and surround `fetch` in `try/catch` to serve different content in case podlet is unavailable. Will not server fallback content. */ throwable?: boolean; /** * Set to `true` to allow podlet to respond with a redirect. You need to look for the redirect response from the podlet and return a redirect response to the browser yourself. */ redirectable?: boolean; /** * Used by `fetch` to conditionally skip fetching the podlet content based on values on the request. */ excludeBy?: import("./resource.js").RequestFilterOptions; /** * Used by `fetch` to conditionally skip fetching the podlet content based on values on the request. */ includeBy?: import("./resource.js").RequestFilterOptions; }; import EventEmitter from 'events'; import Metrics from '@metrics/client';