UNPKG

@substrate/api-sidecar

Version:

REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.

64 lines 2.27 kB
"use strict"; // Copyright 2017-2025 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. Object.defineProperty(exports, "__esModule", { value: true }); exports.stripAnsi = void 0; const winston_1 = require("winston"); /** * Regex pattern to match ANSI characters. */ const pattern = [ '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))', ].join('|'); /** * RegExp for global matching ANSI characters. */ const ansiRegex = new RegExp(pattern, 'g'); /** * Strip ANSI characters from strings in simple, arbitrary data. N.B. this is not * hardened to work with any possible javascript type and is only meant for arrays, * basic objects and strings. * * @param data arbitrary data */ function stripAnsiShellCodes(data) { if (data === null || data === undefined) { return data; } if (typeof data === 'string') { return data.replace(ansiRegex, ''); } if (Array.isArray(data)) { return data.map((val) => stripAnsiShellCodes(val)); } if (typeof data === 'object' && data !== null) { const sanitizedData = {}; for (const [k, v] of Object.entries(data)) { sanitizedData[k] = stripAnsiShellCodes(v); } return sanitizedData; } return data; } /** * Strip ANSI characters from `TransformableInfo.message`. */ exports.stripAnsi = (0, winston_1.format)((info) => { info.message = stripAnsiShellCodes(info.message); return info; }); //# sourceMappingURL=stripAnsi.js.map