@omnia/fx
Version:
Provide Omnia Fx typings and tooling for clientside Omnia development.
69 lines (68 loc) • 2.97 kB
TypeScript
import { IRouteContext, AppInstanceContext, IMessageBusTopicSubscription, TokenBasedRouteStateData, Future } from "../models";
import { AppService, PermissionService } from "../services";
import { MessageBusTopicMediator } from "../core";
import { OmniaContext } from "../contexts";
import { BusinessProfileStore, UserTargetingStore } from "../stores";
import { OmniaUxLocalization } from ".";
export interface TokenBasedRouteStateDataDict {
[token: string]: TokenBasedRouteStateData;
}
export interface StateData {
public?: any;
tokenBased?: TokenBasedRouteStateDataDict;
}
/**
* Base Routing logic*
**/
export declare class InternalRouter {
static businessProfileStore: BusinessProfileStore;
static omniaCtx: OmniaContext;
static appService: AppService;
static userTargetingStore: UserTargetingStore;
static permissionService: PermissionService;
static omniaUxLoc: OmniaUxLocalization;
static tokenPrefix: string;
private static publicPath;
private static tokenPath;
private static stateData;
static resolveTokenBasedContext: (stateDataDictFromBrowserPopState?: TokenBasedRouteStateDataDict) => void;
static publicRouteCtx: IRouteContext;
static appInstanceChangedPublishSubscriber: MessageBusTopicMediator<AppInstanceContext>;
static onAppInstanceChanged: () => IMessageBusTopicSubscription<AppInstanceContext>;
static contextReadyPromise: Future<IRouteContext>;
/**
* The init of the router should only be done once and very early in the boot
**/
static init(): void;
private static IsInBusinessProfileScope;
private static buildPublicRoutePath;
static tokenBasedNavigate(title: string, path: string, tokenBasedStateData?: TokenBasedRouteStateDataDict, updateState?: boolean, replaceState?: boolean): boolean;
static publicNavigate(title: string, path: string, stateData?: StateData, updateState?: boolean): void;
private static handleAppChange;
private static createNotFoundElement;
private static createUnauthorizedElement;
private static createSetupInProgressElement;
private static onPopState;
static hasToken(): boolean;
static setPublicTitle(title: string, ignoreIfTokenBasedExists?: boolean): void;
/**
* Subscribe to public navigation changes
**/
static onPublicNavigate(cb: (routeCtx: IRouteContext) => void): void;
static combine(...parts: string[]): string;
/**
* Perform clientside navigation using push state
**/
private static pushState;
private static get fullPathIncludeHashWithoutToken();
private static get hashWithoutToken();
private static get pathWithoutTokenAndParams();
private static removeTokenPart;
private static extractTokenPart;
private static get isOmniaApp();
private static getRedirectRoutePath;
private static isLayoutRoute;
private static getRedirectRoute;
private static joinPath;
private static comparePath;
}