import { IRequestHandlerPlugin } from '../RequestHandler'; import { IVersionAdapter } from './IVersionAdapter'; export declare class VersioningPluginBuilder { private static readonly VERSION_REGEX; private readonly supportedApplications; private readonly supportedVersions; private readonly adapters; constructor(supportedApplications: Set, supportedVersions: Set); addAdapter(version: string | string[], adapter: IVersionAdapter): VersioningPluginBuilder; /** * Build a RequestHandler plugin that will * @returns {IRequestHandlerPlugin} A RequestHandlerPlugin */ getPlugin(): IRequestHandlerPlugin; private convertVersionToSet; /** * Build a post request handler hook * @param {RequestHandler} requestHandler */ private setPreHook; /** * Build a post request handler hook * @param {RequestHandler} requestHandler */ private setPostHook; /** * Lookup for an adapter based on the version found in Accept header * * @param {Request} req * @returns {IVersionAdapter} Version adapter */ private getAdapter; /** * Parse version from request. * Look up version into the "Accept" header and try to match the version against * VersioningPluginBuilder.VERSION_REGEX * * @param {Request} req * @returns {string|null} Returns the parsed version or null if no version is found */ private parseVersion; /** * Validate an adapter * Expected adapter to be an object with versions * * @param {IVersionAdapter} adapter * @throws {TypeError} */ private validateAdapter; /** * Check if the version is supported and if there are no adapters already set for this version * * @param {string} version * @throws {TypeError} */ private validateVersion; /** * Validate a list of versions * Expect versions to be a non empty Set * * @param {Set} versions * @throws {TypeError} */ private validateAdapterVersion; }