@osaedasia/oresume
Version:
A user-friendly library for generating complete Single Page Applications (SPAs)
46 lines (45 loc) • 3.25 kB
TypeScript
import { QueryParamTypeMap } from "../../domain/definitions/types/QueryParam";
import { InternalPageDefinition, PublicPageDefinition } from "./types/PageDefinition";
import { IPageConfig } from "./interfaces/IPageConfig";
/**
* Manages the relationship between public and internal page definitions.
* Provides functionality for storing, retrieving, and creating page definitions.
*/
export declare class PageDefinitionManager {
/**
* Maps public page definitions to their internal counterparts.
*/
private static readonly _internalToPublicMap;
/**
* Associates a public page definition with its internal representation.
* @template RelativeUrl The relative URL path type.
* @template TParamTypeMap The query parameter type mapping.
* @param {PublicPageDefinition<RelativeUrl, TParamTypeMap>} publicDef The public page definition.
* @param {InternalPageDefinition<RelativeUrl, TParamTypeMap>} internalDef The internal page definition.
*/
static storeInternalDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap>(publicDef: PublicPageDefinition<RelativeUrl, TParamTypeMap>, internalDef: InternalPageDefinition<RelativeUrl, TParamTypeMap>): void;
/**
* Retrieves the internal page definition associated with a public definition.
* @template RelativeUrl The relative URL path type.
* @template TParamTypeMap The query parameter type mapping.
* @param {PublicPageDefinition<RelativeUrl, TParamTypeMap>} publicDef The public page definition.
* @returns {InternalPageDefinition<RelativeUrl, TParamTypeMap> | undefined} The corresponding internal page definition, if it exists.
*/
static getInternalDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap>(publicDef: PublicPageDefinition<RelativeUrl, TParamTypeMap>): InternalPageDefinition<RelativeUrl, TParamTypeMap> | undefined;
/**
* Creates a new internal page definition from the provided configuration.
* @template RelativeUrl The relative URL path type.
* @template TParamTypeMap The query parameter type mapping.
* @param {IPageConfig<RelativeUrl, TParamTypeMap>} config The page configuration.
* @returns {InternalPageDefinition<RelativeUrl, TParamTypeMap>} A new internal page definition.
*/
static createInternalDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap = never>(config: IPageConfig<RelativeUrl, TParamTypeMap>): InternalPageDefinition<RelativeUrl, TParamTypeMap>;
/**
* Creates a public interface for a page definition from its internal representation.
* @template RelativeUrl The relative URL path type.
* @template TParamTypeMap The query parameter type mapping.
* @param {InternalPageDefinition<RelativeUrl, TParamTypeMap>} internalPageDef The internal page definition to wrap.
* @returns {PublicPageDefinition<RelativeUrl, TParamTypeMap>} A public interface for interacting with the page definition.
*/
static createPublicDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap = never>(internalPageDef: InternalPageDefinition<RelativeUrl, TParamTypeMap>): PublicPageDefinition<RelativeUrl, TParamTypeMap>;
}