Comparing version 0.3.20 to 0.3.21
{ | ||
"name": "rejoinder", | ||
"version": "0.3.20", | ||
"description": "A generator of smart, pretty, and organized output for Node/JS scripts in the terminal", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/Xunnamius/rejoinder" | ||
}, | ||
"main": "lib/rejoinder.js", | ||
"author": "Xunnamius", | ||
"license": "ISC", | ||
"scripts": { | ||
"test": "mocha --recursive --reporter spec ./test", | ||
"docs": "documentation build -f md -o API.md" | ||
}, | ||
"version": "0.3.21", | ||
"description": "A tiny library for creating gorgeous terminal output", | ||
"keywords": [ | ||
@@ -27,13 +16,83 @@ "echo", | ||
], | ||
"optionalDependencies": { | ||
"shelljs": "^0.8.4" | ||
"homepage": "https://github.com/Xunnamius/rejoinder#readme", | ||
"bugs": { | ||
"url": "https://github.com/Xunnamius/rejoinder/issues" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/Xunnamius/rejoinder.git" | ||
}, | ||
"license": "MIT", | ||
"author": "Xunnamius", | ||
"sideEffects": false, | ||
"type": "commonjs", | ||
"exports": { | ||
".": { | ||
"types": "./dist/src/index.d.ts", | ||
"default": "./dist/src/index.js" | ||
}, | ||
"./package": "./package.json", | ||
"./package.json": "./package.json" | ||
}, | ||
"typesVersions": { | ||
"*": { | ||
"index": [ | ||
"dist/src/index.d.ts" | ||
], | ||
"package": [ | ||
"package.json" | ||
] | ||
} | ||
}, | ||
"files": [ | ||
"/dist", | ||
"/LICENSE", | ||
"/package.json", | ||
"/README.md" | ||
], | ||
"workspaces": [ | ||
"packages/*", | ||
"!packages/*.ignore*" | ||
], | ||
"scripts": { | ||
"build": "npm run build:dist --", | ||
"build:changelog": "symbiote build changelog --env NODE_NO_WARNINGS=1", | ||
"build:dist": "symbiote build distributables --env NODE_NO_WARNINGS=1", | ||
"build:docs": "symbiote build docs --env NODE_NO_WARNINGS=1", | ||
"clean": "symbiote clean --env NODE_NO_WARNINGS=1", | ||
"format": "symbiote format --env NODE_NO_WARNINGS=1 --hush", | ||
"info": "symbiote project info --env NODE_NO_WARNINGS=1", | ||
"lint": "npm run lint:package --", | ||
"lint:package": "symbiote lint --env NODE_NO_WARNINGS=1 --hush", | ||
"lint:packages": "symbiote lint --env NODE_NO_WARNINGS=1 --hush --scope unlimited", | ||
"lint:project": "symbiote project lint --env NODE_NO_WARNINGS=1", | ||
"list-tasks": "symbiote list-tasks --env NODE_NO_WARNINGS=1 --scope this-package", | ||
"prepare": "symbiote project prepare --env NODE_NO_WARNINGS=1", | ||
"release": "symbiote release --env NODE_NO_WARNINGS=1", | ||
"renovate": "symbiote project renovate --env NODE_NO_WARNINGS=1 --hush --github-reconfigure-repo --regenerate-assets --assets-preset 'basic cli lib lib-esm lib-web react nextjs'", | ||
"start": "symbiote start --env NODE_NO_WARNINGS=1 --", | ||
"test": "npm run test:package:unit --", | ||
"test:package:all": "symbiote test --env NODE_NO_WARNINGS=1 --coverage", | ||
"test:package:e2e": "symbiote test --env NODE_NO_WARNINGS=1 --tests end-to-end", | ||
"test:package:integration": "symbiote test --env NODE_NO_WARNINGS=1 --tests integration", | ||
"test:package:unit": "symbiote test --env NODE_NO_WARNINGS=1 --tests unit", | ||
"test:packages:all": "symbiote test --env NODE_NO_WARNINGS=1 --scope unlimited --coverage", | ||
"turbo:init": "symbiote project init-turbo --env NODE_NO_WARNINGS=1 --not-multiversal" | ||
}, | ||
"dependencies": { | ||
"@-xun/debug": "^1.0.0", | ||
"chalk": "^5.4.1", | ||
"core-js": "^3.40.0" | ||
}, | ||
"devDependencies": { | ||
"chai": "^4.2.0", | ||
"mocha": "^8.0.1", | ||
"sinon": "^9.0.2" | ||
"@-xun/symbiote": "^2.8.0", | ||
"type-fest": "^4.32.0" | ||
}, | ||
"dependencies": { | ||
"colors": "^1.4.0" | ||
"engines": { | ||
"node": "^18.20.0 || ^20.18.0 || ^22.12.0 || >=23.3.0" | ||
}, | ||
"publishConfig": { | ||
"access": "public", | ||
"registry": "https://registry.npmjs.org" | ||
} | ||
} |
317
README.md
@@ -1,104 +0,277 @@ | ||
[![npm | ||
version](https://badge.fury.io/js/rejoinder.svg)](https://badge.fury.io/js/rejoinder) | ||
<!-- symbiote-template-region-start 1 --> | ||
# REJOINDER | ||
<p align="center" width="100%"> | ||
<img width="300" src="https://raw.githubusercontent.com/Xunnamius/rejoinder/refs/heads/main/logo.png"> | ||
</p> | ||
rejoinder | ||
/rɪˈdʒɔɪndə/ | ||
noun | ||
a reply or response to a question or remark, esp a quick witty one; retort | ||
<p align="center" width="100%"> | ||
<!-- symbiote-template-region-end --> | ||
A tiny library for creating gorgeous (and sometimes witty) terminal output | ||
<!-- symbiote-template-region-start 2 --> | ||
</p> | ||
Rejoinder is that generator of smart, pretty, highly organized output your | ||
parents warned you about. | ||
<hr /> | ||
TODO: SPIN OFF EXECUTABLE POWERS INTO A SLASH-FILE VERSION i.e. | ||
rejoinder/execute | ||
<div align="center"> | ||
Super awesome when paired with | ||
[inquirer](https://www.npmjs.com/package/inquirer) and/or | ||
[commander](https://www.npmjs.com/package/commander)! | ||
[![Black Lives Matter!][x-badge-blm-image]][x-badge-blm-link] | ||
[![Last commit timestamp][x-badge-lastcommit-image]][x-badge-repo-link] | ||
[![Codecov][x-badge-codecov-image]][x-badge-codecov-link] | ||
[![Source license][x-badge-license-image]][x-badge-license-link] | ||
[![Uses Semantic Release!][x-badge-semanticrelease-image]][x-badge-semanticrelease-link] | ||
## Installation | ||
[![NPM version][x-badge-npm-image]][x-badge-npm-link] | ||
[![Monthly Downloads][x-badge-downloads-image]][x-badge-npm-link] | ||
```shell | ||
npm install rejoinder | ||
</div> | ||
<br /> | ||
# rejoinder | ||
<!-- symbiote-template-region-end --> | ||
```text | ||
re·join·der | ||
/rəˈjoindər/ | ||
noun | ||
a reply, especially a sharp or witty one. | ||
``` | ||
If you want support from shelljs (required to use `Execute`), install that too: | ||
<br /> | ||
`rejoinder` builds on [`debug`][1] and [`chalk`][2] to deliver consistent and | ||
beautiful output to stdout and/or stderr. | ||
Like `debug`, `rejoinder`'s output is organized by optionally-nested namespaces | ||
that can be enabled or disabled in a coarse-grain manner (via environment | ||
variables). Beyond `debug`, output can also be enabled or disabled | ||
programmatically in a fine-grain manner via several simple yet highly-flexible | ||
tag-based APIs. Output can be controlled in as fine-grained a manner as desired, | ||
extending up to the namespace level or all the way down to individual lines of | ||
output. | ||
<!-- symbiote-template-region-start 3 --> | ||
--- | ||
<!-- remark-ignore-start --> | ||
<!-- symbiote-template-region-end --> | ||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
- [Install](#install) | ||
- [Usage](#usage) | ||
- [Appendix](#appendix) | ||
- [Published Package Details](#published-package-details) | ||
- [License](#license) | ||
- [Contributing and Support](#contributing-and-support) | ||
- [Contributors](#contributors) | ||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- symbiote-template-region-start 4 --> | ||
<!-- remark-ignore-end --> | ||
<br /> | ||
## Install | ||
<!-- symbiote-template-region-end --> | ||
To install: | ||
```shell | ||
npm install shelljs | ||
npm install rejoinder | ||
``` | ||
## Usage and Examples | ||
## Usage | ||
```javascript | ||
const rejoinder = require('rejoinder'); | ||
let echo = rejoinder.echo; | ||
let execute = rejoinder.execute; | ||
<!-- TODO --> | ||
echo.now('output this very important warning to the console with pretty colors'); // immediate output | ||
echo.withPostfix.warn('output this very important warning to the console with pretty colors'); // colorful output prefixed with the string "WARN " | ||
TODO | ||
echo.beVerbose = true; // beVerbose fka "debugMode" | ||
echo.ifVerbose('Some message will appear if beVerbose is true'); | ||
echo.ifDebug('Some debug message will appear if beVerbose is true prefixed with the string "DEBUG "'); | ||
echo.beVerbose = false; // it is false by default | ||
echo.ifVerbose('Some message will NOT appear if beVerbose is false!'); | ||
echo.ifDebug('Some debug message will NOT appear if beVerbose is false!'); | ||
<!-- symbiote-template-region-start 5 --> | ||
echo.if(somethingistrue, 'I spit only the truth!'); // also returns false if somethingistrue is false | ||
## Appendix | ||
echo.now('all', 'my', 'methods', 'are', 'also', 'variadic!'); // prints "all my methods are also variadic!" | ||
echo.if(true, 'even', 'this', 'one :)'); // prints "even this one :)" | ||
<!-- symbiote-template-region-end --> | ||
echo.prefix = '>>'; // this will be printed directly before the message every time | ||
echo.now('changed', 'the', 'game!'); // prints ">> changed the game!" | ||
Further documentation can be found under [`docs/`][x-repo-docs]. | ||
echo.prefix = 'Big:Boy:Time:'; | ||
echo.messageSeparator = '||'; // this is the thing between the prefix and the message | ||
echo.usingPredicate((str) => `"${str}"`, 'the', 'time', 'for', 'fun and games is', 'over!'); | ||
// the above prints `Big:Boy:Time:||"the" "time" "for" "fun and games is" "over!"` | ||
<!-- TODO: additional appendix sections here --> | ||
<!-- symbiote-template-region-start 6 --> | ||
echo.withPostfix('postfix', 'this is', 'pretty cool'); // prints "Big:Boy:Time::postfix||this is pretty cool" | ||
echo.postfixSeparator = '<>'; // this is the thing between the prefix and the postfix. It goes `prefix + postfixsep + postfix + msgsep + message` | ||
echo.withPostfix('postfix', 'this too'); // prints "Big:Boy:Time:<>postfix||this too" | ||
echo.withPostfix.ok('GOT IT!'); // prints colorful output that says "Big:Boy:Time:<>OK||GOT IT!" | ||
### Published Package Details | ||
// ONLY the echo statements that appear inside of this function will have the aforesaid prefix | ||
echo.withPrefix('~>', () => | ||
{ | ||
echo.now('or'); // prints "~>||or" | ||
echo.now('is', 'it? I wonder.'); // prints "~>||is it? I wonder." | ||
echo.withPostfix('NO', 'Wait!'); // prints "~><>NO||Wait!" | ||
echo.withPostfix.action("Don't make me bring Execute into this..."); // prints colorful output "~><>ACTION||Don't make me bring Execute into this..." | ||
}); | ||
This is a [CJS2 package][x-pkg-cjs-mojito] with statically-analyzable exports | ||
built by Babel for use in Node.js versions that are not end-of-life. For | ||
TypeScript users, this package supports both `"Node10"` and `"Node16"` module | ||
resolution strategies. | ||
echo.beVerbose = true; | ||
<!-- symbiote-template-region-end --> | ||
<!-- TODO: additional package details here --> | ||
<!-- symbiote-template-region-start 7 --> | ||
// prints the command and the result of executing it thanks to echo.beVerbose! See API.md for more information on how this works | ||
execute.now('return 0'); | ||
``` | ||
<details><summary>Expand details</summary> | ||
## Documentation | ||
See [API.md](API.md) | ||
That means both CJS2 (via `require(...)`) and ESM (via `import { ... } from ...` | ||
or `await import(...)`) source will load this package from the same entry points | ||
when using Node. This has several benefits, the foremost being: less code | ||
shipped/smaller package size, avoiding [dual package | ||
hazard][x-pkg-dual-package-hazard] entirely, distributables are not | ||
packed/bundled/uglified, a drastically less complex build process, and CJS | ||
consumers aren't shafted. | ||
## Tests | ||
Each entry point (i.e. `ENTRY`) in [`package.json`'s | ||
`exports[ENTRY]`][x-repo-package-json] object includes one or more [export | ||
conditions][x-pkg-exports-conditions]. These entries may or may not include: an | ||
[`exports[ENTRY].types`][x-pkg-exports-types-key] condition pointing to a type | ||
declaration file for TypeScript and IDEs, a | ||
[`exports[ENTRY].module`][x-pkg-exports-module-key] condition pointing to | ||
(usually ESM) source for Webpack/Rollup, a `exports[ENTRY].node` and/or | ||
`exports[ENTRY].default` condition pointing to (usually CJS2) source for Node.js | ||
`require`/`import` and for browsers and other environments, and [other | ||
conditions][x-pkg-exports-conditions] not enumerated here. Check the | ||
[package.json][x-repo-package-json] file to see which export conditions are | ||
supported. | ||
``` | ||
npm install | ||
npm test | ||
``` | ||
Note that, regardless of the [`{ "type": "..." }`][x-pkg-type] specified in | ||
[`package.json`][x-repo-package-json], any JavaScript files written in ESM | ||
syntax (including distributables) will always have the `.mjs` extension. Note | ||
also that [`package.json`][x-repo-package-json] may include the | ||
[`sideEffects`][x-pkg-side-effects-key] key, which is almost always `false` for | ||
optimal [tree shaking][x-pkg-tree-shaking] where appropriate. | ||
## Contributing | ||
<!-- symbiote-template-region-end --> | ||
<!-- TODO: additional package details here --> | ||
<!-- symbiote-template-region-start 8 --> | ||
In lieu of a formal styleguide, take care to maintain the existing coding style. | ||
</details> | ||
Add unit tests for any new or changed functionality. Lint and test your code. | ||
### License | ||
## Release History | ||
<!-- symbiote-template-region-end --> | ||
* 0.3.x Several bugfixes | ||
* 0.2.0 Initial working release; unit tested; semver versioning semantics are | ||
obeyed from this point forward | ||
* 0.1.x Rapid iteration | ||
See [LICENSE][x-repo-license]. | ||
<!-- TODO: additional license information and/or sections here --> | ||
<!-- symbiote-template-region-start 9 --> | ||
## Contributing and Support | ||
**[New issues][x-repo-choose-new-issue] and [pull requests][x-repo-pr-compare] | ||
are always welcome and greatly appreciated! 🤩** Just as well, you can [star 🌟 | ||
this project][x-badge-repo-link] to let me know you found it useful! ✊🏿 Or [buy | ||
me a beer][x-repo-sponsor], I'd appreciate it. Thank you! | ||
See [CONTRIBUTING.md][x-repo-contributing] and [SUPPORT.md][x-repo-support] for | ||
more information. | ||
<!-- symbiote-template-region-end --> | ||
<!-- TODO: additional contribution/support sections here --> | ||
<!-- symbiote-template-region-start 10 --> | ||
### Contributors | ||
<!-- symbiote-template-region-end --> | ||
<!-- symbiote-template-region-start root-package-only --> | ||
<!-- remark-ignore-start --> | ||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> | ||
[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) | ||
<!-- ALL-CONTRIBUTORS-BADGE:END --> | ||
<!-- remark-ignore-end --> | ||
Thanks goes to these wonderful people ([emoji | ||
key][x-repo-all-contributors-emojis]): | ||
<!-- remark-ignore-start --> | ||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> | ||
<!-- prettier-ignore-start --> | ||
<!-- markdownlint-disable --> | ||
<table> | ||
<tbody> | ||
<tr> | ||
<td align="center" valign="top" width="14.28%"><a href="https://xunn.io/"><img src="https://avatars.githubusercontent.com/u/656017?v=4?s=100" width="100px;" alt="Bernard"/><br /><sub><b>Bernard</b></sub></a><br /><a href="#infra-Xunnamius" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/Xunnamius/rejoinder/commits?author=Xunnamius" title="Code">💻</a> <a href="https://github.com/Xunnamius/rejoinder/commits?author=Xunnamius" title="Documentation">📖</a> <a href="#maintenance-Xunnamius" title="Maintenance">🚧</a> <a href="https://github.com/Xunnamius/rejoinder/commits?author=Xunnamius" title="Tests">⚠️</a> <a href="https://github.com/Xunnamius/rejoinder/pulls?q=is%3Apr+reviewed-by%3AXunnamius" title="Reviewed Pull Requests">👀</a></td> | ||
</tr> | ||
</tbody> | ||
<tfoot> | ||
<tr> | ||
<td align="center" size="13px" colspan="7"> | ||
<img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg"> | ||
<a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a> | ||
</img> | ||
</td> | ||
</tr> | ||
</tfoot> | ||
</table> | ||
<!-- markdownlint-restore --> | ||
<!-- prettier-ignore-end --> | ||
<!-- ALL-CONTRIBUTORS-LIST:END --> | ||
<!-- remark-ignore-end --> | ||
This project follows the [all-contributors][x-repo-all-contributors] | ||
specification. Contributions of any kind welcome! | ||
<!-- symbiote-template-region-end --> | ||
<!-- symbiote-template-region-start workspace-package-only --> | ||
<!-- (section elided by symbiote) --> | ||
<!-- symbiote-template-region-end --> | ||
[x-badge-blm-image]: https://xunn.at/badge-blm 'Join the movement!' | ||
[x-badge-blm-link]: https://xunn.at/donate-blm | ||
[x-badge-codecov-image]: | ||
https://img.shields.io/codecov/c/github/Xunnamius/rejoinder/main?style=flat-square&token=HWRIOBAAPW&flag=package.main_root | ||
'Is this package well-tested?' | ||
[x-badge-codecov-link]: https://codecov.io/gh/Xunnamius/rejoinder | ||
[x-badge-downloads-image]: | ||
https://img.shields.io/npm/dm/rejoinder?style=flat-square | ||
'Number of times this package has been downloaded per month' | ||
[x-badge-lastcommit-image]: | ||
https://img.shields.io/github/last-commit/Xunnamius/rejoinder?style=flat-square | ||
'Latest commit timestamp' | ||
[x-badge-license-image]: | ||
https://img.shields.io/npm/l/rejoinder?style=flat-square | ||
"This package's source license" | ||
[x-badge-license-link]: https://github.com/Xunnamius/rejoinder/blob/main/LICENSE | ||
[x-badge-npm-image]: | ||
https://xunn.at/npm-pkg-version/rejoinder | ||
'Install this package using npm or yarn!' | ||
[x-badge-npm-link]: https://npmtrends.com/rejoinder | ||
[x-badge-repo-link]: https://github.com/Xunnamius/rejoinder | ||
[x-badge-semanticrelease-image]: | ||
https://xunn.at/badge-semantic-release | ||
'This repo practices continuous integration and deployment!' | ||
[x-badge-semanticrelease-link]: | ||
https://github.com/semantic-release/semantic-release | ||
[x-pkg-cjs-mojito]: | ||
https://dev.to/jakobjingleheimer/configuring-commonjs-es-modules-for-nodejs-12ed#publish-only-a-cjs-distribution-with-property-exports | ||
[x-pkg-dual-package-hazard]: | ||
https://nodejs.org/api/packages.html#dual-package-hazard | ||
[x-pkg-exports-conditions]: | ||
https://webpack.js.org/guides/package-exports#reference-syntax | ||
[x-pkg-exports-module-key]: | ||
https://webpack.js.org/guides/package-exports#providing-commonjs-and-esm-version-stateless | ||
[x-pkg-exports-types-key]: | ||
https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta#packagejson-exports-imports-and-self-referencing | ||
[x-pkg-side-effects-key]: | ||
https://webpack.js.org/guides/tree-shaking#mark-the-file-as-side-effect-free | ||
[x-pkg-tree-shaking]: https://webpack.js.org/guides/tree-shaking | ||
[x-pkg-type]: | ||
https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#type | ||
[x-repo-all-contributors]: https://github.com/all-contributors/all-contributors | ||
[x-repo-all-contributors-emojis]: https://allcontributors.org/docs/en/emoji-key | ||
[x-repo-choose-new-issue]: | ||
https://github.com/Xunnamius/rejoinder/issues/new/choose | ||
[x-repo-contributing]: /CONTRIBUTING.md | ||
[x-repo-docs]: docs | ||
[x-repo-license]: ./LICENSE | ||
[x-repo-package-json]: package.json | ||
[x-repo-pr-compare]: https://github.com/Xunnamius/rejoinder/compare | ||
[x-repo-sponsor]: https://github.com/sponsors/Xunnamius | ||
[x-repo-support]: /.github/SUPPORT.md | ||
[1]: https://npm.im/debug | ||
[2]: https://npm.im/chalk |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
33679
2
511
0
1
278
0
3
5
1
+ Added@-xun/debug@^1.0.0
+ Addedchalk@^5.4.1
+ Addedcore-js@^3.40.0
+ Added@-xun/debug@1.1.3(transitive)
+ Added@types/debug@4.1.12(transitive)
+ Added@types/ms@2.1.0(transitive)
+ Addedchalk@5.4.1(transitive)
+ Addedcore-js@3.40.0(transitive)
+ Addeddebug@4.4.0(transitive)
+ Addedhas-flag@4.0.0(transitive)
+ Addedms@2.1.3(transitive)
+ Addedsupports-color@8.1.1(transitive)
+ Addedtype-fest@4.33.0(transitive)
- Removedcolors@^1.4.0
- Removedbalanced-match@1.0.2(transitive)
- Removedbrace-expansion@1.1.11(transitive)
- Removedcolors@1.4.0(transitive)
- Removedconcat-map@0.0.1(transitive)
- Removedfs.realpath@1.0.0(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedglob@7.2.3(transitive)
- Removedhasown@2.0.2(transitive)
- Removedinflight@1.0.6(transitive)
- Removedinherits@2.0.4(transitive)
- Removedinterpret@1.4.0(transitive)
- Removedis-core-module@2.16.1(transitive)
- Removedminimatch@3.1.2(transitive)
- Removedonce@1.4.0(transitive)
- Removedpath-is-absolute@1.0.1(transitive)
- Removedpath-parse@1.0.7(transitive)
- Removedrechoir@0.6.2(transitive)
- Removedresolve@1.22.10(transitive)
- Removedshelljs@0.8.5(transitive)
- Removedsupports-preserve-symlinks-flag@1.0.0(transitive)
- Removedwrappy@1.0.2(transitive)