@falkenslab/moodle-driver 0.0.0-stage → 0.3.1

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 (297) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +133 -2
  3. package/dist/areas/activities/build.d.ts +98 -0
  4. package/dist/areas/activities/build.js +246 -0
  5. package/dist/areas/activities/build.js.map +1 -0
  6. package/dist/areas/activities/content.d.ts +53 -0
  7. package/dist/areas/activities/content.js +113 -0
  8. package/dist/areas/activities/content.js.map +1 -0
  9. package/dist/areas/assignments/grader.d.ts +68 -0
  10. package/dist/areas/assignments/grader.js +169 -0
  11. package/dist/areas/assignments/grader.js.map +1 -0
  12. package/dist/areas/assignments/grading.d.ts +86 -0
  13. package/dist/areas/assignments/grading.js +162 -0
  14. package/dist/areas/assignments/grading.js.map +1 -0
  15. package/dist/areas/assignments/student.d.ts +57 -0
  16. package/dist/areas/assignments/student.js +115 -0
  17. package/dist/areas/assignments/student.js.map +1 -0
  18. package/dist/areas/calendar/calendar.d.ts +43 -0
  19. package/dist/areas/calendar/calendar.js +84 -0
  20. package/dist/areas/calendar/calendar.js.map +1 -0
  21. package/dist/areas/completion/completion.d.ts +50 -0
  22. package/dist/areas/completion/completion.js +112 -0
  23. package/dist/areas/completion/completion.js.map +1 -0
  24. package/dist/areas/courses/list.d.ts +59 -0
  25. package/dist/areas/courses/list.js +74 -0
  26. package/dist/areas/courses/list.js.map +1 -0
  27. package/dist/areas/courses/overview.d.ts +83 -0
  28. package/dist/areas/courses/overview.js +137 -0
  29. package/dist/areas/courses/overview.js.map +1 -0
  30. package/dist/areas/courses/state.d.ts +51 -0
  31. package/dist/areas/courses/state.js +45 -0
  32. package/dist/areas/courses/state.js.map +1 -0
  33. package/dist/areas/courses/structure.d.ts +89 -0
  34. package/dist/areas/courses/structure.js +104 -0
  35. package/dist/areas/courses/structure.js.map +1 -0
  36. package/dist/areas/forums/discussions.d.ts +57 -0
  37. package/dist/areas/forums/discussions.js +119 -0
  38. package/dist/areas/forums/discussions.js.map +1 -0
  39. package/dist/areas/forums/posts.d.ts +83 -0
  40. package/dist/areas/forums/posts.js +114 -0
  41. package/dist/areas/forums/posts.js.map +1 -0
  42. package/dist/areas/grades/gradebook.d.ts +104 -0
  43. package/dist/areas/grades/gradebook.js +250 -0
  44. package/dist/areas/grades/gradebook.js.map +1 -0
  45. package/dist/areas/grades/user-report.d.ts +26 -0
  46. package/dist/areas/grades/user-report.js +71 -0
  47. package/dist/areas/grades/user-report.js.map +1 -0
  48. package/dist/areas/h5p/h5p.d.ts +33 -0
  49. package/dist/areas/h5p/h5p.js +104 -0
  50. package/dist/areas/h5p/h5p.js.map +1 -0
  51. package/dist/areas/lessons/lessons.d.ts +60 -0
  52. package/dist/areas/lessons/lessons.js +145 -0
  53. package/dist/areas/lessons/lessons.js.map +1 -0
  54. package/dist/areas/messages/messages.d.ts +68 -0
  55. package/dist/areas/messages/messages.js +84 -0
  56. package/dist/areas/messages/messages.js.map +1 -0
  57. package/dist/areas/participants/participants.d.ts +57 -0
  58. package/dist/areas/participants/participants.js +135 -0
  59. package/dist/areas/participants/participants.js.map +1 -0
  60. package/dist/areas/questions/banks.d.ts +83 -0
  61. package/dist/areas/questions/banks.js +239 -0
  62. package/dist/areas/questions/banks.js.map +1 -0
  63. package/dist/areas/quizzes/attempts.d.ts +123 -0
  64. package/dist/areas/quizzes/attempts.js +300 -0
  65. package/dist/areas/quizzes/attempts.js.map +1 -0
  66. package/dist/areas/quizzes/results.d.ts +36 -0
  67. package/dist/areas/quizzes/results.js +93 -0
  68. package/dist/areas/quizzes/results.js.map +1 -0
  69. package/dist/areas/quizzes/structure.d.ts +42 -0
  70. package/dist/areas/quizzes/structure.js +100 -0
  71. package/dist/areas/quizzes/structure.js.map +1 -0
  72. package/dist/areas/site/info.d.ts +25 -0
  73. package/dist/areas/site/info.js +45 -0
  74. package/dist/areas/site/info.js.map +1 -0
  75. package/dist/areas/site/users.d.ts +56 -0
  76. package/dist/areas/site/users.js +89 -0
  77. package/dist/areas/site/users.js.map +1 -0
  78. package/dist/areas/surveys/choice.d.ts +38 -0
  79. package/dist/areas/surveys/choice.js +105 -0
  80. package/dist/areas/surveys/choice.js.map +1 -0
  81. package/dist/areas/surveys/surveys.d.ts +51 -0
  82. package/dist/areas/surveys/surveys.js +201 -0
  83. package/dist/areas/surveys/surveys.js.map +1 -0
  84. package/dist/browser/chromium.d.ts +15 -0
  85. package/dist/browser/chromium.js +53 -0
  86. package/dist/browser/chromium.js.map +1 -0
  87. package/dist/browser/cookies.d.ts +11 -0
  88. package/dist/browser/cookies.js +31 -0
  89. package/dist/browser/cookies.js.map +1 -0
  90. package/dist/browser/manager.d.ts +57 -0
  91. package/dist/browser/manager.js +177 -0
  92. package/dist/browser/manager.js.map +1 -0
  93. package/dist/browser.d.ts +53 -0
  94. package/dist/browser.js +167 -0
  95. package/dist/browser.js.map +1 -0
  96. package/dist/categories.d.ts +28 -0
  97. package/dist/categories.js +222 -0
  98. package/dist/categories.js.map +1 -0
  99. package/dist/chromiumInstaller.d.ts +15 -0
  100. package/dist/chromiumInstaller.js +52 -0
  101. package/dist/chromiumInstaller.js.map +1 -0
  102. package/dist/cli/args.d.ts +33 -0
  103. package/dist/cli/args.js +194 -0
  104. package/dist/cli/args.js.map +1 -0
  105. package/dist/cli/commands.generated.d.ts +4 -0
  106. package/dist/cli/commands.generated.js +2203 -0
  107. package/dist/cli/commands.generated.js.map +1 -0
  108. package/dist/cli/config.d.ts +46 -0
  109. package/dist/cli/config.js +107 -0
  110. package/dist/cli/config.js.map +1 -0
  111. package/dist/cli/main.d.ts +2 -0
  112. package/dist/cli/main.js +19 -0
  113. package/dist/cli/main.js.map +1 -0
  114. package/dist/cli/output.d.ts +4 -0
  115. package/dist/cli/output.js +71 -0
  116. package/dist/cli/output.js.map +1 -0
  117. package/dist/cli/run.d.ts +15 -0
  118. package/dist/cli/run.js +194 -0
  119. package/dist/cli/run.js.map +1 -0
  120. package/dist/cli/spec.d.ts +42 -0
  121. package/dist/cli/spec.js +4 -0
  122. package/dist/cli/spec.js.map +1 -0
  123. package/dist/client.d.ts +217 -0
  124. package/dist/client.js +179 -0
  125. package/dist/client.js.map +1 -0
  126. package/dist/core/ajax.d.ts +25 -0
  127. package/dist/core/ajax.js +85 -0
  128. package/dist/core/ajax.js.map +1 -0
  129. package/dist/core/editor.d.ts +18 -0
  130. package/dist/core/editor.js +51 -0
  131. package/dist/core/editor.js.map +1 -0
  132. package/dist/core/errors.d.ts +12 -0
  133. package/dist/core/errors.js +10 -0
  134. package/dist/core/errors.js.map +1 -0
  135. package/dist/core/files.d.ts +16 -0
  136. package/dist/core/files.js +58 -0
  137. package/dist/core/files.js.map +1 -0
  138. package/dist/core/forms.d.ts +45 -0
  139. package/dist/core/forms.js +200 -0
  140. package/dist/core/forms.js.map +1 -0
  141. package/dist/core/http.d.ts +18 -0
  142. package/dist/core/http.js +22 -0
  143. package/dist/core/http.js.map +1 -0
  144. package/dist/core/inPage.d.ts +8 -0
  145. package/dist/core/inPage.js +10 -0
  146. package/dist/core/inPage.js.map +1 -0
  147. package/dist/core/login.d.ts +40 -0
  148. package/dist/core/login.js +83 -0
  149. package/dist/core/login.js.map +1 -0
  150. package/dist/core/pace.d.ts +4 -0
  151. package/dist/core/pace.js +21 -0
  152. package/dist/core/pace.js.map +1 -0
  153. package/dist/core/session.d.ts +55 -0
  154. package/dist/core/session.js +157 -0
  155. package/dist/core/session.js.map +1 -0
  156. package/dist/core/site.d.ts +8 -0
  157. package/dist/core/site.js +36 -0
  158. package/dist/core/site.js.map +1 -0
  159. package/dist/core/text.d.ts +21 -0
  160. package/dist/core/text.js +113 -0
  161. package/dist/core/text.js.map +1 -0
  162. package/dist/home.d.ts +19 -0
  163. package/dist/home.js +54 -0
  164. package/dist/home.js.map +1 -0
  165. package/dist/index.d.ts +40 -0
  166. package/dist/index.js +51 -0
  167. package/dist/index.js.map +1 -0
  168. package/dist/internals.d.ts +11 -0
  169. package/dist/internals.js +15 -0
  170. package/dist/internals.js.map +1 -0
  171. package/dist/moodle/activities.d.ts +94 -0
  172. package/dist/moodle/activities.js +240 -0
  173. package/dist/moodle/activities.js.map +1 -0
  174. package/dist/moodle/ajax.d.ts +22 -0
  175. package/dist/moodle/ajax.js +91 -0
  176. package/dist/moodle/ajax.js.map +1 -0
  177. package/dist/moodle/assign.d.ts +65 -0
  178. package/dist/moodle/assign.js +162 -0
  179. package/dist/moodle/assign.js.map +1 -0
  180. package/dist/moodle/calendar.d.ts +41 -0
  181. package/dist/moodle/calendar.js +80 -0
  182. package/dist/moodle/calendar.js.map +1 -0
  183. package/dist/moodle/choice.d.ts +33 -0
  184. package/dist/moodle/choice.js +100 -0
  185. package/dist/moodle/choice.js.map +1 -0
  186. package/dist/moodle/completion.d.ts +48 -0
  187. package/dist/moodle/completion.js +108 -0
  188. package/dist/moodle/completion.js.map +1 -0
  189. package/dist/moodle/content.d.ts +43 -0
  190. package/dist/moodle/content.js +105 -0
  191. package/dist/moodle/content.js.map +1 -0
  192. package/dist/moodle/course.d.ts +51 -0
  193. package/dist/moodle/course.js +45 -0
  194. package/dist/moodle/course.js.map +1 -0
  195. package/dist/moodle/courses.d.ts +57 -0
  196. package/dist/moodle/courses.js +70 -0
  197. package/dist/moodle/courses.js.map +1 -0
  198. package/dist/moodle/editor.d.ts +18 -0
  199. package/dist/moodle/editor.js +50 -0
  200. package/dist/moodle/editor.js.map +1 -0
  201. package/dist/moodle/files.d.ts +16 -0
  202. package/dist/moodle/files.js +57 -0
  203. package/dist/moodle/files.js.map +1 -0
  204. package/dist/moodle/forms.d.ts +44 -0
  205. package/dist/moodle/forms.js +199 -0
  206. package/dist/moodle/forms.js.map +1 -0
  207. package/dist/moodle/forum.d.ts +55 -0
  208. package/dist/moodle/forum.js +115 -0
  209. package/dist/moodle/forum.js.map +1 -0
  210. package/dist/moodle/forumPosts.d.ts +83 -0
  211. package/dist/moodle/forumPosts.js +113 -0
  212. package/dist/moodle/forumPosts.js.map +1 -0
  213. package/dist/moodle/gradebook.d.ts +102 -0
  214. package/dist/moodle/gradebook.js +246 -0
  215. package/dist/moodle/gradebook.js.map +1 -0
  216. package/dist/moodle/grades.d.ts +24 -0
  217. package/dist/moodle/grades.js +67 -0
  218. package/dist/moodle/grades.js.map +1 -0
  219. package/dist/moodle/grading.d.ts +92 -0
  220. package/dist/moodle/grading.js +161 -0
  221. package/dist/moodle/grading.js.map +1 -0
  222. package/dist/moodle/h5p.d.ts +31 -0
  223. package/dist/moodle/h5p.js +100 -0
  224. package/dist/moodle/h5p.js.map +1 -0
  225. package/dist/moodle/inPage.d.ts +8 -0
  226. package/dist/moodle/inPage.js +10 -0
  227. package/dist/moodle/inPage.js.map +1 -0
  228. package/dist/moodle/lesson.d.ts +57 -0
  229. package/dist/moodle/lesson.js +140 -0
  230. package/dist/moodle/lesson.js.map +1 -0
  231. package/dist/moodle/login.d.ts +37 -0
  232. package/dist/moodle/login.js +77 -0
  233. package/dist/moodle/login.js.map +1 -0
  234. package/dist/moodle/messages.d.ts +66 -0
  235. package/dist/moodle/messages.js +80 -0
  236. package/dist/moodle/messages.js.map +1 -0
  237. package/dist/moodle/overview.d.ts +83 -0
  238. package/dist/moodle/overview.js +137 -0
  239. package/dist/moodle/overview.js.map +1 -0
  240. package/dist/moodle/pace.d.ts +4 -0
  241. package/dist/moodle/pace.js +19 -0
  242. package/dist/moodle/pace.js.map +1 -0
  243. package/dist/moodle/participants.d.ts +55 -0
  244. package/dist/moodle/participants.js +131 -0
  245. package/dist/moodle/participants.js.map +1 -0
  246. package/dist/moodle/questionBank.d.ts +81 -0
  247. package/dist/moodle/questionBank.js +235 -0
  248. package/dist/moodle/questionBank.js.map +1 -0
  249. package/dist/moodle/quiz.d.ts +117 -0
  250. package/dist/moodle/quiz.js +291 -0
  251. package/dist/moodle/quiz.js.map +1 -0
  252. package/dist/moodle/quizResults.d.ts +36 -0
  253. package/dist/moodle/quizResults.js +93 -0
  254. package/dist/moodle/quizResults.js.map +1 -0
  255. package/dist/moodle/quizStructure.d.ts +42 -0
  256. package/dist/moodle/quizStructure.js +100 -0
  257. package/dist/moodle/quizStructure.js.map +1 -0
  258. package/dist/moodle/session.d.ts +39 -0
  259. package/dist/moodle/session.js +99 -0
  260. package/dist/moodle/session.js.map +1 -0
  261. package/dist/moodle/site.d.ts +8 -0
  262. package/dist/moodle/site.js +36 -0
  263. package/dist/moodle/site.js.map +1 -0
  264. package/dist/moodle/siteInfo.d.ts +25 -0
  265. package/dist/moodle/siteInfo.js +45 -0
  266. package/dist/moodle/siteInfo.js.map +1 -0
  267. package/dist/moodle/structure.d.ts +94 -0
  268. package/dist/moodle/structure.js +103 -0
  269. package/dist/moodle/structure.js.map +1 -0
  270. package/dist/moodle/submission.d.ts +48 -0
  271. package/dist/moodle/submission.js +109 -0
  272. package/dist/moodle/submission.js.map +1 -0
  273. package/dist/moodle/survey.d.ts +47 -0
  274. package/dist/moodle/survey.js +197 -0
  275. package/dist/moodle/survey.js.map +1 -0
  276. package/dist/moodle/text.d.ts +21 -0
  277. package/dist/moodle/text.js +113 -0
  278. package/dist/moodle/text.js.map +1 -0
  279. package/dist/moodle/user.d.ts +54 -0
  280. package/dist/moodle/user.js +78 -0
  281. package/dist/moodle/user.js.map +1 -0
  282. package/dist/options.d.ts +30 -0
  283. package/dist/options.js +35 -0
  284. package/dist/options.js.map +1 -0
  285. package/dist/sessionCookies.d.ts +11 -0
  286. package/dist/sessionCookies.js +31 -0
  287. package/dist/sessionCookies.js.map +1 -0
  288. package/dist/testing/fakeMoodle.d.ts +55 -0
  289. package/dist/testing/fakeMoodle.js +103 -0
  290. package/dist/testing/fakeMoodle.js.map +1 -0
  291. package/dist/testing/gradingPanel.d.ts +6 -0
  292. package/dist/testing/gradingPanel.js +22 -0
  293. package/dist/testing/gradingPanel.js.map +1 -0
  294. package/dist/testing/index.d.ts +5 -0
  295. package/dist/testing/index.js +18 -0
  296. package/dist/testing/index.js.map +1 -0
  297. package/package.json +77 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.generated.js","sourceRoot":"","sources":["../../src/cli/commands.generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export interface CliConfig {
2
+ /** The site commands work on when none is given: the last one logged in to. */
3
+ site?: string;
4
+ }
5
+ export interface SiteRecord {
6
+ /** The site's base URL, as given to `login`. */
7
+ url: string;
8
+ /** The profile commands use on this site unless told: the last one logged in with. */
9
+ default?: string;
10
+ /** A profile folder of the person's own, given to `login --profile`: used when there's no default. */
11
+ profileDir?: string;
12
+ }
13
+ /** The command's home: `MOODLE_DRIVER_HOME`, else `~/.moodle-driver` on every system. */
14
+ export declare function cliHome(env: NodeJS.ProcessEnv, home?: string): string;
15
+ export declare const loadConfig: (home: string) => CliConfig;
16
+ export declare const saveConfig: (home: string, config: CliConfig) => void;
17
+ export declare const loadSite: (home: string, site: string) => SiteRecord | undefined;
18
+ export declare const saveSite: (home: string, record: SiteRecord) => void;
19
+ /**
20
+ * The profile folder a command uses on a site: `--profile`, else the one named by `--as`, else the
21
+ * site's default, else the folder given to `login --profile`; `undefined` when the site has none yet.
22
+ */
23
+ export declare function profileFor(home: string, site: string, { profile, as }: {
24
+ profile?: string;
25
+ as?: string;
26
+ }): {
27
+ profileDir: string;
28
+ name?: string;
29
+ } | undefined;
30
+ /** A folder to log in with before the person's username names it (see `nameProfile`), made now. */
31
+ export declare function pendingProfile(home: string, site: string): string;
32
+ /** Gives the profile logged in with in `pending` its name: the person's Moodle username. */
33
+ export declare function nameProfile(home: string, site: string, pending: string, username: string): string;
34
+ export interface SiteProfile {
35
+ site: string;
36
+ /** The profile's name, or `--profile` for a folder of the person's own. */
37
+ profile: string;
38
+ default: boolean;
39
+ /** The session file is there: Moodle may still have ended the session. */
40
+ session: boolean;
41
+ path: string;
42
+ }
43
+ /** Every site in the home with each of its profiles. */
44
+ export declare function listSites(home: string): SiteProfile[];
45
+ /** Deletes a site's folder, or one of its profiles; says what went. */
46
+ export declare function forgetSite(home: string, site: string, as?: string): string[];
@@ -0,0 +1,107 @@
1
+ // What the command remembers between runs, in its home (ADR-013): `config.json` with the default site,
2
+ // and a folder per site with its `site.json` (its URL and default profile) and its named browser profiles.
3
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import { defaultHome, profileName, siteDir, siteProfileDir } from "../home.js";
7
+ /** The command's home: `MOODLE_DRIVER_HOME`, else `~/.moodle-driver` on every system. */
8
+ export function cliHome(env, home = os.homedir()) {
9
+ return env.MOODLE_DRIVER_HOME || defaultHome(home);
10
+ }
11
+ function readJson(file) {
12
+ try {
13
+ return JSON.parse(readFileSync(file, "utf8"));
14
+ }
15
+ catch {
16
+ return undefined;
17
+ }
18
+ }
19
+ function writeJson(file, value) {
20
+ mkdirSync(path.dirname(file), { recursive: true });
21
+ writeFileSync(file, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
22
+ }
23
+ export const loadConfig = (home) => readJson(path.join(home, "config.json")) ?? {};
24
+ export const saveConfig = (home, config) => writeJson(path.join(home, "config.json"), config);
25
+ export const loadSite = (home, site) => readJson(path.join(siteDir(site, home), "site.json"));
26
+ export const saveSite = (home, record) => writeJson(path.join(siteDir(record.url, home), "site.json"), record);
27
+ /**
28
+ * The profile folder a command uses on a site: `--profile`, else the one named by `--as`, else the
29
+ * site's default, else the folder given to `login --profile`; `undefined` when the site has none yet.
30
+ */
31
+ export function profileFor(home, site, { profile, as }) {
32
+ if (profile)
33
+ return { profileDir: profile };
34
+ const record = loadSite(home, site);
35
+ const name = as ?? record?.default;
36
+ if (name)
37
+ return { profileDir: siteProfileDir(site, { as: name, home }), name };
38
+ if (record?.profileDir)
39
+ return { profileDir: record.profileDir };
40
+ return undefined;
41
+ }
42
+ /** A folder to log in with before the person's username names it (see `nameProfile`), made now. */
43
+ export function pendingProfile(home, site) {
44
+ const dir = path.join(siteDir(site, home), "profiles", `.login-${process.pid}`);
45
+ mkdirSync(dir, { recursive: true });
46
+ return dir;
47
+ }
48
+ /** Gives the profile logged in with in `pending` its name: the person's Moodle username. */
49
+ export function nameProfile(home, site, pending, username) {
50
+ const name = profileName(username);
51
+ const target = siteProfileDir(site, { as: name, home });
52
+ // The same username is the same account: its older profile gives way to the new session.
53
+ rmSync(target, { recursive: true, force: true });
54
+ renameSync(pending, target);
55
+ return name;
56
+ }
57
+ /** Every site in the home with each of its profiles. */
58
+ export function listSites(home) {
59
+ const config = loadConfig(home);
60
+ const sitesDir = path.join(home, "sites");
61
+ if (!existsSync(sitesDir))
62
+ return [];
63
+ const rows = [];
64
+ for (const folder of readdirSync(sitesDir).sort()) {
65
+ const record = readJson(path.join(sitesDir, folder, "site.json"));
66
+ if (!record)
67
+ continue;
68
+ const profilesDir = path.join(sitesDir, folder, "profiles");
69
+ const names = existsSync(profilesDir) ? readdirSync(profilesDir).filter((name) => !name.startsWith(".")).sort() : [];
70
+ const isDefaultSite = config.site === record.url;
71
+ const row = (profile, dir, isDefault) => ({
72
+ site: record.url,
73
+ profile,
74
+ default: isDefaultSite && isDefault,
75
+ session: existsSync(path.join(dir, "moodle-session.json")),
76
+ path: dir,
77
+ });
78
+ for (const name of names)
79
+ rows.push(row(name, siteProfileDir(record.url, { as: name, home }), record.default === name));
80
+ if (record.profileDir)
81
+ rows.push(row("--profile", record.profileDir, !record.default));
82
+ }
83
+ return rows;
84
+ }
85
+ /** Deletes a site's folder, or one of its profiles; says what went. */
86
+ export function forgetSite(home, site, as) {
87
+ const dir = siteDir(site, home);
88
+ if (!existsSync(dir))
89
+ return [];
90
+ if (as !== undefined) {
91
+ const profile = siteProfileDir(site, { as, home });
92
+ if (!existsSync(profile))
93
+ return [];
94
+ rmSync(profile, { recursive: true, force: true });
95
+ const record = loadSite(home, site);
96
+ if (record?.default === as)
97
+ saveSite(home, { ...record, default: undefined });
98
+ return [profile];
99
+ }
100
+ // A folder of the person's own (`--profile`) is outside: it stays theirs.
101
+ rmSync(dir, { recursive: true, force: true });
102
+ const config = loadConfig(home);
103
+ if (config.site && siteDir(config.site, home) === dir)
104
+ saveConfig(home, { ...config, site: undefined });
105
+ return [dir];
106
+ }
107
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ // The `moodle` command's entry point (`bin` in package.json): every method of the Moodle object from a
3
+ // terminal (ADR-012). The library itself prints nothing and reads no environment; this program does.
4
+ import { readFileSync } from "node:fs";
5
+ import { createMoodle } from "../client.js";
6
+ import { cliHome } from "./config.js";
7
+ import { run } from "./run.js";
8
+ const { version } = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
9
+ process.exitCode = await run(process.argv.slice(2), {
10
+ createMoodle,
11
+ stdout: (text) => process.stdout.write(`${text}\n`),
12
+ stderr: (text) => process.stderr.write(`${text}\n`),
13
+ env: process.env,
14
+ cwd: process.cwd(),
15
+ home: cliHome(process.env),
16
+ interactive: process.stdout.isTTY === true,
17
+ version,
18
+ });
19
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA,uGAAuG;AACvG,qGAAqG;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAE5H,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAClD,YAAY;IACZ,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IACnD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IACnD,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;IAC1C,OAAO;CACR,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** A value as a person reads it at a terminal. */
2
+ export declare function human(value: unknown): string;
3
+ /** What the command prints for a result: JSON for scripts, else for a person. */
4
+ export declare function render(value: unknown, json: boolean): string;
@@ -0,0 +1,71 @@
1
+ // What a method returned, for a person at a terminal (tables and key-value lines) or for a script (JSON).
2
+ const MAX_CELL = 48;
3
+ const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof Date);
4
+ const isScalar = (value) => value === null || value === undefined || ["string", "number", "boolean"].includes(typeof value) || value instanceof Date;
5
+ function short(text, max = MAX_CELL) {
6
+ const line = text.replace(/\s+/g, " ").trim();
7
+ return line.length > max ? `${line.slice(0, max - 1)}…` : line;
8
+ }
9
+ function scalarText(value) {
10
+ if (value === undefined || value === null)
11
+ return "";
12
+ if (value instanceof Date)
13
+ return value.toISOString();
14
+ if (Array.isArray(value))
15
+ return value.every(isScalar) ? value.map(scalarText).join(", ") : `[${value.length}]`;
16
+ if (isPlainObject(value))
17
+ return JSON.stringify(value);
18
+ return String(value);
19
+ }
20
+ /** Rows of objects as a table: a column per field, nested values summarized. */
21
+ function table(rows) {
22
+ const columns = [...new Set(rows.flatMap((row) => Object.keys(row)))];
23
+ const cells = rows.map((row) => columns.map((column) => short(scalarText(row[column]))));
24
+ const widths = columns.map((column, i) => Math.max(column.length, ...cells.map((row) => row[i].length)));
25
+ const line = (values) => values.map((value, i) => value.padEnd(widths[i])).join(" ").trimEnd();
26
+ return [line(columns), line(widths.map((w) => "-".repeat(w))), ...cells.map(line)].join("\n");
27
+ }
28
+ function keyValues(object) {
29
+ const entries = Object.entries(object).filter(([, value]) => value !== undefined);
30
+ const width = Math.max(0, ...entries.filter(([, v]) => !isNested(v)).map(([key]) => key.length));
31
+ const lines = [];
32
+ const blocks = [];
33
+ for (const [key, value] of entries) {
34
+ if (isNested(value))
35
+ blocks.push(`${key}:\n${indent(human(value))}`);
36
+ else
37
+ lines.push(`${key.padEnd(width)} ${short(scalarText(value), 100)}`);
38
+ }
39
+ return [...(lines.length > 0 ? [lines.join("\n")] : []), ...blocks].join("\n\n");
40
+ }
41
+ const isNested = (value) => (Array.isArray(value) && value.some((item) => !isScalar(item))) || (isPlainObject(value) && Object.values(value).some((v) => !isScalar(v)));
42
+ const indent = (text) => text.split("\n").map((line) => ` ${line}`).join("\n");
43
+ /** A value as a person reads it at a terminal. */
44
+ export function human(value) {
45
+ if (value === undefined || value === null)
46
+ return "";
47
+ if (isScalar(value))
48
+ return scalarText(value);
49
+ if (Array.isArray(value)) {
50
+ if (value.length === 0)
51
+ return "(none)";
52
+ if (value.every(isPlainObject))
53
+ return table(value);
54
+ return value.map((item) => (isScalar(item) ? scalarText(item) : human(item))).join("\n");
55
+ }
56
+ const object = value;
57
+ // A write says first what it did.
58
+ if (typeof object.changed === "string") {
59
+ const { changed, ...rest } = object;
60
+ const after = Object.keys(rest).length > 0 ? `\n\n${keyValues(rest)}` : "";
61
+ return `✔ ${changed}${after}`;
62
+ }
63
+ return keyValues(object);
64
+ }
65
+ /** What the command prints for a result: JSON for scripts, else for a person. */
66
+ export function render(value, json) {
67
+ if (json)
68
+ return JSON.stringify(value ?? null, null, 2);
69
+ return human(value);
70
+ }
71
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Moodle, MoodleOptions } from "../client.js";
2
+ export interface CliDeps {
3
+ createMoodle: (options: MoodleOptions) => Moodle;
4
+ stdout: (text: string) => void;
5
+ stderr: (text: string) => void;
6
+ env: NodeJS.ProcessEnv;
7
+ cwd: string;
8
+ /** The command's home: the default site, and a folder per site with its profiles (ADR-013). */
9
+ home: string;
10
+ /** Whether stdout is a terminal: progress and readable output then, JSON to a pipe. */
11
+ interactive: boolean;
12
+ version: string;
13
+ }
14
+ /** Runs one command line; returns the exit status (0 done, 1 failed, 2 a command line that doesn't fit). */
15
+ export declare function run(argv: string[], deps: CliDeps): Promise<number>;
@@ -0,0 +1,194 @@
1
+ // The `moodle` command (ADR-012): every method of the Moodle object from a terminal. `run` takes its
2
+ // surroundings as arguments, so tests run it against the fake Moodle.
3
+ import { mkdirSync, rmSync } from "node:fs";
4
+ import path from "node:path";
5
+ import { ALL_DATA_CATEGORIES, DATA_CATEGORIES } from "../categories.js";
6
+ import { MoodleError } from "../core/errors.js";
7
+ import { NotLoggedInError } from "../core/session.js";
8
+ import { parseSiteUrl } from "../options.js";
9
+ import { UsageError, commandName, findCommand, kebab, methodArguments, splitLine } from "./args.js";
10
+ import { COMMANDS } from "./commands.generated.js";
11
+ import { forgetSite, listSites, loadConfig, loadSite, nameProfile, pendingProfile, profileFor, saveConfig, saveSite } from "./config.js";
12
+ import { render } from "./output.js";
13
+ const firstSentence = (text) => (/^.*?\.(\s|$)/.exec(text)?.[0] ?? text).trim().replace(/\.$/, "");
14
+ function overview() {
15
+ const width = Math.max(...COMMANDS.map((c) => kebab(c.name).length));
16
+ return [
17
+ "moodle: every operation of moodle-driver, from a terminal.",
18
+ "",
19
+ "Usage: moodle <command> [arguments] [--options]",
20
+ "",
21
+ "Start with: moodle login --site https://campus.example.org/",
22
+ "Then: moodle list-courses, moodle my-grades 3, moodle help <command>",
23
+ "",
24
+ "Global options:",
25
+ " --site <url> The Moodle site (remembered after login; or MOODLE_SITE)",
26
+ " --as <name> The profile on the site, by name (or MOODLE_AS; the site's default unless told)",
27
+ " --profile <dir> A browser profile folder of your own (or MOODLE_PROFILE)",
28
+ " --json Print JSON (the default when the output isn't a terminal)",
29
+ " --show Show the browser while the command works",
30
+ " --allow <list> Refuse commands that touch other data categories (own,course-content,…)",
31
+ " --help, --version",
32
+ "",
33
+ "The command's own:",
34
+ ` ${"sites".padEnd(width)} The sites and profiles logged in to, which is the default, and whether each has a session`,
35
+ ` ${"forget".padEnd(width)} Deletes a site and its sessions (forget <site>), or one account's profile (--as <name>)`,
36
+ "",
37
+ "Commands:",
38
+ ...COMMANDS.map((c) => ` ${kebab(c.name).padEnd(width)} ${firstSentence(c.description).slice(0, 90)}`),
39
+ ].join("\n");
40
+ }
41
+ function commandHelp(command) {
42
+ const usage = [`moodle ${kebab(command.name)}`, ...command.params.map((p) => (p.optional ? `[${p.name}]` : `<${p.name}>`)), ...(command.options ? ["[--options]"] : [])].join(" ");
43
+ const lines = [`Usage: ${usage}`, "", command.description];
44
+ if (command.params.length > 0) {
45
+ lines.push("", "Arguments:");
46
+ for (const p of command.params)
47
+ lines.push(` ${p.name}${p.optional ? " (optional)" : ""} ${p.type}${p.description ? ` ${p.description}` : ""}`);
48
+ }
49
+ if (command.options) {
50
+ lines.push("", `Options (--json '{…}' gives ${command.options.name} whole):`);
51
+ for (const f of command.options.fields)
52
+ lines.push(` --${kebab(f.name)}${f.optional ? "" : " (required)"} ${f.type}${f.description ? ` ${f.description}` : ""}`);
53
+ if (command.options.open)
54
+ lines.push(` --<name> <value> any other field of ${command.options.name}`);
55
+ }
56
+ const categories = categoriesOf(command.name);
57
+ if (categories)
58
+ lines.push("", `Data: ${categories.join(", ")}`);
59
+ return lines.join("\n");
60
+ }
61
+ const categoriesOf = (name) => DATA_CATEGORIES[name] ?? DATA_CATEGORIES[`Moodle.${name}`];
62
+ /** Runs one command line; returns the exit status (0 done, 1 failed, 2 a command line that doesn't fit). */
63
+ export async function run(argv, deps) {
64
+ let moodle;
65
+ // A first login's provisional profile, removed if the login doesn't get to name it.
66
+ let pending;
67
+ try {
68
+ const typed = commandName(argv);
69
+ const own = typed === "sites" || typed === "forget";
70
+ const command = typed && typed !== "help" && !own ? findCommand(COMMANDS, typed) : undefined;
71
+ const { global, positionals, flags } = splitLine(argv, command);
72
+ if (global.version) {
73
+ deps.stdout(deps.version);
74
+ return 0;
75
+ }
76
+ if (typed === "help") {
77
+ const about = positionals[0] ? findCommand(COMMANDS, positionals[0]) : undefined;
78
+ if (positionals[0] && !about)
79
+ throw new UsageError(`There's no command "${positionals[0]}".`);
80
+ deps.stdout(about ? commandHelp(about) : overview());
81
+ return 0;
82
+ }
83
+ if (!typed) {
84
+ deps.stdout(overview());
85
+ return global.help ? 0 : 2;
86
+ }
87
+ if (typed === "sites") {
88
+ const text = render(listSites(deps.home), global.json || !deps.interactive);
89
+ deps.stdout(text === "(none)" ? "No sites yet: `moodle login --site https://campus.example.org/`." : text);
90
+ return 0;
91
+ }
92
+ if (typed === "forget") {
93
+ const target = positionals[0];
94
+ if (!target)
95
+ throw new UsageError("forget needs <site>: `moodle sites` lists them.");
96
+ const gone = forgetSite(deps.home, parseSiteUrl(target), global.as);
97
+ if (gone.length === 0) {
98
+ deps.stderr(`not-found: ${target}${global.as ? ` has no profile ${global.as}` : " isn't a site logged in to"}; \`moodle sites\` lists them.`);
99
+ return 1;
100
+ }
101
+ deps.stdout(`✔ Deleted ${gone.join(", ")}`);
102
+ return 0;
103
+ }
104
+ if (!command)
105
+ throw new UsageError(`There's no command "${typed}". \`moodle help\` lists them.`);
106
+ if (global.help) {
107
+ deps.stdout(commandHelp(command));
108
+ return 0;
109
+ }
110
+ const config = loadConfig(deps.home);
111
+ const rawSite = global.site ?? deps.env.MOODLE_SITE ?? config.site;
112
+ if (!rawSite)
113
+ throw new UsageError("No site yet: log in first with `moodle login --site https://campus.example.org/`, or give --site.");
114
+ const site = parseSiteUrl(rawSite);
115
+ const ownProfile = global.profile ?? deps.env.MOODLE_PROFILE;
116
+ const loggingIn = command.name === "logIn";
117
+ const chosen = profileFor(deps.home, site, { profile: ownProfile, as: global.as ?? deps.env.MOODLE_AS });
118
+ // A first login with no name for its profile: a provisional folder, named after the person's username once in.
119
+ pending = !chosen && loggingIn ? pendingProfile(deps.home, site) : undefined;
120
+ // What anyone can ask without logging in needs no browser, so no profile either.
121
+ const browserless = command.name === "publicSiteInfo";
122
+ if (!chosen && !pending && !browserless) {
123
+ const names = listSites(deps.home).filter((p) => p.site === site).map((p) => p.profile);
124
+ if (names.length > 0)
125
+ throw new UsageError(`${site} has no default profile: pick one with --as (${names.join(", ")}), or make one the default with \`moodle login --as <name>\`.`);
126
+ throw new UsageError(`No profile for ${site} yet: log in with \`moodle login --site ${site}\`.`);
127
+ }
128
+ // A browserless command never opens this folder: the object launches no browser until it needs one.
129
+ const profileDir = chosen?.profileDir ?? pending ?? path.join(deps.home, "sites", ".none");
130
+ // A profile logged in to for the first time has its folder from now on, browser or not.
131
+ if (loggingIn)
132
+ mkdirSync(profileDir, { recursive: true });
133
+ if (global.allow) {
134
+ const allowed = global.allow.split(",").map((c) => c.trim());
135
+ const unknown = allowed.filter((c) => !ALL_DATA_CATEGORIES.includes(c));
136
+ if (unknown.length > 0)
137
+ throw new UsageError(`Unknown data categories in --allow: ${unknown.join(", ")}. They are ${ALL_DATA_CATEGORIES.join(", ")}.`);
138
+ const outside = (categoriesOf(command.name) ?? ["any"]).filter((c) => !allowed.includes(c));
139
+ if (outside.length > 0) {
140
+ deps.stderr(`refused: ${kebab(command.name)} touches ${outside.join(", ")}, outside --allow ${allowed.join(",")}.`);
141
+ return 1;
142
+ }
143
+ }
144
+ const args = methodArguments(command, positionals, flags, deps.cwd);
145
+ const progress = deps.interactive ? (elapsed, total) => deps.stderr(` reading… ${Math.round(elapsed)}${total ? `/${Math.round(total)}` : ""} s`) : undefined;
146
+ moodle = deps.createMoodle({ site, profileDir, headless: true, downloadBrowser: true, downloadDir: deps.cwd, onProgress: progress });
147
+ if (global.show)
148
+ await moodle.setVisible(true);
149
+ const method = moodle[command.name];
150
+ const result = await method.apply(moodle, args);
151
+ if (loggingIn) {
152
+ // The site becomes the default, and the profile logged in with becomes the site's.
153
+ let name = chosen?.name;
154
+ if (pending) {
155
+ const userId = result.userId;
156
+ const username = await moodle.whoAmI().then((me) => me.username).catch(() => undefined);
157
+ await moodle.close();
158
+ name = nameProfile(deps.home, site, pending, username ?? `user-${userId}`);
159
+ pending = undefined;
160
+ }
161
+ const record = loadSite(deps.home, site);
162
+ saveSite(deps.home, { url: site, default: ownProfile ? undefined : name, profileDir: ownProfile ?? record?.profileDir });
163
+ saveConfig(deps.home, { ...config, site });
164
+ if (name && deps.interactive)
165
+ deps.stderr(`Profile "${name}" is the default for ${site}.`);
166
+ }
167
+ const text = render(result, global.json || !deps.interactive);
168
+ if (text)
169
+ deps.stdout(text);
170
+ return 0;
171
+ }
172
+ catch (error) {
173
+ if (error instanceof UsageError) {
174
+ deps.stderr(`${error.message}\n${error.message.includes("moodle help") ? "" : "`moodle help` lists the commands; `moodle help <command>` explains one."}`.trimEnd());
175
+ return 2;
176
+ }
177
+ if (error instanceof NotLoggedInError) {
178
+ deps.stderr(`${error.code}: ${error.message}\nLog in again with \`moodle login\`.`);
179
+ return 1;
180
+ }
181
+ if (error instanceof MoodleError) {
182
+ deps.stderr(`${error.code}: ${error.message}`);
183
+ return 1;
184
+ }
185
+ deps.stderr(error instanceof Error ? error.message : String(error));
186
+ return 1;
187
+ }
188
+ finally {
189
+ await moodle?.close().catch(() => undefined);
190
+ if (pending)
191
+ rmSync(pending, { recursive: true, force: true });
192
+ }
193
+ }
194
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /** How a value typed on the command line becomes the argument the method takes. */
2
+ export type ValueKind = {
3
+ kind: "number";
4
+ } | {
5
+ kind: "string";
6
+ } | {
7
+ kind: "boolean";
8
+ } | {
9
+ kind: "date";
10
+ } | {
11
+ kind: "enum";
12
+ values: string[];
13
+ } | {
14
+ kind: "numbers";
15
+ } | {
16
+ kind: "strings";
17
+ } | {
18
+ kind: "json";
19
+ };
20
+ export interface ParamSpec {
21
+ name: string;
22
+ optional: boolean;
23
+ /** The TypeScript type, as the API reference shows it. */
24
+ type: string;
25
+ value: ValueKind;
26
+ description?: string;
27
+ }
28
+ export interface CommandSpec {
29
+ /** The method's name: the command, also typed in kebab-case. */
30
+ name: string;
31
+ description: string;
32
+ /** The positional arguments, in order. */
33
+ params: ParamSpec[];
34
+ /** The last parameter, when it's an options object: its fields are `--flags`, or `--json` gives it whole. */
35
+ options?: {
36
+ name: string;
37
+ optional: boolean;
38
+ /** Takes any field (a service's arguments): unknown flags are passed as they come. */
39
+ open: boolean;
40
+ fields: ParamSpec[];
41
+ };
42
+ }