@@ -14,23 +14,6 @@ import validateType from '../utils/validate-type';
14
14
import { getTemplate } from 'ember-glimmer' ;
15
15
import { DEBUG } from 'ember-env-flags' ;
16
16
17
- export const Resolver = EmberObject . extend ( {
18
- /*
19
- This will be set to the Application instance when it is
20
- created.
21
-
22
- @property namespace
23
- */
24
- namespace : null ,
25
- normalize : null , // required
26
- resolve : null , // required
27
- parseName : null , // required
28
- lookupDescription : null , // required
29
- makeToString : null , // required
30
- resolveOther : null , // required
31
- _logLookup : null // required
32
- } ) ;
33
-
34
17
/**
35
18
The DefaultResolver defines the default lookup rules to resolve
36
19
container lookups before consulting the container for registered
@@ -100,19 +83,26 @@ export const Resolver = EmberObject.extend({
100
83
@public
101
84
*/
102
85
103
- const DefaultResolver = EmberObject . extend ( {
86
+ class DefaultResolver extends EmberObject {
87
+ // Workaround for weird JIT bug with FireFox and our test suite.
88
+ static create ( props ) {
89
+ return super . create ( props ) ;
90
+ }
91
+
104
92
/**
105
93
This will be set to the Application instance when it is
106
94
created.
107
95
108
96
@property namespace
109
97
@public
110
98
*/
111
- namespace : null ,
112
99
113
100
init ( ) {
101
+ if ( this . namespace == null ) {
102
+ throw new Error ( 'missing namespace' ) ;
103
+ }
114
104
this . _parseNameCache = dictionary ( null ) ;
115
- } ,
105
+ }
116
106
117
107
normalize ( fullName ) {
118
108
let [ type , name ] = fullName . split ( ':' ) ;
@@ -132,7 +122,7 @@ const DefaultResolver = EmberObject.extend({
132
122
} else {
133
123
return fullName ;
134
124
}
135
- } ,
125
+ }
136
126
137
127
/**
138
128
This method is called via the container's resolver method.
@@ -166,7 +156,7 @@ const DefaultResolver = EmberObject.extend({
166
156
}
167
157
168
158
return resolved ;
169
- } ,
159
+ }
170
160
171
161
/**
172
162
Convert the string name of the form 'type:name' to
@@ -182,7 +172,7 @@ const DefaultResolver = EmberObject.extend({
182
172
return this . _parseNameCache [ fullName ] || (
183
173
( this . _parseNameCache [ fullName ] = this . _parseName ( fullName ) )
184
174
) ;
185
- } ,
175
+ }
186
176
187
177
_parseName ( fullName ) {
188
178
let [ type , fullNameWithoutType ] = fullName . split ( ':' ) ;
@@ -220,7 +210,7 @@ const DefaultResolver = EmberObject.extend({
220
210
root,
221
211
resolveMethodName : `resolve${ resolveMethodName } `
222
212
} ;
223
- } ,
213
+ }
224
214
225
215
/**
226
216
Returns a human-readable description for a fullName. Used by the
@@ -247,11 +237,11 @@ const DefaultResolver = EmberObject.extend({
247
237
}
248
238
249
239
return description ;
250
- } ,
240
+ }
251
241
252
242
makeToString ( factory ) {
253
243
return factory . toString ( ) ;
254
- } ,
244
+ }
255
245
256
246
/**
257
247
Given a parseName object (output from `parseName`), apply
@@ -268,7 +258,7 @@ const DefaultResolver = EmberObject.extend({
268
258
} else {
269
259
parsedName . name = parsedName . name . replace ( / \. / g, '_' ) ;
270
260
}
271
- } ,
261
+ }
272
262
/**
273
263
Look up the template in Ember.TEMPLATES
274
264
@@ -281,7 +271,7 @@ const DefaultResolver = EmberObject.extend({
281
271
let templateName = parsedName . fullNameWithoutType . replace ( / \. / g, '/' ) ;
282
272
283
273
return getTemplate ( templateName ) || getTemplate ( StringUtils . decamelize ( templateName ) ) ;
284
- } ,
274
+ }
285
275
286
276
/**
287
277
Lookup the view using `resolveOther`
@@ -294,7 +284,7 @@ const DefaultResolver = EmberObject.extend({
294
284
resolveView ( parsedName ) {
295
285
this . useRouterNaming ( parsedName ) ;
296
286
return this . resolveOther ( parsedName ) ;
297
- } ,
287
+ }
298
288
299
289
/**
300
290
Lookup the controller using `resolveOther`
@@ -307,7 +297,7 @@ const DefaultResolver = EmberObject.extend({
307
297
resolveController ( parsedName ) {
308
298
this . useRouterNaming ( parsedName ) ;
309
299
return this . resolveOther ( parsedName ) ;
310
- } ,
300
+ }
311
301
/**
312
302
Lookup the route using `resolveOther`
313
303
@@ -319,7 +309,7 @@ const DefaultResolver = EmberObject.extend({
319
309
resolveRoute ( parsedName ) {
320
310
this . useRouterNaming ( parsedName ) ;
321
311
return this . resolveOther ( parsedName ) ;
322
- } ,
312
+ }
323
313
324
314
/**
325
315
Lookup the model on the Application namespace
@@ -334,7 +324,7 @@ const DefaultResolver = EmberObject.extend({
334
324
let factory = get ( parsedName . root , className ) ;
335
325
336
326
return factory ;
337
- } ,
327
+ }
338
328
/**
339
329
Look up the specified object (from parsedName) on the appropriate
340
330
namespace (usually on the Application)
@@ -346,7 +336,7 @@ const DefaultResolver = EmberObject.extend({
346
336
*/
347
337
resolveHelper ( parsedName ) {
348
338
return this . resolveOther ( parsedName ) ;
349
- } ,
339
+ }
350
340
/**
351
341
Look up the specified object (from parsedName) on the appropriate
352
342
namespace (usually on the Application)
@@ -360,12 +350,12 @@ const DefaultResolver = EmberObject.extend({
360
350
let className = StringUtils . classify ( parsedName . name ) + StringUtils . classify ( parsedName . type ) ;
361
351
let factory = get ( parsedName . root , className ) ;
362
352
return factory ;
363
- } ,
353
+ }
364
354
365
355
resolveMain ( parsedName ) {
366
356
let className = StringUtils . classify ( parsedName . type ) ;
367
357
return get ( parsedName . root , className ) ;
368
- } ,
358
+ }
369
359
370
360
/**
371
361
Used to iterate all items of a given type.
@@ -392,7 +382,7 @@ const DefaultResolver = EmberObject.extend({
392
382
}
393
383
394
384
return known ;
395
- } ,
385
+ }
396
386
397
387
/**
398
388
Converts provided name from the backing namespace into a container lookup name.
@@ -414,29 +404,27 @@ const DefaultResolver = EmberObject.extend({
414
404
415
405
return `${ type } :${ dasherizedName } ` ;
416
406
}
417
- } ) ;
407
+ }
418
408
419
409
export default DefaultResolver ;
420
410
421
411
if ( DEBUG ) {
422
- DefaultResolver . reopen ( {
423
- /**
424
- @method _logLookup
425
- @param {Boolean } found
426
- @param {Object } parsedName
427
- @private
428
- */
429
- _logLookup ( found , parsedName ) {
430
- let symbol = found ? '[✓]' : '[ ]' ;
431
-
432
- let padding ;
433
- if ( parsedName . fullName . length > 60 ) {
434
- padding = '.' ;
435
- } else {
436
- padding = new Array ( 60 - parsedName . fullName . length ) . join ( '.' ) ;
437
- }
412
+ /**
413
+ @method _logLookup
414
+ @param {Boolean } found
415
+ @param {Object } parsedName
416
+ @private
417
+ */
418
+ DefaultResolver . prototype . _logLookup = function ( found , parsedName ) {
419
+ let symbol = found ? '[✓]' : '[ ]' ;
438
420
439
- info ( symbol , parsedName . fullName , padding , this . lookupDescription ( parsedName . fullName ) ) ;
421
+ let padding ;
422
+ if ( parsedName . fullName . length > 60 ) {
423
+ padding = '.' ;
424
+ } else {
425
+ padding = new Array ( 60 - parsedName . fullName . length ) . join ( '.' ) ;
440
426
}
441
- } ) ;
427
+
428
+ info ( symbol , parsedName . fullName , padding , this . lookupDescription ( parsedName . fullName ) ) ;
429
+ } ;
442
430
}
0 commit comments