diff --git a/packages/@yarn-tool/semver-diff/lib/colorize.js b/packages/@yarn-tool/semver-diff/lib/colorize.js index ac0321cf6..cc3e89a2f 100644 --- a/packages/@yarn-tool/semver-diff/lib/colorize.js +++ b/packages/@yarn-tool/semver-diff/lib/colorize.js @@ -8,7 +8,7 @@ const debug_color2_1 = require("debug-color2"); const core_1 = require("./core"); function colorizeDiff(from, to, options) { var _a; - if (options === null || options === void 0 ? void 0 : options.chalk) { + if ((options === null || options === void 0 ? void 0 : options.chalk) || (options === null || options === void 0 ? void 0 : options.stripAnsi)) { return core_1.colorizeDiffCore(from, to, options); } return debug_color2_1.chalkByConsole((chalk) => { diff --git a/packages/@yarn-tool/semver-diff/lib/colorize.ts b/packages/@yarn-tool/semver-diff/lib/colorize.ts index 21a04dbda..7062f54bf 100644 --- a/packages/@yarn-tool/semver-diff/lib/colorize.ts +++ b/packages/@yarn-tool/semver-diff/lib/colorize.ts @@ -12,7 +12,7 @@ export function colorizeDiff(from: string, options?: IOptionsParseVersionsDiff, ): string { - if (options?.chalk) + if (options?.chalk || options?.stripAnsi) { return colorizeDiffCore(from, to, options as any) } diff --git a/packages/@yarn-tool/semver-diff/lib/core.js b/packages/@yarn-tool/semver-diff/lib/core.js index de543adba..7eb9257af 100644 --- a/packages/@yarn-tool/semver-diff/lib/core.js +++ b/packages/@yarn-tool/semver-diff/lib/core.js @@ -32,13 +32,16 @@ function parseVersionsDiffCore(from, to, options) { } exports.parseVersionsDiffCore = parseVersionsDiffCore; function colorizeDiffCore(from, to, options) { - const { leadingWildcard, result, middot, resultAppend, color, comp, } = parseVersionsDiffCore(from, to, options); - const { chalk } = options; + let { leadingWildcard, result, middot, resultAppend, color, comp, } = parseVersionsDiffCore(from, to, options); + if (options.stripAnsi !== true) { + const { chalk } = options; + // @ts-ignore + resultAppend = (comp ? chalk[color](resultAppend) : chalk(resultAppend)); + } return leadingWildcard + result + middot + - // @ts-ignore - (comp ? chalk[color](resultAppend) : chalk(resultAppend)); + resultAppend; } exports.colorizeDiffCore = colorizeDiffCore; //# sourceMappingURL=core.js.map \ No newline at end of file diff --git a/packages/@yarn-tool/semver-diff/lib/core.ts b/packages/@yarn-tool/semver-diff/lib/core.ts index 68037999d..84491113a 100644 --- a/packages/@yarn-tool/semver-diff/lib/core.ts +++ b/packages/@yarn-tool/semver-diff/lib/core.ts @@ -49,7 +49,7 @@ export function parseVersionsDiffCore(from: string, to: string, options?: IOptio export function colorizeDiffCore(from: string, to: string, options?: ITSRequireAtLeastOne, ): string { - const { + let { leadingWildcard, result, middot, @@ -58,12 +58,17 @@ export function colorizeDiffCore(from: string, to: string, options?: ITSRequireA comp, } = parseVersionsDiffCore(from, to, options) - const { chalk } = options; + if (options.stripAnsi !== true) + { + const { chalk } = options; + + // @ts-ignore + resultAppend = (comp ? chalk[color](resultAppend) : chalk(resultAppend)) + } return leadingWildcard + result + middot + - // @ts-ignore - (comp ? chalk[color](resultAppend) : chalk(resultAppend)) + resultAppend } diff --git a/packages/@yarn-tool/semver-diff/lib/types.d.ts b/packages/@yarn-tool/semver-diff/lib/types.d.ts index b937680a3..05d61a94f 100644 --- a/packages/@yarn-tool/semver-diff/lib/types.d.ts +++ b/packages/@yarn-tool/semver-diff/lib/types.d.ts @@ -30,4 +30,5 @@ export interface IOptionsParseVersionsDiffPlus { } export interface IOptionsParseVersionsDiff extends IOptionsParseVersionsDiffPlus { _colors?: [IStylesColorNames, IStylesColorNames, IStylesColorNames]; + stripAnsi?: boolean; } diff --git a/packages/@yarn-tool/semver-diff/lib/types.ts b/packages/@yarn-tool/semver-diff/lib/types.ts index 503925884..b481ba446 100644 --- a/packages/@yarn-tool/semver-diff/lib/types.ts +++ b/packages/@yarn-tool/semver-diff/lib/types.ts @@ -36,4 +36,6 @@ export interface IOptionsParseVersionsDiffPlus export interface IOptionsParseVersionsDiff extends IOptionsParseVersionsDiffPlus { _colors?: [IStylesColorNames, IStylesColorNames, IStylesColorNames], + + stripAnsi?: boolean, } diff --git a/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.js b/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.js index cd964cad5..d09218dbf 100644 --- a/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.js +++ b/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.js @@ -1,4 +1,7 @@ "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildDiffTable = void 0; const formatVersion_1 = require("./formatVersion"); @@ -6,6 +9,7 @@ const diffArray002_1 = require("./diffArray002"); const index_1 = require("@yarn-tool/semver-diff/index"); const core_1 = require("@yarn-tool/table/lib/core"); const index_2 = require("debug-color2/index"); +const strip_ansi_1 = __importDefault(require("strip-ansi")); function buildDiffTable(diff, options) { var _a; // @ts-ignore @@ -54,7 +58,11 @@ function buildDiffTable(diff, options) { _arr && (formatedDiff[path] = _arr); }); table.push(...Object.values(formatedDiff)); - return _ok ? table.toString() : ''; + let output = _ok ? table.toString() : ''; + if ((options === null || options === void 0 ? void 0 : options.stripAnsi) === true) { + output = strip_ansi_1.default(output); + } + return _ok ? output : ''; } exports.buildDiffTable = buildDiffTable; //# sourceMappingURL=buildDiffTable002.js.map \ No newline at end of file diff --git a/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.ts b/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.ts index cafcaf92d..2f07b41d8 100644 --- a/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.ts +++ b/packages/@yarn-tool/yarnlock-diff/lib/formatter/buildDiffTable002.ts @@ -8,6 +8,7 @@ import { colorizeDiff, IOptionsParseVersionsDiff } from '@yarn-tool/semver-diff/ import { createDependencyTable } from '@yarn-tool/table/lib/core'; import { IChalk } from 'debug-color2/index' import { console, chalkByConsoleMaybe } from 'debug-color2/index'; +import stripAnsi from 'strip-ansi'; export function buildDiffTable(diff: Diff[], options?: IOptionsParseVersionsDiff): string { @@ -83,8 +84,15 @@ export function buildDiffTable(diff: Diff[], }) ; - table.push(...Object.values(formatedDiff)) + table.push(...Object.values(formatedDiff)); - return _ok ? table.toString() : ''; + let output = _ok ? table.toString() : ''; + + if (options?.stripAnsi === true) + { + output = stripAnsi(output); + } + + return _ok ? output : ''; } diff --git a/packages/@yarn-tool/yarnlock-diff/test/yarnLockDiff.spec.ts b/packages/@yarn-tool/yarnlock-diff/test/yarnLockDiff.spec.ts new file mode 100644 index 000000000..3dfc44235 --- /dev/null +++ b/packages/@yarn-tool/yarnlock-diff/test/yarnLockDiff.spec.ts @@ -0,0 +1,37 @@ +import { join } from 'path'; +import FastGlob from '@bluelovers/fast-glob'; +import { readFileSync } from 'fs'; +import { buildDiff } from '../lib/diff-service'; +import yarnLockDiff from '../index'; + +describe(`yarnLockDiff`, () => +{ + const __res = join(__dirname, 'fixtures'); + + const files = FastGlob.sync([ + '*.lock', + ], { + cwd: join(__res, 'a'), + }) + ; + + files.forEach(file => + { + + test(file, () => + { + const yarnlock_old = readFileSync(join(__res, 'a', file)); + const yarnlock_new = readFileSync(join(__res, 'b', file)); + + let actual = yarnLockDiff(yarnlock_old, yarnlock_new, { + stripAnsi: true, + }); + + expect(actual).toMatchSnapshot(); + + }); + + }) + ; + +})