Skip to content

Commit 6f889e3

Browse files
committed
feat(di): add OpaqueToken to DI
Using `new Object()` as a token causes cryptic errors. OpaqueToken class should be used instead.
1 parent 6187b80 commit 6f889e3

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

modules/core/src/application.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Injector, bind} from 'di/di';
1+
import {Injector, bind, OpaqueToken} from 'di/di';
22
import {Type, FIELD, isBlank, isPresent, BaseException} from 'facade/lang';
33
import {DOM, Element} from 'facade/dom';
44
import {Compiler} from './compiler/compiler';
@@ -21,11 +21,11 @@ var _rootBindings = [
2121
bind(Reflector).toValue(reflector), Compiler, TemplateLoader, DirectiveMetadataReader, Parser, Lexer
2222
];
2323

24-
export var appViewToken = new Object();
25-
export var appWatchGroupToken = new Object();
26-
export var appElementToken = new Object();
27-
export var appComponentAnnotatedTypeToken = new Object();
28-
export var appDocumentToken = new Object();
24+
export var appViewToken = new OpaqueToken('AppView');
25+
export var appRecordRangeToken = new OpaqueToken('AppRecordRange');
26+
export var appElementToken = new OpaqueToken('AppElement');
27+
export var appComponentAnnotatedTypeToken = new OpaqueToken('AppComponentAnnotatedType');
28+
export var appDocumentToken = new OpaqueToken('AppDocument');
2929

3030
// Exported only for tests that need to overwrite default document binding.
3131
export function documentDependentBindings(appComponentType) {
@@ -59,10 +59,10 @@ export function documentDependentBindings(appComponentType) {
5959
});
6060
}, [Compiler, Injector, appElementToken, appComponentAnnotatedTypeToken]),
6161

62-
bind(appWatchGroupToken).toFactory((rootView) => rootView.recordRange,
62+
bind(appRecordRangeToken).toFactory((rootView) => rootView.recordRange,
6363
[appViewToken]),
64-
bind(ChangeDetector).toFactory((appWatchGroup) =>
65-
new ChangeDetector(appWatchGroup), [appWatchGroupToken])
64+
bind(ChangeDetector).toFactory((appRecordRange) =>
65+
new ChangeDetector(appRecordRange), [appRecordRangeToken])
6666
];
6767
}
6868

modules/di/src/di.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ export * from './binding';
44
export * from './key';
55
export * from './module';
66
export * from './exceptions';
7+
export * from './opaque_token';

modules/di/src/opaque_token.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export class OpaqueToken {
2+
_desc:string;
3+
4+
constructor(desc:string){
5+
this._desc = `Token(${desc})`;
6+
}
7+
8+
toString() {
9+
return this._desc;
10+
}
11+
}

0 commit comments

Comments
 (0)