2014-09-30 14:56:33 -04:00
|
|
|
import {ListWrapper, List} from 'facade/collection';
|
2014-10-03 16:29:59 -04:00
|
|
|
import {stringify} from 'facade/lang';
|
2014-09-30 14:56:33 -04:00
|
|
|
|
|
|
|
function constructResolvingPath(keys: List) {
|
|
|
|
if (keys.length > 1) {
|
2014-10-03 16:29:59 -04:00
|
|
|
var tokenStrs = ListWrapper.map(keys, (k) => stringify(k.token));
|
2014-09-30 14:56:33 -04:00
|
|
|
return " (" + tokenStrs.join(' -> ') + ")";
|
|
|
|
} else {
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export class NoProviderError extends Error {
|
|
|
|
constructor(keys:List){
|
|
|
|
this.message = this._constructResolvingMessage(keys);
|
|
|
|
}
|
|
|
|
|
|
|
|
_constructResolvingMessage(keys:List) {
|
2014-10-03 16:29:59 -04:00
|
|
|
var last = stringify(ListWrapper.last(keys).token);
|
2014-09-30 14:56:33 -04:00
|
|
|
return `No provider for ${last}!${constructResolvingPath(keys)}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
toString() {
|
|
|
|
return this.message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export class AsyncProviderError extends Error {
|
|
|
|
constructor(keys:List){
|
|
|
|
this.message = this._constructResolvingMessage(keys);
|
|
|
|
}
|
|
|
|
|
|
|
|
_constructResolvingMessage(keys:List) {
|
2014-10-03 16:29:59 -04:00
|
|
|
var last = stringify(ListWrapper.last(keys).token);
|
2014-09-30 14:56:33 -04:00
|
|
|
return `Cannot instantiate ${last} synchronously. ` +
|
|
|
|
`It is provided as a future!${constructResolvingPath(keys)}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
toString() {
|
|
|
|
return this.message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export class InvalidBindingError extends Error {
|
|
|
|
constructor(binding){
|
|
|
|
this.message = `Invalid binding ${binding}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
toString() {
|
|
|
|
return this.message;
|
|
|
|
}
|
|
|
|
}
|