@ms-cloudpack/task-reporter
Advanced tools
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.bold = exports.lightGrey = exports.grey = exports.darkGrey = exports.lightBlack = exports.black = exports.lightWhite = exports.white = exports.lightCyan = exports.cyan = exports.lightMagenta = exports.magenta = exports.lightBlue = exports.blue = exports.lightYellow = exports.yellow = exports.lightGreen = exports.green = exports.lightRed = exports.red = exports.clearLine = exports.gradient = exports.moveDownLines = exports.moveUpLines = exports.disableAnsi = void 0; | ||
| exports.bold = exports.lightGrey = exports.grey = exports.darkGrey = exports.lightBlack = exports.black = exports.lightWhite = exports.white = exports.lightCyan = exports.cyan = exports.lightMagenta = exports.magenta = exports.lightBlue = exports.blue = exports.lightYellow = exports.yellow = exports.lightGreen = exports.green = exports.lightRed = exports.red = exports.clearLine = exports.gradient = exports.moveDownLines = exports.moveUpLines = void 0; | ||
| const write_js_1 = require("./write.cjs"); | ||
| const ansiEscape = '\x1b['; | ||
| let ansiDisabled = false; | ||
| const isAnsiDisabled = process.argv.includes('--no-color') || process.argv.includes('-n'); | ||
| const ansiCodes = { | ||
@@ -33,10 +33,2 @@ bold: `${ansiEscape}1m`, | ||
| }; | ||
| /** | ||
| * Sets the mode of ansi helpers. Disabling ansi is useful for text-only scenarios where | ||
| * ansi codes can't be processed. | ||
| */ | ||
| function disableAnsi(disabled) { | ||
| ansiDisabled = disabled; | ||
| } | ||
| exports.disableAnsi = disableAnsi; | ||
| /* | ||
@@ -46,3 +38,3 @@ * Moves the cursor up N lines. | ||
| function moveUpLines(count = 1) { | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return; | ||
@@ -59,3 +51,3 @@ } | ||
| function moveDownLines(count = 1) { | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return; | ||
@@ -75,3 +67,3 @@ } | ||
| } | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return text; | ||
@@ -95,3 +87,3 @@ } | ||
| function clearLine() { | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return; | ||
@@ -107,3 +99,3 @@ } | ||
| } | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return String(text); | ||
@@ -110,0 +102,0 @@ } |
@@ -1,6 +0,1 @@ | ||
| /** | ||
| * Sets the mode of ansi helpers. Disabling ansi is useful for text-only scenarios where | ||
| * ansi codes can't be processed. | ||
| */ | ||
| export declare function disableAnsi(disabled: boolean): void; | ||
| export declare function moveUpLines(count?: number): void; | ||
@@ -7,0 +2,0 @@ export declare function moveDownLines(count?: number): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ansiHelpers.d.ts","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":"AA+BA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,QAE5C;AAKD,wBAAgB,WAAW,CAAC,KAAK,SAAI,QAQpC;AAKD,wBAAgB,aAAa,CAAC,KAAK,SAAI,QAQtC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAe,EAC5C,EAAE,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAiB,UAuB7C;AAKD,wBAAgB,SAAS,SAMxB;AA6BD,eAAO,MAAM,GAAG,UA1BC,MAAM,GAAG,MAAM,KAAG,MA0BkB,CAAC;AAKtD,eAAO,MAAM,QAAQ,UA/BJ,MAAM,GAAG,MAAM,KAAG,MA+B4B,CAAC;AAKhE,eAAO,MAAM,KAAK,UApCD,MAAM,GAAG,MAAM,KAAG,MAoCsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UAzCN,MAAM,GAAG,MAAM,KAAG,MAyCgC,CAAC;AAKpE,eAAO,MAAM,MAAM,UA9CF,MAAM,GAAG,MAAM,KAAG,MA8CwB,CAAC;AAK5D,eAAO,MAAM,WAAW,UAnDP,MAAM,GAAG,MAAM,KAAG,MAmDkC,CAAC;AAKtE,eAAO,MAAM,IAAI,UAxDA,MAAM,GAAG,MAAM,KAAG,MAwDoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UA7DL,MAAM,GAAG,MAAM,KAAG,MA6D8B,CAAC;AAKlE,eAAO,MAAM,OAAO,UAlEH,MAAM,GAAG,MAAM,KAAG,MAkE0B,CAAC;AAK9D,eAAO,MAAM,YAAY,UAvER,MAAM,GAAG,MAAM,KAAG,MAuEoC,CAAC;AAKxE,eAAO,MAAM,IAAI,UA5EA,MAAM,GAAG,MAAM,KAAG,MA4EoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UAjFL,MAAM,GAAG,MAAM,KAAG,MAiF8B,CAAC;AAKlE,eAAO,MAAM,KAAK,UAtFD,MAAM,GAAG,MAAM,KAAG,MAsFsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UA3FN,MAAM,GAAG,MAAM,KAAG,MA2FgC,CAAC;AAKpE,eAAO,MAAM,KAAK,UAhGD,MAAM,GAAG,MAAM,KAAG,MAgGsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UArGN,MAAM,GAAG,MAAM,KAAG,MAqGgC,CAAC;AAKpE,eAAO,MAAM,QAAQ,UA1GJ,MAAM,GAAG,MAAM,KAAG,MA0G4B,CAAC;AAKhE,eAAO,MAAM,IAAI,UA/GA,MAAM,GAAG,MAAM,KAAG,MA+GoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UApHL,MAAM,GAAG,MAAM,KAAG,MAoH8B,CAAC;AAKlE,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,UAM1C"} | ||
| {"version":3,"file":"ansiHelpers.d.ts","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":"AAmCA,wBAAgB,WAAW,CAAC,KAAK,SAAI,QAQpC;AAKD,wBAAgB,aAAa,CAAC,KAAK,SAAI,QAQtC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAe,EAC5C,EAAE,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAiB,UAuB7C;AAKD,wBAAgB,SAAS,SAMxB;AA6BD,eAAO,MAAM,GAAG,UA1BC,MAAM,GAAG,MAAM,KAAG,MA0BkB,CAAC;AAKtD,eAAO,MAAM,QAAQ,UA/BJ,MAAM,GAAG,MAAM,KAAG,MA+B4B,CAAC;AAKhE,eAAO,MAAM,KAAK,UApCD,MAAM,GAAG,MAAM,KAAG,MAoCsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UAzCN,MAAM,GAAG,MAAM,KAAG,MAyCgC,CAAC;AAKpE,eAAO,MAAM,MAAM,UA9CF,MAAM,GAAG,MAAM,KAAG,MA8CwB,CAAC;AAK5D,eAAO,MAAM,WAAW,UAnDP,MAAM,GAAG,MAAM,KAAG,MAmDkC,CAAC;AAKtE,eAAO,MAAM,IAAI,UAxDA,MAAM,GAAG,MAAM,KAAG,MAwDoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UA7DL,MAAM,GAAG,MAAM,KAAG,MA6D8B,CAAC;AAKlE,eAAO,MAAM,OAAO,UAlEH,MAAM,GAAG,MAAM,KAAG,MAkE0B,CAAC;AAK9D,eAAO,MAAM,YAAY,UAvER,MAAM,GAAG,MAAM,KAAG,MAuEoC,CAAC;AAKxE,eAAO,MAAM,IAAI,UA5EA,MAAM,GAAG,MAAM,KAAG,MA4EoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UAjFL,MAAM,GAAG,MAAM,KAAG,MAiF8B,CAAC;AAKlE,eAAO,MAAM,KAAK,UAtFD,MAAM,GAAG,MAAM,KAAG,MAsFsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UA3FN,MAAM,GAAG,MAAM,KAAG,MA2FgC,CAAC;AAKpE,eAAO,MAAM,KAAK,UAhGD,MAAM,GAAG,MAAM,KAAG,MAgGsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UArGN,MAAM,GAAG,MAAM,KAAG,MAqGgC,CAAC;AAKpE,eAAO,MAAM,QAAQ,UA1GJ,MAAM,GAAG,MAAM,KAAG,MA0G4B,CAAC;AAKhE,eAAO,MAAM,IAAI,UA/GA,MAAM,GAAG,MAAM,KAAG,MA+GoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UApHL,MAAM,GAAG,MAAM,KAAG,MAoH8B,CAAC;AAKlE,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,UAM1C"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ansiHelpers.js","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AAEnC,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,GAAG,UAAU,IAAI;IACvB,cAAc,EAAE,GAAG,UAAU,KAAK;IAClC,iBAAiB,EAAE,GAAG,UAAU,KAAK;IACrC,cAAc,EAAE,GAAG,UAAU,KAAK;IAClC,iBAAiB,EAAE,GAAG,UAAU,KAAK;IACrC,GAAG,EAAE,GAAG,UAAU,KAAK;IACvB,QAAQ,EAAE,GAAG,UAAU,KAAK;IAC5B,KAAK,EAAE,GAAG,UAAU,KAAK;IACzB,UAAU,EAAE,GAAG,UAAU,KAAK;IAC9B,MAAM,EAAE,GAAG,UAAU,KAAK;IAC1B,WAAW,EAAE,GAAG,UAAU,KAAK;IAC/B,IAAI,EAAE,GAAG,UAAU,KAAK;IACxB,SAAS,EAAE,GAAG,UAAU,KAAK;IAC7B,OAAO,EAAE,GAAG,UAAU,KAAK;IAC3B,YAAY,EAAE,GAAG,UAAU,KAAK;IAChC,IAAI,EAAE,GAAG,UAAU,KAAK;IACxB,SAAS,EAAE,GAAG,UAAU,KAAK;IAC7B,KAAK,EAAE,GAAG,UAAU,KAAK;IACzB,UAAU,EAAE,GAAG,UAAU,KAAK;IAC9B,KAAK,EAAE,GAAG,UAAU,KAAK;IACzB,UAAU,EAAE,GAAG,UAAU,KAAK;IAC9B,QAAQ,EAAE,GAAG,UAAU,KAAK;IAC5B,IAAI,EAAE,GAAG,UAAU,KAAK;IACxB,SAAS,EAAE,GAAG,UAAU,KAAK;CAC9B,CAAC;AAEF;;;GAGG;AACH,SAAgB,WAAW,CAAC,QAAiB;IAC3C,YAAY,GAAG,QAAQ,CAAC;AAC1B,CAAC;AAFD,kCAEC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAK,GAAG,CAAC;IACnC,IAAI,YAAY,EAAE;QAChB,OAAO;KACR;IAED,IAAI,KAAK,EAAE;QACT,IAAA,gBAAK,EAAC,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;KACjC;AACH,CAAC;AARD,kCAQC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAK,GAAG,CAAC;IACrC,IAAI,YAAY,EAAE;QAChB,OAAO;KACR;IAED,IAAI,KAAK,EAAE;QACT,IAAA,gBAAK,EAAC,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;KACjC;AACH,CAAC;AARD,sCAQC;AAED;;GAEG;AACH,SAAgB,QAAQ,CACtB,IAAa,EACb,OAAiC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5C,KAA+B,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5C,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,OAAO,EAAE,CAAC;KACX;IAED,IAAI,YAAY,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,iHAAiH;QACjH,2DAA2D;QAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,CAAC;KACzE;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA1BD,4BA0BC;AAED;;GAEG;AACH,SAAgB,SAAS;IACvB,IAAI,YAAY,EAAE;QAChB,OAAO;KACR;IAED,IAAA,gBAAK,EAAC,GAAG,UAAU,IAAI,CAAC,CAAC;AAC3B,CAAC;AAND,8BAMC;AAED,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO,CAAC,IAAsB,EAAU,EAAE;QACxC,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QAED,IAAI,YAAY,EAAE;YAChB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACrB;QAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjF,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;YAC7B,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAEtF,kFAAkF;YAClF,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;SAC/G;QAED,MAAM,MAAM,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAEnE,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACU,QAAA,GAAG,GAAG,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAEtD;;GAEG;AACU,QAAA,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhE;;GAEG;AACU,QAAA,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAE1D;;GAEG;AACU,QAAA,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAEpE;;GAEG;AACU,QAAA,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAE5D;;GAEG;AACU,QAAA,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAEtE;;GAEG;AACU,QAAA,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAExD;;GAEG;AACU,QAAA,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAElE;;GAEG;AACU,QAAA,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAE9D;;GAEG;AACU,QAAA,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAExE;;GAEG;AACU,QAAA,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAExD;;GAEG;AACU,QAAA,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAElE;;GAEG;AACU,QAAA,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAE1D;;GAEG;AACU,QAAA,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAEpE;;GAEG;AACU,QAAA,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAE1D;;GAEG;AACU,QAAA,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAEpE;;GAEG;AACU,QAAA,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhE;;GAEG;AACU,QAAA,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAExD;;GAEG;AACU,QAAA,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAElE;;GAEG;AACH,SAAgB,IAAI,CAAC,IAAsB;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,OAAO,EAAE,CAAC;KACX;IAED,OAAO,GAAG,UAAU,KAAK,IAAI,GAAG,UAAU,KAAK,CAAC;AAClD,CAAC;AAND,oBAMC","sourcesContent":["import { write } from './write.js';\n\nconst ansiEscape = '\\x1b[';\nlet ansiDisabled = false;\nconst ansiCodes = {\n bold: `${ansiEscape}1m`,\n saveForeground: `${ansiEscape}38m`,\n restoreForeground: `${ansiEscape}39m`,\n saveBackground: `${ansiEscape}48m`,\n restoreBackground: `${ansiEscape}49m`,\n red: `${ansiEscape}31m`,\n lightRed: `${ansiEscape}91m`,\n green: `${ansiEscape}32m`,\n lightGreen: `${ansiEscape}92m`,\n yellow: `${ansiEscape}33m`,\n lightYellow: `${ansiEscape}93m`,\n blue: `${ansiEscape}34m`,\n lightBlue: `${ansiEscape}94m`,\n magenta: `${ansiEscape}35m`,\n lightMagenta: `${ansiEscape}95m`,\n cyan: `${ansiEscape}36m`,\n lightCyan: `${ansiEscape}96m`,\n white: `${ansiEscape}37m`,\n lightWhite: `${ansiEscape}97m`,\n black: `${ansiEscape}30m`,\n lightBlack: `${ansiEscape}90m`,\n darkGrey: `${ansiEscape}90m`,\n grey: `${ansiEscape}90m`,\n lightGrey: `${ansiEscape}37m`,\n};\n\n/**\n * Sets the mode of ansi helpers. Disabling ansi is useful for text-only scenarios where\n * ansi codes can't be processed.\n */\nexport function disableAnsi(disabled: boolean) {\n ansiDisabled = disabled;\n}\n\n/*\n * Moves the cursor up N lines.\n */\nexport function moveUpLines(count = 1) {\n if (ansiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}A`);\n }\n}\n\n/*\n * Moves the cursor down N lines.\n */\nexport function moveDownLines(count = 1) {\n if (ansiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}B`);\n }\n}\n\n/**\n * Writes a string with rgb color gradient, defaulting from red to orange.\n */\nexport function gradient(\n text?: string,\n from: [number, number, number] = [255, 0, 0],\n to: [number, number, number] = [255, 165, 0],\n) {\n if (text === undefined) {\n return '';\n }\n\n if (ansiDisabled) {\n return text;\n }\n\n let result = '';\n\n for (let i = 0; i < text.length; i++) {\n // Compute the rgb values for the current character where the first color should match \"from\" and the last should\n // match \"to\", and values inbetween should be interpolated.\n const r = Math.floor(from[0] + (to[0] - from[0]) * (i / text.length));\n const g = Math.floor(from[1] + (to[1] - from[1]) * (i / text.length));\n const b = Math.floor(from[2] + (to[2] - from[2]) * (i / text.length));\n\n result += `${ansiEscape}38;2;${r};${g};${b}m${text[i]}${ansiEscape}39m`;\n }\n\n return result;\n}\n\n/*\n * Clears the current line.\n */\nexport function clearLine() {\n if (ansiDisabled) {\n return;\n }\n\n write(`${ansiEscape}2K`);\n}\n\nfunction createColorFunction(colorCode: string) {\n return (text?: string | number): string => {\n if (text === undefined) {\n return '';\n }\n\n if (ansiDisabled) {\n return String(text);\n }\n\n const indexOfLastRestore = String(text).lastIndexOf(ansiCodes.restoreForeground);\n if (indexOfLastRestore !== -1) {\n const indexAfterLastRestore = indexOfLastRestore + ansiCodes.restoreForeground.length;\n\n // If the text contains a restore code at the end, insert the color code after it.\n text = `${String(text).slice(0, indexOfLastRestore)}${colorCode}${String(text).slice(indexAfterLastRestore)}`;\n }\n\n const result = `${colorCode}${text}${ansiCodes.restoreForeground}`;\n\n return result;\n };\n}\n\n/*\n *\n */\nexport const red = createColorFunction(ansiCodes.red);\n\n/*\n *\n */\nexport const lightRed = createColorFunction(ansiCodes.lightRed);\n\n/*\n *\n */\nexport const green = createColorFunction(ansiCodes.green);\n\n/*\n *\n */\nexport const lightGreen = createColorFunction(ansiCodes.lightGreen);\n\n/*\n *\n */\nexport const yellow = createColorFunction(ansiCodes.yellow);\n\n/*\n *\n */\nexport const lightYellow = createColorFunction(ansiCodes.lightYellow);\n\n/*\n *\n */\nexport const blue = createColorFunction(ansiCodes.blue);\n\n/*\n *\n */\nexport const lightBlue = createColorFunction(ansiCodes.lightBlue);\n\n/*\n *\n */\nexport const magenta = createColorFunction(ansiCodes.magenta);\n\n/*\n *\n */\nexport const lightMagenta = createColorFunction(ansiCodes.lightMagenta);\n\n/*\n *\n */\nexport const cyan = createColorFunction(ansiCodes.cyan);\n\n/*\n *\n */\nexport const lightCyan = createColorFunction(ansiCodes.lightCyan);\n\n/*\n *\n */\nexport const white = createColorFunction(ansiCodes.white);\n\n/*\n *\n */\nexport const lightWhite = createColorFunction(ansiCodes.lightWhite);\n\n/*\n *\n */\nexport const black = createColorFunction(ansiCodes.black);\n\n/*\n *\n */\nexport const lightBlack = createColorFunction(ansiCodes.lightBlack);\n\n/*\n *\n */\nexport const darkGrey = createColorFunction(ansiCodes.darkGrey);\n\n/*\n *\n */\nexport const grey = createColorFunction(ansiCodes.grey);\n\n/*\n *\n */\nexport const lightGrey = createColorFunction(ansiCodes.lightGrey);\n\n/*\n * Writes text as bold.\n */\nexport function bold(text?: string | number) {\n if (text === undefined) {\n return '';\n }\n\n return `${ansiEscape}1m${text}${ansiEscape}22m`;\n}\n"]} | ||
| {"version":3,"file":"ansiHelpers.js","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { write } from './write.js';\n\nconst ansiEscape = '\\x1b[';\nconst isAnsiDisabled = process.argv.includes('--no-color') || process.argv.includes('-n');\n\nconst ansiCodes = {\n bold: `${ansiEscape}1m`,\n saveForeground: `${ansiEscape}38m`,\n restoreForeground: `${ansiEscape}39m`,\n saveBackground: `${ansiEscape}48m`,\n restoreBackground: `${ansiEscape}49m`,\n red: `${ansiEscape}31m`,\n lightRed: `${ansiEscape}91m`,\n green: `${ansiEscape}32m`,\n lightGreen: `${ansiEscape}92m`,\n yellow: `${ansiEscape}33m`,\n lightYellow: `${ansiEscape}93m`,\n blue: `${ansiEscape}34m`,\n lightBlue: `${ansiEscape}94m`,\n magenta: `${ansiEscape}35m`,\n lightMagenta: `${ansiEscape}95m`,\n cyan: `${ansiEscape}36m`,\n lightCyan: `${ansiEscape}96m`,\n white: `${ansiEscape}37m`,\n lightWhite: `${ansiEscape}97m`,\n black: `${ansiEscape}30m`,\n lightBlack: `${ansiEscape}90m`,\n darkGrey: `${ansiEscape}90m`,\n grey: `${ansiEscape}90m`,\n lightGrey: `${ansiEscape}37m`,\n};\n\n/*\n * Moves the cursor up N lines.\n */\nexport function moveUpLines(count = 1) {\n if (isAnsiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}A`);\n }\n}\n\n/*\n * Moves the cursor down N lines.\n */\nexport function moveDownLines(count = 1) {\n if (isAnsiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}B`);\n }\n}\n\n/**\n * Writes a string with rgb color gradient, defaulting from red to orange.\n */\nexport function gradient(\n text?: string,\n from: [number, number, number] = [255, 0, 0],\n to: [number, number, number] = [255, 165, 0],\n) {\n if (text === undefined) {\n return '';\n }\n\n if (isAnsiDisabled) {\n return text;\n }\n\n let result = '';\n\n for (let i = 0; i < text.length; i++) {\n // Compute the rgb values for the current character where the first color should match \"from\" and the last should\n // match \"to\", and values inbetween should be interpolated.\n const r = Math.floor(from[0] + (to[0] - from[0]) * (i / text.length));\n const g = Math.floor(from[1] + (to[1] - from[1]) * (i / text.length));\n const b = Math.floor(from[2] + (to[2] - from[2]) * (i / text.length));\n\n result += `${ansiEscape}38;2;${r};${g};${b}m${text[i]}${ansiEscape}39m`;\n }\n\n return result;\n}\n\n/*\n * Clears the current line.\n */\nexport function clearLine() {\n if (isAnsiDisabled) {\n return;\n }\n\n write(`${ansiEscape}2K`);\n}\n\nfunction createColorFunction(colorCode: string) {\n return (text?: string | number): string => {\n if (text === undefined) {\n return '';\n }\n\n if (isAnsiDisabled) {\n return String(text);\n }\n\n const indexOfLastRestore = String(text).lastIndexOf(ansiCodes.restoreForeground);\n if (indexOfLastRestore !== -1) {\n const indexAfterLastRestore = indexOfLastRestore + ansiCodes.restoreForeground.length;\n\n // If the text contains a restore code at the end, insert the color code after it.\n text = `${String(text).slice(0, indexOfLastRestore)}${colorCode}${String(text).slice(indexAfterLastRestore)}`;\n }\n\n const result = `${colorCode}${text}${ansiCodes.restoreForeground}`;\n\n return result;\n };\n}\n\n/*\n *\n */\nexport const red = createColorFunction(ansiCodes.red);\n\n/*\n *\n */\nexport const lightRed = createColorFunction(ansiCodes.lightRed);\n\n/*\n *\n */\nexport const green = createColorFunction(ansiCodes.green);\n\n/*\n *\n */\nexport const lightGreen = createColorFunction(ansiCodes.lightGreen);\n\n/*\n *\n */\nexport const yellow = createColorFunction(ansiCodes.yellow);\n\n/*\n *\n */\nexport const lightYellow = createColorFunction(ansiCodes.lightYellow);\n\n/*\n *\n */\nexport const blue = createColorFunction(ansiCodes.blue);\n\n/*\n *\n */\nexport const lightBlue = createColorFunction(ansiCodes.lightBlue);\n\n/*\n *\n */\nexport const magenta = createColorFunction(ansiCodes.magenta);\n\n/*\n *\n */\nexport const lightMagenta = createColorFunction(ansiCodes.lightMagenta);\n\n/*\n *\n */\nexport const cyan = createColorFunction(ansiCodes.cyan);\n\n/*\n *\n */\nexport const lightCyan = createColorFunction(ansiCodes.lightCyan);\n\n/*\n *\n */\nexport const white = createColorFunction(ansiCodes.white);\n\n/*\n *\n */\nexport const lightWhite = createColorFunction(ansiCodes.lightWhite);\n\n/*\n *\n */\nexport const black = createColorFunction(ansiCodes.black);\n\n/*\n *\n */\nexport const lightBlack = createColorFunction(ansiCodes.lightBlack);\n\n/*\n *\n */\nexport const darkGrey = createColorFunction(ansiCodes.darkGrey);\n\n/*\n *\n */\nexport const grey = createColorFunction(ansiCodes.grey);\n\n/*\n *\n */\nexport const lightGrey = createColorFunction(ansiCodes.lightGrey);\n\n/*\n * Writes text as bold.\n */\nexport function bold(text?: string | number) {\n if (text === undefined) {\n return '';\n }\n\n return `${ansiEscape}1m${text}${ansiEscape}22m`;\n}\n"]} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.TaskReporterTask = exports.TaskReporter = exports.plural = exports.formatPackageName = exports.verboseLoggingConfig = exports.noLoggingConfig = exports.defaultLoggingConfig = exports.debugLoggingConfig = exports.bulletedList = exports.yellow = exports.white = exports.disableAnsi = exports.red = exports.moveUpLines = exports.moveDownLines = exports.magenta = exports.lightYellow = exports.lightWhite = exports.lightRed = exports.lightMagenta = exports.lightGrey = exports.lightGreen = exports.lightCyan = exports.lightBlue = exports.lightBlack = exports.grey = exports.green = exports.gradient = exports.darkGrey = exports.cyan = exports.clearLine = exports.bold = exports.blue = exports.black = void 0; | ||
| exports.TaskReporterTask = exports.TaskReporter = exports.plural = exports.formatPackageName = exports.verboseLoggingConfig = exports.noLoggingConfig = exports.defaultLoggingConfig = exports.debugLoggingConfig = exports.bulletedList = exports.yellow = exports.white = exports.red = exports.moveUpLines = exports.moveDownLines = exports.magenta = exports.lightYellow = exports.lightWhite = exports.lightRed = exports.lightMagenta = exports.lightGrey = exports.lightGreen = exports.lightCyan = exports.lightBlue = exports.lightBlack = exports.grey = exports.green = exports.gradient = exports.darkGrey = exports.cyan = exports.clearLine = exports.bold = exports.blue = exports.black = void 0; | ||
| var ansiHelpers_js_1 = require("./ansiHelpers.cjs"); | ||
@@ -27,3 +27,2 @@ Object.defineProperty(exports, "black", { enumerable: true, get: function () { return ansiHelpers_js_1.black; } }); | ||
| Object.defineProperty(exports, "red", { enumerable: true, get: function () { return ansiHelpers_js_1.red; } }); | ||
| Object.defineProperty(exports, "disableAnsi", { enumerable: true, get: function () { return ansiHelpers_js_1.disableAnsi; } }); | ||
| Object.defineProperty(exports, "white", { enumerable: true, get: function () { return ansiHelpers_js_1.white; } }); | ||
@@ -30,0 +29,0 @@ Object.defineProperty(exports, "yellow", { enumerable: true, get: function () { return ansiHelpers_js_1.yellow; } }); |
@@ -1,2 +0,2 @@ | ||
| export { black, blue, bold, clearLine, cyan, darkGrey, gradient, green, grey, lightBlack, lightBlue, lightCyan, lightGreen, lightGrey, lightMagenta, lightRed, lightWhite, lightYellow, magenta, moveDownLines, moveUpLines, red, disableAnsi, white, yellow, } from './ansiHelpers.js'; | ||
| export { black, blue, bold, clearLine, cyan, darkGrey, gradient, green, grey, lightBlack, lightBlue, lightCyan, lightGreen, lightGrey, lightMagenta, lightRed, lightWhite, lightYellow, magenta, moveDownLines, moveUpLines, red, white, yellow, } from './ansiHelpers.js'; | ||
| export { bulletedList, type BulletList } from './bulletedList.js'; | ||
@@ -3,0 +3,0 @@ export { debugLoggingConfig, defaultLoggingConfig, noLoggingConfig, verboseLoggingConfig } from './configs.js'; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,GAAG,EACH,WAAW,EACX,KAAK,EACL,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,GAAG,EACH,KAAK,EACL,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDA0B0B;AAzBxB,uGAAA,KAAK,OAAA;AACL,sGAAA,IAAI,OAAA;AACJ,sGAAA,IAAI,OAAA;AACJ,2GAAA,SAAS,OAAA;AACT,sGAAA,IAAI,OAAA;AACJ,0GAAA,QAAQ,OAAA;AACR,0GAAA,QAAQ,OAAA;AACR,uGAAA,KAAK,OAAA;AACL,sGAAA,IAAI,OAAA;AACJ,4GAAA,UAAU,OAAA;AACV,2GAAA,SAAS,OAAA;AACT,2GAAA,SAAS,OAAA;AACT,4GAAA,UAAU,OAAA;AACV,2GAAA,SAAS,OAAA;AACT,8GAAA,YAAY,OAAA;AACZ,0GAAA,QAAQ,OAAA;AACR,4GAAA,UAAU,OAAA;AACV,6GAAA,WAAW,OAAA;AACX,yGAAA,OAAO,OAAA;AACP,+GAAA,aAAa,OAAA;AACb,6GAAA,WAAW,OAAA;AACX,qGAAA,GAAG,OAAA;AACH,6GAAA,WAAW,OAAA;AACX,uGAAA,KAAK,OAAA;AACL,wGAAA,MAAM,OAAA;AAER,qDAAkE;AAAzD,+GAAA,YAAY,OAAA;AACrB,2CAA+G;AAAtG,gHAAA,kBAAkB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AACxF,uDAAuD;AAA9C,qHAAA,iBAAiB,OAAA;AAC1B,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AACf,qDAA2E;AAAlE,+GAAA,YAAY,OAAA;AACrB,6DAAmH;AAA1G,uHAAA,gBAAgB,OAAA","sourcesContent":["export {\n black,\n blue,\n bold,\n clearLine,\n cyan,\n darkGrey,\n gradient,\n green,\n grey,\n lightBlack,\n lightBlue,\n lightCyan,\n lightGreen,\n lightGrey,\n lightMagenta,\n lightRed,\n lightWhite,\n lightYellow,\n magenta,\n moveDownLines,\n moveUpLines,\n red,\n disableAnsi,\n white,\n yellow,\n} from './ansiHelpers.js';\nexport { bulletedList, type BulletList } from './bulletedList.js';\nexport { debugLoggingConfig, defaultLoggingConfig, noLoggingConfig, verboseLoggingConfig } from './configs.js';\nexport { formatPackageName } from './formatHelpers.js';\nexport { plural } from './plural.js';\nexport { TaskReporter, type TaskReporterOptions } from './TaskReporter.js';\nexport { TaskReporterTask, type TaskReporterTaskResult, type TaskReporterTaskStatus } from './TaskReporterTask.js';\n"]} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAyB0B;AAxBxB,uGAAA,KAAK,OAAA;AACL,sGAAA,IAAI,OAAA;AACJ,sGAAA,IAAI,OAAA;AACJ,2GAAA,SAAS,OAAA;AACT,sGAAA,IAAI,OAAA;AACJ,0GAAA,QAAQ,OAAA;AACR,0GAAA,QAAQ,OAAA;AACR,uGAAA,KAAK,OAAA;AACL,sGAAA,IAAI,OAAA;AACJ,4GAAA,UAAU,OAAA;AACV,2GAAA,SAAS,OAAA;AACT,2GAAA,SAAS,OAAA;AACT,4GAAA,UAAU,OAAA;AACV,2GAAA,SAAS,OAAA;AACT,8GAAA,YAAY,OAAA;AACZ,0GAAA,QAAQ,OAAA;AACR,4GAAA,UAAU,OAAA;AACV,6GAAA,WAAW,OAAA;AACX,yGAAA,OAAO,OAAA;AACP,+GAAA,aAAa,OAAA;AACb,6GAAA,WAAW,OAAA;AACX,qGAAA,GAAG,OAAA;AACH,uGAAA,KAAK,OAAA;AACL,wGAAA,MAAM,OAAA;AAER,qDAAkE;AAAzD,+GAAA,YAAY,OAAA;AACrB,2CAA+G;AAAtG,gHAAA,kBAAkB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AACxF,uDAAuD;AAA9C,qHAAA,iBAAiB,OAAA;AAC1B,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AACf,qDAA2E;AAAlE,+GAAA,YAAY,OAAA;AACrB,6DAAmH;AAA1G,uHAAA,gBAAgB,OAAA","sourcesContent":["export {\n black,\n blue,\n bold,\n clearLine,\n cyan,\n darkGrey,\n gradient,\n green,\n grey,\n lightBlack,\n lightBlue,\n lightCyan,\n lightGreen,\n lightGrey,\n lightMagenta,\n lightRed,\n lightWhite,\n lightYellow,\n magenta,\n moveDownLines,\n moveUpLines,\n red,\n white,\n yellow,\n} from './ansiHelpers.js';\nexport { bulletedList, type BulletList } from './bulletedList.js';\nexport { debugLoggingConfig, defaultLoggingConfig, noLoggingConfig, verboseLoggingConfig } from './configs.js';\nexport { formatPackageName } from './formatHelpers.js';\nexport { plural } from './plural.js';\nexport { TaskReporter, type TaskReporterOptions } from './TaskReporter.js';\nexport { TaskReporterTask, type TaskReporterTaskResult, type TaskReporterTaskStatus } from './TaskReporterTask.js';\n"]} |
@@ -59,2 +59,3 @@ "use strict"; | ||
| constructor(options = {}) { | ||
| this._ignoredLogMessages = []; | ||
| this._options = options; | ||
@@ -73,2 +74,8 @@ this._writer = new Writer_js_1.Writer(); | ||
| /** | ||
| * Add a partial string to match on console logging. When found, we ignore the message. | ||
| */ | ||
| ignoreLogMessage(partialMatch) { | ||
| this._ignoredLogMessages.push(partialMatch); | ||
| } | ||
| /** | ||
| * Set options. | ||
@@ -79,3 +86,2 @@ */ | ||
| this._options = { ...options }; | ||
| (0, ansiHelpers_js_1.disableAnsi)(!!options.plainTextMode); | ||
| if (previousOptions.productName !== options.productName) { | ||
@@ -168,3 +174,6 @@ this._reportProductInfo(); | ||
| if (this._options[optionName]) { | ||
| this._reportConsoleLog(status, args); | ||
| const filteredArgs = this._ignoredLogMessages.length === 0 | ||
| ? args | ||
| : args.filter((arg) => !this._ignoredLogMessages.find((substring) => typeof arg === 'string' && arg.indexOf(substring) >= 0)); | ||
| this._reportConsoleLog(status, filteredArgs); | ||
| } | ||
@@ -195,3 +204,5 @@ }; | ||
| const messageType = statusMessage[status] || statusMessage.default; | ||
| this._writer.write(`${(0, ansiHelpers_js_1.darkGrey)(`[${(0, getTimestamp_js_1.getTimestamp)()}]`)} ${char} ${(0, ansiHelpers_js_1.bold)(color(messageType))} ${args.join(' ')}`); | ||
| if (args.length) { | ||
| this._writer.write(`${(0, ansiHelpers_js_1.darkGrey)(`[${(0, getTimestamp_js_1.getTimestamp)()}]`)} ${char} ${(0, ansiHelpers_js_1.bold)(color(messageType))} ${args.join(' ')}`); | ||
| } | ||
| } | ||
@@ -204,3 +215,3 @@ _reportTaskComplete(task) { | ||
| const messageType = color(statusMessage[task.status] || statusMessage.default); | ||
| const resultDetails = task.message ? `- ${task.message}` : ''; | ||
| const resultDetails = task.message ? `${task.message[0] === '\n' ? '' : '- '}${task.message}` : ''; | ||
| const resultDuration = task.duration && task.status !== 'abort' ? `(${(0, formatTime_js_1.formatTime)(task.duration)})` : ''; | ||
@@ -207,0 +218,0 @@ this._writer.write(`${(0, ansiHelpers_js_1.darkGrey)(`[${(0, getTimestamp_js_1.getTimestamp)()}]`)} ${char} ${messageType} ${task.name} ${resultDetails} ${(0, ansiHelpers_js_1.darkGrey)(resultDuration)}`); |
@@ -23,4 +23,3 @@ import { TaskReporterTask, type TaskReporterTaskResult } from './TaskReporterTask.js'; | ||
| /** | ||
| * Plain text mode. This will disable all colors and formatting which depends | ||
| * on ansi codes, including stickies. | ||
| * Plain text mode. This will disable sticky rendering which requires ansi support. | ||
| */ | ||
@@ -98,4 +97,9 @@ plainTextMode?: boolean; | ||
| private _hasCompleted; | ||
| private _ignoredLogMessages; | ||
| constructor(options?: TaskReporterOptions); | ||
| /** | ||
| * Add a partial string to match on console logging. When found, we ignore the message. | ||
| */ | ||
| ignoreLogMessage(partialMatch: string): void; | ||
| /** | ||
| * Set options. | ||
@@ -102,0 +106,0 @@ */ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"TaskReporter.d.ts","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAA+B,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AA2DnH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAU;gBAEnB,OAAO,GAAE,mBAAwB;IAgB7C;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,mBAAmB;IAY9C;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IA0C9C;;;;;;;;OAQG;IACU,OAAO,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,sBAAsB,CAAC,GACzD,OAAO,CAAC,sBAAsB,CAAC;IA0B3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM;IAYhC,SAAS;IAIhB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,eAAe;CAgCxB"} | ||
| {"version":3,"file":"TaskReporter.d.ts","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAA+B,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AA2DnH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,mBAAmB,CAAgB;gBAE/B,OAAO,GAAE,mBAAwB;IAgB7C;;OAEG;IACI,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAI5C;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,mBAAmB;IAU9C;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IA0C9C;;;;;;;;OAQG;IACU,OAAO,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,sBAAsB,CAAC,GACzD,OAAO,CAAC,sBAAsB,CAAC;IA0B3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM;IAYhC,SAAS;IAIhB,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,eAAe;CAgCxB"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"TaskReporter.js","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Writer } from './Writer.js';\nimport {\n darkGrey,\n green,\n lightRed,\n red,\n yellow,\n white,\n bold,\n blue,\n cyan,\n magenta,\n disableAnsi,\n} from './ansiHelpers.js';\nimport { TaskReporterTask, type TaskReporterTaskStatus, type TaskReporterTaskResult } from './TaskReporterTask.js';\nimport { makeValuesUniformLength } from './makeValuesUniformLength.js';\nimport { formatTime } from './formatTime.js';\nimport { getTimestamp } from './getTimestamp.js';\nimport type { Sticky } from './Sticky.js';\nimport { SpinningSticky } from './SpinningSticky.js';\n\n/** Controls how many tasks should be displayed in the pending sticky list. */\nconst maxRunningTasksShown = 5;\n\ntype StatusDictionary = {\n [key in TaskReporterTaskStatus | 'default']?: string;\n};\n\nconst statusCharacter: StatusDictionary = {\n running: yellow('!'),\n pass: green('✓'),\n complete: green('✓'),\n fail: red('✗'),\n abort: yellow('?'),\n default: '-',\n};\n\nconst statusMessage: StatusDictionary = makeValuesUniformLength({\n running: 'started',\n pass: 'passed',\n complete: 'completed',\n fail: 'failed',\n abort: 'aborted',\n skip: 'skipped',\n idle: 'idle',\n pending: 'pending',\n warn: 'warn',\n log: 'log',\n info: 'info',\n error: 'error',\n debug: 'debug',\n default: 'unknown',\n});\n\nconst statusColor: {\n [key in TaskReporterTaskStatus | 'default']?: (text?: string) => string;\n} = {\n running: yellow,\n pass: green,\n complete: green,\n fail: red,\n abort: yellow,\n idle: darkGrey,\n pending: darkGrey,\n skip: darkGrey,\n warn: yellow,\n log: white,\n info: blue,\n error: red,\n debug: magenta,\n default: white,\n};\n\n/**\n * Options for the TaskReporter instance.\n */\nexport interface TaskReporterOptions {\n /**\n * Product name to display.\n */\n productName?: string;\n\n /**\n * Version of the product to display.\n */\n version?: string;\n\n /**\n * Description of the product to display next to the product name.\n */\n description?: string;\n\n /**\n * Help message to display.\n */\n helpMessage?: string;\n\n /**\n * Plain text mode. This will disable all colors and formatting which depends\n * on ansi codes, including stickies.\n */\n plainTextMode?: boolean;\n\n /**\n * Show console.log messages.\n */\n showConsoleLog?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleInfo?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleWarn?: boolean;\n\n /**\n * Show console.error messages.\n */\n showConsoleError?: boolean;\n\n /**\n * Show console.debug messages.\n */\n showConsoleDebug?: boolean;\n\n /**\n * Show errors that occur during task execution.\n */\n showErrors?: boolean;\n\n /**\n * Show summary of tasks once the `complete` method has been called.\n */\n showSummary?: boolean;\n\n /**\n * Show progress for tasks that are running, below the sticky summary.\n */\n showProgress?: boolean;\n\n /**\n * Show tasks that are started above the sticky summary, as they start.\n */\n showStarted?: boolean;\n\n /**\n * Show tasks that are completed above the sticky summary, as they complete.\n */\n showCompleted?: boolean;\n\n /**\n * Show tasks that are pending (as sticky tasks below the summary.)\n */\n showPending?: boolean;\n\n /**\n * Show task details when a task completes. This is useful for showing\n * additional information about a task, such as the output of a command.\n * This should show for minimal logging.\n */\n showTaskDetails?: boolean;\n\n /**\n * Show extended logging for tasks. This is useful for showing additional\n * information about a task, such as extended metadata for a task. This should\n * show in verbose logging.\n */\n showTaskExtended?: boolean;\n}\n\n/**\n * A reporter for tasks. This is used to report the status of tasks to the\n * console.\n */\nexport class TaskReporter {\n private _options: TaskReporterOptions;\n private _writer: Writer;\n private _pendingTasks: Set<TaskReporterTask>;\n private _runningTasks: Set<TaskReporterTask>;\n private _runningTaskStickies: Map<TaskReporterTask, Sticky>;\n private _completedTasks: TaskReporterTask[];\n private _completeReason: string | undefined;\n private _hasCompleted: boolean;\n\n constructor(options: TaskReporterOptions = {}) {\n this._options = options;\n this._writer = new Writer();\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._runningTaskStickies = new Map();\n this._completedTasks = [];\n this._hasCompleted = false;\n\n // Catch console.log messages and print them using this.write.\n this._overrideConsoleLogging();\n\n // Initialize things based on options.\n this.setOptions(options);\n }\n\n /**\n * Set options.\n */\n public setOptions(options: TaskReporterOptions) {\n const previousOptions = this._options;\n\n this._options = { ...options };\n\n disableAnsi(!!options.plainTextMode);\n\n if (previousOptions.productName !== options.productName) {\n this._reportProductInfo();\n }\n }\n\n /**\n * Add a task to the reporter. If `pending` is true, the task will be initially\n * in a waiting state. Otherwise it will assume to be in a started state.\n */\n public addTask(name: string, pending?: boolean) {\n const task = new TaskReporterTask(name);\n\n task.on('start', () => {\n this._pendingTasks.delete(task);\n this._runningTasks.add(task);\n\n this._updateStickies();\n });\n\n task.on('complete', () => {\n this._runningTasks.delete(task);\n this._completedTasks.push(task);\n task.removeAllListeners();\n this._reportTaskComplete(task);\n\n const sticky = this._runningTaskStickies.get(task);\n\n if (sticky) {\n sticky.remove();\n this._runningTaskStickies.delete(task);\n }\n\n this._updateStickies();\n });\n\n if (pending) {\n this._pendingTasks.add(task);\n } else {\n task.status = 'running';\n this._runningTasks.add(task);\n }\n\n if (pending) {\n this._updateStickies();\n } else {\n task.start();\n }\n\n return task;\n }\n\n /**\n * Creates a task and executes it. The execute function should return a promise that\n * resolves when the task is complete. If the promise resolves without a return value,\n * the task will be marked as complete. If the promise resolves with an object, the\n * task will be updated with the status, message, and details from the object.\n *\n * If exceptions are thrown, the task will be marked as failed and the exception\n * will be recorded as the message/details.\n */\n public async runTask(\n name: string,\n execute: () => Promise<undefined | TaskReporterTaskResult>,\n ): Promise<TaskReporterTaskResult> {\n const task = this.addTask(name);\n let result: TaskReporterTaskResult | undefined;\n\n try {\n result = await execute();\n\n task.complete(result);\n } catch (err: unknown) {\n const error = err as { message?: string; toString: () => string };\n\n const message =\n typeof error.message === 'string'\n ? error.message\n : typeof error.toString === 'function'\n ? error.toString()\n : 'Unexpected exception occurred.';\n\n task.complete({ status: 'fail', message });\n\n throw err;\n }\n\n return result || { status: 'complete' };\n }\n\n public complete(completeReason?: string) {\n this._pendingTasks.forEach((task) => task.complete({ status: 'skip', message: completeReason }));\n this._runningTasks.forEach((task) => task.complete({ status: 'abort', message: completeReason }));\n this._completedTasks = [...this._completedTasks, ...this._pendingTasks, ...this._runningTasks];\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._writer.stickies = [];\n this._completeReason = completeReason;\n\n this._reportSummary();\n }\n\n public hasErrors() {\n return this._completedTasks.some((task) => task.status === 'fail');\n }\n\n private _overrideConsoleLogging() {\n const createOverride = (optionName: keyof TaskReporterOptions, status: TaskReporterTaskStatus) => {\n return (...args: unknown[]) => {\n if (this._options[optionName]) {\n this._reportConsoleLog(status, args);\n }\n };\n };\n\n console.log = createOverride('showConsoleLog', 'log');\n console.warn = createOverride('showConsoleWarn', 'warn');\n console.info = createOverride('showConsoleInfo', 'info');\n console.error = createOverride('showConsoleError', 'error');\n console.debug = createOverride('showConsoleDebug', 'debug');\n }\n\n private _reportProductInfo() {\n const { productName, version, description, helpMessage } = this._options;\n\n if (productName) {\n this._writer.write(\n [`\\n${productName}`, version && `(v${bold(white(version))})`, description && cyan(description)]\n .filter(Boolean)\n .join(' '),\n );\n }\n if (helpMessage) {\n this._writer.write(helpMessage);\n }\n\n this._writer.write('');\n }\n\n private _reportConsoleLog(status: TaskReporterTaskStatus, args: unknown[]) {\n const char = statusCharacter[status] || statusCharacter.default;\n const color = statusColor[status] || statusColor.default || ((arg) => arg);\n const messageType = statusMessage[status] || statusMessage.default;\n\n this._writer.write(`${darkGrey(`[${getTimestamp()}]`)} ${char} ${bold(color(messageType))} ${args.join(' ')}`);\n }\n\n private _reportTaskComplete(task: TaskReporterTask) {\n // Show completed tasks if the option is set, or if the task was forced to show.\n if (this._options.showCompleted || task.forceShow || (this._options.showErrors && task.status === 'fail')) {\n const char = statusCharacter[task.status] || statusCharacter.default;\n const color = statusColor[task.status] || statusColor.default || ((arg) => arg);\n const messageType = color(statusMessage[task.status] || statusMessage.default);\n const resultDetails = task.message ? `- ${task.message}` : '';\n const resultDuration = task.duration && task.status !== 'abort' ? `(${formatTime(task.duration)})` : '';\n\n this._writer.write(\n `${darkGrey(`[${getTimestamp()}]`)} ${char} ${messageType} ${task.name} ${resultDetails} ${darkGrey(\n resultDuration,\n )}`,\n );\n\n if (task.details && (this._options.showTaskDetails || task.status === 'fail')) {\n this._writer.write(`${task.status === 'fail' ? lightRed(task.details) : task.details}`);\n }\n\n if (task.extended && this._options.showTaskExtended) {\n this._writer.write(`Extended details:\\n${task.extended}`);\n }\n }\n }\n\n private _reportSummary() {\n if (!this._options.showSummary) {\n return;\n }\n\n // Report the final summary of pass/fail/skip/abort\n const summary = Array.from(this._completedTasks).reduce((prev, { status }) => {\n if (status) {\n prev[status] = (prev[status] || 0) + 1;\n }\n\n return prev;\n }, {} as Record<string, number>);\n\n const summaryMessage = [\n summary.complete !== undefined && `${green(summary.complete)} tasks completed`,\n summary.pass !== undefined && `${green(summary.pass)} passed`,\n summary.fail !== undefined && `${red(summary.fail)} failed`,\n summary.abort !== undefined && `${yellow(summary.abort)} aborted`,\n summary.skip !== undefined && `${darkGrey(summary.skip)} skipped`,\n ]\n .filter(Boolean)\n .join(', ');\n\n // Add a blank line before the summary\n this._writer.write(''); // Add a blank line before the summary\n\n if (summaryMessage || this._completeReason) {\n this._writer.write(\n [this._completeReason && `Summary: ${this._completeReason}`, summaryMessage].filter(Boolean).join(`\\n`),\n );\n }\n\n if (this._hasCompleted) {\n throw new Error(`TaskReporter has already completed.`);\n }\n this._hasCompleted = true;\n }\n\n private _updateStickies() {\n if (!this._options.showPending || this._options.plainTextMode) {\n return;\n }\n\n const totalTasks = this._completedTasks.length + this._pendingTasks.size + this._runningTasks.size;\n const percentage = totalTasks\n ? ` (${green(`${Math.round((100 * this._completedTasks.length) / totalTasks)}%`)})`\n : '';\n\n const summaryStickies = [\n '',\n `${darkGrey(`──┤`)} Waiting: ${yellow(this._pendingTasks.size)} ${darkGrey(`├──┤`)} Completed: ${green(\n this._completedTasks.length,\n )} / ${green(totalTasks)}${percentage} ${darkGrey(`├──`)}`,\n ];\n\n const runningTaskStickies = [\n ...Array.from(this._runningTasks)\n .slice(0, maxRunningTasksShown)\n .map((task) => {\n if (!this._runningTaskStickies.has(task)) {\n this._runningTaskStickies.set(task, new SpinningSticky(task.name));\n }\n return this._runningTaskStickies.get(task);\n }),\n this._runningTasks.size > maxRunningTasksShown &&\n `${yellow(`(+${this._runningTasks.size - maxRunningTasksShown} more...)`)}`,\n ].filter(Boolean) as (string | Sticky)[];\n\n this._writer.stickies = [...summaryStickies, ...runningTaskStickies];\n }\n}\n"]} | ||
| {"version":3,"file":"TaskReporter.js","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Writer } from './Writer.js';\nimport { darkGrey, green, lightRed, red, yellow, white, bold, blue, cyan, magenta } from './ansiHelpers.js';\nimport { TaskReporterTask, type TaskReporterTaskStatus, type TaskReporterTaskResult } from './TaskReporterTask.js';\nimport { makeValuesUniformLength } from './makeValuesUniformLength.js';\nimport { formatTime } from './formatTime.js';\nimport { getTimestamp } from './getTimestamp.js';\nimport type { Sticky } from './Sticky.js';\nimport { SpinningSticky } from './SpinningSticky.js';\n\n/** Controls how many tasks should be displayed in the pending sticky list. */\nconst maxRunningTasksShown = 5;\n\ntype StatusDictionary = {\n [key in TaskReporterTaskStatus | 'default']?: string;\n};\n\nconst statusCharacter: StatusDictionary = {\n running: yellow('!'),\n pass: green('✓'),\n complete: green('✓'),\n fail: red('✗'),\n abort: yellow('?'),\n default: '-',\n};\n\nconst statusMessage: StatusDictionary = makeValuesUniformLength({\n running: 'started',\n pass: 'passed',\n complete: 'completed',\n fail: 'failed',\n abort: 'aborted',\n skip: 'skipped',\n idle: 'idle',\n pending: 'pending',\n warn: 'warn',\n log: 'log',\n info: 'info',\n error: 'error',\n debug: 'debug',\n default: 'unknown',\n});\n\nconst statusColor: {\n [key in TaskReporterTaskStatus | 'default']?: (text?: string) => string;\n} = {\n running: yellow,\n pass: green,\n complete: green,\n fail: red,\n abort: yellow,\n idle: darkGrey,\n pending: darkGrey,\n skip: darkGrey,\n warn: yellow,\n log: white,\n info: blue,\n error: red,\n debug: magenta,\n default: white,\n};\n\n/**\n * Options for the TaskReporter instance.\n */\nexport interface TaskReporterOptions {\n /**\n * Product name to display.\n */\n productName?: string;\n\n /**\n * Version of the product to display.\n */\n version?: string;\n\n /**\n * Description of the product to display next to the product name.\n */\n description?: string;\n\n /**\n * Help message to display.\n */\n helpMessage?: string;\n\n /**\n * Plain text mode. This will disable sticky rendering which requires ansi support.\n */\n plainTextMode?: boolean;\n\n /**\n * Show console.log messages.\n */\n showConsoleLog?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleInfo?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleWarn?: boolean;\n\n /**\n * Show console.error messages.\n */\n showConsoleError?: boolean;\n\n /**\n * Show console.debug messages.\n */\n showConsoleDebug?: boolean;\n\n /**\n * Show errors that occur during task execution.\n */\n showErrors?: boolean;\n\n /**\n * Show summary of tasks once the `complete` method has been called.\n */\n showSummary?: boolean;\n\n /**\n * Show progress for tasks that are running, below the sticky summary.\n */\n showProgress?: boolean;\n\n /**\n * Show tasks that are started above the sticky summary, as they start.\n */\n showStarted?: boolean;\n\n /**\n * Show tasks that are completed above the sticky summary, as they complete.\n */\n showCompleted?: boolean;\n\n /**\n * Show tasks that are pending (as sticky tasks below the summary.)\n */\n showPending?: boolean;\n\n /**\n * Show task details when a task completes. This is useful for showing\n * additional information about a task, such as the output of a command.\n * This should show for minimal logging.\n */\n showTaskDetails?: boolean;\n\n /**\n * Show extended logging for tasks. This is useful for showing additional\n * information about a task, such as extended metadata for a task. This should\n * show in verbose logging.\n */\n showTaskExtended?: boolean;\n}\n\n/**\n * A reporter for tasks. This is used to report the status of tasks to the\n * console.\n */\nexport class TaskReporter {\n private _options: TaskReporterOptions;\n private _writer: Writer;\n private _pendingTasks: Set<TaskReporterTask>;\n private _runningTasks: Set<TaskReporterTask>;\n private _runningTaskStickies: Map<TaskReporterTask, Sticky>;\n private _completedTasks: TaskReporterTask[];\n private _completeReason: string | undefined;\n private _hasCompleted: boolean;\n private _ignoredLogMessages: string[] = [];\n\n constructor(options: TaskReporterOptions = {}) {\n this._options = options;\n this._writer = new Writer();\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._runningTaskStickies = new Map();\n this._completedTasks = [];\n this._hasCompleted = false;\n\n // Catch console.log messages and print them using this.write.\n this._overrideConsoleLogging();\n\n // Initialize things based on options.\n this.setOptions(options);\n }\n\n /**\n * Add a partial string to match on console logging. When found, we ignore the message.\n */\n public ignoreLogMessage(partialMatch: string) {\n this._ignoredLogMessages.push(partialMatch);\n }\n\n /**\n * Set options.\n */\n public setOptions(options: TaskReporterOptions) {\n const previousOptions = this._options;\n\n this._options = { ...options };\n\n if (previousOptions.productName !== options.productName) {\n this._reportProductInfo();\n }\n }\n\n /**\n * Add a task to the reporter. If `pending` is true, the task will be initially\n * in a waiting state. Otherwise it will assume to be in a started state.\n */\n public addTask(name: string, pending?: boolean) {\n const task = new TaskReporterTask(name);\n\n task.on('start', () => {\n this._pendingTasks.delete(task);\n this._runningTasks.add(task);\n\n this._updateStickies();\n });\n\n task.on('complete', () => {\n this._runningTasks.delete(task);\n this._completedTasks.push(task);\n task.removeAllListeners();\n this._reportTaskComplete(task);\n\n const sticky = this._runningTaskStickies.get(task);\n\n if (sticky) {\n sticky.remove();\n this._runningTaskStickies.delete(task);\n }\n\n this._updateStickies();\n });\n\n if (pending) {\n this._pendingTasks.add(task);\n } else {\n task.status = 'running';\n this._runningTasks.add(task);\n }\n\n if (pending) {\n this._updateStickies();\n } else {\n task.start();\n }\n\n return task;\n }\n\n /**\n * Creates a task and executes it. The execute function should return a promise that\n * resolves when the task is complete. If the promise resolves without a return value,\n * the task will be marked as complete. If the promise resolves with an object, the\n * task will be updated with the status, message, and details from the object.\n *\n * If exceptions are thrown, the task will be marked as failed and the exception\n * will be recorded as the message/details.\n */\n public async runTask(\n name: string,\n execute: () => Promise<undefined | TaskReporterTaskResult>,\n ): Promise<TaskReporterTaskResult> {\n const task = this.addTask(name);\n let result: TaskReporterTaskResult | undefined;\n\n try {\n result = await execute();\n\n task.complete(result);\n } catch (err: unknown) {\n const error = err as { message?: string; toString: () => string };\n\n const message =\n typeof error.message === 'string'\n ? error.message\n : typeof error.toString === 'function'\n ? error.toString()\n : 'Unexpected exception occurred.';\n\n task.complete({ status: 'fail', message });\n\n throw err;\n }\n\n return result || { status: 'complete' };\n }\n\n public complete(completeReason?: string) {\n this._pendingTasks.forEach((task) => task.complete({ status: 'skip', message: completeReason }));\n this._runningTasks.forEach((task) => task.complete({ status: 'abort', message: completeReason }));\n this._completedTasks = [...this._completedTasks, ...this._pendingTasks, ...this._runningTasks];\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._writer.stickies = [];\n this._completeReason = completeReason;\n\n this._reportSummary();\n }\n\n public hasErrors() {\n return this._completedTasks.some((task) => task.status === 'fail');\n }\n\n private _overrideConsoleLogging() {\n const createOverride = (optionName: keyof TaskReporterOptions, status: TaskReporterTaskStatus) => {\n return (...args: unknown[]) => {\n if (this._options[optionName]) {\n const filteredArgs =\n this._ignoredLogMessages.length === 0\n ? args\n : args.filter(\n (arg) =>\n !this._ignoredLogMessages.find(\n (substring) => typeof arg === 'string' && arg.indexOf(substring) >= 0,\n ),\n );\n\n this._reportConsoleLog(status, filteredArgs);\n }\n };\n };\n\n console.log = createOverride('showConsoleLog', 'log');\n console.warn = createOverride('showConsoleWarn', 'warn');\n console.info = createOverride('showConsoleInfo', 'info');\n console.error = createOverride('showConsoleError', 'error');\n console.debug = createOverride('showConsoleDebug', 'debug');\n }\n\n private _reportProductInfo() {\n const { productName, version, description, helpMessage } = this._options;\n\n if (productName) {\n this._writer.write(\n [`\\n${productName}`, version && `(v${bold(white(version))})`, description && cyan(description)]\n .filter(Boolean)\n .join(' '),\n );\n }\n if (helpMessage) {\n this._writer.write(helpMessage);\n }\n\n this._writer.write('');\n }\n\n private _reportConsoleLog(status: TaskReporterTaskStatus, args: unknown[]) {\n const char = statusCharacter[status] || statusCharacter.default;\n const color = statusColor[status] || statusColor.default || ((arg) => arg);\n const messageType = statusMessage[status] || statusMessage.default;\n\n if (args.length) {\n this._writer.write(`${darkGrey(`[${getTimestamp()}]`)} ${char} ${bold(color(messageType))} ${args.join(' ')}`);\n }\n }\n\n private _reportTaskComplete(task: TaskReporterTask) {\n // Show completed tasks if the option is set, or if the task was forced to show.\n if (this._options.showCompleted || task.forceShow || (this._options.showErrors && task.status === 'fail')) {\n const char = statusCharacter[task.status] || statusCharacter.default;\n const color = statusColor[task.status] || statusColor.default || ((arg) => arg);\n const messageType = color(statusMessage[task.status] || statusMessage.default);\n const resultDetails = task.message ? `${task.message[0] === '\\n' ? '' : '- '}${task.message}` : '';\n const resultDuration = task.duration && task.status !== 'abort' ? `(${formatTime(task.duration)})` : '';\n\n this._writer.write(\n `${darkGrey(`[${getTimestamp()}]`)} ${char} ${messageType} ${task.name} ${resultDetails} ${darkGrey(\n resultDuration,\n )}`,\n );\n\n if (task.details && (this._options.showTaskDetails || task.status === 'fail')) {\n this._writer.write(`${task.status === 'fail' ? lightRed(task.details) : task.details}`);\n }\n\n if (task.extended && this._options.showTaskExtended) {\n this._writer.write(`Extended details:\\n${task.extended}`);\n }\n }\n }\n\n private _reportSummary() {\n if (!this._options.showSummary) {\n return;\n }\n\n // Report the final summary of pass/fail/skip/abort\n const summary = Array.from(this._completedTasks).reduce((prev, { status }) => {\n if (status) {\n prev[status] = (prev[status] || 0) + 1;\n }\n\n return prev;\n }, {} as Record<string, number>);\n\n const summaryMessage = [\n summary.complete !== undefined && `${green(summary.complete)} tasks completed`,\n summary.pass !== undefined && `${green(summary.pass)} passed`,\n summary.fail !== undefined && `${red(summary.fail)} failed`,\n summary.abort !== undefined && `${yellow(summary.abort)} aborted`,\n summary.skip !== undefined && `${darkGrey(summary.skip)} skipped`,\n ]\n .filter(Boolean)\n .join(', ');\n\n // Add a blank line before the summary\n this._writer.write(''); // Add a blank line before the summary\n\n if (summaryMessage || this._completeReason) {\n this._writer.write(\n [this._completeReason && `Summary: ${this._completeReason}`, summaryMessage].filter(Boolean).join(`\\n`),\n );\n }\n\n if (this._hasCompleted) {\n throw new Error(`TaskReporter has already completed.`);\n }\n this._hasCompleted = true;\n }\n\n private _updateStickies() {\n if (!this._options.showPending || this._options.plainTextMode) {\n return;\n }\n\n const totalTasks = this._completedTasks.length + this._pendingTasks.size + this._runningTasks.size;\n const percentage = totalTasks\n ? ` (${green(`${Math.round((100 * this._completedTasks.length) / totalTasks)}%`)})`\n : '';\n\n const summaryStickies = [\n '',\n `${darkGrey(`──┤`)} Waiting: ${yellow(this._pendingTasks.size)} ${darkGrey(`├──┤`)} Completed: ${green(\n this._completedTasks.length,\n )} / ${green(totalTasks)}${percentage} ${darkGrey(`├──`)}`,\n ];\n\n const runningTaskStickies = [\n ...Array.from(this._runningTasks)\n .slice(0, maxRunningTasksShown)\n .map((task) => {\n if (!this._runningTaskStickies.has(task)) {\n this._runningTaskStickies.set(task, new SpinningSticky(task.name));\n }\n return this._runningTaskStickies.get(task);\n }),\n this._runningTasks.size > maxRunningTasksShown &&\n `${yellow(`(+${this._runningTasks.size - maxRunningTasksShown} more...)`)}`,\n ].filter(Boolean) as (string | Sticky)[];\n\n this._writer.stickies = [...summaryStickies, ...runningTaskStickies];\n }\n}\n"]} |
@@ -1,6 +0,1 @@ | ||
| /** | ||
| * Sets the mode of ansi helpers. Disabling ansi is useful for text-only scenarios where | ||
| * ansi codes can't be processed. | ||
| */ | ||
| export declare function disableAnsi(disabled: boolean): void; | ||
| export declare function moveUpLines(count?: number): void; | ||
@@ -7,0 +2,0 @@ export declare function moveDownLines(count?: number): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ansiHelpers.d.ts","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":"AA+BA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,QAE5C;AAKD,wBAAgB,WAAW,CAAC,KAAK,SAAI,QAQpC;AAKD,wBAAgB,aAAa,CAAC,KAAK,SAAI,QAQtC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAe,EAC5C,EAAE,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAiB,UAuB7C;AAKD,wBAAgB,SAAS,SAMxB;AA6BD,eAAO,MAAM,GAAG,UA1BC,MAAM,GAAG,MAAM,KAAG,MA0BkB,CAAC;AAKtD,eAAO,MAAM,QAAQ,UA/BJ,MAAM,GAAG,MAAM,KAAG,MA+B4B,CAAC;AAKhE,eAAO,MAAM,KAAK,UApCD,MAAM,GAAG,MAAM,KAAG,MAoCsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UAzCN,MAAM,GAAG,MAAM,KAAG,MAyCgC,CAAC;AAKpE,eAAO,MAAM,MAAM,UA9CF,MAAM,GAAG,MAAM,KAAG,MA8CwB,CAAC;AAK5D,eAAO,MAAM,WAAW,UAnDP,MAAM,GAAG,MAAM,KAAG,MAmDkC,CAAC;AAKtE,eAAO,MAAM,IAAI,UAxDA,MAAM,GAAG,MAAM,KAAG,MAwDoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UA7DL,MAAM,GAAG,MAAM,KAAG,MA6D8B,CAAC;AAKlE,eAAO,MAAM,OAAO,UAlEH,MAAM,GAAG,MAAM,KAAG,MAkE0B,CAAC;AAK9D,eAAO,MAAM,YAAY,UAvER,MAAM,GAAG,MAAM,KAAG,MAuEoC,CAAC;AAKxE,eAAO,MAAM,IAAI,UA5EA,MAAM,GAAG,MAAM,KAAG,MA4EoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UAjFL,MAAM,GAAG,MAAM,KAAG,MAiF8B,CAAC;AAKlE,eAAO,MAAM,KAAK,UAtFD,MAAM,GAAG,MAAM,KAAG,MAsFsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UA3FN,MAAM,GAAG,MAAM,KAAG,MA2FgC,CAAC;AAKpE,eAAO,MAAM,KAAK,UAhGD,MAAM,GAAG,MAAM,KAAG,MAgGsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UArGN,MAAM,GAAG,MAAM,KAAG,MAqGgC,CAAC;AAKpE,eAAO,MAAM,QAAQ,UA1GJ,MAAM,GAAG,MAAM,KAAG,MA0G4B,CAAC;AAKhE,eAAO,MAAM,IAAI,UA/GA,MAAM,GAAG,MAAM,KAAG,MA+GoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UApHL,MAAM,GAAG,MAAM,KAAG,MAoH8B,CAAC;AAKlE,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,UAM1C"} | ||
| {"version":3,"file":"ansiHelpers.d.ts","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":"AAmCA,wBAAgB,WAAW,CAAC,KAAK,SAAI,QAQpC;AAKD,wBAAgB,aAAa,CAAC,KAAK,SAAI,QAQtC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAe,EAC5C,EAAE,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAiB,UAuB7C;AAKD,wBAAgB,SAAS,SAMxB;AA6BD,eAAO,MAAM,GAAG,UA1BC,MAAM,GAAG,MAAM,KAAG,MA0BkB,CAAC;AAKtD,eAAO,MAAM,QAAQ,UA/BJ,MAAM,GAAG,MAAM,KAAG,MA+B4B,CAAC;AAKhE,eAAO,MAAM,KAAK,UApCD,MAAM,GAAG,MAAM,KAAG,MAoCsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UAzCN,MAAM,GAAG,MAAM,KAAG,MAyCgC,CAAC;AAKpE,eAAO,MAAM,MAAM,UA9CF,MAAM,GAAG,MAAM,KAAG,MA8CwB,CAAC;AAK5D,eAAO,MAAM,WAAW,UAnDP,MAAM,GAAG,MAAM,KAAG,MAmDkC,CAAC;AAKtE,eAAO,MAAM,IAAI,UAxDA,MAAM,GAAG,MAAM,KAAG,MAwDoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UA7DL,MAAM,GAAG,MAAM,KAAG,MA6D8B,CAAC;AAKlE,eAAO,MAAM,OAAO,UAlEH,MAAM,GAAG,MAAM,KAAG,MAkE0B,CAAC;AAK9D,eAAO,MAAM,YAAY,UAvER,MAAM,GAAG,MAAM,KAAG,MAuEoC,CAAC;AAKxE,eAAO,MAAM,IAAI,UA5EA,MAAM,GAAG,MAAM,KAAG,MA4EoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UAjFL,MAAM,GAAG,MAAM,KAAG,MAiF8B,CAAC;AAKlE,eAAO,MAAM,KAAK,UAtFD,MAAM,GAAG,MAAM,KAAG,MAsFsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UA3FN,MAAM,GAAG,MAAM,KAAG,MA2FgC,CAAC;AAKpE,eAAO,MAAM,KAAK,UAhGD,MAAM,GAAG,MAAM,KAAG,MAgGsB,CAAC;AAK1D,eAAO,MAAM,UAAU,UArGN,MAAM,GAAG,MAAM,KAAG,MAqGgC,CAAC;AAKpE,eAAO,MAAM,QAAQ,UA1GJ,MAAM,GAAG,MAAM,KAAG,MA0G4B,CAAC;AAKhE,eAAO,MAAM,IAAI,UA/GA,MAAM,GAAG,MAAM,KAAG,MA+GoB,CAAC;AAKxD,eAAO,MAAM,SAAS,UApHL,MAAM,GAAG,MAAM,KAAG,MAoH8B,CAAC;AAKlE,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,UAM1C"} |
+6
-13
| import { write } from './write.js'; | ||
| const ansiEscape = '\x1b['; | ||
| let ansiDisabled = false; | ||
| const isAnsiDisabled = process.argv.includes('--no-color') || process.argv.includes('-n'); | ||
| const ansiCodes = { | ||
@@ -30,9 +30,2 @@ bold: `${ansiEscape}1m`, | ||
| }; | ||
| /** | ||
| * Sets the mode of ansi helpers. Disabling ansi is useful for text-only scenarios where | ||
| * ansi codes can't be processed. | ||
| */ | ||
| export function disableAnsi(disabled) { | ||
| ansiDisabled = disabled; | ||
| } | ||
| /* | ||
@@ -42,3 +35,3 @@ * Moves the cursor up N lines. | ||
| export function moveUpLines(count = 1) { | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return; | ||
@@ -54,3 +47,3 @@ } | ||
| export function moveDownLines(count = 1) { | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return; | ||
@@ -69,3 +62,3 @@ } | ||
| } | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return text; | ||
@@ -88,3 +81,3 @@ } | ||
| export function clearLine() { | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return; | ||
@@ -99,3 +92,3 @@ } | ||
| } | ||
| if (ansiDisabled) { | ||
| if (isAnsiDisabled) { | ||
| return String(text); | ||
@@ -102,0 +95,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ansiHelpers.js","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { write } from './write.js';\n\nconst ansiEscape = '\\x1b[';\nlet ansiDisabled = false;\nconst ansiCodes = {\n bold: `${ansiEscape}1m`,\n saveForeground: `${ansiEscape}38m`,\n restoreForeground: `${ansiEscape}39m`,\n saveBackground: `${ansiEscape}48m`,\n restoreBackground: `${ansiEscape}49m`,\n red: `${ansiEscape}31m`,\n lightRed: `${ansiEscape}91m`,\n green: `${ansiEscape}32m`,\n lightGreen: `${ansiEscape}92m`,\n yellow: `${ansiEscape}33m`,\n lightYellow: `${ansiEscape}93m`,\n blue: `${ansiEscape}34m`,\n lightBlue: `${ansiEscape}94m`,\n magenta: `${ansiEscape}35m`,\n lightMagenta: `${ansiEscape}95m`,\n cyan: `${ansiEscape}36m`,\n lightCyan: `${ansiEscape}96m`,\n white: `${ansiEscape}37m`,\n lightWhite: `${ansiEscape}97m`,\n black: `${ansiEscape}30m`,\n lightBlack: `${ansiEscape}90m`,\n darkGrey: `${ansiEscape}90m`,\n grey: `${ansiEscape}90m`,\n lightGrey: `${ansiEscape}37m`,\n};\n\n/**\n * Sets the mode of ansi helpers. Disabling ansi is useful for text-only scenarios where\n * ansi codes can't be processed.\n */\nexport function disableAnsi(disabled: boolean) {\n ansiDisabled = disabled;\n}\n\n/*\n * Moves the cursor up N lines.\n */\nexport function moveUpLines(count = 1) {\n if (ansiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}A`);\n }\n}\n\n/*\n * Moves the cursor down N lines.\n */\nexport function moveDownLines(count = 1) {\n if (ansiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}B`);\n }\n}\n\n/**\n * Writes a string with rgb color gradient, defaulting from red to orange.\n */\nexport function gradient(\n text?: string,\n from: [number, number, number] = [255, 0, 0],\n to: [number, number, number] = [255, 165, 0],\n) {\n if (text === undefined) {\n return '';\n }\n\n if (ansiDisabled) {\n return text;\n }\n\n let result = '';\n\n for (let i = 0; i < text.length; i++) {\n // Compute the rgb values for the current character where the first color should match \"from\" and the last should\n // match \"to\", and values inbetween should be interpolated.\n const r = Math.floor(from[0] + (to[0] - from[0]) * (i / text.length));\n const g = Math.floor(from[1] + (to[1] - from[1]) * (i / text.length));\n const b = Math.floor(from[2] + (to[2] - from[2]) * (i / text.length));\n\n result += `${ansiEscape}38;2;${r};${g};${b}m${text[i]}${ansiEscape}39m`;\n }\n\n return result;\n}\n\n/*\n * Clears the current line.\n */\nexport function clearLine() {\n if (ansiDisabled) {\n return;\n }\n\n write(`${ansiEscape}2K`);\n}\n\nfunction createColorFunction(colorCode: string) {\n return (text?: string | number): string => {\n if (text === undefined) {\n return '';\n }\n\n if (ansiDisabled) {\n return String(text);\n }\n\n const indexOfLastRestore = String(text).lastIndexOf(ansiCodes.restoreForeground);\n if (indexOfLastRestore !== -1) {\n const indexAfterLastRestore = indexOfLastRestore + ansiCodes.restoreForeground.length;\n\n // If the text contains a restore code at the end, insert the color code after it.\n text = `${String(text).slice(0, indexOfLastRestore)}${colorCode}${String(text).slice(indexAfterLastRestore)}`;\n }\n\n const result = `${colorCode}${text}${ansiCodes.restoreForeground}`;\n\n return result;\n };\n}\n\n/*\n *\n */\nexport const red = createColorFunction(ansiCodes.red);\n\n/*\n *\n */\nexport const lightRed = createColorFunction(ansiCodes.lightRed);\n\n/*\n *\n */\nexport const green = createColorFunction(ansiCodes.green);\n\n/*\n *\n */\nexport const lightGreen = createColorFunction(ansiCodes.lightGreen);\n\n/*\n *\n */\nexport const yellow = createColorFunction(ansiCodes.yellow);\n\n/*\n *\n */\nexport const lightYellow = createColorFunction(ansiCodes.lightYellow);\n\n/*\n *\n */\nexport const blue = createColorFunction(ansiCodes.blue);\n\n/*\n *\n */\nexport const lightBlue = createColorFunction(ansiCodes.lightBlue);\n\n/*\n *\n */\nexport const magenta = createColorFunction(ansiCodes.magenta);\n\n/*\n *\n */\nexport const lightMagenta = createColorFunction(ansiCodes.lightMagenta);\n\n/*\n *\n */\nexport const cyan = createColorFunction(ansiCodes.cyan);\n\n/*\n *\n */\nexport const lightCyan = createColorFunction(ansiCodes.lightCyan);\n\n/*\n *\n */\nexport const white = createColorFunction(ansiCodes.white);\n\n/*\n *\n */\nexport const lightWhite = createColorFunction(ansiCodes.lightWhite);\n\n/*\n *\n */\nexport const black = createColorFunction(ansiCodes.black);\n\n/*\n *\n */\nexport const lightBlack = createColorFunction(ansiCodes.lightBlack);\n\n/*\n *\n */\nexport const darkGrey = createColorFunction(ansiCodes.darkGrey);\n\n/*\n *\n */\nexport const grey = createColorFunction(ansiCodes.grey);\n\n/*\n *\n */\nexport const lightGrey = createColorFunction(ansiCodes.lightGrey);\n\n/*\n * Writes text as bold.\n */\nexport function bold(text?: string | number) {\n if (text === undefined) {\n return '';\n }\n\n return `${ansiEscape}1m${text}${ansiEscape}22m`;\n}\n"]} | ||
| {"version":3,"file":"ansiHelpers.js","sourceRoot":"","sources":["../src/ansiHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { write } from './write.js';\n\nconst ansiEscape = '\\x1b[';\nconst isAnsiDisabled = process.argv.includes('--no-color') || process.argv.includes('-n');\n\nconst ansiCodes = {\n bold: `${ansiEscape}1m`,\n saveForeground: `${ansiEscape}38m`,\n restoreForeground: `${ansiEscape}39m`,\n saveBackground: `${ansiEscape}48m`,\n restoreBackground: `${ansiEscape}49m`,\n red: `${ansiEscape}31m`,\n lightRed: `${ansiEscape}91m`,\n green: `${ansiEscape}32m`,\n lightGreen: `${ansiEscape}92m`,\n yellow: `${ansiEscape}33m`,\n lightYellow: `${ansiEscape}93m`,\n blue: `${ansiEscape}34m`,\n lightBlue: `${ansiEscape}94m`,\n magenta: `${ansiEscape}35m`,\n lightMagenta: `${ansiEscape}95m`,\n cyan: `${ansiEscape}36m`,\n lightCyan: `${ansiEscape}96m`,\n white: `${ansiEscape}37m`,\n lightWhite: `${ansiEscape}97m`,\n black: `${ansiEscape}30m`,\n lightBlack: `${ansiEscape}90m`,\n darkGrey: `${ansiEscape}90m`,\n grey: `${ansiEscape}90m`,\n lightGrey: `${ansiEscape}37m`,\n};\n\n/*\n * Moves the cursor up N lines.\n */\nexport function moveUpLines(count = 1) {\n if (isAnsiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}A`);\n }\n}\n\n/*\n * Moves the cursor down N lines.\n */\nexport function moveDownLines(count = 1) {\n if (isAnsiDisabled) {\n return;\n }\n\n if (count) {\n write(`${ansiEscape}${count}B`);\n }\n}\n\n/**\n * Writes a string with rgb color gradient, defaulting from red to orange.\n */\nexport function gradient(\n text?: string,\n from: [number, number, number] = [255, 0, 0],\n to: [number, number, number] = [255, 165, 0],\n) {\n if (text === undefined) {\n return '';\n }\n\n if (isAnsiDisabled) {\n return text;\n }\n\n let result = '';\n\n for (let i = 0; i < text.length; i++) {\n // Compute the rgb values for the current character where the first color should match \"from\" and the last should\n // match \"to\", and values inbetween should be interpolated.\n const r = Math.floor(from[0] + (to[0] - from[0]) * (i / text.length));\n const g = Math.floor(from[1] + (to[1] - from[1]) * (i / text.length));\n const b = Math.floor(from[2] + (to[2] - from[2]) * (i / text.length));\n\n result += `${ansiEscape}38;2;${r};${g};${b}m${text[i]}${ansiEscape}39m`;\n }\n\n return result;\n}\n\n/*\n * Clears the current line.\n */\nexport function clearLine() {\n if (isAnsiDisabled) {\n return;\n }\n\n write(`${ansiEscape}2K`);\n}\n\nfunction createColorFunction(colorCode: string) {\n return (text?: string | number): string => {\n if (text === undefined) {\n return '';\n }\n\n if (isAnsiDisabled) {\n return String(text);\n }\n\n const indexOfLastRestore = String(text).lastIndexOf(ansiCodes.restoreForeground);\n if (indexOfLastRestore !== -1) {\n const indexAfterLastRestore = indexOfLastRestore + ansiCodes.restoreForeground.length;\n\n // If the text contains a restore code at the end, insert the color code after it.\n text = `${String(text).slice(0, indexOfLastRestore)}${colorCode}${String(text).slice(indexAfterLastRestore)}`;\n }\n\n const result = `${colorCode}${text}${ansiCodes.restoreForeground}`;\n\n return result;\n };\n}\n\n/*\n *\n */\nexport const red = createColorFunction(ansiCodes.red);\n\n/*\n *\n */\nexport const lightRed = createColorFunction(ansiCodes.lightRed);\n\n/*\n *\n */\nexport const green = createColorFunction(ansiCodes.green);\n\n/*\n *\n */\nexport const lightGreen = createColorFunction(ansiCodes.lightGreen);\n\n/*\n *\n */\nexport const yellow = createColorFunction(ansiCodes.yellow);\n\n/*\n *\n */\nexport const lightYellow = createColorFunction(ansiCodes.lightYellow);\n\n/*\n *\n */\nexport const blue = createColorFunction(ansiCodes.blue);\n\n/*\n *\n */\nexport const lightBlue = createColorFunction(ansiCodes.lightBlue);\n\n/*\n *\n */\nexport const magenta = createColorFunction(ansiCodes.magenta);\n\n/*\n *\n */\nexport const lightMagenta = createColorFunction(ansiCodes.lightMagenta);\n\n/*\n *\n */\nexport const cyan = createColorFunction(ansiCodes.cyan);\n\n/*\n *\n */\nexport const lightCyan = createColorFunction(ansiCodes.lightCyan);\n\n/*\n *\n */\nexport const white = createColorFunction(ansiCodes.white);\n\n/*\n *\n */\nexport const lightWhite = createColorFunction(ansiCodes.lightWhite);\n\n/*\n *\n */\nexport const black = createColorFunction(ansiCodes.black);\n\n/*\n *\n */\nexport const lightBlack = createColorFunction(ansiCodes.lightBlack);\n\n/*\n *\n */\nexport const darkGrey = createColorFunction(ansiCodes.darkGrey);\n\n/*\n *\n */\nexport const grey = createColorFunction(ansiCodes.grey);\n\n/*\n *\n */\nexport const lightGrey = createColorFunction(ansiCodes.lightGrey);\n\n/*\n * Writes text as bold.\n */\nexport function bold(text?: string | number) {\n if (text === undefined) {\n return '';\n }\n\n return `${ansiEscape}1m${text}${ansiEscape}22m`;\n}\n"]} |
+1
-1
@@ -1,2 +0,2 @@ | ||
| export { black, blue, bold, clearLine, cyan, darkGrey, gradient, green, grey, lightBlack, lightBlue, lightCyan, lightGreen, lightGrey, lightMagenta, lightRed, lightWhite, lightYellow, magenta, moveDownLines, moveUpLines, red, disableAnsi, white, yellow, } from './ansiHelpers.js'; | ||
| export { black, blue, bold, clearLine, cyan, darkGrey, gradient, green, grey, lightBlack, lightBlue, lightCyan, lightGreen, lightGrey, lightMagenta, lightRed, lightWhite, lightYellow, magenta, moveDownLines, moveUpLines, red, white, yellow, } from './ansiHelpers.js'; | ||
| export { bulletedList, type BulletList } from './bulletedList.js'; | ||
@@ -3,0 +3,0 @@ export { debugLoggingConfig, defaultLoggingConfig, noLoggingConfig, verboseLoggingConfig } from './configs.js'; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,GAAG,EACH,WAAW,EACX,KAAK,EACL,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,GAAG,EACH,KAAK,EACL,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"} |
+1
-1
@@ -1,2 +0,2 @@ | ||
| export { black, blue, bold, clearLine, cyan, darkGrey, gradient, green, grey, lightBlack, lightBlue, lightCyan, lightGreen, lightGrey, lightMagenta, lightRed, lightWhite, lightYellow, magenta, moveDownLines, moveUpLines, red, disableAnsi, white, yellow, } from './ansiHelpers.js'; | ||
| export { black, blue, bold, clearLine, cyan, darkGrey, gradient, green, grey, lightBlack, lightBlue, lightCyan, lightGreen, lightGrey, lightMagenta, lightRed, lightWhite, lightYellow, magenta, moveDownLines, moveUpLines, red, white, yellow, } from './ansiHelpers.js'; | ||
| export { bulletedList } from './bulletedList.js'; | ||
@@ -3,0 +3,0 @@ export { debugLoggingConfig, defaultLoggingConfig, noLoggingConfig, verboseLoggingConfig } from './configs.js'; |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,GAAG,EACH,WAAW,EACX,KAAK,EACL,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAA4D,MAAM,uBAAuB,CAAC","sourcesContent":["export {\n black,\n blue,\n bold,\n clearLine,\n cyan,\n darkGrey,\n gradient,\n green,\n grey,\n lightBlack,\n lightBlue,\n lightCyan,\n lightGreen,\n lightGrey,\n lightMagenta,\n lightRed,\n lightWhite,\n lightYellow,\n magenta,\n moveDownLines,\n moveUpLines,\n red,\n disableAnsi,\n white,\n yellow,\n} from './ansiHelpers.js';\nexport { bulletedList, type BulletList } from './bulletedList.js';\nexport { debugLoggingConfig, defaultLoggingConfig, noLoggingConfig, verboseLoggingConfig } from './configs.js';\nexport { formatPackageName } from './formatHelpers.js';\nexport { plural } from './plural.js';\nexport { TaskReporter, type TaskReporterOptions } from './TaskReporter.js';\nexport { TaskReporterTask, type TaskReporterTaskResult, type TaskReporterTaskStatus } from './TaskReporterTask.js';\n"]} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,GAAG,EACH,KAAK,EACL,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAA4D,MAAM,uBAAuB,CAAC","sourcesContent":["export {\n black,\n blue,\n bold,\n clearLine,\n cyan,\n darkGrey,\n gradient,\n green,\n grey,\n lightBlack,\n lightBlue,\n lightCyan,\n lightGreen,\n lightGrey,\n lightMagenta,\n lightRed,\n lightWhite,\n lightYellow,\n magenta,\n moveDownLines,\n moveUpLines,\n red,\n white,\n yellow,\n} from './ansiHelpers.js';\nexport { bulletedList, type BulletList } from './bulletedList.js';\nexport { debugLoggingConfig, defaultLoggingConfig, noLoggingConfig, verboseLoggingConfig } from './configs.js';\nexport { formatPackageName } from './formatHelpers.js';\nexport { plural } from './plural.js';\nexport { TaskReporter, type TaskReporterOptions } from './TaskReporter.js';\nexport { TaskReporterTask, type TaskReporterTaskResult, type TaskReporterTaskStatus } from './TaskReporterTask.js';\n"]} |
@@ -23,4 +23,3 @@ import { TaskReporterTask, type TaskReporterTaskResult } from './TaskReporterTask.js'; | ||
| /** | ||
| * Plain text mode. This will disable all colors and formatting which depends | ||
| * on ansi codes, including stickies. | ||
| * Plain text mode. This will disable sticky rendering which requires ansi support. | ||
| */ | ||
@@ -98,4 +97,9 @@ plainTextMode?: boolean; | ||
| private _hasCompleted; | ||
| private _ignoredLogMessages; | ||
| constructor(options?: TaskReporterOptions); | ||
| /** | ||
| * Add a partial string to match on console logging. When found, we ignore the message. | ||
| */ | ||
| ignoreLogMessage(partialMatch: string): void; | ||
| /** | ||
| * Set options. | ||
@@ -102,0 +106,0 @@ */ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"TaskReporter.d.ts","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAA+B,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AA2DnH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAU;gBAEnB,OAAO,GAAE,mBAAwB;IAgB7C;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,mBAAmB;IAY9C;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IA0C9C;;;;;;;;OAQG;IACU,OAAO,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,sBAAsB,CAAC,GACzD,OAAO,CAAC,sBAAsB,CAAC;IA0B3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM;IAYhC,SAAS;IAIhB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,eAAe;CAgCxB"} | ||
| {"version":3,"file":"TaskReporter.d.ts","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAA+B,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AA2DnH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,mBAAmB,CAAgB;gBAE/B,OAAO,GAAE,mBAAwB;IAgB7C;;OAEG;IACI,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAI5C;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,mBAAmB;IAU9C;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IA0C9C;;;;;;;;OAQG;IACU,OAAO,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,sBAAsB,CAAC,GACzD,OAAO,CAAC,sBAAsB,CAAC;IA0B3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM;IAYhC,SAAS;IAIhB,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,eAAe;CAgCxB"} |
+16
-5
| import { Writer } from './Writer.js'; | ||
| import { darkGrey, green, lightRed, red, yellow, white, bold, blue, cyan, magenta, disableAnsi, } from './ansiHelpers.js'; | ||
| import { darkGrey, green, lightRed, red, yellow, white, bold, blue, cyan, magenta } from './ansiHelpers.js'; | ||
| import { TaskReporterTask } from './TaskReporterTask.js'; | ||
@@ -56,2 +56,3 @@ import { makeValuesUniformLength } from './makeValuesUniformLength.js'; | ||
| constructor(options = {}) { | ||
| this._ignoredLogMessages = []; | ||
| this._options = options; | ||
@@ -70,2 +71,8 @@ this._writer = new Writer(); | ||
| /** | ||
| * Add a partial string to match on console logging. When found, we ignore the message. | ||
| */ | ||
| ignoreLogMessage(partialMatch) { | ||
| this._ignoredLogMessages.push(partialMatch); | ||
| } | ||
| /** | ||
| * Set options. | ||
@@ -76,3 +83,2 @@ */ | ||
| this._options = { ...options }; | ||
| disableAnsi(!!options.plainTextMode); | ||
| if (previousOptions.productName !== options.productName) { | ||
@@ -165,3 +171,6 @@ this._reportProductInfo(); | ||
| if (this._options[optionName]) { | ||
| this._reportConsoleLog(status, args); | ||
| const filteredArgs = this._ignoredLogMessages.length === 0 | ||
| ? args | ||
| : args.filter((arg) => !this._ignoredLogMessages.find((substring) => typeof arg === 'string' && arg.indexOf(substring) >= 0)); | ||
| this._reportConsoleLog(status, filteredArgs); | ||
| } | ||
@@ -192,3 +201,5 @@ }; | ||
| const messageType = statusMessage[status] || statusMessage.default; | ||
| this._writer.write(`${darkGrey(`[${getTimestamp()}]`)} ${char} ${bold(color(messageType))} ${args.join(' ')}`); | ||
| if (args.length) { | ||
| this._writer.write(`${darkGrey(`[${getTimestamp()}]`)} ${char} ${bold(color(messageType))} ${args.join(' ')}`); | ||
| } | ||
| } | ||
@@ -201,3 +212,3 @@ _reportTaskComplete(task) { | ||
| const messageType = color(statusMessage[task.status] || statusMessage.default); | ||
| const resultDetails = task.message ? `- ${task.message}` : ''; | ||
| const resultDetails = task.message ? `${task.message[0] === '\n' ? '' : '- '}${task.message}` : ''; | ||
| const resultDuration = task.duration && task.status !== 'abort' ? `(${formatTime(task.duration)})` : ''; | ||
@@ -204,0 +215,0 @@ this._writer.write(`${darkGrey(`[${getTimestamp()}]`)} ${char} ${messageType} ${task.name} ${resultDetails} ${darkGrey(resultDuration)}`); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"TaskReporter.js","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Writer } from './Writer.js';\nimport {\n darkGrey,\n green,\n lightRed,\n red,\n yellow,\n white,\n bold,\n blue,\n cyan,\n magenta,\n disableAnsi,\n} from './ansiHelpers.js';\nimport { TaskReporterTask, type TaskReporterTaskStatus, type TaskReporterTaskResult } from './TaskReporterTask.js';\nimport { makeValuesUniformLength } from './makeValuesUniformLength.js';\nimport { formatTime } from './formatTime.js';\nimport { getTimestamp } from './getTimestamp.js';\nimport type { Sticky } from './Sticky.js';\nimport { SpinningSticky } from './SpinningSticky.js';\n\n/** Controls how many tasks should be displayed in the pending sticky list. */\nconst maxRunningTasksShown = 5;\n\ntype StatusDictionary = {\n [key in TaskReporterTaskStatus | 'default']?: string;\n};\n\nconst statusCharacter: StatusDictionary = {\n running: yellow('!'),\n pass: green('✓'),\n complete: green('✓'),\n fail: red('✗'),\n abort: yellow('?'),\n default: '-',\n};\n\nconst statusMessage: StatusDictionary = makeValuesUniformLength({\n running: 'started',\n pass: 'passed',\n complete: 'completed',\n fail: 'failed',\n abort: 'aborted',\n skip: 'skipped',\n idle: 'idle',\n pending: 'pending',\n warn: 'warn',\n log: 'log',\n info: 'info',\n error: 'error',\n debug: 'debug',\n default: 'unknown',\n});\n\nconst statusColor: {\n [key in TaskReporterTaskStatus | 'default']?: (text?: string) => string;\n} = {\n running: yellow,\n pass: green,\n complete: green,\n fail: red,\n abort: yellow,\n idle: darkGrey,\n pending: darkGrey,\n skip: darkGrey,\n warn: yellow,\n log: white,\n info: blue,\n error: red,\n debug: magenta,\n default: white,\n};\n\n/**\n * Options for the TaskReporter instance.\n */\nexport interface TaskReporterOptions {\n /**\n * Product name to display.\n */\n productName?: string;\n\n /**\n * Version of the product to display.\n */\n version?: string;\n\n /**\n * Description of the product to display next to the product name.\n */\n description?: string;\n\n /**\n * Help message to display.\n */\n helpMessage?: string;\n\n /**\n * Plain text mode. This will disable all colors and formatting which depends\n * on ansi codes, including stickies.\n */\n plainTextMode?: boolean;\n\n /**\n * Show console.log messages.\n */\n showConsoleLog?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleInfo?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleWarn?: boolean;\n\n /**\n * Show console.error messages.\n */\n showConsoleError?: boolean;\n\n /**\n * Show console.debug messages.\n */\n showConsoleDebug?: boolean;\n\n /**\n * Show errors that occur during task execution.\n */\n showErrors?: boolean;\n\n /**\n * Show summary of tasks once the `complete` method has been called.\n */\n showSummary?: boolean;\n\n /**\n * Show progress for tasks that are running, below the sticky summary.\n */\n showProgress?: boolean;\n\n /**\n * Show tasks that are started above the sticky summary, as they start.\n */\n showStarted?: boolean;\n\n /**\n * Show tasks that are completed above the sticky summary, as they complete.\n */\n showCompleted?: boolean;\n\n /**\n * Show tasks that are pending (as sticky tasks below the summary.)\n */\n showPending?: boolean;\n\n /**\n * Show task details when a task completes. This is useful for showing\n * additional information about a task, such as the output of a command.\n * This should show for minimal logging.\n */\n showTaskDetails?: boolean;\n\n /**\n * Show extended logging for tasks. This is useful for showing additional\n * information about a task, such as extended metadata for a task. This should\n * show in verbose logging.\n */\n showTaskExtended?: boolean;\n}\n\n/**\n * A reporter for tasks. This is used to report the status of tasks to the\n * console.\n */\nexport class TaskReporter {\n private _options: TaskReporterOptions;\n private _writer: Writer;\n private _pendingTasks: Set<TaskReporterTask>;\n private _runningTasks: Set<TaskReporterTask>;\n private _runningTaskStickies: Map<TaskReporterTask, Sticky>;\n private _completedTasks: TaskReporterTask[];\n private _completeReason: string | undefined;\n private _hasCompleted: boolean;\n\n constructor(options: TaskReporterOptions = {}) {\n this._options = options;\n this._writer = new Writer();\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._runningTaskStickies = new Map();\n this._completedTasks = [];\n this._hasCompleted = false;\n\n // Catch console.log messages and print them using this.write.\n this._overrideConsoleLogging();\n\n // Initialize things based on options.\n this.setOptions(options);\n }\n\n /**\n * Set options.\n */\n public setOptions(options: TaskReporterOptions) {\n const previousOptions = this._options;\n\n this._options = { ...options };\n\n disableAnsi(!!options.plainTextMode);\n\n if (previousOptions.productName !== options.productName) {\n this._reportProductInfo();\n }\n }\n\n /**\n * Add a task to the reporter. If `pending` is true, the task will be initially\n * in a waiting state. Otherwise it will assume to be in a started state.\n */\n public addTask(name: string, pending?: boolean) {\n const task = new TaskReporterTask(name);\n\n task.on('start', () => {\n this._pendingTasks.delete(task);\n this._runningTasks.add(task);\n\n this._updateStickies();\n });\n\n task.on('complete', () => {\n this._runningTasks.delete(task);\n this._completedTasks.push(task);\n task.removeAllListeners();\n this._reportTaskComplete(task);\n\n const sticky = this._runningTaskStickies.get(task);\n\n if (sticky) {\n sticky.remove();\n this._runningTaskStickies.delete(task);\n }\n\n this._updateStickies();\n });\n\n if (pending) {\n this._pendingTasks.add(task);\n } else {\n task.status = 'running';\n this._runningTasks.add(task);\n }\n\n if (pending) {\n this._updateStickies();\n } else {\n task.start();\n }\n\n return task;\n }\n\n /**\n * Creates a task and executes it. The execute function should return a promise that\n * resolves when the task is complete. If the promise resolves without a return value,\n * the task will be marked as complete. If the promise resolves with an object, the\n * task will be updated with the status, message, and details from the object.\n *\n * If exceptions are thrown, the task will be marked as failed and the exception\n * will be recorded as the message/details.\n */\n public async runTask(\n name: string,\n execute: () => Promise<undefined | TaskReporterTaskResult>,\n ): Promise<TaskReporterTaskResult> {\n const task = this.addTask(name);\n let result: TaskReporterTaskResult | undefined;\n\n try {\n result = await execute();\n\n task.complete(result);\n } catch (err: unknown) {\n const error = err as { message?: string; toString: () => string };\n\n const message =\n typeof error.message === 'string'\n ? error.message\n : typeof error.toString === 'function'\n ? error.toString()\n : 'Unexpected exception occurred.';\n\n task.complete({ status: 'fail', message });\n\n throw err;\n }\n\n return result || { status: 'complete' };\n }\n\n public complete(completeReason?: string) {\n this._pendingTasks.forEach((task) => task.complete({ status: 'skip', message: completeReason }));\n this._runningTasks.forEach((task) => task.complete({ status: 'abort', message: completeReason }));\n this._completedTasks = [...this._completedTasks, ...this._pendingTasks, ...this._runningTasks];\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._writer.stickies = [];\n this._completeReason = completeReason;\n\n this._reportSummary();\n }\n\n public hasErrors() {\n return this._completedTasks.some((task) => task.status === 'fail');\n }\n\n private _overrideConsoleLogging() {\n const createOverride = (optionName: keyof TaskReporterOptions, status: TaskReporterTaskStatus) => {\n return (...args: unknown[]) => {\n if (this._options[optionName]) {\n this._reportConsoleLog(status, args);\n }\n };\n };\n\n console.log = createOverride('showConsoleLog', 'log');\n console.warn = createOverride('showConsoleWarn', 'warn');\n console.info = createOverride('showConsoleInfo', 'info');\n console.error = createOverride('showConsoleError', 'error');\n console.debug = createOverride('showConsoleDebug', 'debug');\n }\n\n private _reportProductInfo() {\n const { productName, version, description, helpMessage } = this._options;\n\n if (productName) {\n this._writer.write(\n [`\\n${productName}`, version && `(v${bold(white(version))})`, description && cyan(description)]\n .filter(Boolean)\n .join(' '),\n );\n }\n if (helpMessage) {\n this._writer.write(helpMessage);\n }\n\n this._writer.write('');\n }\n\n private _reportConsoleLog(status: TaskReporterTaskStatus, args: unknown[]) {\n const char = statusCharacter[status] || statusCharacter.default;\n const color = statusColor[status] || statusColor.default || ((arg) => arg);\n const messageType = statusMessage[status] || statusMessage.default;\n\n this._writer.write(`${darkGrey(`[${getTimestamp()}]`)} ${char} ${bold(color(messageType))} ${args.join(' ')}`);\n }\n\n private _reportTaskComplete(task: TaskReporterTask) {\n // Show completed tasks if the option is set, or if the task was forced to show.\n if (this._options.showCompleted || task.forceShow || (this._options.showErrors && task.status === 'fail')) {\n const char = statusCharacter[task.status] || statusCharacter.default;\n const color = statusColor[task.status] || statusColor.default || ((arg) => arg);\n const messageType = color(statusMessage[task.status] || statusMessage.default);\n const resultDetails = task.message ? `- ${task.message}` : '';\n const resultDuration = task.duration && task.status !== 'abort' ? `(${formatTime(task.duration)})` : '';\n\n this._writer.write(\n `${darkGrey(`[${getTimestamp()}]`)} ${char} ${messageType} ${task.name} ${resultDetails} ${darkGrey(\n resultDuration,\n )}`,\n );\n\n if (task.details && (this._options.showTaskDetails || task.status === 'fail')) {\n this._writer.write(`${task.status === 'fail' ? lightRed(task.details) : task.details}`);\n }\n\n if (task.extended && this._options.showTaskExtended) {\n this._writer.write(`Extended details:\\n${task.extended}`);\n }\n }\n }\n\n private _reportSummary() {\n if (!this._options.showSummary) {\n return;\n }\n\n // Report the final summary of pass/fail/skip/abort\n const summary = Array.from(this._completedTasks).reduce((prev, { status }) => {\n if (status) {\n prev[status] = (prev[status] || 0) + 1;\n }\n\n return prev;\n }, {} as Record<string, number>);\n\n const summaryMessage = [\n summary.complete !== undefined && `${green(summary.complete)} tasks completed`,\n summary.pass !== undefined && `${green(summary.pass)} passed`,\n summary.fail !== undefined && `${red(summary.fail)} failed`,\n summary.abort !== undefined && `${yellow(summary.abort)} aborted`,\n summary.skip !== undefined && `${darkGrey(summary.skip)} skipped`,\n ]\n .filter(Boolean)\n .join(', ');\n\n // Add a blank line before the summary\n this._writer.write(''); // Add a blank line before the summary\n\n if (summaryMessage || this._completeReason) {\n this._writer.write(\n [this._completeReason && `Summary: ${this._completeReason}`, summaryMessage].filter(Boolean).join(`\\n`),\n );\n }\n\n if (this._hasCompleted) {\n throw new Error(`TaskReporter has already completed.`);\n }\n this._hasCompleted = true;\n }\n\n private _updateStickies() {\n if (!this._options.showPending || this._options.plainTextMode) {\n return;\n }\n\n const totalTasks = this._completedTasks.length + this._pendingTasks.size + this._runningTasks.size;\n const percentage = totalTasks\n ? ` (${green(`${Math.round((100 * this._completedTasks.length) / totalTasks)}%`)})`\n : '';\n\n const summaryStickies = [\n '',\n `${darkGrey(`──┤`)} Waiting: ${yellow(this._pendingTasks.size)} ${darkGrey(`├──┤`)} Completed: ${green(\n this._completedTasks.length,\n )} / ${green(totalTasks)}${percentage} ${darkGrey(`├──`)}`,\n ];\n\n const runningTaskStickies = [\n ...Array.from(this._runningTasks)\n .slice(0, maxRunningTasksShown)\n .map((task) => {\n if (!this._runningTaskStickies.has(task)) {\n this._runningTaskStickies.set(task, new SpinningSticky(task.name));\n }\n return this._runningTaskStickies.get(task);\n }),\n this._runningTasks.size > maxRunningTasksShown &&\n `${yellow(`(+${this._runningTasks.size - maxRunningTasksShown} more...)`)}`,\n ].filter(Boolean) as (string | Sticky)[];\n\n this._writer.stickies = [...summaryStickies, ...runningTaskStickies];\n }\n}\n"]} | ||
| {"version":3,"file":"TaskReporter.js","sourceRoot":"","sources":["../src/TaskReporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Writer } from './Writer.js';\nimport { darkGrey, green, lightRed, red, yellow, white, bold, blue, cyan, magenta } from './ansiHelpers.js';\nimport { TaskReporterTask, type TaskReporterTaskStatus, type TaskReporterTaskResult } from './TaskReporterTask.js';\nimport { makeValuesUniformLength } from './makeValuesUniformLength.js';\nimport { formatTime } from './formatTime.js';\nimport { getTimestamp } from './getTimestamp.js';\nimport type { Sticky } from './Sticky.js';\nimport { SpinningSticky } from './SpinningSticky.js';\n\n/** Controls how many tasks should be displayed in the pending sticky list. */\nconst maxRunningTasksShown = 5;\n\ntype StatusDictionary = {\n [key in TaskReporterTaskStatus | 'default']?: string;\n};\n\nconst statusCharacter: StatusDictionary = {\n running: yellow('!'),\n pass: green('✓'),\n complete: green('✓'),\n fail: red('✗'),\n abort: yellow('?'),\n default: '-',\n};\n\nconst statusMessage: StatusDictionary = makeValuesUniformLength({\n running: 'started',\n pass: 'passed',\n complete: 'completed',\n fail: 'failed',\n abort: 'aborted',\n skip: 'skipped',\n idle: 'idle',\n pending: 'pending',\n warn: 'warn',\n log: 'log',\n info: 'info',\n error: 'error',\n debug: 'debug',\n default: 'unknown',\n});\n\nconst statusColor: {\n [key in TaskReporterTaskStatus | 'default']?: (text?: string) => string;\n} = {\n running: yellow,\n pass: green,\n complete: green,\n fail: red,\n abort: yellow,\n idle: darkGrey,\n pending: darkGrey,\n skip: darkGrey,\n warn: yellow,\n log: white,\n info: blue,\n error: red,\n debug: magenta,\n default: white,\n};\n\n/**\n * Options for the TaskReporter instance.\n */\nexport interface TaskReporterOptions {\n /**\n * Product name to display.\n */\n productName?: string;\n\n /**\n * Version of the product to display.\n */\n version?: string;\n\n /**\n * Description of the product to display next to the product name.\n */\n description?: string;\n\n /**\n * Help message to display.\n */\n helpMessage?: string;\n\n /**\n * Plain text mode. This will disable sticky rendering which requires ansi support.\n */\n plainTextMode?: boolean;\n\n /**\n * Show console.log messages.\n */\n showConsoleLog?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleInfo?: boolean;\n\n /**\n * Show console.warn messages.\n */\n showConsoleWarn?: boolean;\n\n /**\n * Show console.error messages.\n */\n showConsoleError?: boolean;\n\n /**\n * Show console.debug messages.\n */\n showConsoleDebug?: boolean;\n\n /**\n * Show errors that occur during task execution.\n */\n showErrors?: boolean;\n\n /**\n * Show summary of tasks once the `complete` method has been called.\n */\n showSummary?: boolean;\n\n /**\n * Show progress for tasks that are running, below the sticky summary.\n */\n showProgress?: boolean;\n\n /**\n * Show tasks that are started above the sticky summary, as they start.\n */\n showStarted?: boolean;\n\n /**\n * Show tasks that are completed above the sticky summary, as they complete.\n */\n showCompleted?: boolean;\n\n /**\n * Show tasks that are pending (as sticky tasks below the summary.)\n */\n showPending?: boolean;\n\n /**\n * Show task details when a task completes. This is useful for showing\n * additional information about a task, such as the output of a command.\n * This should show for minimal logging.\n */\n showTaskDetails?: boolean;\n\n /**\n * Show extended logging for tasks. This is useful for showing additional\n * information about a task, such as extended metadata for a task. This should\n * show in verbose logging.\n */\n showTaskExtended?: boolean;\n}\n\n/**\n * A reporter for tasks. This is used to report the status of tasks to the\n * console.\n */\nexport class TaskReporter {\n private _options: TaskReporterOptions;\n private _writer: Writer;\n private _pendingTasks: Set<TaskReporterTask>;\n private _runningTasks: Set<TaskReporterTask>;\n private _runningTaskStickies: Map<TaskReporterTask, Sticky>;\n private _completedTasks: TaskReporterTask[];\n private _completeReason: string | undefined;\n private _hasCompleted: boolean;\n private _ignoredLogMessages: string[] = [];\n\n constructor(options: TaskReporterOptions = {}) {\n this._options = options;\n this._writer = new Writer();\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._runningTaskStickies = new Map();\n this._completedTasks = [];\n this._hasCompleted = false;\n\n // Catch console.log messages and print them using this.write.\n this._overrideConsoleLogging();\n\n // Initialize things based on options.\n this.setOptions(options);\n }\n\n /**\n * Add a partial string to match on console logging. When found, we ignore the message.\n */\n public ignoreLogMessage(partialMatch: string) {\n this._ignoredLogMessages.push(partialMatch);\n }\n\n /**\n * Set options.\n */\n public setOptions(options: TaskReporterOptions) {\n const previousOptions = this._options;\n\n this._options = { ...options };\n\n if (previousOptions.productName !== options.productName) {\n this._reportProductInfo();\n }\n }\n\n /**\n * Add a task to the reporter. If `pending` is true, the task will be initially\n * in a waiting state. Otherwise it will assume to be in a started state.\n */\n public addTask(name: string, pending?: boolean) {\n const task = new TaskReporterTask(name);\n\n task.on('start', () => {\n this._pendingTasks.delete(task);\n this._runningTasks.add(task);\n\n this._updateStickies();\n });\n\n task.on('complete', () => {\n this._runningTasks.delete(task);\n this._completedTasks.push(task);\n task.removeAllListeners();\n this._reportTaskComplete(task);\n\n const sticky = this._runningTaskStickies.get(task);\n\n if (sticky) {\n sticky.remove();\n this._runningTaskStickies.delete(task);\n }\n\n this._updateStickies();\n });\n\n if (pending) {\n this._pendingTasks.add(task);\n } else {\n task.status = 'running';\n this._runningTasks.add(task);\n }\n\n if (pending) {\n this._updateStickies();\n } else {\n task.start();\n }\n\n return task;\n }\n\n /**\n * Creates a task and executes it. The execute function should return a promise that\n * resolves when the task is complete. If the promise resolves without a return value,\n * the task will be marked as complete. If the promise resolves with an object, the\n * task will be updated with the status, message, and details from the object.\n *\n * If exceptions are thrown, the task will be marked as failed and the exception\n * will be recorded as the message/details.\n */\n public async runTask(\n name: string,\n execute: () => Promise<undefined | TaskReporterTaskResult>,\n ): Promise<TaskReporterTaskResult> {\n const task = this.addTask(name);\n let result: TaskReporterTaskResult | undefined;\n\n try {\n result = await execute();\n\n task.complete(result);\n } catch (err: unknown) {\n const error = err as { message?: string; toString: () => string };\n\n const message =\n typeof error.message === 'string'\n ? error.message\n : typeof error.toString === 'function'\n ? error.toString()\n : 'Unexpected exception occurred.';\n\n task.complete({ status: 'fail', message });\n\n throw err;\n }\n\n return result || { status: 'complete' };\n }\n\n public complete(completeReason?: string) {\n this._pendingTasks.forEach((task) => task.complete({ status: 'skip', message: completeReason }));\n this._runningTasks.forEach((task) => task.complete({ status: 'abort', message: completeReason }));\n this._completedTasks = [...this._completedTasks, ...this._pendingTasks, ...this._runningTasks];\n this._pendingTasks = new Set();\n this._runningTasks = new Set();\n this._writer.stickies = [];\n this._completeReason = completeReason;\n\n this._reportSummary();\n }\n\n public hasErrors() {\n return this._completedTasks.some((task) => task.status === 'fail');\n }\n\n private _overrideConsoleLogging() {\n const createOverride = (optionName: keyof TaskReporterOptions, status: TaskReporterTaskStatus) => {\n return (...args: unknown[]) => {\n if (this._options[optionName]) {\n const filteredArgs =\n this._ignoredLogMessages.length === 0\n ? args\n : args.filter(\n (arg) =>\n !this._ignoredLogMessages.find(\n (substring) => typeof arg === 'string' && arg.indexOf(substring) >= 0,\n ),\n );\n\n this._reportConsoleLog(status, filteredArgs);\n }\n };\n };\n\n console.log = createOverride('showConsoleLog', 'log');\n console.warn = createOverride('showConsoleWarn', 'warn');\n console.info = createOverride('showConsoleInfo', 'info');\n console.error = createOverride('showConsoleError', 'error');\n console.debug = createOverride('showConsoleDebug', 'debug');\n }\n\n private _reportProductInfo() {\n const { productName, version, description, helpMessage } = this._options;\n\n if (productName) {\n this._writer.write(\n [`\\n${productName}`, version && `(v${bold(white(version))})`, description && cyan(description)]\n .filter(Boolean)\n .join(' '),\n );\n }\n if (helpMessage) {\n this._writer.write(helpMessage);\n }\n\n this._writer.write('');\n }\n\n private _reportConsoleLog(status: TaskReporterTaskStatus, args: unknown[]) {\n const char = statusCharacter[status] || statusCharacter.default;\n const color = statusColor[status] || statusColor.default || ((arg) => arg);\n const messageType = statusMessage[status] || statusMessage.default;\n\n if (args.length) {\n this._writer.write(`${darkGrey(`[${getTimestamp()}]`)} ${char} ${bold(color(messageType))} ${args.join(' ')}`);\n }\n }\n\n private _reportTaskComplete(task: TaskReporterTask) {\n // Show completed tasks if the option is set, or if the task was forced to show.\n if (this._options.showCompleted || task.forceShow || (this._options.showErrors && task.status === 'fail')) {\n const char = statusCharacter[task.status] || statusCharacter.default;\n const color = statusColor[task.status] || statusColor.default || ((arg) => arg);\n const messageType = color(statusMessage[task.status] || statusMessage.default);\n const resultDetails = task.message ? `${task.message[0] === '\\n' ? '' : '- '}${task.message}` : '';\n const resultDuration = task.duration && task.status !== 'abort' ? `(${formatTime(task.duration)})` : '';\n\n this._writer.write(\n `${darkGrey(`[${getTimestamp()}]`)} ${char} ${messageType} ${task.name} ${resultDetails} ${darkGrey(\n resultDuration,\n )}`,\n );\n\n if (task.details && (this._options.showTaskDetails || task.status === 'fail')) {\n this._writer.write(`${task.status === 'fail' ? lightRed(task.details) : task.details}`);\n }\n\n if (task.extended && this._options.showTaskExtended) {\n this._writer.write(`Extended details:\\n${task.extended}`);\n }\n }\n }\n\n private _reportSummary() {\n if (!this._options.showSummary) {\n return;\n }\n\n // Report the final summary of pass/fail/skip/abort\n const summary = Array.from(this._completedTasks).reduce((prev, { status }) => {\n if (status) {\n prev[status] = (prev[status] || 0) + 1;\n }\n\n return prev;\n }, {} as Record<string, number>);\n\n const summaryMessage = [\n summary.complete !== undefined && `${green(summary.complete)} tasks completed`,\n summary.pass !== undefined && `${green(summary.pass)} passed`,\n summary.fail !== undefined && `${red(summary.fail)} failed`,\n summary.abort !== undefined && `${yellow(summary.abort)} aborted`,\n summary.skip !== undefined && `${darkGrey(summary.skip)} skipped`,\n ]\n .filter(Boolean)\n .join(', ');\n\n // Add a blank line before the summary\n this._writer.write(''); // Add a blank line before the summary\n\n if (summaryMessage || this._completeReason) {\n this._writer.write(\n [this._completeReason && `Summary: ${this._completeReason}`, summaryMessage].filter(Boolean).join(`\\n`),\n );\n }\n\n if (this._hasCompleted) {\n throw new Error(`TaskReporter has already completed.`);\n }\n this._hasCompleted = true;\n }\n\n private _updateStickies() {\n if (!this._options.showPending || this._options.plainTextMode) {\n return;\n }\n\n const totalTasks = this._completedTasks.length + this._pendingTasks.size + this._runningTasks.size;\n const percentage = totalTasks\n ? ` (${green(`${Math.round((100 * this._completedTasks.length) / totalTasks)}%`)})`\n : '';\n\n const summaryStickies = [\n '',\n `${darkGrey(`──┤`)} Waiting: ${yellow(this._pendingTasks.size)} ${darkGrey(`├──┤`)} Completed: ${green(\n this._completedTasks.length,\n )} / ${green(totalTasks)}${percentage} ${darkGrey(`├──`)}`,\n ];\n\n const runningTaskStickies = [\n ...Array.from(this._runningTasks)\n .slice(0, maxRunningTasksShown)\n .map((task) => {\n if (!this._runningTaskStickies.has(task)) {\n this._runningTaskStickies.set(task, new SpinningSticky(task.name));\n }\n return this._runningTaskStickies.get(task);\n }),\n this._runningTasks.size > maxRunningTasksShown &&\n `${yellow(`(+${this._runningTasks.size - maxRunningTasksShown} more...)`)}`,\n ].filter(Boolean) as (string | Sticky)[];\n\n this._writer.stickies = [...summaryStickies, ...runningTaskStickies];\n }\n}\n"]} |
@@ -8,5 +8,5 @@ // This file is read by tools that parse documentation comments conforming to the TSDoc standard. | ||
| "packageName": "@microsoft/api-extractor", | ||
| "packageVersion": "7.35.4" | ||
| "packageVersion": "7.36.0" | ||
| } | ||
| ] | ||
| } |
+1
-1
| { | ||
| "name": "@ms-cloudpack/task-reporter", | ||
| "version": "0.4.3", | ||
| "version": "0.5.0", | ||
| "description": "Helpers for logging tasks to the console.", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
229534
0.98%2298
0.17%3
-40%