Skip to content

Commit b300f28

Browse files
chore(all): prepare release 1.4.0
1 parent c35f1c3 commit b300f28

17 files changed

+9973
-648
lines changed

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aurelia-dependency-injection",
3-
"version": "1.3.2",
3+
"version": "1.4.0",
44
"description": "A lightweight, extensible dependency injection container for JavaScript.",
55
"keywords": [
66
"aurelia",

doc/CHANGELOG.md

+17
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
<a name="1.4.0"></a>
2+
# [1.4.0](https://github.com/aurelia/dependency-injection/compare/1.3.2...1.4.0) (2018-06-18)
3+
4+
5+
### Bug Fixes
6+
7+
* **injection:** fail with autoinject and own static inject ([e230bda](https://github.com/aurelia/dependency-injection/commit/e230bda))
8+
* **resolver:** use own property 'inject' in autoinject and parameter decorators ([724ff08](https://github.com/aurelia/dependency-injection/commit/724ff08))
9+
* **resolvers:** remove unusable asValue option of the factory decorator ([5739152](https://github.com/aurelia/dependency-injection/commit/5739152))
10+
11+
12+
### Features
13+
14+
* **resolvers:** allow using Factory.of and NewInstance.of with registered handlers ([991cbb5](https://github.com/aurelia/dependency-injection/commit/991cbb5))
15+
16+
17+
118
<a name="1.3.2"></a>
219
## [1.3.2](https://github.com/aurelia/dependency-injection/compare/1.3.1...v1.3.2) (2017-08-22)
320

doc/api.json

+1-1
Large diffs are not rendered by default.

dist/amd/aurelia-dependency-injection.js doc/dist/amd/aurelia-dependency-injection.js

+88-105
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
44
Object.defineProperty(exports, "__esModule", {
55
value: true
66
});
7-
exports.Container = exports.InvocationHandler = exports._emptyParameters = exports.SingletonRegistration = exports.TransientRegistration = exports.FactoryInvoker = exports.NewInstance = exports.Factory = exports.StrategyResolver = exports.Parent = exports.Optional = exports.All = exports.Lazy = exports.resolver = undefined;
7+
exports.Container = exports.InvocationHandler = exports._emptyParameters = exports.SingletonRegistration = exports.TransientRegistration = exports.FactoryInvoker = exports.NewInstance = exports.Factory = exports.Parent = exports.Optional = exports.All = exports.Lazy = exports.StrategyResolver = exports.resolver = undefined;
88
exports.getDecoratorDependencies = getDecoratorDependencies;
99
exports.lazy = lazy;
1010
exports.all = all;
@@ -22,7 +22,7 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
2222

2323

2424

25-
var _dec, _class, _dec2, _class3, _dec3, _class5, _dec4, _class7, _dec5, _class9, _dec6, _class11, _dec7, _class13, _classInvokers;
25+
var _dec, _class, _dec2, _class2, _dec3, _class3, _dec4, _class4, _dec5, _class5, _dec6, _class6, _dec7, _class7, _classInvokers;
2626

2727
var resolver = exports.resolver = _aureliaMetadata.protocol.create('aurelia:resolver', function (target) {
2828
if (!(typeof target.get === 'function')) {
@@ -32,7 +32,39 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
3232
return true;
3333
});
3434

35-
var Lazy = exports.Lazy = (_dec = resolver(), _dec(_class = function () {
35+
var StrategyResolver = exports.StrategyResolver = (_dec = resolver(), _dec(_class = function () {
36+
function StrategyResolver(strategy, state) {
37+
38+
39+
this.strategy = strategy;
40+
this.state = state;
41+
}
42+
43+
StrategyResolver.prototype.get = function get(container, key) {
44+
switch (this.strategy) {
45+
case 0:
46+
return this.state;
47+
case 1:
48+
var _singleton = container.invoke(this.state);
49+
this.state = _singleton;
50+
this.strategy = 0;
51+
return _singleton;
52+
case 2:
53+
return container.invoke(this.state);
54+
case 3:
55+
return this.state(container, key, this);
56+
case 4:
57+
return this.state[0].get(container, key);
58+
case 5:
59+
return container.get(this.state);
60+
default:
61+
throw new Error('Invalid strategy: ' + this.strategy);
62+
}
63+
};
64+
65+
return StrategyResolver;
66+
}()) || _class);
67+
var Lazy = exports.Lazy = (_dec2 = resolver(), _dec2(_class2 = function () {
3668
function Lazy(key) {
3769

3870

@@ -52,8 +84,8 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
5284
};
5385

5486
return Lazy;
55-
}()) || _class);
56-
var All = exports.All = (_dec2 = resolver(), _dec2(_class3 = function () {
87+
}()) || _class2);
88+
var All = exports.All = (_dec3 = resolver(), _dec3(_class3 = function () {
5789
function All(key) {
5890

5991

@@ -70,9 +102,9 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
70102

71103
return All;
72104
}()) || _class3);
73-
var Optional = exports.Optional = (_dec3 = resolver(), _dec3(_class5 = function () {
105+
var Optional = exports.Optional = (_dec4 = resolver(), _dec4(_class4 = function () {
74106
function Optional(key) {
75-
var checkParent = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
107+
var checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
76108

77109

78110

@@ -89,14 +121,14 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
89121
};
90122

91123
Optional.of = function of(key) {
92-
var checkParent = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
124+
var checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
93125

94126
return new Optional(key, checkParent);
95127
};
96128

97129
return Optional;
98-
}()) || _class5);
99-
var Parent = exports.Parent = (_dec4 = resolver(), _dec4(_class7 = function () {
130+
}()) || _class4);
131+
var Parent = exports.Parent = (_dec5 = resolver(), _dec5(_class5 = function () {
100132
function Parent(key) {
101133

102134

@@ -112,55 +144,27 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
112144
};
113145

114146
return Parent;
115-
}()) || _class7);
116-
var StrategyResolver = exports.StrategyResolver = (_dec5 = resolver(), _dec5(_class9 = function () {
117-
function StrategyResolver(strategy, state) {
118-
119-
120-
this.strategy = strategy;
121-
this.state = state;
122-
}
123-
124-
StrategyResolver.prototype.get = function get(container, key) {
125-
switch (this.strategy) {
126-
case 0:
127-
return this.state;
128-
case 1:
129-
var singleton = container.invoke(this.state);
130-
this.state = singleton;
131-
this.strategy = 0;
132-
return singleton;
133-
case 2:
134-
return container.invoke(this.state);
135-
case 3:
136-
return this.state(container, key, this);
137-
case 4:
138-
return this.state[0].get(container, key);
139-
case 5:
140-
return container.get(this.state);
141-
default:
142-
throw new Error('Invalid strategy: ' + this.strategy);
143-
}
144-
};
145-
146-
return StrategyResolver;
147-
}()) || _class9);
148-
var Factory = exports.Factory = (_dec6 = resolver(), _dec6(_class11 = function () {
147+
}()) || _class5);
148+
var Factory = exports.Factory = (_dec6 = resolver(), _dec6(_class6 = function () {
149149
function Factory(key) {
150150

151151

152152
this._key = key;
153153
}
154154

155155
Factory.prototype.get = function get(container) {
156-
var _this2 = this;
156+
var fn = this._key;
157+
var resolver = container.getResolver(fn);
158+
if (resolver && resolver.strategy === 3) {
159+
fn = resolver.state;
160+
}
157161

158162
return function () {
159163
for (var _len = arguments.length, rest = Array(_len), _key = 0; _key < _len; _key++) {
160164
rest[_key] = arguments[_key];
161165
}
162166

163-
return container.invoke(_this2._key, rest);
167+
return container.invoke(fn, rest);
164168
};
165169
};
166170

@@ -169,8 +173,8 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
169173
};
170174

171175
return Factory;
172-
}()) || _class11);
173-
var NewInstance = exports.NewInstance = (_dec7 = resolver(), _dec7(_class13 = function () {
176+
}()) || _class6);
177+
var NewInstance = exports.NewInstance = (_dec7 = resolver(), _dec7(_class7 = function () {
174178
function NewInstance(key) {
175179

176180

@@ -188,7 +192,14 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
188192
var dynamicDependencies = this.dynamicDependencies.length > 0 ? this.dynamicDependencies.map(function (dependency) {
189193
return dependency['protocol:aurelia:resolver'] ? dependency.get(container) : container.get(dependency);
190194
}) : undefined;
191-
var instance = container.invoke(this.key, dynamicDependencies);
195+
196+
var fn = this.key;
197+
var resolver = container.getResolver(fn);
198+
if (resolver && resolver.strategy === 3) {
199+
fn = resolver.state;
200+
}
201+
202+
var instance = container.invoke(fn, dynamicDependencies);
192203
container.registerInstance(this.asKey, instance);
193204
return instance;
194205
};
@@ -207,41 +218,34 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
207218
};
208219

209220
return NewInstance;
210-
}()) || _class13);
211-
function getDecoratorDependencies(target, name) {
212-
var dependencies = target.inject;
213-
if (typeof dependencies === 'function') {
214-
throw new Error('Decorator ' + name + ' cannot be used with "inject()". Please use an array instead.');
215-
}
216-
if (!dependencies) {
217-
dependencies = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target).slice();
218-
target.inject = dependencies;
219-
}
221+
}()) || _class7);
222+
function getDecoratorDependencies(target) {
223+
autoinject(target);
220224

221-
return dependencies;
225+
return target.inject;
222226
}
223227

224228
function lazy(keyValue) {
225229
return function (target, key, index) {
226-
var params = getDecoratorDependencies(target, 'lazy');
227-
params[index] = Lazy.of(keyValue);
230+
var inject = getDecoratorDependencies(target);
231+
inject[index] = Lazy.of(keyValue);
228232
};
229233
}
230234

231235
function all(keyValue) {
232236
return function (target, key, index) {
233-
var params = getDecoratorDependencies(target, 'all');
234-
params[index] = All.of(keyValue);
237+
var inject = getDecoratorDependencies(target);
238+
inject[index] = All.of(keyValue);
235239
};
236240
}
237241

238242
function optional() {
239-
var checkParentOrTarget = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
243+
var checkParentOrTarget = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
240244

241245
var deco = function deco(checkParent) {
242246
return function (target, key, index) {
243-
var params = getDecoratorDependencies(target, 'optional');
244-
params[index] = Optional.of(params[index], checkParent);
247+
var inject = getDecoratorDependencies(target);
248+
inject[index] = Optional.of(inject[index], checkParent);
245249
};
246250
};
247251
if (typeof checkParentOrTarget === 'boolean') {
@@ -251,15 +255,14 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
251255
}
252256

253257
function parent(target, key, index) {
254-
var params = getDecoratorDependencies(target, 'parent');
255-
params[index] = Parent.of(params[index]);
258+
var inject = getDecoratorDependencies(target);
259+
inject[index] = Parent.of(inject[index]);
256260
}
257261

258-
function factory(keyValue, asValue) {
262+
function factory(keyValue) {
259263
return function (target, key, index) {
260-
var params = getDecoratorDependencies(target, 'factory');
261-
var factory = Factory.of(keyValue);
262-
params[index] = asValue ? factory.as(asValue) : factory;
264+
var inject = getDecoratorDependencies(target);
265+
inject[index] = Factory.of(keyValue);
263266
};
264267
}
265268

@@ -270,10 +273,10 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
270273

271274
var deco = function deco(asKey) {
272275
return function (target, key, index) {
273-
var params = getDecoratorDependencies(target, 'newInstance');
274-
params[index] = NewInstance.of.apply(NewInstance, [params[index]].concat(dynamicDependencies));
276+
var inject = getDecoratorDependencies(target);
277+
inject[index] = NewInstance.of.apply(NewInstance, [inject[index]].concat(dynamicDependencies));
275278
if (!!asKey) {
276-
params[index].as(asKey);
279+
inject[index].as(asKey);
277280
}
278281
};
279282
};
@@ -344,7 +347,7 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
344347
}
345348

346349
function singleton(keyOrRegisterInChild) {
347-
var registerInChild = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
350+
var registerInChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
348351

349352
return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));
350353
}
@@ -366,7 +369,7 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
366369

367370
var SingletonRegistration = exports.SingletonRegistration = function () {
368371
function SingletonRegistration(keyOrRegisterInChild) {
369-
var registerInChild = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
372+
var registerInChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
370373

371374

372375

@@ -581,7 +584,7 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
581584
};
582585

583586
Container.prototype.hasResolver = function hasResolver(key) {
584-
var checkParent = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
587+
var checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
585588

586589
validateKey(key);
587590

@@ -713,23 +716,8 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
713716

714717
function autoinject(potentialTarget) {
715718
var deco = function deco(target) {
716-
var previousInject = target.inject ? target.inject.slice() : null;
717-
var autoInject = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target) || _emptyParameters;
718-
if (!previousInject) {
719-
target.inject = autoInject;
720-
} else {
721-
for (var i = 0; i < autoInject.length; i++) {
722-
if (previousInject[i] && previousInject[i] !== autoInject[i]) {
723-
var prevIndex = previousInject.indexOf(autoInject[i]);
724-
if (prevIndex > -1) {
725-
previousInject.splice(prevIndex, 1);
726-
}
727-
previousInject.splice(prevIndex > -1 && prevIndex < i ? i - 1 : i, 0, autoInject[i]);
728-
} else if (!previousInject[i]) {
729-
previousInject[i] = autoInject[i];
730-
}
731-
}
732-
target.inject = previousInject;
719+
if (!target.hasOwnProperty('inject')) {
720+
target.inject = (_aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target) || _emptyParameters).slice();
733721
}
734722
};
735723

@@ -742,16 +730,11 @@ define(['exports', 'aurelia-metadata', 'aurelia-pal'], function (exports, _aurel
742730
}
743731

744732
return function (target, key, descriptor) {
745-
if (typeof descriptor === 'number' && rest.length === 1) {
746-
var params = target.inject;
747-
if (typeof params === 'function') {
748-
throw new Error('Decorator inject cannot be used with "inject()". Please use an array instead.');
749-
}
750-
if (!params) {
751-
params = _aureliaMetadata.metadata.getOwn(_aureliaMetadata.metadata.paramTypes, target).slice();
752-
target.inject = params;
733+
if (typeof descriptor === 'number') {
734+
autoinject(target);
735+
if (rest.length === 1) {
736+
target.inject[descriptor] = rest[0];
753737
}
754-
params[descriptor] = rest[0];
755738
return;
756739
}
757740

File renamed without changes.

0 commit comments

Comments
 (0)