canvas-lms-mcp 1.22.0 → 1.23.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 (160) hide show
  1. package/README.md +59 -11
  2. package/dist/canvas/accounts.d.ts +2 -1
  3. package/dist/canvas/accounts.d.ts.map +1 -1
  4. package/dist/canvas/analytics.d.ts +3 -1
  5. package/dist/canvas/analytics.d.ts.map +1 -1
  6. package/dist/canvas/assignments.d.ts +3 -1
  7. package/dist/canvas/assignments.d.ts.map +1 -1
  8. package/dist/canvas/content-exports.d.ts +19 -0
  9. package/dist/canvas/content-exports.d.ts.map +1 -0
  10. package/dist/canvas/courses.d.ts.map +1 -1
  11. package/dist/canvas/grading-standards.d.ts +19 -0
  12. package/dist/canvas/grading-standards.d.ts.map +1 -0
  13. package/dist/canvas/index.cjs +3 -3
  14. package/dist/canvas/index.d.ts +6 -0
  15. package/dist/canvas/index.d.ts.map +1 -1
  16. package/dist/canvas/index.js +2 -2
  17. package/dist/canvas/late-policy.d.ts +16 -0
  18. package/dist/canvas/late-policy.d.ts.map +1 -0
  19. package/dist/canvas/modules.d.ts +9 -0
  20. package/dist/canvas/modules.d.ts.map +1 -1
  21. package/dist/canvas/new-quizzes.d.ts +5 -2
  22. package/dist/canvas/new-quizzes.d.ts.map +1 -1
  23. package/dist/canvas/pages.d.ts +8 -0
  24. package/dist/canvas/pages.d.ts.map +1 -1
  25. package/dist/canvas/quizzes.d.ts +10 -1
  26. package/dist/canvas/quizzes.d.ts.map +1 -1
  27. package/dist/canvas/submissions.d.ts +11 -1
  28. package/dist/canvas/submissions.d.ts.map +1 -1
  29. package/dist/canvas/types.d.ts +139 -1
  30. package/dist/canvas/types.d.ts.map +1 -1
  31. package/dist/canvas/users.d.ts +1 -0
  32. package/dist/canvas/users.d.ts.map +1 -1
  33. package/dist/chunk-46PS7BZ5.js +33 -0
  34. package/dist/chunk-46PS7BZ5.js.map +1 -0
  35. package/dist/{chunk-ICLQ42RW.js → chunk-67BU5T76.js} +216 -4
  36. package/dist/chunk-67BU5T76.js.map +1 -0
  37. package/dist/{chunk-22DWAWDC.cjs → chunk-BO3L254H.cjs} +217 -5
  38. package/dist/chunk-BO3L254H.cjs.map +1 -0
  39. package/dist/{chunk-NJOPOZP7.cjs → chunk-CNCIHAPS.cjs} +2 -2
  40. package/dist/chunk-CNCIHAPS.cjs.map +1 -0
  41. package/dist/chunk-FEGXJFMJ.js +7873 -0
  42. package/dist/chunk-FEGXJFMJ.js.map +1 -0
  43. package/dist/{chunk-BDB7U4WG.js → chunk-KKGSG3GA.js} +2 -2
  44. package/dist/chunk-KKGSG3GA.js.map +1 -0
  45. package/dist/{chunk-POJH4U3S.js → chunk-LXCGNGPX.js} +22 -2
  46. package/dist/chunk-LXCGNGPX.js.map +1 -0
  47. package/dist/chunk-OOP4MJA7.cjs +33 -0
  48. package/dist/chunk-OOP4MJA7.cjs.map +1 -0
  49. package/dist/chunk-RY2TZ7MR.cjs +7873 -0
  50. package/dist/chunk-RY2TZ7MR.cjs.map +1 -0
  51. package/dist/{chunk-7VYG7YHR.cjs → chunk-VTBFXAVX.cjs} +23 -3
  52. package/dist/chunk-VTBFXAVX.cjs.map +1 -0
  53. package/dist/cli.cjs +3 -2
  54. package/dist/cli.cjs.map +1 -1
  55. package/dist/cli.d.ts +3 -0
  56. package/dist/cli.d.ts.map +1 -1
  57. package/dist/cli.js +2 -1
  58. package/dist/discovery/catalog.d.ts.map +1 -1
  59. package/dist/http.cjs +24 -9
  60. package/dist/http.cjs.map +1 -1
  61. package/dist/http.d.ts +2 -0
  62. package/dist/http.d.ts.map +1 -1
  63. package/dist/http.js +22 -7
  64. package/dist/http.js.map +1 -1
  65. package/dist/init/argv.d.ts +7 -0
  66. package/dist/init/argv.d.ts.map +1 -1
  67. package/dist/init/clients.d.ts.map +1 -1
  68. package/dist/init/wizard.d.ts.map +1 -1
  69. package/dist/init.cjs +49 -9
  70. package/dist/init.cjs.map +1 -1
  71. package/dist/init.js +47 -7
  72. package/dist/init.js.map +1 -1
  73. package/dist/pseudonym/coverage.d.ts.map +1 -1
  74. package/dist/resources/index.d.ts.map +1 -1
  75. package/dist/resources/ui-account-notifications.d.ts +3 -0
  76. package/dist/resources/ui-account-notifications.d.ts.map +1 -0
  77. package/dist/server.cjs +5 -4
  78. package/dist/server.cjs.map +1 -1
  79. package/dist/server.d.ts +8 -0
  80. package/dist/server.d.ts.map +1 -1
  81. package/dist/server.js +4 -3
  82. package/dist/stdio.cjs +9 -7
  83. package/dist/stdio.cjs.map +1 -1
  84. package/dist/stdio.js +7 -5
  85. package/dist/stdio.js.map +1 -1
  86. package/dist/tools/accessibility-audit.d.ts +4 -0
  87. package/dist/tools/accessibility-audit.d.ts.map +1 -0
  88. package/dist/tools/accounts.d.ts.map +1 -1
  89. package/dist/tools/analytics.d.ts.map +1 -1
  90. package/dist/tools/assignment-overrides.d.ts +4 -0
  91. package/dist/tools/assignment-overrides.d.ts.map +1 -0
  92. package/dist/tools/assignments.d.ts.map +1 -1
  93. package/dist/tools/attention.d.ts +5 -0
  94. package/dist/tools/attention.d.ts.map +1 -0
  95. package/dist/tools/catalog.d.ts.map +1 -1
  96. package/dist/tools/content-exports.d.ts +4 -0
  97. package/dist/tools/content-exports.d.ts.map +1 -0
  98. package/dist/tools/course-setup.d.ts +4 -0
  99. package/dist/tools/course-setup.d.ts.map +1 -0
  100. package/dist/tools/courses.d.ts.map +1 -1
  101. package/dist/tools/dashboard.d.ts.map +1 -1
  102. package/dist/tools/discussions.d.ts.map +1 -1
  103. package/dist/tools/enrollments.d.ts.map +1 -1
  104. package/dist/tools/fan-out.d.ts +71 -0
  105. package/dist/tools/fan-out.d.ts.map +1 -0
  106. package/dist/tools/files.d.ts.map +1 -1
  107. package/dist/tools/grade-engine.d.ts +78 -0
  108. package/dist/tools/grade-engine.d.ts.map +1 -0
  109. package/dist/tools/grade-explanation.d.ts +5 -0
  110. package/dist/tools/grade-explanation.d.ts.map +1 -0
  111. package/dist/tools/grade-projection.d.ts +5 -0
  112. package/dist/tools/grade-projection.d.ts.map +1 -0
  113. package/dist/tools/grading-policy.d.ts +4 -0
  114. package/dist/tools/grading-policy.d.ts.map +1 -0
  115. package/dist/tools/grading-standards.d.ts +4 -0
  116. package/dist/tools/grading-standards.d.ts.map +1 -0
  117. package/dist/tools/index.d.ts +9 -3
  118. package/dist/tools/index.d.ts.map +1 -1
  119. package/dist/tools/link-audit.d.ts +4 -0
  120. package/dist/tools/link-audit.d.ts.map +1 -0
  121. package/dist/tools/modules.d.ts.map +1 -1
  122. package/dist/tools/new-quiz-accommodations.d.ts +4 -0
  123. package/dist/tools/new-quiz-accommodations.d.ts.map +1 -0
  124. package/dist/tools/outcomes.d.ts.map +1 -1
  125. package/dist/tools/pages.d.ts.map +1 -1
  126. package/dist/tools/peer-reviews.d.ts.map +1 -1
  127. package/dist/tools/pseudonym.d.ts.map +1 -1
  128. package/dist/tools/quiz-accommodations.d.ts +4 -0
  129. package/dist/tools/quiz-accommodations.d.ts.map +1 -0
  130. package/dist/tools/quiz-question-responses.d.ts +5 -0
  131. package/dist/tools/quiz-question-responses.d.ts.map +1 -0
  132. package/dist/tools/quizzes.d.ts.map +1 -1
  133. package/dist/tools/roles.d.ts +34 -0
  134. package/dist/tools/roles.d.ts.map +1 -0
  135. package/dist/tools/student-search.d.ts +5 -0
  136. package/dist/tools/student-search.d.ts.map +1 -0
  137. package/dist/tools/student.d.ts +2 -1
  138. package/dist/tools/student.d.ts.map +1 -1
  139. package/dist/tools/submission-files.d.ts +10 -0
  140. package/dist/tools/submission-files.d.ts.map +1 -0
  141. package/dist/tools/submissions-awaiting-grading.d.ts +5 -0
  142. package/dist/tools/submissions-awaiting-grading.d.ts.map +1 -0
  143. package/dist/tools/types.d.ts +17 -0
  144. package/dist/tools/types.d.ts.map +1 -1
  145. package/dist/tools/users.d.ts.map +1 -1
  146. package/dist/ui/account-notifications-sanitizer.d.ts +15 -0
  147. package/dist/ui/account-notifications-sanitizer.d.ts.map +1 -0
  148. package/dist/ui/account-notifications.html.d.ts +2 -0
  149. package/dist/ui/account-notifications.html.d.ts.map +1 -0
  150. package/package.json +18 -14
  151. package/dist/chunk-22DWAWDC.cjs.map +0 -1
  152. package/dist/chunk-7VYG7YHR.cjs.map +0 -1
  153. package/dist/chunk-BDB7U4WG.js.map +0 -1
  154. package/dist/chunk-ICLQ42RW.js.map +0 -1
  155. package/dist/chunk-NJOPOZP7.cjs.map +0 -1
  156. package/dist/chunk-POJH4U3S.js.map +0 -1
  157. package/dist/chunk-U4JFO6GQ.cjs +0 -4019
  158. package/dist/chunk-U4JFO6GQ.cjs.map +0 -1
  159. package/dist/chunk-ZUQWZ2YH.js +0 -4019
  160. package/dist/chunk-ZUQWZ2YH.js.map +0 -1
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  MCP server for [Canvas LMS](https://www.instructure.com/canvas). Read courses, assignments, submissions, rubrics, quizzes; grade, comment, manage course content, and handle Canvas admin workflows from any AI agent.
13
13
 
14
- 117 tools across Canvas courses, assignments, submissions, gradebook history, rubrics, quizzes, New Quizzes (LTI), files, users, groups, enrollments, discussions, modules, pages, calendar, conversations, peer reviews, accounts, analytics, outcomes, student workflows, dashboard, and health checks. Three deployment modes: stdio, HTTP, and library import.
14
+ 148 tools across Canvas courses, assignments, submissions, gradebook history, rubrics, quizzes, New Quizzes (LTI), files, users, groups, enrollments, discussions, modules, pages, calendar, conversations, peer reviews, accounts, analytics, outcomes, grading standards, grade projection, link audit, accessibility audit, content exports, quiz accommodations, student workflows, student search, dashboard, instructor attention workflows, and health checks. Three deployment modes: stdio, HTTP, and library import.
15
15
 
16
16
  ## One-click install (Claude Desktop)
17
17
 
@@ -28,7 +28,7 @@ Prefer the terminal? Use the [Quick Start](#quick-start) below.
28
28
  | | canvas-lms-mcp | [vishalsachdev/canvas-mcp](https://github.com/vishalsachdev/canvas-mcp) | [DMontgomery40/mcp-canvas-lms](https://github.com/DMontgomery40/mcp-canvas-lms) |
29
29
  |---|---|---|---|
30
30
  | Language | TypeScript | Python | TypeScript |
31
- | Tools | 117 | 80+ | 54 |
31
+ | Tools | 148 | 80+ | 54 |
32
32
  | License | [![License: MIT](https://img.shields.io/github/license/bruchris/canvas-lms-mcp)](https://github.com/bruchris/canvas-lms-mcp/blob/main/LICENSE) | [![License](https://img.shields.io/github/license/vishalsachdev/canvas-mcp)](https://github.com/vishalsachdev/canvas-mcp/blob/main/LICENSE) | [![License](https://img.shields.io/github/license/DMontgomery40/mcp-canvas-lms)](https://github.com/DMontgomery40/mcp-canvas-lms/blob/main/LICENSE) |
33
33
  | Last commit | [![Last commit](https://img.shields.io/github/last-commit/bruchris/canvas-lms-mcp)](https://github.com/bruchris/canvas-lms-mcp) | [![Last commit](https://img.shields.io/github/last-commit/vishalsachdev/canvas-mcp)](https://github.com/vishalsachdev/canvas-mcp) | [![Last commit](https://img.shields.io/github/last-commit/DMontgomery40/mcp-canvas-lms)](https://github.com/DMontgomery40/mcp-canvas-lms) |
34
34
 
@@ -85,36 +85,52 @@ Once configured, try these prompts with your AI client:
85
85
 
86
86
  ## Tool Inventory
87
87
 
88
- ### All Registered Tools (117)
88
+ ### All Registered Tools (148)
89
89
 
90
90
  | Category | Tools |
91
91
  |----------|-------|
92
92
  | Health | `health_check` |
93
93
  | Courses | `list_courses`, `get_course`, `get_syllabus`, `create_course`, `update_course` |
94
94
  | Assignments | `list_assignments`, `get_assignment`, `list_assignment_groups`, `create_assignment`, `update_assignment`, `delete_assignment` |
95
+ | Assignment Overrides | `list_assignment_overrides`, `create_assignment_override`, `set_student_assignment_dates` |
95
96
  | Submissions | `list_submissions`, `get_submission`, `grade_submission`, `comment_on_submission` |
96
- | Rubrics | `list_rubrics`, `get_rubric`, `get_rubric_assessment`, `submit_rubric_assessment` |
97
- | Quizzes | `list_quizzes`, `get_quiz`, `list_quiz_submissions`, `list_quiz_questions`, `get_quiz_submission_answers`, `score_quiz_question` |
97
+ | Submissions Awaiting Grading | `list_submissions_awaiting_grading` |
98
+ | Submission Files | `list_course_submission_files` |
99
+ | Rubrics | `list_rubrics`, `get_rubric`, `get_rubric_assessment`, `submit_rubric_assessment`, `create_rubric` |
100
+ | Quizzes | `list_quizzes`, `get_quiz`, `list_quiz_submissions`, `list_quiz_questions`, `get_quiz_submission_answers`, `score_quiz_question`, `get_quiz_submission_events` |
101
+ | Quiz Question Responses | `get_quiz_question_responses` |
102
+ | Quiz Accommodations | `list_student_quiz_accommodations`, `set_student_quiz_accommodation` |
98
103
  | New Quizzes (LTI) | `create_new_quiz`, `update_new_quiz`, `delete_new_quiz`, `list_new_quiz_items`, `get_new_quiz_item`, `create_new_quiz_item`, `update_new_quiz_item`, `delete_new_quiz_item` |
99
- | Files | `list_files`, `list_folders`, `get_file`, `upload_file`, `delete_file` |
104
+ | New Quiz Accommodations | `list_student_new_quiz_accommodations`, `set_student_new_quiz_accommodation` |
105
+ | Files | `list_files`, `list_folders`, `get_file`, `upload_file`, `download_file`, `delete_file`, `find_duplicate_files` |
100
106
  | Gradebook History | `list_gradebook_history_days`, `get_gradebook_history_day`, `list_gradebook_history_submissions`, `get_gradebook_history_feed` |
107
+ | Grade Explanation | `explain_grade` |
108
+ | Grading Policy | `explain_grading_policy` |
109
+ | Grade Projection | `project_grade` |
110
+ | Grading Standards | `list_grading_standards`, `create_grading_standard`, `apply_grading_standard_to_course` |
101
111
  | Users | `list_students`, `get_user`, `get_profile`, `search_users`, `list_course_users` |
102
112
  | Groups | `list_groups`, `list_group_members` |
103
- | Enrollments | `list_enrollments`, `enroll_user`, `remove_enrollment` |
113
+ | Enrollments | `list_enrollments`, `list_course_enrollments`, `enroll_user`, `remove_enrollment` |
104
114
  | Discussions | `list_discussions`, `get_discussion`, `list_announcements`, `post_discussion_entry`, `create_discussion`, `update_discussion`, `delete_discussion` |
105
115
  | Modules | `list_modules`, `get_module`, `list_module_items`, `get_course_structure`, `view_course_structure`, `create_module`, `update_module`, `create_module_item` |
106
116
  | Pages | `list_pages`, `get_page`, `create_page`, `update_page`, `delete_page` |
107
117
  | Calendar | `list_calendar_events`, `create_calendar_event`, `update_calendar_event` |
108
118
  | Conversations | `list_conversations`, `get_conversation`, `get_conversation_unread_count`, `send_conversation` |
109
119
  | Peer Reviews | `list_peer_reviews`, `get_submission_peer_reviews`, `create_peer_review`, `delete_peer_review` |
110
- | Accounts | `get_account`, `list_accounts`, `list_sub_accounts`, `list_account_courses`, `list_account_users`, `get_account_reports` |
111
- | Analytics | `search_course_content`, `get_course_analytics`, `get_student_analytics`, `get_course_activity_stream` |
120
+ | Accounts | `get_account`, `list_accounts`, `list_sub_accounts`, `list_account_courses`, `list_account_users`, `get_account_reports`, `list_account_notifications`, `view_account_notifications` |
121
+ | Analytics | `search_course_content`, `get_course_analytics`, `get_student_analytics`, `get_course_activity_stream`, `get_assignment_analytics` |
112
122
  | Outcomes | `get_root_outcome_group`, `list_outcome_groups`, `list_outcome_group_links`, `get_outcome_group`, `list_outcome_group_outcomes`, `list_outcome_group_subgroups`, `get_outcome`, `get_outcome_alignments`, `get_outcome_results`, `get_outcome_rollups`, `get_outcome_contributing_scores`, `get_outcome_mastery_distribution` |
113
- | Student | `get_my_courses`, `get_my_grades`, `get_my_submissions`, `get_my_upcoming_assignments` |
123
+ | Content Exports | `list_content_exports`, `get_content_export`, `create_content_export` |
124
+ | Course Setup | `check_course_setup` |
125
+ | Link Audit | `audit_course_links` |
126
+ | Accessibility Audit | `audit_course_accessibility` |
127
+ | Student | `get_my_courses`, `get_my_grades`, `get_my_submissions`, `get_my_upcoming_assignments`, `get_my_submission_feedback` |
128
+ | Student Search | `find_student_across_courses` |
114
129
  | Dashboard | `get_dashboard_cards`, `get_todo_items`, `get_upcoming_events`, `get_missing_submissions` |
130
+ | Attention | `list_submission_comments_needing_attention`, `list_students_needing_attention` |
115
131
  | FERPA (conditional) | `resolve_pseudonym` — registered only when `CANVAS_PSEUDONYMIZE_STUDENTS=true` |
116
132
 
117
- 82 tools are read-only and 35 tools perform Canvas write operations. When FERPA mode is enabled, `resolve_pseudonym` adds a 118th read tool.
133
+ 106 tools are read-only and 42 tools perform Canvas write operations. When FERPA mode is enabled, `resolve_pseudonym` adds a 149th read tool.
118
134
 
119
135
  All write tools require appropriate Canvas permissions. Canvas enforces its own permission model -- the MCP server does not bypass it.
120
136
 
@@ -219,6 +235,7 @@ const courses = await canvas.courses.list()
219
235
  | `serve` | -- | stdio mode | Switch to HTTP mode |
220
236
  | `--port` | -- | `3001` | HTTP server port |
221
237
  | `--allowed-origin` | `CANVAS_ALLOWED_ORIGIN` | `http://localhost:3000` | CORS allowed origin |
238
+ | `--role` | `CANVAS_ROLE` | (all tools) | Filter tools by Canvas role: `student`, `teacher`, or `admin` (see [Role-based tool filtering](#role-based-tool-filtering)) |
222
239
 
223
240
  ## Environment Variables
224
241
 
@@ -227,6 +244,7 @@ const courses = await canvas.courses.list()
227
244
  | `CANVAS_API_TOKEN` | Yes | Canvas personal access token |
228
245
  | `CANVAS_BASE_URL` | Yes | Canvas instance URL (e.g., `https://school.instructure.com`) |
229
246
  | `CANVAS_ALLOWED_ORIGIN` | No | CORS origin for HTTP mode (default: `http://localhost:3000`) |
247
+ | `CANVAS_ROLE` | No | Filter the tool list by role: `student`, `teacher`, or `admin` (see [Role-based tool filtering](#role-based-tool-filtering)) |
230
248
  | `CANVAS_PSEUDONYMIZE_STUDENTS` | No | Set to `true` to enable [FERPA mode](#ferpa-mode-student-pseudonymization) |
231
249
  | `CANVAS_PSEUDONYMIZE_REVERSE_LOOKUP` | No | Set to `true` (with `CANVAS_PSEUDONYMIZE_STUDENTS=true`) to register the `resolve_pseudonym` audit tool |
232
250
  | `CANVAS_PSEUDONYM_DIR` | No | Absolute path that overrides the default pseudonym map directory |
@@ -261,6 +279,36 @@ Optional `resolve_pseudonym` reverse-lookup tool: register it only by also setti
261
279
 
262
280
  Threat model and design rationale in [docs/superpowers/specs/2026-05-25-ferpa-pseudonymization.md](docs/superpowers/specs/2026-05-25-ferpa-pseudonymization.md).
263
281
 
282
+ ## Role-based tool filtering
283
+
284
+ Optionally narrow the tool list to a single Canvas role so an agent sees only the tools relevant to its user. This is a **client-side UX / context-reduction filter only** — Canvas still enforces real permissions server-side. Setting `CANVAS_ROLE=admin` does **not** grant admin powers; a 403 still comes from Canvas if the token lacks the scope.
285
+
286
+ ```bash
287
+ # stdio: env var or --role flag (flag wins)
288
+ CANVAS_ROLE=student canvas-lms-mcp --base-url https://school.instructure.com
289
+ canvas-lms-mcp --base-url https://school.instructure.com --role teacher
290
+ ```
291
+
292
+ Three roles, plus the default of "unset = every tool":
293
+
294
+ | `CANVAS_ROLE` | Tools exposed | Typical use |
295
+ |---------------|---------------|-------------|
296
+ | _(unset)_ | all (~121) | default; backwards-compatible |
297
+ | `student` | ~46 | a student's own courses, grades, submissions, and read-only course content |
298
+ | `teacher` | ~104 | grading, roster, content authoring, analytics |
299
+ | `admin` | ~116 | everything `teacher` sees plus account-level tools (`enroll_user`, `list_account_users`, …) |
300
+
301
+ Notes:
302
+
303
+ - **Equivalent to `CANVAS_ROLE` in [vishalsachdev/canvas-mcp](https://github.com/vishalsachdev/canvas-mcp)** — set the same value to migrate.
304
+ - Role values are **case-insensitive**; `all` is accepted as an explicit "no filter". An unrecognised value logs a warning to stderr and registers all tools (a config typo never stops the server).
305
+ - `teacher` / `admin` do **not** see the student-only `get_my_*` tools in v1 — they should use `list_submissions` / `get_submission` etc. instead.
306
+ - The FERPA `resolve_pseudonym` tool is `teacher`/`admin`-only and is never exposed to `student`, even when reverse lookup is enabled.
307
+ - **HTTP transport:** the role is read per request from the `X-Canvas-Role` header, falling back to `CANVAS_ROLE` from the server config. A valid header (or `all`) overrides the configured default; an invalid header is ignored with a warning.
308
+ - Tool counts above are a snapshot and grow as tools are added — the authoritative guarantee is that every tool resolves to exactly one audience (enforced by `tests/tools/audience-coverage.test.ts`).
309
+
310
+ Design rationale in [BRU-1530](https://github.com/bruchris/canvas-lms-mcp) (role taxonomy, why three roles, auto-detect deferred to v2).
311
+
264
312
  ## Development
265
313
 
266
314
  ```bash
@@ -1,5 +1,5 @@
1
1
  import type { CanvasHttpClient } from './client';
2
- import type { CanvasAccount, CanvasAccountReport, CanvasCourse, CanvasUser } from './types';
2
+ import type { CanvasAccount, CanvasAccountNotification, CanvasAccountReport, CanvasCourse, CanvasUser } from './types';
3
3
  export declare class AccountsModule {
4
4
  private client;
5
5
  constructor(client: CanvasHttpClient);
@@ -13,5 +13,6 @@ export declare class AccountsModule {
13
13
  search_term?: string;
14
14
  }): Promise<CanvasUser[]>;
15
15
  getReports(accountId: number): Promise<CanvasAccountReport[]>;
16
+ listNotifications(accountId: string): Promise<CanvasAccountNotification[]>;
16
17
  }
17
18
  //# sourceMappingURL=accounts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/canvas/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE3F,qBAAa,cAAc;IACb,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI9C,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIhC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI5D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAS1F,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAGpE"}
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/canvas/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EACV,aAAa,EACb,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACX,MAAM,SAAS,CAAA;AAEhB,qBAAa,cAAc;IACb,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI9C,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIhC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI5D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAS1F,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAI7D,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAKjF"}
@@ -1,5 +1,5 @@
1
1
  import type { CanvasHttpClient } from './client';
2
- import type { CanvasCourseActivitySummary, CanvasStudentActivitySummary, CanvasActivityStreamItem, CourseSearchResult } from './types';
2
+ import type { CanvasAssignmentAnalytics, CanvasCourseActivitySummary, CanvasStudentActivitySummary, CanvasActivityStreamItem, CanvasStudentSummary, CourseSearchResult } from './types';
3
3
  export declare const SEARCH_CONTENT_TYPES: readonly ["pages", "discussions", "assignments", "announcements"];
4
4
  export type SearchContentType = (typeof SEARCH_CONTENT_TYPES)[number];
5
5
  export declare class AnalyticsModule {
@@ -9,5 +9,7 @@ export declare class AnalyticsModule {
9
9
  getCourseActivity(courseId: number): Promise<CanvasCourseActivitySummary[]>;
10
10
  getStudentActivity(courseId: number, studentId: number): Promise<CanvasStudentActivitySummary>;
11
11
  getCourseActivityStream(courseId: number): Promise<CanvasActivityStreamItem[]>;
12
+ getStudentSummaries(courseId: number): Promise<CanvasStudentSummary[]>;
13
+ getAssignmentAnalytics(courseId: number): Promise<CanvasAssignmentAnalytics[]>;
12
14
  }
13
15
  //# sourceMappingURL=analytics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/canvas/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,oBAAoB,mEAKvB,CAAA;AACV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAErE,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0D1B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC;IAM3E,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,4BAA4B,CAAC;IAMlC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;CAKrF"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/canvas/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,oBAAoB,mEAKvB,CAAA;AACV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAErE,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA0D1B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC;IAM3E,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,4BAA4B,CAAC;IAMlC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAM9E,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAMtE,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAKrF"}
@@ -1,5 +1,5 @@
1
1
  import type { CanvasHttpClient } from './client';
2
- import type { CanvasAssignment, CanvasAssignmentGroup, CreateAssignmentParams, UpdateAssignmentParams } from './types';
2
+ import type { CanvasAssignment, CanvasAssignmentGroup, CanvasAssignmentOverride, CreateAssignmentOverrideParams, CreateAssignmentParams, UpdateAssignmentParams } from './types';
3
3
  export type AssignmentListInclude = 'submission' | 'assignment_visibility' | 'all_dates' | 'overrides' | 'observed_users' | 'can_edit' | 'score_statistics';
4
4
  export type AssignmentGetInclude = 'submission' | 'assignment_visibility' | 'overrides' | 'observed_users' | 'can_edit' | 'score_statistics' | 'all_dates';
5
5
  export type AssignmentBucket = 'past' | 'overdue' | 'undated' | 'ungraded' | 'unsubmitted' | 'upcoming' | 'future';
@@ -38,5 +38,7 @@ export declare class AssignmentsModule {
38
38
  create(courseId: number, params: CreateAssignmentParams): Promise<CanvasAssignment>;
39
39
  update(courseId: number, assignmentId: number, params: UpdateAssignmentParams): Promise<CanvasAssignment>;
40
40
  delete(courseId: number, assignmentId: number): Promise<void>;
41
+ listOverrides(courseId: number, assignmentId: number): Promise<CanvasAssignmentOverride[]>;
42
+ createOverride(courseId: number, assignmentId: number, params: CreateAssignmentOverrideParams): Promise<CanvasAssignmentOverride>;
41
43
  }
42
44
  //# sourceMappingURL=assignments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assignments.d.ts","sourceRoot":"","sources":["../../src/canvas/assignments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,qBAAqB,GAC7B,YAAY,GACZ,uBAAuB,GACvB,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,kBAAkB,CAAA;AAEtB,MAAM,MAAM,oBAAoB,GAC5B,YAAY,GACZ,uBAAuB,GACvB,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,kBAAkB,GAClB,WAAW,CAAA;AAEf,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,SAAS,GACT,SAAS,GACT,UAAU,GACV,aAAa,GACb,UAAU,GACV,QAAQ,CAAA;AAEZ,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE9D,MAAM,MAAM,sBAAsB,GAC9B,aAAa,GACb,kBAAkB,GAClB,WAAW,GACX,uBAAuB,GACvB,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,kBAAkB,CAAA;AAEtB,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,8BAA8B,CAAC,EAAE,OAAO,CAAA;IACxC,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAA;IAC7C,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,8BAA8B,CAAC,EAAE,OAAO,CAAA;IACxC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAA;IAC/C,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,mCAAmC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3D,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4BAA4B,CAAC,EAAE,OAAO,CAAA;CACvC;AAoBD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOtF,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAOtB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAO7B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOnF,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IAUtB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpE"}
1
+ {"version":3,"file":"assignments.d.ts","sourceRoot":"","sources":["../../src/canvas/assignments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { CanvasHttpClient } from './client';
2
+ import type { CanvasContentExport, ContentExportType } from './types';
3
+ /**
4
+ * Canvas `content_exports` API — exports a course (or its assessments) as a
5
+ * Common Cartridge / QTI / zip package. Exports are asynchronous: `create`
6
+ * starts the job and returns immediately; `get` polls until the package is ready
7
+ * and surfaces a time-limited `attachment.url` download link.
8
+ */
9
+ export declare class ContentExportsModule {
10
+ private client;
11
+ constructor(client: CanvasHttpClient);
12
+ /** Start a content export. Returns the export in its initial `created` state. */
13
+ create(courseId: number, exportType: ContentExportType): Promise<CanvasContentExport>;
14
+ /** Poll a single export's status; `attachment` is populated only once `exported`. */
15
+ get(courseId: number, exportId: number): Promise<CanvasContentExport>;
16
+ /** List all content exports for a course (most recent first, per Canvas). */
17
+ list(courseId: number): Promise<CanvasContentExport[]>;
18
+ }
19
+ //# sourceMappingURL=content-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-exports.d.ts","sourceRoot":"","sources":["../../src/canvas/content-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAErE;;;;;GAKG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAE5C,iFAAiF;IAC3E,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQ3F,qFAAqF;IAC/E,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM3E,6EAA6E;IACvE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAG7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../../src/canvas/courses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEnF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,oBAAoB,GAAG,WAAW,CAAA;AAEjF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAA;AAEvF,MAAM,MAAM,iBAAiB,GACzB,qBAAqB,GACrB,eAAe,GACf,oBAAoB,GACpB,cAAc,GACd,+BAA+B,GAC/B,iBAAiB,GACjB,MAAM,GACN,SAAS,GACT,iBAAiB,GACjB,UAAU,GACV,uBAAuB,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,eAAe,CAAA;AAEnB,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,oBAAoB,CAAA;AAExB,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;IACxC,KAAK,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;IACzC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAKD,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY5D,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOzE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOrD,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAQzD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;CAMlF"}
1
+ {"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../../src/canvas/courses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEnF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,oBAAoB,GAAG,WAAW,CAAA;AAEjF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAA;AAEvF,MAAM,MAAM,iBAAiB,GACzB,qBAAqB,GACrB,eAAe,GACf,oBAAoB,GACpB,cAAc,GACd,+BAA+B,GAC/B,iBAAiB,GACjB,MAAM,GACN,SAAS,GACT,iBAAiB,GACjB,UAAU,GACV,uBAAuB,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,eAAe,CAAA;AAEnB,MAAM,MAAM,gBAAgB,GAC1B,iBAAiB,GAAG,aAAa,GAAG,aAAa,GAAG,oBAAoB,CAAA;AAE1E,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;IACxC,KAAK,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;IACzC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAKD,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY5D,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOzE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOrD,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAQzD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;CAMlF"}
@@ -0,0 +1,19 @@
1
+ import type { CanvasHttpClient } from './client';
2
+ import type { CanvasGradingSchemeEntry, CanvasGradingStandard } from './types';
3
+ /**
4
+ * Canvas grading standards (letter-to-percentage grading schemes).
5
+ *
6
+ * Canvas API asymmetry: the GET/response key is `grading_scheme` (plural),
7
+ * while the POST body key is `grading_scheme_entry` (singular). The POST body
8
+ * is flat — there is no `grading_standard:` wrapper. List endpoints return a
9
+ * plain JSON array, so we use `client.paginate` (not `paginateEnvelope`).
10
+ */
11
+ export declare class GradingStandardsModule {
12
+ private client;
13
+ constructor(client: CanvasHttpClient);
14
+ listForCourse(courseId: number): Promise<CanvasGradingStandard[]>;
15
+ listForAccount(accountId: number): Promise<CanvasGradingStandard[]>;
16
+ createForCourse(courseId: number, title: string, schemeEntries: CanvasGradingSchemeEntry[]): Promise<CanvasGradingStandard>;
17
+ createForAccount(accountId: number, title: string, schemeEntries: CanvasGradingSchemeEntry[]): Promise<CanvasGradingStandard>;
18
+ }
19
+ //# sourceMappingURL=grading-standards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grading-standards.d.ts","sourceRoot":"","sources":["../../src/canvas/grading-standards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAE9E;;;;;;;GAOG;AACH,qBAAa,sBAAsB;IACrB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAMjE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAMnE,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,wBAAwB,EAAE,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAW3B,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,wBAAwB,EAAE,GACxC,OAAO,CAAC,qBAAqB,CAAC;CAUlC"}
@@ -1,17 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk22DWAWDCcjs = require('../chunk-22DWAWDC.cjs');
3
+ var _chunkBO3L254Hcjs = require('../chunk-BO3L254H.cjs');
4
4
 
5
5
 
6
6
 
7
7
 
8
8
 
9
- var _chunkNJOPOZP7cjs = require('../chunk-NJOPOZP7.cjs');
9
+ var _chunkCNCIHAPScjs = require('../chunk-CNCIHAPS.cjs');
10
10
 
11
11
 
12
12
 
13
13
 
14
14
 
15
15
 
16
- exports.CanvasApiError = _chunkNJOPOZP7cjs.CanvasApiError; exports.CanvasClient = _chunk22DWAWDCcjs.CanvasClient; exports.CanvasHttpClient = _chunkNJOPOZP7cjs.CanvasHttpClient; exports.appendCanvasQuery = _chunkNJOPOZP7cjs.appendCanvasQuery; exports.toCanvasQuery = _chunkNJOPOZP7cjs.toCanvasQuery;
16
+ exports.CanvasApiError = _chunkCNCIHAPScjs.CanvasApiError; exports.CanvasClient = _chunkBO3L254Hcjs.CanvasClient; exports.CanvasHttpClient = _chunkCNCIHAPScjs.CanvasHttpClient; exports.appendCanvasQuery = _chunkCNCIHAPScjs.appendCanvasQuery; exports.toCanvasQuery = _chunkCNCIHAPScjs.toCanvasQuery;
17
17
  //# sourceMappingURL=index.cjs.map
@@ -20,6 +20,9 @@ import { DashboardModule } from './dashboard';
20
20
  import { OutcomesModule } from './outcomes';
21
21
  import { GradebookHistoryModule } from './gradebook-history';
22
22
  import { NewQuizzesModule } from './new-quizzes';
23
+ import { ContentExportsModule } from './content-exports';
24
+ import { GradingStandardsModule } from './grading-standards';
25
+ import { LatePolicyModule } from './late-policy';
23
26
  /**
24
27
  * Standalone Canvas REST API client. Composed of modular per-domain classes
25
28
  * sharing a `CanvasHttpClient`. Throws `CanvasApiError` on Canvas-side failures.
@@ -55,6 +58,9 @@ export declare class CanvasClient {
55
58
  outcomes: OutcomesModule;
56
59
  gradebookHistory: GradebookHistoryModule;
57
60
  newQuizzes: NewQuizzesModule;
61
+ contentExports: ContentExportsModule;
62
+ gradingStandards: GradingStandardsModule;
63
+ latePolicy: LatePolicyModule;
58
64
  constructor(config: CanvasClientConfig);
59
65
  }
60
66
  export { CanvasHttpClient, CanvasApiError } from './client';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD;;;;;;;;;;;GAWG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,EAAE,aAAa,CAAA;IACtB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,WAAW,EAAE,iBAAiB,CAAA;IAC9B,OAAO,EAAE,aAAa,CAAA;IACtB,OAAO,EAAE,aAAa,CAAA;IACtB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,WAAW,EAAE,iBAAiB,CAAA;IAC9B,OAAO,EAAE,aAAa,CAAA;IACtB,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,EAAE,cAAc,CAAA;IACxB,aAAa,EAAE,mBAAmB,CAAA;IAClC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,eAAe,CAAA;IAC1B,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,EAAE,cAAc,CAAA;IACxB,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,UAAU,EAAE,gBAAgB,CAAA;gBAEhB,MAAM,EAAE,kBAAkB;CAwBvC;AAED,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC1D,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACxF,mBAAmB,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  CanvasClient
3
- } from "../chunk-ICLQ42RW.js";
3
+ } from "../chunk-67BU5T76.js";
4
4
  import {
5
5
  CanvasApiError,
6
6
  CanvasHttpClient,
7
7
  appendCanvasQuery,
8
8
  toCanvasQuery
9
- } from "../chunk-BDB7U4WG.js";
9
+ } from "../chunk-KKGSG3GA.js";
10
10
  export {
11
11
  CanvasApiError,
12
12
  CanvasClient,
@@ -0,0 +1,16 @@
1
+ import type { CanvasHttpClient } from './client';
2
+ import type { CanvasLatePolicy } from './types';
3
+ /**
4
+ * Canvas late/missing submission policy for a course.
5
+ *
6
+ * The response is an envelope — `{ "late_policy": { ... } }` — so `get` unwraps
7
+ * the inner object before returning it. Throws `CanvasApiError` on failure
8
+ * (notably 403 for student tokens and 404 when no policy row exists yet); the
9
+ * caller decides how to handle those statuses.
10
+ */
11
+ export declare class LatePolicyModule {
12
+ private client;
13
+ constructor(client: CanvasHttpClient);
14
+ get(courseId: number): Promise<CanvasLatePolicy>;
15
+ }
16
+ //# sourceMappingURL=late-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"late-policy.d.ts","sourceRoot":"","sources":["../../src/canvas/late-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAMvD"}
@@ -4,6 +4,15 @@ export declare class ModulesModule {
4
4
  private client;
5
5
  constructor(client: CanvasHttpClient);
6
6
  list(courseId: number): Promise<CanvasModule[]>;
7
+ /**
8
+ * List a course's modules with each module's items inlined via `include[]=items`.
9
+ * Unlike `getCourseStructure`, this returns the raw Canvas shapes (including the
10
+ * `published` state on every module and item, even unpublished ones), which the
11
+ * course-setup health check needs to detect unpublished content.
12
+ */
13
+ listWithItems(courseId: number): Promise<(CanvasModule & {
14
+ items?: CanvasModuleItem[];
15
+ })[]>;
7
16
  get(courseId: number, moduleId: number): Promise<CanvasModule>;
8
17
  listItems(courseId: number, moduleId: number): Promise<CanvasModuleItem[]>;
9
18
  create(courseId: number, params: {
@@ -1 +1 @@
1
- {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../src/canvas/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpF,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI/C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAM1E,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;KACnC,GACA,OAAO,CAAC,YAAY,CAAC;IAOlB,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAChE,OAAO,CAAC,YAAY,CAAC;IAOlB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACA,OAAO,CAAC,gBAAgB,CAAC;IAUtB,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;QAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC7E,OAAO,CAAC,qBAAqB,CAAC;CAkDlC"}
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../src/canvas/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpF,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIrD;;;;;OAKG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,YAAY,GAAG;QAAE,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,EAAE,CAAC;IAOvD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAM1E,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;KACnC,GACA,OAAO,CAAC,YAAY,CAAC;IAOlB,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAChE,OAAO,CAAC,YAAY,CAAC;IAOlB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACA,OAAO,CAAC,gBAAgB,CAAC;IAUtB,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;QAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC7E,OAAO,CAAC,qBAAqB,CAAC;CAkDlC"}
@@ -1,5 +1,5 @@
1
- import type { CanvasHttpClient } from './client';
2
- import type { CanvasNewQuiz, CanvasNewQuizItem } from './types';
1
+ import { type CanvasHttpClient } from './client';
2
+ import type { CanvasNewQuiz, CanvasNewQuizAccommodation, CanvasNewQuizItem } from './types';
3
3
  export interface NewQuizPayload {
4
4
  title?: string;
5
5
  instructions?: string | null;
@@ -80,6 +80,9 @@ export declare class NewQuizzesModule {
80
80
  createItem(courseId: number, assignmentId: number, input: NewQuizItemCreatePayload): Promise<CanvasNewQuizItem>;
81
81
  updateItem(courseId: number, assignmentId: number, itemId: string, patch: NewQuizItemUpdatePayload): Promise<CanvasNewQuizItem>;
82
82
  deleteItem(courseId: number, assignmentId: number, itemId: string): Promise<void>;
83
+ setAccommodation(courseId: number, userId: number, timeMultiplier?: number, extraAttempts?: number): Promise<CanvasNewQuizAccommodation>;
84
+ setQuizAccommodation(courseId: number, assignmentId: number, userId: number, timeMultiplier?: number, extraAttempts?: number): Promise<CanvasNewQuizAccommodation>;
85
+ getAccommodation(courseId: number, userId: number): Promise<CanvasNewQuizAccommodation | null>;
83
86
  private toWireItem;
84
87
  private choiceToWire;
85
88
  private trueFalseToWire;
@@ -1 +1 @@
1
- {"version":3,"file":"new-quizzes.d.ts","sourceRoot":"","sources":["../../src/canvas/new-quizzes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new-quizzes.d.ts","sourceRoot":"","sources":["../../src/canvas/new-quizzes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3F,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,KAAK,UAAU,GAAG;IAChB,qBAAqB,EAAE,QAAQ,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,qBAAqB,EAAE,YAAY,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,qBAAqB,EAAE,OAAO,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,qBAAqB,EAAE,UAAU,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA;AAED,KAAK,aAAa,GACd;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3D,KAAK,WAAW,GAAG;IACjB,qBAAqB,EAAE,SAAS,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,aAAa,EAAE,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAAA;AAElG,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,gBAAgB,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,gBAAgB,CAAA;CACxB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAOzE,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,aAAa,CAAC;IAOnB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM/E,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IAMvB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,iBAAiB,CAAC;IAavB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,iBAAiB,CAAC;IAWvB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjF,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,0BAA0B,CAAC;IAUhC,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,0BAA0B,CAAC;IAUhC,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IAW7C,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,aAAa;CA2BtB"}
@@ -5,6 +5,14 @@ export declare class PagesModule {
5
5
  constructor(client: CanvasHttpClient);
6
6
  list(courseId: number): Promise<CanvasPage[]>;
7
7
  get(courseId: number, pageUrl: string): Promise<CanvasPage>;
8
+ /**
9
+ * List every page in a course with its full HTML `body`. The paginated list
10
+ * endpoint returns page stubs without `body`, so this fans out a `get()` per
11
+ * page (mirroring the `listWithItems` pattern in `modules.ts`). Used by the
12
+ * link-audit tool to scan page content. `CanvasApiError` from either the list
13
+ * or any individual fetch propagates unchanged.
14
+ */
15
+ listWithBodies(courseId: number): Promise<CanvasPage[]>;
8
16
  create(courseId: number, params: {
9
17
  title: string;
10
18
  body?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/canvas/pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAM3D,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,UAAU,CAAC;IAOhB,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACrF,OAAO,CAAC,UAAU,CAAC;IAUhB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAM/D"}
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/canvas/pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMjE;;;;;;OAMG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKvD,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,UAAU,CAAC;IAOhB,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACrF,OAAO,CAAC,UAAU,CAAC;IAUhB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAM/D"}
@@ -1,5 +1,5 @@
1
1
  import type { CanvasHttpClient } from './client';
2
- import type { CanvasQuiz, CanvasQuizSubmission, CanvasQuizQuestion, CanvasQuizSubmissionQuestion } from './types';
2
+ import type { CanvasQuiz, CanvasQuizSubmission, CanvasQuizQuestion, CanvasQuizSubmissionQuestion, CanvasQuizSubmissionEvent, CanvasQuizExtension } from './types';
3
3
  export declare class QuizzesModule {
4
4
  private client;
5
5
  constructor(client: CanvasHttpClient);
@@ -9,5 +9,14 @@ export declare class QuizzesModule {
9
9
  listQuestions(courseId: number, quizId: number): Promise<CanvasQuizQuestion[]>;
10
10
  getSubmissionAnswers(quizSubmissionId: number): Promise<CanvasQuizSubmissionQuestion[]>;
11
11
  scoreQuestion(courseId: number, quizId: number, submissionId: number, questionId: number, score: number, comment?: string, attempt?: number): Promise<void>;
12
+ getSubmissionEvents(courseId: number, quizId: number, submissionId: number, attempt?: number): Promise<CanvasQuizSubmissionEvent[]>;
13
+ /**
14
+ * Apply a quiz extension (extra time / extra attempts) for one student on one
15
+ * Classic Quiz via `POST /courses/:id/quizzes/:id/extensions`. Canvas accepts a
16
+ * batch (`quiz_extensions` array), but callers operate per-student-per-quiz, so
17
+ * the array always holds a single element. Omitted fields are left out of the
18
+ * body — never pass `extra_time: 0` (Canvas rejects zero/negative extensions).
19
+ */
20
+ setExtension(courseId: number, quizId: number, userId: number, extra_time?: number, extra_attempts?: number): Promise<CanvasQuizExtension[]>;
12
21
  }
13
22
  //# sourceMappingURL=quizzes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quizzes.d.ts","sourceRoot":"","sources":["../../src/canvas/quizzes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC7B,MAAM,SAAS,CAAA;AAEhB,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI1D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAOlF,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAM9E,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAQvF,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;CAoBjB"}
1
+ {"version":3,"file":"quizzes.d.ts","sourceRoot":"","sources":["../../src/canvas/quizzes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EAEzB,mBAAmB,EACpB,MAAM,SAAS,CAAA;AAEhB,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI1D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAOlF,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAM9E,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAQvF,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAqBV,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAcvC;;;;;;OAMG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAalC"}
@@ -18,6 +18,15 @@ export interface ListSubmissionsOptions {
18
18
  export interface GetSubmissionOptions {
19
19
  include?: ReadonlyArray<SubmissionGetInclude>;
20
20
  }
21
+ export interface ListStudentSubmissionsOptions {
22
+ student_ids?: ReadonlyArray<number | 'all'>;
23
+ assignment_ids?: ReadonlyArray<number>;
24
+ include?: ReadonlyArray<SubmissionListInclude>;
25
+ workflow_state?: SubmissionWorkflowState;
26
+ }
27
+ export interface ListMySubmissionsOptions {
28
+ include?: ReadonlyArray<SubmissionListInclude>;
29
+ }
21
30
  export declare class SubmissionsModule {
22
31
  private client;
23
32
  constructor(client: CanvasHttpClient);
@@ -25,6 +34,7 @@ export declare class SubmissionsModule {
25
34
  get(courseId: number, assignmentId: number, userId: number, opts?: GetSubmissionOptions): Promise<CanvasSubmission>;
26
35
  grade(courseId: number, assignmentId: number, userId: number, grade: string): Promise<CanvasSubmission>;
27
36
  comment(courseId: number, assignmentId: number, userId: number, comment: string): Promise<CanvasSubmission>;
28
- listMy(courseId: number): Promise<CanvasSubmission[]>;
37
+ listMy(courseId: number, opts?: ListMySubmissionsOptions): Promise<CanvasSubmission[]>;
38
+ listForStudents(courseId: number, opts?: ListStudentSubmissionsOptions): Promise<CanvasSubmission[]>;
29
39
  }
30
40
  //# sourceMappingURL=submissions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"submissions.d.ts","sourceRoot":"","sources":["../../src/canvas/submissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,OAAO,GACP,aAAa,GACb,4BAA4B,CAAA;AAEhC,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,aAAa,CAAA;AAEjB,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,gBAAgB,CAAA;AAE/F,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAC9C,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC5C,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,uBAAuB,CAAA;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAA;CAC9C;AAqBD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOxB,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAQtB,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC;IAUtB,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAYtB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAM5D"}
1
+ {"version":3,"file":"submissions.d.ts","sourceRoot":"","sources":["../../src/canvas/submissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,OAAO,GACP,aAAa,GACb,4BAA4B,CAAA;AAEhC,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,aAAa,CAAA;AAEjB,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,gBAAgB,CAAA;AAE/F,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAC9C,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC5C,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,uBAAuB,CAAA;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,CAAA;IAC3C,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,OAAO,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAC9C,cAAc,CAAC,EAAE,uBAAuB,CAAA;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;CAC/C;AAqBD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAEtC,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOxB,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAQtB,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC;IAUtB,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAYtB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,wBAA6B,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAS1F,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,6BAAkC,GACvC,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAa/B"}