Exciting news!Announcing our $4.6M Series Seed. Learn more
Socket
LoveBlogFAQ
Install
Log in

pip-services3-commons-node

Package Overview
Dependencies
3
Maintainers
1
Versions
4
Issues
File Explorer

Advanced tools

pip-services3-commons-node

Portable abstractions and patterns for Pip.Services in Node.js

    3.0.8latest

Version published
Maintainers
1
Yearly downloads
5,714
decreased by-29.84%

Weekly downloads

Readme

Source

Pip.Services Logo
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

Quick links:

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.

Keywords

Socket

Product

Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc