@-xun/debug
v1.1.4
Published
Extends the hyper-popular debug package with several convenience methods
Downloads
67
Maintainers
Readme
@-xun/debug
@-xun/debug
extends debugger instances from the hyper popular debug
package
with several convenience methods.
This package is the workhorse on which rejoinder
is built.
Install
To install:
npm install @-xun/debug
Usage
TODO
Special process.env.DEBUG
Activation Functionality
In older versions of the debug
package's functionality, DEBUG='namespace*'
would activate the namespace:sub-namespace
debugger but not the namespace
debugger. @-xun/debug
worked around this DX issue by appending a colon to the
so-called "root namespace" (i.e. namespace
in these examples) at creation
time, which ensured DEBUG='namespace*'
activated all namespace
debuggers and
sub-debuggers.
To maintain functional parity with debug
's activation functionality,
@-xun/debug
appends a colon to the root namespace in DEBUG
strings.
@-xun/debug
also splits on space/comma and applies the same transform to each
split-off namespace string, including negated namespace strings (e.g.
DEBUG='*,-namespace'
).
This means DEBUG='namespace*'
and DEBUG='namespace:*'
(as well as
DEBUG='*,-namespace*'
and DEBUG='*,-namespace:*'
) have identical meanings to
@-xun/debug
, but not to the upstream debug
package.
Note that this does NOT mean DEBUG='namespace:sub-namespace*'
and
DEBUG='namespace:sub-namespace:*'
have identical meanings. They do not.
[!NOTE]
As of 2025, it seems
debug
has fixed this DX issue upstream. What is described above is no longer a workaround; instead, the extra-colon root namespace is just a feature of@-xun/debug
now 😄
Appendix
Further documentation can be found under docs/
.
Published Package Details
This is a CJS2 package 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.
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 entirely, distributables are not
packed/bundled/uglified, a drastically less complex build process, and CJS
consumers aren't shafted.
Each entry point (i.e. ENTRY
) in package.json
's
exports[ENTRY]
object includes one or more export
conditions. These entries may or may not include: an
exports[ENTRY].types
condition pointing to a type
declaration file for TypeScript and IDEs, a
exports[ENTRY].module
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 not enumerated here. Check the
package.json file to see which export conditions are
supported.
Note that, regardless of the { "type": "..." }
specified in
package.json
, any JavaScript files written in ESM
syntax (including distributables) will always have the .mjs
extension. Note
also that package.json
may include the
sideEffects
key, which is almost always false
for
optimal tree shaking where appropriate.
License
See LICENSE.
Contributing and Support
New issues and pull requests are always welcome and greatly appreciated! 🤩 Just as well, you can star 🌟 this project to let me know you found it useful! ✊🏿 Or buy me a beer, I'd appreciate it. Thank you!
See CONTRIBUTING.md and SUPPORT.md for more information.
Contributors
See the table of contributors.