@falkenslab/moodle-driver 0.4.0 → 0.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 (182) hide show
  1. package/README.md +3 -2
  2. package/dist/areas/activities/build.d.ts +47 -10
  3. package/dist/areas/activities/build.js +157 -24
  4. package/dist/areas/activities/build.js.map +1 -1
  5. package/dist/areas/activities/conditions.d.ts +77 -0
  6. package/dist/areas/activities/conditions.js +216 -0
  7. package/dist/areas/activities/conditions.js.map +1 -0
  8. package/dist/areas/activities/content.d.ts +3 -0
  9. package/dist/areas/activities/content.js +1 -0
  10. package/dist/areas/activities/content.js.map +1 -1
  11. package/dist/areas/assignments/grader.d.ts +32 -0
  12. package/dist/areas/assignments/grader.js +66 -2
  13. package/dist/areas/assignments/grader.js.map +1 -1
  14. package/dist/areas/assignments/grading.d.ts +69 -6
  15. package/dist/areas/assignments/grading.js +173 -13
  16. package/dist/areas/assignments/grading.js.map +1 -1
  17. package/dist/areas/assignments/student.d.ts +14 -0
  18. package/dist/areas/assignments/student.js +43 -2
  19. package/dist/areas/assignments/student.js.map +1 -1
  20. package/dist/areas/backup/backup.d.ts +86 -0
  21. package/dist/areas/backup/backup.js +368 -0
  22. package/dist/areas/backup/backup.js.map +1 -0
  23. package/dist/areas/calendar/calendar.d.ts +27 -0
  24. package/dist/areas/calendar/calendar.js +115 -9
  25. package/dist/areas/calendar/calendar.js.map +1 -1
  26. package/dist/areas/completion/completion.d.ts +3 -0
  27. package/dist/areas/completion/completion.js.map +1 -1
  28. package/dist/areas/courses/list.d.ts +2 -0
  29. package/dist/areas/courses/list.js.map +1 -1
  30. package/dist/areas/courses/reset.d.ts +51 -0
  31. package/dist/areas/courses/reset.js +123 -0
  32. package/dist/areas/courses/reset.js.map +1 -0
  33. package/dist/areas/courses/state.d.ts +17 -0
  34. package/dist/areas/courses/state.js +37 -6
  35. package/dist/areas/courses/state.js.map +1 -1
  36. package/dist/areas/courses/structure.d.ts +14 -2
  37. package/dist/areas/courses/structure.js +11 -5
  38. package/dist/areas/courses/structure.js.map +1 -1
  39. package/dist/areas/forums/discussions.d.ts +8 -0
  40. package/dist/areas/forums/discussions.js +10 -0
  41. package/dist/areas/forums/discussions.js.map +1 -1
  42. package/dist/areas/forums/grading.d.ts +49 -0
  43. package/dist/areas/forums/grading.js +125 -0
  44. package/dist/areas/forums/grading.js.map +1 -0
  45. package/dist/areas/forums/posts.d.ts +37 -0
  46. package/dist/areas/forums/posts.js +141 -6
  47. package/dist/areas/forums/posts.js.map +1 -1
  48. package/dist/areas/grades/export.d.ts +38 -0
  49. package/dist/areas/grades/export.js +88 -0
  50. package/dist/areas/grades/export.js.map +1 -0
  51. package/dist/areas/grades/gradebook.d.ts +50 -0
  52. package/dist/areas/grades/gradebook.js +120 -0
  53. package/dist/areas/grades/gradebook.js.map +1 -1
  54. package/dist/areas/grades/singleview.d.ts +39 -0
  55. package/dist/areas/grades/singleview.js +186 -0
  56. package/dist/areas/grades/singleview.js.map +1 -0
  57. package/dist/areas/h5p/h5p.d.ts +2 -0
  58. package/dist/areas/h5p/h5p.js +12 -7
  59. package/dist/areas/h5p/h5p.js.map +1 -1
  60. package/dist/areas/lessons/lessons.d.ts +1 -0
  61. package/dist/areas/lessons/lessons.js.map +1 -1
  62. package/dist/areas/messages/messages.d.ts +36 -1
  63. package/dist/areas/messages/messages.js +60 -4
  64. package/dist/areas/messages/messages.js.map +1 -1
  65. package/dist/areas/participants/enrolments.d.ts +60 -0
  66. package/dist/areas/participants/enrolments.js +218 -0
  67. package/dist/areas/participants/enrolments.js.map +1 -0
  68. package/dist/areas/participants/groups.d.ts +75 -0
  69. package/dist/areas/participants/groups.js +201 -0
  70. package/dist/areas/participants/groups.js.map +1 -0
  71. package/dist/areas/participants/methods.d.ts +56 -0
  72. package/dist/areas/participants/methods.js +154 -0
  73. package/dist/areas/participants/methods.js.map +1 -0
  74. package/dist/areas/participants/participants.d.ts +11 -0
  75. package/dist/areas/participants/participants.js +24 -19
  76. package/dist/areas/participants/participants.js.map +1 -1
  77. package/dist/areas/questions/banks.d.ts +36 -1
  78. package/dist/areas/questions/banks.js +140 -17
  79. package/dist/areas/questions/banks.js.map +1 -1
  80. package/dist/areas/quizzes/attempts.d.ts +2 -0
  81. package/dist/areas/quizzes/attempts.js +9 -0
  82. package/dist/areas/quizzes/attempts.js.map +1 -1
  83. package/dist/areas/quizzes/grading.d.ts +50 -0
  84. package/dist/areas/quizzes/grading.js +131 -0
  85. package/dist/areas/quizzes/grading.js.map +1 -0
  86. package/dist/areas/quizzes/results.d.ts +3 -0
  87. package/dist/areas/quizzes/results.js +2 -1
  88. package/dist/areas/quizzes/results.js.map +1 -1
  89. package/dist/areas/quizzes/structure.d.ts +65 -9
  90. package/dist/areas/quizzes/structure.js +222 -23
  91. package/dist/areas/quizzes/structure.js.map +1 -1
  92. package/dist/areas/ratings/ratings.d.ts +26 -0
  93. package/dist/areas/ratings/ratings.js +108 -0
  94. package/dist/areas/ratings/ratings.js.map +1 -0
  95. package/dist/areas/reports/dates.d.ts +18 -0
  96. package/dist/areas/reports/dates.js +134 -0
  97. package/dist/areas/reports/dates.js.map +1 -0
  98. package/dist/areas/reports/reports.d.ts +143 -0
  99. package/dist/areas/reports/reports.js +267 -0
  100. package/dist/areas/reports/reports.js.map +1 -0
  101. package/dist/areas/scorm/scorm.d.ts +1 -0
  102. package/dist/areas/scorm/scorm.js.map +1 -1
  103. package/dist/areas/site/users.d.ts +7 -1
  104. package/dist/areas/site/users.js +9 -2
  105. package/dist/areas/site/users.js.map +1 -1
  106. package/dist/areas/surveys/choice.d.ts +2 -0
  107. package/dist/areas/surveys/choice.js +6 -3
  108. package/dist/areas/surveys/choice.js.map +1 -1
  109. package/dist/areas/surveys/surveys.d.ts +3 -0
  110. package/dist/areas/surveys/surveys.js +1 -0
  111. package/dist/areas/surveys/surveys.js.map +1 -1
  112. package/dist/areas/workshops/workshops.d.ts +133 -0
  113. package/dist/areas/workshops/workshops.js +335 -0
  114. package/dist/areas/workshops/workshops.js.map +1 -0
  115. package/dist/browser/background.d.ts +43 -0
  116. package/dist/browser/background.js +164 -0
  117. package/dist/browser/background.js.map +1 -0
  118. package/dist/browser/host.d.ts +30 -0
  119. package/dist/browser/host.js +373 -0
  120. package/dist/browser/host.js.map +1 -0
  121. package/dist/browser/manager.d.ts +9 -0
  122. package/dist/browser/manager.js +8 -0
  123. package/dist/browser/manager.js.map +1 -1
  124. package/dist/categories.d.ts +1 -0
  125. package/dist/categories.js +67 -0
  126. package/dist/categories.js.map +1 -1
  127. package/dist/cli/args.d.ts +8 -0
  128. package/dist/cli/args.js +49 -0
  129. package/dist/cli/args.js.map +1 -1
  130. package/dist/cli/background.d.ts +23 -0
  131. package/dist/cli/background.js +128 -0
  132. package/dist/cli/background.js.map +1 -0
  133. package/dist/cli/command.d.ts +66 -0
  134. package/dist/cli/command.js +328 -0
  135. package/dist/cli/command.js.map +1 -0
  136. package/dist/cli/commands.generated.js +2636 -578
  137. package/dist/cli/commands.generated.js.map +1 -1
  138. package/dist/cli/config.d.ts +2 -0
  139. package/dist/cli/config.js +2 -0
  140. package/dist/cli/config.js.map +1 -1
  141. package/dist/cli/main.js +30 -10
  142. package/dist/cli/main.js.map +1 -1
  143. package/dist/cli/run.d.ts +3 -14
  144. package/dist/cli/run.js +9 -185
  145. package/dist/cli/run.js.map +1 -1
  146. package/dist/cli/shell.d.ts +9 -0
  147. package/dist/cli/shell.js +233 -0
  148. package/dist/cli/shell.js.map +1 -0
  149. package/dist/client.d.ts +71 -8
  150. package/dist/client.js +75 -8
  151. package/dist/client.js.map +1 -1
  152. package/dist/core/errors.d.ts +1 -1
  153. package/dist/core/errors.js.map +1 -1
  154. package/dist/core/files.d.ts +5 -0
  155. package/dist/core/files.js +7 -3
  156. package/dist/core/files.js.map +1 -1
  157. package/dist/core/forms.d.ts +33 -3
  158. package/dist/core/forms.js +105 -8
  159. package/dist/core/forms.js.map +1 -1
  160. package/dist/core/http.d.ts +7 -0
  161. package/dist/core/http.js +28 -7
  162. package/dist/core/http.js.map +1 -1
  163. package/dist/core/login.d.ts +3 -0
  164. package/dist/core/login.js +2 -0
  165. package/dist/core/login.js.map +1 -1
  166. package/dist/core/session.d.ts +12 -1
  167. package/dist/core/session.js +12 -1
  168. package/dist/core/session.js.map +1 -1
  169. package/dist/index.d.ts +35 -11
  170. package/dist/index.js +32 -12
  171. package/dist/index.js.map +1 -1
  172. package/dist/internals.d.ts +9 -1
  173. package/dist/internals.js +9 -4
  174. package/dist/internals.js.map +1 -1
  175. package/dist/options.d.ts +2 -0
  176. package/dist/options.js.map +1 -1
  177. package/dist/testing/fakeMoodle.d.ts +9 -2
  178. package/dist/testing/fakeMoodle.js +5 -3
  179. package/dist/testing/fakeMoodle.js.map +1 -1
  180. package/dist/testing/index.d.ts +7 -0
  181. package/dist/testing/index.js.map +1 -1
  182. package/package.json +2 -1
@@ -0,0 +1,233 @@
1
+ // `moodle shell`: command lines typed one after another on one Moodle object, so the browser stays open
2
+ // between them and, with `--show`, a person watches each act in the same window. Each line runs as
3
+ // `moodle <line>` would (the same parsing and output, `runLine`).
4
+ import { appendFileSync, mkdirSync, readFileSync } from "node:fs";
5
+ import path from "node:path";
6
+ import { createInterface } from "node:readline";
7
+ import { GLOBAL_FLAGS, UsageError, findCommand, kebab, splitLine, tokenize } from "./args.js";
8
+ import { allowedCategories, closeSession, openSession, overview, report, runLine, targetOf } from "./command.js";
9
+ import { COMMANDS } from "./commands.generated.js";
10
+ /** The shell's own words, besides the commands, `sites`, `forget` and `help`. */
11
+ const SHELL_WORDS = ["exit", "quit", "show", "hide", "use"];
12
+ const HISTORY_SIZE = 500;
13
+ const SHELL_HELP = [
14
+ "In the shell, every command runs as `moodle <command>` would, on one browser kept open:",
15
+ " show / hide Shows the browser and follows each page a command opens, or hides it",
16
+ " use <site> [--as name] Works on another site or profile (the browser reopens on it)",
17
+ " login --as <name> Logs in with another profile, and goes on with it",
18
+ " help [command], exit Help, and leaving (also quit or Ctrl+D; Ctrl+C clears the line)",
19
+ "",
20
+ ].join("\n");
21
+ /** The command names and options a line can go on with, for Tab. */
22
+ export function complete(line) {
23
+ const words = line.trimStart().split(/\s+/);
24
+ const word = words[words.length - 1];
25
+ if (words.length === 1) {
26
+ const names = [...SHELL_WORDS, "help", "sites", "forget", "open", "close", ...COMMANDS.map((c) => kebab(c.name))].sort();
27
+ return [names.filter((n) => n.startsWith(word)), word];
28
+ }
29
+ if (word.startsWith("-")) {
30
+ const command = findCommand(COMMANDS, words[0]);
31
+ const options = [...(command?.options?.fields ?? []).map((f) => `--${kebab(f.name)}`), ...(command?.options ? ["--json"] : []), ...GLOBAL_FLAGS];
32
+ return [[...new Set(options)].filter((o) => o.startsWith(word)).sort(), word];
33
+ }
34
+ if (words[0] === "help" && words.length === 2)
35
+ return [COMMANDS.map((c) => kebab(c.name)).filter((n) => n.startsWith(word)), word];
36
+ return [[], word];
37
+ }
38
+ /** The prompt: the site's host and the profile, when known. */
39
+ function prompt(deps, session) {
40
+ try {
41
+ const target = targetOf(deps, session);
42
+ if (target)
43
+ return `moodle ${new URL(target.site).host} ${target.name ?? path.basename(target.profileDir)}> `;
44
+ }
45
+ catch {
46
+ // A site or profile that doesn't fit: the line that uses it will say why.
47
+ }
48
+ return "moodle> ";
49
+ }
50
+ function loadHistory(file) {
51
+ try {
52
+ // readline wants the latest first.
53
+ return readFileSync(file, "utf8").split("\n").filter(Boolean).slice(-HISTORY_SIZE).reverse();
54
+ }
55
+ catch {
56
+ return [];
57
+ }
58
+ }
59
+ /** Lines as they're typed (or read from a script), one at a time: `undefined` once the input ends. */
60
+ function lineReader(rl) {
61
+ const queued = [];
62
+ let ended = false;
63
+ let waiting;
64
+ rl.on("line", (line) => {
65
+ if (waiting) {
66
+ const resolve = waiting;
67
+ waiting = undefined;
68
+ resolve(line);
69
+ }
70
+ else
71
+ queued.push(line);
72
+ });
73
+ rl.on("close", () => {
74
+ ended = true;
75
+ waiting?.(undefined);
76
+ waiting = undefined;
77
+ });
78
+ return () => {
79
+ if (queued.length > 0)
80
+ return Promise.resolve(queued.shift());
81
+ if (ended)
82
+ return Promise.resolve(undefined);
83
+ return new Promise((resolve) => (waiting = resolve));
84
+ };
85
+ }
86
+ /**
87
+ * `moodle shell [--site …] [--as …] [--profile …] [--show] [--allow …] [--json]`: reads command lines
88
+ * until `exit`, `quit` or the end of the input, running each on one Moodle object; closes the browser
89
+ * (saving the session) when it ends. Exit status 0 when left normally, 2 for a shell line that doesn't fit.
90
+ */
91
+ export async function shell(argv, deps) {
92
+ const session = { defaults: {}, show: false };
93
+ try {
94
+ const { global, positionals, flags } = splitLine(argv, undefined);
95
+ if (global.help) {
96
+ deps.stdout(`Usage: moodle shell [--site <url>] [--as <name>] [--profile <dir>] [--show] [--allow <list>] [--json]\n\n${SHELL_HELP}`.trimEnd());
97
+ return 0;
98
+ }
99
+ if (positionals.length > 0 || flags.size > 0)
100
+ throw new UsageError(`shell takes only the global options, not ${[...positionals, ...[...flags.keys()].map((f) => `--${kebab(f)}`)].join(" ")}.`);
101
+ if (global.allow)
102
+ allowedCategories(global.allow);
103
+ session.defaults = { site: global.site, as: global.as, profile: global.profile, allow: global.allow, json: global.json };
104
+ session.show = global.show;
105
+ }
106
+ catch (error) {
107
+ return report(deps, error);
108
+ }
109
+ const input = deps.input ?? process.stdin;
110
+ const terminal = deps.terminal ?? false;
111
+ const historyFile = path.join(deps.home, "history");
112
+ const rl = createInterface({ input, output: deps.output, terminal, completer: complete, history: loadHistory(historyFile), historySize: HISTORY_SIZE, removeHistoryDuplicates: true });
113
+ const next = lineReader(rl);
114
+ let busy = false;
115
+ rl.on("SIGINT", () => {
116
+ if (busy) {
117
+ deps.stderr("A command can't be stopped halfway: it ends on its own (exit after it to leave).");
118
+ return;
119
+ }
120
+ // Ctrl+C drops the line being typed, not the session.
121
+ rl.write(null, { ctrl: true, name: "u" });
122
+ deps.output?.write("^C\n");
123
+ rl.setPrompt(prompt(deps, session));
124
+ rl.prompt();
125
+ });
126
+ try {
127
+ if (terminal)
128
+ deps.stderr("moodle shell: commands as `moodle <command>`; `help` lists them, `exit` leaves.");
129
+ if (session.show) {
130
+ // The window opens at once, to watch from the first command.
131
+ await openSession(deps, session).catch((error) => {
132
+ session.show = false;
133
+ report(deps, error);
134
+ });
135
+ // A background browser is only held while a line runs (ADR-014).
136
+ if (session.open?.release)
137
+ await closeSession(session);
138
+ }
139
+ for (;;) {
140
+ if (terminal) {
141
+ rl.setPrompt(prompt(deps, session));
142
+ rl.prompt();
143
+ }
144
+ const line = await next();
145
+ if (line === undefined)
146
+ break;
147
+ if (line.trim() === "")
148
+ continue;
149
+ try {
150
+ mkdirSync(deps.home, { recursive: true });
151
+ appendFileSync(historyFile, `${line.trim()}\n`, { mode: 0o600 });
152
+ }
153
+ catch {
154
+ // History is a convenience: a home that can't take it doesn't stop the shell.
155
+ }
156
+ busy = true;
157
+ try {
158
+ if (await shellLine(line, deps, session))
159
+ break;
160
+ }
161
+ finally {
162
+ busy = false;
163
+ // A background browser is shared (ADR-014): connected for one line at a time, so commands from elsewhere get their turn.
164
+ if (session.open?.release)
165
+ await closeSession(session);
166
+ }
167
+ }
168
+ }
169
+ finally {
170
+ rl.close();
171
+ await closeSession(session);
172
+ }
173
+ return 0;
174
+ }
175
+ /** Runs one line of the shell; `true` when it says to leave. */
176
+ async function shellLine(line, deps, session) {
177
+ let tokens;
178
+ try {
179
+ tokens = tokenize(line);
180
+ }
181
+ catch (error) {
182
+ report(deps, error);
183
+ return false;
184
+ }
185
+ const [word, ...rest] = tokens;
186
+ switch (word) {
187
+ case "exit":
188
+ case "quit":
189
+ return true;
190
+ case "shell":
191
+ deps.stderr("This is the shell already.");
192
+ return false;
193
+ case "help":
194
+ if (rest.length === 0) {
195
+ deps.stdout(`${SHELL_HELP}\n${overview()}`);
196
+ return false;
197
+ }
198
+ break;
199
+ case "show":
200
+ case "hide":
201
+ session.show = word === "show";
202
+ try {
203
+ if (session.show)
204
+ await openSession(deps, session);
205
+ else
206
+ await session.open?.moodle.setVisible(false);
207
+ }
208
+ catch (error) {
209
+ if (session.show)
210
+ session.show = false;
211
+ report(deps, error);
212
+ }
213
+ return false;
214
+ case "use":
215
+ try {
216
+ const { global, positionals } = splitLine(tokens, undefined);
217
+ if (positionals.length > 1)
218
+ throw new UsageError("use takes one site: `use https://campus.example.org/ --as <name>`.");
219
+ // A new site starts from its own default profile, unless one is named.
220
+ const site = positionals[0] ?? global.site;
221
+ session.defaults = { ...session.defaults, ...(site ? { site, as: undefined, profile: undefined } : {}), ...(global.as ? { as: global.as, profile: undefined } : {}), ...(global.profile ? { profile: global.profile } : {}) };
222
+ const target = await openSession(deps, session);
223
+ deps.stdout(`✔ Working on ${target.site} as ${target.name ?? target.profileDir}.`);
224
+ }
225
+ catch (error) {
226
+ report(deps, error);
227
+ }
228
+ return false;
229
+ }
230
+ await runLine(tokens, deps, session);
231
+ return false;
232
+ }
233
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/cli/shell.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -2,28 +2,40 @@ import type { BrowserContext, Page } from "playwright-core";
2
2
  import { type BrowserManager } from "./browser/manager.js";
3
3
  import { type BrowserOptions, type Trail } from "./options.js";
4
4
  import { activitySettings, addSection, createActivity, deleteActivity, deleteSection, duplicateActivity, editActivity, editSection, updateActivity } from "./areas/activities/build.js";
5
- import { createEvent, deleteEvent, upcomingEvents } from "./areas/calendar/calendar.js";
5
+ import { calendarEvent, createEvent, deleteEvent, updateEvent, upcomingEvents } from "./areas/calendar/calendar.js";
6
6
  import { answerChoice, getChoice } from "./areas/surveys/choice.js";
7
+ import { activityReport, courseLogs, participationReport } from "./areas/reports/reports.js";
8
+ import { backupCourse, copyCourse, importActivities, restoreCourse } from "./areas/backup/backup.js";
7
9
  import { completionReport, overrideCompletion, setCompletion } from "./areas/completion/completion.js";
8
10
  import { type ActivityContent, type ContentType } from "./areas/activities/content.js";
9
11
  import { listCourses, updateCourse } from "./areas/courses/list.js";
12
+ import { resetCourse } from "./areas/courses/reset.js";
10
13
  import { type DownloadedFile } from "./core/files.js";
11
14
  import { openForm } from "./core/forms.js";
12
- import { discussion, forumDiscussions, replyToPost, setDiscussionState, startDiscussion } from "./areas/forums/posts.js";
13
- import { addGradeCategory, gradebookSetup, graderReport, updateGradeItem } from "./areas/grades/gradebook.js";
15
+ import { deletePost, discussion, editPost, forumDiscussions, replyToPost, setDiscussionState, startDiscussion } from "./areas/forums/posts.js";
16
+ import { addGradeCategory, addGradeItem, deleteGradeCategory, deleteGradeItem, gradebookSetup, graderReport, updateGradeCategory, updateGradeItem } from "./areas/grades/gradebook.js";
17
+ import { setGrade } from "./areas/grades/singleview.js";
18
+ import { forumGrades, gradeForumUser } from "./areas/forums/grading.js";
19
+ import { rate } from "./areas/ratings/ratings.js";
20
+ import { assessWorkshopSubmission, setWorkshopPhase, workshopInfo } from "./areas/workshops/workshops.js";
21
+ import { type ExportGradesOptions } from "./areas/grades/export.js";
14
22
  import { myGrades } from "./areas/grades/user-report.js";
15
- import { assignmentSubmissions, gradeSubmission, grantExtension, rubric } from "./areas/assignments/grading.js";
23
+ import { allocateMarker, assignmentSubmissions, gradeSubmission, grantExtension, rubric, setWorkflowState } from "./areas/assignments/grading.js";
16
24
  import { h5pActivity } from "./areas/h5p/h5p.js";
17
25
  import { scorm, type OpenedScorm } from "./areas/scorm/scorm.js";
18
26
  import { answerLessonPage, lessonPage, type LessonPage } from "./areas/lessons/lessons.js";
19
27
  import { type LoginResult } from "./core/login.js";
20
- import { conversation, conversations, markNotificationsRead, notifications, sendMessage } from "./areas/messages/messages.js";
28
+ import { conversation, conversations, markNotificationsRead, messageParticipants, notifications, sendMessage } from "./areas/messages/messages.js";
21
29
  import { activitiesOverview, courseUpdates, deadlines } from "./areas/courses/overview.js";
22
30
  import { groups, participantFilters, participants } from "./areas/participants/participants.js";
23
- import { createQuestion, importQuestions, questionBanks, questions } from "./areas/questions/banks.js";
31
+ import { createQuestion, deleteQuestions, importQuestions, questionBanks, questions, setQuestionStatus, updateQuestion } from "./areas/questions/banks.js";
32
+ import { createGroup, createGrouping, deleteGroup, deleteGrouping, groupings, setGroupMembers, setGroupingGroups, updateGroup } from "./areas/participants/groups.js";
33
+ import { enrolmentMethods, setEnrolmentMethod } from "./areas/participants/methods.js";
34
+ import { enrolUsers, potentialUsers, setUserRoles, unenrolUser } from "./areas/participants/enrolments.js";
24
35
  import { answerQuizQuestions, finishQuizAttempt, quizInfo, readAttempt, readReview, setQuizOverride, startQuizAttempt, type Question } from "./areas/quizzes/attempts.js";
25
36
  import { quizResults } from "./areas/quizzes/results.js";
26
- import { addQuestionsToQuiz, quizStructure } from "./areas/quizzes/structure.js";
37
+ import { gradeQuizQuestion, questionsToGrade } from "./areas/quizzes/grading.js";
38
+ import { addQuestionsToQuiz, addQuizSection, editQuizSlot, quizStructure, removeQuizSlot, setQuizPages } from "./areas/quizzes/structure.js";
27
39
  import { logOut, openSitePage } from "./core/session.js";
28
40
  import { courseActivityTypes, publicSiteInfo } from "./areas/site/info.js";
29
41
  import { courseStructure, listAssignments, pendingActivities } from "./areas/courses/structure.js";
@@ -38,17 +50,25 @@ import { courseAbilities, courseRoles, siteName, userById, whoAmI } from "./area
38
50
  */
39
51
  declare const SITE_FUNCTIONS: {
40
52
  activitiesOverview: typeof activitiesOverview;
53
+ activityReport: typeof activityReport;
41
54
  activitySettings: typeof activitySettings;
42
55
  addGradeCategory: typeof addGradeCategory;
56
+ addGradeItem: typeof addGradeItem;
57
+ allocateMarker: typeof allocateMarker;
43
58
  addQuestionsToQuiz: typeof addQuestionsToQuiz;
59
+ addQuizSection: typeof addQuizSection;
44
60
  addSection: typeof addSection;
45
61
  answerChoice: typeof answerChoice;
62
+ backupCourse: typeof backupCourse;
46
63
  assignmentSubmissions: typeof assignmentSubmissions;
64
+ calendarEvent: typeof calendarEvent;
47
65
  completionReport: typeof completionReport;
66
+ copyCourse: typeof copyCourse;
48
67
  conversation: typeof conversation;
49
68
  conversations: typeof conversations;
50
69
  courseAbilities: typeof courseAbilities;
51
70
  courseActivityTypes: typeof courseActivityTypes;
71
+ courseLogs: typeof courseLogs;
52
72
  courseRoles: typeof courseRoles;
53
73
  courseStructure: typeof courseStructure;
54
74
  courseUpdates: typeof courseUpdates;
@@ -58,21 +78,31 @@ declare const SITE_FUNCTIONS: {
58
78
  deadlines: typeof deadlines;
59
79
  deleteActivity: typeof deleteActivity;
60
80
  deleteEvent: typeof deleteEvent;
81
+ deleteQuestions: typeof deleteQuestions;
82
+ deleteGradeCategory: typeof deleteGradeCategory;
83
+ deleteGradeItem: typeof deleteGradeItem;
84
+ deletePost: typeof deletePost;
61
85
  deleteSection: typeof deleteSection;
62
86
  discussion: typeof discussion;
63
87
  duplicateActivity: typeof duplicateActivity;
64
88
  editActivity: typeof editActivity;
89
+ editQuizSlot: typeof editQuizSlot;
90
+ editPost: typeof editPost;
65
91
  editSection: typeof editSection;
66
92
  finishQuizAttempt: typeof finishQuizAttempt;
67
93
  forumDiscussions: typeof forumDiscussions;
94
+ forumGrades: typeof forumGrades;
68
95
  getChoice: typeof getChoice;
69
96
  getSurvey: typeof getSurvey;
97
+ gradeQuizQuestion: typeof gradeQuizQuestion;
98
+ gradeForumUser: typeof gradeForumUser;
70
99
  gradeSubmission: typeof gradeSubmission;
71
100
  gradebookSetup: typeof gradebookSetup;
72
101
  graderReport: typeof graderReport;
73
102
  grantExtension: typeof grantExtension;
74
103
  groups: typeof groups;
75
104
  h5pActivity: typeof h5pActivity;
105
+ importActivities: typeof importActivities;
76
106
  scorm: typeof scorm;
77
107
  importQuestions: typeof importQuestions;
78
108
  lessonPage: typeof lessonPage;
@@ -87,21 +117,49 @@ declare const SITE_FUNCTIONS: {
87
117
  overrideCompletion: typeof overrideCompletion;
88
118
  participantFilters: typeof participantFilters;
89
119
  participants: typeof participants;
120
+ potentialUsers: typeof potentialUsers;
121
+ enrolUsers: typeof enrolUsers;
122
+ unenrolUser: typeof unenrolUser;
123
+ setUserRoles: typeof setUserRoles;
124
+ createGroup: typeof createGroup;
125
+ updateGroup: typeof updateGroup;
126
+ deleteGroup: typeof deleteGroup;
127
+ setGroupMembers: typeof setGroupMembers;
128
+ groupings: typeof groupings;
129
+ createGrouping: typeof createGrouping;
130
+ deleteGrouping: typeof deleteGrouping;
131
+ setGroupingGroups: typeof setGroupingGroups;
132
+ enrolmentMethods: typeof enrolmentMethods;
133
+ setEnrolmentMethod: typeof setEnrolmentMethod;
134
+ participationReport: typeof participationReport;
90
135
  pendingActivities: typeof pendingActivities;
91
136
  questionBanks: typeof questionBanks;
92
137
  questions: typeof questions;
138
+ questionsToGrade: typeof questionsToGrade;
93
139
  quizInfo: typeof quizInfo;
94
140
  quizResults: typeof quizResults;
95
141
  quizStructure: typeof quizStructure;
142
+ rate: typeof rate;
143
+ workshopInfo: typeof workshopInfo;
144
+ setWorkshopPhase: typeof setWorkshopPhase;
145
+ assessWorkshopSubmission: typeof assessWorkshopSubmission;
96
146
  readAttempt: typeof readAttempt;
97
147
  readReview: typeof readReview;
148
+ removeQuizSlot: typeof removeQuizSlot;
98
149
  replyToPost: typeof replyToPost;
150
+ resetCourse: typeof resetCourse;
151
+ restoreCourse: typeof restoreCourse;
99
152
  rubric: typeof rubric;
100
153
  saveSubmission: typeof saveSubmission;
101
154
  sendMessage: typeof sendMessage;
155
+ messageParticipants: typeof messageParticipants;
102
156
  setCompletion: typeof setCompletion;
103
157
  setDiscussionState: typeof setDiscussionState;
158
+ setGrade: typeof setGrade;
104
159
  setQuizOverride: typeof setQuizOverride;
160
+ setQuizPages: typeof setQuizPages;
161
+ setQuestionStatus: typeof setQuestionStatus;
162
+ setWorkflowState: typeof setWorkflowState;
105
163
  siteName: typeof siteName;
106
164
  startDiscussion: typeof startDiscussion;
107
165
  startQuizAttempt: typeof startQuizAttempt;
@@ -111,7 +169,10 @@ declare const SITE_FUNCTIONS: {
111
169
  upcomingEvents: typeof upcomingEvents;
112
170
  updateActivity: typeof updateActivity;
113
171
  updateCourse: typeof updateCourse;
172
+ updateGradeCategory: typeof updateGradeCategory;
173
+ updateEvent: typeof updateEvent;
114
174
  updateGradeItem: typeof updateGradeItem;
175
+ updateQuestion: typeof updateQuestion;
115
176
  userById: typeof userById;
116
177
  whoAmI: typeof whoAmI;
117
178
  };
@@ -132,7 +193,7 @@ export interface MoodleDefaults {
132
193
  onProgress?: (elapsedSeconds: number, totalSeconds?: number) => void;
133
194
  /** How long `logIn` waits for the person to log in, in milliseconds: five minutes unless given. */
134
195
  loginTimeoutMs?: number;
135
- /** Where `downloadFile` saves files when not given a folder (an absolute path). */
196
+ /** Where `downloadFile` and `exportGrades` save files when not given a folder (an absolute path). */
136
197
  downloadDir?: string;
137
198
  }
138
199
  /** A student action's pace for one call, over the object's defaults. */
@@ -184,6 +245,8 @@ export interface Moodle extends MoodleMethods {
184
245
  }>;
185
246
  /** `downloadFile`, into the object's `downloadDir` unless given a folder. */
186
247
  downloadFile(url: string, destDir?: string): Promise<DownloadedFile>;
248
+ /** `exportGrades`, into the object's `downloadDir` unless given a folder. */
249
+ exportGrades(courseId: number, options: ExportGradesOptions): Promise<DownloadedFile>;
187
250
  /** The working tab a program drives itself (ADR-007). */
188
251
  tab(): Promise<Page>;
189
252
  /** `openScorm`: a SCORM's player, on the working tab. */
package/dist/client.js CHANGED
@@ -2,28 +2,40 @@ import { createBrowserManager } from "./browser/manager.js";
2
2
  import { parseSiteUrl } from "./options.js";
3
3
  import { activitySettings, addSection, createActivity, deleteActivity, deleteSection, duplicateActivity, editActivity, editSection, updateActivity } from "./areas/activities/build.js";
4
4
  import { callService } from "./core/ajax.js";
5
- import { createEvent, deleteEvent, upcomingEvents } from "./areas/calendar/calendar.js";
5
+ import { calendarEvent, createEvent, deleteEvent, updateEvent, upcomingEvents } from "./areas/calendar/calendar.js";
6
6
  import { answerChoice, getChoice } from "./areas/surveys/choice.js";
7
+ import { activityReport, courseLogs, participationReport } from "./areas/reports/reports.js";
8
+ import { backupCourse, copyCourse, importActivities, restoreCourse } from "./areas/backup/backup.js";
7
9
  import { completionReport, overrideCompletion, setCompletion } from "./areas/completion/completion.js";
8
10
  import { activityContent } from "./areas/activities/content.js";
9
11
  import { listCourses, updateCourse } from "./areas/courses/list.js";
12
+ import { resetCourse } from "./areas/courses/reset.js";
10
13
  import { downloadFile } from "./core/files.js";
11
14
  import { openForm } from "./core/forms.js";
12
- import { discussion, forumDiscussions, replyToPost, setDiscussionState, startDiscussion } from "./areas/forums/posts.js";
13
- import { addGradeCategory, gradebookSetup, graderReport, updateGradeItem } from "./areas/grades/gradebook.js";
15
+ import { deletePost, discussion, editPost, forumDiscussions, replyToPost, setDiscussionState, startDiscussion } from "./areas/forums/posts.js";
16
+ import { addGradeCategory, addGradeItem, deleteGradeCategory, deleteGradeItem, gradebookSetup, graderReport, updateGradeCategory, updateGradeItem } from "./areas/grades/gradebook.js";
17
+ import { setGrade } from "./areas/grades/singleview.js";
18
+ import { forumGrades, gradeForumUser } from "./areas/forums/grading.js";
19
+ import { rate } from "./areas/ratings/ratings.js";
20
+ import { assessWorkshopSubmission, setWorkshopPhase, workshopInfo } from "./areas/workshops/workshops.js";
21
+ import { exportGrades } from "./areas/grades/export.js";
14
22
  import { myGrades } from "./areas/grades/user-report.js";
15
- import { assignmentSubmissions, gradeSubmission, grantExtension, rubric } from "./areas/assignments/grading.js";
23
+ import { allocateMarker, assignmentSubmissions, gradeSubmission, grantExtension, rubric, setWorkflowState } from "./areas/assignments/grading.js";
16
24
  import { h5pActivity } from "./areas/h5p/h5p.js";
17
25
  import { openScorm, scorm } from "./areas/scorm/scorm.js";
18
26
  import { answerLessonPage, lessonPage } from "./areas/lessons/lessons.js";
19
27
  import { logIn } from "./core/login.js";
20
- import { conversation, conversations, markNotificationsRead, notifications, sendMessage } from "./areas/messages/messages.js";
28
+ import { conversation, conversations, markNotificationsRead, messageParticipants, notifications, sendMessage } from "./areas/messages/messages.js";
21
29
  import { activitiesOverview, courseUpdates, deadlines } from "./areas/courses/overview.js";
22
30
  import { groups, participantFilters, participants } from "./areas/participants/participants.js";
23
- import { createQuestion, importQuestions, questionBanks, questions } from "./areas/questions/banks.js";
31
+ import { createQuestion, deleteQuestions, importQuestions, questionBanks, questions, setQuestionStatus, updateQuestion } from "./areas/questions/banks.js";
32
+ import { createGroup, createGrouping, deleteGroup, deleteGrouping, groupings, setGroupMembers, setGroupingGroups, updateGroup } from "./areas/participants/groups.js";
33
+ import { enrolmentMethods, setEnrolmentMethod } from "./areas/participants/methods.js";
34
+ import { enrolUsers, potentialUsers, setUserRoles, unenrolUser } from "./areas/participants/enrolments.js";
24
35
  import { answerQuizQuestions, finishQuizAttempt, quizInfo, readAttempt, readReview, setQuizOverride, startQuizAttempt } from "./areas/quizzes/attempts.js";
25
36
  import { quizResults } from "./areas/quizzes/results.js";
26
- import { addQuestionsToQuiz, quizStructure } from "./areas/quizzes/structure.js";
37
+ import { gradeQuizQuestion, questionsToGrade } from "./areas/quizzes/grading.js";
38
+ import { addQuestionsToQuiz, addQuizSection, editQuizSlot, quizStructure, removeQuizSlot, setQuizPages } from "./areas/quizzes/structure.js";
27
39
  import { logOut, openSitePage } from "./core/session.js";
28
40
  import { courseActivityTypes, publicSiteInfo } from "./areas/site/info.js";
29
41
  import { courseStructure, listAssignments, pendingActivities } from "./areas/courses/structure.js";
@@ -39,17 +51,25 @@ import { MoodleError } from "./core/errors.js";
39
51
  */
40
52
  const SITE_FUNCTIONS = {
41
53
  activitiesOverview,
54
+ activityReport,
42
55
  activitySettings,
43
56
  addGradeCategory,
57
+ addGradeItem,
58
+ allocateMarker,
44
59
  addQuestionsToQuiz,
60
+ addQuizSection,
45
61
  addSection,
46
62
  answerChoice,
63
+ backupCourse,
47
64
  assignmentSubmissions,
65
+ calendarEvent,
48
66
  completionReport,
67
+ copyCourse,
49
68
  conversation,
50
69
  conversations,
51
70
  courseAbilities,
52
71
  courseActivityTypes,
72
+ courseLogs,
53
73
  courseRoles,
54
74
  courseStructure,
55
75
  courseUpdates,
@@ -59,21 +79,31 @@ const SITE_FUNCTIONS = {
59
79
  deadlines,
60
80
  deleteActivity,
61
81
  deleteEvent,
82
+ deleteQuestions,
83
+ deleteGradeCategory,
84
+ deleteGradeItem,
85
+ deletePost,
62
86
  deleteSection,
63
87
  discussion,
64
88
  duplicateActivity,
65
89
  editActivity,
90
+ editQuizSlot,
91
+ editPost,
66
92
  editSection,
67
93
  finishQuizAttempt,
68
94
  forumDiscussions,
95
+ forumGrades,
69
96
  getChoice,
70
97
  getSurvey,
98
+ gradeQuizQuestion,
99
+ gradeForumUser,
71
100
  gradeSubmission,
72
101
  gradebookSetup,
73
102
  graderReport,
74
103
  grantExtension,
75
104
  groups,
76
105
  h5pActivity,
106
+ importActivities,
77
107
  scorm,
78
108
  importQuestions,
79
109
  lessonPage,
@@ -88,21 +118,49 @@ const SITE_FUNCTIONS = {
88
118
  overrideCompletion,
89
119
  participantFilters,
90
120
  participants,
121
+ potentialUsers,
122
+ enrolUsers,
123
+ unenrolUser,
124
+ setUserRoles,
125
+ createGroup,
126
+ updateGroup,
127
+ deleteGroup,
128
+ setGroupMembers,
129
+ groupings,
130
+ createGrouping,
131
+ deleteGrouping,
132
+ setGroupingGroups,
133
+ enrolmentMethods,
134
+ setEnrolmentMethod,
135
+ participationReport,
91
136
  pendingActivities,
92
137
  questionBanks,
93
138
  questions,
139
+ questionsToGrade,
94
140
  quizInfo,
95
141
  quizResults,
96
142
  quizStructure,
143
+ rate,
144
+ workshopInfo,
145
+ setWorkshopPhase,
146
+ assessWorkshopSubmission,
97
147
  readAttempt,
98
148
  readReview,
149
+ removeQuizSlot,
99
150
  replyToPost,
151
+ resetCourse,
152
+ restoreCourse,
100
153
  rubric,
101
154
  saveSubmission,
102
155
  sendMessage,
156
+ messageParticipants,
103
157
  setCompletion,
104
158
  setDiscussionState,
159
+ setGrade,
105
160
  setQuizOverride,
161
+ setQuizPages,
162
+ setQuestionStatus,
163
+ setWorkflowState,
106
164
  siteName,
107
165
  startDiscussion,
108
166
  startQuizAttempt,
@@ -112,12 +170,15 @@ const SITE_FUNCTIONS = {
112
170
  upcomingEvents,
113
171
  updateActivity,
114
172
  updateCourse,
173
+ updateGradeCategory,
174
+ updateEvent,
115
175
  updateGradeItem,
176
+ updateQuestion,
116
177
  userById,
117
178
  whoAmI,
118
179
  };
119
180
  // Functions bound by hand, with the object's defaults: methods of the same name all the same.
120
- const DEFAULTED = ["activityContent", "answerQuizQuestions", "answerLessonPage", "downloadFile"];
181
+ const DEFAULTED = ["activityContent", "answerQuizQuestions", "answerLessonPage", "downloadFile", "exportGrades"];
121
182
  /** The names of the methods a `Moodle` has from the driver's functions, one per function of that name. */
122
183
  export const MOODLE_METHODS = [...Object.keys(SITE_FUNCTIONS), ...DEFAULTED];
123
184
  /**
@@ -170,6 +231,12 @@ export function createMoodle(options) {
170
231
  throw new MoodleError("Give downloadFile a folder, or createMoodle a downloadDir.", "invalid-input");
171
232
  return downloadFile(await browser.context(), site, url, folder);
172
233
  },
234
+ exportGrades: async (courseId, exportOptions) => {
235
+ const folder = exportOptions.destDir ?? defaults.downloadDir;
236
+ if (!folder)
237
+ throw new MoodleError("Give exportGrades a destDir, or createMoodle a downloadDir.", "invalid-input");
238
+ return exportGrades(await browser.context(), site, courseId, { ...exportOptions, destDir: folder });
239
+ },
173
240
  tab: () => browser.tab(),
174
241
  openScorm: (activityId, scormOptions) => openScorm(browser, site, activityId, scormOptions),
175
242
  visible: () => browser.visible(),
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}