nope-js-browser
Version:
NoPE Runtime for the Browser. For nodejs please use nope-js-node
225 lines (224 loc) • 7.75 kB
TypeScript
/**
* @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;
}