Fixed #1 - Fixed the whatsnew-** script for loading release notes into builds
Added test to ensure that release notes are parsed properly Updated to latest dependencies to fix security vulnerability Updated GH Actions Workflow to run test before updating tag Updated README.md to reflect proper whatsnew documentation.
This commit is contained in:
77
node_modules/prompts/lib/elements/select.js
generated
vendored
77
node_modules/prompts/lib/elements/select.js
generated
vendored
@@ -2,8 +2,8 @@
|
||||
|
||||
const color = require('kleur');
|
||||
const Prompt = require('./prompt');
|
||||
const { style, clear, figures } = require('../util');
|
||||
const { erase, cursor } = require('sisteransi');
|
||||
const { style, clear, figures, wrap, entriesToDisplay } = require('../util');
|
||||
const { cursor } = require('sisteransi');
|
||||
|
||||
/**
|
||||
* SelectPrompt Base Element
|
||||
@@ -14,6 +14,7 @@ const { erase, cursor } = require('sisteransi');
|
||||
* @param {Number} [opts.initial] Index of default value
|
||||
* @param {Stream} [opts.stdin] The Readable stream to listen to
|
||||
* @param {Stream} [opts.stdout] The Writable stream to write readline data to
|
||||
* @param {Number} [opts.optionsPerPage=10] Max options to display at once
|
||||
*/
|
||||
class SelectPrompt extends Prompt {
|
||||
constructor(opts={}) {
|
||||
@@ -22,16 +23,18 @@ class SelectPrompt extends Prompt {
|
||||
this.hint = opts.hint || '- Use arrow-keys. Return to submit.';
|
||||
this.warn = opts.warn || '- This option is disabled';
|
||||
this.cursor = opts.initial || 0;
|
||||
this.choices = opts.choices.map((ch, idx) => {
|
||||
this.choices = opts.choices.map((ch, idx) => {
|
||||
if (typeof ch === 'string')
|
||||
ch = {title: ch, value: idx};
|
||||
return {
|
||||
title: ch && (ch.title || ch.value || ch),
|
||||
value: ch && (ch.value || idx),
|
||||
value: ch && (ch.value === undefined ? idx : ch.value),
|
||||
description: ch && ch.description,
|
||||
selected: ch && ch.selected,
|
||||
disabled: ch && ch.disabled
|
||||
};
|
||||
});
|
||||
this.optionsPerPage = opts.optionsPerPage || 10;
|
||||
this.value = (this.choices[this.cursor] || {}).value;
|
||||
this.clear = clear('');
|
||||
this.render();
|
||||
@@ -107,37 +110,55 @@ class SelectPrompt extends Prompt {
|
||||
render() {
|
||||
if (this.closed) return;
|
||||
if (this.firstRender) this.out.write(cursor.hide);
|
||||
else this.out.write(erase.lines(this.choices.length + 1));
|
||||
else this.out.write(clear(this.outputText));
|
||||
super.render();
|
||||
|
||||
let { startIndex, endIndex } = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage);
|
||||
|
||||
// Print prompt
|
||||
this.out.write([
|
||||
style.symbol(this.done, this.aborted),
|
||||
color.bold(this.msg),
|
||||
style.delimiter(false),
|
||||
this.done ? this.selection.title : this.selection.disabled
|
||||
? color.yellow(this.warn) : color.gray(this.hint)
|
||||
].join(' '));
|
||||
this.outputText = [
|
||||
style.symbol(this.done, this.aborted),
|
||||
color.bold(this.msg),
|
||||
style.delimiter(false),
|
||||
this.done ? this.selection.title : this.selection.disabled
|
||||
? color.yellow(this.warn) : color.gray(this.hint)
|
||||
].join(' ');
|
||||
|
||||
// Print choices
|
||||
if (!this.done) {
|
||||
this.out.write(
|
||||
'\n' +
|
||||
this.choices
|
||||
.map((v, i) => {
|
||||
let title, prefix;
|
||||
if (v.disabled) {
|
||||
title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
|
||||
prefix = this.cursor === i ? color.bold().gray(figures.pointer) + ' ' : ' ';
|
||||
} else {
|
||||
title = this.cursor === i ? color.cyan().underline(v.title) : v.title;
|
||||
prefix = this.cursor === i ? color.cyan(figures.pointer) + ' ' : ' ';
|
||||
}
|
||||
return `${prefix} ${title}`;
|
||||
})
|
||||
.join('\n')
|
||||
);
|
||||
this.outputText += '\n';
|
||||
for (let i = startIndex; i < endIndex; i++) {
|
||||
let title, prefix, desc = '', v = this.choices[i];
|
||||
|
||||
// Determine whether to display "more choices" indicators
|
||||
if (i === startIndex && startIndex > 0) {
|
||||
prefix = figures.arrowUp;
|
||||
} else if (i === endIndex - 1 && endIndex < this.choices.length) {
|
||||
prefix = figures.arrowDown;
|
||||
} else {
|
||||
prefix = ' ';
|
||||
}
|
||||
|
||||
if (v.disabled) {
|
||||
title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
|
||||
prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + ' ' : ' ') + prefix;
|
||||
} else {
|
||||
title = this.cursor === i ? color.cyan().underline(v.title) : v.title;
|
||||
prefix = (this.cursor === i ? color.cyan(figures.pointer) + ' ' : ' ') + prefix;
|
||||
if (v.description && this.cursor === i) {
|
||||
desc = ` - ${v.description}`;
|
||||
if (prefix.length + title.length + desc.length >= this.out.columns
|
||||
|| v.description.split(/\r?\n/).length > 1) {
|
||||
desc = '\n' + wrap(v.description, { margin: 3, width: this.out.columns });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.outputText += `${prefix} ${title}${color.gray(desc)}\n`;
|
||||
}
|
||||
}
|
||||
|
||||
this.out.write(this.outputText);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user