UNPKG

nope-js-browser

Version:

NoPE Runtime for the Browser. For nodejs please use nope-js-node

225 lines (224 loc) 7.75 kB
/** * @author Martin Karkowski * @email m.karkowski@zema.de */ import { ILogger } from "js-logger"; import { INopeCore, INopeEventEmitter } from "../types/nope"; import { IAuthor, IEventOptions, IServiceOptions, INopeModule, INopeModuleDescription, IVersion } from "../types/nope/nopeModule.interface"; import { INopeObservable } from "../types/nope/nopeObservable.interface"; /** * Base Implementation of a Module. * * The Module is used to share information and data. Although it implements the * the Basic behavior to fullfill a given traget. * * @export * @class BaseModule * @implements {INopeModule} */ export declare class NopeBaseModule implements INopeModule { protected _core: INopeCore; /** * Return the Class Identifier. */ get type(): string; /** * A Description of the Module. This is used to Describe roughly * what the module is capable of * doing. * * @type {string} * @memberof BaseModule */ description: string; /** * A Description of the Author. Use to Mail etc. * * @type {IAuthor} * @memberof BaseModule */ author: IAuthor; /** * Description of the provided Version of the Module. * * @type {IVersion} * @memberof BaseModule */ version: IVersion; protected _registeredMethods: Map<string, { method: (...args: any[]) => Promise<any>; options: IServiceOptions; }>; protected _registeredProperties: Map<string, { observable: INopeObservable<any>; options: IEventOptions; }>; protected _registeredEvents: Map<string, { emitter: INopeEventEmitter; options: IEventOptions; }>; /** * Public getter for the functions * * @readonly * @memberof BaseModule */ get methods(): { [index: string]: IServiceOptions<any>; }; /** * Public get to receive a Description of the Properties * * @readonly * @memberof BaseModule */ get properties(): { [index: string]: IEventOptions; }; /** * Public get to receive a Description of the Properties * * @readonly * @memberof BaseModule */ get events(): { [index: string]: IEventOptions; }; /** * The Identifier of the Module. * * @type {string} * @memberof BaseModule */ identifier: string; _markedElements: Array<{ accessor: string; options: IEventOptions | IServiceOptions; type: "method" | "prop" | "event"; }>; protected _logger: ILogger; /** * Creates an instance of BaseModule. * @memberof BaseModule */ constructor(_core: INopeCore); uiLinks: { name: string; description: string; link: string; }[]; /** * Helper Function to register an Observable (a Property.) * * @template T Type of the Property * @template S Setter Type of the Property * @template G Getter Type of the Property * @param {string} name Name, which should be used to register the element. The Name will ALLWAYS (automatically) be assembled using the modules identifier an then the name. * @param {INopeObservable<T, S, G>} observable The Observable representing the Property * @param {IEventOptions<K>} options The Options used to define the registration. * @return {Promise<void>} * @memberof NopeBaseModule */ registerProperty<T, S = T, G = T>(name: string, observable: INopeObservable<T, S, G>, options: IEventOptions): Promise<void>; /** * Helper Function to register an Event(Emitter) (a Property.) * * @template T Type of the Event(Emitter) * @template S Setter Type of the Event(Emitter) * @template G Getter Type of the Event(Emitter) * @param {string} name Name, which should be used to register the element. The Name will ALLWAYS (automatically) be assembled using the modules identifier an then the name. * @param {INopeObservable<T, S, G>} emitter The Event(Emitter) representing the Property * @param {IEventOptions<K>} options The Options used to define the registration. * @return {Promise<void>} * @memberof NopeBaseModule */ registerEvent<T, S = T, G = T>(name: string, emitter: INopeObservable<T, S, G>, options: IEventOptions): Promise<void>; /** * Function used to register a Method. This Method will be available in the shared network. * * @param {string} name Name of the Method, which is used during registration at the dispatcher * @param {(...args: any[]) => Promise<any>} method The function itself. It must be async. * @param {IServiceOptions} options The Options, used for registering. * @return {Promise<void>} * @memberof NopeBaseModule */ registerMethod(name: string, method: (...args: any[]) => Promise<any>, options: IServiceOptions): Promise<void>; /** * Unregister a Function * * @param {string} name Name of the function used during registering. * @return {Promise<void>} * @memberof NopeBaseModule */ unregisterFunction(name: string): Promise<void>; /** * Helper Function to unregister an Eventbased Property * * @param {string} name Name of the Property, that has been used to register. * @return {Promise<void>} * @memberof NopeBaseModule */ unregisterEvent(name: string): Promise<void>; /** * Helper Function to unregister an Observable (a Property.) * * @param {string} name Name of the Property, that has been used to register. * @return {Promise<void>} * @memberof NopeBaseModule */ unregisterProperty(name: string): Promise<void>; /** * Function to return all available Methods. * * @memberof NopeBaseModule */ listMethods(): Promise<{ method: (...args: any[]) => Promise<any>; options: IServiceOptions<any>; }[]>; /** * Function used to list all available Properties. * @memberof NopeBaseModule */ listProperties(): Promise<Array<{ observable: INopeObservable<any>; options: IEventOptions; }>>; /** * Function used to list all available Properties. * * @return {Promise<Array<{ observable: INopeObservable<any>, options: IPropertyOptions }>>} * @memberof NopeBaseModule */ listEvents(): Promise<Array<{ emitter: INopeEventEmitter<any>; options: IEventOptions; }>>; /** * An init Function. Used to initialize the Element. * * @return {Promise<void>} * @memberof NopeBaseModule */ init(...args: any[]): Promise<void>; /** * Function, which is used to unregister the element. * * @memberof NopeBaseModule */ dispose(): Promise<void>; /** * Helper Function to extract the used identifiert of Property * * @param {(((...args) => Promise<any>) | INopeObservable<any>)} prop_event_or_func The Property or the Function to receive the Name. * @return {*} {string} * @memberof NopeBaseModule */ getIdentifierOf(prop_event_or_func: ((...args: any[]) => Promise<any>) | INopeObservable<any>, type?: "topicToPublish" | "topicToSubscribe"): string; /** * Helper function to extract an description of the Module. * * @return {INopeModuleDescription} a parsed description * @memberof NopeBaseModule */ toDescription(): INopeModuleDescription; }