Socket
Socket
Sign inDemoInstall

abstract-app

Package Overview
Dependencies
3
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

abstract-app

Abstract Class to represent entities that can be started and stopped


Version published
Weekly downloads
1
decreased by-75%
Maintainers
1
Install size
148 kB
Created
Weekly downloads
 

Readme

Source

abstract-app

An Abstract Application Class that handles kill signals (SIGINT and SIGTERM) and enforces stop timeout

Installation

npm i --save abstract-app

Usage

Supports both ESM and CommonJS
// esm
import AbstractApp from 'abstract-app`
// commonjs
const AbstractApp = require('abstract-app')
Define a AppClass and start the app
import { createServer } from 'http'

class MyApp extends AbstractApp {
  constructor() {
    super({
      // required opts
      logger: console,
      stopTimeout: 15*1000
    })
    this.handle
    this.server = createServer((req, res) => {
      res.statusCode = 200;
      res.end('Hello World');
    })
  }
  protected async _start() {
    return new Promise((resolve, reject) => {
      this.server.once('error', reject)
      this.server.listen(3000, () => {
        this.server.removeListener('error', reject)
        resolve()
      })
    })
  }
  protected async _stop() {
    return new Promise((resolve, reject) => {
      this.server.close((err) => {
        if (err) return reject(err)
        resolve()
      })
    })
  }
}

const app = new MyApp()
await app.start()
console.log(`app pid: ${process.pid}`)
Stop the app
/* ... see example above ... */
const app = new MyApp()
await app.start()
console.log(`app pid: ${process.pid}`)
await app.stop()
Stop failures
  • If the app fails to stop the app will be forced to shutdown (force: true)
  • If the app fails to stop within the stopTimeout it will be force shutdown

Signals and Logging

Start the app

> node app.js
starting app...
app started
app pid: 98850

Send the app SIGINT

> kill -SIGINT 98850

App logs after stop

stopping app...
app stopped

App logs if stop errors

stopping app...
error stopping app {
  err: Error: boom
      at filename:10:17
}

License

MIT

Keywords

FAQs

Last updated on 26 Jun 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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc