New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

container.js

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

container.js

A dead-simple instance container for node.js.

latest
Source
npmnpm
Version
1.0.15
Version published
Maintainers
1
Created
Source

Container.js

A dead-simple instance container for node.js.

dependenciesBuild Status

Motivation

Container.js aims to be as simple and unobtrusive as possible while providing a reliable way to store and access instances of a predefined constructor. While it can be used in many ways , the main motivation behind the module was to provide a way to share constructor instances between a node.js application by attaching a container instance to the class/constructor.

Installation

npm install container.js

Usage

Instantiation

On it's simplest form

var Container = require("container.js");

var constructorContainer = new Container(Constructor);

However a most likely desired usage will be the following

var Container = require("container.js");

var Constructor = function(){

};

Constructor.container = new Container(Constructor);

module.exports = Constructor;

for if the Human constructor module is exported and then required elsewhere, the container and it's items will be available as

var Constructor = require('constructor');

Constructor.container...

Default arguments

If you would like to define default arguments for all constructed instances which can be overridden/extended, it is possible to do so in two ways.

Traditional

Let

var Human = function(gender,country,favouriteColor){
	this.gender = gender;
	this.country = country;
	this.favouriteColor = favouriteColor;
};

module.exports = Human;

If your constructor accept one or multiple arguments as the previously defined Human constructor and not a single configuration object you can define your container default arguments as

// Instantiate the container with the Human constructor.
var container = new Container(Human);
// Set the default arguments
container.defaults = ['male','USA','yellow'];

And then whenever you add a new instance to your container as

container.add('paul');

The Human constructor will now be called with the 'male','USA','yellow' arguments .

Want to override your defaults ?

Call the add method with the individual instance arguments as

container.add('sarah','female','canada','pink');

Want to override just some of your defaults?

Call the add method with the individual instance arguments and undefined to use the default value for a parameter

container.add('carl',undefined,undefined,'green');

The Human constructor will now be called with the 'male','USA','green' arguments (we previously defined 'male','USA' as defaults)

Single configuration object

Let

var Alien = function(configuration){
	this.specie = configuration.specie;
	this.planet = configuration.planet;
	this.language = configuration.language;
};

module.exports = Alien;

If your constructor accepts single configuration object, you can define your container default arguments as

// Instantiate the container with the Alien constructor.
var container = new Container(Alien);
// Set the default arguments
container.defaults = {
	specie : 'wookie',
	planet : 'kashyyyk',
	language : 'shyriiwook'
};

And then whenever you add a new instance to your container as

container.add('chewbacca');

The Alien constructor will now be called with the configuration object

{
	specie : 'wookie',
	planet : 'kashyyyk',
	language : 'shyriiwook'
}

Want to override your defaults ?

Call the add method with the individual instance configuration object attributes as

container.add('han solo',{
	specie : 'human',
	planet : 'corellia',
	language : 'english'
});

Want to override just some of your defaults?

Call the add method with the individual instance configuration argument attributes omitting the attributes where the default value should be used

container.add('wicket',{
	specie : 'ewok'
});

The Alien constructor will now be called with the configuration object (we previously defined the planet and language defaults)

{
	specie : 'ewok',
	planet : 'kashyyyk',
	language : 'shyriiwook'
}

Adding an instance

// Returns the added instance
container.add(identifier,args...);

Retrieving an instance

// Returns the retrieved instance.
container.get(identifier);

Removing an instance

container.remove(identifier);

Checking for existence

// Returns a boolean.
container.has(identifier); // Returns a boolean

Installation

Installing npm (node package manager)

  curl http://npmjs.org/install.sh | sh

Installing Container.js

  [sudo] npm install container.js

Run Tests

All of the Container.js tests are written in jasmine, and designed to be run with npm.

  $ npm install --dev
  $ npm test

Author: Joel Hernández

Keywords

container.js

FAQs

Package last updated on 11 Jul 2015

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