Gathering detailed insights and metrics for @minswap/tiny-invariant
Gathering detailed insights and metrics for @minswap/tiny-invariant
Gathering detailed insights and metrics for @minswap/tiny-invariant
Gathering detailed insights and metrics for @minswap/tiny-invariant
npm install @minswap/tiny-invariant
Typescript
Module System
Node Version
NPM Version
TypeScript (69.66%)
JavaScript (30.34%)
Total Downloads
0
Last Day
0
Last Week
0
Last Month
0
Last Year
0
MIT License
1,841 Stars
178 Commits
47 Forks
8 Watchers
90 Branches
12 Contributors
Updated on Jul 09, 2025
Latest Version
1.2.0
Package Id
@minswap/tiny-invariant@1.2.0
Unpacked Size
10.47 kB
Size
4.25 kB
File Count
10
NPM Version
6.14.16
Node Version
14.19.0
Cumulative downloads
Total Downloads
Last Day
0%
NaN
Compared to previous day
Last Week
0%
NaN
Compared to previous week
Last Month
0%
NaN
Compared to previous month
Last Year
0%
NaN
Compared to previous year
A tiny invariant
alternative.
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.
1import invariant from 'tiny-invariant'; 2 3invariant(truthyValue, 'This should not throw!'); 4 5invariant(falsyValue, 'This will throw!'); 6// Error('Invariant violation: This will throw!');
You can also provide a function to generate your message, for when your message is expensive to create
1import invariant from 'tiny-invariant'; 2 3invariant(value, () => getExpensiveMessage());
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?')
tiny-invariant
is useful for correctly narrowing types for flow
and typescript
1const value: Person | null = { name: 'Alex' }; // type of value == 'Person | null' 2invariant(value, 'Expected value to be a person'); 3// type of value has been narrowed to 'Person'
(condition: any, message?: string | (() => string)) => void
condition
is required and can be anythingmessage
optional string
or a function that returns a string
(() => string
)1# yarn 2yarn add tiny-invariant 3 4# npm 5npm install tiny-invariant --save
message
for kb savings!Big idea: you will want your compiler to convert this code:
1invariant(condition, 'My cool message that takes up a lot of kbs');
Into this:
1if (!condition) { 2 if ('production' !== process.env.NODE_ENV) { 3 invariant(false, 'My cool message that takes up a lot of kbs'); 4 } else { 5 invariant(false); 6 } 7}
babel-plugin-dev-expression
tsdx
(or you can run babel-plugin-dev-expression
after TypeScript compiling)Your bundler can then drop the code in the "production" !== process.env.NODE_ENV
block for your production builds to end up with this:
1if (!condition) { 2 invariant(false); 3}
NODE_ENV
to production
and then rollup
will treeshake out the unused codees
(EcmaScript module) buildcjs
(CommonJS) buildumd
(Universal module definition) build in case you needed itWe expect process.env.NODE_ENV
to be available at module compilation. We cache this value
🤘
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
Reason
Found 4/15 approved changesets -- score normalized to 2
Reason
8 existing vulnerabilities detected
Details
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Score
Last Scanned on 2025-07-07
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More