Gazebo_simulation-Frontend/node_modules/tiny-invariant
Riddhi Dave f4870cd530 simulator page updates 2020-12-22 09:59:14 -05:00
..
dist React files 2020-12-21 10:29:31 -05:00
src React files 2020-12-21 10:29:31 -05:00
LICENSE React files 2020-12-21 10:29:31 -05:00
README.md React files 2020-12-21 10:29:31 -05:00
package.json simulator page updates 2020-12-22 09:59:14 -05:00

README.md

tiny-invariant 🔬💥

Build Status npm dependencies min minzip

A tiny invariant alternative.

What is invariant?

An invariant function takes a value, and if the value is falsy then the invariant function will throw. If the value is truthy, then the function will not throw.

import invariant from 'tiny-invariant';

invariant(truthyValue, 'This should not throw!');

invariant(falsyValue, 'This will throw!');
// Error('Invariant violation: This will throw!');

Why tiny-invariant?

The library: invariant supports passing in arguments to the invariant function in a sprintf style (condition, format, a, b, c, d, e, f). It has internal logic to execute the sprintf substitutions. The sprintf logic is not removed in production builds. tiny-invariant has dropped all of the sprintf logic. tiny-invariant allows you to pass a single string message. With template literals there is really no need for a custom message formatter to be built into the library. If you need a multi part message you can just do this: invariant(condition, 'Hello, ${name} - how are you today?')

API: (condition: mixed, message?: string) => void

  • condition is required and can be anything
  • message is an optional string

Installation

# yarn
yarn add tiny-invariant

# bash
npm add tiny-invariant --save

Dropping your message for kb savings!

We recommend using babel-plugin-dev-expression to remove the message argument from your invariant calls in production builds to save kbs!

What it does it turn your code that looks like this:

invariant(condition, 'My cool message that takes up a lot of kbs');

Into this

if (!condition) {
  if ('production' !== process.env.NODE_ENV) {
    invariant(false, 'My cool message that takes up a lot of kbs');
  } else {
    invariant(false);
  }
}

Your bundler can then drop the code in the "production" !== process.env.NODE_ENV block for your production builds

Final result:

if (!condition) {
  invariant(false);
}

For rollup use rollup-plugin-replace and set NODE_ENV to production and then rollup will treeshake out the unused code

Webpack instructions

Builds

  • We have a es (EcmaScript module) build (because you know you want to deduplicate this super heavy library)
  • We have a cjs (CommonJS) build
  • We have a umd (Universal module definition) build in case you needed it

We expect process.env.NODE_ENV to be available at module compilation. We cache this value

That's it!

🤘