/** * This module is a stub for core services such as Dependency Injection or Browser Location. * Core services may be implemented by a specific framework, such as ng1 or ng2, or be pure javascript. * * @packageDocumentation */ import { IInjectable, Obj } from './common'; import { Disposable } from '../interface'; import { UrlConfig, UrlService } from '../url'; export declare const makeStub: (service: string, methods: (keyof T)[]) => T; declare const services: CoreServices; export interface $QLikeDeferred { resolve: (val?: any) => void; reject: (reason?: any) => void; promise: Promise; } export interface $QLike { when(value?: T | PromiseLike): Promise; reject(reason: any): Promise; defer(): $QLikeDeferred; all(promises: { [key: string]: Promise; }): Promise; all(promises: Promise[]): Promise; } export interface $InjectorLike { strictDi?: boolean; get(token: any): any; get(token: any): T; has(token: any): boolean; invoke(fn: IInjectable, context?: any, locals?: Obj): any; annotate(fn: IInjectable, strictDi?: boolean): any[]; } export interface CoreServices { $q: $QLike; $injector: $InjectorLike; } /** * Handles low level URL read/write * * This service handles low level reads and updates of the URL and listens for url changes. * Implementors should pass these through to the underlying URL mechanism. * The underlying URL mechanism might be browser APIs, framework APIs, or some 3rd party URL management library. * * UI-Router Core includes three basic implementations: * * - [[PushStateLocationService]] * - [[HashLocationService]] * - [[MemoryLocationService]] */ export interface LocationServices extends Disposable { /** See: [[UrlService.url]] */ url: UrlService['url']; /** See: [[UrlService.path]] */ path: UrlService['path']; /** See: [[UrlService.search]] */ search: UrlService['search']; /** See: [[UrlService.hash]] */ hash: UrlService['hash']; /** See: [[UrlService.onChange]] */ onChange: UrlService['onChange']; } /** * Returns low level URL configuration and metadata * * This service returns information about the location configuration. * This service is primarily used when building URLs (e.g., for `hrefs`) * * Implementors should pass these through to the underlying URL APIs. * The underlying URL mechanism might be browser APIs, framework APIs, or some 3rd party URL management library. * * UI-Router Core includes two basic implementations: * * - [[BrowserLocationConfig]] * - [[MemoryLocationConfig]] */ export interface LocationConfig extends Disposable { /** See: [[UrlConfig.port]] */ port: UrlConfig['port']; /** See: [[UrlConfig.protocol]] */ protocol: UrlConfig['protocol']; /** See: [[UrlConfig.host]] */ host: UrlConfig['host']; /** See: [[UrlConfig.baseHref]] */ baseHref: UrlConfig['baseHref']; /** See: [[UrlConfig.html5Mode]] */ html5Mode: UrlConfig['html5Mode']; /** See: [[UrlConfig.hashPrefix]] */ hashPrefix: UrlConfig['hashPrefix']; } export { services };