| ; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.TTYOutputRedrawer = exports.TTYOutputStrategy = exports.StreamOutputStrategy = void 0; | |
| const utils_terminal_1 = require("@ionic/utils-terminal"); | |
| const colors_1 = require("./colors"); | |
| const tasks_1 = require("./tasks"); | |
| const utils_1 = require("./utils"); | |
| class StreamOutputStrategy { | |
| constructor({ stream = process.stdout, colors = colors_1.NO_COLORS }) { | |
| this.stream = stream; | |
| this.colors = colors; | |
| } | |
| write(msg) { | |
| return this.stream.write(msg); | |
| } | |
| createTaskChain() { | |
| const { failure, success, weak } = this.colors; | |
| const chain = new tasks_1.TaskChain(); | |
| chain.on('next', task => { | |
| task.on('end', result => { | |
| if (result.success) { | |
| this.write(`${success(tasks_1.ICON_SUCCESS)} ${task.msg} ${weak(`in ${(0, utils_1.formatHrTime)(result.elapsedTime)}`)}\n`); | |
| } | |
| else { | |
| this.write(`${failure(tasks_1.ICON_FAILURE)} ${task.msg} ${failure(weak('- failed!'))}\n`); | |
| } | |
| }); | |
| }); | |
| return chain; | |
| } | |
| } | |
| exports.StreamOutputStrategy = StreamOutputStrategy; | |
| class TTYOutputStrategy extends StreamOutputStrategy { | |
| constructor({ stream = process.stdout, colors = colors_1.NO_COLORS } = {}) { | |
| super({ stream, colors }); | |
| this.stream = stream; | |
| this.redrawer = new TTYOutputRedrawer({ stream }); | |
| } | |
| createTaskChain() { | |
| const { failure, strong, success, weak } = this.colors; | |
| const chain = new tasks_1.TaskChain({ taskOptions: { tickInterval: 50 } }); | |
| chain.on('next', task => { | |
| task.on('end', result => { | |
| if (result.success) { | |
| this.write(`${success(tasks_1.ICON_SUCCESS)} ${task.msg} ${weak(`in ${(0, utils_1.formatHrTime)(result.elapsedTime)}`)}\n`); | |
| } | |
| else { | |
| this.write(`${failure(tasks_1.ICON_FAILURE)} ${task.msg} ${failure(weak('- failed!'))}\n`); | |
| } | |
| }); | |
| const spinner = new tasks_1.Spinner(); | |
| task.on('tick', () => { | |
| const progress = task.progressRatio ? (task.progressRatio * 100).toFixed(2) : ''; | |
| const frame = spinner.frame(); | |
| this.redrawer.redraw(`${strong(frame)} ${task.msg}${progress ? ' (' + strong(String(progress) + '%') + ')' : ''} `); | |
| }); | |
| task.on('clear', () => { | |
| this.redrawer.clear(); | |
| }); | |
| }); | |
| chain.on('end', () => { | |
| this.redrawer.end(); | |
| }); | |
| return chain; | |
| } | |
| } | |
| exports.TTYOutputStrategy = TTYOutputStrategy; | |
| class TTYOutputRedrawer { | |
| constructor({ stream = process.stdout }) { | |
| this.stream = stream; | |
| } | |
| get width() { | |
| return this.stream.columns || 80; | |
| } | |
| redraw(msg) { | |
| utils_terminal_1.Cursor.hide(); | |
| this.stream.write(utils_terminal_1.EscapeCode.eraseLines(1) + msg.replace(/[\r\n]+$/, '')); | |
| } | |
| clear() { | |
| this.stream.write(utils_terminal_1.EscapeCode.eraseLines(1)); | |
| } | |
| end() { | |
| utils_terminal_1.Cursor.show(); | |
| } | |
| } | |
| exports.TTYOutputRedrawer = TTYOutputRedrawer; | |
Xet Storage Details
- Size:
- 3.3 kB
- Xet hash:
- 80a20ef168d4bb45a8d169b58b632484374df93f0e74ee6d69e7e25d8ff8ad9c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.