@omnia/fx-models
Version:
Provide Omnia Fx Models Stuffs.
58 lines (57 loc) • 2.27 kB
TypeScript
import { IMessageBusTopicSubscription } from "./Messaging";
export declare abstract class ReplaceToken {
abstract readonly prefixToken: string;
}
export declare abstract class TokenDefinition<TokenValueType> extends ReplaceToken {
cast(value: any): TokenValueType;
dummy?: TokenValueType;
}
type PropType<TObj, TProp extends keyof TObj> = TObj[TProp];
export declare class TokenValue<TDefinition extends TokenDefinition<any>> {
private definition;
token: string;
value: PropType<TDefinition, "dummy">;
onChanged?: IMessageBusTopicSubscription<PropType<TDefinition, "dummy">>;
constructor(definition: new () => TDefinition, token: string, // full token mtaching like CurrentTerm.termSetId=c43809d8-0691-490e-8316-24b912e4aa04
value: PropType<TDefinition, "dummy">, onChanged?: IMessageBusTopicSubscription<PropType<TDefinition, "dummy">>);
isType(target: new () => TokenDefinition<any>): boolean;
private _definitionInstance;
}
export interface TokenManifestConfiguration {
prefixTokens: string[];
}
export interface TokenRegistration {
name: string;
description?: string;
}
export interface ITokenRegistrationApi {
register(tokens: TokenRegistration[]): void;
getTokens(): TokenRegistration[];
}
export interface ITokenProvider {
resolve<TDefinition extends TokenDefinition<any>>(token: string): TokenValue<TDefinition> | Promise<TokenValue<TDefinition>>;
}
export interface ITokenProviderRegistration {
register(registration: TokenProviderRegistration): void;
getProviderByToken(token: string): Promise<new () => ITokenProvider>;
}
export declare class TokenProviderRegistration {
tokens: Array<new () => TokenDefinition<any>>;
provider: new () => ITokenProvider;
constructor(tokens: Array<new () => TokenDefinition<any>>, provider: new () => ITokenProvider);
}
declare module "./Extends" {
interface IOmniaFxApi {
tokens: {
registrations: Promise<ITokenRegistrationApi>;
providers: Promise<ITokenProviderRegistration>;
};
}
interface IOmniaFxApiManifest {
tokens: {
registrations: ApiPath;
providers: IExtendApiManifestWithConfiguration<TokenManifestConfiguration>;
};
}
}
export {};