diff --git a/bin/http-server b/bin/http-server index 26ceffa3..d4b8baa0 100755 --- a/bin/http-server +++ b/bin/http-server @@ -2,7 +2,7 @@ 'use strict'; -var chalk = require('chalk'), +var pc = require('picocolors'), os = require('os'), httpServer = require('../lib/http-server'), portfinder = require('portfinder'), @@ -112,10 +112,10 @@ if (nopanic){ process.on('error', (e)=> { // Results in a string like "2021-12-27 14:56:31" const etime = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, ''); - console.log(colors.green(etime)); - console.log(`${colors.red('Fatal error: ')}${e.code}: ${e.message}`); + console.log(pc.green(etime)); + console.log(`${pc.red('Fatal error: ')}${e.code}: ${e.message}`); const filename = `httpserver-${etime.split(' ').join('_')}.log`; - console.log(colors.bold(`Check ${filename} file in this folder.`)); + console.log(pc.bold(`Check ${filename} file in this folder.`)); fs.writeFileSync(filename, JSON.stringify(e)); process.exit(1); }); @@ -145,25 +145,25 @@ if (!argv.s && !argv.silent) { if (error) { logger.info( '[%s] %s "%s %s" Error (%s): "%s"', - date, ip, chalk.red(req.method), chalk.red(req.url), - chalk.red(error.status.toString()), chalk.red(error.message) + date, ip, pc.red(req.method), pc.red(req.url), + pc.red(error.status.toString()), pc.red(error.message) ); } else if (req.proxy) { logger.info( '[%s] %s "%s" (%s)-> "%s"', - date, ip, chalk.cyan(req.url), chalk.magenta('Proxy'), chalk.cyan(req.proxy.target) + date, ip, pc.cyan(req.url), pc.magenta('Proxy'), pc.cyan(req.proxy.target) ); } else { logger.info( '[%s] %s "%s %s" "%s"', - date, ip, chalk.cyan(req.method), chalk.cyan(req.url), + date, ip, pc.cyan(req.method), pc.cyan(req.url), req.headers['user-agent'] ); } } }; -} else if (chalk) { +} else if (pc) { logger = { info: function () {}, request: function () {} @@ -230,7 +230,7 @@ function listen(port) { if (websocket) { if (!proxy) { - logger.warning(colors.yellow('WebSocket proxy will not be enabled because proxy is not enabled')); + logger.info(pc.yellow('WebSocket proxy will not be enabled because proxy is not enabled')); } else { options.websocket = true; } @@ -264,7 +264,7 @@ function listen(port) { try { new url.URL(proxy); } catch (err) { - logger.info(chalk.red('Error: Invalid proxy url')); + logger.info(pc.red('Error: Invalid proxy url')); process.exit(1); } } @@ -282,7 +282,7 @@ function listen(port) { } } catch (err) { - logger.info(chalk.red('Error: Invalid proxy config or file')); + logger.info(pc.red('Error: Invalid proxy config or file')); process.exit(1); } // Proxy file overrides cli config @@ -291,18 +291,18 @@ function listen(port) { } if (proxyAll && proxyConfig) { - logger.info(chalk.red('Error: --proxy-all cannot be used with --proxy-config')); + logger.info(pc.red('Error: --proxy-all cannot be used with --proxy-config')); logger.info( '%s\n%s\n%s', - chalk.yellow('Hint: Use'), - chalk.cyan('"/**": {\n "target": "your-proxy"\n}'), - chalk.yellow('in the proxy config to achieve the same effect.') + pc.yellow('Hint: Use'), + pc.cyan('"/**": {\n "target": "your-proxy"\n}'), + pc.yellow('in the proxy config to achieve the same effect.') ); process.exit(1); } if (proxyAll && !proxy) { - logger.info(chalk.red('Error: --proxy-all requires --proxy to be set')); + logger.info(pc.red('Error: --proxy-all requires --proxy to be set')); process.exit(1); } @@ -315,13 +315,13 @@ function listen(port) { try { fs.lstatSync(options.https.cert); } catch (err) { - logger.info(chalk.red('Error: Could not find certificate ' + options.https.cert)); + logger.info(pc.red('Error: Could not find certificate ' + options.https.cert)); process.exit(1); } try { fs.lstatSync(options.https.key); } catch (err) { - logger.info(chalk.red('Error: Could not find private key ' + options.https.key)); + logger.info(pc.red('Error: Could not find private key ' + options.https.key)); process.exit(1); } } @@ -335,51 +335,51 @@ function listen(port) { path = baseDir ? '/' + baseDir.replace(/^\//, '') : ''; logger.info([ - chalk.yellow('Starting up http-server, serving '), - chalk.cyan(server.root), - tls ? (chalk.yellow(' through') + chalk.cyan(' https')) : '' + pc.yellow('Starting up http-server, serving '), + pc.cyan(server.root), + tls ? (pc.yellow(' through') + pc.cyan(' https')) : '' ].join('')); - logger.info([chalk.yellow('\nhttp-server version: '), chalk.cyan(require('../package.json').version)].join('')); + logger.info([pc.yellow('\nhttp-server version: '), pc.cyan(require('../package.json').version)].join('')); logger.info([ - chalk.yellow('\nhttp-server settings: '), - ([chalk.yellow('COOP: '), argv.coop ? chalk.cyan(argv.coop) : chalk.red('disabled')].join('')), - ([chalk.yellow('CORS: '), argv.cors ? chalk.cyan(argv.cors) : chalk.red('disabled')].join('')), - ([chalk.yellow('Private Network Access: '), argv['private-network-access'] ? chalk.cyan(argv['private-network-access']) : chalk.red('disabled')].join('')), - ([chalk.yellow('Cache: '), argv.c ? (argv.c === '-1' ? chalk.red('disabled') : chalk.cyan(argv.c + ' seconds')) : chalk.cyan('3600 seconds')].join('')), - ([chalk.yellow('Connection Timeout: '), Math.max(0, argv.t) === 0 ? chalk.red('disabled') : + pc.yellow('\nhttp-server settings: '), + ([pc.yellow('COOP: '), argv.coop ? pc.cyan(argv.coop) : pc.red('disabled')].join('')), + ([pc.yellow('CORS: '), argv.cors ? pc.cyan(argv.cors) : pc.red('disabled')].join('')), + ([pc.yellow('Private Network Access: '), argv['private-network-access'] ? pc.cyan(argv['private-network-access']) : pc.red('disabled')].join('')), + ([pc.yellow('Cache: '), argv.c ? (argv.c === '-1' ? pc.red('disabled') : pc.cyan(argv.c + ' seconds')) : pc.cyan('3600 seconds')].join('')), + ([pc.yellow('Connection Timeout: '), Math.max(0, argv.t) === 0 ? pc.red('disabled') : ((!isNaN(argv.t) && !isNaN(parseFloat(argv.t))) ? - chalk.cyan(Number(argv.t) + ' seconds') : chalk.cyan('120 seconds'))].join('')), - ([chalk.yellow('Directory Listings: '), argv.d ? chalk.red('not visible') : chalk.cyan('visible')].join('')), - ([chalk.yellow('AutoIndex: '), argv.i ? chalk.red('not visible') : chalk.cyan('visible')].join('')), - ([chalk.yellow('Serve GZIP Files: '), argv.g || argv.gzip ? chalk.cyan('true') : chalk.red('false')].join('')), - ([chalk.yellow('Serve Brotli Files: '), argv.b || argv.brotli ? chalk.cyan('true') : chalk.red('false')].join('')), - ([chalk.yellow('Default File Extension: '), argv.e ? chalk.cyan(argv.e) : (argv.ext ? chalk.cyan(argv.ext) : chalk.red('none'))].join('')), - ([chalk.yellow('Base directory: '), baseDir ? chalk.cyan(baseDir) : chalk.cyan('/')].join('')) + pc.cyan(Number(argv.t) + ' seconds') : pc.cyan('120 seconds'))].join('')), + ([pc.yellow('Directory Listings: '), argv.d ? pc.red('not visible') : pc.cyan('visible')].join('')), + ([pc.yellow('AutoIndex: '), argv.i ? pc.red('not visible') : pc.cyan('visible')].join('')), + ([pc.yellow('Serve GZIP Files: '), argv.g || argv.gzip ? pc.cyan('true') : pc.red('false')].join('')), + ([pc.yellow('Serve Brotli Files: '), argv.b || argv.brotli ? pc.cyan('true') : pc.red('false')].join('')), + ([pc.yellow('Default File Extension: '), argv.e ? pc.cyan(argv.e) : (argv.ext ? pc.cyan(argv.ext) : pc.red('none'))].join('')), + ([pc.yellow('Base directory: '), baseDir ? pc.cyan(baseDir) : pc.cyan('/')].join('')) ].join('\n')); if (options.headers) { - logger.info(chalk.yellow('Additional Headers:')); + logger.info(pc.yellow('Additional Headers:')); for (let k in options.headers) { let v = options.headers[k]; - logger.info(chalk.yellow(`\t${k}:`) + chalk.cyan(` ${v}`)); + logger.info(pc.yellow(`\t${k}:`) + pc.cyan(` ${v}`)); } } - logger.info(chalk.yellow('\nAvailable on:')); + logger.info(pc.yellow('\nAvailable on:')); if (argv.a && (host !== '::' || host !== '0.0.0.0')) { - logger.info(` ${protocol}${host}:${chalk.green(port.toString())}${path}`); + logger.info(` ${protocol}${host}:${pc.green(port.toString())}${path}`); } else { Object.keys(ifaces).forEach(function (dev) { ifaces[dev].forEach(function (details) { if (details.family === 'IPv4' || details.family === 4) { - logger.info((' ' + protocol + details.address + ':' + chalk.green(port.toString()) + path)); + logger.info((' ' + protocol + details.address + ':' + pc.green(port.toString()) + path)); } if (details.family === 'IPv6' && !details.address.startsWith("fe80") ) { // Ignoring Ipv6-Link Local addresses - logger.info((' ' + protocol + details.address + ':' + chalk.green(port.toString()))); + logger.info((' ' + protocol + details.address + ':' + pc.green(port.toString()))); } }); }); @@ -396,7 +396,7 @@ function listen(port) { // Set up "CTRL-C" hook, before printing out "Hit CTRL-C to stop the server" function stopServer() { server.close(); - logger.info(chalk.red('http-server stopped.')); + logger.info(pc.red('http-server stopped.')); process.exit(); } diff --git a/package-lock.json b/package-lock.json index 19e759c5..c8a23f10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "license": "MIT", "dependencies": { "basic-auth": "^2.0.1", - "chalk": "^4.1.2", "corser": "^2.0.1", "he": "^1.2.0", "html-encoding-sniffer": "^3.0.0", @@ -19,6 +18,7 @@ "minimatch": "^10.1.1", "minimist": "^1.2.6", "opener": "^1.5.1", + "picocolors": "^1.1.1", "portfinder": "^1.0.28", "secure-compare": "3.0.1", "union": "~0.5.0", @@ -126,6 +126,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -259,7 +260,6 @@ "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "license": "MIT", - "dev": true, "engines": { "node": "20 || >=22" } @@ -269,7 +269,6 @@ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", "license": "MIT", - "dev": true, "dependencies": { "@isaacs/balanced-match": "^4.0.1" }, @@ -935,6 +934,7 @@ "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.0.0.tgz", "integrity": "sha512-COWMNbGBjf0qbsbKw+2911rrt+oXXOkIXpoMpIsz0/UN2rxqAAvDyrriObVfc4v+O2auabnWfdrxwNm3Vy01yw==", "dev": true, + "peer": true, "dependencies": { "@tapjs/processinfo": "^3.1.8", "@tapjs/stack": "4.0.0", @@ -2075,54 +2075,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -2438,6 +2390,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2448,7 +2401,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/combined-stream": { "version": "1.0.8", @@ -2898,6 +2852,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, + "peer": true, "dependencies": { "ajv": "^5.3.0", "babel-code-frame": "^6.22.0", @@ -6215,6 +6170,12 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -6460,6 +6421,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dev": true, + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -7285,6 +7247,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", "dev": true, + "peer": true, "dependencies": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -7823,6 +7786,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7835,8 +7799,7 @@ "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/union": { "version": "0.5.0", @@ -8326,6 +8289,7 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true, + "peer": true, "bin": { "yaml": "bin.mjs" }, @@ -8513,7 +8477,8 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "dev": true, + "peer": true }, "acorn-jsx": { "version": "5.3.2", @@ -8599,14 +8564,12 @@ "@isaacs/balanced-match": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==" }, "@isaacs/brace-expansion": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, "requires": { "@isaacs/balanced-match": "^4.0.1" } @@ -9078,6 +9041,7 @@ "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.0.0.tgz", "integrity": "sha512-COWMNbGBjf0qbsbKw+2911rrt+oXXOkIXpoMpIsz0/UN2rxqAAvDyrriObVfc4v+O2auabnWfdrxwNm3Vy01yw==", "dev": true, + "peer": true, "requires": { "@tapjs/processinfo": "^3.1.8", "@tapjs/stack": "4.0.0", @@ -9902,38 +9866,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -10150,6 +10082,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -10157,7 +10090,8 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "combined-stream": { "version": "1.0.8", @@ -10506,6 +10440,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, + "peer": true, "requires": { "ajv": "^5.3.0", "babel-code-frame": "^6.22.0", @@ -12991,6 +12926,11 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -13171,6 +13111,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dev": true, + "peer": true, "requires": { "loose-envify": "^1.1.0" } @@ -13799,6 +13740,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", "dev": true, + "peer": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -14213,14 +14155,14 @@ "version": "5.5.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true + "dev": true, + "peer": true }, "undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "peer": true + "dev": true }, "union": { "version": "0.5.0", @@ -14596,7 +14538,8 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", - "dev": true + "dev": true, + "peer": true }, "yaml-types": { "version": "0.4.0", diff --git a/package.json b/package.json index 9fc754b0..80574ec6 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ ], "dependencies": { "basic-auth": "^2.0.1", - "chalk": "^4.1.2", + "picocolors": "^1.1.1", "corser": "^2.0.1", "he": "^1.2.0", "html-encoding-sniffer": "^3.0.0",