mirror of
https://github.com/tvytlx/ai-agent-deep-dive.git
synced 2026-04-04 16:14:50 +08:00
Add extracted source directory and README navigation
This commit is contained in:
112
extracted-source/node_modules/cli-highlight/dist/index.js
generated
vendored
Normal file
112
extracted-source/node_modules/cli-highlight/dist/index.js
generated
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.supportsLanguage = exports.listLanguages = exports.highlight = void 0;
|
||||
var hljs = __importStar(require("highlight.js"));
|
||||
var parse5 = __importStar(require("parse5"));
|
||||
var parse5_htmlparser2_tree_adapter_1 = __importDefault(require("parse5-htmlparser2-tree-adapter"));
|
||||
var theme_1 = require("./theme");
|
||||
function colorizeNode(node, theme, context) {
|
||||
if (theme === void 0) { theme = {}; }
|
||||
switch (node.type) {
|
||||
case 'text': {
|
||||
var text = node.data;
|
||||
if (context === undefined) {
|
||||
return (theme.default || theme_1.DEFAULT_THEME.default || theme_1.plain)(text);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
case 'tag': {
|
||||
var hljsClass = /hljs-(\w+)/.exec(node.attribs.class);
|
||||
if (hljsClass) {
|
||||
var token_1 = hljsClass[1];
|
||||
var nodeData = node.childNodes
|
||||
.map(function (node) { return colorizeNode(node, theme, token_1); })
|
||||
.join('');
|
||||
return (theme[token_1] || theme_1.DEFAULT_THEME[token_1] || theme_1.plain)(nodeData);
|
||||
}
|
||||
// Return the data itself when the class name isn't prefixed with a highlight.js token prefix.
|
||||
// This is common in instances of sublanguages (JSX, Markdown Code Blocks, etc.)
|
||||
return node.childNodes.map(function (node) { return colorizeNode(node, theme); }).join('');
|
||||
}
|
||||
}
|
||||
throw new Error('Invalid node type ' + node.type);
|
||||
}
|
||||
function colorize(code, theme) {
|
||||
if (theme === void 0) { theme = {}; }
|
||||
var fragment = parse5.parseFragment(code, {
|
||||
treeAdapter: parse5_htmlparser2_tree_adapter_1.default,
|
||||
});
|
||||
return fragment.childNodes.map(function (node) { return colorizeNode(node, theme); }).join('');
|
||||
}
|
||||
/**
|
||||
* Apply syntax highlighting to `code` with ASCII color codes. The language is automatically
|
||||
* detected if not set.
|
||||
*
|
||||
* ```ts
|
||||
* import {highlight} from 'cli-highlight';
|
||||
* import * as fs from 'fs';
|
||||
*
|
||||
* fs.readFile('package.json', 'utf8', (err: any, json: string) => {
|
||||
* console.log('package.json:');
|
||||
* console.log(highlight(json));
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* @param code The code to highlight
|
||||
* @param options Optional options
|
||||
*/
|
||||
function highlight(code, options) {
|
||||
if (options === void 0) { options = {}; }
|
||||
var html;
|
||||
if (options.language) {
|
||||
html = hljs.highlight(code, { language: options.language, ignoreIllegals: options.ignoreIllegals }).value;
|
||||
}
|
||||
else {
|
||||
html = hljs.highlightAuto(code, options.languageSubset).value;
|
||||
}
|
||||
return colorize(html, options.theme);
|
||||
}
|
||||
exports.highlight = highlight;
|
||||
/**
|
||||
* Returns all supported languages
|
||||
*/
|
||||
function listLanguages() {
|
||||
return hljs.listLanguages();
|
||||
}
|
||||
exports.listLanguages = listLanguages;
|
||||
/**
|
||||
* Returns true if the language is supported
|
||||
* @param name A language name, alias or file extension
|
||||
*/
|
||||
function supportsLanguage(name) {
|
||||
return !!hljs.getLanguage(name);
|
||||
}
|
||||
exports.supportsLanguage = supportsLanguage;
|
||||
exports.default = highlight;
|
||||
__exportStar(require("./theme"), exports);
|
||||
//# sourceMappingURL=index.js.map
|
||||
265
extracted-source/node_modules/cli-highlight/dist/theme.js
generated
vendored
Normal file
265
extracted-source/node_modules/cli-highlight/dist/theme.js
generated
vendored
Normal file
@@ -0,0 +1,265 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.parse = exports.stringify = exports.toJson = exports.fromJson = exports.DEFAULT_THEME = exports.plain = void 0;
|
||||
var chalk_1 = __importDefault(require("chalk"));
|
||||
/**
|
||||
* Identity function for tokens that should not be styled (returns the input string as-is).
|
||||
* See [[Theme]] for an example.
|
||||
*/
|
||||
var plain = function (codePart) { return codePart; };
|
||||
exports.plain = plain;
|
||||
/**
|
||||
* The default theme. It is possible to override just individual keys.
|
||||
*/
|
||||
exports.DEFAULT_THEME = {
|
||||
/**
|
||||
* keyword in a regular Algol-style language
|
||||
*/
|
||||
keyword: chalk_1.default.blue,
|
||||
/**
|
||||
* built-in or library object (constant, class, function)
|
||||
*/
|
||||
built_in: chalk_1.default.cyan,
|
||||
/**
|
||||
* user-defined type in a language with first-class syntactically significant types, like
|
||||
* Haskell
|
||||
*/
|
||||
type: chalk_1.default.cyan.dim,
|
||||
/**
|
||||
* special identifier for a built-in value ("true", "false", "null")
|
||||
*/
|
||||
literal: chalk_1.default.blue,
|
||||
/**
|
||||
* number, including units and modifiers, if any.
|
||||
*/
|
||||
number: chalk_1.default.green,
|
||||
/**
|
||||
* literal regular expression
|
||||
*/
|
||||
regexp: chalk_1.default.red,
|
||||
/**
|
||||
* literal string, character
|
||||
*/
|
||||
string: chalk_1.default.red,
|
||||
/**
|
||||
* parsed section inside a literal string
|
||||
*/
|
||||
subst: exports.plain,
|
||||
/**
|
||||
* symbolic constant, interned string, goto label
|
||||
*/
|
||||
symbol: exports.plain,
|
||||
/**
|
||||
* class or class-level declaration (interfaces, traits, modules, etc)
|
||||
*/
|
||||
class: chalk_1.default.blue,
|
||||
/**
|
||||
* function or method declaration
|
||||
*/
|
||||
function: chalk_1.default.yellow,
|
||||
/**
|
||||
* name of a class or a function at the place of declaration
|
||||
*/
|
||||
title: exports.plain,
|
||||
/**
|
||||
* block of function arguments (parameters) at the place of declaration
|
||||
*/
|
||||
params: exports.plain,
|
||||
/**
|
||||
* comment
|
||||
*/
|
||||
comment: chalk_1.default.green,
|
||||
/**
|
||||
* documentation markup within comments
|
||||
*/
|
||||
doctag: chalk_1.default.green,
|
||||
/**
|
||||
* flags, modifiers, annotations, processing instructions, preprocessor directive, etc
|
||||
*/
|
||||
meta: chalk_1.default.grey,
|
||||
/**
|
||||
* keyword or built-in within meta construct
|
||||
*/
|
||||
'meta-keyword': exports.plain,
|
||||
/**
|
||||
* string within meta construct
|
||||
*/
|
||||
'meta-string': exports.plain,
|
||||
/**
|
||||
* heading of a section in a config file, heading in text markup
|
||||
*/
|
||||
section: exports.plain,
|
||||
/**
|
||||
* XML/HTML tag
|
||||
*/
|
||||
tag: chalk_1.default.grey,
|
||||
/**
|
||||
* name of an XML tag, the first word in an s-expression
|
||||
*/
|
||||
name: chalk_1.default.blue,
|
||||
/**
|
||||
* s-expression name from the language standard library
|
||||
*/
|
||||
'builtin-name': exports.plain,
|
||||
/**
|
||||
* name of an attribute with no language defined semantics (keys in JSON, setting names in
|
||||
* .ini), also sub-attribute within another highlighted object, like XML tag
|
||||
*/
|
||||
attr: chalk_1.default.cyan,
|
||||
/**
|
||||
* name of an attribute followed by a structured value part, like CSS properties
|
||||
*/
|
||||
attribute: exports.plain,
|
||||
/**
|
||||
* variable in a config or a template file, environment var expansion in a script
|
||||
*/
|
||||
variable: exports.plain,
|
||||
/**
|
||||
* list item bullet in text markup
|
||||
*/
|
||||
bullet: exports.plain,
|
||||
/**
|
||||
* code block in text markup
|
||||
*/
|
||||
code: exports.plain,
|
||||
/**
|
||||
* emphasis in text markup
|
||||
*/
|
||||
emphasis: chalk_1.default.italic,
|
||||
/**
|
||||
* strong emphasis in text markup
|
||||
*/
|
||||
strong: chalk_1.default.bold,
|
||||
/**
|
||||
* mathematical formula in text markup
|
||||
*/
|
||||
formula: exports.plain,
|
||||
/**
|
||||
* hyperlink in text markup
|
||||
*/
|
||||
link: chalk_1.default.underline,
|
||||
/**
|
||||
* quotation in text markup
|
||||
*/
|
||||
quote: exports.plain,
|
||||
/**
|
||||
* tag selector in CSS
|
||||
*/
|
||||
'selector-tag': exports.plain,
|
||||
/**
|
||||
* #id selector in CSS
|
||||
*/
|
||||
'selector-id': exports.plain,
|
||||
/**
|
||||
* .class selector in CSS
|
||||
*/
|
||||
'selector-class': exports.plain,
|
||||
/**
|
||||
* [attr] selector in CSS
|
||||
*/
|
||||
'selector-attr': exports.plain,
|
||||
/**
|
||||
* :pseudo selector in CSS
|
||||
*/
|
||||
'selector-pseudo': exports.plain,
|
||||
/**
|
||||
* tag of a template language
|
||||
*/
|
||||
'template-tag': exports.plain,
|
||||
/**
|
||||
* variable in a template language
|
||||
*/
|
||||
'template-variable': exports.plain,
|
||||
/**
|
||||
* added or changed line in a diff
|
||||
*/
|
||||
addition: chalk_1.default.green,
|
||||
/**
|
||||
* deleted line in a diff
|
||||
*/
|
||||
deletion: chalk_1.default.red,
|
||||
/**
|
||||
* things not matched by any token
|
||||
*/
|
||||
default: exports.plain,
|
||||
};
|
||||
/**
|
||||
* Converts a [[JsonTheme]] with string values to a [[Theme]] with formatter functions. Used by [[parse]].
|
||||
*/
|
||||
function fromJson(json) {
|
||||
var theme = {};
|
||||
for (var _i = 0, _a = Object.keys(json); _i < _a.length; _i++) {
|
||||
var key = _a[_i];
|
||||
var style = json[key];
|
||||
if (Array.isArray(style)) {
|
||||
;
|
||||
theme[key] = style.reduce(function (previous, current) { return (current === 'plain' ? exports.plain : previous[current]); }, chalk_1.default);
|
||||
}
|
||||
else {
|
||||
;
|
||||
theme[key] = chalk_1.default[style];
|
||||
}
|
||||
}
|
||||
return theme;
|
||||
}
|
||||
exports.fromJson = fromJson;
|
||||
/**
|
||||
* Converts a [[Theme]] with formatter functions to a [[JsonTheme]] with string values. Used by [[stringify]].
|
||||
*/
|
||||
function toJson(theme) {
|
||||
var jsonTheme = {};
|
||||
for (var _i = 0, _a = Object.keys(jsonTheme); _i < _a.length; _i++) {
|
||||
var key = _a[_i];
|
||||
var style = jsonTheme[key];
|
||||
jsonTheme[key] = style._styles;
|
||||
}
|
||||
return jsonTheme;
|
||||
}
|
||||
exports.toJson = toJson;
|
||||
/**
|
||||
* Stringifies a [[Theme]] with formatter functions to a JSON string.
|
||||
*
|
||||
* ```ts
|
||||
* import chalk = require('chalk');
|
||||
* import {stringify} from 'cli-highlight';
|
||||
* import * as fs from 'fs';
|
||||
*
|
||||
* const myTheme: Theme = {
|
||||
* keyword: chalk.red.bold,
|
||||
* addition: chalk.green,
|
||||
* deletion: chalk.red.strikethrough,
|
||||
* number: plain
|
||||
* }
|
||||
* const json = stringify(myTheme);
|
||||
* fs.writeFile('mytheme.json', json, (err: any) => {
|
||||
* if (err) throw err;
|
||||
* console.log('Theme saved');
|
||||
* });
|
||||
* ```
|
||||
*/
|
||||
function stringify(theme) {
|
||||
return JSON.stringify(toJson(theme));
|
||||
}
|
||||
exports.stringify = stringify;
|
||||
/**
|
||||
* Parses a JSON string into a [[Theme]] with formatter functions.
|
||||
*
|
||||
* ```ts
|
||||
* import * as fs from 'fs';
|
||||
* import {parse, highlight} from 'cli-highlight';
|
||||
*
|
||||
* fs.readFile('mytheme.json', 'utf8', (err: any, json: string) => {
|
||||
* if (err) throw err;
|
||||
* const code = highlight('SELECT * FROM table', {theme: parse(json)});
|
||||
* console.log(code);
|
||||
* });
|
||||
* ```
|
||||
*/
|
||||
function parse(json) {
|
||||
return fromJson(JSON.parse(json));
|
||||
}
|
||||
exports.parse = parse;
|
||||
//# sourceMappingURL=theme.js.map
|
||||
163
extracted-source/node_modules/cli-highlight/node_modules/chalk/node_modules/ansi-styles/index.js
generated
vendored
Normal file
163
extracted-source/node_modules/cli-highlight/node_modules/chalk/node_modules/ansi-styles/index.js
generated
vendored
Normal file
@@ -0,0 +1,163 @@
|
||||
'use strict';
|
||||
|
||||
const wrapAnsi16 = (fn, offset) => (...args) => {
|
||||
const code = fn(...args);
|
||||
return `\u001B[${code + offset}m`;
|
||||
};
|
||||
|
||||
const wrapAnsi256 = (fn, offset) => (...args) => {
|
||||
const code = fn(...args);
|
||||
return `\u001B[${38 + offset};5;${code}m`;
|
||||
};
|
||||
|
||||
const wrapAnsi16m = (fn, offset) => (...args) => {
|
||||
const rgb = fn(...args);
|
||||
return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
|
||||
};
|
||||
|
||||
const ansi2ansi = n => n;
|
||||
const rgb2rgb = (r, g, b) => [r, g, b];
|
||||
|
||||
const setLazyProperty = (object, property, get) => {
|
||||
Object.defineProperty(object, property, {
|
||||
get: () => {
|
||||
const value = get();
|
||||
|
||||
Object.defineProperty(object, property, {
|
||||
value,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
return value;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
};
|
||||
|
||||
/** @type {typeof import('color-convert')} */
|
||||
let colorConvert;
|
||||
const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {
|
||||
if (colorConvert === undefined) {
|
||||
colorConvert = require('color-convert');
|
||||
}
|
||||
|
||||
const offset = isBackground ? 10 : 0;
|
||||
const styles = {};
|
||||
|
||||
for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
|
||||
const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;
|
||||
if (sourceSpace === targetSpace) {
|
||||
styles[name] = wrap(identity, offset);
|
||||
} else if (typeof suite === 'object') {
|
||||
styles[name] = wrap(suite[targetSpace], offset);
|
||||
}
|
||||
}
|
||||
|
||||
return styles;
|
||||
};
|
||||
|
||||
function assembleStyles() {
|
||||
const codes = new Map();
|
||||
const styles = {
|
||||
modifier: {
|
||||
reset: [0, 0],
|
||||
// 21 isn't widely supported and 22 does the same thing
|
||||
bold: [1, 22],
|
||||
dim: [2, 22],
|
||||
italic: [3, 23],
|
||||
underline: [4, 24],
|
||||
inverse: [7, 27],
|
||||
hidden: [8, 28],
|
||||
strikethrough: [9, 29]
|
||||
},
|
||||
color: {
|
||||
black: [30, 39],
|
||||
red: [31, 39],
|
||||
green: [32, 39],
|
||||
yellow: [33, 39],
|
||||
blue: [34, 39],
|
||||
magenta: [35, 39],
|
||||
cyan: [36, 39],
|
||||
white: [37, 39],
|
||||
|
||||
// Bright color
|
||||
blackBright: [90, 39],
|
||||
redBright: [91, 39],
|
||||
greenBright: [92, 39],
|
||||
yellowBright: [93, 39],
|
||||
blueBright: [94, 39],
|
||||
magentaBright: [95, 39],
|
||||
cyanBright: [96, 39],
|
||||
whiteBright: [97, 39]
|
||||
},
|
||||
bgColor: {
|
||||
bgBlack: [40, 49],
|
||||
bgRed: [41, 49],
|
||||
bgGreen: [42, 49],
|
||||
bgYellow: [43, 49],
|
||||
bgBlue: [44, 49],
|
||||
bgMagenta: [45, 49],
|
||||
bgCyan: [46, 49],
|
||||
bgWhite: [47, 49],
|
||||
|
||||
// Bright color
|
||||
bgBlackBright: [100, 49],
|
||||
bgRedBright: [101, 49],
|
||||
bgGreenBright: [102, 49],
|
||||
bgYellowBright: [103, 49],
|
||||
bgBlueBright: [104, 49],
|
||||
bgMagentaBright: [105, 49],
|
||||
bgCyanBright: [106, 49],
|
||||
bgWhiteBright: [107, 49]
|
||||
}
|
||||
};
|
||||
|
||||
// Alias bright black as gray (and grey)
|
||||
styles.color.gray = styles.color.blackBright;
|
||||
styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
|
||||
styles.color.grey = styles.color.blackBright;
|
||||
styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
|
||||
|
||||
for (const [groupName, group] of Object.entries(styles)) {
|
||||
for (const [styleName, style] of Object.entries(group)) {
|
||||
styles[styleName] = {
|
||||
open: `\u001B[${style[0]}m`,
|
||||
close: `\u001B[${style[1]}m`
|
||||
};
|
||||
|
||||
group[styleName] = styles[styleName];
|
||||
|
||||
codes.set(style[0], style[1]);
|
||||
}
|
||||
|
||||
Object.defineProperty(styles, groupName, {
|
||||
value: group,
|
||||
enumerable: false
|
||||
});
|
||||
}
|
||||
|
||||
Object.defineProperty(styles, 'codes', {
|
||||
value: codes,
|
||||
enumerable: false
|
||||
});
|
||||
|
||||
styles.color.close = '\u001B[39m';
|
||||
styles.bgColor.close = '\u001B[49m';
|
||||
|
||||
setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));
|
||||
setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));
|
||||
setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));
|
||||
setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));
|
||||
setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));
|
||||
setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));
|
||||
|
||||
return styles;
|
||||
}
|
||||
|
||||
// Make the export immutable
|
||||
Object.defineProperty(module, 'exports', {
|
||||
enumerable: true,
|
||||
get: assembleStyles
|
||||
});
|
||||
135
extracted-source/node_modules/cli-highlight/node_modules/chalk/node_modules/supports-color/index.js
generated
vendored
Normal file
135
extracted-source/node_modules/cli-highlight/node_modules/chalk/node_modules/supports-color/index.js
generated
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
'use strict';
|
||||
const os = require('os');
|
||||
const tty = require('tty');
|
||||
const hasFlag = require('has-flag');
|
||||
|
||||
const {env} = process;
|
||||
|
||||
let forceColor;
|
||||
if (hasFlag('no-color') ||
|
||||
hasFlag('no-colors') ||
|
||||
hasFlag('color=false') ||
|
||||
hasFlag('color=never')) {
|
||||
forceColor = 0;
|
||||
} else if (hasFlag('color') ||
|
||||
hasFlag('colors') ||
|
||||
hasFlag('color=true') ||
|
||||
hasFlag('color=always')) {
|
||||
forceColor = 1;
|
||||
}
|
||||
|
||||
if ('FORCE_COLOR' in env) {
|
||||
if (env.FORCE_COLOR === 'true') {
|
||||
forceColor = 1;
|
||||
} else if (env.FORCE_COLOR === 'false') {
|
||||
forceColor = 0;
|
||||
} else {
|
||||
forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
|
||||
}
|
||||
}
|
||||
|
||||
function translateLevel(level) {
|
||||
if (level === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return {
|
||||
level,
|
||||
hasBasic: true,
|
||||
has256: level >= 2,
|
||||
has16m: level >= 3
|
||||
};
|
||||
}
|
||||
|
||||
function supportsColor(haveStream, streamIsTTY) {
|
||||
if (forceColor === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (hasFlag('color=16m') ||
|
||||
hasFlag('color=full') ||
|
||||
hasFlag('color=truecolor')) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
if (hasFlag('color=256')) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (haveStream && !streamIsTTY && forceColor === undefined) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const min = forceColor || 0;
|
||||
|
||||
if (env.TERM === 'dumb') {
|
||||
return min;
|
||||
}
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
// Windows 10 build 10586 is the first Windows release that supports 256 colors.
|
||||
// Windows 10 build 14931 is the first release that supports 16m/TrueColor.
|
||||
const osRelease = os.release().split('.');
|
||||
if (
|
||||
Number(osRelease[0]) >= 10 &&
|
||||
Number(osRelease[2]) >= 10586
|
||||
) {
|
||||
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ('CI' in env) {
|
||||
if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
if ('TEAMCITY_VERSION' in env) {
|
||||
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
|
||||
}
|
||||
|
||||
if (env.COLORTERM === 'truecolor') {
|
||||
return 3;
|
||||
}
|
||||
|
||||
if ('TERM_PROGRAM' in env) {
|
||||
const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
|
||||
|
||||
switch (env.TERM_PROGRAM) {
|
||||
case 'iTerm.app':
|
||||
return version >= 3 ? 3 : 2;
|
||||
case 'Apple_Terminal':
|
||||
return 2;
|
||||
// No default
|
||||
}
|
||||
}
|
||||
|
||||
if (/-256(color)?$/i.test(env.TERM)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ('COLORTERM' in env) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
function getSupportLevel(stream) {
|
||||
const level = supportsColor(stream, stream && stream.isTTY);
|
||||
return translateLevel(level);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
supportsColor: getSupportLevel,
|
||||
stdout: translateLevel(supportsColor(true, tty.isatty(1))),
|
||||
stderr: translateLevel(supportsColor(true, tty.isatty(2)))
|
||||
};
|
||||
229
extracted-source/node_modules/cli-highlight/node_modules/chalk/source/index.js
generated
vendored
Normal file
229
extracted-source/node_modules/cli-highlight/node_modules/chalk/source/index.js
generated
vendored
Normal file
@@ -0,0 +1,229 @@
|
||||
'use strict';
|
||||
const ansiStyles = require('ansi-styles');
|
||||
const {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');
|
||||
const {
|
||||
stringReplaceAll,
|
||||
stringEncaseCRLFWithFirstIndex
|
||||
} = require('./util');
|
||||
|
||||
const {isArray} = Array;
|
||||
|
||||
// `supportsColor.level` → `ansiStyles.color[name]` mapping
|
||||
const levelMapping = [
|
||||
'ansi',
|
||||
'ansi',
|
||||
'ansi256',
|
||||
'ansi16m'
|
||||
];
|
||||
|
||||
const styles = Object.create(null);
|
||||
|
||||
const applyOptions = (object, options = {}) => {
|
||||
if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
|
||||
throw new Error('The `level` option should be an integer from 0 to 3');
|
||||
}
|
||||
|
||||
// Detect level if not set manually
|
||||
const colorLevel = stdoutColor ? stdoutColor.level : 0;
|
||||
object.level = options.level === undefined ? colorLevel : options.level;
|
||||
};
|
||||
|
||||
class ChalkClass {
|
||||
constructor(options) {
|
||||
// eslint-disable-next-line no-constructor-return
|
||||
return chalkFactory(options);
|
||||
}
|
||||
}
|
||||
|
||||
const chalkFactory = options => {
|
||||
const chalk = {};
|
||||
applyOptions(chalk, options);
|
||||
|
||||
chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);
|
||||
|
||||
Object.setPrototypeOf(chalk, Chalk.prototype);
|
||||
Object.setPrototypeOf(chalk.template, chalk);
|
||||
|
||||
chalk.template.constructor = () => {
|
||||
throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');
|
||||
};
|
||||
|
||||
chalk.template.Instance = ChalkClass;
|
||||
|
||||
return chalk.template;
|
||||
};
|
||||
|
||||
function Chalk(options) {
|
||||
return chalkFactory(options);
|
||||
}
|
||||
|
||||
for (const [styleName, style] of Object.entries(ansiStyles)) {
|
||||
styles[styleName] = {
|
||||
get() {
|
||||
const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);
|
||||
Object.defineProperty(this, styleName, {value: builder});
|
||||
return builder;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
styles.visible = {
|
||||
get() {
|
||||
const builder = createBuilder(this, this._styler, true);
|
||||
Object.defineProperty(this, 'visible', {value: builder});
|
||||
return builder;
|
||||
}
|
||||
};
|
||||
|
||||
const usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];
|
||||
|
||||
for (const model of usedModels) {
|
||||
styles[model] = {
|
||||
get() {
|
||||
const {level} = this;
|
||||
return function (...arguments_) {
|
||||
const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);
|
||||
return createBuilder(this, styler, this._isEmpty);
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
for (const model of usedModels) {
|
||||
const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
|
||||
styles[bgModel] = {
|
||||
get() {
|
||||
const {level} = this;
|
||||
return function (...arguments_) {
|
||||
const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);
|
||||
return createBuilder(this, styler, this._isEmpty);
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const proto = Object.defineProperties(() => {}, {
|
||||
...styles,
|
||||
level: {
|
||||
enumerable: true,
|
||||
get() {
|
||||
return this._generator.level;
|
||||
},
|
||||
set(level) {
|
||||
this._generator.level = level;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const createStyler = (open, close, parent) => {
|
||||
let openAll;
|
||||
let closeAll;
|
||||
if (parent === undefined) {
|
||||
openAll = open;
|
||||
closeAll = close;
|
||||
} else {
|
||||
openAll = parent.openAll + open;
|
||||
closeAll = close + parent.closeAll;
|
||||
}
|
||||
|
||||
return {
|
||||
open,
|
||||
close,
|
||||
openAll,
|
||||
closeAll,
|
||||
parent
|
||||
};
|
||||
};
|
||||
|
||||
const createBuilder = (self, _styler, _isEmpty) => {
|
||||
const builder = (...arguments_) => {
|
||||
if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {
|
||||
// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`
|
||||
return applyStyle(builder, chalkTag(builder, ...arguments_));
|
||||
}
|
||||
|
||||
// Single argument is hot path, implicit coercion is faster than anything
|
||||
// eslint-disable-next-line no-implicit-coercion
|
||||
return applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));
|
||||
};
|
||||
|
||||
// We alter the prototype because we must return a function, but there is
|
||||
// no way to create a function with a different prototype
|
||||
Object.setPrototypeOf(builder, proto);
|
||||
|
||||
builder._generator = self;
|
||||
builder._styler = _styler;
|
||||
builder._isEmpty = _isEmpty;
|
||||
|
||||
return builder;
|
||||
};
|
||||
|
||||
const applyStyle = (self, string) => {
|
||||
if (self.level <= 0 || !string) {
|
||||
return self._isEmpty ? '' : string;
|
||||
}
|
||||
|
||||
let styler = self._styler;
|
||||
|
||||
if (styler === undefined) {
|
||||
return string;
|
||||
}
|
||||
|
||||
const {openAll, closeAll} = styler;
|
||||
if (string.indexOf('\u001B') !== -1) {
|
||||
while (styler !== undefined) {
|
||||
// Replace any instances already present with a re-opening code
|
||||
// otherwise only the part of the string until said closing code
|
||||
// will be colored, and the rest will simply be 'plain'.
|
||||
string = stringReplaceAll(string, styler.close, styler.open);
|
||||
|
||||
styler = styler.parent;
|
||||
}
|
||||
}
|
||||
|
||||
// We can move both next actions out of loop, because remaining actions in loop won't have
|
||||
// any/visible effect on parts we add here. Close the styling before a linebreak and reopen
|
||||
// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92
|
||||
const lfIndex = string.indexOf('\n');
|
||||
if (lfIndex !== -1) {
|
||||
string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
|
||||
}
|
||||
|
||||
return openAll + string + closeAll;
|
||||
};
|
||||
|
||||
let template;
|
||||
const chalkTag = (chalk, ...strings) => {
|
||||
const [firstString] = strings;
|
||||
|
||||
if (!isArray(firstString) || !isArray(firstString.raw)) {
|
||||
// If chalk() was called by itself or with a string,
|
||||
// return the string itself as a string.
|
||||
return strings.join(' ');
|
||||
}
|
||||
|
||||
const arguments_ = strings.slice(1);
|
||||
const parts = [firstString.raw[0]];
|
||||
|
||||
for (let i = 1; i < firstString.length; i++) {
|
||||
parts.push(
|
||||
String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'),
|
||||
String(firstString.raw[i])
|
||||
);
|
||||
}
|
||||
|
||||
if (template === undefined) {
|
||||
template = require('./templates');
|
||||
}
|
||||
|
||||
return template(chalk, parts.join(''));
|
||||
};
|
||||
|
||||
Object.defineProperties(Chalk.prototype, styles);
|
||||
|
||||
const chalk = Chalk(); // eslint-disable-line new-cap
|
||||
chalk.supportsColor = stdoutColor;
|
||||
chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap
|
||||
chalk.stderr.supportsColor = stderrColor;
|
||||
|
||||
module.exports = chalk;
|
||||
134
extracted-source/node_modules/cli-highlight/node_modules/chalk/source/templates.js
generated
vendored
Normal file
134
extracted-source/node_modules/cli-highlight/node_modules/chalk/source/templates.js
generated
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
'use strict';
|
||||
const TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
|
||||
const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
|
||||
const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
|
||||
const ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi;
|
||||
|
||||
const ESCAPES = new Map([
|
||||
['n', '\n'],
|
||||
['r', '\r'],
|
||||
['t', '\t'],
|
||||
['b', '\b'],
|
||||
['f', '\f'],
|
||||
['v', '\v'],
|
||||
['0', '\0'],
|
||||
['\\', '\\'],
|
||||
['e', '\u001B'],
|
||||
['a', '\u0007']
|
||||
]);
|
||||
|
||||
function unescape(c) {
|
||||
const u = c[0] === 'u';
|
||||
const bracket = c[1] === '{';
|
||||
|
||||
if ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
|
||||
return String.fromCharCode(parseInt(c.slice(1), 16));
|
||||
}
|
||||
|
||||
if (u && bracket) {
|
||||
return String.fromCodePoint(parseInt(c.slice(2, -1), 16));
|
||||
}
|
||||
|
||||
return ESCAPES.get(c) || c;
|
||||
}
|
||||
|
||||
function parseArguments(name, arguments_) {
|
||||
const results = [];
|
||||
const chunks = arguments_.trim().split(/\s*,\s*/g);
|
||||
let matches;
|
||||
|
||||
for (const chunk of chunks) {
|
||||
const number = Number(chunk);
|
||||
if (!Number.isNaN(number)) {
|
||||
results.push(number);
|
||||
} else if ((matches = chunk.match(STRING_REGEX))) {
|
||||
results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));
|
||||
} else {
|
||||
throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
function parseStyle(style) {
|
||||
STYLE_REGEX.lastIndex = 0;
|
||||
|
||||
const results = [];
|
||||
let matches;
|
||||
|
||||
while ((matches = STYLE_REGEX.exec(style)) !== null) {
|
||||
const name = matches[1];
|
||||
|
||||
if (matches[2]) {
|
||||
const args = parseArguments(name, matches[2]);
|
||||
results.push([name].concat(args));
|
||||
} else {
|
||||
results.push([name]);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
function buildStyle(chalk, styles) {
|
||||
const enabled = {};
|
||||
|
||||
for (const layer of styles) {
|
||||
for (const style of layer.styles) {
|
||||
enabled[style[0]] = layer.inverse ? null : style.slice(1);
|
||||
}
|
||||
}
|
||||
|
||||
let current = chalk;
|
||||
for (const [styleName, styles] of Object.entries(enabled)) {
|
||||
if (!Array.isArray(styles)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(styleName in current)) {
|
||||
throw new Error(`Unknown Chalk style: ${styleName}`);
|
||||
}
|
||||
|
||||
current = styles.length > 0 ? current[styleName](...styles) : current[styleName];
|
||||
}
|
||||
|
||||
return current;
|
||||
}
|
||||
|
||||
module.exports = (chalk, temporary) => {
|
||||
const styles = [];
|
||||
const chunks = [];
|
||||
let chunk = [];
|
||||
|
||||
// eslint-disable-next-line max-params
|
||||
temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {
|
||||
if (escapeCharacter) {
|
||||
chunk.push(unescape(escapeCharacter));
|
||||
} else if (style) {
|
||||
const string = chunk.join('');
|
||||
chunk = [];
|
||||
chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));
|
||||
styles.push({inverse, styles: parseStyle(style)});
|
||||
} else if (close) {
|
||||
if (styles.length === 0) {
|
||||
throw new Error('Found extraneous } in Chalk template literal');
|
||||
}
|
||||
|
||||
chunks.push(buildStyle(chalk, styles)(chunk.join('')));
|
||||
chunk = [];
|
||||
styles.pop();
|
||||
} else {
|
||||
chunk.push(character);
|
||||
}
|
||||
});
|
||||
|
||||
chunks.push(chunk.join(''));
|
||||
|
||||
if (styles.length > 0) {
|
||||
const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
|
||||
throw new Error(errMessage);
|
||||
}
|
||||
|
||||
return chunks.join('');
|
||||
};
|
||||
39
extracted-source/node_modules/cli-highlight/node_modules/chalk/source/util.js
generated
vendored
Normal file
39
extracted-source/node_modules/cli-highlight/node_modules/chalk/source/util.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
'use strict';
|
||||
|
||||
const stringReplaceAll = (string, substring, replacer) => {
|
||||
let index = string.indexOf(substring);
|
||||
if (index === -1) {
|
||||
return string;
|
||||
}
|
||||
|
||||
const substringLength = substring.length;
|
||||
let endIndex = 0;
|
||||
let returnValue = '';
|
||||
do {
|
||||
returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;
|
||||
endIndex = index + substringLength;
|
||||
index = string.indexOf(substring, endIndex);
|
||||
} while (index !== -1);
|
||||
|
||||
returnValue += string.substr(endIndex);
|
||||
return returnValue;
|
||||
};
|
||||
|
||||
const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {
|
||||
let endIndex = 0;
|
||||
let returnValue = '';
|
||||
do {
|
||||
const gotCR = string[index - 1] === '\r';
|
||||
returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix;
|
||||
endIndex = index + 1;
|
||||
index = string.indexOf('\n', endIndex);
|
||||
} while (index !== -1);
|
||||
|
||||
returnValue += string.substr(endIndex);
|
||||
return returnValue;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
stringReplaceAll,
|
||||
stringEncaseCRLFWithFirstIndex
|
||||
};
|
||||
Reference in New Issue
Block a user