npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

boxen-extended

v0.2.2

Published

Extended wrapper around [boxen](https://github.com/sindresorhus/boxen) for rendering multiple values in one box, with divider support and smart inspect() formatting.

Readme

boxen-extended

Extended wrapper around boxen for rendering multiple values in one box, with divider support and smart inspect() formatting.

Install

npm install boxen-extended

Usage

import boxenExtended from "boxen-extended"

const output = boxenExtended(
  123,
  "Alice",
  ["one", "two"],
  { foo: "bar" },
  () => "hello world",
)

console.log(output)

// ┌────────────────────────┐
// │ 123                    │
// ├────────────────────────┤
// │ Alice                  │
// ├────────────────────────┤
// │ [ 'one', 'two' ]       │
// ├────────────────────────┤
// │ { foo: 'bar' }         │
// ├────────────────────────┤
// │ [Function (anonymous)] │
// └────────────────────────┘

By default:

  • non-string values are rendered with node-inspect-extracted
  • string values are used as-is
  • single border style is used unless you set borderStyle: "none"

API

boxenExtended(...args)

Default export. Also available as a named export.

boxenExtended(...args: unknown[] | [...unknown[], Options]): string
  • You can pass one or more values to show inside the box.
  • You can also pass one extra object at the end for options.
  • The last object is recognized as the options object if it has any of these keys:
    • boxenOptions
    • inspectOptions
    • extendedOptions

If the last argument does not have any of those keys, it is treated as normal content.

Options

type Options = {
  boxenOptions?: PatchedBoxenOptions
  inspectOptions?: InspectOptions
  extendedOptions?: ExtendedOptions
}
  • boxenOptions: forwarded to boxen
  • inspectOptions: forwarded to inspect() for non-string values (or all values when rawStrings is enabled)
  • extendedOptions: controls extra behavior from this package

extendedOptions.rawStrings

type ExtendedOptions = {
  rawStrings?: boolean // default: false
}
  • false (default): plain strings are kept untouched; non-strings are inspected
  • true: all values (including strings) are run through inspect()

boxenCompatible(value, options)

Named export for easier drop-in compatibility with boxen(value, options).

boxenCompatible(value: string, options: BoxenOptions): string

Divider Behavior

When a border style is enabled, passing multiple values renders each value in a separate section with a center divider line between them.

If borderStyle is "none", values are joined with blank lines instead of border dividers.

Supported Built-in Border Styles

This package supports all built-in styles from boxen and extends style objects with divider characters:

  • single
  • double
  • round
  • bold
  • singleDouble
  • doubleSingle
  • classic
  • arrow
  • none

You can also pass a custom style object with all boxen border keys plus:

  • center
  • centerLeft
  • centerRight

Notes

  • boxen options like margin, title, width, height, float, and colors are passed through via boxenOptions.
  • Divider rendering is ANSI-aware and keeps colored output aligned.