(function() { var Ember = { assert: function() {} }; // Version: v1.0.0 // Last commit: e2ea0cf (2013-08-31 23:47:39 -0700) (function() { /*global __fail__*/ /** Ember Debug @module ember @submodule ember-debug */ /** @class Ember */ if ('undefined' === typeof Ember) { Ember = {}; if ('undefined' !== typeof window) { window.Em = window.Ember = Em = Ember; } } Ember.ENV = 'undefined' === typeof ENV ? {} : ENV; if (!('MANDATORY_SETTER' in Ember.ENV)) { Ember.ENV.MANDATORY_SETTER = true; // default to true for debug dist } /** Define an assertion that will throw an exception if the condition is not met. Ember build tools will remove any calls to `Ember.assert()` when doing a production build. Example: ```javascript // Test for truthiness Ember.assert('Must pass a valid object', obj); // Fail unconditionally Ember.assert('This code path should never be run') ``` @method assert @param {String} desc A description of the assertion. This will become the text of the Error thrown if the assertion fails. @param {Boolean} test Must be truthy for the assertion to pass. If falsy, an exception will be thrown. */ Ember.assert = function(desc, test) { if (!test) { Ember.Logger.assert(test, desc); } if (Ember.testing && !test) { // when testing, ensure test failures when assertions fail throw new Error("Assertion Failed: " + desc); } }; /** Display a warning with the provided message. Ember build tools will remove any calls to `Ember.warn()` when doing a production build. @method warn @param {String} message A warning to display. @param {Boolean} test An optional boolean. If falsy, the warning will be displayed. */ Ember.warn = function(message, test) { if (!test) { Ember.Logger.warn("WARNING: "+message); if ('trace' in Ember.Logger) Ember.Logger.trace(); } }; /** Display a debug notice. Ember build tools will remove any calls to `Ember.debug()` when doing a production build. ```javascript Ember.debug("I'm a debug notice!"); ``` @method debug @param {String} message A debug message to display. */ Ember.debug = function(message) { Ember.Logger.debug("DEBUG: "+message); }; /** Display a deprecation warning with the provided message and a stack trace (Chrome and Firefox only). Ember build tools will remove any calls to `Ember.deprecate()` when doing a production build. @method deprecate @param {String} message A description of the deprecation. @param {Boolean} test An optional boolean. If falsy, the deprecation will be displayed. */ Ember.deprecate = function(message, test) { if (Ember.TESTING_DEPRECATION) { return; } if (arguments.length === 1) { test = false; } if (test) { return; } if (Ember.ENV.RAISE_ON_DEPRECATION) { throw new Error(message); } var error; // When using new Error, we can't do the arguments check for Chrome. Alternatives are welcome try { __fail__.fail(); } catch (e) { error = e; } if (Ember.LOG_STACKTRACE_ON_DEPRECATION && error.stack) { var stack, stackStr = ''; if (error['arguments']) { // Chrome stack = error.stack.replace(/^\s+at\s+/gm, ''). replace(/^([^\(]+?)([\n$])/gm, '{anonymous}($1)$2'). replace(/^Object.\s*\(([^\)]+)\)/gm, '{anonymous}($1)').split('\n'); stack.shift(); } else { // Firefox stack = error.stack.replace(/(?:\n@:0)?\s+$/m, ''). replace(/^\(/gm, '{anonymous}(').split('\n'); } stackStr = "\n " + stack.slice(2).join("\n "); message = message + stackStr; } Ember.Logger.warn("DEPRECATION: "+message); }; /** Display a deprecation warning with the provided message and a stack trace (Chrome and Firefox only) when the wrapped method is called. Ember build tools will not remove calls to `Ember.deprecateFunc()`, though no warnings will be shown in production. @method deprecateFunc @param {String} message A description of the deprecation. @param {Function} func The function to be deprecated. @return {Function} a new function that wrapped the original function with a deprecation warning */ Ember.deprecateFunc = function(message, func) { return function() { Ember.deprecate(message); return func.apply(this, arguments); }; }; // Inform the developer about the Ember Inspector if not installed. if (!Ember.testing) { if (typeof window !== 'undefined' && window.chrome && window.addEventListener) { window.addEventListener("load", function() { if (document.body && document.body.dataset && !document.body.dataset.emberExtension) { Ember.debug('For more advanced debugging, install the Ember Inspector from https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi'); } }, false); } } })(); exports.precompile = Ember.Handlebars.precompile; exports.EmberHandlebars = Ember.Handlebars; })();