canvaslms-cli 1.4.6 → 1.5.0

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 (81) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +32 -22
  3. package/dist/commands/announcements.d.ts +3 -0
  4. package/dist/commands/announcements.d.ts.map +1 -0
  5. package/dist/commands/announcements.js +92 -0
  6. package/dist/commands/announcements.js.map +1 -0
  7. package/dist/commands/api.d.ts +3 -0
  8. package/dist/commands/api.d.ts.map +1 -0
  9. package/dist/commands/api.js +8 -0
  10. package/dist/commands/api.js.map +1 -0
  11. package/dist/commands/assignments.d.ts +3 -0
  12. package/dist/commands/assignments.d.ts.map +1 -0
  13. package/dist/commands/assignments.js +100 -0
  14. package/dist/commands/assignments.js.map +1 -0
  15. package/dist/commands/config.d.ts +6 -0
  16. package/dist/commands/config.d.ts.map +1 -0
  17. package/dist/commands/config.js +202 -0
  18. package/dist/commands/config.js.map +1 -0
  19. package/dist/commands/grades.d.ts +3 -0
  20. package/dist/commands/grades.d.ts.map +1 -0
  21. package/dist/commands/grades.js +335 -0
  22. package/dist/commands/grades.js.map +1 -0
  23. package/dist/commands/list.d.ts +3 -0
  24. package/dist/commands/list.d.ts.map +1 -0
  25. package/dist/commands/list.js +61 -0
  26. package/dist/commands/list.js.map +1 -0
  27. package/dist/commands/profile.d.ts +6 -0
  28. package/dist/commands/profile.d.ts.map +1 -0
  29. package/dist/commands/profile.js +30 -0
  30. package/dist/commands/profile.js.map +1 -0
  31. package/dist/commands/submit.d.ts +8 -0
  32. package/dist/commands/submit.d.ts.map +1 -0
  33. package/dist/commands/submit.js +319 -0
  34. package/dist/commands/submit.js.map +1 -0
  35. package/dist/index.d.ts +15 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +15 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/lib/api-client.d.ts +2 -0
  40. package/dist/lib/api-client.d.ts.map +1 -0
  41. package/dist/lib/api-client.js +76 -0
  42. package/dist/lib/api-client.js.map +1 -0
  43. package/dist/lib/config-validator.d.ts +4 -0
  44. package/dist/lib/config-validator.d.ts.map +1 -0
  45. package/dist/lib/config-validator.js +38 -0
  46. package/dist/lib/config-validator.js.map +1 -0
  47. package/dist/lib/config.d.ts +10 -0
  48. package/dist/lib/config.d.ts.map +1 -0
  49. package/dist/lib/config.js +85 -0
  50. package/dist/lib/config.js.map +1 -0
  51. package/dist/lib/file-upload.d.ts +3 -0
  52. package/dist/lib/file-upload.d.ts.map +1 -0
  53. package/dist/lib/file-upload.js +52 -0
  54. package/dist/lib/file-upload.js.map +1 -0
  55. package/dist/lib/interactive.d.ts +16 -0
  56. package/dist/lib/interactive.d.ts.map +1 -0
  57. package/dist/lib/interactive.js +758 -0
  58. package/dist/lib/interactive.js.map +1 -0
  59. package/dist/src/index.d.ts +3 -0
  60. package/dist/src/index.d.ts.map +1 -0
  61. package/dist/src/index.js +90 -0
  62. package/dist/src/index.js.map +1 -0
  63. package/dist/types/index.d.ts +147 -0
  64. package/dist/types/index.d.ts.map +1 -0
  65. package/dist/types/index.js +2 -0
  66. package/dist/types/index.js.map +1 -0
  67. package/package.json +15 -15
  68. package/commands/announcements.js +0 -102
  69. package/commands/api.js +0 -19
  70. package/commands/assignments.js +0 -100
  71. package/commands/config.js +0 -239
  72. package/commands/grades.js +0 -201
  73. package/commands/list.js +0 -68
  74. package/commands/profile.js +0 -35
  75. package/commands/submit.js +0 -603
  76. package/lib/api-client.js +0 -75
  77. package/lib/config-validator.js +0 -60
  78. package/lib/config.js +0 -103
  79. package/lib/file-upload.js +0 -74
  80. package/lib/interactive.js +0 -889
  81. package/src/index.js +0 -120
@@ -0,0 +1,335 @@
1
+ import { makeCanvasRequest } from '../lib/api-client.js';
2
+ import { createReadlineInterface, askQuestionWithValidation } from '../lib/interactive.js';
3
+ import chalk from 'chalk';
4
+ function pad(str, len) {
5
+ return str + ' '.repeat(Math.max(0, len - str.length));
6
+ }
7
+ async function showDetailedGrades(courseId, options) {
8
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
9
+ console.log(chalk.cyan.bold('Loading course grades, please wait...'));
10
+ const course = await makeCanvasRequest('get', `courses/${courseId}`);
11
+ const enrollmentParams = ['user_id=self', 'include[]=total_scores'];
12
+ enrollmentParams.push('state[]=active');
13
+ enrollmentParams.push('state[]=invited');
14
+ enrollmentParams.push('state[]=creation_pending');
15
+ enrollmentParams.push('state[]=rejected');
16
+ enrollmentParams.push('state[]=completed');
17
+ enrollmentParams.push('state[]=inactive');
18
+ const enrollments = await makeCanvasRequest('get', `courses/${courseId}/enrollments`, enrollmentParams);
19
+ if (!enrollments || enrollments.length === 0) {
20
+ console.log(chalk.red('Error: No enrollment found for this course.'));
21
+ return;
22
+ }
23
+ const enrollment = enrollments[0];
24
+ const grades = enrollment?.grades;
25
+ const assignments = await makeCanvasRequest('get', `courses/${courseId}/assignments`, ['include[]=submission', 'per_page=100']);
26
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
27
+ console.log(chalk.cyan.bold(`Course: ${course.name}`));
28
+ console.log(chalk.cyan('='.repeat(80)));
29
+ const assignmentGrades = assignments.map(assignment => {
30
+ const submission = assignment.submission;
31
+ return {
32
+ name: assignment.name,
33
+ id: assignment.id,
34
+ score: submission?.score ?? null,
35
+ pointsPossible: assignment.points_possible || 0,
36
+ submitted: !!(submission && submission.submitted_at),
37
+ graded: submission?.score !== null && submission?.score !== undefined,
38
+ dueAt: assignment.due_at
39
+ };
40
+ });
41
+ const gradedAssignments = assignmentGrades.filter(a => a.graded);
42
+ const totalPointsEarned = gradedAssignments.reduce((sum, a) => sum + (a.score || 0), 0);
43
+ const totalPointsPossible = gradedAssignments.reduce((sum, a) => sum + a.pointsPossible, 0);
44
+ const calculatedPercentage = totalPointsPossible > 0
45
+ ? ((totalPointsEarned / totalPointsPossible) * 100).toFixed(2)
46
+ : 'N/A';
47
+ console.log(chalk.white.bold('\n📈 Overall Grades:'));
48
+ if (grades) {
49
+ const colMetric = 25;
50
+ const colScore = 20;
51
+ const colStatus = 15;
52
+ console.log(chalk.gray('┌─') + chalk.gray('─'.repeat(colMetric)) + chalk.gray('┬─') +
53
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┬─') +
54
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┐'));
55
+ console.log(chalk.gray('│ ') + chalk.cyan.bold(pad('Metric', colMetric)) + chalk.gray('│ ') +
56
+ chalk.cyan.bold(pad('Score/Grade', colScore)) + chalk.gray('│ ') +
57
+ chalk.cyan.bold(pad('Status', colStatus)) + chalk.gray('│'));
58
+ console.log(chalk.gray('├─') + chalk.gray('─'.repeat(colMetric)) + chalk.gray('┼─') +
59
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┼─') +
60
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┤'));
61
+ const currentScoreValue = grades.current_score !== null ? `${grades.current_score}%` : 'N/A';
62
+ const finalScoreValue = grades.final_score !== null ? `${grades.final_score}%` : 'N/A';
63
+ const currentGradeValue = grades.current_grade || 'N/A';
64
+ const finalGradeValue = grades.final_grade || 'N/A';
65
+ console.log(chalk.gray('│ ') + chalk.white(pad('Current Score', colMetric)) + chalk.gray('│ ') +
66
+ chalk.green.bold(pad(currentScoreValue, colScore)) + chalk.gray('│ ') +
67
+ chalk.gray(pad('Official', colStatus)) + chalk.gray('│'));
68
+ console.log(chalk.gray('│ ') + chalk.white(pad('Final Score', colMetric)) + chalk.gray('│ ') +
69
+ chalk.green.bold(pad(finalScoreValue, colScore)) + chalk.gray('│ ') +
70
+ chalk.gray(pad('Official', colStatus)) + chalk.gray('│'));
71
+ console.log(chalk.gray('│ ') + chalk.white(pad('Current Grade', colMetric)) + chalk.gray('│ ') +
72
+ chalk.green.bold(pad(currentGradeValue, colScore)) + chalk.gray('│ ') +
73
+ chalk.gray(pad('Letter Grade', colStatus)) + chalk.gray('│'));
74
+ console.log(chalk.gray('│ ') + chalk.white(pad('Final Grade', colMetric)) + chalk.gray('│ ') +
75
+ chalk.green.bold(pad(finalGradeValue, colScore)) + chalk.gray('│ ') +
76
+ chalk.gray(pad('Letter Grade', colStatus)) + chalk.gray('│'));
77
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colMetric)) + chalk.gray('┴─') +
78
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┴─') +
79
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┘'));
80
+ }
81
+ else {
82
+ console.log(chalk.yellow(' No official grades available from Canvas.'));
83
+ }
84
+ console.log();
85
+ const colLabel = 30;
86
+ const colValue = 25;
87
+ const colNote = 20;
88
+ console.log(chalk.gray('┌─') + chalk.gray('─'.repeat(colLabel)) + chalk.gray('┬─') +
89
+ chalk.gray('─'.repeat(colValue)) + chalk.gray('┬─') +
90
+ chalk.gray('─'.repeat(colNote)) + chalk.gray('┐'));
91
+ console.log(chalk.gray('│ ') + chalk.white(pad('Graded Assignments', colLabel)) + chalk.gray('│ ') +
92
+ chalk.cyan.bold(pad(`${gradedAssignments.length} / ${assignments.length}`, colValue)) + chalk.gray('│ ') +
93
+ chalk.gray(pad('Completed', colNote)) + chalk.gray('│'));
94
+ console.log(chalk.gray('│ ') + chalk.white(pad('Points Earned', colLabel)) + chalk.gray('│ ') +
95
+ chalk.cyan.bold(pad(`${totalPointsEarned.toFixed(2)} / ${totalPointsPossible.toFixed(2)}`, colValue)) + chalk.gray('│ ') +
96
+ chalk.gray(pad('Total', colNote)) + chalk.gray('│'));
97
+ console.log(chalk.gray('│ ') + chalk.white(pad('Calculated Average', colLabel)) + chalk.gray('│ ') +
98
+ chalk.cyan.bold(pad(typeof calculatedPercentage === 'string' ? calculatedPercentage : `${calculatedPercentage}%`, colValue)) + chalk.gray('│ ') +
99
+ chalk.gray(pad('From Graded', colNote)) + chalk.gray('│'));
100
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colLabel)) + chalk.gray('┴─') +
101
+ chalk.gray('─'.repeat(colValue)) + chalk.gray('┴─') +
102
+ chalk.gray('─'.repeat(colNote)) + chalk.gray('┘'));
103
+ console.log(chalk.white.bold('\nAssignment Breakdown:'));
104
+ if (assignments.length === 0) {
105
+ console.log(chalk.yellow(' No assignments found for this course.'));
106
+ }
107
+ else {
108
+ const colNo = 6;
109
+ const colName = 40;
110
+ const colScore = 15;
111
+ const colStatus = 15;
112
+ const colDate = 20;
113
+ console.log(chalk.gray('┌─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┬─') +
114
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┬─') +
115
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┬─') +
116
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┬─') +
117
+ chalk.gray('─'.repeat(colDate)) + chalk.gray('┐'));
118
+ console.log(chalk.gray('│ ') + chalk.cyan.bold(pad('#', colNo)) + chalk.gray('│ ') +
119
+ chalk.cyan.bold(pad('Assignment Name', colName)) + chalk.gray('│ ') +
120
+ chalk.cyan.bold(pad('Score', colScore)) + chalk.gray('│ ') +
121
+ chalk.cyan.bold(pad('Status', colStatus)) + chalk.gray('│ ') +
122
+ chalk.cyan.bold(pad('Due Date', colDate)) + chalk.gray('│'));
123
+ console.log(chalk.gray('├─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┼─') +
124
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┼─') +
125
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┼─') +
126
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┼─') +
127
+ chalk.gray('─'.repeat(colDate)) + chalk.gray('┤'));
128
+ assignmentGrades.forEach((assignment, index) => {
129
+ const scoreDisplay = assignment.graded
130
+ ? `${(assignment.score || 0).toFixed(1)}/${assignment.pointsPossible}`
131
+ : assignment.pointsPossible > 0
132
+ ? `–/${assignment.pointsPossible}`
133
+ : 'N/A';
134
+ let statusDisplay = '';
135
+ let statusColor = chalk.gray;
136
+ if (assignment.graded) {
137
+ const percentage = assignment.pointsPossible > 0
138
+ ? ((assignment.score || 0) / assignment.pointsPossible) * 100
139
+ : 0;
140
+ if (percentage >= 80) {
141
+ statusDisplay = '✓ Graded';
142
+ statusColor = chalk.green;
143
+ }
144
+ else if (percentage >= 50) {
145
+ statusDisplay = '✓ Graded';
146
+ statusColor = chalk.yellow;
147
+ }
148
+ else {
149
+ statusDisplay = '✓ Graded';
150
+ statusColor = chalk.red;
151
+ }
152
+ }
153
+ else if (assignment.submitted) {
154
+ statusDisplay = 'Pending';
155
+ statusColor = chalk.cyan;
156
+ }
157
+ else {
158
+ statusDisplay = 'Not Done';
159
+ statusColor = chalk.gray;
160
+ }
161
+ const dueDate = assignment.dueAt
162
+ ? new Date(assignment.dueAt).toLocaleDateString()
163
+ : 'No due date';
164
+ let displayName = assignment.name;
165
+ if (displayName.length > colName) {
166
+ displayName = displayName.substring(0, colName - 3) + '...';
167
+ }
168
+ console.log(chalk.gray('│ ') + chalk.white(pad((index + 1).toString(), colNo)) + chalk.gray('│ ') +
169
+ chalk.white(pad(displayName, colName)) + chalk.gray('│ ') +
170
+ chalk.white(pad(scoreDisplay, colScore)) + chalk.gray('│ ') +
171
+ statusColor(pad(statusDisplay, colStatus)) + chalk.gray('│ ') +
172
+ chalk.gray(pad(dueDate, colDate)) + chalk.gray('│'));
173
+ });
174
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┴─') +
175
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┴─') +
176
+ chalk.gray('─'.repeat(colScore)) + chalk.gray('┴─') +
177
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┴─') +
178
+ chalk.gray('─'.repeat(colDate)) + chalk.gray('┘'));
179
+ }
180
+ console.log(chalk.cyan('='.repeat(80)));
181
+ if (options.verbose && enrollment) {
182
+ console.log(chalk.cyan('\n' + '-'.repeat(80)));
183
+ console.log(chalk.cyan.bold('Enrollment Details:'));
184
+ console.log(chalk.white(' Enrollment ID: ') + enrollment.id);
185
+ console.log(chalk.white(' Type: ') + enrollment.type);
186
+ console.log(chalk.white(' State: ') + enrollment.enrollment_state);
187
+ console.log(chalk.cyan('-'.repeat(80)));
188
+ }
189
+ }
190
+ export async function showGrades(courseId, options = {}) {
191
+ try {
192
+ if (courseId) {
193
+ await showDetailedGrades(courseId, options);
194
+ }
195
+ else {
196
+ const rl = createReadlineInterface();
197
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
198
+ console.log(chalk.cyan.bold('Loading your courses, please wait...'));
199
+ const enrollmentState = options.all ? undefined : 'active';
200
+ const queryParams = [
201
+ 'include[]=total_scores',
202
+ 'include[]=current_grading_period_scores',
203
+ 'per_page=100'
204
+ ];
205
+ if (enrollmentState) {
206
+ queryParams.unshift(`enrollment_state=${enrollmentState}`);
207
+ }
208
+ let courses = await makeCanvasRequest('get', 'courses', queryParams);
209
+ if (!courses || courses.length === 0) {
210
+ console.log(chalk.red('❌ Error: No courses found.'));
211
+ rl.close();
212
+ return;
213
+ }
214
+ if (courses.length === 0) {
215
+ console.log(chalk.red('❌ Error: No courses found (after filtering).'));
216
+ rl.close();
217
+ return;
218
+ }
219
+ const coursesWithGrades = [];
220
+ for (const course of courses) {
221
+ try {
222
+ const enrollmentParams = ['user_id=self', 'include[]=total_scores'];
223
+ enrollmentParams.push('state[]=active');
224
+ enrollmentParams.push('state[]=invited');
225
+ enrollmentParams.push('state[]=creation_pending');
226
+ enrollmentParams.push('state[]=rejected');
227
+ enrollmentParams.push('state[]=completed');
228
+ enrollmentParams.push('state[]=inactive');
229
+ const enrollments = await makeCanvasRequest('get', `courses/${course.id}/enrollments`, enrollmentParams);
230
+ coursesWithGrades.push({
231
+ course,
232
+ enrollment: enrollments[0] || null
233
+ });
234
+ }
235
+ catch (error) {
236
+ coursesWithGrades.push({
237
+ course,
238
+ enrollment: null
239
+ });
240
+ }
241
+ }
242
+ console.log(chalk.cyan.bold('\n' + '='.repeat(80)));
243
+ console.log(chalk.cyan.bold('Your Courses - Grades Summary'));
244
+ console.log(chalk.green(`✓ Found ${coursesWithGrades.length} course(s)${options.all ? ' (including inactive)' : ' (active only)'}.`));
245
+ const colNo = Math.max(3, coursesWithGrades.length.toString().length + 1);
246
+ const colStatus = Math.max(8, ...coursesWithGrades.map(c => (c.course.workflow_state === 'available' ? 'Active' : (c.course.workflow_state || 'Inactive')).length));
247
+ const colCurrent = Math.max(9, ...coursesWithGrades.map(c => {
248
+ const s = c.enrollment?.grades?.current_score;
249
+ return s !== null && s !== undefined ? `${s}%`.length : 3;
250
+ }));
251
+ const colFinal = Math.max(7, ...coursesWithGrades.map(c => {
252
+ const s = c.enrollment?.grades?.final_score;
253
+ return s !== null && s !== undefined ? `${s}%`.length : 3;
254
+ }));
255
+ const terminalWidth = process.stdout.columns || 80;
256
+ const overhead = 16;
257
+ const availableForName = Math.max(20, terminalWidth - (colNo + colStatus + colCurrent + colFinal + overhead));
258
+ const maxNameLength = Math.max(11, ...coursesWithGrades.map(c => c.course.name.length));
259
+ const colName = Math.min(maxNameLength, availableForName);
260
+ console.log(chalk.gray('┌─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┬─') +
261
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┬─') +
262
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┬─') +
263
+ chalk.gray('─'.repeat(colCurrent)) + chalk.gray('┬─') +
264
+ chalk.gray('─'.repeat(colFinal)) + chalk.gray('┐'));
265
+ console.log(chalk.gray('│ ') + chalk.cyan.bold(pad('#', colNo)) + chalk.gray('│ ') +
266
+ chalk.cyan.bold(pad('Course Name', colName)) + chalk.gray('│ ') +
267
+ chalk.cyan.bold(pad('Status', colStatus)) + chalk.gray('│ ') +
268
+ chalk.cyan.bold(pad('Current', colCurrent)) + chalk.gray('│ ') +
269
+ chalk.cyan.bold(pad('Final', colFinal)) + chalk.gray('│'));
270
+ console.log(chalk.gray('├─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┼─') +
271
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┼─') +
272
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┼─') +
273
+ chalk.gray('─'.repeat(colCurrent)) + chalk.gray('┼─') +
274
+ chalk.gray('─'.repeat(colFinal)) + chalk.gray('┤'));
275
+ coursesWithGrades.forEach((item, index) => {
276
+ const { course, enrollment } = item;
277
+ const grades = enrollment?.grades;
278
+ const currentScore = grades?.current_score !== null && grades?.current_score !== undefined
279
+ ? `${grades.current_score}%`
280
+ : 'N/A';
281
+ const finalScore = grades?.final_score !== null && grades?.final_score !== undefined
282
+ ? `${grades.final_score}%`
283
+ : 'N/A';
284
+ const statusText = course.workflow_state === 'available' ? 'Active' : (course.workflow_state || 'Inactive');
285
+ const statusColored = course.workflow_state === 'available' ?
286
+ chalk.green(pad(statusText, colStatus)) :
287
+ chalk.gray(pad(statusText, colStatus));
288
+ let displayName = course.name;
289
+ if (displayName.length > colName) {
290
+ displayName = displayName.substring(0, colName - 3) + '...';
291
+ }
292
+ console.log(chalk.gray('│ ') + chalk.white(pad((index + 1).toString(), colNo)) + chalk.gray('│ ') +
293
+ chalk.white(pad(displayName, colName)) + chalk.gray('│ ') +
294
+ statusColored + chalk.gray('│ ') +
295
+ chalk.white(pad(currentScore, colCurrent)) + chalk.gray('│ ') +
296
+ chalk.white(pad(finalScore, colFinal)) + chalk.gray('│'));
297
+ });
298
+ console.log(chalk.gray('└─') + chalk.gray('─'.repeat(colNo)) + chalk.gray('┴─') +
299
+ chalk.gray('─'.repeat(colName)) + chalk.gray('┴─') +
300
+ chalk.gray('─'.repeat(colStatus)) + chalk.gray('┴─') +
301
+ chalk.gray('─'.repeat(colCurrent)) + chalk.gray('┴─') +
302
+ chalk.gray('─'.repeat(colFinal)) + chalk.gray('┘'));
303
+ console.log(chalk.yellow('\n💡 Select a course to view detailed grades for all assignments.'));
304
+ console.log(chalk.gray(' Or enter 0 to exit.'));
305
+ if (!options.all) {
306
+ console.log(chalk.gray(' Tip: Use --all flag to include inactive courses.\n'));
307
+ }
308
+ else {
309
+ console.log();
310
+ }
311
+ const validator = (input) => {
312
+ const num = parseInt(input);
313
+ return !isNaN(num) && num >= 0 && num <= coursesWithGrades.length;
314
+ };
315
+ const answer = await askQuestionWithValidation(rl, chalk.bold.cyan('Enter course number: '), validator, chalk.red(`Please enter a number between 0 and ${coursesWithGrades.length}.`));
316
+ const choice = parseInt(answer);
317
+ rl.close();
318
+ if (choice === 0) {
319
+ console.log(chalk.yellow('\n👋 Exiting grades viewer.'));
320
+ return;
321
+ }
322
+ const selectedCourse = coursesWithGrades[choice - 1];
323
+ if (selectedCourse) {
324
+ console.log(chalk.green(`\n✓ Selected: ${selectedCourse.course.name}\n`));
325
+ await showDetailedGrades(String(selectedCourse.course.id), options);
326
+ }
327
+ }
328
+ }
329
+ catch (error) {
330
+ const errorMessage = error instanceof Error ? error.message : String(error);
331
+ console.error(chalk.red('Error fetching grades:'), errorMessage);
332
+ process.exit(1);
333
+ }
334
+ }
335
+ //# sourceMappingURL=grades.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grades.js","sourceRoot":"","sources":["../../commands/grades.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ListCoursesOptions } from '../types/index.js';
2
+ export declare function listCourses(options: ListCoursesOptions): Promise<void>;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../commands/list.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM1E,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD5E"}
@@ -0,0 +1,61 @@
1
+ import { makeCanvasRequest } from '../lib/api-client.js';
2
+ import chalk from 'chalk';
3
+ function pad(str, len) {
4
+ return str + ' '.repeat(Math.max(0, len - str.length));
5
+ }
6
+ export async function listCourses(options) {
7
+ try {
8
+ const queryParams = [];
9
+ queryParams.push('enrollment_state=active');
10
+ queryParams.push('include[]=term');
11
+ queryParams.push('include[]=course_progress');
12
+ queryParams.push('include[]=total_students');
13
+ queryParams.push('include[]=favorites');
14
+ console.log(chalk.cyan.bold('\n' + '-'.repeat(60)));
15
+ console.log(chalk.cyan.bold('Loading courses, please wait...'));
16
+ const courses = await makeCanvasRequest('get', 'courses', queryParams);
17
+ if (!courses || courses.length === 0) {
18
+ console.log(chalk.red('Error: No courses found.'));
19
+ return;
20
+ }
21
+ let filteredCourses = courses;
22
+ if (!options.all) {
23
+ filteredCourses = courses.filter(course => course.is_favorite);
24
+ if (filteredCourses.length === 0) {
25
+ console.log(chalk.red('Error: No starred courses found. Use -a to see all courses.'));
26
+ return;
27
+ }
28
+ }
29
+ const courseLabel = options.all ? 'enrolled course(s)' : 'starred course(s)';
30
+ console.log(chalk.green(`Success: Found ${filteredCourses.length} ${courseLabel}.`));
31
+ console.log(chalk.cyan('-'.repeat(60)));
32
+ console.log(pad(chalk.bold('No.'), 5) +
33
+ pad(chalk.bold('Course Name'), 35) +
34
+ pad(chalk.bold('ID'), 10) +
35
+ pad(chalk.bold('Code'), 12) +
36
+ (options.verbose ? pad(chalk.bold('Term'), 15) + pad(chalk.bold('Students'), 10) + pad(chalk.bold('Start'), 12) + pad(chalk.bold('End'), 12) + pad(chalk.bold('State'), 12) + pad(chalk.bold('Progress'), 18) : ''));
37
+ console.log(chalk.cyan('-'.repeat(60)));
38
+ filteredCourses.forEach((course, index) => {
39
+ let line = pad(chalk.white((index + 1) + '.'), 5) +
40
+ pad(course.name, 35) +
41
+ pad(String(course.id), 10) +
42
+ pad(course.course_code || 'N/A', 12);
43
+ if (options.verbose) {
44
+ line += pad(course.term?.name || 'N/A', 15) +
45
+ pad(String(course.total_students || 'N/A'), 10) +
46
+ pad(course.start_at ? new Date(course.start_at).toLocaleDateString() : 'N/A', 12) +
47
+ pad(course.end_at ? new Date(course.end_at).toLocaleDateString() : 'N/A', 12) +
48
+ pad(course.workflow_state, 12) +
49
+ pad(course.course_progress ? `${course.course_progress.requirement_completed_count || 0}/${course.course_progress.requirement_count || 0}` : 'N/A', 18);
50
+ }
51
+ console.log(line);
52
+ });
53
+ console.log(chalk.cyan('-'.repeat(60)));
54
+ }
55
+ catch (error) {
56
+ const errorMessage = error instanceof Error ? error.message : String(error);
57
+ console.error(chalk.red('Error fetching courses:'), errorMessage);
58
+ process.exit(1);
59
+ }
60
+ }
61
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface ProfileOptions {
2
+ verbose?: boolean;
3
+ }
4
+ export declare function showProfile(options?: ProfileOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../commands/profile.ts"],"names":[],"mappings":"AAQA,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7E"}
@@ -0,0 +1,30 @@
1
+ import { makeCanvasRequest } from '../lib/api-client.js';
2
+ import chalk from 'chalk';
3
+ export async function showProfile(options = {}) {
4
+ try {
5
+ console.log(chalk.cyan.bold('Loading profile, please wait...'));
6
+ const user = await makeCanvasRequest('get', 'users/self', ['include[]=email', 'include[]=locale']);
7
+ console.log(chalk.cyan.bold('\n' + '-'.repeat(60)));
8
+ console.log(chalk.cyan.bold('User Profile'));
9
+ console.log(chalk.cyan('-'.repeat(60)));
10
+ console.log(chalk.white('Name: ') + user.name);
11
+ console.log(chalk.white('ID: ') + user.id);
12
+ console.log(chalk.white('Email: ') + (user.email || 'N/A'));
13
+ console.log(chalk.white('Login ID: ') + (user.login_id || 'N/A'));
14
+ if (options.verbose) {
15
+ console.log(chalk.white('Short Name: ') + (user.short_name || 'N/A'));
16
+ console.log(chalk.white('Sortable Name: ') + (user.sortable_name || 'N/A'));
17
+ console.log(chalk.white('Locale: ') + (user.locale || 'N/A'));
18
+ console.log(chalk.white('Time Zone: ') + (user.time_zone || 'N/A'));
19
+ console.log(chalk.white('Avatar URL: ') + (user.avatar_url || 'N/A'));
20
+ console.log(chalk.white('Created: ') + (user.created_at ? new Date(user.created_at).toLocaleString() : 'N/A'));
21
+ }
22
+ console.log(chalk.green('Success: Profile loaded.'));
23
+ }
24
+ catch (error) {
25
+ const errorMessage = error instanceof Error ? error.message : String(error);
26
+ console.error(chalk.red('Error: Failed to fetch profile: ') + errorMessage);
27
+ process.exit(1);
28
+ }
29
+ }
30
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../commands/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface SubmitOptions {
2
+ course?: string;
3
+ file?: string;
4
+ all?: boolean;
5
+ }
6
+ export declare function submitAssignment(options: SubmitOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../commands/submit.ts"],"names":[],"mappings":"AAgBA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAiBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0Z5E"}