Package Exports
- pip-services3-commons-node
- pip-services3-commons-node/obj/src/convert/DateTimeConverter
- pip-services3-commons-node/obj/src/data/FilterParams
- pip-services3-commons-node/obj/src/data/IdGenerator
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pip-services3-commons-node) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Portable Abstractions and Patterns for Node.js
This module is a part of the Pip.Services polyglot microservices toolkit. It provides a set of basic patterns used in microservices or backend services. Also the module implemenets a reasonably thin abstraction layer over most fundamental functions across all languages supported by the toolkit to facilitate symmetric implementation.
This module contains the following packages:
- Commands - commanding and eventing patterns
- Config - configuration pattern
- Convert - portable value converters
- Data - data patterns
- Errors- application errors
- Random - random data generators
- Refer - locator inversion of control (IoC) pattern
- Reflect - portable reflection utilities
- Run - component life-cycle management patterns
- Validate - validation patterns
- Configuration Pattern
- Locator Pattern
- Component Lifecycle
- Components with Active Logic
- Data Patterns
- API Reference
- Change Log
- Get Help
- Contribute
Use
Install the NPM package as
npm install pip-services3-commons-node --save
Then you are ready to start using the Pip.Services patterns to augment your backend code.
For instance, here is how you can implement a component, that receives configuration, get assigned references, can be opened and closed using the patterns from this module.
import { IConfigurable } from 'pip-services3-commons-node';
import { ConfigParams } from 'pip-services3-commons-node';
import { IReferenceable } from 'pip-services3-commons-node';
import { IReferences } from 'pip-services3-commons-node';
import { Descriptor } from 'pip-services3-commons-node';
import { IOpenable } from 'pip-services3-commons-node';
export class MyComponentA implements IConfigurable, IReferenceable, IOpenable {
private _param1: string = "ABC";
private _param2: number = 123;
private _anotherComponent: MyComponentB;
private _opened: boolean = true;
public configure(config: ConfigParams): void {
this._param1 = config.getAsStringWithDefault("param1", this._param1);
this._param2 = config.getAsIntegerWithDefault("param2", this._param2);
}
public setReferences(refs: IReferences): void {
this._anotherComponent = refs.getOneRequired<MyComponentB>(
new Descriptor("myservice", "mycomponent-b", "*", "*", "1.0")
);
}
public isOpen(): boolean {
return this._opened;
}
public open(correlationId: string, callback: (err: any) => void): void {
this._opened = true;
console.log("MyComponentA has been opened.");
callback(null);
}
public close(correlationId: string, callback: (err: any) => void): void {
this._opened = true;
console.log("MyComponentA has been closed.");
callback(null);
}
}
Then here is how the component can be used in the code
import { ConfigParams } from 'pip-services3-commons-node';
import { References } from 'pip-services3-commons-node';
import { Descriptor } from 'pip-services3-commons-node';
let myComponentA = new MyComponentA();
// Configure the component
myComponentA.configure(ConfigParams.fromTuples(
'param1', 'XYZ',
'param2', 987
));
// Set references to the component
myComponentB.setReferences(References.fromTuples(
new Descriptor("myservice", "mycomponent-b", "default", "default", "1.0", myComponentB
));
// Open the component
myComponentB.open("123", (err) => {
console.log("MyComponentA has been opened.");
...
});
Develop
For development you shall install the following prerequisites:
- Node.js 8+
- Visual Studio Code or another IDE of your choice
- Docker
- Typescript
Install dependencies:
npm install
Compile the code:
tsc
Run automated tests:
npm test
Generate API documentation:
./docgen.ps1
Before committing changes run dockerized build and test as:
./build.ps1
./test.ps1
./clear.ps1
Contacts
The module is created and maintained by Sergey Seroukhov.
The documentation is written by Egor Nuzhnykh, Alexey Dvoykin, Mark Makarychev.