js-Resolver($resolver)
===================
A light weight plugin for Inversion of Control(IOC) container for module pattern approch which can resolve an object or a class dynamically without polluting global scope. Adopating SOLID principle for seperation of concerns & single responsibility.

## Features
1. Light weight
2. Dynamically resolve 
3. Used Strict IIFE
4. Muliple files
5. SOLID principle


## Demo
1. [Demo](https://muzammilkm.github.io/js-resolver/docs/index.html)

## Installation

### Manual Installation

Download the **js-resolver.js** file or **jq-resolver.min.js** (*recommended*) file from dist folder and include it in your page either in the `<head>` section or just before the closing tag of the `<body>` section.

### NPM
```
> npm install js-resolver
```

### Bower
```
$ bower install js-resolver
```

### Nuget
```
PM> Install-Package js-resolver
```

## Introduction
A light weight plugin for Inversion of Control(IOC) container which can resolve objects or functions dynamically without polluting global scope. Adopating SOLID principle for seperation of concerns & single responsibility. This plugin is best used in Module pattern approch with IIFE & when you load multiple js files in browser.

Basic Example
```javascript
(function (resolver) {
   var personModel = {},
       _data;

   personModel.getFirstName = function() {
      return _data.firstName;
   };

   personModel.getLastName = function() {
      return _data.firstName;
   };

   personModel.setData = function(data) {
         _data = data;
   };

   resolver('person', personModel);

}(window.$resolver));
```
##### Resolving model
```javascript
(function (resolver) {
   var person = resolver('person');

   person.setData({
         firstName: 'Muzammil',
         middleName: 'Khaja',
         lastName: 'Mohammed'
      });

      console.log("your first name: " + person.getFirstName());
      console.log("your last name: " +person.getLastName());

}(window.$resolver));
```

## Documentation
Add/Register either an object or a function or a value with $resolver to be resolved later
```javascript
window.$resolver('alias name', object or function or value);
```
To resolve an object or a function or a value via alias name
```javascript
var expected = window.$resolver('alias name');
```
To check alias name is added/registered in $resolver.
```javascript
var expected = window.$resolver.has('alias name');
```
To remove an object or a function or a value from $resolver.
```javascript
var expected = window.$resolver.has('alias name');
if(expected){
   console.log('Exists');
} else{
   console.log('Does not Exists');
}
```
Add/Register singleton/static object in $resolver.
```javascript
var expected = window.$resolver.service('alias name', {});
```
To extend singleton/static object in $resolver.
```javascript
var expected = window.$resolver.service('alias name');
expected.extend(object or function or value);
```