@engineersamuel/istruthy
v1.1.0
Published
Truthiness with options
Maintainers
Readme
Table of Contents
Why
Most truthiness libraries are either extremely basic or simply adhere to the standard defnition of Truthy in JavaScript.
However, what happens when you want to consider ' ', [], {}, 0, or [null] false? This is where @engineersamuel/istruthy comes in.
Install
$ npm i -D @engineersamuel/istruthy
Usage
import { isTruthy, isFalsy } from '@engineersamuel/istruthy';
console.log(isTruthy('abc')); // prints true
console.log(isTruthy('', { isEmptyStringFalse: true })); // prints false
console.log(isFalse('abc')); // prints false
console.log(isFalsy('', { isEmptyStringFalse: true })); // prints trueSee the *.spec.ts files in the ./test directory for a great reference on using isTruthy.
If you want to reference this library directly in html:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Other resources here -->
<!-- ... -->
<!-- Assembler CSS -->
<script src="https://cdn.jsdelivr.net/npm/@engineersamuel/[email protected]/dist/index.min.js"></script>
</head>
<body>
<!-- Your code here -->
<script>
console.log(Truthiness.isTruthy('abc')); // prints true
console.log(Truthiness.isTruthy('', { isEmptyStringFalse: true })); // prints false
console.log(Truthiness.isFalse('abc')); // prints false
console.log(Truthiness.isFalsy('', { isEmptyStringFalse: true })); // prints true
</script>
</body>
</html>Note that the UMD is built with rollup.js (Which is minimally necessary considering there are no dependencies) and the global variable name is Truthiness hence in the above browser environment you would access isTruthy via Truthiness.isTruthy.
Config
| Option | Default | Description |
|---|---|---|
| isZeroFalse | false | When set to true then 0 will be will be evaluated to false. Ex. isTruthy(0, { isZeroFalse: true}); // returns false |
| isInfinityFalse | false | When set to true then Infinity and -Infinity will be will be evaluated to false. Ex. isTruthy(Infinity, { isInfinityFalse: true}); // returns false |
| isEmptyStringFalse | false | When set to true then '' will be will be evaluated to false. Ex. isTruthy('', { isEmptyStringFalse: true}); // returns false |
| isEmptyObjectFalse | false | When set to true then {} will be will be evaluated to false. Ex. isTruthy({}, { isEmptyObjectFalse: true}); // returns false |
| isEmptyArrayFalse | false | When set to true then [] will be will be evaluated to false. Ex. isTruthy([], { isEmptyArrayFalse: true}); // returns false |
| isFilteredArrayFalse | false | When set to true then [null, undefined] will be will be evaluated to false. Ex. isTruthy([null, undefined], { isFilteredArrayFalse: true }); // returns false Note: This specific flag will recursively check each value, so passing options to isTruthy are recursively respected. |
| isFalsyArrayFalse | false | When set to true then [null, undefined] will be will be evaluated to false. Ex. isTruthy([null, undefined], { isFalsyArrayFalse: true})/ // returns false Ex. isTruthy([0, ''], { isFalsyArrayFalse: true, isZeroFalse: true, isEmptyStringFalse: true }); // returns false Note: This specific flag will recursively check each value, so passing options to isTruthy are recursively respected. |
Testing
npm run test
63 passing (38ms)
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
index.ts | 100 | 100 | 100 | 100 |
----------|---------|----------|---------|---------|-------------------Contributing
npm i- make code changes
npm run testnpm run lintnpm run build
Publishing
Releases are automated with GitHub Actions and semantic-release.
- Use Conventional Commits in commits that land on
master; for squash merges, make the PR title a Conventional Commit.fix:creates a patch release,feat:creates a minor release, andfeat!:orBREAKING CHANGE:creates a major release. - When changes land on
master, the release workflow runsnpm ci,npm test,npm run lint, andnpm run build. - If semantic-release finds releasable changes, it updates the package version, commits
package.jsonandpackage-lock.jsonback tomaster, publishes to npm, creates the Git tag, and creates the GitHub Release. - Add an
NPM_TOKENrepository secret in GitHub Actions with permission to publish this package. Alternatively, configure npm trusted publishing for this package with this repository and the.github/workflows/release.ymlworkflow file.
