| /** |
| * Copyright (c) 2013-present, Facebook, Inc. |
| * |
| * This source code is licensed under the MIT license found in the |
| * LICENSE file in the root directory of this source tree. |
| */ |
| |
| 'use strict'; |
| |
| /** |
| * Use invariant() to assert state which your program assumes to be true. |
| * |
| * Provide sprintf-style format (only %s is supported) and arguments |
| * to provide information about what broke and what you were |
| * expecting. |
| * |
| * The invariant message will be stripped in production, but the invariant |
| * will remain to ensure logic does not differ in production. |
| */ |
| |
| var NODE_ENV = process.env.NODE_ENV; |
| |
| var invariant = function(condition, format, a, b, c, d, e, f) { |
| if (NODE_ENV !== 'production') { |
| if (format === undefined) { |
| throw new Error('invariant requires an error message argument'); |
| } |
| } |
| |
| if (!condition) { |
| var error; |
| if (format === undefined) { |
| error = new Error( |
| 'Minified exception occurred; use the non-minified dev environment ' + |
| 'for the full error message and additional helpful warnings.' |
| ); |
| } else { |
| var args = [a, b, c, d, e, f]; |
| var argIndex = 0; |
| error = new Error( |
| format.replace(/%s/g, function() { return args[argIndex++]; }) |
| ); |
| error.name = 'Invariant Violation'; |
| } |
| |
| error.framesToPop = 1; // we don't care about invariant's own frame |
| throw error; |
| } |
| }; |
| |
| module.exports = invariant; |