vulcain-corejs
Version:
Vulcain micro-service framework
84 lines (83 loc) • 2.48 kB
TypeScript
export interface ServiceDependencyInfo {
service: string;
version: string;
discoveryAddress?: string;
}
export interface ConfigurationInfo {
key: string;
schema: string;
}
export interface DatabaseDependencyInfo {
address: string;
schema: string;
}
export interface ExternalDependencyInfo {
uri: string;
}
/**
* List all service dependencies
*
* @export
* @class VulcainManifest
*/
export declare class VulcainManifest {
serviceName: string;
serviceVersion: string;
dependencies: {
services: Array<ServiceDependencyInfo>;
externals: Array<ExternalDependencyInfo>;
databases: Array<DatabaseDependencyInfo>;
packages: {
name: string;
version: string;
}[];
};
configurations: {
[name: string]: string;
};
domain: string;
constructor(serviceName: string, serviceVersion: string);
/**
* Register an external dependency like an api call
*/
registerExternal(uri: string): void;
/**
* Database dependency
*/
registerProvider(address: string, schema: string): void;
/**
* Vulcain service dependency
*/
registerService(targetServiceName: string, targetServiceVersion: string): void;
/**
* Retrieve package dependencies
*/
private retrievePackage();
}
/**
* Declare a vulcain service dependencies for the current service
*
* @export
* @param {string} service Name of the called service
* @param {string} version Version of the called service
* @param {string} discoveryAddress Discovery address of the called service (ex:http://..:30000/api/_servicedesctipyion)
* @returns
*/
export declare function ServiceDependency(service: string, version: string, discoveryAddress: string): (target: Function) => void;
/**
* Declare an external http call dependencies for the current service
*
* @export
* @param {string} uri External uri
* @returns
*/
export declare function HttpDependency(uri: string): (target: Function) => void;
/**
* Declare a dynamic property configuration for the current service.
*
* @export
* @param {string} propertyName Property name
* @param {string} schema Property schema (can be a model or a native js type)
* @returns
*/
export declare function ConfigurationProperty(propertyName: string, schema: string): (target: any, propertyKey: string) => void;