canvaslms-cli 1.5.1 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/dist/commands/announcements.d.ts.map +1 -1
  3. package/dist/commands/announcements.js +28 -62
  4. package/dist/commands/announcements.js.map +1 -1
  5. package/dist/commands/assignments.d.ts +1 -1
  6. package/dist/commands/assignments.d.ts.map +1 -1
  7. package/dist/commands/assignments.js +30 -78
  8. package/dist/commands/assignments.js.map +1 -1
  9. package/dist/commands/config.d.ts.map +1 -1
  10. package/dist/commands/config.js +0 -13
  11. package/dist/commands/config.js.map +1 -1
  12. package/dist/commands/coursenames.d.ts +15 -0
  13. package/dist/commands/coursenames.d.ts.map +1 -0
  14. package/dist/commands/coursenames.js +150 -0
  15. package/dist/commands/coursenames.js.map +1 -0
  16. package/dist/commands/grades.d.ts.map +1 -1
  17. package/dist/commands/grades.js +52 -58
  18. package/dist/commands/grades.js.map +1 -1
  19. package/dist/commands/list.d.ts.map +1 -1
  20. package/dist/commands/list.js +13 -35
  21. package/dist/commands/list.js.map +1 -1
  22. package/dist/commands/profile.d.ts.map +1 -1
  23. package/dist/commands/profile.js +44 -16
  24. package/dist/commands/profile.js.map +1 -1
  25. package/dist/commands/submit.d.ts +1 -0
  26. package/dist/commands/submit.d.ts.map +1 -1
  27. package/dist/commands/submit.js +28 -89
  28. package/dist/commands/submit.js.map +1 -1
  29. package/dist/lib/course-utils.d.ts +6 -0
  30. package/dist/lib/course-utils.d.ts.map +1 -0
  31. package/dist/lib/course-utils.js +17 -0
  32. package/dist/lib/course-utils.js.map +1 -0
  33. package/dist/lib/display.d.ts +78 -0
  34. package/dist/lib/display.d.ts.map +1 -0
  35. package/dist/lib/display.js +507 -0
  36. package/dist/lib/display.js.map +1 -0
  37. package/dist/lib/interactive.d.ts.map +1 -1
  38. package/dist/lib/interactive.js +9 -1
  39. package/dist/lib/interactive.js.map +1 -1
  40. package/dist/src/index.js +30 -29
  41. package/dist/src/index.js.map +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,507 @@
1
+ import chalk from 'chalk';
2
+ import { makeCanvasRequest } from './api-client.js';
3
+ import { createReadlineInterface, askQuestion } from './interactive.js';
4
+ export function pad(str, len, align = 'left') {
5
+ const strLen = stripAnsi(str).length;
6
+ const padding = Math.max(0, len - strLen);
7
+ if (align === 'right') {
8
+ return ' '.repeat(padding) + str;
9
+ }
10
+ else if (align === 'center') {
11
+ const leftPad = Math.floor(padding / 2);
12
+ const rightPad = padding - leftPad;
13
+ return ' '.repeat(leftPad) + str + ' '.repeat(rightPad);
14
+ }
15
+ return str + ' '.repeat(padding);
16
+ }
17
+ function stripAnsi(str) {
18
+ return str.replace(/\x1B\[[0-9;]*[a-zA-Z]/g, '');
19
+ }
20
+ export function truncate(str, maxLen) {
21
+ if (str.length <= maxLen)
22
+ return str;
23
+ return str.substring(0, maxLen - 3) + '...';
24
+ }
25
+ function calculateColumnWidths(columns, data, terminalWidth, showRowNumbers) {
26
+ const borderOverhead = 2 + (columns.length * 3) + 1;
27
+ const rowNumWidth = showRowNumbers ? Math.max(3, String(data.length).length + 1) : 0;
28
+ const rowNumOverhead = showRowNumbers ? 3 : 0;
29
+ const effectiveTermWidth = Math.max(60, Math.min(terminalWidth, 200));
30
+ const availableWidth = effectiveTermWidth - borderOverhead - rowNumOverhead - rowNumWidth;
31
+ const widths = [];
32
+ const contentWidths = [];
33
+ let fixedWidthTotal = 0;
34
+ let totalFlex = 0;
35
+ columns.forEach((col, i) => {
36
+ const headerLen = col.header.length;
37
+ const maxContentLen = Math.max(headerLen, ...data.map(row => String(row[col.key] || '').length));
38
+ contentWidths[i] = maxContentLen;
39
+ if (col.width) {
40
+ widths[i] = col.width;
41
+ fixedWidthTotal += col.width;
42
+ }
43
+ else if (col.flex) {
44
+ const minW = col.minWidth || Math.min(headerLen, 8);
45
+ widths[i] = minW;
46
+ fixedWidthTotal += minW;
47
+ totalFlex += col.flex;
48
+ }
49
+ else {
50
+ const minW = col.minWidth || Math.min(headerLen, 8);
51
+ const maxW = col.maxWidth || maxContentLen;
52
+ widths[i] = Math.min(maxW, Math.max(minW, maxContentLen));
53
+ fixedWidthTotal += widths[i];
54
+ }
55
+ });
56
+ const remainingWidth = Math.max(0, availableWidth - fixedWidthTotal);
57
+ if (totalFlex > 0 && remainingWidth > 0) {
58
+ columns.forEach((col, i) => {
59
+ if (col.flex) {
60
+ const extraWidth = Math.floor((remainingWidth * col.flex) / totalFlex);
61
+ const maxW = col.maxWidth || contentWidths[i] || 50;
62
+ widths[i] = Math.min((widths[i] ?? 0) + extraWidth, maxW);
63
+ }
64
+ });
65
+ }
66
+ let totalWidth = widths.reduce((sum, w) => sum + (w ?? 0), 0);
67
+ if (totalWidth > availableWidth) {
68
+ const scale = availableWidth / totalWidth;
69
+ columns.forEach((col, i) => {
70
+ const minW = col.minWidth || 8;
71
+ widths[i] = Math.max(minW, Math.floor((widths[i] ?? 0) * scale));
72
+ });
73
+ }
74
+ return widths;
75
+ }
76
+ export class Table {
77
+ columns;
78
+ data;
79
+ options;
80
+ rowNumWidth = 0;
81
+ constructor(columns, options = {}) {
82
+ this.columns = columns;
83
+ this.data = [];
84
+ this.options = {
85
+ showRowNumbers: true,
86
+ rowNumberHeader: '#',
87
+ ...options
88
+ };
89
+ }
90
+ addRow(row) {
91
+ this.data.push(row);
92
+ return this;
93
+ }
94
+ addRows(rows) {
95
+ this.data.push(...rows);
96
+ return this;
97
+ }
98
+ render() {
99
+ this.renderTable();
100
+ }
101
+ renderWithResize() {
102
+ this.renderTable();
103
+ }
104
+ stopWatching() {
105
+ }
106
+ renderTable() {
107
+ const terminalWidth = process.stdout.columns || 100;
108
+ const widths = calculateColumnWidths(this.columns, this.data, terminalWidth, this.options.showRowNumbers);
109
+ if (this.options.showRowNumbers) {
110
+ this.rowNumWidth = Math.max(3, String(this.data.length).length + 1);
111
+ }
112
+ if (this.options.title) {
113
+ console.log(chalk.cyan.bold(`\n${this.options.title}`));
114
+ }
115
+ this.renderTopBorder(widths);
116
+ this.renderHeader(widths);
117
+ this.renderHeaderSeparator(widths);
118
+ this.data.forEach((row, index) => this.renderRow(row, index, widths));
119
+ this.renderBottomBorder(widths);
120
+ }
121
+ renderTopBorder(widths) {
122
+ let border = chalk.gray('╭─');
123
+ if (this.options.showRowNumbers) {
124
+ border += chalk.gray('─'.repeat(this.rowNumWidth)) + chalk.gray('┬─');
125
+ }
126
+ border += widths.map(w => chalk.gray('─'.repeat(w))).join(chalk.gray('┬─'));
127
+ border += chalk.gray('╮');
128
+ console.log(border);
129
+ }
130
+ renderHeader(widths) {
131
+ let header = chalk.gray('│ ');
132
+ if (this.options.showRowNumbers) {
133
+ header += chalk.cyan.bold(pad(this.options.rowNumberHeader, this.rowNumWidth)) + chalk.gray('│ ');
134
+ }
135
+ header += this.columns.map((col, i) => chalk.cyan.bold(pad(col.header, widths[i] || 10, col.align))).join(chalk.gray('│ '));
136
+ header += chalk.gray('│');
137
+ console.log(header);
138
+ }
139
+ renderHeaderSeparator(widths) {
140
+ let separator = chalk.gray('├─');
141
+ if (this.options.showRowNumbers) {
142
+ separator += chalk.gray('─'.repeat(this.rowNumWidth)) + chalk.gray('┼─');
143
+ }
144
+ separator += widths.map(w => chalk.gray('─'.repeat(w))).join(chalk.gray('┼─'));
145
+ separator += chalk.gray('┤');
146
+ console.log(separator);
147
+ }
148
+ renderRow(row, index, widths) {
149
+ let rowStr = chalk.gray('│ ');
150
+ if (this.options.showRowNumbers) {
151
+ rowStr += chalk.white(pad(`${index + 1}.`, this.rowNumWidth)) + chalk.gray('│ ');
152
+ }
153
+ rowStr += this.columns.map((col, i) => {
154
+ const colWidth = widths[i] || 10;
155
+ let value = String(row[col.key] ?? '');
156
+ value = truncate(value, colWidth);
157
+ value = pad(value, colWidth, col.align);
158
+ if (col.color) {
159
+ value = col.color(value, row);
160
+ }
161
+ else {
162
+ value = chalk.white(value);
163
+ }
164
+ return value;
165
+ }).join(chalk.gray('│ '));
166
+ rowStr += chalk.gray('│');
167
+ console.log(rowStr);
168
+ }
169
+ renderBottomBorder(widths) {
170
+ let border = chalk.gray('╰─');
171
+ if (this.options.showRowNumbers) {
172
+ border += chalk.gray('─'.repeat(this.rowNumWidth)) + chalk.gray('┴─');
173
+ }
174
+ border += widths.map(w => chalk.gray('─'.repeat(w))).join(chalk.gray('┴─'));
175
+ border += chalk.gray('╯');
176
+ console.log(border);
177
+ }
178
+ }
179
+ export function displayCourses(courses, options = {}) {
180
+ const columns = [
181
+ { key: 'name', header: 'Course Name', flex: 1, minWidth: 15 }
182
+ ];
183
+ if (options.showId) {
184
+ columns.push({ key: 'id', header: 'ID', minWidth: 5, maxWidth: 10 });
185
+ }
186
+ const table = new Table(columns);
187
+ courses.forEach(course => {
188
+ table.addRow({ name: course.name, id: course.id });
189
+ });
190
+ table.render();
191
+ }
192
+ export async function pickCourse(options = {}) {
193
+ const rl = createReadlineInterface();
194
+ console.log(chalk.cyan.bold(options.title || '\nLoading your courses, please wait...'));
195
+ const queryParams = [
196
+ 'enrollment_state=active',
197
+ 'include[]=favorites'
198
+ ];
199
+ const courses = await makeCanvasRequest('get', 'courses', queryParams);
200
+ if (!courses || courses.length === 0) {
201
+ console.log(chalk.red('Error: No courses found.'));
202
+ rl.close();
203
+ return null;
204
+ }
205
+ let displayCourses = courses;
206
+ if (!options.showAll) {
207
+ const starred = courses.filter(c => c.is_favorite);
208
+ if (starred.length > 0) {
209
+ displayCourses = starred;
210
+ }
211
+ }
212
+ console.log(chalk.green(`✓ Found ${displayCourses.length} course(s).`));
213
+ const table = new Table([
214
+ { key: 'name', header: 'Course Name', flex: 1, minWidth: 15 }
215
+ ]);
216
+ displayCourses.forEach(course => table.addRow({ name: course.name }));
217
+ table.renderWithResize();
218
+ const prompt = options.prompt || chalk.bold.cyan('\nEnter course number: ');
219
+ const courseChoice = await askQuestion(rl, prompt);
220
+ table.stopWatching();
221
+ if (!courseChoice.trim() || courseChoice === '..' || courseChoice.toLowerCase() === 'back') {
222
+ console.log(chalk.red('No course selected. Exiting...'));
223
+ rl.close();
224
+ return null;
225
+ }
226
+ const courseIndex = parseInt(courseChoice) - 1;
227
+ if (courseIndex < 0 || courseIndex >= displayCourses.length) {
228
+ console.log(chalk.red('Invalid course selection.'));
229
+ rl.close();
230
+ return null;
231
+ }
232
+ const selectedCourse = displayCourses[courseIndex];
233
+ console.log(chalk.green(`✓ Selected: ${selectedCourse.name}\n`));
234
+ return { course: selectedCourse, rl };
235
+ }
236
+ export function formatGrade(submission, pointsPossible) {
237
+ if (submission && submission.score !== null && submission.score !== undefined) {
238
+ const score = submission.score % 1 === 0 ? Math.round(submission.score) : submission.score;
239
+ const text = `${score}/${pointsPossible}`;
240
+ const percentage = pointsPossible > 0 ? (score / pointsPossible) * 100 : 0;
241
+ let color = chalk.white;
242
+ if (percentage >= 80)
243
+ color = chalk.green;
244
+ else if (percentage >= 50)
245
+ color = chalk.yellow;
246
+ else
247
+ color = chalk.red;
248
+ return { text, color };
249
+ }
250
+ else if (submission && submission.excused) {
251
+ return { text: 'Excused', color: chalk.blue };
252
+ }
253
+ else if (submission && submission.missing) {
254
+ return { text: 'Missing', color: chalk.red };
255
+ }
256
+ else if (pointsPossible) {
257
+ return { text: `–/${pointsPossible}`, color: chalk.gray };
258
+ }
259
+ return { text: 'N/A', color: chalk.gray };
260
+ }
261
+ export function formatDueDate(dueAt) {
262
+ if (!dueAt)
263
+ return 'No due date';
264
+ return new Date(dueAt).toLocaleString();
265
+ }
266
+ export function displayAssignments(assignments, options = {}) {
267
+ const columns = [
268
+ { key: 'name', header: 'Assignment Name', flex: 1, minWidth: 15 }
269
+ ];
270
+ if (options.showId) {
271
+ columns.push({ key: 'id', header: 'ID', minWidth: 7, maxWidth: 10 });
272
+ }
273
+ if (options.showGrade) {
274
+ columns.push({
275
+ key: 'grade',
276
+ header: 'Grade',
277
+ minWidth: 8,
278
+ maxWidth: 12,
279
+ color: (value, row) => {
280
+ const gradeInfo = formatGrade(row._submission, row._pointsPossible);
281
+ return gradeInfo.color(value);
282
+ }
283
+ });
284
+ }
285
+ if (options.showDueDate) {
286
+ columns.push({ key: 'dueDate', header: 'Due Date', minWidth: 14, maxWidth: 22 });
287
+ }
288
+ if (options.showStatus) {
289
+ columns.push({
290
+ key: 'status',
291
+ header: 'Status',
292
+ minWidth: 10,
293
+ maxWidth: 14,
294
+ color: (value, row) => {
295
+ return row._isSubmitted ? chalk.green(value) : chalk.yellow(value);
296
+ }
297
+ });
298
+ }
299
+ const table = new Table(columns);
300
+ assignments.forEach(assignment => {
301
+ const submission = assignment.submission;
302
+ const gradeInfo = formatGrade(submission, assignment.points_possible || 0);
303
+ const isSubmitted = !!(submission && submission.submitted_at);
304
+ table.addRow({
305
+ name: assignment.name,
306
+ id: assignment.id,
307
+ grade: gradeInfo.text,
308
+ dueDate: formatDueDate(assignment.due_at),
309
+ status: isSubmitted ? '✓ Submitted' : 'Not submitted',
310
+ _submission: submission,
311
+ _pointsPossible: assignment.points_possible || 0,
312
+ _isSubmitted: isSubmitted
313
+ });
314
+ });
315
+ table.render();
316
+ }
317
+ function getAssignmentType(assignment) {
318
+ if (!assignment.submission_types || assignment.submission_types.length === 0) {
319
+ return 'Unknown';
320
+ }
321
+ const types = assignment.submission_types;
322
+ if (types.includes('online_quiz')) {
323
+ return 'Quiz';
324
+ }
325
+ else if (types.includes('online_upload')) {
326
+ if (assignment.allowed_extensions && assignment.allowed_extensions.length > 0) {
327
+ const exts = assignment.allowed_extensions.slice(0, 3);
328
+ const extList = exts.join(', ');
329
+ const suffix = assignment.allowed_extensions.length > 3 ? '...' : '';
330
+ return `${extList}${suffix}`;
331
+ }
332
+ return 'Any file';
333
+ }
334
+ else if (types.includes('online_text_entry')) {
335
+ return 'Text Entry';
336
+ }
337
+ else if (types.includes('online_url')) {
338
+ return 'URL';
339
+ }
340
+ else if (types.includes('external_tool')) {
341
+ return 'External Tool';
342
+ }
343
+ else if (types.includes('media_recording')) {
344
+ return 'Media';
345
+ }
346
+ else if (types[0]) {
347
+ return types[0].replace(/_/g, ' ');
348
+ }
349
+ return 'Unknown';
350
+ }
351
+ export function displaySubmitAssignments(assignments) {
352
+ const columns = [
353
+ { key: 'name', header: 'Assignment Name', flex: 1, minWidth: 20 },
354
+ { key: 'type', header: 'Type', minWidth: 8, maxWidth: 18 },
355
+ { key: 'dueDate', header: 'Due Date', minWidth: 16, maxWidth: 22 },
356
+ {
357
+ key: 'status',
358
+ header: 'Status',
359
+ minWidth: 10,
360
+ maxWidth: 14,
361
+ color: (value, row) => {
362
+ return row._isSubmitted ? chalk.green(value) : chalk.yellow(value);
363
+ }
364
+ }
365
+ ];
366
+ const table = new Table(columns);
367
+ assignments.forEach(assignment => {
368
+ const submission = assignment.submission;
369
+ const isSubmitted = !!(submission && submission.submitted_at);
370
+ table.addRow({
371
+ name: assignment.name,
372
+ type: getAssignmentType(assignment),
373
+ dueDate: assignment.due_at
374
+ ? new Date(assignment.due_at).toLocaleString()
375
+ : 'No due date',
376
+ status: isSubmitted ? '✓ Submitted' : 'Not submitted',
377
+ _isSubmitted: isSubmitted
378
+ });
379
+ });
380
+ table.renderWithResize();
381
+ return table;
382
+ }
383
+ export function displayAnnouncements(announcements) {
384
+ const columns = [
385
+ { key: 'title', header: 'Title', flex: 1, minWidth: 15 },
386
+ { key: 'posted', header: 'Posted', width: 10 }
387
+ ];
388
+ const table = new Table(columns);
389
+ announcements.forEach(announcement => {
390
+ const date = announcement.posted_at
391
+ ? new Date(announcement.posted_at).toLocaleDateString()
392
+ : 'N/A';
393
+ table.addRow({
394
+ title: announcement.title || 'Untitled',
395
+ posted: date
396
+ });
397
+ });
398
+ table.renderWithResize();
399
+ return table;
400
+ }
401
+ export function printSeparator(char = '─', length) {
402
+ const width = length || (process.stdout.columns || 60);
403
+ console.log(chalk.cyan.bold(char.repeat(width)));
404
+ }
405
+ export function printHeader(title) {
406
+ console.log(chalk.cyan.bold('\n' + '─'.repeat(60)));
407
+ console.log(chalk.cyan.bold(title));
408
+ console.log(chalk.cyan.bold('─'.repeat(60)));
409
+ }
410
+ export function printSuccess(message) {
411
+ console.log(chalk.green(`✓ ${message}`));
412
+ }
413
+ export function printError(message) {
414
+ console.log(chalk.red(`Error: ${message}`));
415
+ }
416
+ export function printInfo(message) {
417
+ console.log(chalk.cyan.bold(message));
418
+ }
419
+ export function printWarning(message) {
420
+ console.log(chalk.yellow(message));
421
+ }
422
+ function cleanHtmlContent(html) {
423
+ return html
424
+ .replace(/&nbsp;/g, ' ')
425
+ .replace(/&amp;/g, '&')
426
+ .replace(/&lt;/g, '<')
427
+ .replace(/&gt;/g, '>')
428
+ .replace(/&quot;/g, '"')
429
+ .replace(/&#39;/g, "'")
430
+ .replace(/&apos;/g, "'")
431
+ .replace(/<br\s*\/?>/gi, '\n')
432
+ .replace(/<\/(p|div|li|h[1-6])>/gi, '\n')
433
+ .replace(/<li[^>]*>/gi, '• ')
434
+ .replace(/<[^>]+>/g, '')
435
+ .replace(/\n{3,}/g, '\n\n')
436
+ .replace(/[ \t]+/g, ' ')
437
+ .split('\n')
438
+ .map(line => line.trim())
439
+ .join('\n')
440
+ .trim();
441
+ }
442
+ function wordWrap(text, maxWidth) {
443
+ const lines = [];
444
+ const paragraphs = text.split('\n');
445
+ for (const paragraph of paragraphs) {
446
+ if (paragraph.trim() === '') {
447
+ lines.push('');
448
+ continue;
449
+ }
450
+ const words = paragraph.split(' ').filter(w => w.length > 0);
451
+ let currentLine = '';
452
+ for (const word of words) {
453
+ if (word.length > maxWidth) {
454
+ if (currentLine) {
455
+ lines.push(currentLine);
456
+ currentLine = '';
457
+ }
458
+ for (let i = 0; i < word.length; i += maxWidth) {
459
+ lines.push(word.substring(i, i + maxWidth));
460
+ }
461
+ continue;
462
+ }
463
+ const testLine = currentLine ? `${currentLine} ${word}` : word;
464
+ if (testLine.length <= maxWidth) {
465
+ currentLine = testLine;
466
+ }
467
+ else {
468
+ if (currentLine) {
469
+ lines.push(currentLine);
470
+ }
471
+ currentLine = word;
472
+ }
473
+ }
474
+ if (currentLine) {
475
+ lines.push(currentLine);
476
+ }
477
+ }
478
+ return lines;
479
+ }
480
+ export function displayAnnouncementDetail(announcement) {
481
+ const terminalWidth = process.stdout.columns || 80;
482
+ const boxWidth = Math.max(50, terminalWidth - 4);
483
+ const contentWidth = boxWidth - 4;
484
+ const title = announcement.title || 'Untitled';
485
+ const date = announcement.postedAt ? new Date(announcement.postedAt).toLocaleString() : 'N/A';
486
+ const author = announcement.author || 'Unknown';
487
+ const cleanedMessage = cleanHtmlContent(announcement.message || 'No content');
488
+ const titleLines = wordWrap(title, contentWidth);
489
+ const messageLines = wordWrap(cleanedMessage, contentWidth);
490
+ const printLine = (content, style = chalk.white) => {
491
+ const paddedContent = content.padEnd(contentWidth);
492
+ console.log(chalk.gray('│ ') + style(paddedContent) + chalk.gray(' │'));
493
+ };
494
+ console.log('\n' + chalk.gray('╭' + '─'.repeat(boxWidth - 2) + '╮'));
495
+ for (const line of titleLines) {
496
+ printLine(line, chalk.bold.white);
497
+ }
498
+ console.log(chalk.gray('├' + '─'.repeat(boxWidth - 2) + '┤'));
499
+ printLine(`Posted: ${date}`, chalk.gray);
500
+ printLine(`Author: ${author}`, chalk.gray);
501
+ console.log(chalk.gray('├' + '─'.repeat(boxWidth - 2) + '┤'));
502
+ for (const line of messageLines) {
503
+ printLine(line, chalk.white);
504
+ }
505
+ console.log(chalk.gray('╰' + '─'.repeat(boxWidth - 2) + '╯') + '\n');
506
+ }
507
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../lib/display.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../lib/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA2BhC,UAAU,sBAAsB;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,uBAAuB,IAAI,QAAQ,CAAC,SAAS,CAK5D;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMrF;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,EACrC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAKD,wBAAsB,eAAe,CACnC,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,OAAc,EAC1B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,OAAO,CAAC,CAgClB;AAKD,wBAAsB,cAAc,CAAC,CAAC,EACpC,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,CAAC,EAAE,EACV,eAAe,GAAE,MAAM,CAAC,GAAG,IAAW,EACtC,WAAW,GAAE,OAAc,GAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAoCnB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,EAAE,CAqBjF;AAKD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAsB,GAAG,MAAM,EAAE,CA2CtG;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAKD,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsLvH;AAKD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,QAAQ,CAAC,SAAS,EACvB,UAAU,GAAE,MAAsB,EAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA8cnB"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../lib/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA2BhC,UAAU,sBAAsB;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,uBAAuB,IAAI,QAAQ,CAAC,SAAS,CAe5D;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMrF;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,EACrC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAKD,wBAAsB,eAAe,CACnC,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,OAAc,EAC1B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,OAAO,CAAC,CAgClB;AAKD,wBAAsB,cAAc,CAAC,CAAC,EACpC,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,CAAC,EAAE,EACV,eAAe,GAAE,MAAM,CAAC,GAAG,IAAW,EACtC,WAAW,GAAE,OAAc,GAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAoCnB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,EAAE,CAqBjF;AAKD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAsB,GAAG,MAAM,EAAE,CA2CtG;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAKD,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsLvH;AAKD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,QAAQ,CAAC,SAAS,EACvB,UAAU,GAAE,MAAsB,EAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA8cnB"}
@@ -16,9 +16,17 @@ const KEYS = {
16
16
  CTRL_C: '\u0003'
17
17
  };
18
18
  export function createReadlineInterface() {
19
+ if (process.stdin.isTTY && typeof process.stdin.setRawMode === 'function') {
20
+ try {
21
+ process.stdin.setRawMode(false);
22
+ }
23
+ catch {
24
+ }
25
+ }
19
26
  return readline.createInterface({
20
27
  input: process.stdin,
21
- output: process.stdout
28
+ output: process.stdout,
29
+ terminal: true
22
30
  });
23
31
  }
24
32
  export function askQuestion(rl, question) {