aboutsummaryrefslogtreecommitdiff
path: root/node_modules/istanbul-lib-report/lib/file-writer.js
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
commit5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch)
tree360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/istanbul-lib-report/lib/file-writer.js
parentb500a50f1b97d93c98b36ed9a980f8188d648147 (diff)
downloadLYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz
LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/istanbul-lib-report/lib/file-writer.js')
-rw-r--r--node_modules/istanbul-lib-report/lib/file-writer.js189
1 files changed, 189 insertions, 0 deletions
diff --git a/node_modules/istanbul-lib-report/lib/file-writer.js b/node_modules/istanbul-lib-report/lib/file-writer.js
new file mode 100644
index 0000000..de1154b
--- /dev/null
+++ b/node_modules/istanbul-lib-report/lib/file-writer.js
@@ -0,0 +1,189 @@
+'use strict';
+/*
+ Copyright 2012-2015, Yahoo Inc.
+ Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
+ */
+const path = require('path');
+const fs = require('fs');
+const mkdirp = require('make-dir');
+const supportsColor = require('supports-color');
+
+/**
+ * Base class for writing content
+ * @class ContentWriter
+ * @constructor
+ */
+class ContentWriter {
+ /**
+ * returns the colorized version of a string. Typically,
+ * content writers that write to files will return the
+ * same string and ones writing to a tty will wrap it in
+ * appropriate escape sequences.
+ * @param {String} str the string to colorize
+ * @param {String} clazz one of `high`, `medium` or `low`
+ * @returns {String} the colorized form of the string
+ */
+ colorize(str /*, clazz*/) {
+ return str;
+ }
+
+ /**
+ * writes a string appended with a newline to the destination
+ * @param {String} str the string to write
+ */
+ println(str) {
+ this.write(`${str}\n`);
+ }
+
+ /**
+ * closes this content writer. Should be called after all writes are complete.
+ */
+ close() {}
+}
+
+/**
+ * a content writer that writes to a file
+ * @param {Number} fd - the file descriptor
+ * @extends ContentWriter
+ * @constructor
+ */
+class FileContentWriter extends ContentWriter {
+ constructor(fd) {
+ super();
+
+ this.fd = fd;
+ }
+
+ write(str) {
+ fs.writeSync(this.fd, str);
+ }
+
+ close() {
+ fs.closeSync(this.fd);
+ }
+}
+
+// allow stdout to be captured for tests.
+let capture = false;
+let output = '';
+
+/**
+ * a content writer that writes to the console
+ * @extends ContentWriter
+ * @constructor
+ */
+class ConsoleWriter extends ContentWriter {
+ write(str) {
+ if (capture) {
+ output += str;
+ } else {
+ process.stdout.write(str);
+ }
+ }
+
+ colorize(str, clazz) {
+ const colors = {
+ low: '31;1',
+ medium: '33;1',
+ high: '32;1'
+ };
+
+ /* istanbul ignore next: different modes for CI and local */
+ if (supportsColor.stdout && colors[clazz]) {
+ return `\u001b[${colors[clazz]}m${str}\u001b[0m`;
+ }
+ return str;
+ }
+}
+
+/**
+ * utility for writing files under a specific directory
+ * @class FileWriter
+ * @param {String} baseDir the base directory under which files should be written
+ * @constructor
+ */
+class FileWriter {
+ constructor(baseDir) {
+ if (!baseDir) {
+ throw new Error('baseDir must be specified');
+ }
+ this.baseDir = baseDir;
+ }
+
+ /**
+ * static helpers for capturing stdout report output;
+ * super useful for tests!
+ */
+ static startCapture() {
+ capture = true;
+ }
+
+ static stopCapture() {
+ capture = false;
+ }
+
+ static getOutput() {
+ return output;
+ }
+
+ static resetOutput() {
+ output = '';
+ }
+
+ /**
+ * returns a FileWriter that is rooted at the supplied subdirectory
+ * @param {String} subdir the subdirectory under which to root the
+ * returned FileWriter
+ * @returns {FileWriter}
+ */
+ writerForDir(subdir) {
+ if (path.isAbsolute(subdir)) {
+ throw new Error(
+ `Cannot create subdir writer for absolute path: ${subdir}`
+ );
+ }
+ return new FileWriter(`${this.baseDir}/${subdir}`);
+ }
+
+ /**
+ * copies a file from a source directory to a destination name
+ * @param {String} source path to source file
+ * @param {String} dest relative path to destination file
+ * @param {String} [header=undefined] optional text to prepend to destination
+ * (e.g., an "this file is autogenerated" comment, copyright notice, etc.)
+ */
+ copyFile(source, dest, header) {
+ if (path.isAbsolute(dest)) {
+ throw new Error(`Cannot write to absolute path: ${dest}`);
+ }
+ dest = path.resolve(this.baseDir, dest);
+ mkdirp.sync(path.dirname(dest));
+ let contents;
+ if (header) {
+ contents = header + fs.readFileSync(source, 'utf8');
+ } else {
+ contents = fs.readFileSync(source);
+ }
+ fs.writeFileSync(dest, contents);
+ }
+
+ /**
+ * returns a content writer for writing content to the supplied file.
+ * @param {String|null} file the relative path to the file or the special
+ * values `"-"` or `null` for writing to the console
+ * @returns {ContentWriter}
+ */
+ writeFile(file) {
+ if (file === null || file === '-') {
+ return new ConsoleWriter();
+ }
+ if (path.isAbsolute(file)) {
+ throw new Error(`Cannot write to absolute path: ${file}`);
+ }
+ file = path.resolve(this.baseDir, file);
+ mkdirp.sync(path.dirname(file));
+ return new FileContentWriter(fs.openSync(file, 'w'));
+ }
+}
+
+module.exports = FileWriter;