node_modules/chalk/source/index.js in immosquare-cleaner-0.1.22 vs node_modules/chalk/source/index.js in immosquare-cleaner-0.1.23
- old
+ new
@@ -1,21 +1,24 @@
-'use strict';
-const ansiStyles = require('ansi-styles');
-const {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');
-const {
+import ansiStyles from '#ansi-styles';
+import supportsColor from '#supports-color';
+import { // eslint-disable-line import/order
stringReplaceAll,
- stringEncaseCRLFWithFirstIndex
-} = require('./util');
+ stringEncaseCRLFWithFirstIndex,
+} from './utilities.js';
-const {isArray} = Array;
+const {stdout: stdoutColor, stderr: stderrColor} = supportsColor;
+const GENERATOR = Symbol('GENERATOR');
+const STYLER = Symbol('STYLER');
+const IS_EMPTY = Symbol('IS_EMPTY');
+
// `supportsColor.level` → `ansiStyles.color[name]` mapping
const levelMapping = [
'ansi',
'ansi',
'ansi256',
- 'ansi16m'
+ 'ansi16m',
];
const styles = Object.create(null);
const applyOptions = (object, options = {}) => {
@@ -26,95 +29,106 @@
// Detect level if not set manually
const colorLevel = stdoutColor ? stdoutColor.level : 0;
object.level = options.level === undefined ? colorLevel : options.level;
};
-class ChalkClass {
+export class Chalk {
constructor(options) {
// eslint-disable-next-line no-constructor-return
return chalkFactory(options);
}
}
const chalkFactory = options => {
- const chalk = {};
+ const chalk = (...strings) => strings.join(' ');
applyOptions(chalk, options);
- chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);
+ Object.setPrototypeOf(chalk, createChalk.prototype);
- 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;
+ return chalk;
};
-function Chalk(options) {
+function createChalk(options) {
return chalkFactory(options);
}
+Object.setPrototypeOf(createChalk.prototype, Function.prototype);
+
for (const [styleName, style] of Object.entries(ansiStyles)) {
styles[styleName] = {
get() {
- const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
Object.defineProperty(this, styleName, {value: builder});
return builder;
- }
+ },
};
}
styles.visible = {
get() {
- const builder = createBuilder(this, this._styler, true);
+ const builder = createBuilder(this, this[STYLER], true);
Object.defineProperty(this, 'visible', {value: builder});
return builder;
+ },
+};
+
+const getModelAnsi = (model, level, type, ...arguments_) => {
+ if (model === 'rgb') {
+ if (level === 'ansi16m') {
+ return ansiStyles[type].ansi16m(...arguments_);
+ }
+
+ if (level === 'ansi256') {
+ return ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));
+ }
+
+ return ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));
}
+
+ if (model === 'hex') {
+ return getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));
+ }
+
+ return ansiStyles[type][model](...arguments_);
};
-const usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];
+const usedModels = ['rgb', 'hex', '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);
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);
+ return createBuilder(this, styler, this[IS_EMPTY]);
};
- }
+ },
};
-}
-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 styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);
+ return createBuilder(this, styler, this[IS_EMPTY]);
};
- }
+ },
};
}
const proto = Object.defineProperties(() => {}, {
...styles,
level: {
enumerable: true,
get() {
- return this._generator.level;
+ return this[GENERATOR].level;
},
set(level) {
- this._generator.level = level;
- }
- }
+ this[GENERATOR].level = level;
+ },
+ },
});
const createStyler = (open, close, parent) => {
let openAll;
let closeAll;
@@ -129,50 +143,43 @@
return {
open,
close,
openAll,
closeAll,
- parent
+ 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
+ const builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));
- // 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;
+ builder[GENERATOR] = self;
+ builder[STYLER] = _styler;
+ builder[IS_EMPTY] = _isEmpty;
return builder;
};
const applyStyle = (self, string) => {
if (self.level <= 0 || !string) {
- return self._isEmpty ? '' : string;
+ return self[IS_EMPTY] ? '' : string;
}
- let styler = self._styler;
+ let styler = self[STYLER];
if (styler === undefined) {
return string;
}
const {openAll, closeAll} = styler;
- if (string.indexOf('\u001B') !== -1) {
+ if (string.includes('\u001B')) {
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);
@@ -190,40 +197,29 @@
}
return openAll + string + closeAll;
};
-let template;
-const chalkTag = (chalk, ...strings) => {
- const [firstString] = strings;
+Object.defineProperties(createChalk.prototype, styles);
- 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 chalk = createChalk();
+export const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});
- const arguments_ = strings.slice(1);
- const parts = [firstString.raw[0]];
+export {
+ modifierNames,
+ foregroundColorNames,
+ backgroundColorNames,
+ colorNames,
- for (let i = 1; i < firstString.length; i++) {
- parts.push(
- String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'),
- String(firstString.raw[i])
- );
- }
+ // TODO: Remove these aliases in the next major version
+ modifierNames as modifiers,
+ foregroundColorNames as foregroundColors,
+ backgroundColorNames as backgroundColors,
+ colorNames as colors,
+} from './vendor/ansi-styles/index.js';
- if (template === undefined) {
- template = require('./templates');
- }
-
- return template(chalk, parts.join(''));
+export {
+ stdoutColor as supportsColor,
+ stderrColor as supportsColorStderr,
};
-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;
+export default chalk;