pax_global_header00006660000000000000000000000064132520146720014514gustar00rootroot0000000000000052 comment=ce95a9badeee1c97daff1bca0d1f6cec5dda4fe8 invariant-2.2.4/000077500000000000000000000000001325201467200135145ustar00rootroot00000000000000invariant-2.2.4/.gitignore000066400000000000000000000000461325201467200155040ustar00rootroot00000000000000.DS_Store npm-debug.log /node_modules invariant-2.2.4/.travis.yml000066400000000000000000000001371325201467200156260ustar00rootroot00000000000000sudo: false language: node_js node_js: - "0.10" - "0.12" - "4.0" - "5" - "6" - "7" invariant-2.2.4/CHANGELOG.md000066400000000000000000000024131325201467200153250ustar00rootroot000000000000002.2.4 / 2018-03-13 ================== * Use flow strict mode (i.e. `@flow strict`). 2.2.3 / 2018-02-19 ================== * Change license from BSD+Patents to MIT. 2.2.2 / 2016-11-15 ================== * Add LICENSE file. * Misc housekeeping. 2.2.1 / 2016-03-09 ================== * Use `NODE_ENV` variable instead of `__DEV__` to cache `process.env.NODE_ENV`. 2.2.0 / 2015-11-17 ================== * Use `error.name` instead of `Invariant Violation`. 2.1.3 / 2015-11-17 ================== * Remove `@provideModule` pragma. 2.1.2 / 2015-10-27 ================== * Fix license. 2.1.1 / 2015-09-20 ================== * Use correct SPDX license. * Test "browser.js" using browserify. * Switch from "envify" to "loose-envify". 2.1.0 / 2015-06-03 ================== * Add "envify" as a dependency. * Fixed license field in "package.json". 2.0.0 / 2015-02-21 ================== * Switch to using the "browser" field. There are now browser and server versions that respect the "format" in production. 1.0.2 / 2014-09-24 ================== * Added tests, npmignore and gitignore. * Clarifications in README. 1.0.1 / 2014-09-24 ================== * Actually include 'invariant.js'. 1.0.0 / 2014-09-24 ================== * Initial release. invariant-2.2.4/LICENSE000066400000000000000000000020701325201467200145200ustar00rootroot00000000000000MIT License Copyright (c) 2013-present, Facebook, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. invariant-2.2.4/README.md000066400000000000000000000031161325201467200147740ustar00rootroot00000000000000# invariant [![Build Status](https://travis-ci.org/zertosh/invariant.svg?branch=master)](https://travis-ci.org/zertosh/invariant) A mirror of Facebook's `invariant` (e.g. [React](https://github.com/facebook/react/blob/v0.13.3/src/vendor/core/invariant.js), [flux](https://github.com/facebook/flux/blob/2.0.2/src/invariant.js)). A way to provide descriptive errors in development but generic errors in production. ## Install With [npm](http://npmjs.org) do: ```sh npm install invariant ``` ## `invariant(condition, message)` ```js var invariant = require('invariant'); invariant(someTruthyVal, 'This will not throw'); // No errors invariant(someFalseyVal, 'This will throw an error with this message'); // Error: Invariant Violation: This will throw an error with this message ``` **Note:** When `process.env.NODE_ENV` is not `production`, the message is required. If omitted, `invariant` will throw regardless of the truthiness of the condition. When `process.env.NODE_ENV` is `production`, the message is optional – so they can be minified away. ### Browser When used with [browserify](https://github.com/substack/node-browserify), it'll use `browser.js` (instead of `invariant.js`) and the [envify](https://github.com/hughsk/envify) transform will inline the value of `process.env.NODE_ENV`. ### Node The node version is optimized around the performance implications of accessing `process.env`. The value of `process.env.NODE_ENV` is cached, and repeatedly used instead of reading `process.env`. See [Server rendering is slower with npm react #812](https://github.com/facebook/react/issues/812) invariant-2.2.4/browser.js000066400000000000000000000025651325201467200155450ustar00rootroot00000000000000/** * 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 invariant = function(condition, format, a, b, c, d, e, f) { if (process.env.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; invariant-2.2.4/invariant.js000066400000000000000000000026171325201467200160530ustar00rootroot00000000000000/** * 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; invariant-2.2.4/invariant.js.flow000066400000000000000000000001641325201467200170140ustar00rootroot00000000000000/* @flow strict */ declare module.exports: ( condition: any, format?: string, ...args: Array ) => void; invariant-2.2.4/package.json000066400000000000000000000013161325201467200160030ustar00rootroot00000000000000{ "name": "invariant", "version": "2.2.4", "description": "invariant", "keywords": [ "test", "invariant" ], "license": "MIT", "author": "Andres Suarez ", "files": [ "browser.js", "invariant.js", "invariant.js.flow" ], "repository": "https://github.com/zertosh/invariant", "scripts": { "test": "NODE_ENV=production tap test/*.js && NODE_ENV=development tap test/*.js" }, "dependencies": { "loose-envify": "^1.0.0" }, "devDependencies": { "browserify": "^11.0.1", "flow-bin": "^0.67.1", "tap": "^1.4.0" }, "main": "invariant.js", "browser": "browser.js", "browserify": { "transform": [ "loose-envify" ] } } invariant-2.2.4/test/000077500000000000000000000000001325201467200144735ustar00rootroot00000000000000invariant-2.2.4/test/flow/000077500000000000000000000000001325201467200154425ustar00rootroot00000000000000invariant-2.2.4/test/flow/.flowconfig000066400000000000000000000002601325201467200175760ustar00rootroot00000000000000[include] ../../ [ignore] [libs] [options] [strict] nonstrict-import sketchy-null unclear-type unsafe-getters-setters untyped-import untyped-type-import [version] ^0.67.0 invariant-2.2.4/test/flow/index.js000066400000000000000000000000761325201467200171120ustar00rootroot00000000000000// @flow var invariant = require('../..'); invariant(true); invariant-2.2.4/test/package/000077500000000000000000000000001325201467200160665ustar00rootroot00000000000000invariant-2.2.4/test/package/development.js000066400000000000000000000006121325201467200207450ustar00rootroot00000000000000module.exports = function(t) { var invariant = require('../../'); t.doesNotThrow(function() { invariant(true, 'invariant message'); }); t.throws(function() { invariant(false, 'invariant message'); }, /invariant message/); t.throws(function() { invariant(true); }, /requires an error/i); t.throws(function() { invariant(false); }, /requires an error/i); }; invariant-2.2.4/test/package/production.js000066400000000000000000000006041325201467200206120ustar00rootroot00000000000000module.exports = function(t) { var invariant = require('../../'); t.doesNotThrow(function() { invariant(true, 'invariant message'); }); t.throws(function() { invariant(false, 'invariant message'); }, /invariant message/); t.doesNotThrow(function() { invariant(true); }); t.throws(function() { invariant(false); }, /minified exception occurred/i); }; invariant-2.2.4/test/test.js000066400000000000000000000017431325201467200160150ustar00rootroot00000000000000'use strict'; var browserify = require('browserify'); var test = require('tap').test; var vm = require('vm'); var flow = require('flow-bin'); var execFile = require('child_process').execFile; var path = require('path'); var file = __dirname + '/package/' + process.env.NODE_ENV + '.js'; test('node', function(t) { t.plan(4); require(file)(t); }); test('browserify', function(t) { t.plan(7); var b = browserify({ entries: file, standalone: 'package' }); b.bundle(function(err, src) { t.notOk(err); t.notMatch(String(src), /\bprocess\.env\.NODE_ENV\b/); t.notMatch(String(src), /__DEV__/); var c = {}; vm.runInNewContext(src, c); c.package(t); }); }); test('flow', function(t) { t.plan(1); execFile(flow, ['coverage', 'index.js'], { cwd: path.join(__dirname, 'flow') }, function (err, stdout) { // If the types are broken, we'd have coverage below 100% t.equal(stdout.trim(), 'Covered: 100.00% (5 of 5 expressions)'); }); });