mirror of
				https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
				synced 2025-10-30 17:45:30 +00:00 
			
		
		
		
	Fixed some build options for vite
This commit is contained in:
		
							
								
								
									
										139
									
								
								node_modules/cliui/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								node_modules/cliui/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | ||||
| # Change Log | ||||
|  | ||||
| All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. | ||||
|  | ||||
| ## [8.0.1](https://github.com/yargs/cliui/compare/v8.0.0...v8.0.1) (2022-10-01) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * **deps:** move rollup-plugin-ts to dev deps ([#124](https://github.com/yargs/cliui/issues/124)) ([7c8bd6b](https://github.com/yargs/cliui/commit/7c8bd6ba024d61e4eeae310c7959ab8ab6829081)) | ||||
|  | ||||
| ## [8.0.0](https://github.com/yargs/cliui/compare/v7.0.4...v8.0.0) (2022-09-30) | ||||
|  | ||||
|  | ||||
| ### ⚠ BREAKING CHANGES | ||||
|  | ||||
| * **deps:** drop Node 10 to release CVE-2021-3807 patch (#122) | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * **deps:** drop Node 10 to release CVE-2021-3807 patch ([#122](https://github.com/yargs/cliui/issues/122)) ([f156571](https://github.com/yargs/cliui/commit/f156571ce4f2ebf313335e3a53ad905589da5a30)) | ||||
|  | ||||
| ### [7.0.4](https://www.github.com/yargs/cliui/compare/v7.0.3...v7.0.4) (2020-11-08) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * **deno:** import UIOptions from definitions ([#97](https://www.github.com/yargs/cliui/issues/97)) ([f04f343](https://www.github.com/yargs/cliui/commit/f04f3439bc78114c7e90f82ff56f5acf16268ea8)) | ||||
|  | ||||
| ### [7.0.3](https://www.github.com/yargs/cliui/compare/v7.0.2...v7.0.3) (2020-10-16) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * **exports:** node 13.0 and 13.1 require the dotted object form _with_ a string fallback ([#93](https://www.github.com/yargs/cliui/issues/93)) ([eca16fc](https://www.github.com/yargs/cliui/commit/eca16fc05d26255df3280906c36d7f0e5b05c6e9)) | ||||
|  | ||||
| ### [7.0.2](https://www.github.com/yargs/cliui/compare/v7.0.1...v7.0.2) (2020-10-14) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * **exports:** node 13.0-13.6 require a string fallback ([#91](https://www.github.com/yargs/cliui/issues/91)) ([b529d7e](https://www.github.com/yargs/cliui/commit/b529d7e432901af1af7848b23ed6cf634497d961)) | ||||
|  | ||||
| ### [7.0.1](https://www.github.com/yargs/cliui/compare/v7.0.0...v7.0.1) (2020-08-16) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * **build:** main should be build/index.cjs ([dc29a3c](https://www.github.com/yargs/cliui/commit/dc29a3cc617a410aa850e06337b5954b04f2cb4d)) | ||||
|  | ||||
| ## [7.0.0](https://www.github.com/yargs/cliui/compare/v6.0.0...v7.0.0) (2020-08-16) | ||||
|  | ||||
|  | ||||
| ### ⚠ BREAKING CHANGES | ||||
|  | ||||
| * tsc/ESM/Deno support (#82) | ||||
| * modernize deps and build (#80) | ||||
|  | ||||
| ### Build System | ||||
|  | ||||
| * modernize deps and build ([#80](https://www.github.com/yargs/cliui/issues/80)) ([339d08d](https://www.github.com/yargs/cliui/commit/339d08dc71b15a3928aeab09042af94db2f43743)) | ||||
|  | ||||
|  | ||||
| ### Code Refactoring | ||||
|  | ||||
| * tsc/ESM/Deno support ([#82](https://www.github.com/yargs/cliui/issues/82)) ([4b777a5](https://www.github.com/yargs/cliui/commit/4b777a5fe01c5d8958c6708695d6aab7dbe5706c)) | ||||
|  | ||||
| ## [6.0.0](https://www.github.com/yargs/cliui/compare/v5.0.0...v6.0.0) (2019-11-10) | ||||
|  | ||||
|  | ||||
| ### ⚠ BREAKING CHANGES | ||||
|  | ||||
| * update deps, drop Node 6 | ||||
|  | ||||
| ### Code Refactoring | ||||
|  | ||||
| * update deps, drop Node 6 ([62056df](https://www.github.com/yargs/cliui/commit/62056df)) | ||||
|  | ||||
| ## [5.0.0](https://github.com/yargs/cliui/compare/v4.1.0...v5.0.0) (2019-04-10) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * Update wrap-ansi to fix compatibility with latest versions of chalk. ([#60](https://github.com/yargs/cliui/issues/60)) ([7bf79ae](https://github.com/yargs/cliui/commit/7bf79ae)) | ||||
|  | ||||
|  | ||||
| ### BREAKING CHANGES | ||||
|  | ||||
| * Drop support for node < 6. | ||||
|  | ||||
|  | ||||
|  | ||||
| <a name="4.1.0"></a> | ||||
| ## [4.1.0](https://github.com/yargs/cliui/compare/v4.0.0...v4.1.0) (2018-04-23) | ||||
|  | ||||
|  | ||||
| ### Features | ||||
|  | ||||
| * add resetOutput method ([#57](https://github.com/yargs/cliui/issues/57)) ([7246902](https://github.com/yargs/cliui/commit/7246902)) | ||||
|  | ||||
|  | ||||
|  | ||||
| <a name="4.0.0"></a> | ||||
| ## [4.0.0](https://github.com/yargs/cliui/compare/v3.2.0...v4.0.0) (2017-12-18) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * downgrades strip-ansi to version 3.0.1 ([#54](https://github.com/yargs/cliui/issues/54)) ([5764c46](https://github.com/yargs/cliui/commit/5764c46)) | ||||
| * set env variable FORCE_COLOR. ([#56](https://github.com/yargs/cliui/issues/56)) ([7350e36](https://github.com/yargs/cliui/commit/7350e36)) | ||||
|  | ||||
|  | ||||
| ### Chores | ||||
|  | ||||
| * drop support for node < 4 ([#53](https://github.com/yargs/cliui/issues/53)) ([b105376](https://github.com/yargs/cliui/commit/b105376)) | ||||
|  | ||||
|  | ||||
| ### Features | ||||
|  | ||||
| * add fallback for window width ([#45](https://github.com/yargs/cliui/issues/45)) ([d064922](https://github.com/yargs/cliui/commit/d064922)) | ||||
|  | ||||
|  | ||||
| ### BREAKING CHANGES | ||||
|  | ||||
| * officially drop support for Node < 4 | ||||
|  | ||||
|  | ||||
|  | ||||
| <a name="3.2.0"></a> | ||||
| ## [3.2.0](https://github.com/yargs/cliui/compare/v3.1.2...v3.2.0) (2016-04-11) | ||||
|  | ||||
|  | ||||
| ### Bug Fixes | ||||
|  | ||||
| * reduces tarball size ([acc6c33](https://github.com/yargs/cliui/commit/acc6c33)) | ||||
|  | ||||
| ### Features | ||||
|  | ||||
| * adds standard-version for release management ([ff84e32](https://github.com/yargs/cliui/commit/ff84e32)) | ||||
							
								
								
									
										14
									
								
								node_modules/cliui/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								node_modules/cliui/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| Copyright (c) 2015, Contributors | ||||
|  | ||||
| Permission to use, copy, modify, and/or distribute this software | ||||
| for any purpose with or without fee is hereby granted, provided | ||||
| that the above copyright notice and this permission notice | ||||
| appear in all copies. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES | ||||
| OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE | ||||
| LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES | ||||
| OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
| WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | ||||
| ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
							
								
								
									
										141
									
								
								node_modules/cliui/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								node_modules/cliui/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | ||||
| # cliui | ||||
|  | ||||
|  | ||||
| [](https://www.npmjs.com/package/cliui) | ||||
| [](https://conventionalcommits.org) | ||||
|  | ||||
|  | ||||
| easily create complex multi-column command-line-interfaces. | ||||
|  | ||||
| ## Example | ||||
|  | ||||
| ```js | ||||
| const ui = require('cliui')() | ||||
|  | ||||
| ui.div('Usage: $0 [command] [options]') | ||||
|  | ||||
| ui.div({ | ||||
|   text: 'Options:', | ||||
|   padding: [2, 0, 1, 0] | ||||
| }) | ||||
|  | ||||
| ui.div( | ||||
|   { | ||||
|     text: "-f, --file", | ||||
|     width: 20, | ||||
|     padding: [0, 4, 0, 4] | ||||
|   }, | ||||
|   { | ||||
|     text: "the file to load." + | ||||
|       chalk.green("(if this description is long it wraps).") | ||||
|     , | ||||
|     width: 20 | ||||
|   }, | ||||
|   { | ||||
|     text: chalk.red("[required]"), | ||||
|     align: 'right' | ||||
|   } | ||||
| ) | ||||
|  | ||||
| console.log(ui.toString()) | ||||
| ``` | ||||
|  | ||||
| ## Deno/ESM Support | ||||
|  | ||||
| As of `v7` `cliui` supports [Deno](https://github.com/denoland/deno) and | ||||
| [ESM](https://nodejs.org/api/esm.html#esm_ecmascript_modules): | ||||
|  | ||||
| ```typescript | ||||
| import cliui from "https://deno.land/x/cliui/deno.ts"; | ||||
|  | ||||
| const ui = cliui({}) | ||||
|  | ||||
| ui.div('Usage: $0 [command] [options]') | ||||
|  | ||||
| ui.div({ | ||||
|   text: 'Options:', | ||||
|   padding: [2, 0, 1, 0] | ||||
| }) | ||||
|  | ||||
| ui.div({ | ||||
|   text: "-f, --file", | ||||
|   width: 20, | ||||
|   padding: [0, 4, 0, 4] | ||||
| }) | ||||
|  | ||||
| console.log(ui.toString()) | ||||
| ``` | ||||
|  | ||||
| <img width="500" src="screenshot.png"> | ||||
|  | ||||
| ## Layout DSL | ||||
|  | ||||
| cliui exposes a simple layout DSL: | ||||
|  | ||||
| If you create a single `ui.div`, passing a string rather than an | ||||
| object: | ||||
|  | ||||
| * `\n`: characters will be interpreted as new rows. | ||||
| * `\t`: characters will be interpreted as new columns. | ||||
| * `\s`: characters will be interpreted as padding. | ||||
|  | ||||
| **as an example...** | ||||
|  | ||||
| ```js | ||||
| var ui = require('./')({ | ||||
|   width: 60 | ||||
| }) | ||||
|  | ||||
| ui.div( | ||||
|   'Usage: node ./bin/foo.js\n' + | ||||
|   '  <regex>\t  provide a regex\n' + | ||||
|   '  <glob>\t  provide a glob\t [required]' | ||||
| ) | ||||
|  | ||||
| console.log(ui.toString()) | ||||
| ``` | ||||
|  | ||||
| **will output:** | ||||
|  | ||||
| ```shell | ||||
| Usage: node ./bin/foo.js | ||||
|   <regex>  provide a regex | ||||
|   <glob>   provide a glob          [required] | ||||
| ``` | ||||
|  | ||||
| ## Methods | ||||
|  | ||||
| ```js | ||||
| cliui = require('cliui') | ||||
| ``` | ||||
|  | ||||
| ### cliui({width: integer}) | ||||
|  | ||||
| Specify the maximum width of the UI being generated. | ||||
| If no width is provided, cliui will try to get the current window's width and use it, and if that doesn't work, width will be set to `80`. | ||||
|  | ||||
| ### cliui({wrap: boolean}) | ||||
|  | ||||
| Enable or disable the wrapping of text in a column. | ||||
|  | ||||
| ### cliui.div(column, column, column) | ||||
|  | ||||
| Create a row with any number of columns, a column | ||||
| can either be a string, or an object with the following | ||||
| options: | ||||
|  | ||||
| * **text:** some text to place in the column. | ||||
| * **width:** the width of a column. | ||||
| * **align:** alignment, `right` or `center`. | ||||
| * **padding:** `[top, right, bottom, left]`. | ||||
| * **border:** should a border be placed around the div? | ||||
|  | ||||
| ### cliui.span(column, column, column) | ||||
|  | ||||
| Similar to `div`, except the next row will be appended without | ||||
| a new line being created. | ||||
|  | ||||
| ### cliui.resetOutput() | ||||
|  | ||||
| Resets the UI elements of the current cliui instance, maintaining the values | ||||
| set for `width` and `wrap`. | ||||
							
								
								
									
										302
									
								
								node_modules/cliui/build/index.cjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										302
									
								
								node_modules/cliui/build/index.cjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,302 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| const align = { | ||||
|     right: alignRight, | ||||
|     center: alignCenter | ||||
| }; | ||||
| const top = 0; | ||||
| const right = 1; | ||||
| const bottom = 2; | ||||
| const left = 3; | ||||
| class UI { | ||||
|     constructor(opts) { | ||||
|         var _a; | ||||
|         this.width = opts.width; | ||||
|         this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true; | ||||
|         this.rows = []; | ||||
|     } | ||||
|     span(...args) { | ||||
|         const cols = this.div(...args); | ||||
|         cols.span = true; | ||||
|     } | ||||
|     resetOutput() { | ||||
|         this.rows = []; | ||||
|     } | ||||
|     div(...args) { | ||||
|         if (args.length === 0) { | ||||
|             this.div(''); | ||||
|         } | ||||
|         if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') { | ||||
|             return this.applyLayoutDSL(args[0]); | ||||
|         } | ||||
|         const cols = args.map(arg => { | ||||
|             if (typeof arg === 'string') { | ||||
|                 return this.colFromString(arg); | ||||
|             } | ||||
|             return arg; | ||||
|         }); | ||||
|         this.rows.push(cols); | ||||
|         return cols; | ||||
|     } | ||||
|     shouldApplyLayoutDSL(...args) { | ||||
|         return args.length === 1 && typeof args[0] === 'string' && | ||||
|             /[\t\n]/.test(args[0]); | ||||
|     } | ||||
|     applyLayoutDSL(str) { | ||||
|         const rows = str.split('\n').map(row => row.split('\t')); | ||||
|         let leftColumnWidth = 0; | ||||
|         // simple heuristic for layout, make sure the | ||||
|         // second column lines up along the left-hand. | ||||
|         // don't allow the first column to take up more | ||||
|         // than 50% of the screen. | ||||
|         rows.forEach(columns => { | ||||
|             if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { | ||||
|                 leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); | ||||
|             } | ||||
|         }); | ||||
|         // generate a table: | ||||
|         //  replacing ' ' with padding calculations. | ||||
|         //  using the algorithmically generated width. | ||||
|         rows.forEach(columns => { | ||||
|             this.div(...columns.map((r, i) => { | ||||
|                 return { | ||||
|                     text: r.trim(), | ||||
|                     padding: this.measurePadding(r), | ||||
|                     width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined | ||||
|                 }; | ||||
|             })); | ||||
|         }); | ||||
|         return this.rows[this.rows.length - 1]; | ||||
|     } | ||||
|     colFromString(text) { | ||||
|         return { | ||||
|             text, | ||||
|             padding: this.measurePadding(text) | ||||
|         }; | ||||
|     } | ||||
|     measurePadding(str) { | ||||
|         // measure padding without ansi escape codes | ||||
|         const noAnsi = mixin.stripAnsi(str); | ||||
|         return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; | ||||
|     } | ||||
|     toString() { | ||||
|         const lines = []; | ||||
|         this.rows.forEach(row => { | ||||
|             this.rowToString(row, lines); | ||||
|         }); | ||||
|         // don't display any lines with the | ||||
|         // hidden flag set. | ||||
|         return lines | ||||
|             .filter(line => !line.hidden) | ||||
|             .map(line => line.text) | ||||
|             .join('\n'); | ||||
|     } | ||||
|     rowToString(row, lines) { | ||||
|         this.rasterize(row).forEach((rrow, r) => { | ||||
|             let str = ''; | ||||
|             rrow.forEach((col, c) => { | ||||
|                 const { width } = row[c]; // the width with padding. | ||||
|                 const wrapWidth = this.negatePadding(row[c]); // the width without padding. | ||||
|                 let ts = col; // temporary string used during alignment/padding. | ||||
|                 if (wrapWidth > mixin.stringWidth(col)) { | ||||
|                     ts += ' '.repeat(wrapWidth - mixin.stringWidth(col)); | ||||
|                 } | ||||
|                 // align the string within its column. | ||||
|                 if (row[c].align && row[c].align !== 'left' && this.wrap) { | ||||
|                     const fn = align[row[c].align]; | ||||
|                     ts = fn(ts, wrapWidth); | ||||
|                     if (mixin.stringWidth(ts) < wrapWidth) { | ||||
|                         ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1); | ||||
|                     } | ||||
|                 } | ||||
|                 // apply border and padding to string. | ||||
|                 const padding = row[c].padding || [0, 0, 0, 0]; | ||||
|                 if (padding[left]) { | ||||
|                     str += ' '.repeat(padding[left]); | ||||
|                 } | ||||
|                 str += addBorder(row[c], ts, '| '); | ||||
|                 str += ts; | ||||
|                 str += addBorder(row[c], ts, ' |'); | ||||
|                 if (padding[right]) { | ||||
|                     str += ' '.repeat(padding[right]); | ||||
|                 } | ||||
|                 // if prior row is span, try to render the | ||||
|                 // current row on the prior line. | ||||
|                 if (r === 0 && lines.length > 0) { | ||||
|                     str = this.renderInline(str, lines[lines.length - 1]); | ||||
|                 } | ||||
|             }); | ||||
|             // remove trailing whitespace. | ||||
|             lines.push({ | ||||
|                 text: str.replace(/ +$/, ''), | ||||
|                 span: row.span | ||||
|             }); | ||||
|         }); | ||||
|         return lines; | ||||
|     } | ||||
|     // if the full 'source' can render in | ||||
|     // the target line, do so. | ||||
|     renderInline(source, previousLine) { | ||||
|         const match = source.match(/^ */); | ||||
|         const leadingWhitespace = match ? match[0].length : 0; | ||||
|         const target = previousLine.text; | ||||
|         const targetTextWidth = mixin.stringWidth(target.trimRight()); | ||||
|         if (!previousLine.span) { | ||||
|             return source; | ||||
|         } | ||||
|         // if we're not applying wrapping logic, | ||||
|         // just always append to the span. | ||||
|         if (!this.wrap) { | ||||
|             previousLine.hidden = true; | ||||
|             return target + source; | ||||
|         } | ||||
|         if (leadingWhitespace < targetTextWidth) { | ||||
|             return source; | ||||
|         } | ||||
|         previousLine.hidden = true; | ||||
|         return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); | ||||
|     } | ||||
|     rasterize(row) { | ||||
|         const rrows = []; | ||||
|         const widths = this.columnWidths(row); | ||||
|         let wrapped; | ||||
|         // word wrap all columns, and create | ||||
|         // a data-structure that is easy to rasterize. | ||||
|         row.forEach((col, c) => { | ||||
|             // leave room for left and right padding. | ||||
|             col.width = widths[c]; | ||||
|             if (this.wrap) { | ||||
|                 wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\n'); | ||||
|             } | ||||
|             else { | ||||
|                 wrapped = col.text.split('\n'); | ||||
|             } | ||||
|             if (col.border) { | ||||
|                 wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.'); | ||||
|                 wrapped.push("'" + '-'.repeat(this.negatePadding(col) + 2) + "'"); | ||||
|             } | ||||
|             // add top and bottom padding. | ||||
|             if (col.padding) { | ||||
|                 wrapped.unshift(...new Array(col.padding[top] || 0).fill('')); | ||||
|                 wrapped.push(...new Array(col.padding[bottom] || 0).fill('')); | ||||
|             } | ||||
|             wrapped.forEach((str, r) => { | ||||
|                 if (!rrows[r]) { | ||||
|                     rrows.push([]); | ||||
|                 } | ||||
|                 const rrow = rrows[r]; | ||||
|                 for (let i = 0; i < c; i++) { | ||||
|                     if (rrow[i] === undefined) { | ||||
|                         rrow.push(''); | ||||
|                     } | ||||
|                 } | ||||
|                 rrow.push(str); | ||||
|             }); | ||||
|         }); | ||||
|         return rrows; | ||||
|     } | ||||
|     negatePadding(col) { | ||||
|         let wrapWidth = col.width || 0; | ||||
|         if (col.padding) { | ||||
|             wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); | ||||
|         } | ||||
|         if (col.border) { | ||||
|             wrapWidth -= 4; | ||||
|         } | ||||
|         return wrapWidth; | ||||
|     } | ||||
|     columnWidths(row) { | ||||
|         if (!this.wrap) { | ||||
|             return row.map(col => { | ||||
|                 return col.width || mixin.stringWidth(col.text); | ||||
|             }); | ||||
|         } | ||||
|         let unset = row.length; | ||||
|         let remainingWidth = this.width; | ||||
|         // column widths can be set in config. | ||||
|         const widths = row.map(col => { | ||||
|             if (col.width) { | ||||
|                 unset--; | ||||
|                 remainingWidth -= col.width; | ||||
|                 return col.width; | ||||
|             } | ||||
|             return undefined; | ||||
|         }); | ||||
|         // any unset widths should be calculated. | ||||
|         const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; | ||||
|         return widths.map((w, i) => { | ||||
|             if (w === undefined) { | ||||
|                 return Math.max(unsetWidth, _minWidth(row[i])); | ||||
|             } | ||||
|             return w; | ||||
|         }); | ||||
|     } | ||||
| } | ||||
| function addBorder(col, ts, style) { | ||||
|     if (col.border) { | ||||
|         if (/[.']-+[.']/.test(ts)) { | ||||
|             return ''; | ||||
|         } | ||||
|         if (ts.trim().length !== 0) { | ||||
|             return style; | ||||
|         } | ||||
|         return '  '; | ||||
|     } | ||||
|     return ''; | ||||
| } | ||||
| // calculates the minimum width of | ||||
| // a column, based on padding preferences. | ||||
| function _minWidth(col) { | ||||
|     const padding = col.padding || []; | ||||
|     const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); | ||||
|     if (col.border) { | ||||
|         return minWidth + 4; | ||||
|     } | ||||
|     return minWidth; | ||||
| } | ||||
| function getWindowWidth() { | ||||
|     /* istanbul ignore next: depends on terminal */ | ||||
|     if (typeof process === 'object' && process.stdout && process.stdout.columns) { | ||||
|         return process.stdout.columns; | ||||
|     } | ||||
|     return 80; | ||||
| } | ||||
| function alignRight(str, width) { | ||||
|     str = str.trim(); | ||||
|     const strWidth = mixin.stringWidth(str); | ||||
|     if (strWidth < width) { | ||||
|         return ' '.repeat(width - strWidth) + str; | ||||
|     } | ||||
|     return str; | ||||
| } | ||||
| function alignCenter(str, width) { | ||||
|     str = str.trim(); | ||||
|     const strWidth = mixin.stringWidth(str); | ||||
|     /* istanbul ignore next */ | ||||
|     if (strWidth >= width) { | ||||
|         return str; | ||||
|     } | ||||
|     return ' '.repeat((width - strWidth) >> 1) + str; | ||||
| } | ||||
| let mixin; | ||||
| function cliui(opts, _mixin) { | ||||
|     mixin = _mixin; | ||||
|     return new UI({ | ||||
|         width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), | ||||
|         wrap: opts === null || opts === void 0 ? void 0 : opts.wrap | ||||
|     }); | ||||
| } | ||||
|  | ||||
| // Bootstrap cliui with CommonJS dependencies: | ||||
| const stringWidth = require('string-width'); | ||||
| const stripAnsi = require('strip-ansi'); | ||||
| const wrap = require('wrap-ansi'); | ||||
| function ui(opts) { | ||||
|     return cliui(opts, { | ||||
|         stringWidth, | ||||
|         stripAnsi, | ||||
|         wrap | ||||
|     }); | ||||
| } | ||||
|  | ||||
| module.exports = ui; | ||||
							
								
								
									
										43
									
								
								node_modules/cliui/build/index.d.cts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								node_modules/cliui/build/index.d.cts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| interface UIOptions { | ||||
|     width: number; | ||||
|     wrap?: boolean; | ||||
|     rows?: string[]; | ||||
| } | ||||
| interface Column { | ||||
|     text: string; | ||||
|     width?: number; | ||||
|     align?: "right" | "left" | "center"; | ||||
|     padding: number[]; | ||||
|     border?: boolean; | ||||
| } | ||||
| interface ColumnArray extends Array<Column> { | ||||
|     span: boolean; | ||||
| } | ||||
| interface Line { | ||||
|     hidden?: boolean; | ||||
|     text: string; | ||||
|     span?: boolean; | ||||
| } | ||||
| declare class UI { | ||||
|     width: number; | ||||
|     wrap: boolean; | ||||
|     rows: ColumnArray[]; | ||||
|     constructor(opts: UIOptions); | ||||
|     span(...args: ColumnArray): void; | ||||
|     resetOutput(): void; | ||||
|     div(...args: (Column | string)[]): ColumnArray; | ||||
|     private shouldApplyLayoutDSL; | ||||
|     private applyLayoutDSL; | ||||
|     private colFromString; | ||||
|     private measurePadding; | ||||
|     toString(): string; | ||||
|     rowToString(row: ColumnArray, lines: Line[]): Line[]; | ||||
|     // if the full 'source' can render in | ||||
|     // the target line, do so. | ||||
|     private renderInline; | ||||
|     private rasterize; | ||||
|     private negatePadding; | ||||
|     private columnWidths; | ||||
| } | ||||
| declare function ui(opts: UIOptions): UI; | ||||
| export { ui as default }; | ||||
							
								
								
									
										287
									
								
								node_modules/cliui/build/lib/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										287
									
								
								node_modules/cliui/build/lib/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,287 @@ | ||||
| 'use strict'; | ||||
| const align = { | ||||
|     right: alignRight, | ||||
|     center: alignCenter | ||||
| }; | ||||
| const top = 0; | ||||
| const right = 1; | ||||
| const bottom = 2; | ||||
| const left = 3; | ||||
| export class UI { | ||||
|     constructor(opts) { | ||||
|         var _a; | ||||
|         this.width = opts.width; | ||||
|         this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true; | ||||
|         this.rows = []; | ||||
|     } | ||||
|     span(...args) { | ||||
|         const cols = this.div(...args); | ||||
|         cols.span = true; | ||||
|     } | ||||
|     resetOutput() { | ||||
|         this.rows = []; | ||||
|     } | ||||
|     div(...args) { | ||||
|         if (args.length === 0) { | ||||
|             this.div(''); | ||||
|         } | ||||
|         if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') { | ||||
|             return this.applyLayoutDSL(args[0]); | ||||
|         } | ||||
|         const cols = args.map(arg => { | ||||
|             if (typeof arg === 'string') { | ||||
|                 return this.colFromString(arg); | ||||
|             } | ||||
|             return arg; | ||||
|         }); | ||||
|         this.rows.push(cols); | ||||
|         return cols; | ||||
|     } | ||||
|     shouldApplyLayoutDSL(...args) { | ||||
|         return args.length === 1 && typeof args[0] === 'string' && | ||||
|             /[\t\n]/.test(args[0]); | ||||
|     } | ||||
|     applyLayoutDSL(str) { | ||||
|         const rows = str.split('\n').map(row => row.split('\t')); | ||||
|         let leftColumnWidth = 0; | ||||
|         // simple heuristic for layout, make sure the | ||||
|         // second column lines up along the left-hand. | ||||
|         // don't allow the first column to take up more | ||||
|         // than 50% of the screen. | ||||
|         rows.forEach(columns => { | ||||
|             if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { | ||||
|                 leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); | ||||
|             } | ||||
|         }); | ||||
|         // generate a table: | ||||
|         //  replacing ' ' with padding calculations. | ||||
|         //  using the algorithmically generated width. | ||||
|         rows.forEach(columns => { | ||||
|             this.div(...columns.map((r, i) => { | ||||
|                 return { | ||||
|                     text: r.trim(), | ||||
|                     padding: this.measurePadding(r), | ||||
|                     width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined | ||||
|                 }; | ||||
|             })); | ||||
|         }); | ||||
|         return this.rows[this.rows.length - 1]; | ||||
|     } | ||||
|     colFromString(text) { | ||||
|         return { | ||||
|             text, | ||||
|             padding: this.measurePadding(text) | ||||
|         }; | ||||
|     } | ||||
|     measurePadding(str) { | ||||
|         // measure padding without ansi escape codes | ||||
|         const noAnsi = mixin.stripAnsi(str); | ||||
|         return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; | ||||
|     } | ||||
|     toString() { | ||||
|         const lines = []; | ||||
|         this.rows.forEach(row => { | ||||
|             this.rowToString(row, lines); | ||||
|         }); | ||||
|         // don't display any lines with the | ||||
|         // hidden flag set. | ||||
|         return lines | ||||
|             .filter(line => !line.hidden) | ||||
|             .map(line => line.text) | ||||
|             .join('\n'); | ||||
|     } | ||||
|     rowToString(row, lines) { | ||||
|         this.rasterize(row).forEach((rrow, r) => { | ||||
|             let str = ''; | ||||
|             rrow.forEach((col, c) => { | ||||
|                 const { width } = row[c]; // the width with padding. | ||||
|                 const wrapWidth = this.negatePadding(row[c]); // the width without padding. | ||||
|                 let ts = col; // temporary string used during alignment/padding. | ||||
|                 if (wrapWidth > mixin.stringWidth(col)) { | ||||
|                     ts += ' '.repeat(wrapWidth - mixin.stringWidth(col)); | ||||
|                 } | ||||
|                 // align the string within its column. | ||||
|                 if (row[c].align && row[c].align !== 'left' && this.wrap) { | ||||
|                     const fn = align[row[c].align]; | ||||
|                     ts = fn(ts, wrapWidth); | ||||
|                     if (mixin.stringWidth(ts) < wrapWidth) { | ||||
|                         ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1); | ||||
|                     } | ||||
|                 } | ||||
|                 // apply border and padding to string. | ||||
|                 const padding = row[c].padding || [0, 0, 0, 0]; | ||||
|                 if (padding[left]) { | ||||
|                     str += ' '.repeat(padding[left]); | ||||
|                 } | ||||
|                 str += addBorder(row[c], ts, '| '); | ||||
|                 str += ts; | ||||
|                 str += addBorder(row[c], ts, ' |'); | ||||
|                 if (padding[right]) { | ||||
|                     str += ' '.repeat(padding[right]); | ||||
|                 } | ||||
|                 // if prior row is span, try to render the | ||||
|                 // current row on the prior line. | ||||
|                 if (r === 0 && lines.length > 0) { | ||||
|                     str = this.renderInline(str, lines[lines.length - 1]); | ||||
|                 } | ||||
|             }); | ||||
|             // remove trailing whitespace. | ||||
|             lines.push({ | ||||
|                 text: str.replace(/ +$/, ''), | ||||
|                 span: row.span | ||||
|             }); | ||||
|         }); | ||||
|         return lines; | ||||
|     } | ||||
|     // if the full 'source' can render in | ||||
|     // the target line, do so. | ||||
|     renderInline(source, previousLine) { | ||||
|         const match = source.match(/^ */); | ||||
|         const leadingWhitespace = match ? match[0].length : 0; | ||||
|         const target = previousLine.text; | ||||
|         const targetTextWidth = mixin.stringWidth(target.trimRight()); | ||||
|         if (!previousLine.span) { | ||||
|             return source; | ||||
|         } | ||||
|         // if we're not applying wrapping logic, | ||||
|         // just always append to the span. | ||||
|         if (!this.wrap) { | ||||
|             previousLine.hidden = true; | ||||
|             return target + source; | ||||
|         } | ||||
|         if (leadingWhitespace < targetTextWidth) { | ||||
|             return source; | ||||
|         } | ||||
|         previousLine.hidden = true; | ||||
|         return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); | ||||
|     } | ||||
|     rasterize(row) { | ||||
|         const rrows = []; | ||||
|         const widths = this.columnWidths(row); | ||||
|         let wrapped; | ||||
|         // word wrap all columns, and create | ||||
|         // a data-structure that is easy to rasterize. | ||||
|         row.forEach((col, c) => { | ||||
|             // leave room for left and right padding. | ||||
|             col.width = widths[c]; | ||||
|             if (this.wrap) { | ||||
|                 wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\n'); | ||||
|             } | ||||
|             else { | ||||
|                 wrapped = col.text.split('\n'); | ||||
|             } | ||||
|             if (col.border) { | ||||
|                 wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.'); | ||||
|                 wrapped.push("'" + '-'.repeat(this.negatePadding(col) + 2) + "'"); | ||||
|             } | ||||
|             // add top and bottom padding. | ||||
|             if (col.padding) { | ||||
|                 wrapped.unshift(...new Array(col.padding[top] || 0).fill('')); | ||||
|                 wrapped.push(...new Array(col.padding[bottom] || 0).fill('')); | ||||
|             } | ||||
|             wrapped.forEach((str, r) => { | ||||
|                 if (!rrows[r]) { | ||||
|                     rrows.push([]); | ||||
|                 } | ||||
|                 const rrow = rrows[r]; | ||||
|                 for (let i = 0; i < c; i++) { | ||||
|                     if (rrow[i] === undefined) { | ||||
|                         rrow.push(''); | ||||
|                     } | ||||
|                 } | ||||
|                 rrow.push(str); | ||||
|             }); | ||||
|         }); | ||||
|         return rrows; | ||||
|     } | ||||
|     negatePadding(col) { | ||||
|         let wrapWidth = col.width || 0; | ||||
|         if (col.padding) { | ||||
|             wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); | ||||
|         } | ||||
|         if (col.border) { | ||||
|             wrapWidth -= 4; | ||||
|         } | ||||
|         return wrapWidth; | ||||
|     } | ||||
|     columnWidths(row) { | ||||
|         if (!this.wrap) { | ||||
|             return row.map(col => { | ||||
|                 return col.width || mixin.stringWidth(col.text); | ||||
|             }); | ||||
|         } | ||||
|         let unset = row.length; | ||||
|         let remainingWidth = this.width; | ||||
|         // column widths can be set in config. | ||||
|         const widths = row.map(col => { | ||||
|             if (col.width) { | ||||
|                 unset--; | ||||
|                 remainingWidth -= col.width; | ||||
|                 return col.width; | ||||
|             } | ||||
|             return undefined; | ||||
|         }); | ||||
|         // any unset widths should be calculated. | ||||
|         const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; | ||||
|         return widths.map((w, i) => { | ||||
|             if (w === undefined) { | ||||
|                 return Math.max(unsetWidth, _minWidth(row[i])); | ||||
|             } | ||||
|             return w; | ||||
|         }); | ||||
|     } | ||||
| } | ||||
| function addBorder(col, ts, style) { | ||||
|     if (col.border) { | ||||
|         if (/[.']-+[.']/.test(ts)) { | ||||
|             return ''; | ||||
|         } | ||||
|         if (ts.trim().length !== 0) { | ||||
|             return style; | ||||
|         } | ||||
|         return '  '; | ||||
|     } | ||||
|     return ''; | ||||
| } | ||||
| // calculates the minimum width of | ||||
| // a column, based on padding preferences. | ||||
| function _minWidth(col) { | ||||
|     const padding = col.padding || []; | ||||
|     const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); | ||||
|     if (col.border) { | ||||
|         return minWidth + 4; | ||||
|     } | ||||
|     return minWidth; | ||||
| } | ||||
| function getWindowWidth() { | ||||
|     /* istanbul ignore next: depends on terminal */ | ||||
|     if (typeof process === 'object' && process.stdout && process.stdout.columns) { | ||||
|         return process.stdout.columns; | ||||
|     } | ||||
|     return 80; | ||||
| } | ||||
| function alignRight(str, width) { | ||||
|     str = str.trim(); | ||||
|     const strWidth = mixin.stringWidth(str); | ||||
|     if (strWidth < width) { | ||||
|         return ' '.repeat(width - strWidth) + str; | ||||
|     } | ||||
|     return str; | ||||
| } | ||||
| function alignCenter(str, width) { | ||||
|     str = str.trim(); | ||||
|     const strWidth = mixin.stringWidth(str); | ||||
|     /* istanbul ignore next */ | ||||
|     if (strWidth >= width) { | ||||
|         return str; | ||||
|     } | ||||
|     return ' '.repeat((width - strWidth) >> 1) + str; | ||||
| } | ||||
| let mixin; | ||||
| export function cliui(opts, _mixin) { | ||||
|     mixin = _mixin; | ||||
|     return new UI({ | ||||
|         width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), | ||||
|         wrap: opts === null || opts === void 0 ? void 0 : opts.wrap | ||||
|     }); | ||||
| } | ||||
							
								
								
									
										27
									
								
								node_modules/cliui/build/lib/string-utils.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								node_modules/cliui/build/lib/string-utils.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| // Minimal replacement for ansi string helpers "wrap-ansi" and "strip-ansi". | ||||
| // to facilitate ESM and Deno modules. | ||||
| // TODO: look at porting https://www.npmjs.com/package/wrap-ansi to ESM. | ||||
| // The npm application | ||||
| // Copyright (c) npm, Inc. and Contributors | ||||
| // Licensed on the terms of The Artistic License 2.0 | ||||
| // See: https://github.com/npm/cli/blob/4c65cd952bc8627811735bea76b9b110cc4fc80e/lib/utils/ansi-trim.js | ||||
| const ansi = new RegExp('\x1b(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|' + | ||||
|     '\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)', 'g'); | ||||
| export function stripAnsi(str) { | ||||
|     return str.replace(ansi, ''); | ||||
| } | ||||
| export function wrap(str, width) { | ||||
|     const [start, end] = str.match(ansi) || ['', '']; | ||||
|     str = stripAnsi(str); | ||||
|     let wrapped = ''; | ||||
|     for (let i = 0; i < str.length; i++) { | ||||
|         if (i !== 0 && (i % width) === 0) { | ||||
|             wrapped += '\n'; | ||||
|         } | ||||
|         wrapped += str.charAt(i); | ||||
|     } | ||||
|     if (start && end) { | ||||
|         wrapped = `${start}${wrapped}${end}`; | ||||
|     } | ||||
|     return wrapped; | ||||
| } | ||||
							
								
								
									
										13
									
								
								node_modules/cliui/index.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								node_modules/cliui/index.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| // Bootstrap cliui with CommonJS dependencies: | ||||
| import { cliui } from './build/lib/index.js' | ||||
| import { wrap, stripAnsi } from './build/lib/string-utils.js' | ||||
|  | ||||
| export default function ui (opts) { | ||||
|   return cliui(opts, { | ||||
|     stringWidth: (str) => { | ||||
|       return [...str].length | ||||
|     }, | ||||
|     stripAnsi, | ||||
|     wrap | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										83
									
								
								node_modules/cliui/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								node_modules/cliui/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| { | ||||
|   "name": "cliui", | ||||
|   "version": "8.0.1", | ||||
|   "description": "easily create complex multi-column command-line-interfaces", | ||||
|   "main": "build/index.cjs", | ||||
|   "exports": { | ||||
|     ".": [ | ||||
|       { | ||||
|         "import": "./index.mjs", | ||||
|         "require": "./build/index.cjs" | ||||
|       }, | ||||
|       "./build/index.cjs" | ||||
|     ] | ||||
|   }, | ||||
|   "type": "module", | ||||
|   "module": "./index.mjs", | ||||
|   "scripts": { | ||||
|     "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'", | ||||
|     "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'", | ||||
|     "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", | ||||
|     "test": "c8 mocha ./test/*.cjs", | ||||
|     "test:esm": "c8 mocha ./test/esm/cliui-test.mjs", | ||||
|     "postest": "check", | ||||
|     "coverage": "c8 report --check-coverage", | ||||
|     "precompile": "rimraf build", | ||||
|     "compile": "tsc", | ||||
|     "postcompile": "npm run build:cjs", | ||||
|     "build:cjs": "rollup -c", | ||||
|     "prepare": "npm run compile" | ||||
|   }, | ||||
|   "repository": "yargs/cliui", | ||||
|   "standard": { | ||||
|     "ignore": [ | ||||
|       "**/example/**" | ||||
|     ], | ||||
|     "globals": [ | ||||
|       "it" | ||||
|     ] | ||||
|   }, | ||||
|   "keywords": [ | ||||
|     "cli", | ||||
|     "command-line", | ||||
|     "layout", | ||||
|     "design", | ||||
|     "console", | ||||
|     "wrap", | ||||
|     "table" | ||||
|   ], | ||||
|   "author": "Ben Coe <ben@npmjs.com>", | ||||
|   "license": "ISC", | ||||
|   "dependencies": { | ||||
|     "string-width": "^4.2.0", | ||||
|     "strip-ansi": "^6.0.1", | ||||
|     "wrap-ansi": "^7.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/node": "^14.0.27", | ||||
|     "@typescript-eslint/eslint-plugin": "^4.0.0", | ||||
|     "@typescript-eslint/parser": "^4.0.0", | ||||
|     "c8": "^7.3.0", | ||||
|     "chai": "^4.2.0", | ||||
|     "chalk": "^4.1.0", | ||||
|     "cross-env": "^7.0.2", | ||||
|     "eslint": "^7.6.0", | ||||
|     "eslint-plugin-import": "^2.22.0", | ||||
|     "eslint-plugin-node": "^11.1.0", | ||||
|     "gts": "^3.0.0", | ||||
|     "mocha": "^10.0.0", | ||||
|     "rimraf": "^3.0.2", | ||||
|     "rollup": "^2.23.1", | ||||
|     "rollup-plugin-ts": "^3.0.2", | ||||
|     "standardx": "^7.0.0", | ||||
|     "typescript": "^4.0.0" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "build", | ||||
|     "index.mjs", | ||||
|     "!*.d.ts" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">=12" | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Simon Martens
					Simon Martens