Socket
Book a DemoInstallSign in
Socket

@teamhive/node-common

Package Overview
Dependencies
Maintainers
10
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@teamhive/node-common

This repo houses our shared node functions and node handlers

latest
Source
npmnpm
Version
4.0.0
Version published
Maintainers
10
Created
Source

node-common

This repo houses our shared node functions and node handlers

@TryCatch(optionsOrException = {} as TryCatchOptions | TryCatchException, options = {} as TryCatchOptions )

This decorator will wrap your whole function into a try/catch and you can pass an optional custom error class for it to throw! If you only want to handle the error and not throw an excxeption, you can pass in handleOnly: true. When using this option, it will emit an event with the error through the TryCatchEmitter, which you should use to listen and handle these errors in your application. If you want to sanitize the error itself, like in case of taking unecessary propereties off of it, you can pass in a class that accepts an error as a parameter to errorWrapperClass or even have that class be the first parameter

    // Main file, right after bootstrap of application **caught error will be handled here**
    import { TryCatchEmitter } from '@teamhive/node-common';
    // This will setup any baseExceptions that may get thrown that you dont want to wrap with the wrapping class
    TryCatchEmitter.baseException = [MyBaseException, HttpException];
    TryCatchEmitter.listen((error) => errorHandler.captureException(error));

    // Options interface
    interface TryCatchOptions {
        handleOnly?: boolean;
        customResponseMessage?: string;
        errorWrapperClass?: { new (param1: Error) };
        isSynchronous?: boolean;
    }

    // Only pass in exception (this will throw an SqlException)
    @TryCatch(SqlException)
    async fetchAll() {
        return await this.usersRepository.fetchAll()
    }

    OR

    // Only pass in options (this will not throw but only report the SqlExceptionError)
    @TryCatch({ handleOnly: true, errorWrapperClass: SqlExceptionError })
    async fetchAll() {
        return await this.usersRepository.fetchAll()
    }

    OR

    // Pass in exception with options
    @TryCatch(SqlException, { handleOnly: true, customResponseMessage: 'error creating content' })
    async fetchAll() {
        return await this.usersRepository.fetchAll()
    }

NodeEventHandler

This statis class is designed to help you catch unhandled promise rejections and uncaught exceptions from the highest node process event listeners. You can als pass in a function to handle these exceptions gracefully.

At the very beginning in your index file you should setup our very basic event listeners

    'use strict'

    // setup uncaught exception handling
    try {
        const NodeEventHandler = require('@teamhive/node-common').NodeEventHandler;

        NodeEventHandler.logUncaughtException();
        NodeEventHandler.logUnhandleRejection();
    } catch (error) {
        console.error('ERROR SETTING UP EVENT HANDLER: ' + error);
        process.exit(1);
    }

    // start application
    require('./dist/main');

Once your app bootstraps and you have access to your error handler, you can pass that to it

    import { NodeEventHandler } from '@teamhive/node-common';

    // Get you errorHandler our of Reflector or whereever it is constructed

    NodeEventHandler.handleUnhandledRejection(errorHandler);
    NodeEventHandler.handleUncaughtException(errorHandler);

Distribution

npm pack
npm version (major|minor|patch)
npm publish

Note: This will also automatically push changes and tags post-publish

Keywords

Typescript

FAQs

Package last updated on 09 Feb 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts