ember-source 2.0.3.1 → 2.1.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ember-source might be problematic. Click here for more details.

@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 2.0.3
8
+ * @version 2.1.0-beta.1
9
9
  */
10
10
 
11
11
  (function() {
@@ -67,7 +67,7 @@ var mainContext = this;
67
67
  var reified = [];
68
68
  var length = deps.length;
69
69
 
70
- for (var i=0; i<length; i++) {
70
+ for (var i = 0; i < length; i++) {
71
71
  if (deps[i] === 'exports') {
72
72
  reified.push(exports);
73
73
  } else {
@@ -87,7 +87,7 @@ var mainContext = this;
87
87
  var parts = child.split('/');
88
88
  var parentBase = name.split('/').slice(0, -1);
89
89
 
90
- for (var i=0, l=parts.length; i<l; i++) {
90
+ for (var i = 0, l = parts.length; i < l; i++) {
91
91
  var part = parts[i];
92
92
 
93
93
  if (part === '..') {
@@ -115,13 +115,13 @@ var mainContext = this;
115
115
  }
116
116
  })();
117
117
 
118
- enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'ember-metal/error', 'ember-metal/logger', 'ember-debug/deprecation-manager', 'ember-metal/environment'], function (exports, _emberMetalCore, _emberMetalFeatures, _emberMetalError, _emberMetalLogger, _emberDebugDeprecationManager, _emberMetalEnvironment) {
119
- /*global __fail__*/
120
-
118
+ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/assert', 'ember-metal/features', 'ember-metal/error', 'ember-metal/logger', 'ember-metal/environment', 'ember-debug/deprecate', 'ember-debug/warn', 'ember-debug/is-plain-function'], function (exports, _emberMetalCore, _emberMetalAssert, _emberMetalFeatures, _emberMetalError, _emberMetalLogger, _emberMetalEnvironment, _emberDebugDeprecate, _emberDebugWarn, _emberDebugIsPlainFunction) {
121
119
  'use strict';
122
120
 
123
121
  exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags;
124
122
 
123
+ _emberMetalCore.default.deprecate = _emberDebugDeprecate.default;
124
+
125
125
  /**
126
126
  @module ember
127
127
  @submodule ember-debug
@@ -132,10 +132,6 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
132
132
  @public
133
133
  */
134
134
 
135
- function isPlainFunction(test) {
136
- return typeof test === 'function' && test.PrototypeMixin === undefined;
137
- }
138
-
139
135
  /**
140
136
  Define an assertion that will throw an exception if the condition is not
141
137
  met. Ember build tools will remove any calls to `Ember.assert()` when
@@ -157,10 +153,10 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
157
153
  its return value will be used as condition.
158
154
  @public
159
155
  */
160
- _emberMetalCore.default.assert = function (desc, test) {
156
+ function assert(desc, test) {
161
157
  var throwAssertion;
162
158
 
163
- if (isPlainFunction(test)) {
159
+ if (_emberDebugIsPlainFunction.default(test)) {
164
160
  throwAssertion = !test();
165
161
  } else {
166
162
  throwAssertion = !test;
@@ -169,26 +165,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
169
165
  if (throwAssertion) {
170
166
  throw new _emberMetalError.default('Assertion Failed: ' + desc);
171
167
  }
172
- };
173
-
174
- /**
175
- Display a warning with the provided message. Ember build tools will
176
- remove any calls to `Ember.warn()` when doing a production build.
177
-
178
- @method warn
179
- @param {String} message A warning to display.
180
- @param {Boolean} test An optional boolean. If falsy, the warning
181
- will be displayed.
182
- @public
183
- */
184
- _emberMetalCore.default.warn = function (message, test) {
185
- if (!test) {
186
- _emberMetalLogger.default.warn('WARNING: ' + message);
187
- if ('trace' in _emberMetalLogger.default) {
188
- _emberMetalLogger.default.trace();
189
- }
190
- }
191
- };
168
+ }
192
169
 
193
170
  /**
194
171
  Display a debug notice. Ember build tools will remove any calls to
@@ -202,90 +179,9 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
202
179
  @param {String} message A debug message to display.
203
180
  @public
204
181
  */
205
- _emberMetalCore.default.debug = function (message) {
182
+ function debug(message) {
206
183
  _emberMetalLogger.default.debug('DEBUG: ' + message);
207
- };
208
-
209
- /**
210
- Display a deprecation warning with the provided message and a stack trace
211
- (Chrome and Firefox only). Ember build tools will remove any calls to
212
- `Ember.deprecate()` when doing a production build.
213
-
214
- @method deprecate
215
- @param {String} message A description of the deprecation.
216
- @param {Boolean|Function} test An optional boolean. If falsy, the deprecation
217
- will be displayed. If this is a function, it will be executed and its return
218
- value will be used as condition.
219
- @param {Object} options An optional object that can be used to pass
220
- in a `url` to the transition guide on the emberjs.com website, and a unique
221
- `id` for this deprecation. The `id` can be used by Ember debugging tools
222
- to change the behavior (raise, log or silence) for that specific deprecation.
223
- The `id` should be namespaced by dots, e.g. "view.helper.select".
224
- @public
225
- */
226
- _emberMetalCore.default.deprecate = function (message, test, options) {
227
- if (_emberMetalCore.default.ENV.RAISE_ON_DEPRECATION) {
228
- _emberDebugDeprecationManager.default.setDefaultLevel(_emberDebugDeprecationManager.deprecationLevels.RAISE);
229
- }
230
- if (_emberDebugDeprecationManager.default.getLevel(options && options.id) === _emberDebugDeprecationManager.deprecationLevels.SILENCE) {
231
- return;
232
- }
233
-
234
- var noDeprecation;
235
-
236
- if (isPlainFunction(test)) {
237
- noDeprecation = test();
238
- } else {
239
- noDeprecation = test;
240
- }
241
-
242
- if (noDeprecation) {
243
- return;
244
- }
245
-
246
- if (options && options.id) {
247
- message = message + (' [deprecation id: ' + options.id + ']');
248
- }
249
-
250
- if (_emberDebugDeprecationManager.default.getLevel(options && options.id) === _emberDebugDeprecationManager.deprecationLevels.RAISE) {
251
- throw new _emberMetalError.default(message);
252
- }
253
-
254
- var error;
255
-
256
- // When using new Error, we can't do the arguments check for Chrome. Alternatives are welcome
257
- try {
258
- __fail__.fail();
259
- } catch (e) {
260
- error = e;
261
- }
262
-
263
- if (arguments.length === 3) {
264
- _emberMetalCore.default.assert('options argument to Ember.deprecate should be an object', options && typeof options === 'object');
265
- if (options.url) {
266
- message += ' See ' + options.url + ' for more details.';
267
- }
268
- }
269
-
270
- if (_emberMetalCore.default.LOG_STACKTRACE_ON_DEPRECATION && error.stack) {
271
- var stack;
272
- var stackStr = '';
273
-
274
- if (error['arguments']) {
275
- // Chrome
276
- stack = error.stack.replace(/^\s+at\s+/gm, '').replace(/^([^\(]+?)([\n$])/gm, '{anonymous}($1)$2').replace(/^Object.<anonymous>\s*\(([^\)]+)\)/gm, '{anonymous}($1)').split('\n');
277
- stack.shift();
278
- } else {
279
- // Firefox
280
- stack = error.stack.replace(/(?:\n@:0)?\s+$/m, '').replace(/^\(/gm, '{anonymous}(').split('\n');
281
- }
282
-
283
- stackStr = '\n ' + stack.slice(2).join('\n ');
284
- message = message + stackStr;
285
- }
286
-
287
- _emberMetalLogger.default.warn('DEPRECATION: ' + message);
288
- };
184
+ }
289
185
 
290
186
  /**
291
187
  Alias an old, deprecated method with its new counterpart.
@@ -307,7 +203,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
307
203
  @return {Function} a new function that wrapped the original function with a deprecation warning
308
204
  @private
309
205
  */
310
- _emberMetalCore.default.deprecateFunc = function () {
206
+ function deprecateFunc() {
311
207
  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
312
208
  args[_key] = arguments[_key];
313
209
  }
@@ -342,7 +238,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
342
238
 
343
239
  if (typeof _ret2 === 'object') return _ret2.v;
344
240
  }
345
- };
241
+ }
346
242
 
347
243
  /**
348
244
  Run a function meant for debugging. Ember build tools will remove any calls to
@@ -363,9 +259,16 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
363
259
  @since 1.5.0
364
260
  @public
365
261
  */
366
- _emberMetalCore.default.runInDebug = function (func) {
262
+ function runInDebug(func) {
367
263
  func();
368
- };
264
+ }
265
+
266
+ _emberMetalAssert.registerDebugFunction('assert', assert);
267
+ _emberMetalAssert.registerDebugFunction('warn', _emberDebugWarn.default);
268
+ _emberMetalAssert.registerDebugFunction('debug', debug);
269
+ _emberMetalAssert.registerDebugFunction('deprecate', _emberDebugDeprecate.default);
270
+ _emberMetalAssert.registerDebugFunction('deprecateFunc', deprecateFunc);
271
+ _emberMetalAssert.registerDebugFunction('runInDebug', runInDebug);
369
272
 
370
273
  /**
371
274
  Will call `Ember.warn()` if ENABLE_ALL_FEATURES, ENABLE_OPTIONAL_FEATURES, or
@@ -380,12 +283,12 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
380
283
 
381
284
  function _warnIfUsingStrippedFeatureFlags(FEATURES, featuresWereStripped) {
382
285
  if (featuresWereStripped) {
383
- _emberMetalCore.default.warn('Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_ALL_FEATURES);
384
- _emberMetalCore.default.warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_OPTIONAL_FEATURES);
286
+ _emberMetalCore.default.warn('Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_ALL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
287
+ _emberMetalCore.default.warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !_emberMetalCore.default.ENV.ENABLE_OPTIONAL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
385
288
 
386
289
  for (var key in FEATURES) {
387
290
  if (FEATURES.hasOwnProperty(key) && key !== 'isEnabled') {
388
- _emberMetalCore.default.warn('FEATURE["' + key + '"] is set as enabled, but FEATURE flags are only available in canary builds.', !FEATURES[key]);
291
+ _emberMetalCore.default.warn('FEATURE["' + key + '"] is set as enabled, but FEATURE flags are only available in canary builds.', !FEATURES[key], { id: 'ember-debug.feature-flag-with-features-stripped' });
389
292
  }
390
293
  }
391
294
  }
@@ -420,12 +323,10 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
420
323
  }
421
324
  }
422
325
 
423
- _emberMetalCore.default.Debug = {
424
- _addDeprecationLevel: function (id, level) {
425
- _emberDebugDeprecationManager.default.setLevel(id, level);
426
- },
427
- _deprecationLevels: _emberDebugDeprecationManager.deprecationLevels
428
- };
326
+ _emberMetalCore.default.Debug = {};
327
+
328
+ _emberMetalCore.default.Debug.registerDeprecationHandler = _emberDebugDeprecate.registerHandler;
329
+ _emberMetalCore.default.Debug.registerWarnHandler = _emberDebugWarn.registerHandler;
429
330
 
430
331
  /*
431
332
  We are transitioning away from `ember.js` to `ember.debug.js` to make
@@ -441,33 +342,214 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/features', 'e
441
342
  _emberMetalCore.default.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.');
442
343
  }
443
344
  });
444
- enifed('ember-debug/deprecation-manager', ['exports', 'ember-metal/dictionary', 'ember-metal/utils'], function (exports, _emberMetalDictionary, _emberMetalUtils) {
345
+ enifed('ember-debug/deprecate', ['exports', 'ember-metal/core', 'ember-metal/error', 'ember-metal/logger', 'ember-debug/handlers'], function (exports, _emberMetalCore, _emberMetalError, _emberMetalLogger, _emberDebugHandlers) {
346
+ /*global __fail__*/
347
+
445
348
  'use strict';
446
349
 
447
- var deprecationLevels = {
448
- RAISE: _emberMetalUtils.symbol('RAISE'),
449
- LOG: _emberMetalUtils.symbol('LOG'),
450
- SILENCE: _emberMetalUtils.symbol('SILENCE')
451
- };
350
+ var _slice = Array.prototype.slice;
351
+ exports.registerHandler = registerHandler;
352
+ exports.default = deprecate;
452
353
 
453
- exports.deprecationLevels = deprecationLevels;
454
- exports.default = {
455
- defaultLevel: deprecationLevels.LOG,
456
- individualLevels: _emberMetalDictionary.default(null),
457
- setDefaultLevel: function (level) {
458
- this.defaultLevel = level;
459
- },
460
- setLevel: function (id, level) {
461
- this.individualLevels[id] = level;
462
- },
463
- getLevel: function (id) {
464
- var level = this.individualLevels[id];
465
- if (!level) {
466
- level = this.defaultLevel;
354
+ function registerHandler(handler) {
355
+ _emberDebugHandlers.registerHandler('deprecate', handler);
356
+ }
357
+
358
+ function formatMessage(_message, options) {
359
+ var message = _message;
360
+
361
+ if (options && options.id) {
362
+ message = message + (' [deprecation id: ' + options.id + ']');
363
+ }
364
+
365
+ if (options && options.url) {
366
+ message += ' See ' + options.url + ' for more details.';
367
+ }
368
+
369
+ return message;
370
+ }
371
+
372
+ registerHandler(function logDeprecationToConsole(message, options) {
373
+ var updatedMessage = formatMessage(message, options);
374
+
375
+ _emberMetalLogger.default.warn('DEPRECATION: ' + updatedMessage);
376
+ });
377
+
378
+ registerHandler(function logDeprecationStackTrace(message, options, next) {
379
+ if (_emberMetalCore.default.LOG_STACKTRACE_ON_DEPRECATION) {
380
+ var stackStr = '';
381
+ var error = undefined,
382
+ stack = undefined;
383
+
384
+ // When using new Error, we can't do the arguments check for Chrome. Alternatives are welcome
385
+ try {
386
+ __fail__.fail();
387
+ } catch (e) {
388
+ error = e;
467
389
  }
468
- return level;
390
+
391
+ if (error.stack) {
392
+ if (error['arguments']) {
393
+ // Chrome
394
+ stack = error.stack.replace(/^\s+at\s+/gm, '').replace(/^([^\(]+?)([\n$])/gm, '{anonymous}($1)$2').replace(/^Object.<anonymous>\s*\(([^\)]+)\)/gm, '{anonymous}($1)').split('\n');
395
+ stack.shift();
396
+ } else {
397
+ // Firefox
398
+ stack = error.stack.replace(/(?:\n@:0)?\s+$/m, '').replace(/^\(/gm, '{anonymous}(').split('\n');
399
+ }
400
+
401
+ stackStr = '\n ' + stack.slice(2).join('\n ');
402
+ }
403
+
404
+ var updatedMessage = formatMessage(message, options);
405
+
406
+ _emberMetalLogger.default.warn('DEPRECATION: ' + updatedMessage + stackStr);
407
+ } else {
408
+ next.apply(undefined, arguments);
469
409
  }
470
- };
410
+ });
411
+
412
+ registerHandler(function raiseOnDeprecation(message, options, next) {
413
+ if (_emberMetalCore.default.ENV.RAISE_ON_DEPRECATION) {
414
+ var updatedMessage = formatMessage(message);
415
+
416
+ throw new _emberMetalError.default(updatedMessage);
417
+ } else {
418
+ next.apply(undefined, arguments);
419
+ }
420
+ });
421
+
422
+ var missingOptionsDeprecation = 'When calling `Ember.deprecate` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include `id` and `until` properties.';
423
+ exports.missingOptionsDeprecation = missingOptionsDeprecation;
424
+ var missingOptionsIdDeprecation = 'When calling `Ember.deprecate` you must provide `id` in options.';
425
+ exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;
426
+ var missingOptionsUntilDeprecation = 'When calling `Ember.deprecate` you must provide `until` in options.';
427
+
428
+ exports.missingOptionsUntilDeprecation = missingOptionsUntilDeprecation;
429
+ /**
430
+ Display a deprecation warning with the provided message and a stack trace
431
+ (Chrome and Firefox only). Ember build tools will remove any calls to
432
+ `Ember.deprecate()` when doing a production build.
433
+
434
+ @method deprecate
435
+ @param {String} message A description of the deprecation.
436
+ @param {Boolean|Function} test A boolean. If falsy, the deprecation
437
+ will be displayed. If this is a function, it will be executed and its return
438
+ value will be used as condition.
439
+ @param {Object} options An object that can be used to pass
440
+ in a `url` to the transition guide on the emberjs.com website, and a unique
441
+ `id` for this deprecation. The `id` can be used by Ember debugging tools
442
+ to change the behavior (raise, log or silence) for that specific deprecation.
443
+ The `id` should be namespaced by dots, e.g. "view.helper.select".
444
+ @public
445
+ */
446
+
447
+ function deprecate(message, test, options) {
448
+ if (!options || !options.id && !options.until) {
449
+ deprecate(missingOptionsDeprecation, false, { id: 'ember-debug.deprecate-options-missing', until: '3.0.0' });
450
+ }
451
+
452
+ if (options && !options.id) {
453
+ deprecate(missingOptionsIdDeprecation, false, { id: 'ember-debug.deprecate-id-missing', until: '3.0.0' });
454
+ }
455
+
456
+ if (options && !options.until) {
457
+ deprecate(missingOptionsUntilDeprecation, options && options.until, { id: 'ember-debug.deprecate-until-missing', until: '3.0.0' });
458
+ }
459
+
460
+ _emberDebugHandlers.invoke.apply(undefined, ['deprecate'].concat(_slice.call(arguments)));
461
+ }
462
+ });
463
+ enifed('ember-debug/handlers', ['exports', 'ember-debug/is-plain-function'], function (exports, _emberDebugIsPlainFunction) {
464
+ 'use strict';
465
+
466
+ exports.registerHandler = registerHandler;
467
+ exports.invoke = invoke;
468
+ var HANDLERS = {};
469
+
470
+ exports.HANDLERS = HANDLERS;
471
+ function normalizeTest(test) {
472
+ return _emberDebugIsPlainFunction.default(test) ? test() : test;
473
+ }
474
+
475
+ function registerHandler(type, callback) {
476
+ var nextHandler = HANDLERS[type] || function () {};
477
+
478
+ HANDLERS[type] = function (message, options) {
479
+ callback(message, options, nextHandler);
480
+ };
481
+ }
482
+
483
+ function invoke(type, message, test, options) {
484
+ if (normalizeTest(test)) {
485
+ return;
486
+ }
487
+
488
+ var handlerForType = HANDLERS[type];
489
+
490
+ if (!handlerForType) {
491
+ return;
492
+ }
493
+
494
+ if (handlerForType) {
495
+ handlerForType(message, options);
496
+ }
497
+ }
498
+ });
499
+ enifed('ember-debug/is-plain-function', ['exports'], function (exports) {
500
+ 'use strict';
501
+
502
+ exports.default = isPlainFunction;
503
+
504
+ function isPlainFunction(test) {
505
+ return typeof test === 'function' && test.PrototypeMixin === undefined;
506
+ }
507
+ });
508
+ enifed('ember-debug/warn', ['exports', 'ember-metal/core', 'ember-metal/logger', 'ember-debug/handlers'], function (exports, _emberMetalCore, _emberMetalLogger, _emberDebugHandlers) {
509
+ 'use strict';
510
+
511
+ var _slice = Array.prototype.slice;
512
+ exports.registerHandler = registerHandler;
513
+ exports.default = warn;
514
+
515
+ function registerHandler(handler) {
516
+ _emberDebugHandlers.registerHandler('warn', handler);
517
+ }
518
+
519
+ registerHandler(function logWarning(message, options) {
520
+ _emberMetalLogger.default.warn('WARNING: ' + message);
521
+ if ('trace' in _emberMetalLogger.default) {
522
+ _emberMetalLogger.default.trace();
523
+ }
524
+ });
525
+
526
+ var missingOptionsDeprecation = 'When calling `Ember.warn` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include an `id` property.';
527
+ exports.missingOptionsDeprecation = missingOptionsDeprecation;
528
+ var missingOptionsIdDeprecation = 'When calling `Ember.warn` you must provide `id` in options.';
529
+
530
+ exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;
531
+ /**
532
+ Display a warning with the provided message. Ember build tools will
533
+ remove any calls to `Ember.warn()` when doing a production build.
534
+
535
+ @method warn
536
+ @param {String} message A warning to display.
537
+ @param {Boolean} test An optional boolean. If falsy, the warning
538
+ will be displayed.
539
+ @public
540
+ */
541
+
542
+ function warn(message, test, options) {
543
+ if (!options) {
544
+ _emberMetalCore.default.deprecate(missingOptionsDeprecation, false, { id: 'ember-debug.warn-options-missing', until: '3.0.0' });
545
+ }
546
+
547
+ if (options && !options.id) {
548
+ _emberMetalCore.default.deprecate(missingOptionsIdDeprecation, false, { id: 'ember-debug.warn-id-missing', until: '3.0.0' });
549
+ }
550
+
551
+ _emberDebugHandlers.invoke.apply(undefined, ['warn'].concat(_slice.call(arguments)));
552
+ }
471
553
  });
472
554
  enifed('ember-testing', ['exports', 'ember-metal/core', 'ember-testing/initializers', 'ember-testing/support', 'ember-testing/setup_for_testing', 'ember-testing/test', 'ember-testing/adapters/adapter', 'ember-testing/adapters/qunit', 'ember-testing/helpers'], function (exports, _emberMetalCore, _emberTestingInitializers, _emberTestingSupport, _emberTestingSetup_for_testing, _emberTestingTest, _emberTestingAdaptersAdapter, _emberTestingAdaptersQunit, _emberTestingHelpers) {
473
555
  'use strict';
@@ -1099,7 +1181,7 @@ enifed('ember-testing/initializers', ['exports', 'ember-runtime/system/lazy_load
1099
1181
  Application.initializer({
1100
1182
  name: name,
1101
1183
 
1102
- initialize: function (registry, application) {
1184
+ initialize: function (application) {
1103
1185
  if (application.testing) {
1104
1186
  application.deferReadiness();
1105
1187
  }