@mks2508/better-logger 5.0.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Logger.d.ts +976 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/ScopedLogger.d.ts +74 -0
- package/dist/ScopedLogger.d.ts.map +1 -0
- package/dist/chunks/Logger-CKqzXDh3.js +2 -0
- package/dist/chunks/Logger-CKqzXDh3.js.map +1 -0
- package/dist/chunks/Logger-D_vuKP4l.js +4511 -0
- package/dist/chunks/Logger-D_vuKP4l.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
- package/dist/chunks/cli-module-B-njrTWb.js +2 -0
- package/dist/chunks/cli-module-B-njrTWb.js.map +1 -0
- package/dist/chunks/cli-module-Cx7qotPY.js +390 -0
- package/dist/chunks/cli-module-Cx7qotPY.js.map +1 -0
- package/dist/chunks/color-converter-CCSQRztd.js +2 -0
- package/dist/chunks/color-converter-CCSQRztd.js.map +1 -0
- package/dist/chunks/color-converter-_Xdmsy7E.js +462 -0
- package/dist/chunks/color-converter-_Xdmsy7E.js.map +1 -0
- package/dist/chunks/environment-C1xxvc8l.js +1127 -0
- package/dist/chunks/environment-C1xxvc8l.js.map +1 -0
- package/dist/chunks/environment-Cprkw3g9.js +4 -0
- package/dist/chunks/environment-Cprkw3g9.js.map +1 -0
- package/dist/chunks/formatting-DMJxYq9o.js +380 -0
- package/dist/chunks/formatting-DMJxYq9o.js.map +1 -0
- package/dist/chunks/formatting-DpKxCsXq.js +2 -0
- package/dist/chunks/formatting-DpKxCsXq.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +100 -0
- package/dist/cli/CommandProcessor.d.ts.map +1 -0
- package/dist/cli/commands/ConfigCommand.d.ts +14 -0
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/dist/cli/commands/ExportCommand.d.ts +48 -0
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
- package/dist/cli/commands/HistoryCommand.d.ts +47 -0
- package/dist/cli/commands/HistoryCommand.d.ts.map +1 -0
- package/dist/cli/commands/StatusCommand.d.ts +30 -0
- package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
- package/dist/cli/commands/ThemeCommand.d.ts +30 -0
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
- package/dist/cli/help.d.ts +12 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/{src/cli-module.ts → dist/cli-module.d.ts} +2 -8
- package/dist/cli-module.d.ts.map +1 -0
- package/dist/cli-primitives/box.d.ts +11 -0
- package/dist/cli-primitives/box.d.ts.map +1 -0
- package/dist/cli-primitives/cli-table.d.ts +11 -0
- package/dist/cli-primitives/cli-table.d.ts.map +1 -0
- package/dist/cli-primitives/divider.d.ts +11 -0
- package/dist/cli-primitives/divider.d.ts.map +1 -0
- package/dist/cli-primitives/header.d.ts +12 -0
- package/dist/cli-primitives/header.d.ts.map +1 -0
- package/{src/cli-primitives/index.ts → dist/cli-primitives/index.d.ts} +1 -1
- package/dist/cli-primitives/index.d.ts.map +1 -0
- package/dist/cli-primitives/server-fallback.d.ts +25 -0
- package/dist/cli-primitives/server-fallback.d.ts.map +1 -0
- package/dist/cli-primitives/spinner.d.ts +47 -0
- package/dist/cli-primitives/spinner.d.ts.map +1 -0
- package/dist/cli-primitives/step.d.ts +11 -0
- package/dist/cli-primitives/step.d.ts.map +1 -0
- package/dist/cli.cjs +2 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants.d.ts +235 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.ts +127 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +291 -0
- package/dist/core.js.map +1 -0
- package/dist/example.d.ts +18 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/exports-module.d.ts +196 -0
- package/dist/exports-module.d.ts.map +1 -0
- package/dist/exports.cjs +2 -0
- package/dist/exports.cjs.map +1 -0
- package/dist/exports.js +238 -0
- package/dist/exports.js.map +1 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts +8 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
- package/dist/handlers/ExportLogHandler.d.ts +100 -0
- package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
- package/dist/handlers/FileLogHandler.d.ts +33 -0
- package/dist/handlers/FileLogHandler.d.ts.map +1 -0
- package/dist/handlers/RemoteLogHandler.d.ts +11 -0
- package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
- package/{src/handlers/index.ts → dist/handlers/index.d.ts} +2 -2
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/hooks/HookManager.d.ts +21 -0
- package/dist/hooks/HookManager.d.ts.map +1 -0
- package/{src/hooks/index.ts → dist/hooks/index.d.ts} +1 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +161 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +627 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/serializers/SerializerRegistry.d.ts +16 -0
- package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
- package/{src/serializers/index.ts → dist/serializers/index.d.ts} +1 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/styling/LogStyleBuilder.d.ts +146 -0
- package/dist/styling/LogStyleBuilder.d.ts.map +1 -0
- package/dist/styling/SemanticStyles.d.ts +178 -0
- package/dist/styling/SemanticStyles.d.ts.map +1 -0
- package/dist/styling/SmartPresets.d.ts +22 -0
- package/dist/styling/SmartPresets.d.ts.map +1 -0
- package/dist/styling/StyleBuilder.d.ts +140 -0
- package/dist/styling/StyleBuilder.d.ts.map +1 -0
- package/dist/styling/StyleCache.d.ts +42 -0
- package/dist/styling/StyleCache.d.ts.map +1 -0
- package/dist/styling/banners.d.ts +42 -0
- package/dist/styling/banners.d.ts.map +1 -0
- package/dist/styling/index.d.ts +10 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/themes.d.ts +7 -0
- package/dist/styling/themes.d.ts.map +1 -0
- package/dist/styling-module.d.ts +178 -0
- package/dist/styling-module.d.ts.map +1 -0
- package/dist/styling.cjs +2 -0
- package/dist/styling.cjs.map +1 -0
- package/dist/styling.js +146 -0
- package/dist/styling.js.map +1 -0
- package/dist/terminal/color-converter.d.ts +73 -0
- package/dist/terminal/color-converter.d.ts.map +1 -0
- package/dist/terminal/formatter.d.ts +20 -0
- package/dist/terminal/formatter.d.ts.map +1 -0
- package/dist/terminal/terminal-renderer.d.ts +77 -0
- package/dist/terminal/terminal-renderer.d.ts.map +1 -0
- package/dist/transports/ConsoleTransport.d.ts +9 -0
- package/dist/transports/ConsoleTransport.d.ts.map +1 -0
- package/dist/transports/FileTransport.d.ts +15 -0
- package/dist/transports/FileTransport.d.ts.map +1 -0
- package/dist/transports/HttpTransport.d.ts +16 -0
- package/dist/transports/HttpTransport.d.ts.map +1 -0
- package/dist/transports/TransportManager.d.ts +14 -0
- package/dist/transports/TransportManager.d.ts.map +1 -0
- package/{src/transports/index.ts → dist/transports/index.d.ts} +1 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/{src/types/core.ts → dist/types/core.d.ts} +25 -62
- package/dist/types/core.d.ts.map +1 -0
- package/{src/types/handlers.ts → dist/types/handlers.d.ts} +5 -15
- package/dist/types/handlers.d.ts.map +1 -0
- package/{src/types/hooks.ts → dist/types/hooks.d.ts} +3 -12
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/{src/types/serializers.ts → dist/types/serializers.d.ts} +1 -6
- package/dist/types/serializers.d.ts.map +1 -0
- package/{src/types/transports.ts → dist/types/transports.d.ts} +2 -7
- package/dist/types/transports.d.ts.map +1 -0
- package/dist/utils/adapter.d.ts +48 -0
- package/dist/utils/adapter.d.ts.map +1 -0
- package/dist/utils/ansi-colors.d.ts +156 -0
- package/dist/utils/ansi-colors.d.ts.map +1 -0
- package/dist/utils/environment-detector.d.ts +45 -0
- package/dist/utils/environment-detector.d.ts.map +1 -0
- package/dist/utils/environment.d.ts +47 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/formatting.d.ts +58 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/opentui-detection.d.ts +34 -0
- package/dist/utils/opentui-detection.d.ts.map +1 -0
- package/dist/utils/output.d.ts +46 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/stackTrace.d.ts +6 -0
- package/dist/utils/stackTrace.d.ts.map +1 -0
- package/dist/utils/timestamps.d.ts +20 -0
- package/dist/utils/timestamps.d.ts.map +1 -0
- package/{src/writers/BufferWriter.ts → dist/writers/BufferWriter.d.ts} +16 -77
- package/dist/writers/BufferWriter.d.ts.map +1 -0
- package/{src/writers/index.ts → dist/writers/index.d.ts} +1 -1
- package/dist/writers/index.d.ts.map +1 -0
- package/package.json +5 -1
- package/.claude/settings.local.json +0 -48
- package/.github/workflows/ci-quality.yml +0 -357
- package/.github/workflows/docs-demo.yml +0 -119
- package/.github/workflows/releases-core.yml +0 -512
- package/.github/workflows/releases-full.yml +0 -582
- package/.github/workflows-backup/ci.yml +0 -221
- package/.github/workflows-backup/nightly.yml +0 -196
- package/.github/workflows-backup/release-optimized.yml +0 -373
- package/.github/workflows-backup/release.yml +0 -269
- package/.release-notes-0.2.0.md +0 -129
- package/.yamllint +0 -28
- package/CHANGELOG.json +0 -1120
- package/CHANGELOG.md +0 -209
- package/CLAUDE.md +0 -217
- package/demo.html +0 -847
- package/docs/API.md +0 -918
- package/docs/CORE.md +0 -264
- package/docs/DEVELOPMENT.md +0 -731
- package/docs/EXPORTS.md +0 -467
- package/docs/PACKAGES.md +0 -244
- package/docs/STYLING.md +0 -405
- package/docs/_config.yml +0 -36
- package/docs/index.md +0 -179
- package/examples/README.md +0 -208
- package/examples/basic-logging.js +0 -75
- package/examples/data-export.js +0 -234
- package/examples/package.json +0 -16
- package/examples/performance-timing.js +0 -170
- package/examples/simplified-api.js +0 -124
- package/examples/styling-themes.js +0 -207
- package/index.html +0 -358
- package/packages/core/package.json +0 -57
- package/packages/exports/package.json +0 -41
- package/packages/nodejs-opentui/README.md +0 -232
- package/packages/nodejs-opentui/package.json +0 -72
- package/packages/nodejs-opentui/src/LogRenderer.ts +0 -171
- package/packages/nodejs-opentui/src/OpenTUILogHandler.ts +0 -178
- package/packages/nodejs-opentui/src/components/LogBadge.tsx +0 -131
- package/packages/nodejs-opentui/src/index.ts +0 -133
- package/packages/nodejs-opentui/src/types.ts +0 -158
- package/packages/nodejs-opentui/tsconfig.json +0 -20
- package/packages/styling/package.json +0 -41
- package/playground/demo-all.ts +0 -95
- package/playground/demo-box.ts +0 -85
- package/playground/demo-levels.ts +0 -56
- package/playground/demo-real-world.ts +0 -98
- package/playground/demo-spinner.ts +0 -77
- package/playground/demo-steps.ts +0 -72
- package/playground/demo-table.ts +0 -83
- package/project-utils/README.md +0 -172
- package/project-utils/auto-release-gemini.ts +0 -1193
- package/project-utils/auto-release-ui.ts +0 -1329
- package/project-utils/commit-generator.ts +0 -1385
- package/project-utils/commit-ui.ts +0 -264
- package/project-utils/git-utils.ts +0 -199
- package/project-utils/github-release-manager.ts +0 -466
- package/project-utils/project-config.ts +0 -260
- package/project-utils/prompt-templates.js +0 -345
- package/project-utils/prompt-templates.ts +0 -422
- package/project-utils/version-manager.ts +0 -1078
- package/src/Logger.ts +0 -1858
- package/src/ScopedLogger.ts +0 -256
- package/src/cli/CommandProcessor.ts +0 -248
- package/src/cli/commands/ConfigCommand.ts +0 -93
- package/src/cli/commands/ExportCommand.ts +0 -276
- package/src/cli/commands/HistoryCommand.ts +0 -117
- package/src/cli/commands/StatusCommand.ts +0 -112
- package/src/cli/commands/ThemeCommand.ts +0 -88
- package/src/cli/help.ts +0 -127
- package/src/cli/index.ts +0 -71
- package/src/cli-primitives/box.ts +0 -86
- package/src/cli-primitives/cli-table.ts +0 -62
- package/src/cli-primitives/divider.ts +0 -17
- package/src/cli-primitives/header.ts +0 -18
- package/src/cli-primitives/server-fallback.ts +0 -54
- package/src/cli-primitives/spinner.ts +0 -133
- package/src/cli-primitives/step.ts +0 -22
- package/src/constants.ts +0 -313
- package/src/core.ts +0 -397
- package/src/example.ts +0 -210
- package/src/exports-module.ts +0 -311
- package/src/handlers/AnalyticsLogHandler.ts +0 -22
- package/src/handlers/ExportLogHandler.ts +0 -610
- package/src/handlers/FileLogHandler.ts +0 -169
- package/src/handlers/RemoteLogHandler.ts +0 -42
- package/src/hooks/HookManager.ts +0 -177
- package/src/index.ts +0 -395
- package/src/main.ts +0 -196
- package/src/serializers/SerializerRegistry.ts +0 -173
- package/src/style.css +0 -96
- package/src/styling/LogStyleBuilder.ts +0 -355
- package/src/styling/SemanticStyles.ts +0 -380
- package/src/styling/SmartPresets.ts +0 -288
- package/src/styling/StyleBuilder.ts +0 -319
- package/src/styling/StyleCache.ts +0 -131
- package/src/styling/banners.ts +0 -168
- package/src/styling/index.ts +0 -27
- package/src/styling/themes.ts +0 -235
- package/src/styling-module.ts +0 -244
- package/src/terminal/color-converter.ts +0 -315
- package/src/terminal/formatter.ts +0 -242
- package/src/terminal/terminal-renderer.ts +0 -342
- package/src/transports/ConsoleTransport.ts +0 -28
- package/src/transports/FileTransport.ts +0 -53
- package/src/transports/HttpTransport.ts +0 -56
- package/src/transports/TransportManager.ts +0 -130
- package/src/types/index.ts +0 -83
- package/src/typescript.svg +0 -1
- package/src/utils/adapter.ts +0 -291
- package/src/utils/ansi-colors.ts +0 -333
- package/src/utils/environment-detector.ts +0 -170
- package/src/utils/environment.ts +0 -94
- package/src/utils/formatting.ts +0 -332
- package/src/utils/index.ts +0 -33
- package/src/utils/opentui-detection.ts +0 -138
- package/src/utils/output.ts +0 -227
- package/src/utils/stackTrace.ts +0 -144
- package/src/utils/timestamps.ts +0 -80
- package/src/vite-env.d.ts +0 -1
- package/test-core-browser.html +0 -237
- package/test-core-node.js +0 -63
- package/tests/test-conflict-resolution.ts +0 -391
- package/tests/validate-workflows.sh +0 -131
- package/tests/yaml-autofix.sh +0 -146
- package/tsconfig.json +0 -50
- package/vite.config.ts +0 -256
- /package/{public → dist}/vite.svg +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";function getEnvironment(){return"undefined"!=typeof globalThis&&globalThis.Deno?"deno":"undefined"==typeof window&&"undefined"!=typeof self&&"function"==typeof self.importScripts?"webworker":"undefined"!=typeof process&&process.versions&&process.versions.node?isRunningInTerminal()?"terminal":"server":"undefined"!=typeof window&&"undefined"!=typeof document?"browser":"unknown"}function isRunningInTerminal(){if("undefined"==typeof process)return!1;const e=process.stdout&&process.stdout.isTTY,r=process.env&&(process.env.TERM||process.env.TERM_PROGRAM||process.env.SSH_TTY||process.env.TERM_SESSION_ID),n=r&&["vscode","hyper","iterm","terminal","alacritty","kitty","gnome-terminal","konsole","xterm","tmux","screen"].some(e=>process.env.TERM_PROGRAM?.toLowerCase().includes(e)||process.env.TERM?.toLowerCase().includes(e));return Boolean(e||r||n)}function supportsANSI(){const e=getEnvironment();return"browser"!==e&&("terminal"===e||"server"===e&&function(){if("undefined"==typeof process)return!1;const e=process.env&&(process.env.COLORTERM||process.env.FORCE_COLOR||process.env.TERM&&"dumb"!==process.env.TERM||process.env.TERM_PROGRAM);return Boolean(e)}())}function getColorCapability(){if("browser"===getEnvironment())return"full";if(!supportsANSI())return"none";if("undefined"!=typeof process&&process.env){const e="truecolor"===process.env.COLORTERM||"24bit"===process.env.COLORTERM,r=process.env.TERM&&process.env.TERM.includes("256");if(e||r)return"full"}return"basic"}function getTerminalWidth(){return"undefined"!=typeof process&&process.stdout?.columns?process.stdout.columns:80}function getTerminalHeight(){return"undefined"!=typeof process&&process.stdout?.rows?process.stdout.rows:24}const e={black:{fg:"30",bg:"40",bright:{fg:"90",bg:"100"}},red:{fg:"31",bg:"41",bright:{fg:"91",bg:"101"}},green:{fg:"32",bg:"42",bright:{fg:"92",bg:"102"}},yellow:{fg:"33",bg:"43",bright:{fg:"93",bg:"103"}},blue:{fg:"34",bg:"44",bright:{fg:"94",bg:"104"}},magenta:{fg:"35",bg:"45",bright:{fg:"95",bg:"105"}},cyan:{fg:"36",bg:"46",bright:{fg:"96",bg:"106"}},white:{fg:"37",bg:"47",bright:{fg:"97",bg:"107"}},gray:{fg:"90",bg:"100",bright:{fg:"37",bg:"47"}},grey:{fg:"90",bg:"100",bright:{fg:"37",bg:"47"}}},r={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function hexToRgb(e){const r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return r&&r[1]&&r[2]&&r[3]?{r:parseInt(r[1],16),g:parseInt(r[2],16),b:parseInt(r[3],16)}:{r:255,g:255,b:255}}function rgbToHex(e,r,n){return"#"+[e,r,n].map(e=>e.toString(16).padStart(2,"0")).join("")}function colorToHex(e){if(e.startsWith("#"))return e;const n=r[e.toLowerCase()];if(n)return n;const o=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);return o&&o[1]&&o[2]&&o[3]?rgbToHex(parseInt(o[1]),parseInt(o[2]),parseInt(o[3])):"#ffffff"}function getANSIForeground(r,n){if("none"===n)return"";const o=r.toLowerCase();if("basic"===n&&e[o])return`[${e[o].fg}m`;if("basic"===n){const n=findNearestBasicColor(colorToHex(r)),o=e[n];return o?`[${o.fg}m`:"[37m"}const t=colorToHex(r),{r:f,g:a,b:i}=hexToRgb(t);return`[38;2;${f};${a};${i}m`}function getANSIBackground(r,n){if("none"===n)return"";const o=r.toLowerCase();if("basic"===n&&e[o])return`[${e[o].bg}m`;if("basic"===n){const n=findNearestBasicColor(colorToHex(r)),o=e[n];return o?`[${o.bg}m`:"[47m"}const t=colorToHex(r),{r:f,g:a,b:i}=hexToRgb(t);return`[48;2;${f};${a};${i}m`}function findNearestBasicColor(e){const{r:r,g:n,b:o}=hexToRgb(e),t={black:{r:0,g:0,b:0},red:{r:205,g:0,b:0},green:{r:0,g:205,b:0},yellow:{r:205,g:205,b:0},blue:{r:0,g:0,b:238},magenta:{r:205,g:0,b:205},cyan:{r:0,g:205,b:205},white:{r:229,g:229,b:229}};let f="white",a=1/0;for(const[i,s]of Object.entries(t)){const e=Math.sqrt(Math.pow(r-s.r,2)+Math.pow(n-s.g,2)+Math.pow(o-s.b,2));e<a&&(a=e,f=i)}return f}exports.ANSI={reset:"[0m",bold:"[1m",dim:"[2m",italic:"[3m",underline:"[4m",blink:"[5m",inverse:"[7m",hidden:"[8m",strikethrough:"[9m",fg:{black:"[30m",red:"[31m",green:"[32m",yellow:"[33m",blue:"[34m",magenta:"[35m",cyan:"[36m",white:"[37m",gray:"[90m",brightRed:"[91m",brightGreen:"[92m",brightYellow:"[93m",brightBlue:"[94m",brightMagenta:"[95m",brightCyan:"[96m",brightWhite:"[97m"},bg:{black:"[40m",red:"[41m",green:"[42m",yellow:"[43m",blue:"[44m",magenta:"[45m",cyan:"[46m",white:"[47m",gray:"[100m",brightRed:"[101m",brightGreen:"[102m",brightYellow:"[103m",brightBlue:"[104m",brightMagenta:"[105m",brightCyan:"[106m",brightWhite:"[107m"},rgb:(e,r,n)=>`[38;2;${e};${r};${n}m`,bgRgb:(e,r,n)=>`[48;2;${e};${r};${n}m`,color256:e=>`[38;5;${e}m`,bgColor256:e=>`[48;5;${e}m`},exports.colorToHex=colorToHex,exports.cssColorToANSI=function(e,n,o=!1){if("none"===n)return"";let t;return t=e.includes("gradient")?function(e){const n=function(e){const n=e.match(/#[a-fA-F0-9]{6}/g)||[],o=e.match(/rgba?\([^)]+\)/g)||[],t=e.match(/,\s*([a-z]+)(?:\s|,|\))/gi)||[],f=[...n,...o.map(colorToHex),...t.map(e=>{const n=e.replace(/[,\s)]/g,"").toLowerCase();return r[n]||null}).filter(e=>null!==e)];return f.length>0?f:["#ffffff"]}(e);if(0===n.length)return"#ffffff";if(1===n.length)return n[0]??"#ffffff";const o=n.map(e=>hexToRgb(colorToHex(e)));return rgbToHex(Math.round(o.reduce((e,r)=>e+r.r,0)/o.length),Math.round(o.reduce((e,r)=>e+r.g,0)/o.length),Math.round(o.reduce((e,r)=>e+r.b,0)/o.length))}(e):colorToHex(e),o?getANSIBackground(t,n):getANSIForeground(t,n)},exports.getANSI256Background=function(e){return`[48;5;${e}m`},exports.getANSI256Foreground=function(e){return`[38;5;${e}m`},exports.getANSIBackground=getANSIBackground,exports.getANSIForeground=getANSIForeground,exports.getColorCapability=getColorCapability,exports.getEnvironment=getEnvironment,exports.getEnvironmentInfo=function(){return{environment:getEnvironment(),supportsANSI:supportsANSI(),colorCapability:getColorCapability(),isTTY:"undefined"!=typeof process&&Boolean(process.stdout?.isTTY),platform:"undefined"!=typeof process?process.platform:"unknown",nodeVersion:"undefined"!=typeof process?process.versions?.node:null,term:"undefined"!=typeof process?process.env?.TERM:null,colorTerm:"undefined"!=typeof process?process.env?.COLORTERM:null,terminalWidth:getTerminalWidth(),terminalHeight:getTerminalHeight()}},exports.getTerminalHeight=getTerminalHeight,exports.getTerminalWidth=getTerminalWidth,exports.hexTo256=function(e){const{r:r,g:n,b:o}=hexToRgb(e);return r===n&&n===o?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},exports.hexToRgb=hexToRgb,exports.isRunningInTerminal=isRunningInTerminal,exports.rgbToHex=rgbToHex,exports.supportsANSI=supportsANSI;
|
|
2
|
+
//# sourceMappingURL=color-converter-CCSQRztd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-converter-CCSQRztd.js","sources":["../../src/utils/environment-detector.ts","../../src/terminal/color-converter.ts"],"sourcesContent":["/**\n * Environment Detector - Robust environment detection for logger\n * Detects browser, terminal, server, and other runtime environments\n */\n\nexport type Environment = 'browser' | 'terminal' | 'server' | 'webworker' | 'deno' | 'unknown';\n\n/**\n * Main environment detection function\n */\nexport function getEnvironment(): Environment {\n // Check for Deno first\n if (typeof globalThis !== 'undefined' && (globalThis as any).Deno) {\n return 'deno';\n }\n\n // Check for WebWorker\n if (typeof window === 'undefined' && typeof self !== 'undefined' && typeof (self as any).importScripts === 'function') {\n return 'webworker';\n }\n\n // Check for Node.js (server environment)\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // Determine if it's running in a terminal or as a server\n if (isRunningInTerminal()) {\n return 'terminal';\n }\n return 'server';\n }\n\n // Check for browser\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'browser';\n }\n\n return 'unknown';\n}\n\n/**\n * Check if running in an interactive terminal\n */\nexport function isRunningInTerminal(): boolean {\n // Check for common terminal indicators\n if (typeof process === 'undefined') return false;\n\n const isTTY = process.stdout && process.stdout.isTTY;\n const hasTerminalEnv = process.env && (\n process.env.TERM ||\n process.env.TERM_PROGRAM ||\n process.env.SSH_TTY ||\n process.env.TERM_SESSION_ID\n );\n\n // Check if we're running in common terminal programs\n const terminalPrograms = [\n 'vscode',\n 'hyper',\n 'iterm',\n 'terminal',\n 'alacritty',\n 'kitty',\n 'gnome-terminal',\n 'konsole',\n 'xterm',\n 'tmux',\n 'screen'\n ];\n\n const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(program =>\n process.env.TERM_PROGRAM?.toLowerCase().includes(program) ||\n process.env.TERM?.toLowerCase().includes(program)\n );\n\n return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);\n}\n\n/**\n * Check if environment supports ANSI colors\n */\nexport function supportsANSI(): boolean {\n const env = getEnvironment();\n\n if (env === 'browser') return false;\n if (env === 'terminal') return true;\n if (env === 'server') return checkServerANSISupport();\n\n return false;\n}\n\n/**\n * Check if server environment supports ANSI colors\n */\nfunction checkServerANSISupport(): boolean {\n if (typeof process === 'undefined') return false;\n\n // Check common environment variables that indicate ANSI support\n const supportsANSI = process.env && (\n process.env.COLORTERM ||\n process.env.FORCE_COLOR ||\n (process.env.TERM && process.env.TERM !== 'dumb') ||\n process.env.TERM_PROGRAM\n );\n\n return Boolean(supportsANSI);\n}\n\n/**\n * Get environment-specific color capability\n */\nexport function getColorCapability(): 'full' | 'basic' | 'none' {\n const env = getEnvironment();\n\n if (env === 'browser') {\n return 'full'; // CSS colors\n }\n\n if (!supportsANSI()) {\n return 'none';\n }\n\n // Check for 256-color or truecolor support\n if (typeof process !== 'undefined' && process.env) {\n const hasTrueColor = process.env.COLORTERM === 'truecolor' || process.env.COLORTERM === '24bit';\n const has256Colors = process.env.TERM && process.env.TERM.includes('256');\n\n if (hasTrueColor || has256Colors) {\n return 'full';\n }\n }\n\n return 'basic'; // Basic 16 colors\n}\n\n/**\n * Get terminal width in columns\n */\nexport function getTerminalWidth(): number {\n if (typeof process !== 'undefined' && process.stdout?.columns) {\n return process.stdout.columns;\n }\n return 80;\n}\n\n/**\n * Get terminal height in rows\n */\nexport function getTerminalHeight(): number {\n if (typeof process !== 'undefined' && process.stdout?.rows) {\n return process.stdout.rows;\n }\n return 24;\n}\n\n/**\n * Environment information for debugging\n */\nexport function getEnvironmentInfo() {\n return {\n environment: getEnvironment(),\n supportsANSI: supportsANSI(),\n colorCapability: getColorCapability(),\n isTTY: typeof process !== 'undefined' ? Boolean(process.stdout?.isTTY) : false,\n platform: typeof process !== 'undefined' ? process.platform : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.versions?.node : null,\n term: typeof process !== 'undefined' ? process.env?.TERM : null,\n colorTerm: typeof process !== 'undefined' ? process.env?.COLORTERM : null,\n terminalWidth: getTerminalWidth(),\n terminalHeight: getTerminalHeight()\n };\n}","/**\n * Color Converter - CSS colors to ANSI extended color codes\n * Supports 256-color and truecolor (24-bit) terminals\n */\n\nexport type ColorCapability = 'full' | 'basic' | 'none';\n\nexport interface RGB {\n r: number;\n g: number;\n b: number;\n}\n\nconst ANSI_16_COLORS: Record<string, { fg: string; bg: string; bright: { fg: string; bg: string } }> = {\n black: { fg: '30', bg: '40', bright: { fg: '90', bg: '100' } },\n red: { fg: '31', bg: '41', bright: { fg: '91', bg: '101' } },\n green: { fg: '32', bg: '42', bright: { fg: '92', bg: '102' } },\n yellow: { fg: '33', bg: '43', bright: { fg: '93', bg: '103' } },\n blue: { fg: '34', bg: '44', bright: { fg: '94', bg: '104' } },\n magenta: { fg: '35', bg: '45', bright: { fg: '95', bg: '105' } },\n cyan: { fg: '36', bg: '46', bright: { fg: '96', bg: '106' } },\n white: { fg: '37', bg: '47', bright: { fg: '97', bg: '107' } },\n gray: { fg: '90', bg: '100', bright: { fg: '37', bg: '47' } },\n grey: { fg: '90', bg: '100', bright: { fg: '37', bg: '47' } },\n};\n\nconst CSS_NAMED_COLORS: Record<string, string> = {\n aliceblue: '#f0f8ff', antiquewhite: '#faebd7', aqua: '#00ffff',\n aquamarine: '#7fffd4', azure: '#f0ffff', beige: '#f5f5dc',\n bisque: '#ffe4c4', black: '#000000', blanchedalmond: '#ffebcd',\n blue: '#0000ff', blueviolet: '#8a2be2', brown: '#a52a2a',\n burlywood: '#deb887', cadetblue: '#5f9ea0', chartreuse: '#7fff00',\n chocolate: '#d2691e', coral: '#ff7f50', cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc', crimson: '#dc143c', cyan: '#00ffff',\n darkblue: '#00008b', darkcyan: '#008b8b', darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9', darkgreen: '#006400', darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b', darkolivegreen: '#556b2f', darkorange: '#ff8c00',\n darkorchid: '#9932cc', darkred: '#8b0000', darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f', darkslateblue: '#483d8b', darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1', darkviolet: '#9400d3', deeppink: '#ff1493',\n deepskyblue: '#00bfff', dimgray: '#696969', dodgerblue: '#1e90ff',\n firebrick: '#b22222', floralwhite: '#fffaf0', forestgreen: '#228b22',\n fuchsia: '#ff00ff', gainsboro: '#dcdcdc', ghostwhite: '#f8f8ff',\n gold: '#ffd700', goldenrod: '#daa520', gray: '#808080',\n green: '#008000', greenyellow: '#adff2f', honeydew: '#f0fff0',\n hotpink: '#ff69b4', indianred: '#cd5c5c', indigo: '#4b0082',\n ivory: '#fffff0', khaki: '#f0e68c', lavender: '#e6e6fa',\n lavenderblush: '#fff0f5', lawngreen: '#7cfc00', lemonchiffon: '#fffacd',\n lightblue: '#add8e6', lightcoral: '#f08080', lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2', lightgray: '#d3d3d3', lightgreen: '#90ee90',\n lightpink: '#ffb6c1', lightsalmon: '#ffa07a', lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa', lightslategray: '#778899', lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0', lime: '#00ff00', limegreen: '#32cd32',\n linen: '#faf0e6', magenta: '#ff00ff', maroon: '#800000',\n mediumaquamarine: '#66cdaa', mediumblue: '#0000cd', mediumorchid: '#ba55d3',\n mediumpurple: '#9370db', mediumseagreen: '#3cb371', mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a', mediumturquoise: '#48d1cc', mediumvioletred: '#c71585',\n midnightblue: '#191970', mintcream: '#f5fffa', mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5', navajowhite: '#ffdead', navy: '#000080',\n oldlace: '#fdf5e6', olive: '#808000', olivedrab: '#6b8e23',\n orange: '#ffa500', orangered: '#ff4500', orchid: '#da70d6',\n palegoldenrod: '#eee8aa', palegreen: '#98fb98', paleturquoise: '#afeeee',\n palevioletred: '#db7093', papayawhip: '#ffefd5', peachpuff: '#ffdab9',\n peru: '#cd853f', pink: '#ffc0cb', plum: '#dda0dd',\n powderblue: '#b0e0e6', purple: '#800080', rebeccapurple: '#663399',\n red: '#ff0000', rosybrown: '#bc8f8f', royalblue: '#4169e1',\n saddlebrown: '#8b4513', salmon: '#fa8072', sandybrown: '#f4a460',\n seagreen: '#2e8b57', seashell: '#fff5ee', sienna: '#a0522d',\n silver: '#c0c0c0', skyblue: '#87ceeb', slateblue: '#6a5acd',\n slategray: '#708090', snow: '#fffafa', springgreen: '#00ff7f',\n steelblue: '#4682b4', tan: '#d2b48c', teal: '#008080',\n thistle: '#d8bfd8', tomato: '#ff6347', turquoise: '#40e0d0',\n violet: '#ee82ee', wheat: '#f5deb3', white: '#ffffff',\n whitesmoke: '#f5f5f5', yellow: '#ffff00', yellowgreen: '#9acd32',\n};\n\nexport function hexToRgb(hex: string): RGB {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result || !result[1] || !result[2] || !result[3]) {\n return { r: 255, g: 255, b: 255 };\n }\n return {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b].map(x => x.toString(16).padStart(2, '0')).join('');\n}\n\nexport function hexTo256(hex: string): number {\n const { r, g, b } = hexToRgb(hex);\n\n if (r === g && g === b) {\n if (r < 8) return 16;\n if (r > 248) return 231;\n return Math.round(((r - 8) / 247) * 24) + 232;\n }\n\n const ri = Math.round(r / 255 * 5);\n const gi = Math.round(g / 255 * 5);\n const bi = Math.round(b / 255 * 5);\n\n return 16 + (36 * ri) + (6 * gi) + bi;\n}\n\nexport function colorToHex(color: string): string {\n if (color.startsWith('#')) {\n return color;\n }\n\n const named = CSS_NAMED_COLORS[color.toLowerCase()];\n if (named) {\n return named;\n }\n\n const rgbMatch = color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (rgbMatch && rgbMatch[1] && rgbMatch[2] && rgbMatch[3]) {\n return rgbToHex(\n parseInt(rgbMatch[1]),\n parseInt(rgbMatch[2]),\n parseInt(rgbMatch[3])\n );\n }\n\n return '#ffffff';\n}\n\nexport function getANSIForeground(color: string, capability: ColorCapability): string {\n if (capability === 'none') return '';\n\n const lowerColor = color.toLowerCase();\n\n if (capability === 'basic' && ANSI_16_COLORS[lowerColor]) {\n return `\\x1b[${ANSI_16_COLORS[lowerColor].fg}m`;\n }\n\n if (capability === 'basic') {\n const hex = colorToHex(color);\n const nearestBasic = findNearestBasicColor(hex);\n const basicColor = ANSI_16_COLORS[nearestBasic];\n return basicColor ? `\\x1b[${basicColor.fg}m` : '\\x1b[37m';\n }\n\n const hex = colorToHex(color);\n const { r, g, b } = hexToRgb(hex);\n return `\\x1b[38;2;${r};${g};${b}m`;\n}\n\nexport function getANSIBackground(color: string, capability: ColorCapability): string {\n if (capability === 'none') return '';\n\n const lowerColor = color.toLowerCase();\n\n if (capability === 'basic' && ANSI_16_COLORS[lowerColor]) {\n return `\\x1b[${ANSI_16_COLORS[lowerColor].bg}m`;\n }\n\n if (capability === 'basic') {\n const hex = colorToHex(color);\n const nearestBasic = findNearestBasicColor(hex);\n const basicColor = ANSI_16_COLORS[nearestBasic];\n return basicColor ? `\\x1b[${basicColor.bg}m` : '\\x1b[47m';\n }\n\n const hex = colorToHex(color);\n const { r, g, b } = hexToRgb(hex);\n return `\\x1b[48;2;${r};${g};${b}m`;\n}\n\nexport function getANSI256Foreground(colorIndex: number): string {\n return `\\x1b[38;5;${colorIndex}m`;\n}\n\nexport function getANSI256Background(colorIndex: number): string {\n return `\\x1b[48;5;${colorIndex}m`;\n}\n\nfunction findNearestBasicColor(hex: string): string {\n const { r, g, b } = hexToRgb(hex);\n const basicColors: Record<string, RGB> = {\n black: { r: 0, g: 0, b: 0 },\n red: { r: 205, g: 0, b: 0 },\n green: { r: 0, g: 205, b: 0 },\n yellow: { r: 205, g: 205, b: 0 },\n blue: { r: 0, g: 0, b: 238 },\n magenta: { r: 205, g: 0, b: 205 },\n cyan: { r: 0, g: 205, b: 205 },\n white: { r: 229, g: 229, b: 229 },\n };\n\n let nearest = 'white';\n let minDistance = Infinity;\n\n for (const [name, rgb] of Object.entries(basicColors)) {\n const distance = Math.sqrt(\n Math.pow(r - rgb.r, 2) +\n Math.pow(g - rgb.g, 2) +\n Math.pow(b - rgb.b, 2)\n );\n if (distance < minDistance) {\n minDistance = distance;\n nearest = name;\n }\n }\n\n return nearest;\n}\n\nexport function extractGradientColors(gradient: string): string[] {\n const hexMatches = gradient.match(/#[a-fA-F0-9]{6}/g) || [];\n const rgbMatches = gradient.match(/rgba?\\([^)]+\\)/g) || [];\n const namedMatches = gradient.match(/,\\s*([a-z]+)(?:\\s|,|\\))/gi) || [];\n\n const colors: string[] = [\n ...hexMatches,\n ...rgbMatches.map(colorToHex),\n ...namedMatches.map(m => {\n const name = m.replace(/[,\\s)]/g, '').toLowerCase();\n return CSS_NAMED_COLORS[name] || null;\n }).filter((c): c is string => c !== null)\n ];\n\n return colors.length > 0 ? colors : ['#ffffff'];\n}\n\nexport function gradientToSingleColor(gradient: string): string {\n const colors = extractGradientColors(gradient);\n if (colors.length === 0) return '#ffffff';\n if (colors.length === 1) return colors[0] ?? '#ffffff';\n\n const rgbs = colors.map(c => hexToRgb(colorToHex(c)));\n const avgR = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.r, 0) / rgbs.length);\n const avgG = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.g, 0) / rgbs.length);\n const avgB = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.b, 0) / rgbs.length);\n\n return rgbToHex(avgR, avgG, avgB);\n}\n\nexport function cssColorToANSI(\n cssColor: string,\n capability: ColorCapability,\n isBackground: boolean = false\n): string {\n if (capability === 'none') return '';\n\n let resolvedColor: string;\n\n if (cssColor.includes('gradient')) {\n resolvedColor = gradientToSingleColor(cssColor);\n } else {\n resolvedColor = colorToHex(cssColor);\n }\n\n return isBackground\n ? getANSIBackground(resolvedColor, capability)\n : getANSIForeground(resolvedColor, capability);\n}\n\nexport const ANSI = {\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n dim: '\\x1b[2m',\n italic: '\\x1b[3m',\n underline: '\\x1b[4m',\n blink: '\\x1b[5m',\n inverse: '\\x1b[7m',\n hidden: '\\x1b[8m',\n strikethrough: '\\x1b[9m',\n\n fg: {\n black: '\\x1b[30m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n gray: '\\x1b[90m',\n brightRed: '\\x1b[91m',\n brightGreen: '\\x1b[92m',\n brightYellow: '\\x1b[93m',\n brightBlue: '\\x1b[94m',\n brightMagenta: '\\x1b[95m',\n brightCyan: '\\x1b[96m',\n brightWhite: '\\x1b[97m',\n },\n\n bg: {\n black: '\\x1b[40m',\n red: '\\x1b[41m',\n green: '\\x1b[42m',\n yellow: '\\x1b[43m',\n blue: '\\x1b[44m',\n magenta: '\\x1b[45m',\n cyan: '\\x1b[46m',\n white: '\\x1b[47m',\n gray: '\\x1b[100m',\n brightRed: '\\x1b[101m',\n brightGreen: '\\x1b[102m',\n brightYellow: '\\x1b[103m',\n brightBlue: '\\x1b[104m',\n brightMagenta: '\\x1b[105m',\n brightCyan: '\\x1b[106m',\n brightWhite: '\\x1b[107m',\n },\n\n rgb: (r: number, g: number, b: number) => `\\x1b[38;2;${r};${g};${b}m`,\n bgRgb: (r: number, g: number, b: number) => `\\x1b[48;2;${r};${g};${b}m`,\n color256: (n: number) => `\\x1b[38;5;${n}m`,\n bgColor256: (n: number) => `\\x1b[48;5;${n}m`,\n};\n"],"names":["getEnvironment","globalThis","Deno","window","self","importScripts","process","versions","node","isRunningInTerminal","document","isTTY","stdout","hasTerminalEnv","env","TERM","TERM_PROGRAM","SSH_TTY","TERM_SESSION_ID","isTerminalProgram","some","program","toLowerCase","includes","Boolean","supportsANSI","COLORTERM","FORCE_COLOR","checkServerANSISupport","getColorCapability","hasTrueColor","has256Colors","getTerminalWidth","columns","getTerminalHeight","rows","ANSI_16_COLORS","black","fg","bg","bright","red","green","yellow","blue","magenta","cyan","white","gray","grey","CSS_NAMED_COLORS","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","hexToRgb","hex","result","exec","r","parseInt","g","b","rgbToHex","map","x","toString","padStart","join","colorToHex","color","startsWith","named","rgbMatch","match","getANSIForeground","capability","lowerColor","nearestBasic","findNearestBasicColor","basicColor","getANSIBackground","basicColors","nearest","minDistance","Infinity","name","rgb","Object","entries","distance","Math","sqrt","pow","reset","bold","dim","italic","underline","blink","inverse","hidden","strikethrough","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","bgRgb","color256","n","bgColor256","cssColor","isBackground","resolvedColor","gradient","colors","hexMatches","rgbMatches","namedMatches","m","replace","filter","c","length","extractGradientColors","rgbs","round","reduce","sum","gradientToSingleColor","colorIndex","environment","colorCapability","platform","nodeVersion","term","colorTerm","terminalWidth","terminalHeight"],"mappings":"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"}
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
function getEnvironment() {
|
|
2
|
+
if (typeof globalThis !== "undefined" && globalThis.Deno) {
|
|
3
|
+
return "deno";
|
|
4
|
+
}
|
|
5
|
+
if (typeof window === "undefined" && typeof self !== "undefined" && typeof self.importScripts === "function") {
|
|
6
|
+
return "webworker";
|
|
7
|
+
}
|
|
8
|
+
if (typeof process !== "undefined" && process.versions && process.versions.node) {
|
|
9
|
+
if (isRunningInTerminal()) {
|
|
10
|
+
return "terminal";
|
|
11
|
+
}
|
|
12
|
+
return "server";
|
|
13
|
+
}
|
|
14
|
+
if (typeof window !== "undefined" && typeof document !== "undefined") {
|
|
15
|
+
return "browser";
|
|
16
|
+
}
|
|
17
|
+
return "unknown";
|
|
18
|
+
}
|
|
19
|
+
function isRunningInTerminal() {
|
|
20
|
+
if (typeof process === "undefined") return false;
|
|
21
|
+
const isTTY = process.stdout && process.stdout.isTTY;
|
|
22
|
+
const hasTerminalEnv = process.env && (process.env.TERM || process.env.TERM_PROGRAM || process.env.SSH_TTY || process.env.TERM_SESSION_ID);
|
|
23
|
+
const terminalPrograms = [
|
|
24
|
+
"vscode",
|
|
25
|
+
"hyper",
|
|
26
|
+
"iterm",
|
|
27
|
+
"terminal",
|
|
28
|
+
"alacritty",
|
|
29
|
+
"kitty",
|
|
30
|
+
"gnome-terminal",
|
|
31
|
+
"konsole",
|
|
32
|
+
"xterm",
|
|
33
|
+
"tmux",
|
|
34
|
+
"screen"
|
|
35
|
+
];
|
|
36
|
+
const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(
|
|
37
|
+
(program) => process.env.TERM_PROGRAM?.toLowerCase().includes(program) || process.env.TERM?.toLowerCase().includes(program)
|
|
38
|
+
);
|
|
39
|
+
return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);
|
|
40
|
+
}
|
|
41
|
+
function supportsANSI() {
|
|
42
|
+
const env = getEnvironment();
|
|
43
|
+
if (env === "browser") return false;
|
|
44
|
+
if (env === "terminal") return true;
|
|
45
|
+
if (env === "server") return checkServerANSISupport();
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
function checkServerANSISupport() {
|
|
49
|
+
if (typeof process === "undefined") return false;
|
|
50
|
+
const supportsANSI2 = process.env && (process.env.COLORTERM || process.env.FORCE_COLOR || process.env.TERM && process.env.TERM !== "dumb" || process.env.TERM_PROGRAM);
|
|
51
|
+
return Boolean(supportsANSI2);
|
|
52
|
+
}
|
|
53
|
+
function getColorCapability() {
|
|
54
|
+
const env = getEnvironment();
|
|
55
|
+
if (env === "browser") {
|
|
56
|
+
return "full";
|
|
57
|
+
}
|
|
58
|
+
if (!supportsANSI()) {
|
|
59
|
+
return "none";
|
|
60
|
+
}
|
|
61
|
+
if (typeof process !== "undefined" && process.env) {
|
|
62
|
+
const hasTrueColor = process.env.COLORTERM === "truecolor" || process.env.COLORTERM === "24bit";
|
|
63
|
+
const has256Colors = process.env.TERM && process.env.TERM.includes("256");
|
|
64
|
+
if (hasTrueColor || has256Colors) {
|
|
65
|
+
return "full";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return "basic";
|
|
69
|
+
}
|
|
70
|
+
function getTerminalWidth() {
|
|
71
|
+
if (typeof process !== "undefined" && process.stdout?.columns) {
|
|
72
|
+
return process.stdout.columns;
|
|
73
|
+
}
|
|
74
|
+
return 80;
|
|
75
|
+
}
|
|
76
|
+
function getTerminalHeight() {
|
|
77
|
+
if (typeof process !== "undefined" && process.stdout?.rows) {
|
|
78
|
+
return process.stdout.rows;
|
|
79
|
+
}
|
|
80
|
+
return 24;
|
|
81
|
+
}
|
|
82
|
+
function getEnvironmentInfo() {
|
|
83
|
+
return {
|
|
84
|
+
environment: getEnvironment(),
|
|
85
|
+
supportsANSI: supportsANSI(),
|
|
86
|
+
colorCapability: getColorCapability(),
|
|
87
|
+
isTTY: typeof process !== "undefined" ? Boolean(process.stdout?.isTTY) : false,
|
|
88
|
+
platform: typeof process !== "undefined" ? process.platform : "unknown",
|
|
89
|
+
nodeVersion: typeof process !== "undefined" ? process.versions?.node : null,
|
|
90
|
+
term: typeof process !== "undefined" ? process.env?.TERM : null,
|
|
91
|
+
colorTerm: typeof process !== "undefined" ? process.env?.COLORTERM : null,
|
|
92
|
+
terminalWidth: getTerminalWidth(),
|
|
93
|
+
terminalHeight: getTerminalHeight()
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
const ANSI_16_COLORS = {
|
|
97
|
+
black: { fg: "30", bg: "40", bright: { fg: "90", bg: "100" } },
|
|
98
|
+
red: { fg: "31", bg: "41", bright: { fg: "91", bg: "101" } },
|
|
99
|
+
green: { fg: "32", bg: "42", bright: { fg: "92", bg: "102" } },
|
|
100
|
+
yellow: { fg: "33", bg: "43", bright: { fg: "93", bg: "103" } },
|
|
101
|
+
blue: { fg: "34", bg: "44", bright: { fg: "94", bg: "104" } },
|
|
102
|
+
magenta: { fg: "35", bg: "45", bright: { fg: "95", bg: "105" } },
|
|
103
|
+
cyan: { fg: "36", bg: "46", bright: { fg: "96", bg: "106" } },
|
|
104
|
+
white: { fg: "37", bg: "47", bright: { fg: "97", bg: "107" } },
|
|
105
|
+
gray: { fg: "90", bg: "100", bright: { fg: "37", bg: "47" } },
|
|
106
|
+
grey: { fg: "90", bg: "100", bright: { fg: "37", bg: "47" } }
|
|
107
|
+
};
|
|
108
|
+
const CSS_NAMED_COLORS = {
|
|
109
|
+
aliceblue: "#f0f8ff",
|
|
110
|
+
antiquewhite: "#faebd7",
|
|
111
|
+
aqua: "#00ffff",
|
|
112
|
+
aquamarine: "#7fffd4",
|
|
113
|
+
azure: "#f0ffff",
|
|
114
|
+
beige: "#f5f5dc",
|
|
115
|
+
bisque: "#ffe4c4",
|
|
116
|
+
black: "#000000",
|
|
117
|
+
blanchedalmond: "#ffebcd",
|
|
118
|
+
blue: "#0000ff",
|
|
119
|
+
blueviolet: "#8a2be2",
|
|
120
|
+
brown: "#a52a2a",
|
|
121
|
+
burlywood: "#deb887",
|
|
122
|
+
cadetblue: "#5f9ea0",
|
|
123
|
+
chartreuse: "#7fff00",
|
|
124
|
+
chocolate: "#d2691e",
|
|
125
|
+
coral: "#ff7f50",
|
|
126
|
+
cornflowerblue: "#6495ed",
|
|
127
|
+
cornsilk: "#fff8dc",
|
|
128
|
+
crimson: "#dc143c",
|
|
129
|
+
cyan: "#00ffff",
|
|
130
|
+
darkblue: "#00008b",
|
|
131
|
+
darkcyan: "#008b8b",
|
|
132
|
+
darkgoldenrod: "#b8860b",
|
|
133
|
+
darkgray: "#a9a9a9",
|
|
134
|
+
darkgreen: "#006400",
|
|
135
|
+
darkkhaki: "#bdb76b",
|
|
136
|
+
darkmagenta: "#8b008b",
|
|
137
|
+
darkolivegreen: "#556b2f",
|
|
138
|
+
darkorange: "#ff8c00",
|
|
139
|
+
darkorchid: "#9932cc",
|
|
140
|
+
darkred: "#8b0000",
|
|
141
|
+
darksalmon: "#e9967a",
|
|
142
|
+
darkseagreen: "#8fbc8f",
|
|
143
|
+
darkslateblue: "#483d8b",
|
|
144
|
+
darkslategray: "#2f4f4f",
|
|
145
|
+
darkturquoise: "#00ced1",
|
|
146
|
+
darkviolet: "#9400d3",
|
|
147
|
+
deeppink: "#ff1493",
|
|
148
|
+
deepskyblue: "#00bfff",
|
|
149
|
+
dimgray: "#696969",
|
|
150
|
+
dodgerblue: "#1e90ff",
|
|
151
|
+
firebrick: "#b22222",
|
|
152
|
+
floralwhite: "#fffaf0",
|
|
153
|
+
forestgreen: "#228b22",
|
|
154
|
+
fuchsia: "#ff00ff",
|
|
155
|
+
gainsboro: "#dcdcdc",
|
|
156
|
+
ghostwhite: "#f8f8ff",
|
|
157
|
+
gold: "#ffd700",
|
|
158
|
+
goldenrod: "#daa520",
|
|
159
|
+
gray: "#808080",
|
|
160
|
+
green: "#008000",
|
|
161
|
+
greenyellow: "#adff2f",
|
|
162
|
+
honeydew: "#f0fff0",
|
|
163
|
+
hotpink: "#ff69b4",
|
|
164
|
+
indianred: "#cd5c5c",
|
|
165
|
+
indigo: "#4b0082",
|
|
166
|
+
ivory: "#fffff0",
|
|
167
|
+
khaki: "#f0e68c",
|
|
168
|
+
lavender: "#e6e6fa",
|
|
169
|
+
lavenderblush: "#fff0f5",
|
|
170
|
+
lawngreen: "#7cfc00",
|
|
171
|
+
lemonchiffon: "#fffacd",
|
|
172
|
+
lightblue: "#add8e6",
|
|
173
|
+
lightcoral: "#f08080",
|
|
174
|
+
lightcyan: "#e0ffff",
|
|
175
|
+
lightgoldenrodyellow: "#fafad2",
|
|
176
|
+
lightgray: "#d3d3d3",
|
|
177
|
+
lightgreen: "#90ee90",
|
|
178
|
+
lightpink: "#ffb6c1",
|
|
179
|
+
lightsalmon: "#ffa07a",
|
|
180
|
+
lightseagreen: "#20b2aa",
|
|
181
|
+
lightskyblue: "#87cefa",
|
|
182
|
+
lightslategray: "#778899",
|
|
183
|
+
lightsteelblue: "#b0c4de",
|
|
184
|
+
lightyellow: "#ffffe0",
|
|
185
|
+
lime: "#00ff00",
|
|
186
|
+
limegreen: "#32cd32",
|
|
187
|
+
linen: "#faf0e6",
|
|
188
|
+
magenta: "#ff00ff",
|
|
189
|
+
maroon: "#800000",
|
|
190
|
+
mediumaquamarine: "#66cdaa",
|
|
191
|
+
mediumblue: "#0000cd",
|
|
192
|
+
mediumorchid: "#ba55d3",
|
|
193
|
+
mediumpurple: "#9370db",
|
|
194
|
+
mediumseagreen: "#3cb371",
|
|
195
|
+
mediumslateblue: "#7b68ee",
|
|
196
|
+
mediumspringgreen: "#00fa9a",
|
|
197
|
+
mediumturquoise: "#48d1cc",
|
|
198
|
+
mediumvioletred: "#c71585",
|
|
199
|
+
midnightblue: "#191970",
|
|
200
|
+
mintcream: "#f5fffa",
|
|
201
|
+
mistyrose: "#ffe4e1",
|
|
202
|
+
moccasin: "#ffe4b5",
|
|
203
|
+
navajowhite: "#ffdead",
|
|
204
|
+
navy: "#000080",
|
|
205
|
+
oldlace: "#fdf5e6",
|
|
206
|
+
olive: "#808000",
|
|
207
|
+
olivedrab: "#6b8e23",
|
|
208
|
+
orange: "#ffa500",
|
|
209
|
+
orangered: "#ff4500",
|
|
210
|
+
orchid: "#da70d6",
|
|
211
|
+
palegoldenrod: "#eee8aa",
|
|
212
|
+
palegreen: "#98fb98",
|
|
213
|
+
paleturquoise: "#afeeee",
|
|
214
|
+
palevioletred: "#db7093",
|
|
215
|
+
papayawhip: "#ffefd5",
|
|
216
|
+
peachpuff: "#ffdab9",
|
|
217
|
+
peru: "#cd853f",
|
|
218
|
+
pink: "#ffc0cb",
|
|
219
|
+
plum: "#dda0dd",
|
|
220
|
+
powderblue: "#b0e0e6",
|
|
221
|
+
purple: "#800080",
|
|
222
|
+
rebeccapurple: "#663399",
|
|
223
|
+
red: "#ff0000",
|
|
224
|
+
rosybrown: "#bc8f8f",
|
|
225
|
+
royalblue: "#4169e1",
|
|
226
|
+
saddlebrown: "#8b4513",
|
|
227
|
+
salmon: "#fa8072",
|
|
228
|
+
sandybrown: "#f4a460",
|
|
229
|
+
seagreen: "#2e8b57",
|
|
230
|
+
seashell: "#fff5ee",
|
|
231
|
+
sienna: "#a0522d",
|
|
232
|
+
silver: "#c0c0c0",
|
|
233
|
+
skyblue: "#87ceeb",
|
|
234
|
+
slateblue: "#6a5acd",
|
|
235
|
+
slategray: "#708090",
|
|
236
|
+
snow: "#fffafa",
|
|
237
|
+
springgreen: "#00ff7f",
|
|
238
|
+
steelblue: "#4682b4",
|
|
239
|
+
tan: "#d2b48c",
|
|
240
|
+
teal: "#008080",
|
|
241
|
+
thistle: "#d8bfd8",
|
|
242
|
+
tomato: "#ff6347",
|
|
243
|
+
turquoise: "#40e0d0",
|
|
244
|
+
violet: "#ee82ee",
|
|
245
|
+
wheat: "#f5deb3",
|
|
246
|
+
white: "#ffffff",
|
|
247
|
+
whitesmoke: "#f5f5f5",
|
|
248
|
+
yellow: "#ffff00",
|
|
249
|
+
yellowgreen: "#9acd32"
|
|
250
|
+
};
|
|
251
|
+
function hexToRgb(hex) {
|
|
252
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
253
|
+
if (!result || !result[1] || !result[2] || !result[3]) {
|
|
254
|
+
return { r: 255, g: 255, b: 255 };
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
r: parseInt(result[1], 16),
|
|
258
|
+
g: parseInt(result[2], 16),
|
|
259
|
+
b: parseInt(result[3], 16)
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
function rgbToHex(r, g, b) {
|
|
263
|
+
return "#" + [r, g, b].map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
264
|
+
}
|
|
265
|
+
function hexTo256(hex) {
|
|
266
|
+
const { r, g, b } = hexToRgb(hex);
|
|
267
|
+
if (r === g && g === b) {
|
|
268
|
+
if (r < 8) return 16;
|
|
269
|
+
if (r > 248) return 231;
|
|
270
|
+
return Math.round((r - 8) / 247 * 24) + 232;
|
|
271
|
+
}
|
|
272
|
+
const ri = Math.round(r / 255 * 5);
|
|
273
|
+
const gi = Math.round(g / 255 * 5);
|
|
274
|
+
const bi = Math.round(b / 255 * 5);
|
|
275
|
+
return 16 + 36 * ri + 6 * gi + bi;
|
|
276
|
+
}
|
|
277
|
+
function colorToHex(color) {
|
|
278
|
+
if (color.startsWith("#")) {
|
|
279
|
+
return color;
|
|
280
|
+
}
|
|
281
|
+
const named = CSS_NAMED_COLORS[color.toLowerCase()];
|
|
282
|
+
if (named) {
|
|
283
|
+
return named;
|
|
284
|
+
}
|
|
285
|
+
const rgbMatch = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
|
|
286
|
+
if (rgbMatch && rgbMatch[1] && rgbMatch[2] && rgbMatch[3]) {
|
|
287
|
+
return rgbToHex(
|
|
288
|
+
parseInt(rgbMatch[1]),
|
|
289
|
+
parseInt(rgbMatch[2]),
|
|
290
|
+
parseInt(rgbMatch[3])
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
return "#ffffff";
|
|
294
|
+
}
|
|
295
|
+
function getANSIForeground(color, capability) {
|
|
296
|
+
if (capability === "none") return "";
|
|
297
|
+
const lowerColor = color.toLowerCase();
|
|
298
|
+
if (capability === "basic" && ANSI_16_COLORS[lowerColor]) {
|
|
299
|
+
return `\x1B[${ANSI_16_COLORS[lowerColor].fg}m`;
|
|
300
|
+
}
|
|
301
|
+
if (capability === "basic") {
|
|
302
|
+
const hex2 = colorToHex(color);
|
|
303
|
+
const nearestBasic = findNearestBasicColor(hex2);
|
|
304
|
+
const basicColor = ANSI_16_COLORS[nearestBasic];
|
|
305
|
+
return basicColor ? `\x1B[${basicColor.fg}m` : "\x1B[37m";
|
|
306
|
+
}
|
|
307
|
+
const hex = colorToHex(color);
|
|
308
|
+
const { r, g, b } = hexToRgb(hex);
|
|
309
|
+
return `\x1B[38;2;${r};${g};${b}m`;
|
|
310
|
+
}
|
|
311
|
+
function getANSIBackground(color, capability) {
|
|
312
|
+
if (capability === "none") return "";
|
|
313
|
+
const lowerColor = color.toLowerCase();
|
|
314
|
+
if (capability === "basic" && ANSI_16_COLORS[lowerColor]) {
|
|
315
|
+
return `\x1B[${ANSI_16_COLORS[lowerColor].bg}m`;
|
|
316
|
+
}
|
|
317
|
+
if (capability === "basic") {
|
|
318
|
+
const hex2 = colorToHex(color);
|
|
319
|
+
const nearestBasic = findNearestBasicColor(hex2);
|
|
320
|
+
const basicColor = ANSI_16_COLORS[nearestBasic];
|
|
321
|
+
return basicColor ? `\x1B[${basicColor.bg}m` : "\x1B[47m";
|
|
322
|
+
}
|
|
323
|
+
const hex = colorToHex(color);
|
|
324
|
+
const { r, g, b } = hexToRgb(hex);
|
|
325
|
+
return `\x1B[48;2;${r};${g};${b}m`;
|
|
326
|
+
}
|
|
327
|
+
function getANSI256Foreground(colorIndex) {
|
|
328
|
+
return `\x1B[38;5;${colorIndex}m`;
|
|
329
|
+
}
|
|
330
|
+
function getANSI256Background(colorIndex) {
|
|
331
|
+
return `\x1B[48;5;${colorIndex}m`;
|
|
332
|
+
}
|
|
333
|
+
function findNearestBasicColor(hex) {
|
|
334
|
+
const { r, g, b } = hexToRgb(hex);
|
|
335
|
+
const basicColors = {
|
|
336
|
+
black: { r: 0, g: 0, b: 0 },
|
|
337
|
+
red: { r: 205, g: 0, b: 0 },
|
|
338
|
+
green: { r: 0, g: 205, b: 0 },
|
|
339
|
+
yellow: { r: 205, g: 205, b: 0 },
|
|
340
|
+
blue: { r: 0, g: 0, b: 238 },
|
|
341
|
+
magenta: { r: 205, g: 0, b: 205 },
|
|
342
|
+
cyan: { r: 0, g: 205, b: 205 },
|
|
343
|
+
white: { r: 229, g: 229, b: 229 }
|
|
344
|
+
};
|
|
345
|
+
let nearest = "white";
|
|
346
|
+
let minDistance = Infinity;
|
|
347
|
+
for (const [name, rgb] of Object.entries(basicColors)) {
|
|
348
|
+
const distance = Math.sqrt(
|
|
349
|
+
Math.pow(r - rgb.r, 2) + Math.pow(g - rgb.g, 2) + Math.pow(b - rgb.b, 2)
|
|
350
|
+
);
|
|
351
|
+
if (distance < minDistance) {
|
|
352
|
+
minDistance = distance;
|
|
353
|
+
nearest = name;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return nearest;
|
|
357
|
+
}
|
|
358
|
+
function extractGradientColors(gradient) {
|
|
359
|
+
const hexMatches = gradient.match(/#[a-fA-F0-9]{6}/g) || [];
|
|
360
|
+
const rgbMatches = gradient.match(/rgba?\([^)]+\)/g) || [];
|
|
361
|
+
const namedMatches = gradient.match(/,\s*([a-z]+)(?:\s|,|\))/gi) || [];
|
|
362
|
+
const colors = [
|
|
363
|
+
...hexMatches,
|
|
364
|
+
...rgbMatches.map(colorToHex),
|
|
365
|
+
...namedMatches.map((m) => {
|
|
366
|
+
const name = m.replace(/[,\s)]/g, "").toLowerCase();
|
|
367
|
+
return CSS_NAMED_COLORS[name] || null;
|
|
368
|
+
}).filter((c) => c !== null)
|
|
369
|
+
];
|
|
370
|
+
return colors.length > 0 ? colors : ["#ffffff"];
|
|
371
|
+
}
|
|
372
|
+
function gradientToSingleColor(gradient) {
|
|
373
|
+
const colors = extractGradientColors(gradient);
|
|
374
|
+
if (colors.length === 0) return "#ffffff";
|
|
375
|
+
if (colors.length === 1) return colors[0] ?? "#ffffff";
|
|
376
|
+
const rgbs = colors.map((c) => hexToRgb(colorToHex(c)));
|
|
377
|
+
const avgR = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.r, 0) / rgbs.length);
|
|
378
|
+
const avgG = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.g, 0) / rgbs.length);
|
|
379
|
+
const avgB = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.b, 0) / rgbs.length);
|
|
380
|
+
return rgbToHex(avgR, avgG, avgB);
|
|
381
|
+
}
|
|
382
|
+
function cssColorToANSI(cssColor, capability, isBackground = false) {
|
|
383
|
+
if (capability === "none") return "";
|
|
384
|
+
let resolvedColor;
|
|
385
|
+
if (cssColor.includes("gradient")) {
|
|
386
|
+
resolvedColor = gradientToSingleColor(cssColor);
|
|
387
|
+
} else {
|
|
388
|
+
resolvedColor = colorToHex(cssColor);
|
|
389
|
+
}
|
|
390
|
+
return isBackground ? getANSIBackground(resolvedColor, capability) : getANSIForeground(resolvedColor, capability);
|
|
391
|
+
}
|
|
392
|
+
const ANSI = {
|
|
393
|
+
reset: "\x1B[0m",
|
|
394
|
+
bold: "\x1B[1m",
|
|
395
|
+
dim: "\x1B[2m",
|
|
396
|
+
italic: "\x1B[3m",
|
|
397
|
+
underline: "\x1B[4m",
|
|
398
|
+
blink: "\x1B[5m",
|
|
399
|
+
inverse: "\x1B[7m",
|
|
400
|
+
hidden: "\x1B[8m",
|
|
401
|
+
strikethrough: "\x1B[9m",
|
|
402
|
+
fg: {
|
|
403
|
+
black: "\x1B[30m",
|
|
404
|
+
red: "\x1B[31m",
|
|
405
|
+
green: "\x1B[32m",
|
|
406
|
+
yellow: "\x1B[33m",
|
|
407
|
+
blue: "\x1B[34m",
|
|
408
|
+
magenta: "\x1B[35m",
|
|
409
|
+
cyan: "\x1B[36m",
|
|
410
|
+
white: "\x1B[37m",
|
|
411
|
+
gray: "\x1B[90m",
|
|
412
|
+
brightRed: "\x1B[91m",
|
|
413
|
+
brightGreen: "\x1B[92m",
|
|
414
|
+
brightYellow: "\x1B[93m",
|
|
415
|
+
brightBlue: "\x1B[94m",
|
|
416
|
+
brightMagenta: "\x1B[95m",
|
|
417
|
+
brightCyan: "\x1B[96m",
|
|
418
|
+
brightWhite: "\x1B[97m"
|
|
419
|
+
},
|
|
420
|
+
bg: {
|
|
421
|
+
black: "\x1B[40m",
|
|
422
|
+
red: "\x1B[41m",
|
|
423
|
+
green: "\x1B[42m",
|
|
424
|
+
yellow: "\x1B[43m",
|
|
425
|
+
blue: "\x1B[44m",
|
|
426
|
+
magenta: "\x1B[45m",
|
|
427
|
+
cyan: "\x1B[46m",
|
|
428
|
+
white: "\x1B[47m",
|
|
429
|
+
gray: "\x1B[100m",
|
|
430
|
+
brightRed: "\x1B[101m",
|
|
431
|
+
brightGreen: "\x1B[102m",
|
|
432
|
+
brightYellow: "\x1B[103m",
|
|
433
|
+
brightBlue: "\x1B[104m",
|
|
434
|
+
brightMagenta: "\x1B[105m",
|
|
435
|
+
brightCyan: "\x1B[106m",
|
|
436
|
+
brightWhite: "\x1B[107m"
|
|
437
|
+
},
|
|
438
|
+
rgb: (r, g, b) => `\x1B[38;2;${r};${g};${b}m`,
|
|
439
|
+
bgRgb: (r, g, b) => `\x1B[48;2;${r};${g};${b}m`,
|
|
440
|
+
color256: (n) => `\x1B[38;5;${n}m`,
|
|
441
|
+
bgColor256: (n) => `\x1B[48;5;${n}m`
|
|
442
|
+
};
|
|
443
|
+
export {
|
|
444
|
+
ANSI as A,
|
|
445
|
+
hexTo256 as a,
|
|
446
|
+
getANSIBackground as b,
|
|
447
|
+
colorToHex as c,
|
|
448
|
+
getANSI256Foreground as d,
|
|
449
|
+
getANSI256Background as e,
|
|
450
|
+
cssColorToANSI as f,
|
|
451
|
+
getANSIForeground as g,
|
|
452
|
+
hexToRgb as h,
|
|
453
|
+
getEnvironment as i,
|
|
454
|
+
isRunningInTerminal as j,
|
|
455
|
+
getColorCapability as k,
|
|
456
|
+
getTerminalWidth as l,
|
|
457
|
+
getTerminalHeight as m,
|
|
458
|
+
getEnvironmentInfo as n,
|
|
459
|
+
rgbToHex as r,
|
|
460
|
+
supportsANSI as s
|
|
461
|
+
};
|
|
462
|
+
//# sourceMappingURL=color-converter-_Xdmsy7E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-converter-_Xdmsy7E.js","sources":["../../src/utils/environment-detector.ts","../../src/terminal/color-converter.ts"],"sourcesContent":["/**\n * Environment Detector - Robust environment detection for logger\n * Detects browser, terminal, server, and other runtime environments\n */\n\nexport type Environment = 'browser' | 'terminal' | 'server' | 'webworker' | 'deno' | 'unknown';\n\n/**\n * Main environment detection function\n */\nexport function getEnvironment(): Environment {\n // Check for Deno first\n if (typeof globalThis !== 'undefined' && (globalThis as any).Deno) {\n return 'deno';\n }\n\n // Check for WebWorker\n if (typeof window === 'undefined' && typeof self !== 'undefined' && typeof (self as any).importScripts === 'function') {\n return 'webworker';\n }\n\n // Check for Node.js (server environment)\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // Determine if it's running in a terminal or as a server\n if (isRunningInTerminal()) {\n return 'terminal';\n }\n return 'server';\n }\n\n // Check for browser\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'browser';\n }\n\n return 'unknown';\n}\n\n/**\n * Check if running in an interactive terminal\n */\nexport function isRunningInTerminal(): boolean {\n // Check for common terminal indicators\n if (typeof process === 'undefined') return false;\n\n const isTTY = process.stdout && process.stdout.isTTY;\n const hasTerminalEnv = process.env && (\n process.env.TERM ||\n process.env.TERM_PROGRAM ||\n process.env.SSH_TTY ||\n process.env.TERM_SESSION_ID\n );\n\n // Check if we're running in common terminal programs\n const terminalPrograms = [\n 'vscode',\n 'hyper',\n 'iterm',\n 'terminal',\n 'alacritty',\n 'kitty',\n 'gnome-terminal',\n 'konsole',\n 'xterm',\n 'tmux',\n 'screen'\n ];\n\n const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(program =>\n process.env.TERM_PROGRAM?.toLowerCase().includes(program) ||\n process.env.TERM?.toLowerCase().includes(program)\n );\n\n return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);\n}\n\n/**\n * Check if environment supports ANSI colors\n */\nexport function supportsANSI(): boolean {\n const env = getEnvironment();\n\n if (env === 'browser') return false;\n if (env === 'terminal') return true;\n if (env === 'server') return checkServerANSISupport();\n\n return false;\n}\n\n/**\n * Check if server environment supports ANSI colors\n */\nfunction checkServerANSISupport(): boolean {\n if (typeof process === 'undefined') return false;\n\n // Check common environment variables that indicate ANSI support\n const supportsANSI = process.env && (\n process.env.COLORTERM ||\n process.env.FORCE_COLOR ||\n (process.env.TERM && process.env.TERM !== 'dumb') ||\n process.env.TERM_PROGRAM\n );\n\n return Boolean(supportsANSI);\n}\n\n/**\n * Get environment-specific color capability\n */\nexport function getColorCapability(): 'full' | 'basic' | 'none' {\n const env = getEnvironment();\n\n if (env === 'browser') {\n return 'full'; // CSS colors\n }\n\n if (!supportsANSI()) {\n return 'none';\n }\n\n // Check for 256-color or truecolor support\n if (typeof process !== 'undefined' && process.env) {\n const hasTrueColor = process.env.COLORTERM === 'truecolor' || process.env.COLORTERM === '24bit';\n const has256Colors = process.env.TERM && process.env.TERM.includes('256');\n\n if (hasTrueColor || has256Colors) {\n return 'full';\n }\n }\n\n return 'basic'; // Basic 16 colors\n}\n\n/**\n * Get terminal width in columns\n */\nexport function getTerminalWidth(): number {\n if (typeof process !== 'undefined' && process.stdout?.columns) {\n return process.stdout.columns;\n }\n return 80;\n}\n\n/**\n * Get terminal height in rows\n */\nexport function getTerminalHeight(): number {\n if (typeof process !== 'undefined' && process.stdout?.rows) {\n return process.stdout.rows;\n }\n return 24;\n}\n\n/**\n * Environment information for debugging\n */\nexport function getEnvironmentInfo() {\n return {\n environment: getEnvironment(),\n supportsANSI: supportsANSI(),\n colorCapability: getColorCapability(),\n isTTY: typeof process !== 'undefined' ? Boolean(process.stdout?.isTTY) : false,\n platform: typeof process !== 'undefined' ? process.platform : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.versions?.node : null,\n term: typeof process !== 'undefined' ? process.env?.TERM : null,\n colorTerm: typeof process !== 'undefined' ? process.env?.COLORTERM : null,\n terminalWidth: getTerminalWidth(),\n terminalHeight: getTerminalHeight()\n };\n}","/**\n * Color Converter - CSS colors to ANSI extended color codes\n * Supports 256-color and truecolor (24-bit) terminals\n */\n\nexport type ColorCapability = 'full' | 'basic' | 'none';\n\nexport interface RGB {\n r: number;\n g: number;\n b: number;\n}\n\nconst ANSI_16_COLORS: Record<string, { fg: string; bg: string; bright: { fg: string; bg: string } }> = {\n black: { fg: '30', bg: '40', bright: { fg: '90', bg: '100' } },\n red: { fg: '31', bg: '41', bright: { fg: '91', bg: '101' } },\n green: { fg: '32', bg: '42', bright: { fg: '92', bg: '102' } },\n yellow: { fg: '33', bg: '43', bright: { fg: '93', bg: '103' } },\n blue: { fg: '34', bg: '44', bright: { fg: '94', bg: '104' } },\n magenta: { fg: '35', bg: '45', bright: { fg: '95', bg: '105' } },\n cyan: { fg: '36', bg: '46', bright: { fg: '96', bg: '106' } },\n white: { fg: '37', bg: '47', bright: { fg: '97', bg: '107' } },\n gray: { fg: '90', bg: '100', bright: { fg: '37', bg: '47' } },\n grey: { fg: '90', bg: '100', bright: { fg: '37', bg: '47' } },\n};\n\nconst CSS_NAMED_COLORS: Record<string, string> = {\n aliceblue: '#f0f8ff', antiquewhite: '#faebd7', aqua: '#00ffff',\n aquamarine: '#7fffd4', azure: '#f0ffff', beige: '#f5f5dc',\n bisque: '#ffe4c4', black: '#000000', blanchedalmond: '#ffebcd',\n blue: '#0000ff', blueviolet: '#8a2be2', brown: '#a52a2a',\n burlywood: '#deb887', cadetblue: '#5f9ea0', chartreuse: '#7fff00',\n chocolate: '#d2691e', coral: '#ff7f50', cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc', crimson: '#dc143c', cyan: '#00ffff',\n darkblue: '#00008b', darkcyan: '#008b8b', darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9', darkgreen: '#006400', darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b', darkolivegreen: '#556b2f', darkorange: '#ff8c00',\n darkorchid: '#9932cc', darkred: '#8b0000', darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f', darkslateblue: '#483d8b', darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1', darkviolet: '#9400d3', deeppink: '#ff1493',\n deepskyblue: '#00bfff', dimgray: '#696969', dodgerblue: '#1e90ff',\n firebrick: '#b22222', floralwhite: '#fffaf0', forestgreen: '#228b22',\n fuchsia: '#ff00ff', gainsboro: '#dcdcdc', ghostwhite: '#f8f8ff',\n gold: '#ffd700', goldenrod: '#daa520', gray: '#808080',\n green: '#008000', greenyellow: '#adff2f', honeydew: '#f0fff0',\n hotpink: '#ff69b4', indianred: '#cd5c5c', indigo: '#4b0082',\n ivory: '#fffff0', khaki: '#f0e68c', lavender: '#e6e6fa',\n lavenderblush: '#fff0f5', lawngreen: '#7cfc00', lemonchiffon: '#fffacd',\n lightblue: '#add8e6', lightcoral: '#f08080', lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2', lightgray: '#d3d3d3', lightgreen: '#90ee90',\n lightpink: '#ffb6c1', lightsalmon: '#ffa07a', lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa', lightslategray: '#778899', lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0', lime: '#00ff00', limegreen: '#32cd32',\n linen: '#faf0e6', magenta: '#ff00ff', maroon: '#800000',\n mediumaquamarine: '#66cdaa', mediumblue: '#0000cd', mediumorchid: '#ba55d3',\n mediumpurple: '#9370db', mediumseagreen: '#3cb371', mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a', mediumturquoise: '#48d1cc', mediumvioletred: '#c71585',\n midnightblue: '#191970', mintcream: '#f5fffa', mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5', navajowhite: '#ffdead', navy: '#000080',\n oldlace: '#fdf5e6', olive: '#808000', olivedrab: '#6b8e23',\n orange: '#ffa500', orangered: '#ff4500', orchid: '#da70d6',\n palegoldenrod: '#eee8aa', palegreen: '#98fb98', paleturquoise: '#afeeee',\n palevioletred: '#db7093', papayawhip: '#ffefd5', peachpuff: '#ffdab9',\n peru: '#cd853f', pink: '#ffc0cb', plum: '#dda0dd',\n powderblue: '#b0e0e6', purple: '#800080', rebeccapurple: '#663399',\n red: '#ff0000', rosybrown: '#bc8f8f', royalblue: '#4169e1',\n saddlebrown: '#8b4513', salmon: '#fa8072', sandybrown: '#f4a460',\n seagreen: '#2e8b57', seashell: '#fff5ee', sienna: '#a0522d',\n silver: '#c0c0c0', skyblue: '#87ceeb', slateblue: '#6a5acd',\n slategray: '#708090', snow: '#fffafa', springgreen: '#00ff7f',\n steelblue: '#4682b4', tan: '#d2b48c', teal: '#008080',\n thistle: '#d8bfd8', tomato: '#ff6347', turquoise: '#40e0d0',\n violet: '#ee82ee', wheat: '#f5deb3', white: '#ffffff',\n whitesmoke: '#f5f5f5', yellow: '#ffff00', yellowgreen: '#9acd32',\n};\n\nexport function hexToRgb(hex: string): RGB {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result || !result[1] || !result[2] || !result[3]) {\n return { r: 255, g: 255, b: 255 };\n }\n return {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b].map(x => x.toString(16).padStart(2, '0')).join('');\n}\n\nexport function hexTo256(hex: string): number {\n const { r, g, b } = hexToRgb(hex);\n\n if (r === g && g === b) {\n if (r < 8) return 16;\n if (r > 248) return 231;\n return Math.round(((r - 8) / 247) * 24) + 232;\n }\n\n const ri = Math.round(r / 255 * 5);\n const gi = Math.round(g / 255 * 5);\n const bi = Math.round(b / 255 * 5);\n\n return 16 + (36 * ri) + (6 * gi) + bi;\n}\n\nexport function colorToHex(color: string): string {\n if (color.startsWith('#')) {\n return color;\n }\n\n const named = CSS_NAMED_COLORS[color.toLowerCase()];\n if (named) {\n return named;\n }\n\n const rgbMatch = color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (rgbMatch && rgbMatch[1] && rgbMatch[2] && rgbMatch[3]) {\n return rgbToHex(\n parseInt(rgbMatch[1]),\n parseInt(rgbMatch[2]),\n parseInt(rgbMatch[3])\n );\n }\n\n return '#ffffff';\n}\n\nexport function getANSIForeground(color: string, capability: ColorCapability): string {\n if (capability === 'none') return '';\n\n const lowerColor = color.toLowerCase();\n\n if (capability === 'basic' && ANSI_16_COLORS[lowerColor]) {\n return `\\x1b[${ANSI_16_COLORS[lowerColor].fg}m`;\n }\n\n if (capability === 'basic') {\n const hex = colorToHex(color);\n const nearestBasic = findNearestBasicColor(hex);\n const basicColor = ANSI_16_COLORS[nearestBasic];\n return basicColor ? `\\x1b[${basicColor.fg}m` : '\\x1b[37m';\n }\n\n const hex = colorToHex(color);\n const { r, g, b } = hexToRgb(hex);\n return `\\x1b[38;2;${r};${g};${b}m`;\n}\n\nexport function getANSIBackground(color: string, capability: ColorCapability): string {\n if (capability === 'none') return '';\n\n const lowerColor = color.toLowerCase();\n\n if (capability === 'basic' && ANSI_16_COLORS[lowerColor]) {\n return `\\x1b[${ANSI_16_COLORS[lowerColor].bg}m`;\n }\n\n if (capability === 'basic') {\n const hex = colorToHex(color);\n const nearestBasic = findNearestBasicColor(hex);\n const basicColor = ANSI_16_COLORS[nearestBasic];\n return basicColor ? `\\x1b[${basicColor.bg}m` : '\\x1b[47m';\n }\n\n const hex = colorToHex(color);\n const { r, g, b } = hexToRgb(hex);\n return `\\x1b[48;2;${r};${g};${b}m`;\n}\n\nexport function getANSI256Foreground(colorIndex: number): string {\n return `\\x1b[38;5;${colorIndex}m`;\n}\n\nexport function getANSI256Background(colorIndex: number): string {\n return `\\x1b[48;5;${colorIndex}m`;\n}\n\nfunction findNearestBasicColor(hex: string): string {\n const { r, g, b } = hexToRgb(hex);\n const basicColors: Record<string, RGB> = {\n black: { r: 0, g: 0, b: 0 },\n red: { r: 205, g: 0, b: 0 },\n green: { r: 0, g: 205, b: 0 },\n yellow: { r: 205, g: 205, b: 0 },\n blue: { r: 0, g: 0, b: 238 },\n magenta: { r: 205, g: 0, b: 205 },\n cyan: { r: 0, g: 205, b: 205 },\n white: { r: 229, g: 229, b: 229 },\n };\n\n let nearest = 'white';\n let minDistance = Infinity;\n\n for (const [name, rgb] of Object.entries(basicColors)) {\n const distance = Math.sqrt(\n Math.pow(r - rgb.r, 2) +\n Math.pow(g - rgb.g, 2) +\n Math.pow(b - rgb.b, 2)\n );\n if (distance < minDistance) {\n minDistance = distance;\n nearest = name;\n }\n }\n\n return nearest;\n}\n\nexport function extractGradientColors(gradient: string): string[] {\n const hexMatches = gradient.match(/#[a-fA-F0-9]{6}/g) || [];\n const rgbMatches = gradient.match(/rgba?\\([^)]+\\)/g) || [];\n const namedMatches = gradient.match(/,\\s*([a-z]+)(?:\\s|,|\\))/gi) || [];\n\n const colors: string[] = [\n ...hexMatches,\n ...rgbMatches.map(colorToHex),\n ...namedMatches.map(m => {\n const name = m.replace(/[,\\s)]/g, '').toLowerCase();\n return CSS_NAMED_COLORS[name] || null;\n }).filter((c): c is string => c !== null)\n ];\n\n return colors.length > 0 ? colors : ['#ffffff'];\n}\n\nexport function gradientToSingleColor(gradient: string): string {\n const colors = extractGradientColors(gradient);\n if (colors.length === 0) return '#ffffff';\n if (colors.length === 1) return colors[0] ?? '#ffffff';\n\n const rgbs = colors.map(c => hexToRgb(colorToHex(c)));\n const avgR = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.r, 0) / rgbs.length);\n const avgG = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.g, 0) / rgbs.length);\n const avgB = Math.round(rgbs.reduce((sum, rgb) => sum + rgb.b, 0) / rgbs.length);\n\n return rgbToHex(avgR, avgG, avgB);\n}\n\nexport function cssColorToANSI(\n cssColor: string,\n capability: ColorCapability,\n isBackground: boolean = false\n): string {\n if (capability === 'none') return '';\n\n let resolvedColor: string;\n\n if (cssColor.includes('gradient')) {\n resolvedColor = gradientToSingleColor(cssColor);\n } else {\n resolvedColor = colorToHex(cssColor);\n }\n\n return isBackground\n ? getANSIBackground(resolvedColor, capability)\n : getANSIForeground(resolvedColor, capability);\n}\n\nexport const ANSI = {\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n dim: '\\x1b[2m',\n italic: '\\x1b[3m',\n underline: '\\x1b[4m',\n blink: '\\x1b[5m',\n inverse: '\\x1b[7m',\n hidden: '\\x1b[8m',\n strikethrough: '\\x1b[9m',\n\n fg: {\n black: '\\x1b[30m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n gray: '\\x1b[90m',\n brightRed: '\\x1b[91m',\n brightGreen: '\\x1b[92m',\n brightYellow: '\\x1b[93m',\n brightBlue: '\\x1b[94m',\n brightMagenta: '\\x1b[95m',\n brightCyan: '\\x1b[96m',\n brightWhite: '\\x1b[97m',\n },\n\n bg: {\n black: '\\x1b[40m',\n red: '\\x1b[41m',\n green: '\\x1b[42m',\n yellow: '\\x1b[43m',\n blue: '\\x1b[44m',\n magenta: '\\x1b[45m',\n cyan: '\\x1b[46m',\n white: '\\x1b[47m',\n gray: '\\x1b[100m',\n brightRed: '\\x1b[101m',\n brightGreen: '\\x1b[102m',\n brightYellow: '\\x1b[103m',\n brightBlue: '\\x1b[104m',\n brightMagenta: '\\x1b[105m',\n brightCyan: '\\x1b[106m',\n brightWhite: '\\x1b[107m',\n },\n\n rgb: (r: number, g: number, b: number) => `\\x1b[38;2;${r};${g};${b}m`,\n bgRgb: (r: number, g: number, b: number) => `\\x1b[48;2;${r};${g};${b}m`,\n color256: (n: number) => `\\x1b[38;5;${n}m`,\n bgColor256: (n: number) => `\\x1b[48;5;${n}m`,\n};\n"],"names":["supportsANSI","hex"],"mappings":"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"}
|