Pretty unicode tables for the command line

Overview

cli-table3

npm version Build Status

This utility allows you to render unicode-aided tables on the command line from your node.js scripts.

cli-table3 is based on (and api compatible with) the original cli-table, and cli-table2, which are both unmaintained. cli-table3 includes all the additional features from cli-table2.

Screenshot

Features not in the original cli-table

  • Ability to make cells span columns and/or rows.
  • Ability to set custom styles per cell (border characters/colors, padding, etc).
  • Vertical alignment (top, bottom, center).
  • Automatic word wrapping.
  • More robust truncation of cell text that contains ansi color characters.
  • Better handling of text color that spans multiple lines.
  • API compatible with the original cli-table.
  • Exhaustive test suite including the entire original cli-table test suite.
  • Lots of examples auto-generated from the tests (basic, advanced).

Features

  • Customizable characters that constitute the table.
  • Color/background styling in the header through colors.js
  • Column width customization
  • Text truncation based on predefined widths
  • Text alignment (left, right, center)
  • Padding (left, right)
  • Easy-to-use API

Installation

npm install cli-table3

How to use

A portion of the unit test suite is used to generate examples:

  • basic-usage - covers basic uses.
  • advanced - covers using the new column and row span features.

This package is api compatible with the original cli-table. So all the original documentation still applies (copied below).

Horizontal Tables

var Table = require('cli-table3');

// instantiate
var table = new Table({
    head: ['TH 1 label', 'TH 2 label']
  , colWidths: [100, 200]
});

// table is an Array, so you can `push`, `unshift`, `splice` and friends
table.push(
    ['First value', 'Second value']
  , ['First value', 'Second value']
);

console.log(table.toString());

Vertical Tables

var Table = require('cli-table3');
var table = new Table();

table.push(
    { 'Some key': 'Some value' }
  , { 'Another key': 'Another value' }
);

console.log(table.toString());

Cross Tables

Cross tables are very similar to vertical tables, with two key differences:

  1. They require a head setting when instantiated that has an empty string as the first header
  2. The individual rows take the general form of { "Header": ["Row", "Values"] }
var Table = require('cli-table3');
var table = new Table({ head: ["", "Top Header 1", "Top Header 2"] });

table.push(
    { 'Left Header 1': ['Value Row 1 Col 1', 'Value Row 1 Col 2'] }
  , { 'Left Header 2': ['Value Row 2 Col 1', 'Value Row 2 Col 2'] }
);

console.log(table.toString());

Custom styles

The chars property controls how the table is drawn:

var table = new Table({
  chars: { 'top': '═' , 'top-mid': '╤' , 'top-left': '╔' , 'top-right': '╗'
         , 'bottom': '═' , 'bottom-mid': '╧' , 'bottom-left': '╚' , 'bottom-right': '╝'
         , 'left': '║' , 'left-mid': '╟' , 'mid': '─' , 'mid-mid': '┼'
         , 'right': '║' , 'right-mid': '╢' , 'middle': '│' }
});

table.push(
    ['foo', 'bar', 'baz']
  , ['frob', 'bar', 'quuz']
);

console.log(table.toString());
// Outputs:
//
//╔══════╤═════╤══════╗
//║ foo  │ bar │ baz  ║
//╟──────┼─────┼──────╢
//║ frob │ bar │ quuz ║
//╚══════╧═════╧══════╝

Empty decoration lines will be skipped, to avoid vertical separator rows just set the 'mid', 'left-mid', 'mid-mid', 'right-mid' to the empty string:

var table = new Table({ chars: {'mid': '', 'left-mid': '', 'mid-mid': '', 'right-mid': ''} });
table.push(
    ['foo', 'bar', 'baz']
  , ['frobnicate', 'bar', 'quuz']
);

console.log(table.toString());
// Outputs: (note the lack of the horizontal line between rows)
//┌────────────┬─────┬──────┐
//│ foo        │ bar │ baz  │
//│ frobnicate │ bar │ quuz │
//└────────────┴─────┴──────┘

By setting all chars to empty with the exception of 'middle' being set to a single space and by setting padding to zero, it's possible to get the most compact layout with no decorations:

var table = new Table({
  chars: { 'top': '' , 'top-mid': '' , 'top-left': '' , 'top-right': ''
         , 'bottom': '' , 'bottom-mid': '' , 'bottom-left': '' , 'bottom-right': ''
         , 'left': '' , 'left-mid': '' , 'mid': '' , 'mid-mid': ''
         , 'right': '' , 'right-mid': '' , 'middle': ' ' },
  style: { 'padding-left': 0, 'padding-right': 0 }
});

table.push(
    ['foo', 'bar', 'baz']
  , ['frobnicate', 'bar', 'quuz']
);

console.log(table.toString());
// Outputs:
//foo        bar baz
//frobnicate bar quuz

Build Targets

Clone the repository and run yarn install to install all its submodules, then run one of the following commands:

Run the tests with coverage reports.
$ yarn test:coverage
Run the tests every time a file changes.
$ yarn test:watch
Update the documentation.
$ yarn docs

Credits

License

(The MIT License)

Copyright (c) 2014 James Talmage <[email protected]>

Original cli-table code/documentation: Copyright (c) 2010 LearnBoost <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • Update projects depending on cli-table2

    Update projects depending on cli-table2

    We should probably use @Turbo87 message he used for npm/npm#20955 as it clearly explains the situation. I am thinking that, if you are going to open a PR against one of the repos below, open a separate issue for it, and once the PR has merged, remove it from the list here? Thoughts?

    This PR updates the cli-table2 dependency to cli-table3, which fixes one of the npm audit warnings :)

    cli-table2 (like cli-table itself) is no longer maintained. In jamestalmage/cli-table2#43 a couple of people have offered to take over maintenance but the current maintainer did not respond so as a result the project was forked to https://github.com/cli-table/cli-table3.

    good first issue 
    opened by schalkneethling 22
  • fix: Replace colors with chalk to fix infinite loop.

    fix: Replace colors with chalk to fix infinite loop.

    This replaces the colors library with chalk after the author of colors added an infinite loop to colors/lib/index.js as a protest.

    The transition is pretty straightforward, although I had to skip a couple of tests where the ANSI gneerated by chalk was subtly different than the ANSI generated by the old cli-table library, or where the home-grown "truncate" function produced different output than chalk generated natively.

    opened by jwalton 12
  • `colors.js` has issues

    `colors.js` has issues

    Mainly, this https://github.com/Marak/colors.js/issues/285 Latest version has been compromised. A former maintainer, @dabh, has released this alternative 1.4.0 version. Alternatively, it could simply be eliminated, since it's optional.

    opened by JJ 11
  • feat: ability to set/override wordWrap and wrapOnWordBoundary options per cell

    feat: ability to set/override wordWrap and wrapOnWordBoundary options per cell

    Description

    This adds the ability to set wordWrap and wrapOnWordBoundary options per cell, instead of it being set globally via the table options.

    Use case is for when you want one column to have wrapOnWordBoundary=false, and another column with wrapOnWordBoundary=true (see screenshot and sample code)

    Sample Code

    const Table = require("cli-table3");
    
    let table = new Table({
      style: { head: [], border: [] },
      colWidths: [15, 50],
      wordWrap: true,
      wrapOnWordBoundary: true
    });
    
    table.push(
      ['URLs', 'Description'],
      [{ content: 'https://en.wikipedia.org/wiki/Voyager_program', wrapOnWordBoundary: false }, { content: 'The Voyager program is an American scientific program that employs two robotic interstellar probes, Voyager 1 and Voyager 2. They were launched in 1977 to take advantage of a favorable alignment of Jupiter and Saturn, to fly near them while collecting data for transmission back to Earth. After launch the decision was taken to send Voyager 2 near Uranus and Neptune to collect data for transmission back to Earth.'}],
      [{ content: 'https://en.wikipedia.org/wiki/SpaceX', wrapOnWordBoundary: false }, { content: 'Space Exploration Technologies Corp. (doing business as SpaceX) is an American spacecraft manufacturer, space launch provider, and a satellite communications corporation headquartered in Hawthorne, California. SpaceX was founded in 2002 by Elon Musk, with the goal of reducing space transportation costs to enable the colonization of Mars. SpaceX manufactures the Falcon 9 and Falcon Heavy launch vehicles, several rocket engines, Cargo Dragon, crew spacecraft, and Starlink communications satellites.' }]
    );
    
    console.log(table.toString())
    

    Screenshot

    image
    opened by shazron 9
  • Link as hyperlink in terminal doesn't render correctly

    Link as hyperlink in terminal doesn't render correctly

    Hey there, I tried all versions of cli-table i-e cli-table1, cli-table2 & cli-table3. All of them doesn't render the link properly.

    This is the library i'm using terminal-link: Create clickable links in the terminal When i log it without cli-table3 it renders the link correctly. But when used inside the columns of cli-table it doesn't render it and mess up the table borders. (Check the pic)

    What do you think can be an issue? I think cli-table is encoding the column's content which mess up the encoding provided by terminal-link?

    (90m should suppose to be the link) I'm using iterm2

    image enhancement 
    opened by hamxabaig 8
  • Security vulnerability with string-width dependency

    Security vulnerability with string-width dependency

    Currently string-width@^4.0.0 is dependent on strip-ansi@^3.0.1,. which has a dependency on a vulnerable version of ansi-regex. The vulnerability is only fixed in ansi-regex >6.0.0, https://github.com/chalk/ansi-regex/releases/tag/v6.0.1

    Vulnerability link - https://snyk.io/vuln/npm:ansi-regex

    opened by akaraman85 7
  • chore: migration from cli-table2 to cli-table3

    chore: migration from cli-table2 to cli-table3

    Current list:

    opened by DanielRuf 6
  • Travis build suspended?

    Travis build suspended?

    The tests are presently failing and there is no indication of this with this in build-status badge. The last build was 6 months ago and there is no build for commits to master since then.

    https://app.travis-ci.com/github/cli-table/cli-table3/branches

    While I'm logged into TravisCI, it says:

    Builds have been temporarily disabled for public repositories due to a negative credit balance. Please go to the [Plan page](https://app.travis-ci.com/organizations/cli-table/plan) to replenish your credit balance or alter your [Consume paid credits for OSS setting](https://app.travis-ci.com/organizations/cli-table/plan?anchor=oss-consumption).

    Not sure who specifically has access to see what's going on with Travis, but it will be ideal to get this resolved so that it is apparent when the build fails (as it would presently).

    bug 
    opened by speedytwenty 5
  • Version 0.6.1 dies with

    Version 0.6.1 dies with "JavaScript heap out of memory"

    Hi there,

    Thanks for your continuous effort to maintain this library! We got an automatic update to version 0.6.1 today, which we get as transitive dependency of the jscpd library.

    From 0.6.1 on our build starts to fail with "JavaScript heap out of memory". The whole error message goes like this:

    07:50:37  FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
    07:50:37  1: 0xafedf0 node::Abort() [node]
    07:50:37  2: 0xa1814d node::FatalError(char const*, char const*) [node]
    07:50:37  3: 0xce792e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
    07:50:37  4: 0xce7ca7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
    07:50:37  5: 0xeb1685  [node]
    07:50:37  6: 0xec081d v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
    07:50:37  7: 0xec399c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
    07:50:37  8: 0xe85f25 v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [node]
    07:50:37  9: 0xe80e29 v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawArray(int, v8::internal::AllocationType) [node]
    07:50:37  10: 0xe80ee5 v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithFiller(v8::internal::Handle<v8::internal::Map>, int, v8::internal::Handle<v8::internal::Oddball>, v8::internal::AllocationType) [node]
    07:50:37  11: 0x103a755  [node]
    07:50:37  12: 0x1099ad5  [node]
    07:50:37  13: 0x109f9a5 v8::internal::FastKeyAccumulator::GetKeys(v8::internal::GetKeysConversion) [node]
    07:50:37  14: 0x11f0116 v8::internal::Runtime_ForInEnumerate(int, unsigned long*, v8::internal::Isolate*) [node]
    07:50:37  15: 0x15c9eb9  [node]
    07:50:37  Aborted (core dumped)
    07:50:37  [06:50:34] '<anonymous>' errored after 1.1 min
    07:50:37  [06:50:34] Error: Command failed: npx jscpd --config jscpd.json src
    07:50:37  
    07:50:37  <--- Last few GCs --->
    07:50:37  
    07:50:37  [4037119:0x6805550]    63743 ms: Scavenge 4041.5 (4114.7) -> 4040.7 (4124.7) MB, 15.1 / 0.0 ms  (average mu = 0.618, current mu = 0.351) allocation failure 
    07:50:37  [4037119:0x6805550]    63788 ms: Scavenge 4047.4 (4124.7) -> 4045.2 (4126.0) MB, 30.3 / 0.0 ms  (average mu = 0.618, current mu = 0.351) allocation failure 
    07:50:37  [4037119:0x6805550]    65472 ms: Scavenge 4048.4 (4126.0) -> 4046.9 (4146.0) MB, 1674.8 / 0.0 ms  (average mu = 0.618, current mu = 0.351) allocation failure 
    07:50:37  
    07:50:37  
    07:50:37  <--- JS stacktrace --->
    07:50:37  
    07:50:37  FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
    07:50:37   1: 0xafedf0 node::Abort() [node]
    07:50:37   2: 0xa1814d node::FatalError(char const*, char const*) [node]
    07:50:37   3: 0xce792e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
    07:50:37   4: 0xce7ca7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
    07:50:37   5: 0xeb1685  [node]
    07:50:37   6: 0xec081d v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
    07:50:37   7: 0xec399c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
    07:50:37   8: 0xe85f25 v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [node]
    07:50:37   9: 0xe80e29 v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawArray(int, v8::internal::AllocationType) [node]
    07:50:37  10: 0xe80ee5 v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithFiller(v8::internal::Handle<v8::internal::Map>, int, v8::internal::Handle<v8::internal::Oddball>, v8::internal::AllocationType) [node]
    07:50:37  11: 0x103a755  [node]
    07:50:37  12: 0x1099ad5  [node]
    07:50:37  13: 0x109f9a5 v8::internal::FastKeyAccumulator::GetKeys(v8::internal::GetKeysConversion) [node]
    07:50:37  14: 0x11f0116 v8::internal::Runtime_ForInEnumerate(int, unsigned long*, v8::internal::Isolate*) [node]
    07:50:37  15: 0x15c9eb9  [node]
    07:50:37  Aborted (core dumped)
    07:50:37  
    07:50:37      at ChildProcess.exithandler (node:child_process:397:12)
    07:50:37      at ChildProcess.emit (node:events:394:28)
    07:50:37      at ChildProcess.emit (node:domain:537:15)
    07:50:37      at maybeClose (node:internal/child_process:1067:16)
    07:50:37      at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
    07:50:37      at Process.callbackTrampoline (node:internal/async_hooks:130:17)
    07:50:37  [06:50:34] 'lint' errored after 1.1 min
    

    Now when you downgrade again to 0.6.0, it starts to work again. The strange thing is also that the console output seems to be totally screwed. See for yourself here:

    image

    Maybe you find some time to have a look? Thank you so much :-)

    opened by klassm 5
  • Configure Renovate

    Configure Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    Renovate will begin keeping your dependencies up-to-date only once you merge this Pull Request. If you close this Pull Request unmerged, then Renovate will be disabled.

    If you have any questions, try reading our Docs, particularly the Getting Started section. You can post questions in our Config Help repository or @ the app author @rarkins in this PR and he'll probably see it.


    Detected Package Files

    • package.json (npm)

    Configuration Summary

    Based on the currently configured presets, Renovate will:

    • Start dependency updates once this Configure Renovate PR is merged or closed
    • Separate major versions of dependencies into individual branches/PRs
    • Do not separate patch and minor upgrades into separate PRs for the same dependency
    • Upgrade to unstable versions only if the existing version is unstable
    • Raise PRs immediately (after branch is created)
    • Use renovate/ as prefix for all branch names
    • If semantic commits detected, use semantic commit type fix for dependencies and chore for all others
    • Keep existing branches updated even when not scheduled
    • Disable automerging feature - wait for humans to merge all PRs
    • Ignore node_modules, bower_components, and various test/tests directories
    • Update existing lock files only when package.json is modified
    • Autodetect whether to pin dependencies or maintain ranges
    • Rate limit PR creation to a maximum of two per hour
    • Limit to maximum 20 concurrent Renovate PRs at any time

    Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch and this Pull Request description will be updated the next time Renovate runs. Try to use Config Presets (the extends array) when possible rather than raw config, as then this PR will be able to more accurately describe your settings.


    What to Expect

    With your current configuration, Renovate will create 1 Pull Request:

    1. chore(deps): pin dependencies
    • Branch name: renovate/pin-dependencies
    • Pins lerna-changelog in devDependencies to 0.7.0
    • Pins jest-runner-eslint in devDependencies to 0.6.0
    • Pins jest in devDependencies to 23.1.0
    • Pins eslint-plugin-prettier in devDependencies to 2.6.0
    • Pins eslint-config-prettier in devDependencies to 2.9.0
    • Pins cli-table in devDependencies to 0.3.1
    • Pins ansi-256-colors in devDependencies to 1.1.0


    This PR has been generated by Renovate Bot.

    opened by renovate[bot] 5
  • Move CI to Github Actions

    Move CI to Github Actions

    To address #271, this incorporates a github action which should run the tests across the same [major] versions of node as was previously setup with Travis.

    [Attempting this PR from a non-fork branch to attempt to induce the action]

    internal 
    opened by speedytwenty 4
  • Bump minimist from 1.2.5 to 1.2.7

    Bump minimist from 1.2.5 to 1.2.7

    Bumps minimist from 1.2.5 to 1.2.7.

    Changelog

    Sourced from minimist's changelog.

    v1.2.7 - 2022-10-10

    Commits

    • [meta] add auto-changelog 0ebf4eb
    • [actions] add reusable workflows e115b63
    • [eslint] add eslint; rules to enable later are warnings f58745b
    • [Dev Deps] switch from covert to nyc ab03356
    • [readme] rename and add badges 236f4a0
    • [meta] create FUNDING.yml; add funding in package.json 783a49b
    • [meta] use npmignore to autogenerate an npmignore file f81ece6
    • Only apps should have lockfiles 56cad44
    • [Dev Deps] update covert, tape; remove unnecessary tap 49c5f9f
    • [Tests] add aud in posttest 228ae93
    • [meta] add safe-publish-latest 01fc23f
    • [meta] update repo URLs 6b164c7

    v1.2.6 - 2022-03-21

    Commits

    • test from prototype pollution PR bc8ecee
    • isConstructorOrProto adapted from PR c2b9819
    • security notice for additional prototype pollution issue ef88b93
    Commits
    • c590d75 v1.2.7
    • 0ebf4eb [meta] add auto-changelog
    • e115b63 [actions] add reusable workflows
    • 01fc23f [meta] add safe-publish-latest
    • f58745b [eslint] add eslint; rules to enable later are warnings
    • 228ae93 [Tests] add aud in posttest
    • 236f4a0 [readme] rename and add badges
    • ab03356 [Dev Deps] switch from covert to nyc
    • 49c5f9f [Dev Deps] update covert, tape; remove unnecessary tap
    • 783a49b [meta] create FUNDING.yml; add funding in package.json
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by ljharb, a new releaser for minimist since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 0
  • Bump minimatch from 3.0.4 to 3.1.2

    Bump minimatch from 3.0.4 to 3.1.2

    Bumps minimatch from 3.0.4 to 3.1.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 0
  • Add assertion to test scripted examples

    Add assertion to test scripted examples

    The scripts that generate the cli-table3 docs include "testing" routines which never actually get tested. It's unclear whether this was lost or dropped somewhere along the way.

    Here I've added a simple routine that tests the tables generated with the defined expectations.

    It would be ideal if these "tests" were induced with the jest tests, but as is they are only induced within the "print-examples" and "update-docs" scripts.

    opened by speedytwenty 0
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 0
  • Bump prettier from 2.3.2 to 2.8.1

    Bump prettier from 2.3.2 to 2.8.1

    Bumps prettier from 2.3.2 to 2.8.1.

    Release notes

    Sourced from prettier's releases.

    2.8.1

    🔗 Changelog

    2.8.0

    diff

    🔗 Release note

    2.7.1

    🔗 Changelog

    2.7.0

    diff

    🔗 Release note

    2.6.2

    🔗 Changelog

    2.6.1

    🔗 Changelog

    2.6.0

    🔗 Release note

    2.5.1

    🔗 Changelog

    2.5.0

    diff

    🔗 Release note

    2.4.1

    🔗 Changelog

    2.4.0

    diff

    Release note

    Changelog

    Sourced from prettier's changelog.

    2.8.1

    diff

    Fix SCSS map in arguments (#9184 by @​agamkrbit)

    // Input
    $display-breakpoints: map-deep-merge(
      (
        "print-only": "only print",
        "screen-only": "only screen",
        "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, "sm")-1})",
      ),
      $display-breakpoints
    );
    

    // Prettier 2.8.0 $display-breakpoints: map-deep-merge( ( "print-only": "only print", "screen-only": "only screen", "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, " sm ")-1})", ), $display-breakpoints );

    // Prettier 2.8.1 $display-breakpoints: map-deep-merge( ( "print-only": "only print", "screen-only": "only screen", "xs-only": "only screen and (max-width: #{map-get($grid-breakpoints, "sm")-1})", ), $display-breakpoints );

    Support auto accessors syntax (#13919 by @​sosukesuzuki)

    Support for Auto Accessors Syntax landed in TypeScript 4.9.

    (Doesn't work well with babel-ts parser)

    class Foo {
      accessor foo: number = 3;
    </tr></table> 
    

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by prettier-bot, a new releaser for prettier since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.6.3)
Owner
null
Control the macOS dark mode from the command-line

dark-mode Control the macOS dark mode from the command-line Requires macOS 10.10 or later. macOS 10.13 or earlier needs to download the Swift runtime

Sindre Sorhus 630 Dec 30, 2022
node.js command-line interfaces made easy

Commander.js The complete solution for node.js command-line interfaces. Read this in other languages: English | 简体中文 Commander.js Installation Declari

TJ Holowaychuk 24k Jan 8, 2023
🌈 React for interactive command-line apps

React for CLIs. Build and test your CLI output using components. Ink provides the same component-based UI building experience that React offers in the

Vadim Demedes 19.7k Jan 9, 2023
Control the Plash app from the command-line

plash-cli Control the Plash app from the command-line Install $ npm install --global plash Requires Node.js 14 or later. Requires Plash 2.3.0 or late

Sindre Sorhus 33 Dec 30, 2022
A C++ based command-line (CLI) program that lets you manage your tasks

COMMAND LINE INTERFACE TODO APP a command-line (CLI) program that lets you manage your tasks. The specification for this project is written down as te

Rahul Prabhakar 1 Dec 25, 2021
Close chrome tabs from command-line (macOS only)

Close-tab Read all tabs from an activated window of the chrome, open with vi prompt, you can close tabs by deleting lines. Istallation npm install -g

Karl Saehun Chung 8 Jun 18, 2022
1History is a command line tool to backup your histories of different browsers into one place

1History All your history in one place. 1History is a command line tool to backup your histories of different browsers into one place. Features Suppor

null 340 Dec 31, 2022
Wordle and Termooo style classic word guessing game for the command line. One new word per day!

Wordle and Termooo style classic word guessing game for the command line. One new word per day!

Anderson Silva 3 Nov 27, 2022
SFDX Plugin to set Email Deliverability Access Level for an org easily and quickly via command line interface

SFDX Plugin to set Email Deliverability Access Level for an org easily and quickly via command line interface

Max Goldfarb 11 Dec 16, 2022
A project for FAST command line interface tools.

FAST CLI Project This is the FAST CLI project, containing the FAST CLI package and other related CLI packages for FAST project creation and management

Microsoft 24 Dec 5, 2022
A command line interface for programmatically creating data silos on app.transcend.io

Table of Contents Overview Installation Authentication transcend.yml Usage tr-pull tr-push CI Integration Dynamic Variables tr-scan Overview A command

Transcend 15 Dec 13, 2022
Autify Command Line Interface (CLI)

Autify Command Line Interface (CLI) Autify CLI can help your integration with Autify! Autify Command Line Interface (CLI) Usage Commands Usage Note: n

Autify 36 Jan 2, 2023
Generate a Node.js command line tool from an OpenAPI definition

OpenAPI Commander Generate a Node.js command line tool from an OpenAPI definition using the commander library. Example usage Usage: Subcommands groupe

Barry Coughlan 12 Jan 3, 2023
Windows command line tool to block outbound connections for files within a directory.

fwg A Windows command line tool to block outbound connections for files within a directory. fwg utilizes the power of PowerShell and Windows Network S

raymond wang 3 Jul 19, 2022
The command-line interface for versum

@versumstudios/cli The command-line interface for versum. versum-cli Usage Contributing How to use Export Templates Usage To install the latest versio

Versum Studios 8 Nov 3, 2022
LinkFree CLI is a command line tool that helps you to create your LinkFree profile through CLI.

LinkFree CLI LinkFree CLI is a command line tool that helps you to create your LinkFree profile through CLI. Demo Using the CLI (Commands) Note First

Pradumna Saraf 32 Dec 26, 2022
Pretty diff to html javascript cli (diff2html-cli)

diff2html-cli Diff to Html generates pretty HTML diffs from unified and git diff output in your terminal Table of Contents Features Online Example Dis

Rodrigo Fernandes 404 Dec 19, 2022
Run a command when a certain file exists, and/or watch files to rerun on changes

Run a command when a certain file exists, and/or watch files to rerun on changes

EGOIST 45 Sep 23, 2022
CLI Command for Two Factor Authentication.🚀

CLI Command for Two Factor Authentication.??

Yuga Sun 7 Nov 5, 2022