canvaslms-cli 1.6.2 → 1.6.4

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 (69) hide show
  1. package/CHANGELOG.md +221 -195
  2. package/README.md +131 -129
  3. package/dist/commands/announcements.d.ts +2 -2
  4. package/dist/commands/announcements.d.ts.map +1 -1
  5. package/dist/commands/announcements.js +29 -20
  6. package/dist/commands/announcements.js.map +1 -1
  7. package/dist/commands/api.d.ts +1 -1
  8. package/dist/commands/api.d.ts.map +1 -1
  9. package/dist/commands/api.js +1 -1
  10. package/dist/commands/api.js.map +1 -1
  11. package/dist/commands/assignments.d.ts +2 -2
  12. package/dist/commands/assignments.d.ts.map +1 -1
  13. package/dist/commands/assignments.js +24 -19
  14. package/dist/commands/assignments.js.map +1 -1
  15. package/dist/commands/config.d.ts.map +1 -1
  16. package/dist/commands/config.js +102 -85
  17. package/dist/commands/config.js.map +1 -1
  18. package/dist/commands/grades.d.ts +2 -2
  19. package/dist/commands/grades.d.ts.map +1 -1
  20. package/dist/commands/grades.js +183 -228
  21. package/dist/commands/grades.js.map +1 -1
  22. package/dist/commands/list.d.ts +1 -1
  23. package/dist/commands/list.d.ts.map +1 -1
  24. package/dist/commands/list.js +22 -20
  25. package/dist/commands/list.js.map +1 -1
  26. package/dist/commands/profile.d.ts.map +1 -1
  27. package/dist/commands/profile.js +57 -32
  28. package/dist/commands/profile.js.map +1 -1
  29. package/dist/commands/submit.d.ts +1 -2
  30. package/dist/commands/submit.d.ts.map +1 -1
  31. package/dist/commands/submit.js +88 -79
  32. package/dist/commands/submit.js.map +1 -1
  33. package/dist/index.d.ts +14 -14
  34. package/dist/index.js +14 -14
  35. package/dist/lib/api-client.d.ts +3 -0
  36. package/dist/lib/api-client.d.ts.map +1 -1
  37. package/dist/lib/api-client.js +31 -16
  38. package/dist/lib/api-client.js.map +1 -1
  39. package/dist/lib/config-validator.d.ts.map +1 -1
  40. package/dist/lib/config-validator.js +12 -12
  41. package/dist/lib/config-validator.js.map +1 -1
  42. package/dist/lib/config.d.ts +1 -1
  43. package/dist/lib/config.d.ts.map +1 -1
  44. package/dist/lib/config.js +16 -14
  45. package/dist/lib/config.js.map +1 -1
  46. package/dist/lib/display.d.ts +11 -5
  47. package/dist/lib/display.d.ts.map +1 -1
  48. package/dist/lib/display.js +261 -169
  49. package/dist/lib/display.js.map +1 -1
  50. package/dist/lib/file-upload.d.ts.map +1 -1
  51. package/dist/lib/file-upload.js +17 -17
  52. package/dist/lib/file-upload.js.map +1 -1
  53. package/dist/lib/interactive.d.ts +1 -1
  54. package/dist/lib/interactive.d.ts.map +1 -1
  55. package/dist/lib/interactive.js +194 -144
  56. package/dist/lib/interactive.js.map +1 -1
  57. package/dist/src/index.d.ts +0 -1
  58. package/dist/src/index.js +62 -63
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/types/index.d.ts +1 -1
  61. package/package.json +10 -3
  62. package/dist/commands/coursenames.d.ts +0 -15
  63. package/dist/commands/coursenames.d.ts.map +0 -1
  64. package/dist/commands/coursenames.js +0 -150
  65. package/dist/commands/coursenames.js.map +0 -1
  66. package/dist/lib/course-utils.d.ts +0 -6
  67. package/dist/lib/course-utils.d.ts.map +0 -1
  68. package/dist/lib/course-utils.js +0 -17
  69. package/dist/lib/course-utils.js.map +0 -1
package/README.md CHANGED
@@ -1,129 +1,131 @@
1
- # Canvas CLI Tool
2
-
3
- A modern, user-friendly command-line interface for Canvas LMS. Manage courses, assignments, submissions, grades, and more directly from your terminal.
4
-
5
- ## Features
6
-
7
- - List and filter enrolled/starred courses
8
- - View assignments, grades, and submission status
9
- - Interactive file upload for assignments
10
- - View course announcements
11
- - Display user profile information
12
- - Direct access to Canvas API endpoints
13
-
14
- ## Installation
15
-
16
- ### Global (Recommended)
17
-
18
- ```bash
19
- npm install -g canvaslms-cli
20
- ```
21
-
22
- ## Setup
23
-
24
- 1. **Get your Canvas API Token**
25
- - Log in to Canvas
26
- - Go to Account → Settings
27
- - Under Approved Integrations, click + New Access Token
28
- - Copy the generated token
29
-
30
- 2. **Configure the CLI**
31
-
32
- ```bash
33
- canvas config
34
- ```
35
-
36
- 3. **Environment Variables**
37
-
38
- Create a `.env` file in your project root:
39
-
40
- ```env
41
- CANVAS_DOMAIN=your-canvas-domain.instructure.com
42
- CANVAS_API_TOKEN=your-api-token
43
- ```
44
-
45
- ## Usage
46
-
47
- ### Common Commands
48
-
49
- ```bash
50
- canvas config # Configure domain and API token
51
- canvas list # List starred courses
52
- canvas list -a # List all enrolled courses
53
- canvas assignments <course> # List assignments for a course
54
- canvas grades # Interactive course selection + detailed grades
55
- canvas grades <course-id> # Show detailed grades for specific course
56
- canvas announcements # Show recent announcements
57
- canvas profile # Show user profile
58
- canvas submit # Interactive assignment submission
59
- ```
60
-
61
- ### Assignment Submission
62
-
63
- ```bash
64
- canvas submit # Interactive mode
65
- canvas submit -c <courseId> # Specify course
66
- canvas submit -a <assignmentId> # Specify assignment
67
- canvas submit -f <file> # Submit specific file
68
- ```
69
-
70
- ### Viewing Grades
71
-
72
- The grades command provides an enhanced, interactive experience:
73
-
74
- ```bash
75
- canvas grades # Interactive course selection (active courses)
76
- canvas grades --all # Include inactive/completed courses
77
- canvas grades <course-id> # Direct course grade view
78
- canvas grades --verbose # Include enrollment details
79
- canvas grades -a -v # All courses with verbose details
80
- ```
81
-
82
- **Features:**
83
- - 📊 Interactive course selection with grade summary table
84
- - 📝 Detailed assignment breakdown with scores
85
- - Color-coded status indicators (graded, pending, not done)
86
- - 📈 Calculated totals based on graded assignments
87
- - 📋 Table-formatted overall grades
88
- - 🔍 Option to view all courses including inactive ones
89
- - 🎯 Visual progress tracking with emojis
90
-
91
- **What you'll see:**
92
- 1. List of all courses with current/final scores
93
- 2. Select a course to view detailed breakdown
94
- 3. Overall grades (Canvas official + calculated average)
95
- 4. Complete assignment list with individual scores
96
- 5. Points earned vs points possible
97
- 6. Assignment submission status
98
-
99
- ## Command Reference
100
-
101
- | Command | Alias | Description |
102
- |-----------------|-----------|-----------------------------------|
103
- | `list` | `l` | List courses |
104
- | `assignments` | `assign` | List assignments |
105
- | `submit` | `sub` | Submit assignment files |
106
- | `grades` | `grade` | Show grades |
107
- | `announcements` | `announce`| Show announcements |
108
- | `profile` | `me` | Show user profile |
109
- | `config` | - | Show configuration |
110
-
111
- ## Requirements
112
-
113
- - Node.js >= 14.x
114
- - npm >= 6.x
115
- - Valid Canvas LMS API token
116
-
117
- ## Contributing
118
-
119
- 1. Fork the repository
120
- 2. Create a feature branch: `git checkout -b feature-name`
121
- 3. Make your changes
122
- 4. Run tests: `npm test`
123
- 5. Commit: `git commit -am 'Add feature'`
124
- 6. Push: `git push origin feature-name`
125
- 7. Submit a pull request
126
-
127
- ## License
128
-
129
- MIT License - see [LICENSE](LICENSE) for details.
1
+ # Canvas CLI Tool
2
+
3
+ A modern, user-friendly command-line interface for Canvas LMS. Manage courses, assignments, submissions, grades, and more directly from your terminal.
4
+
5
+ ## Features
6
+
7
+ - List and filter enrolled/starred courses
8
+ - View assignments, grades, and submission status
9
+ - Interactive file upload for assignments
10
+ - View course announcements
11
+ - Display user profile information
12
+ - Direct access to Canvas API endpoints
13
+
14
+ ## Installation
15
+
16
+ ### Global (Recommended)
17
+
18
+ ```bash
19
+ npm install -g canvaslms-cli
20
+ ```
21
+
22
+ ## Setup
23
+
24
+ 1. **Get your Canvas API Token**
25
+ - Log in to Canvas
26
+ - Go to Account → Settings
27
+ - Under Approved Integrations, click + New Access Token
28
+ - Copy the generated token
29
+
30
+ 2. **Configure the CLI**
31
+
32
+ ```bash
33
+ canvas config
34
+ ```
35
+
36
+ 3. **Environment Variables**
37
+
38
+ Create a `.env` file in your project root:
39
+
40
+ ```env
41
+ CANVAS_DOMAIN=your-canvas-domain.instructure.com
42
+ CANVAS_API_TOKEN=your-api-token
43
+ ```
44
+
45
+ ## Usage
46
+
47
+ ### Common Commands
48
+
49
+ ```bash
50
+ canvas config # Configure domain and API token
51
+ canvas list # List starred courses
52
+ canvas list -a # List all enrolled courses
53
+ canvas assignments <course> # List assignments for a course
54
+ canvas grades # Interactive course selection + detailed grades
55
+ canvas grades <course-id> # Show detailed grades for specific course
56
+ canvas announcements # Show recent announcements
57
+ canvas profile # Show user profile
58
+ canvas submit # Interactive assignment submission
59
+ ```
60
+
61
+ ### Assignment Submission
62
+
63
+ ```bash
64
+ canvas submit # Interactive mode
65
+ canvas submit -c <courseId> # Specify course
66
+ canvas submit -a <assignmentId> # Specify assignment
67
+ canvas submit -f <file> # Submit specific file
68
+ ```
69
+
70
+ ### Viewing Grades
71
+
72
+ The grades command provides an enhanced, interactive experience:
73
+
74
+ ```bash
75
+ canvas grades # Interactive course selection (active courses)
76
+ canvas grades --all # Include inactive/completed courses
77
+ canvas grades <course-id> # Direct course grade view
78
+ canvas grades --verbose # Include enrollment details
79
+ canvas grades -a -v # All courses with verbose details
80
+ ```
81
+
82
+ **Features:**
83
+
84
+ - 📊 Interactive course selection with grade summary table
85
+ - 📝 Detailed assignment breakdown with scores
86
+ - Color-coded status indicators (graded, pending, not done)
87
+ - 📈 Calculated totals based on graded assignments
88
+ - 📋 Table-formatted overall grades
89
+ - 🔍 Option to view all courses including inactive ones
90
+ - 🎯 Visual progress tracking with emojis
91
+
92
+ **What you'll see:**
93
+
94
+ 1. List of all courses with current/final scores
95
+ 2. Select a course to view detailed breakdown
96
+ 3. Overall grades (Canvas official + calculated average)
97
+ 4. Complete assignment list with individual scores
98
+ 5. Points earned vs points possible
99
+ 6. Assignment submission status
100
+
101
+ ## Command Reference
102
+
103
+ | Command | Alias | Description |
104
+ | --------------- | ---------- | ----------------------- |
105
+ | `list` | `l` | List courses |
106
+ | `assignments` | `assign` | List assignments |
107
+ | `submit` | `sub` | Submit assignment files |
108
+ | `grades` | `grade` | Show grades |
109
+ | `announcements` | `announce` | Show announcements |
110
+ | `profile` | `me` | Show user profile |
111
+ | `config` | - | Show configuration |
112
+
113
+ ## Requirements
114
+
115
+ - Node.js >= 14.x
116
+ - npm >= 6.x
117
+ - Valid Canvas LMS API token
118
+
119
+ ## Contributing
120
+
121
+ 1. Fork the repository
122
+ 2. Create a feature branch: `git checkout -b feature-name`
123
+ 3. Make your changes
124
+ 4. Run tests: `npm test`
125
+ 5. Commit: `git commit -am 'Add feature'`
126
+ 6. Push: `git push origin feature-name`
127
+ 7. Submit a pull request
128
+
129
+ ## License
130
+
131
+ MIT License - see [LICENSE](LICENSE) for details.
@@ -1,3 +1,3 @@
1
- import type { ShowAnnouncementsOptions } from '../types/index.js';
2
- export declare function showAnnouncements(courseId?: string, options?: ShowAnnouncementsOptions): Promise<void>;
1
+ import type { ShowAnnouncementsOptions } from "../types/index.js";
2
+ export declare function showAnnouncements(courseName?: string, options?: ShowAnnouncementsOptions): Promise<void>;
3
3
  //# sourceMappingURL=announcements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"announcements.d.ts","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAsB,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,wBAAsB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEhH"}
1
+ {"version":3,"file":"announcements.d.ts","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAEV,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAE3B,wBAAsB,iBAAiB,CACrC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CAiFf"}
@@ -1,55 +1,64 @@
1
- import { makeCanvasRequest } from '../lib/api-client.js';
2
- import { createReadlineInterface, askQuestion } from '../lib/interactive.js';
3
- import { pickCourse, displayAnnouncements, displayAnnouncementDetail, printInfo, printError, printSuccess, printWarning } from '../lib/display.js';
4
- import chalk from 'chalk';
5
- export async function showAnnouncements(courseId, options = {}) {
1
+ import { makeCanvasRequest, getCanvasCourse } from "../lib/api-client.js";
2
+ import { createReadlineInterface, askQuestion } from "../lib/interactive.js";
3
+ import { pickCourse, displayAnnouncements, displayAnnouncementDetail, printInfo, printError, printSuccess, printWarning, } from "../lib/display.js";
4
+ import chalk from "chalk";
5
+ export async function showAnnouncements(courseName, options = {}) {
6
6
  let rl = null;
7
7
  try {
8
- let selectedCourseId = courseId;
9
- if (!selectedCourseId) {
10
- const result = await pickCourse({ title: '\nLoading your courses, please wait...' });
8
+ let selectedCourseId;
9
+ if (!courseName) {
10
+ const result = await pickCourse({
11
+ title: "\nLoading your courses, please wait...",
12
+ });
11
13
  if (!result)
12
14
  return;
13
15
  selectedCourseId = result.course.id.toString();
14
16
  rl = result.rl;
15
17
  }
16
18
  else {
19
+ const course = await getCanvasCourse(courseName);
20
+ if (!course) {
21
+ printError(`Course "${courseName}" not found.`);
22
+ return;
23
+ }
24
+ selectedCourseId = course.id.toString();
25
+ printSuccess(`✓ Using course: ${course.name}`);
17
26
  rl = createReadlineInterface();
18
27
  }
19
- const limit = parseInt(options.limit || '5') || 5;
20
- printInfo('Loading announcements...');
21
- const announcements = await makeCanvasRequest('get', `courses/${selectedCourseId}/discussion_topics`, [`only_announcements=true`, `per_page=${limit}`]);
28
+ const limit = parseInt(options.limit || "5") || 5;
29
+ printInfo("Loading announcements...");
30
+ const announcements = await makeCanvasRequest("get", `courses/${selectedCourseId}/discussion_topics`, [`only_announcements=true`, `per_page=${limit}`]);
22
31
  if (!announcements || announcements.length === 0) {
23
- printWarning('No announcements found for this course.');
32
+ printWarning("No announcements found for this course.");
24
33
  rl?.close();
25
34
  return;
26
35
  }
27
36
  printSuccess(`Found ${announcements.length} announcement(s).`);
28
37
  const announcementTable = displayAnnouncements(announcements);
29
- const annChoice = await askQuestion(rl, chalk.bold.cyan('\nEnter announcement number to view details (0 to exit): '));
38
+ const annChoice = await askQuestion(rl, chalk.bold.cyan("\nEnter announcement number to view details (0 to exit): "));
30
39
  announcementTable.stopWatching();
31
- if (!annChoice.trim() || annChoice === '0') {
32
- printWarning('Exiting announcements viewer.');
40
+ if (!annChoice.trim() || annChoice === "0") {
41
+ printWarning("Exiting announcements viewer.");
33
42
  rl?.close();
34
43
  return;
35
44
  }
36
45
  const annIndex = parseInt(annChoice) - 1;
37
46
  if (annIndex < 0 || annIndex >= announcements.length) {
38
- printError('Invalid announcement selection.');
47
+ printError("Invalid announcement selection.");
39
48
  rl?.close();
40
49
  return;
41
50
  }
42
51
  const ann = announcements[annIndex];
43
52
  displayAnnouncementDetail({
44
- title: ann?.title || 'Untitled',
53
+ title: ann?.title || "Untitled",
45
54
  postedAt: ann?.posted_at || null,
46
- author: ann?.author?.display_name || 'Unknown',
47
- message: ann?.message || 'No content'
55
+ author: ann?.author?.display_name || "Unknown",
56
+ message: ann?.message || "No content",
48
57
  });
49
58
  }
50
59
  catch (error) {
51
60
  const errorMessage = error instanceof Error ? error.message : String(error);
52
- console.error(chalk.red('Error: Failed to fetch announcements: ') + errorMessage);
61
+ console.error(chalk.red("Error: Failed to fetch announcements: ") + errorMessage);
53
62
  }
54
63
  finally {
55
64
  rl?.close();
@@ -1 +1 @@
1
- {"version":3,"file":"announcements.js","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"announcements.js","sourceRoot":"","sources":["../../commands/announcements.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,yBAAyB,EACzB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAmB,EACnB,UAAoC,EAAE;IAEtC,IAAI,EAAE,GAAsD,IAAI,CAAC;IAEjE,IAAI,CAAC;QACH,IAAI,gBAAwB,CAAC;QAE7B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;gBAC9B,KAAK,EAAE,wCAAwC;aAChD,CAAC,CAAC;YACH,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/C,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,UAAU,CAAC,WAAW,UAAU,cAAc,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YACxC,YAAY,CAAC,mBAAmB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,EAAE,GAAG,uBAAuB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAEtC,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,KAAK,EACL,WAAW,gBAAgB,oBAAoB,EAC/C,CAAC,yBAAyB,EAAE,YAAY,KAAK,EAAE,CAAC,CACjD,CAAC;QAEF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,YAAY,CAAC,yCAAyC,CAAC,CAAC;YACxD,EAAE,EAAE,KAAK,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,YAAY,CAAC,SAAS,aAAa,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAC/D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAE9D,MAAM,SAAS,GAAG,MAAM,WAAW,CACjC,EAAG,EACH,KAAK,CAAC,IAAI,CAAC,IAAI,CACb,2DAA2D,CAC5D,CACF,CAAC;QAGF,iBAAiB,CAAC,YAAY,EAAE,CAAC;QAEjC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,YAAY,CAAC,+BAA+B,CAAC,CAAC;YAC9C,EAAE,EAAE,KAAK,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACrD,UAAU,CAAC,iCAAiC,CAAC,CAAC;YAC9C,EAAE,EAAE,KAAK,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,yBAAyB,CAAC;YACxB,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,UAAU;YAC/B,QAAQ,EAAE,GAAG,EAAE,SAAS,IAAI,IAAI;YAChC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,IAAI,SAAS;YAC9C,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,YAAY;SACtC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,GAAG,YAAY,CACnE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,EAAE,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { ApiQueryOptions } from '../types/index.js';
1
+ import type { ApiQueryOptions } from "../types/index.js";
2
2
  export declare function createQueryHandler(method: string): (endpoint: string, options: ApiQueryOptions) => Promise<void>;
3
3
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../commands/api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,IACzB,UAAU,MAAM,EAAE,SAAS,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC,CAIjF"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../commands/api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKzD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,IAE7C,UAAU,MAAM,EAChB,SAAS,eAAe,KACvB,OAAO,CAAC,IAAI,CAAC,CASjB"}
@@ -1,4 +1,4 @@
1
- import { makeCanvasRequest } from '../lib/api-client.js';
1
+ import { makeCanvasRequest } from "../lib/api-client.js";
2
2
  export function createQueryHandler(method) {
3
3
  return async function (endpoint, options) {
4
4
  const data = await makeCanvasRequest(method, endpoint, options.query || [], options.body || null);
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../commands/api.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,KAAK,WAAU,QAAgB,EAAE,OAAwB;QAC9D,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../commands/api.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,KAAK,WACV,QAAgB,EAChB,OAAwB;QAExB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAClC,MAAM,EACN,QAAQ,EACR,OAAO,CAAC,KAAK,IAAI,EAAE,EACnB,OAAO,CAAC,IAAI,IAAI,IAAI,CACrB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { ListAssignmentsOptions } from '../types/index.js';
2
- export declare function listAssignments(courseId?: string, options?: ListAssignmentsOptions): Promise<void>;
1
+ import type { ListAssignmentsOptions } from "../types/index.js";
2
+ export declare function listAssignments(courseName?: string, options?: ListAssignmentsOptions): Promise<void>;
3
3
  //# sourceMappingURL=assignments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assignments.d.ts","sourceRoot":"","sources":["../../commands/assignments.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAkC,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhG,wBAAsB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD5G"}
1
+ {"version":3,"file":"assignments.d.ts","sourceRoot":"","sources":["../../commands/assignments.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAGV,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,wBAAsB,eAAe,CACnC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAmEf"}
@@ -1,12 +1,14 @@
1
- import { makeCanvasRequest } from '../lib/api-client.js';
2
- import { pickCourse, displayAssignments, printInfo, printError, printSuccess, printSeparator } from '../lib/display.js';
3
- import chalk from 'chalk';
4
- export async function listAssignments(courseId, options = {}) {
1
+ import { makeCanvasRequest, getCanvasCourse } from "../lib/api-client.js";
2
+ import { pickCourse, displayAssignments, printInfo, printError, printSuccess, printSeparator, } from "../lib/display.js";
3
+ import chalk from "chalk";
4
+ export async function listAssignments(courseName, options = {}) {
5
5
  try {
6
6
  let course;
7
- let selectedCourseId = courseId;
8
- if (!courseId) {
9
- const result = await pickCourse({ title: '\nLoading your courses, please wait...' });
7
+ let selectedCourseId;
8
+ if (!courseName) {
9
+ const result = await pickCourse({
10
+ title: "\nLoading your courses, please wait...",
11
+ });
10
12
  if (!result)
11
13
  return;
12
14
  course = result.course;
@@ -14,25 +16,28 @@ export async function listAssignments(courseId, options = {}) {
14
16
  result.rl.close();
15
17
  }
16
18
  else {
17
- course = await makeCanvasRequest('get', `courses/${courseId}`);
19
+ course = await getCanvasCourse(courseName);
20
+ if (!course) {
21
+ printError(`Course "${courseName}" not found.`);
22
+ return;
23
+ }
24
+ selectedCourseId = course.id.toString();
25
+ printSuccess(`✓ Using course: ${course.name}`);
18
26
  }
19
- printSeparator('', 60);
20
- const assignmentParams = [
21
- 'include[]=submission',
22
- 'per_page=100'
23
- ];
24
- printInfo('Loading assignments, please wait...');
25
- const assignments = await makeCanvasRequest('get', `courses/${selectedCourseId}/assignments`, assignmentParams);
27
+ printSeparator("", 60);
28
+ const assignmentParams = ["include[]=submission", "per_page=100"];
29
+ printInfo("Loading assignments, please wait...");
30
+ const assignments = await makeCanvasRequest("get", `courses/${selectedCourseId}/assignments`, assignmentParams);
26
31
  if (!assignments || assignments.length === 0) {
27
32
  printError(`No assignments found for course: ${course?.name || selectedCourseId}`);
28
33
  return;
29
34
  }
30
35
  let filteredAssignments = assignments;
31
36
  if (options.submitted) {
32
- filteredAssignments = assignments.filter(a => a.submission && a.submission.submitted_at);
37
+ filteredAssignments = assignments.filter((a) => a.submission && a.submission.submitted_at);
33
38
  }
34
39
  else if (options.pending) {
35
- filteredAssignments = assignments.filter(a => !a.submission || !a.submission.submitted_at);
40
+ filteredAssignments = assignments.filter((a) => !a.submission || !a.submission.submitted_at);
36
41
  }
37
42
  printInfo(`\nAssignments for: ${course?.name || selectedCourseId}`);
38
43
  printSuccess(`Found ${filteredAssignments.length} assignment(s).`);
@@ -40,12 +45,12 @@ export async function listAssignments(courseId, options = {}) {
40
45
  showId: true,
41
46
  showGrade: true,
42
47
  showDueDate: true,
43
- showStatus: options.verbose
48
+ showStatus: options.verbose,
44
49
  });
45
50
  }
46
51
  catch (error) {
47
52
  const errorMessage = error instanceof Error ? error.message : String(error);
48
- console.error(chalk.red('Error fetching assignments:'), errorMessage);
53
+ console.error(chalk.red("Error fetching assignments:"), errorMessage);
49
54
  process.exit(1);
50
55
  }
51
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assignments.js","sourceRoot":"","sources":["../../commands/assignments.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAiB,EAAE,UAAkC,EAAE;IAC3F,IAAI,CAAC;QACH,IAAI,MAAgC,CAAC;QACrC,IAAI,gBAAgB,GAAG,QAAQ,CAAC;QAEhC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACvB,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,iBAAiB,CAAe,KAAK,EAAE,WAAW,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAExB,MAAM,gBAAgB,GAAG;YACvB,sBAAsB;YACtB,cAAc;SACf,CAAC;QACF,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAEjD,MAAM,WAAW,GAAG,MAAM,iBAAiB,CACzC,KAAK,EACL,WAAW,gBAAgB,cAAc,EACzC,gBAAgB,CACjB,CAAC;QAEF,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,UAAU,CAAC,oCAAoC,MAAM,EAAE,IAAI,IAAI,gBAAgB,EAAE,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QAED,IAAI,mBAAmB,GAAG,WAAW,CAAC;QACtC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,UAAU,IAAK,CAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC7G,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAS,CAAC,UAAU,IAAI,CAAE,CAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/G,CAAC;QAED,SAAS,CAAC,sBAAsB,MAAM,EAAE,IAAI,IAAI,gBAAgB,EAAE,CAAC,CAAC;QACpE,YAAY,CAAC,SAAS,mBAAmB,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAEnE,kBAAkB,CAAC,mBAAmB,EAAE;YACtC,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,OAAO,CAAC,OAAO;SAC5B,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,YAAY,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"assignments.js","sourceRoot":"","sources":["../../commands/assignments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../commands/config.ts"],"names":[],"mappings":"AASA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgChD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgFjD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwDhD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAkCvC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../commands/config.ts"],"names":[],"mappings":"AAeA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAmDhD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA+GjD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAsEhD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAMrC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CA0CvC"}