/**
* Locator type that most often used in PipServices toolkit.
* It locates components using several fields:
* - Group: a package or just named group of components like "pip-services"
* - Type: logical component type that defines it's contract like "persistence"
* - Kind: physical implementation type like "mongodb"
* - Name: unique component name like "default"
* - Version: version of the component contract like "1.0"
*
* The locator matching can be done by all or only few selected fields.
* The fields that shall be excluded from the matching must be set to "*"
or null
.
* That approach allows to implement many interesting scenarios. For instance:
* - Locate all loggers (match by type and version)
* - Locate persistence components for a microservice (match by group and type)
* - Locate specific component by its name (match by name)
*
* ### Example ###
*
* let locator1 = new Descriptor("mygroup", "connector", "aws", "default", "1.0");
* let locator2 = Descriptor.fromString("mygroup:connector:*:*:1.0");
*
* locator1.match(locator2); // Result: true
* locator1.equal(locator2); // Result: true
* locator1.exactMatch(locator2); // Result: false
*/
export declare class Descriptor {
private _group;
private _type;
private _kind;
private _name;
private _version;
/**
* Creates a new instance of the descriptor.
*
* @param group a logical component group
* @param type a logical component type or contract
* @param kind a component implementation type
* @param name a unique component name
* @param version a component implementation version
*/
constructor(group: string, type: string, kind: string, name: string, version: string);
/**
* Gets the component's logical group.
*
* @returns the component's logical group
*/
getGroup(): string;
/**
* Gets the component's logical type.
*
* @returns the component's logical type.
*/
getType(): string;
/**
* Gets the component's implementation type.
*
* @returns the component's implementation type.
*/
getKind(): string;
/**
* Gets the unique component's name.
*
* @returns the unique component's name.
*/
getName(): string;
/**
* Gets the component's implementation version.
*
* @returns the component's implementation version.
*/
getVersion(): string;
private matchField;
/**
* Partially matches this descriptor to another descriptor.
* Fields that contain "*" or null are excluded from the match.
*
* @param descriptor the descriptor to match this one against.
* @returns true if descriptors match and false otherwise
*
* @see [[exactMatch]]
*/
match(descriptor: Descriptor): boolean;
private exactMatchField;
/**
* Matches this descriptor to another descriptor by all fields.
* No exceptions are made.
*
* @param descriptor the descriptor to match this one against.
* @returns true if descriptors match and false otherwise.
*
* @see [[match]]
*/
exactMatch(descriptor: Descriptor): boolean;
/**
* Checks whether all descriptor fields are set.
* If descriptor has at least one "*" or null field it is considered "incomplete",
*
* @returns true if all descriptor fields are defined and false otherwise.
*/
isComplete(): boolean;
/**
* Compares this descriptor to a value.
* If value is a Descriptor it tries to match them,
* otherwise the method returns false.
*
* @param value the value to match against this descriptor.
* @returns true if the value is matching descriptor and false otherwise.
*
* @see [[match]]
*/
equals(value: any): boolean;
/**
* Gets a string representation of the object.
* The result is a colon-separated list of descriptor fields as
* "mygroup:connector:aws:default:1.0"
*
* @returns a string representation of the object.
*/
toString(): string;
/**
* Parses colon-separated list of descriptor fields and returns them as a Descriptor.
*
* @param value colon-separated descriptor fields to initialize Descriptor.
* @returns a newly created Descriptor.
* @throws a [[ConfigException]] if the descriptor string is of a wrong format.
*/
static fromString(value: String): Descriptor;
}