Nefarious Pomegranate Magnate

    This package has been deprecated

    Author message:

    Package no longer supported. Upgrade to @egomobile/microservices

    @egodigital/microservices
    TypeScript icon, indicating that this package has built-in type declarations

    0.7.0 • Public • Published

    npm

    @egodigital/microservices

    Shared library for microservices, written for Node.js, in TypeScript.

    Install

    Execute the following command from your project folder, where your package.json file is stored:

    npm install --save @egodigital/microservices

    Usage

    Auth

    Passwords

    Hash passwords with bcrypt:

    import { checkPassword, checkPasswordSync, hashPassword, hashPasswordSync } from '@egodigital/microservices';
    
    const hash1 = await hashPassword('test');
    const doesMatch1 = await checkPassword('test', hash1);  // true
    
    const hash2 = hashPasswordSync('test');
    const doesMatch2 = checkPasswordSync('Test', hash2);  // false

    JWT

    Sign and verify JSON Web Tokens:

    import { signJWT, verifyJWT } from '@egodigital/microservices';
    
    interface IUserToken {
        uuid: string;
    }
    
    const jwt = signJWT({
        uuid: 'cb246b52-b8cd-4916-bfad-6bfc43845597'
    });
    
    const decodedToken = verifyJWT<IUserToken>(jwt);
    Express

    Use predefined Express middleware to verify and decode JWTs:

    import express from 'express';
    import { withJWT } from '@egodigital/microservices';
    
    const app = express();
    
    app.get('/', withJWT(), async (request, response) => {
        // decoded, valid user token is stored in:
        // request.userToken
    });
    
    app.listen(4242, () => {
        console.log('Service is listening ...');
    });

    Constants

    Name Description Example
    BCRYPT_ROUNDS The number of rounds for bcrypt hashing. Default: 10 12
    JWT_SECRET The secret for signing and validating JWT. mySecretJWTSecret
    NATS_CLUSTER_ID The name of the cluster, that contains all microservices. my-cluster
    NATS_GROUP The name of the pod group / Kubernetes deployment. my-service-or-deployment
    NATS_URL The URL to the NATS server. http://my-nats-service:4222
    POD_NAME The name of the pod. This should come as imported metadata from Kubernetes. my-service-or-deployment-xcsgbxv

    NATS

    Connect to a NATS server:

    import { stan } from '@egodigital/microservices';
    
    await stan.connect();
    stan.exitOnClose();

    Listener

    Listen for events:

    import { NatsListener } from '@egodigital/microservices';
    
    interface IMyEvent {
        foo: string;
        bar: number;
    }
    
    const myEventListener = new NatsListener<IMyEvent>('my.event');
    
    myEventListener.onMessage = async (context) => {
        // handle message in context.message of type IMyEvent
    };
    
    myEventListener.listen();

    Publisher

    Publish events:

    import { NatsPublisher } from '@egodigital/microservices';
    
    interface IMyEvent {
        foo: string;
        bar: number;
    }
    
    const myEventPublisher = new NatsPublisher<IMyEvent>('my.event');
    
    await myEventPublisher.publish({
        foo: "TM+MK",
        bar: 42
    });

    Documentation

    The API documentation can be found here.

    Install

    npm i @egodigital/microservices

    DownloadsWeekly Downloads

    20

    Version

    0.7.0

    License

    LGPL-3.0

    Unpacked Size

    53.2 kB

    Total Files

    23

    Last publish

    Collaborators

    • mkloubert
    • mkloubertego
    • ekegodigital