This repository has been archived by the owner on Sep 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
configurator.js
92 lines (63 loc) · 2.04 KB
/
configurator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
(function (factory) {
if (typeof define === 'function' && define.amd) {
define('ketamine/configurator', [], factory.bind(this, this));
} else {
factory(this);
}
})(function (global) {
var Configurator = function (injector) {
this.injector = injector;
};
Configurator.prototype.configureForModule = function (moduleId) {
var injector = this.injector;
if (!injector.moduleIsRegistered(moduleId)) {
injector.register(moduleId);
}
var moduleConfiguration = injector.getConfiguration(moduleId);
var getRequiresPrototype = function (dependencyId) {
var requiresPrototype = {
asInstance: function (instantiate) {
if (typeof instantiate === 'undefined') {
instantiate = true;
}
injector.setInstantiationForDependency(moduleId, dependencyId, instantiate)
return {
requires: configurationPrototype.requires,
isNativeModule: configurationPrototype.isNativeModule,
asInstance: requiresPrototype.asInstance,
asImplementationOf: requiresPrototype.asImplementationOf
};
},
asImplementationOf: function (interfaces) {
if (!interfaces) {
throw new Error('Please specify an array of interfaces');
}
injector.setInterfacesForDependency(moduleId, dependencyId, interfaces)
return {
requires: configurationPrototype.requires,
isNativeModule: configurationPrototype.isNativeModule,
asInstance: requiresPrototype.asInstance,
asImplementationOf: requiresPrototype.asImplementationOf
};
},
requires: configurationPrototype.requires
};
return requiresPrototype;
};
var configurationPrototype = {
requires: function (dependencyId) {
injector.addDependency(moduleId, dependencyId);
return getRequiresPrototype(dependencyId);
},
isNativeModule: function () {
injector.setNativeNodeModuleFlag(moduleId, true);
return configurationPrototype;
}
};
return configurationPrototype;
};
if (typeof module !== 'undefined') {
module.exports = Configurator;
}
return Configurator;
});