@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.
- package/README.md +3 -2
- package/dist/areas/activities/build.d.ts +47 -10
- package/dist/areas/activities/build.js +157 -24
- package/dist/areas/activities/build.js.map +1 -1
- package/dist/areas/activities/conditions.d.ts +77 -0
- package/dist/areas/activities/conditions.js +216 -0
- package/dist/areas/activities/conditions.js.map +1 -0
- package/dist/areas/activities/content.d.ts +3 -0
- package/dist/areas/activities/content.js +1 -0
- package/dist/areas/activities/content.js.map +1 -1
- package/dist/areas/assignments/grader.d.ts +32 -0
- package/dist/areas/assignments/grader.js +66 -2
- package/dist/areas/assignments/grader.js.map +1 -1
- package/dist/areas/assignments/grading.d.ts +69 -6
- package/dist/areas/assignments/grading.js +173 -13
- package/dist/areas/assignments/grading.js.map +1 -1
- package/dist/areas/assignments/student.d.ts +14 -0
- package/dist/areas/assignments/student.js +43 -2
- package/dist/areas/assignments/student.js.map +1 -1
- package/dist/areas/backup/backup.d.ts +86 -0
- package/dist/areas/backup/backup.js +368 -0
- package/dist/areas/backup/backup.js.map +1 -0
- package/dist/areas/calendar/calendar.d.ts +27 -0
- package/dist/areas/calendar/calendar.js +115 -9
- package/dist/areas/calendar/calendar.js.map +1 -1
- package/dist/areas/completion/completion.d.ts +3 -0
- package/dist/areas/completion/completion.js.map +1 -1
- package/dist/areas/courses/list.d.ts +2 -0
- package/dist/areas/courses/list.js.map +1 -1
- package/dist/areas/courses/reset.d.ts +51 -0
- package/dist/areas/courses/reset.js +123 -0
- package/dist/areas/courses/reset.js.map +1 -0
- package/dist/areas/courses/state.d.ts +17 -0
- package/dist/areas/courses/state.js +37 -6
- package/dist/areas/courses/state.js.map +1 -1
- package/dist/areas/courses/structure.d.ts +14 -2
- package/dist/areas/courses/structure.js +11 -5
- package/dist/areas/courses/structure.js.map +1 -1
- package/dist/areas/forums/discussions.d.ts +8 -0
- package/dist/areas/forums/discussions.js +10 -0
- package/dist/areas/forums/discussions.js.map +1 -1
- package/dist/areas/forums/grading.d.ts +49 -0
- package/dist/areas/forums/grading.js +125 -0
- package/dist/areas/forums/grading.js.map +1 -0
- package/dist/areas/forums/posts.d.ts +37 -0
- package/dist/areas/forums/posts.js +141 -6
- package/dist/areas/forums/posts.js.map +1 -1
- package/dist/areas/grades/export.d.ts +38 -0
- package/dist/areas/grades/export.js +88 -0
- package/dist/areas/grades/export.js.map +1 -0
- package/dist/areas/grades/gradebook.d.ts +50 -0
- package/dist/areas/grades/gradebook.js +120 -0
- package/dist/areas/grades/gradebook.js.map +1 -1
- package/dist/areas/grades/singleview.d.ts +39 -0
- package/dist/areas/grades/singleview.js +186 -0
- package/dist/areas/grades/singleview.js.map +1 -0
- package/dist/areas/h5p/h5p.d.ts +2 -0
- package/dist/areas/h5p/h5p.js +12 -7
- package/dist/areas/h5p/h5p.js.map +1 -1
- package/dist/areas/lessons/lessons.d.ts +1 -0
- package/dist/areas/lessons/lessons.js.map +1 -1
- package/dist/areas/messages/messages.d.ts +36 -1
- package/dist/areas/messages/messages.js +60 -4
- package/dist/areas/messages/messages.js.map +1 -1
- package/dist/areas/participants/enrolments.d.ts +60 -0
- package/dist/areas/participants/enrolments.js +218 -0
- package/dist/areas/participants/enrolments.js.map +1 -0
- package/dist/areas/participants/groups.d.ts +75 -0
- package/dist/areas/participants/groups.js +201 -0
- package/dist/areas/participants/groups.js.map +1 -0
- package/dist/areas/participants/methods.d.ts +56 -0
- package/dist/areas/participants/methods.js +154 -0
- package/dist/areas/participants/methods.js.map +1 -0
- package/dist/areas/participants/participants.d.ts +11 -0
- package/dist/areas/participants/participants.js +24 -19
- package/dist/areas/participants/participants.js.map +1 -1
- package/dist/areas/questions/banks.d.ts +36 -1
- package/dist/areas/questions/banks.js +140 -17
- package/dist/areas/questions/banks.js.map +1 -1
- package/dist/areas/quizzes/attempts.d.ts +2 -0
- package/dist/areas/quizzes/attempts.js +9 -0
- package/dist/areas/quizzes/attempts.js.map +1 -1
- package/dist/areas/quizzes/grading.d.ts +50 -0
- package/dist/areas/quizzes/grading.js +131 -0
- package/dist/areas/quizzes/grading.js.map +1 -0
- package/dist/areas/quizzes/results.d.ts +3 -0
- package/dist/areas/quizzes/results.js +2 -1
- package/dist/areas/quizzes/results.js.map +1 -1
- package/dist/areas/quizzes/structure.d.ts +65 -9
- package/dist/areas/quizzes/structure.js +222 -23
- package/dist/areas/quizzes/structure.js.map +1 -1
- package/dist/areas/ratings/ratings.d.ts +26 -0
- package/dist/areas/ratings/ratings.js +108 -0
- package/dist/areas/ratings/ratings.js.map +1 -0
- package/dist/areas/reports/dates.d.ts +18 -0
- package/dist/areas/reports/dates.js +134 -0
- package/dist/areas/reports/dates.js.map +1 -0
- package/dist/areas/reports/reports.d.ts +143 -0
- package/dist/areas/reports/reports.js +267 -0
- package/dist/areas/reports/reports.js.map +1 -0
- package/dist/areas/scorm/scorm.d.ts +1 -0
- package/dist/areas/scorm/scorm.js.map +1 -1
- package/dist/areas/site/users.d.ts +7 -1
- package/dist/areas/site/users.js +9 -2
- package/dist/areas/site/users.js.map +1 -1
- package/dist/areas/surveys/choice.d.ts +2 -0
- package/dist/areas/surveys/choice.js +6 -3
- package/dist/areas/surveys/choice.js.map +1 -1
- package/dist/areas/surveys/surveys.d.ts +3 -0
- package/dist/areas/surveys/surveys.js +1 -0
- package/dist/areas/surveys/surveys.js.map +1 -1
- package/dist/areas/workshops/workshops.d.ts +133 -0
- package/dist/areas/workshops/workshops.js +335 -0
- package/dist/areas/workshops/workshops.js.map +1 -0
- package/dist/browser/background.d.ts +43 -0
- package/dist/browser/background.js +164 -0
- package/dist/browser/background.js.map +1 -0
- package/dist/browser/host.d.ts +30 -0
- package/dist/browser/host.js +373 -0
- package/dist/browser/host.js.map +1 -0
- package/dist/browser/manager.d.ts +9 -0
- package/dist/browser/manager.js +8 -0
- package/dist/browser/manager.js.map +1 -1
- package/dist/categories.d.ts +1 -0
- package/dist/categories.js +67 -0
- package/dist/categories.js.map +1 -1
- package/dist/cli/args.d.ts +8 -0
- package/dist/cli/args.js +49 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/background.d.ts +23 -0
- package/dist/cli/background.js +128 -0
- package/dist/cli/background.js.map +1 -0
- package/dist/cli/command.d.ts +66 -0
- package/dist/cli/command.js +328 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands.generated.js +2636 -578
- package/dist/cli/commands.generated.js.map +1 -1
- package/dist/cli/config.d.ts +2 -0
- package/dist/cli/config.js +2 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/main.js +30 -10
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/run.d.ts +3 -14
- package/dist/cli/run.js +9 -185
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/shell.d.ts +9 -0
- package/dist/cli/shell.js +233 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/client.d.ts +71 -8
- package/dist/client.js +75 -8
- package/dist/client.js.map +1 -1
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/files.d.ts +5 -0
- package/dist/core/files.js +7 -3
- package/dist/core/files.js.map +1 -1
- package/dist/core/forms.d.ts +33 -3
- package/dist/core/forms.js +105 -8
- package/dist/core/forms.js.map +1 -1
- package/dist/core/http.d.ts +7 -0
- package/dist/core/http.js +28 -7
- package/dist/core/http.js.map +1 -1
- package/dist/core/login.d.ts +3 -0
- package/dist/core/login.js +2 -0
- package/dist/core/login.js.map +1 -1
- package/dist/core/session.d.ts +12 -1
- package/dist/core/session.js +12 -1
- package/dist/core/session.js.map +1 -1
- package/dist/index.d.ts +35 -11
- package/dist/index.js +32 -12
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +9 -1
- package/dist/internals.js +9 -4
- package/dist/internals.js.map +1 -1
- package/dist/options.d.ts +2 -0
- package/dist/options.js.map +1 -1
- package/dist/testing/fakeMoodle.d.ts +9 -2
- package/dist/testing/fakeMoodle.js +5 -3
- package/dist/testing/fakeMoodle.js.map +1 -1
- package/dist/testing/index.d.ts +7 -0
- package/dist/testing/index.js.map +1 -1
- 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 {
|
|
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`
|
|
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 {
|
|
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(),
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAmC,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxL,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|