From 2db3c7701ec87a1d88b3c636dd46d3d985304bce Mon Sep 17 00:00:00 2001 From: Edwin Kofler Date: Fri, 5 Jan 2024 17:08:07 -0800 Subject: [PATCH 01/10] Remove .replit file (#622) --- .replit | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .replit diff --git a/.replit b/.replit deleted file mode 100644 index cf3930d..0000000 --- a/.replit +++ /dev/null @@ -1,2 +0,0 @@ -language = "nodejs" -run = "cd examples && node rainbow" From 386909ee0bfe4346d04e3eeba712f0db597c038d Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Sat, 20 Jan 2024 03:36:11 +1300 Subject: [PATCH 02/10] Tweak example (#623) --- examples/rainbow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/rainbow.js b/examples/rainbow.js index 71e3c37..cfc4cef 100644 --- a/examples/rainbow.js +++ b/examples/rainbow.js @@ -1,6 +1,6 @@ +import {setTimeout as delay} from 'node:timers/promises'; import convertColor from 'color-convert'; import updateLog from 'log-update'; -import delay from 'yoctodelay'; import chalk from '../source/index.js'; const ignoreChars = /[^!-~]/g; From 795273f17a94329c7a46247d8277f9afc2f0a6d9 Mon Sep 17 00:00:00 2001 From: Lightner <79603731+LightnerDev@users.noreply.github.com> Date: Fri, 5 Jul 2024 05:41:35 -0500 Subject: [PATCH 03/10] Update dependents number in readme (#629) --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 7cd796d..d52688b 100644 --- a/readme.md +++ b/readme.md @@ -68,7 +68,7 @@ - Doesn't extend `String.prototype` - Clean and focused - Actively maintained -- [Used by ~86,000 packages](https://www.npmjs.com/browse/depended/chalk) as of October 4, 2022 +- [Used by ~115,000 packages](https://www.npmjs.com/browse/depended/chalk) as of July 4, 2024 ## Install From 77126fba1328bb1b5524c45164d0a44074d5179d Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Sat, 11 Nov 2023 19:54:30 +0700 Subject: [PATCH 04/10] Meta tweaks --- .github/workflows/main.yml | 4 ++-- examples/rainbow.js | 2 +- package.json | 4 ++-- readme.md | 42 -------------------------------------- source/index.d.ts | 7 ++++++- source/index.test-d.ts | 21 ++++++++++++++++--- 6 files changed, 29 insertions(+), 51 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 10bb5ee..d588995 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,8 +14,8 @@ jobs: - 16 - 14 steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: npm install diff --git a/examples/rainbow.js b/examples/rainbow.js index cfc4cef..5b2b1d2 100644 --- a/examples/rainbow.js +++ b/examples/rainbow.js @@ -10,7 +10,7 @@ function rainbow(string, offset) { return string; } - const hueStep = 360 / string.replace(ignoreChars, '').length; + const hueStep = 360 / string.replaceAll(ignoreChars, '').length; let hue = offset % 360; const characters = []; diff --git a/package.json b/package.json index 3c50010..4eb7f11 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ } }, "types": "./source/index.d.ts", + "sideEffects": false, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -58,10 +59,9 @@ "log-update": "^5.0.0", "matcha": "^0.7.0", "tsd": "^0.19.0", - "xo": "^0.53.0", + "xo": "^0.57.0", "yoctodelay": "^2.0.0" }, - "sideEffects": false, "xo": { "rules": { "unicorn/prefer-string-slice": "off", diff --git a/readme.md b/readme.md index d52688b..6aa0119 100644 --- a/readme.md +++ b/readme.md @@ -15,48 +15,6 @@ ![](media/screenshot.png) -
- ---- - -
-

-

- - Sindre Sorhus' open source work is supported by the community on GitHub Sponsors - -

- Special thanks to: -
-
- - - -
-
- - - -
-
- -
- Strapi -
- Strapi is the leading open-source headless CMS. -
- It’s 100% JavaScript, fully customizable, and developer-first. -
-
-
-
-

-
- ---- - -
- ## Highlights - Expressive API diff --git a/source/index.d.ts b/source/index.d.ts index b0cd2ae..8295d92 100644 --- a/source/index.d.ts +++ b/source/index.d.ts @@ -1,7 +1,12 @@ // TODO: Make it this when TS suports that. // import {ModifierName, ForegroundColor, BackgroundColor, ColorName} from '#ansi-styles'; // import {ColorInfo, ColorSupportLevel} from '#supports-color'; -import {ModifierName, ForegroundColorName, BackgroundColorName, ColorName} from './vendor/ansi-styles/index.js'; +import { + ModifierName, + ForegroundColorName, + BackgroundColorName, + ColorName, +} from './vendor/ansi-styles/index.js'; import {ColorInfo, ColorSupportLevel} from './vendor/supports-color/index.js'; export interface Options { diff --git a/source/index.test-d.ts b/source/index.test-d.ts index e729675..92da39d 100644 --- a/source/index.test-d.ts +++ b/source/index.test-d.ts @@ -1,7 +1,22 @@ -import {expectType, expectAssignable, expectError, expectDeprecated} from 'tsd'; +import { + expectType, + expectAssignable, + expectError, + expectDeprecated, +} from 'tsd'; import chalk, { - Chalk, ChalkInstance, ColorInfo, ColorSupport, ColorSupportLevel, chalkStderr, supportsColor, supportsColorStderr, - ModifierName, ForegroundColorName, BackgroundColorName, ColorName, + Chalk, + ChalkInstance, + ColorInfo, + ColorSupport, + ColorSupportLevel, + chalkStderr, + supportsColor, + supportsColorStderr, + ModifierName, + ForegroundColorName, + BackgroundColorName, + ColorName, Modifiers, } from './index.js'; From 4a10354857ba6d7932dad5fa6ef2e021c4ed47fb Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Tue, 13 Aug 2024 14:49:54 +0200 Subject: [PATCH 05/10] Add FAQ to readme --- readme.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 6aa0119..455efaa 100644 --- a/readme.md +++ b/readme.md @@ -15,6 +15,11 @@ ![](media/screenshot.png) +## Info + +- [Why not switch to a smaller coloring package?](https://github.com/chalk/chalk?tab=readme-ov-file#why-not-switch-to-a-smaller-coloring-package) +- See [yoctocolors](https://github.com/sindresorhus/yoctocolors) for a smaller alternative + ## Highlights - Expressive API @@ -246,9 +251,25 @@ Since Chrome 69, ANSI escape codes are natively supported in the developer conso If you're on Windows, do yourself a favor and use [Windows Terminal](https://github.com/microsoft/terminal) instead of `cmd.exe`. -## Origin story +## FAQ -[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68) and the package is unmaintained. Although there are other packages, they either do too much or not enough. Chalk is a clean and focused alternative. +### Why not switch to a smaller coloring package? + +Chalk may be larger, but there is a reason for that. It offers a more user-friendly API, well-documented types, supports millions of colors, and covers edge cases that smaller alternatives miss. Chalk is mature, reliable, and built to last. + +But beyond the technical aspects, there's something more critical: trust and long-term maintenance. I have been active in open source for over a decade, and I'm committed to keeping Chalk maintained. Smaller packages might seem appealing now, but there's no guarantee they will be around for the long term, or that they won't become malicious over time. + +Chalk is also likely already in your dependency tree (since 100K+ packages depend on it), so switching won’t save space—in fact, it might increase it. npm deduplicates dependencies, so multiple Chalk instances turn into one, but adding another package alongside it will increase your overall size. + +If the goal is to clean up the ecosystem, switching away from Chalk won’t even make a dent. The real problem lies with packages that have very deep dependency trees (for example, those including a lot of polyfills). Chalk has no dependencies. It's better to focus on impactful changes rather than minor optimizations. + +If absolute package size is important to you, I also maintain [yoctocolors](https://github.com/sindresorhus/yoctocolors), one of the smallest color packages out there. + +*\- [Sindre](https://github.com/sindresorhus)* + +### But the smaller coloring package has benchmarks showing it is faster + +[Micro-benchmarks are flawed](https://sindresorhus.com/blog/micro-benchmark-fallacy) because they measure performance in unrealistic, isolated scenarios, often giving a distorted view of real-world performance. Don't believe marketing fluff. All the coloring packages are more than fast enough. ## Related From f8381204fb096207074089f5ab265fffff6bc341 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Wed, 18 Dec 2024 18:57:37 +0100 Subject: [PATCH 06/10] Update `CIRCLECI` environments to return level 3 color support https://github.com/chalk/supports-color/commit/89a52f4a8e3f7606c27810a8f182394d333a844f --- source/vendor/supports-color/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/vendor/supports-color/index.js b/source/vendor/supports-color/index.js index 4ce0a2d..1388372 100644 --- a/source/vendor/supports-color/index.js +++ b/source/vendor/supports-color/index.js @@ -112,11 +112,11 @@ function _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) { } if ('CI' in env) { - if ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) { + if (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) { return 3; } - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + if (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { return 1; } From 83acfcf8cb17437b63beceb027180399da74f0a7 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Wed, 18 Dec 2024 18:59:38 +0100 Subject: [PATCH 07/10] 5.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4eb7f11..3fd5094 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "chalk", - "version": "5.3.0", + "version": "5.4.0", "description": "Terminal string styling done right", "license": "MIT", "repository": "chalk/chalk", From fc809b686d5048d56fec3a5d96d1ad57dee193bf Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Wed, 18 Dec 2024 19:10:23 +0100 Subject: [PATCH 08/10] Readme tweak --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 455efaa..5754e7c 100644 --- a/readme.md +++ b/readme.md @@ -289,6 +289,8 @@ If absolute package size is important to you, I also maintain [yoctocolors](http - [chalk-pipe](https://github.com/LitoMore/chalk-pipe) - Create chalk style schemes with simpler style strings - [terminal-link](https://github.com/sindresorhus/terminal-link) - Create clickable links in the terminal +*(Not accepting additional entries)* + ## Maintainers - [Sindre Sorhus](https://github.com/sindresorhus) From 4ebb62d1ca70c122674558a88932ddf6545fe9ef Mon Sep 17 00:00:00 2001 From: Edwin Kofler Date: Sat, 21 Dec 2024 09:01:49 -0800 Subject: [PATCH 09/10] Fix `navigator` not defined `ReferenceError` (#642) --- source/vendor/supports-color/browser.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/vendor/supports-color/browser.js b/source/vendor/supports-color/browser.js index 9fa6888..fbb6ce0 100644 --- a/source/vendor/supports-color/browser.js +++ b/source/vendor/supports-color/browser.js @@ -1,14 +1,18 @@ /* eslint-env browser */ const level = (() => { - if (navigator.userAgentData) { + if (!('navigator' in globalThis)) { + return 0; + } + + if (globalThis.navigator.userAgentData) { const brand = navigator.userAgentData.brands.find(({brand}) => brand === 'Chromium'); if (brand && brand.version > 93) { return 3; } } - if (/\b(Chrome|Chromium)\//.test(navigator.userAgent)) { + if (/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)) { return 1; } From 5dbc1e2633f3874f43c144fa4919934bc934c495 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Sat, 21 Dec 2024 18:04:25 +0100 Subject: [PATCH 10/10] 5.4.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3fd5094..23b4ce3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "chalk", - "version": "5.4.0", + "version": "5.4.1", "description": "Terminal string styling done right", "license": "MIT", "repository": "chalk/chalk",