Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

init-system

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

init-system

Declarative startup/shutdown for your Node.js apps.

  • 1.1.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

init-system

NPM Version Dependencies Build Status Code Coverage

Declarative startup/shutdown for your Node.js apps.

This solution has a dependency declarations similar to Linux startup systems or Makefiles. It also has inversion of control similar to middleware.

Project status

Unmaintained

This module saw sucessful deployments into production for projects I worked on, but we eventually decided to move to booture. The functionality and syntax are similar, but it offers cleaner integration into Fluture and well defined behaviour since it's based on Fluture Hooks.

Usage

First we need to declare our services.

// services/my-service.js

module.exports = {

	// The name of this service.
	provides: 'myService',

	// The dependencies of this service.
	after: ['config', 'database'],

	/*
		Below is the startup and shutdown logic.

		services: object
			This object holds all of the dependencies
			declared in "after".

		provide: function(value) => Future
			A function you need to call to signal
			your service is created and ready for use.
	*/
	service: function*(services, provide) {

		// Use your dependencies.
		const myService = new MyService(services.config, services.database);

		// Let init-system know the service is ready.
		const exitCode = yield provide(myService);

		// Do our shutdown logic.
		myService.close();

		// Pass on the exit code.
		return exitCode;
	}

};

Then in our main script, load them using init-system.

// index.js

const init = require('init-system');

init.services(

	// Ordering is done in the service descriptions,
	// so we can simply provide an unsorted array.
	[
		require('./services/config.js'),
		require('./services/my-service.js'),
		require('./services/database.js')
	],

	// Node callback.
	function(err, exitCode){
		if(err){
			console.error(`Error during application startup / shutdown: ${err}`);
		} else {
			console.log(`Application exitted with ${exitCode}`);
		}
	}

);

Available options

You can call init.services(services, [options], callback) with an options object to change some behavior.

keytypedescription
loggerfunction(message)Allows you to set a logger for verbose startup / shutdown messages.
View example usage for the options
const options = {

	// Sets a logger for verbose startup / shutdown messages.
	logger: function(message) {
		console.log('init-system', message);
	}

};

init.services(
	[/* services */],
	options,
	function(err, exitCode) { /* callback */ }
);

Keywords

FAQs

Package last updated on 10 May 2019

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc