1 | 'use strict'
|
2 |
|
3 | export var Container = {
|
4 |
|
5 | _bindings: {},
|
6 |
|
7 | bind: function(service_name, service_provider, allow_override = false) {
|
8 | if (this.isBound(service_name)) {
|
9 | if (allow_override) {
|
10 | this._bindings[service_name] = service_provider;
|
11 | } else {
|
12 | console.error('Container error: Service "' + service_name + '" is already bound and override is not allowed. ' +
|
13 | 'Pass true as second argument to Container.bind() to allow override.');
|
14 | return false;
|
15 | }
|
16 | } else {
|
17 | this._bindings[service_name] = service_provider;
|
18 | }
|
19 | },
|
20 |
|
21 | get: function(service_name) {
|
22 | if (this._bindings[service_name] !== undefined) {
|
23 | return this._bindings[service_name];
|
24 | } else {
|
25 | console.error('Container error: Service "' + service_name + '" is not bound. Use Container.bind() first.');
|
26 | return false;
|
27 | }
|
28 | },
|
29 |
|
30 | isBound(service_name) {
|
31 | return this._bindings[service_name] !== undefined;
|
32 | },
|
33 |
|
34 | getRegisteredBindings: function() {
|
35 | var a = [];
|
36 | for (var key in this._bindings) {
|
37 | a.push(key);
|
38 | }
|
39 | return a;
|
40 | }
|
41 |
|
42 | };
|