brightspace-mcp-server 3.2.0 → 3.4.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 (303) hide show
  1. package/README.md +1 -0
  2. package/build/api/cache.js +0 -1
  3. package/build/api/client.js +0 -1
  4. package/build/api/errors.js +0 -1
  5. package/build/api/index.js +0 -1
  6. package/build/api/paginate.js +0 -1
  7. package/build/api/rate-limiter.js +0 -1
  8. package/build/api/retry.js +0 -1
  9. package/build/api/types.js +0 -1
  10. package/build/api/version-discovery.js +0 -1
  11. package/build/auth/auth-cooldown.js +0 -1
  12. package/build/auth/auth-lock.js +0 -1
  13. package/build/auth/auth-runner.js +0 -1
  14. package/build/auth/browser-auth.js +0 -1
  15. package/build/auth/browser-state-store.js +0 -1
  16. package/build/auth/credential-store.js +0 -1
  17. package/build/auth/duo-mfa.js +0 -1
  18. package/build/auth/encrypted-store.js +0 -1
  19. package/build/auth/index.js +0 -1
  20. package/build/auth/legacy-profile.js +0 -1
  21. package/build/auth/legacy-state.js +0 -1
  22. package/build/auth/purdue-sso.js +0 -1
  23. package/build/auth/session-store.js +0 -1
  24. package/build/auth/sso-flow.js +0 -1
  25. package/build/auth/suny-sso.js +0 -1
  26. package/build/auth/token-manager.js +0 -1
  27. package/build/auth/token-mint.js +0 -1
  28. package/build/auth/western-sso.js +0 -1
  29. package/build/auth-cli.js +0 -1
  30. package/build/index.js +4 -4
  31. package/build/setup.js +0 -1
  32. package/build/tools/download-file.js +0 -1
  33. package/build/tools/get-announcements.js +0 -3
  34. package/build/tools/get-assignment-files.js +0 -1
  35. package/build/tools/get-assignments.js +5 -6
  36. package/build/tools/get-classlist-emails.js +0 -1
  37. package/build/tools/get-course-content.js +8 -9
  38. package/build/tools/get-discussions.js +0 -1
  39. package/build/tools/get-my-courses.js +0 -1
  40. package/build/tools/get-my-grades.js +0 -1
  41. package/build/tools/get-roster.js +0 -1
  42. package/build/tools/get-server-info.js +32 -0
  43. package/build/tools/get-syllabus.js +1 -2
  44. package/build/tools/get-upcoming-due-dates.js +0 -1
  45. package/build/tools/get-video-transcript.js +0 -1
  46. package/build/tools/index.js +1 -1
  47. package/build/tools/schemas.js +1 -1
  48. package/build/tools/tool-helpers.js +1 -2
  49. package/build/types/index.js +0 -1
  50. package/build/update.js +0 -1
  51. package/build/utils/atomic-write.js +0 -1
  52. package/build/utils/browser-install.js +0 -1
  53. package/build/utils/commands.js +0 -1
  54. package/build/utils/config-store.js +0 -1
  55. package/build/utils/config.js +0 -1
  56. package/build/utils/course-filter.js +0 -1
  57. package/build/utils/deep-links.js +0 -1
  58. package/build/utils/download-errors.js +0 -1
  59. package/build/utils/download-helpers.js +0 -1
  60. package/build/utils/errors.js +0 -1
  61. package/build/utils/file-validator.js +10 -2
  62. package/build/utils/html-converter.js +16 -11
  63. package/build/utils/install-sites.js +0 -1
  64. package/build/utils/logger.js +0 -1
  65. package/build/utils/mcp-client-cli.js +0 -1
  66. package/build/utils/modified-since.js +0 -1
  67. package/build/utils/pdf-extractor.js +0 -1
  68. package/build/utils/secure-config.js +0 -1
  69. package/build/utils/self-update.js +0 -1
  70. package/build/utils/transcript/captions.js +0 -1
  71. package/build/utils/transcript/errors.js +0 -1
  72. package/build/utils/transcript/kaltura.js +0 -1
  73. package/build/utils/transcript/platform.js +0 -1
  74. package/build/utils/transcript/types.js +0 -1
  75. package/build/utils/transcript/youtube.js +0 -1
  76. package/build/utils/update-checker.js +0 -1
  77. package/build/utils/zip-extract.js +0 -1
  78. package/package.json +1 -2
  79. package/build/api/cache.d.ts +0 -15
  80. package/build/api/cache.d.ts.map +0 -1
  81. package/build/api/cache.js.map +0 -1
  82. package/build/api/client.d.ts +0 -141
  83. package/build/api/client.d.ts.map +0 -1
  84. package/build/api/client.js.map +0 -1
  85. package/build/api/errors.d.ts +0 -27
  86. package/build/api/errors.d.ts.map +0 -1
  87. package/build/api/errors.js.map +0 -1
  88. package/build/api/index.d.ts +0 -13
  89. package/build/api/index.d.ts.map +0 -1
  90. package/build/api/index.js.map +0 -1
  91. package/build/api/paginate.d.ts +0 -23
  92. package/build/api/paginate.d.ts.map +0 -1
  93. package/build/api/paginate.js.map +0 -1
  94. package/build/api/rate-limiter.d.ts +0 -17
  95. package/build/api/rate-limiter.d.ts.map +0 -1
  96. package/build/api/rate-limiter.js.map +0 -1
  97. package/build/api/retry.d.ts +0 -42
  98. package/build/api/retry.d.ts.map +0 -1
  99. package/build/api/retry.js.map +0 -1
  100. package/build/api/types.d.ts +0 -39
  101. package/build/api/types.d.ts.map +0 -1
  102. package/build/api/types.js.map +0 -1
  103. package/build/api/version-discovery.d.ts +0 -16
  104. package/build/api/version-discovery.d.ts.map +0 -1
  105. package/build/api/version-discovery.js.map +0 -1
  106. package/build/auth/auth-cooldown.d.ts +0 -24
  107. package/build/auth/auth-cooldown.d.ts.map +0 -1
  108. package/build/auth/auth-cooldown.js.map +0 -1
  109. package/build/auth/auth-lock.d.ts +0 -7
  110. package/build/auth/auth-lock.d.ts.map +0 -1
  111. package/build/auth/auth-lock.js.map +0 -1
  112. package/build/auth/auth-runner.d.ts +0 -61
  113. package/build/auth/auth-runner.d.ts.map +0 -1
  114. package/build/auth/auth-runner.js.map +0 -1
  115. package/build/auth/browser-auth.d.ts +0 -94
  116. package/build/auth/browser-auth.d.ts.map +0 -1
  117. package/build/auth/browser-auth.js.map +0 -1
  118. package/build/auth/browser-state-store.d.ts +0 -19
  119. package/build/auth/browser-state-store.d.ts.map +0 -1
  120. package/build/auth/browser-state-store.js.map +0 -1
  121. package/build/auth/credential-store.d.ts +0 -29
  122. package/build/auth/credential-store.d.ts.map +0 -1
  123. package/build/auth/credential-store.js.map +0 -1
  124. package/build/auth/duo-mfa.d.ts +0 -23
  125. package/build/auth/duo-mfa.d.ts.map +0 -1
  126. package/build/auth/duo-mfa.js.map +0 -1
  127. package/build/auth/encrypted-store.d.ts +0 -25
  128. package/build/auth/encrypted-store.d.ts.map +0 -1
  129. package/build/auth/encrypted-store.js.map +0 -1
  130. package/build/auth/index.d.ts +0 -14
  131. package/build/auth/index.d.ts.map +0 -1
  132. package/build/auth/index.js.map +0 -1
  133. package/build/auth/legacy-profile.d.ts +0 -3
  134. package/build/auth/legacy-profile.d.ts.map +0 -1
  135. package/build/auth/legacy-profile.js.map +0 -1
  136. package/build/auth/legacy-state.d.ts +0 -14
  137. package/build/auth/legacy-state.d.ts.map +0 -1
  138. package/build/auth/legacy-state.js.map +0 -1
  139. package/build/auth/purdue-sso.d.ts +0 -57
  140. package/build/auth/purdue-sso.d.ts.map +0 -1
  141. package/build/auth/purdue-sso.js.map +0 -1
  142. package/build/auth/session-store.d.ts +0 -28
  143. package/build/auth/session-store.d.ts.map +0 -1
  144. package/build/auth/session-store.js.map +0 -1
  145. package/build/auth/sso-flow.d.ts +0 -42
  146. package/build/auth/sso-flow.d.ts.map +0 -1
  147. package/build/auth/sso-flow.js.map +0 -1
  148. package/build/auth/suny-sso.d.ts +0 -53
  149. package/build/auth/suny-sso.d.ts.map +0 -1
  150. package/build/auth/suny-sso.js.map +0 -1
  151. package/build/auth/token-manager.d.ts +0 -74
  152. package/build/auth/token-manager.d.ts.map +0 -1
  153. package/build/auth/token-manager.js.map +0 -1
  154. package/build/auth/token-mint.d.ts +0 -32
  155. package/build/auth/token-mint.d.ts.map +0 -1
  156. package/build/auth/token-mint.js.map +0 -1
  157. package/build/auth/western-sso.d.ts +0 -15
  158. package/build/auth/western-sso.d.ts.map +0 -1
  159. package/build/auth/western-sso.js.map +0 -1
  160. package/build/auth-cli.d.ts +0 -4
  161. package/build/auth-cli.d.ts.map +0 -1
  162. package/build/auth-cli.js.map +0 -1
  163. package/build/index.d.ts +0 -10
  164. package/build/index.d.ts.map +0 -1
  165. package/build/index.js.map +0 -1
  166. package/build/setup.d.ts +0 -10
  167. package/build/setup.d.ts.map +0 -1
  168. package/build/setup.js.map +0 -1
  169. package/build/tools/download-file.d.ts +0 -16
  170. package/build/tools/download-file.d.ts.map +0 -1
  171. package/build/tools/download-file.js.map +0 -1
  172. package/build/tools/get-announcements.d.ts +0 -77
  173. package/build/tools/get-announcements.d.ts.map +0 -1
  174. package/build/tools/get-announcements.js.map +0 -1
  175. package/build/tools/get-assignment-files.d.ts +0 -12
  176. package/build/tools/get-assignment-files.d.ts.map +0 -1
  177. package/build/tools/get-assignment-files.js.map +0 -1
  178. package/build/tools/get-assignments.d.ts +0 -19
  179. package/build/tools/get-assignments.d.ts.map +0 -1
  180. package/build/tools/get-assignments.js.map +0 -1
  181. package/build/tools/get-classlist-emails.d.ts +0 -12
  182. package/build/tools/get-classlist-emails.d.ts.map +0 -1
  183. package/build/tools/get-classlist-emails.js.map +0 -1
  184. package/build/tools/get-course-content.d.ts +0 -12
  185. package/build/tools/get-course-content.d.ts.map +0 -1
  186. package/build/tools/get-course-content.js.map +0 -1
  187. package/build/tools/get-discussions.d.ts +0 -12
  188. package/build/tools/get-discussions.d.ts.map +0 -1
  189. package/build/tools/get-discussions.js.map +0 -1
  190. package/build/tools/get-my-courses.d.ts +0 -13
  191. package/build/tools/get-my-courses.d.ts.map +0 -1
  192. package/build/tools/get-my-courses.js.map +0 -1
  193. package/build/tools/get-my-grades.d.ts +0 -13
  194. package/build/tools/get-my-grades.d.ts.map +0 -1
  195. package/build/tools/get-my-grades.js.map +0 -1
  196. package/build/tools/get-roster.d.ts +0 -12
  197. package/build/tools/get-roster.d.ts.map +0 -1
  198. package/build/tools/get-roster.js.map +0 -1
  199. package/build/tools/get-syllabus.d.ts +0 -12
  200. package/build/tools/get-syllabus.d.ts.map +0 -1
  201. package/build/tools/get-syllabus.js.map +0 -1
  202. package/build/tools/get-upcoming-due-dates.d.ts +0 -13
  203. package/build/tools/get-upcoming-due-dates.d.ts.map +0 -1
  204. package/build/tools/get-upcoming-due-dates.js.map +0 -1
  205. package/build/tools/get-video-transcript.d.ts +0 -13
  206. package/build/tools/get-video-transcript.d.ts.map +0 -1
  207. package/build/tools/get-video-transcript.js.map +0 -1
  208. package/build/tools/index.d.ts +0 -21
  209. package/build/tools/index.d.ts.map +0 -1
  210. package/build/tools/index.js.map +0 -1
  211. package/build/tools/schemas.d.ts +0 -83
  212. package/build/tools/schemas.d.ts.map +0 -1
  213. package/build/tools/schemas.js.map +0 -1
  214. package/build/tools/tool-helpers.d.ts +0 -27
  215. package/build/tools/tool-helpers.d.ts.map +0 -1
  216. package/build/tools/tool-helpers.js.map +0 -1
  217. package/build/types/index.d.ts +0 -63
  218. package/build/types/index.d.ts.map +0 -1
  219. package/build/types/index.js.map +0 -1
  220. package/build/update.d.ts +0 -10
  221. package/build/update.d.ts.map +0 -1
  222. package/build/update.js.map +0 -1
  223. package/build/utils/atomic-write.d.ts +0 -18
  224. package/build/utils/atomic-write.d.ts.map +0 -1
  225. package/build/utils/atomic-write.js.map +0 -1
  226. package/build/utils/browser-install.d.ts +0 -23
  227. package/build/utils/browser-install.d.ts.map +0 -1
  228. package/build/utils/browser-install.js.map +0 -1
  229. package/build/utils/commands.d.ts +0 -26
  230. package/build/utils/commands.d.ts.map +0 -1
  231. package/build/utils/commands.js.map +0 -1
  232. package/build/utils/config-store.d.ts +0 -24
  233. package/build/utils/config-store.d.ts.map +0 -1
  234. package/build/utils/config-store.js.map +0 -1
  235. package/build/utils/config.d.ts +0 -10
  236. package/build/utils/config.d.ts.map +0 -1
  237. package/build/utils/config.js.map +0 -1
  238. package/build/utils/course-filter.d.ts +0 -31
  239. package/build/utils/course-filter.d.ts.map +0 -1
  240. package/build/utils/course-filter.js.map +0 -1
  241. package/build/utils/deep-links.d.ts +0 -17
  242. package/build/utils/deep-links.d.ts.map +0 -1
  243. package/build/utils/deep-links.js.map +0 -1
  244. package/build/utils/download-errors.d.ts +0 -45
  245. package/build/utils/download-errors.d.ts.map +0 -1
  246. package/build/utils/download-errors.js.map +0 -1
  247. package/build/utils/download-helpers.d.ts +0 -31
  248. package/build/utils/download-helpers.d.ts.map +0 -1
  249. package/build/utils/download-helpers.js.map +0 -1
  250. package/build/utils/errors.d.ts +0 -21
  251. package/build/utils/errors.d.ts.map +0 -1
  252. package/build/utils/errors.js.map +0 -1
  253. package/build/utils/file-validator.d.ts +0 -56
  254. package/build/utils/file-validator.d.ts.map +0 -1
  255. package/build/utils/file-validator.js.map +0 -1
  256. package/build/utils/html-converter.d.ts +0 -17
  257. package/build/utils/html-converter.d.ts.map +0 -1
  258. package/build/utils/html-converter.js.map +0 -1
  259. package/build/utils/install-sites.d.ts +0 -60
  260. package/build/utils/install-sites.d.ts.map +0 -1
  261. package/build/utils/install-sites.js.map +0 -1
  262. package/build/utils/logger.d.ts +0 -10
  263. package/build/utils/logger.d.ts.map +0 -1
  264. package/build/utils/logger.js.map +0 -1
  265. package/build/utils/mcp-client-cli.d.ts +0 -12
  266. package/build/utils/mcp-client-cli.d.ts.map +0 -1
  267. package/build/utils/mcp-client-cli.js.map +0 -1
  268. package/build/utils/modified-since.d.ts +0 -19
  269. package/build/utils/modified-since.d.ts.map +0 -1
  270. package/build/utils/modified-since.js.map +0 -1
  271. package/build/utils/pdf-extractor.d.ts +0 -14
  272. package/build/utils/pdf-extractor.d.ts.map +0 -1
  273. package/build/utils/pdf-extractor.js.map +0 -1
  274. package/build/utils/secure-config.d.ts +0 -6
  275. package/build/utils/secure-config.d.ts.map +0 -1
  276. package/build/utils/secure-config.js.map +0 -1
  277. package/build/utils/self-update.d.ts +0 -61
  278. package/build/utils/self-update.d.ts.map +0 -1
  279. package/build/utils/self-update.js.map +0 -1
  280. package/build/utils/transcript/captions.d.ts +0 -40
  281. package/build/utils/transcript/captions.d.ts.map +0 -1
  282. package/build/utils/transcript/captions.js.map +0 -1
  283. package/build/utils/transcript/errors.d.ts +0 -14
  284. package/build/utils/transcript/errors.d.ts.map +0 -1
  285. package/build/utils/transcript/errors.js.map +0 -1
  286. package/build/utils/transcript/kaltura.d.ts +0 -8
  287. package/build/utils/transcript/kaltura.d.ts.map +0 -1
  288. package/build/utils/transcript/kaltura.js.map +0 -1
  289. package/build/utils/transcript/platform.d.ts +0 -23
  290. package/build/utils/transcript/platform.d.ts.map +0 -1
  291. package/build/utils/transcript/platform.js.map +0 -1
  292. package/build/utils/transcript/types.d.ts +0 -22
  293. package/build/utils/transcript/types.d.ts.map +0 -1
  294. package/build/utils/transcript/types.js.map +0 -1
  295. package/build/utils/transcript/youtube.d.ts +0 -8
  296. package/build/utils/transcript/youtube.d.ts.map +0 -1
  297. package/build/utils/transcript/youtube.js.map +0 -1
  298. package/build/utils/update-checker.d.ts +0 -112
  299. package/build/utils/update-checker.d.ts.map +0 -1
  300. package/build/utils/update-checker.js.map +0 -1
  301. package/build/utils/zip-extract.d.ts +0 -15
  302. package/build/utils/zip-extract.d.ts.map +0 -1
  303. package/build/utils/zip-extract.js.map +0 -1
@@ -23,4 +23,3 @@ export function matchesModifiedSince(lastModified, cutoff) {
23
23
  return true;
24
24
  return time >= cutoff.getTime();
25
25
  }
26
- //# sourceMappingURL=modified-since.js.map
@@ -24,4 +24,3 @@ export async function extractPdfText(buffer) {
24
24
  return null;
25
25
  }
26
26
  }
27
- //# sourceMappingURL=pdf-extractor.js.map
@@ -54,4 +54,3 @@ export async function resolveStoredPassword(baseUrl, username, store) {
54
54
  }
55
55
  return (await getStoredPassword(baseUrl, username)) ?? undefined;
56
56
  }
57
- //# sourceMappingURL=secure-config.js.map
@@ -89,4 +89,3 @@ export async function reexecLatestIfStale(deps = {}) {
89
89
  child.on("exit", (code) => resolve(code ?? 1));
90
90
  });
91
91
  }
92
- //# sourceMappingURL=self-update.js.map
@@ -60,4 +60,3 @@ export function paginateText(text, offset, maxChars) {
60
60
  const truncated = offset + maxChars < totalChars;
61
61
  return { window, truncated, nextOffset: truncated ? offset + maxChars : null, totalChars };
62
62
  }
63
- //# sourceMappingURL=captions.js.map
@@ -17,4 +17,3 @@ export class TranscriptFetchError extends Error {
17
17
  this.name = "TranscriptFetchError";
18
18
  }
19
19
  }
20
- //# sourceMappingURL=errors.js.map
@@ -91,4 +91,3 @@ export async function getKalturaTranscript(partnerId, entryId, fetchImpl) {
91
91
  durationSeconds: media.durationSeconds,
92
92
  };
93
93
  }
94
- //# sourceMappingURL=kaltura.js.map
@@ -95,4 +95,3 @@ export function extractYouTubeVideoId(url) {
95
95
  }
96
96
  return null;
97
97
  }
98
- //# sourceMappingURL=platform.js.map
@@ -4,4 +4,3 @@
4
4
  * Licensed under MIT — see LICENSE file for details.
5
5
  */
6
6
  export {};
7
- //# sourceMappingURL=types.js.map
@@ -54,4 +54,3 @@ export async function getYouTubeTranscript(videoId, fetchImpl) {
54
54
  const title = await fetchTitle(videoId, fetchImpl);
55
55
  return { cues, format, language: lang, title, durationSeconds: null };
56
56
  }
57
- //# sourceMappingURL=youtube.js.map
@@ -229,4 +229,3 @@ export function getUpdateNotice(now = Date.now(), minIntervalMs = NOTICE_REPEAT_
229
229
  export function clearUpdateNotice() {
230
230
  state = null;
231
231
  }
232
- //# sourceMappingURL=update-checker.js.map
@@ -167,4 +167,3 @@ export function officeDocumentText(buffer) {
167
167
  function slideNumber(name) {
168
168
  return Number(/slide(\d+)\.xml$/.exec(name)?.[1] ?? 0);
169
169
  }
170
- //# sourceMappingURL=zip-extract.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brightspace-mcp-server",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "mcpName": "io.github.rohanmuppa/brightspace",
5
5
  "description": "MCP server for Brightspace (D2L). Check grades, due dates, assignments, announcements, syllabus, rosters and more via Claude, ChatGPT, Cursor, Windsurf, or any MCP client.",
6
6
  "type": "module",
@@ -29,7 +29,6 @@
29
29
  "dependencies": {
30
30
  "@modelcontextprotocol/sdk": "^1.26.0",
31
31
  "@napi-rs/keyring": "^2.0.0",
32
- "ajv": "^8.18.0",
33
32
  "dotenv": "^17.2.4",
34
33
  "file-type": "^21.3.0",
35
34
  "playwright": "^1.58.2",
@@ -1,15 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT — see LICENSE file for details.
5
- */
6
- export declare class TTLCache<T = unknown> {
7
- private cache;
8
- set(key: string, value: T, ttlMs: number): void;
9
- get(key: string): T | undefined;
10
- has(key: string): boolean;
11
- delete(key: string): boolean;
12
- clear(): void;
13
- get size(): number;
14
- }
15
- //# sourceMappingURL=cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/api/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,qBAAa,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC/B,OAAO,CAAC,KAAK,CAAoC;IAEjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAsB/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAK/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU5B,KAAK,IAAI,IAAI;IASb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/api/cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,MAAM,OAAO,QAAQ;IACX,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEjD,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,KAAa;QACtC,qCAAqC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,yCAAyC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,iEAAiE;QACjE,sEAAsE;QACtE,kCAAkC;QAClC,IAAI,OAAQ,OAAkC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACnE,OAAiC,CAAC,KAAK,EAAE,CAAC;QAC7C,CAAC;QAED,cAAc;QACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,EAAE,IAAI,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,mBAAmB;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,YAAY;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
@@ -1,141 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT — see LICENSE file for details.
5
- */
6
- import type { D2LApiClientOptions, ApiVersions } from "./types.js";
7
- /**
8
- * D2L API client with authentication, caching, rate limiting, and version discovery.
9
- *
10
- * Key features:
11
- * - Auto-discovers LP/LE versions from /d2l/api/versions/ on the first request
12
- * - Supports both Bearer tokens and cookie-based auth (auto-detected via "cookie:" prefix)
13
- * - Client-side rate limiting using token bucket algorithm
14
- * - In-memory response caching with per-data-type TTLs
15
- * - 401 recovery: refresh the token before requesting browser authentication
16
- * - HTTPS-only enforcement
17
- * - Browser-like User-Agent for requests
18
- * - Raw response passthrough (no transformation)
19
- */
20
- export declare class D2LApiClient {
21
- private readonly baseUrl;
22
- private readonly tokenManager;
23
- private readonly cache;
24
- private readonly rateLimiter;
25
- private readonly cacheTTLs;
26
- private readonly timeoutMs;
27
- private readonly onAuthExpired?;
28
- private readonly retryConfig;
29
- private versions;
30
- /** Single in-flight discovery, so concurrent first requests share one fetch. */
31
- private versionsInFlight;
32
- constructor(options: D2LApiClientOptions);
33
- /**
34
- * Discover the API versions, joining a discovery already in flight.
35
- *
36
- * Called from get() and getRaw() rather than at startup, so the server
37
- * answers tools/list without touching the network and a user who never
38
- * calls a tool never pays for a request. Nothing needs to call this
39
- * directly.
40
- */
41
- ensureVersions(): Promise<ApiVersions>;
42
- /**
43
- * Discover API versions eagerly. Idempotent, and no longer required:
44
- * requests discover on demand. Kept for callers that want the network
45
- * failure up front rather than on the first tool call.
46
- */
47
- initialize(): Promise<void>;
48
- /**
49
- * Get discovered API versions.
50
- * @throws Error if no request has discovered them yet
51
- */
52
- get apiVersions(): ApiVersions;
53
- /**
54
- * Substitute the discovered versions into a path built by lp(), le(), or
55
- * leGlobal(), discovering them first if no request has yet.
56
- *
57
- * A path that carries no placeholder is returned untouched and costs
58
- * nothing: a bookmark page whose URL came back fully resolved from D2L
59
- * does not trigger a discovery of its own.
60
- */
61
- private resolvePath;
62
- /**
63
- * Make a GET request to the D2L API.
64
- *
65
- * @param path - API path (e.g., "/d2l/api/lp/1.56/users/whoami")
66
- * @param options - Request options (ttl for caching)
67
- * @returns Parsed JSON response (raw, no transformation)
68
- * @throws ApiError on HTTP errors (401, 403, 429, etc.)
69
- * @throws NetworkError on network/fetch failures
70
- */
71
- get<T>(path: string, options?: {
72
- ttl?: number;
73
- }): Promise<T>;
74
- /**
75
- * Make a GET request to the D2L API and return raw Response object.
76
- * Used for binary file downloads where JSON parsing is not desired.
77
- * Does NOT cache responses (file downloads shouldn't be cached).
78
- *
79
- * @param path - API path (e.g., "/d2l/api/le/1.91/123456/content/topics/789/file")
80
- * @returns Raw Response object for binary data extraction
81
- * @throws ApiError on HTTP errors (401, 403, 429, etc.)
82
- * @throws NetworkError on network/fetch failures
83
- */
84
- getRaw(path: string): Promise<Response>;
85
- /** One HTTP refresh and at most one browser login per caller. */
86
- private withAuthentication;
87
- /** One rate limiter token per attempt. */
88
- private throttled;
89
- /** Retry 429, 5xx, and network failures. A 401 is never retried here. */
90
- private retrying;
91
- /**
92
- * Attempt auto-reauthentication via the onAuthExpired callback.
93
- * If successful, returns the fresh token. Otherwise throws 401 ApiError.
94
- */
95
- private tryAutoReauth;
96
- /**
97
- * Make one HTTP request. Authentication recovery is shared with raw downloads.
98
- */
99
- private makeRequest;
100
- /**
101
- * Make one HTTP request for raw binary data.
102
- */
103
- private makeRawRequest;
104
- /**
105
- * Build authentication headers for a request.
106
- * Supports both Bearer tokens and cookie-based auth.
107
- */
108
- private buildAuthHeaders;
109
- /**
110
- * Build path for LP (Learning Platform) API endpoints.
111
- *
112
- * The version is left as a placeholder and substituted by get() or getRaw()
113
- * once it has been discovered. See LP_VERSION above.
114
- *
115
- * @param path - Path within LP API (e.g., "/users/whoami")
116
- * @returns Versioned path template (e.g., "/d2l/api/lp/{lp}/users/whoami")
117
- */
118
- lp(path: string): string;
119
- /**
120
- * Build path for LE (Learning Environment) API endpoints with orgUnitId.
121
- * @param orgUnitId - Organizational unit ID (course ID)
122
- * @param path - Path within LE API (e.g., "/content/root/")
123
- * @returns Versioned path template (e.g., "/d2l/api/le/{le}/123456/content/root/")
124
- */
125
- le(orgUnitId: number, path: string): string;
126
- /**
127
- * Build path for global LE (Learning Environment) API endpoints without orgUnitId.
128
- * @param path - Path within LE API (e.g., "/enrollments/myenrollments/")
129
- * @returns Versioned path template (e.g., "/d2l/api/le/{le}/enrollments/myenrollments/")
130
- */
131
- leGlobal(path: string): string;
132
- /**
133
- * Clear all cached responses.
134
- */
135
- clearCache(): void;
136
- /**
137
- * Get current cache size (number of cached entries).
138
- */
139
- get cacheSize(): number;
140
- }
141
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAwB,MAAM,YAAY,CAAC;AAsDzF;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAyB;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAA4B;IAC5C,gFAAgF;IAChF,OAAO,CAAC,gBAAgB,CAAqC;gBAEjD,OAAO,EAAE,mBAAmB;IAuCxC;;;;;;;OAOG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAsB5C;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;OAGG;IACH,IAAI,WAAW,IAAI,WAAW,CAO7B;IAED;;;;;;;OAOG;YACW,WAAW;IAMzB;;;;;;;;OAQG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBlE;;;;;;;;;OASG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK7C,iEAAiE;YACnD,kBAAkB;IA+BhC,0CAA0C;YAC5B,SAAS;IAKvB,yEAAyE;IACzE,OAAO,CAAC,QAAQ;IAQhB;;;OAGG;YACW,aAAa;IAgB3B;;OAEG;YACW,WAAW;IAuFzB;;OAEG;YACW,cAAc;IA2F5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;;;;;;;OAQG;IACH,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIxB;;;;;OAKG;IACH,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,gFAAgF;AAChF,SAAS,wBAAwB,CAAC,IAAY,EAAE,OAAe;IAC7D,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACnF,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY;gBAC5E,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,0CAA0C,CAAC,EAAE,CAAC;QAC/E,MAAM,QAAQ,GAAG,oHAAoH,CAAC;QACtI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACxG,CAAC;QACF,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,SAAS;YAAE,SAAS;QACxE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,8CAA8C,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,YAAY;IACN,OAAO,CAAS;IAChB,YAAY,CAAsC;IAClD,KAAK,CAAW;IAChB,WAAW,CAAc;IACzB,SAAS,CAAY;IACrB,SAAS,CAAS;IAClB,aAAa,CAA0B;IACvC,WAAW,CAAc;IAClC,QAAQ,GAAuB,IAAI,CAAC;IAC5C,gFAAgF;IACxE,gBAAgB,GAAgC,IAAI,CAAC;IAE7D,YAAY,OAA4B;QACtC,yEAAyE;QACzE,sDAAsD;QACtD,IAAI,UAAe,CAAC;QACpB,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAEvC,yCAAyC;QACzC,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QAEjE,oCAAoC;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI;YACjD,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,CAAC;SACd,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAChC,eAAe,CAAC,QAAQ,EACxB,eAAe,CAAC,UAAU,CAC3B,CAAC;QAEF,GAAG,CAAC,OAAO,EAAE,gCAAgC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,sEAAsE;YACtE,uEAAuE;YACvE,kEAAkE;YAClE,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;iBACxD,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,GAAG,CAAC,MAAM,EAAE,mCAAmC,QAAQ,CAAC,EAAE,QAAQ,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjF,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;oBAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YACnE,CAAC,CAAC,CAAC;YACL,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,WAAW,CAAC,IAAY;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,OAA0B;QACnD,2EAA2E;QAC3E,0EAA0E;QAC1E,IAAI,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAM,CAAC;QACnC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAI,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpG,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,GAAG,CAAC,OAAO,EAAE,uBAAuB,IAAI,UAAU,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,iEAAiE;IACzD,KAAK,CAAC,kBAAkB,CAAI,IAAY,EAAE,OAAyC;QACzF,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACvC,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,OAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,KAAK,CAAC;YACtE,IAAI,aAAa;gBAAE,MAAM,KAAK,CAAC;QACjC,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;oBAAE,MAAM,KAAK,CAAC;YACxE,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,0CAA0C;IAClC,KAAK,CAAC,SAAS,CAAI,EAAoB;QAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAED,yEAAyE;IACjE,QAAQ,CAAI,EAAoB;QACtC,OAAO,SAAS,CAAC,EAAE,EAAE;YACnB,GAAG,IAAI,CAAC,WAAW;YACnB,WAAW,EAAE,kBAAkB;YAC/B,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,mBAA4B;QACpE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBACzE,IAAI,UAAU,EAAE,CAAC;oBACf,GAAG,CAAC,MAAM,EAAE,mDAAmD,CAAC,CAAC;oBACjE,OAAO,UAAU,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,qDAAqD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,+CAA+C,YAAY,GAAG,CAAC,CAAC;IAChG,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACvB,IAAY,EACZ,KAAgB;QAEhB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,GAAG,CAAC,OAAO,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;YAEvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO;gBACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;aAC5C,CAAC,CAAC;YAEH,kEAAkE;YAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,wCAAwC,CAAC,CAAC;YAC1E,CAAC;YAED,2BAA2B;YAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACvD,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YACpD,CAAC;YAED,gDAAgD;YAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAC9C,CAAC;YAED,gCAAgC;YAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAC1D,CAAC;YAED,qEAAqE;YACrE,yEAAyE;YACzE,2EAA2E;YAC3E,yEAAyE;YACzE,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3C,IAAI,IAAO,CAAC;YACZ,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAM,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;gBACtE,qEAAqE;gBACrE,IAAI,wBAAwB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,OAAO,EAAE,iEAAiE,CAAC,CAAC;oBAChF,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,IAAI,EACJ,+CAA+C,YAAY,GAAG,CAC/D,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,QAAQ,CAChB,QAAQ,CAAC,MAAM,EACf,IAAI,EACJ,sBAAsB,IAAI,6BAA6B,CACxD,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0BAA0B;YAC1B,IACE,KAAK,YAAY,QAAQ;gBACzB,KAAK,YAAY,cAAc;gBAC/B,KAAK,YAAY,YAAY,EAC7B,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,4BAA4B;YAC5B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,YAAY,CACpB,cAAc,IAAI,YAAY,OAAO,EAAE,EACvC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAC1B,IAAY,EACZ,KAAgB;QAEhB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,GAAG,CAAC,OAAO,EAAE,kBAAkB,IAAI,QAAQ,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO;gBACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;aAC5C,CAAC,CAAC;YAEH,6DAA6D;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,wCAAwC,CAAC,CAAC;YAC1E,CAAC;YAED,2BAA2B;YAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACvD,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YACpD,CAAC;YAED,6DAA6D;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAC9C,CAAC;YAED,8BAA8B;YAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAClD,CAAC;YAED,gCAAgC;YAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAC1D,CAAC;YAED,kEAAkE;YAClE,iEAAiE;YACjE,qEAAqE;YACrE,iEAAiE;YACjE,uBAAuB;YACvB,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/E,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjD,GAAG,CAAC,OAAO,EAAE,4EAA4E,CAAC,CAAC;oBAC3F,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,IAAI,EACJ,+CAA+C,YAAY,GAAG,CAC/D,CAAC;gBACJ,CAAC;gBACD,oEAAoE;gBACpE,4BAA4B;gBAC5B,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,4CAA4C;YAC5C,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0BAA0B;YAC1B,IACE,KAAK,YAAY,QAAQ;gBACzB,KAAK,YAAY,cAAc;gBAC/B,KAAK,YAAY,YAAY,EAC7B,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,4BAA4B;YAC5B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,YAAY,CACpB,cAAc,IAAI,YAAY,OAAO,EAAE,EACvC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,KAAgB;QACvC,MAAM,OAAO,GAA2B;YACtC,YAAY,EACV,gFAAgF;SACnF,CAAC;QAEF,8DAA8D;QAC9D,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,wDAAwD;YACxD,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnD,GAAG,CAAC,OAAO,EAAE,mCAAmC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,EAAE,mCAAmC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACH,EAAE,CAAC,IAAY;QACb,OAAO,eAAe,UAAU,GAAG,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,EAAE,CAAC,SAAiB,EAAE,IAAY;QAChC,OAAO,eAAe,UAAU,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAY;QACnB,OAAO,eAAe,UAAU,GAAG,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT — see LICENSE file for details.
5
- */
6
- import { AuthError } from "../utils/errors.js";
7
- export declare class ApiError extends AuthError {
8
- readonly status: number;
9
- readonly endpoint: string;
10
- readonly responseBody?: string | undefined;
11
- constructor(status: number, endpoint: string, message: string, responseBody?: string | undefined, cause?: Error);
12
- }
13
- export declare class HttpError extends ApiError {
14
- constructor(status: number, endpoint: string, message: string, responseBody?: string, cause?: Error);
15
- }
16
- export declare class RateLimitError extends ApiError {
17
- readonly retryAfter?: number | undefined;
18
- constructor(endpoint: string, retryAfter?: number | undefined);
19
- }
20
- export declare class NetworkError extends AuthError {
21
- constructor(message: string, cause?: Error);
22
- }
23
- /** A temporary token-mint failure must never start browser authentication. */
24
- export declare class TokenRefreshError extends NetworkError {
25
- constructor(detail: string, cause?: Error);
26
- }
27
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,qBAAa,QAAS,SAAQ,SAAS;aAEnB,MAAM,EAAE,MAAM;aACd,QAAQ,EAAE,MAAM;aAEhB,YAAY,CAAC,EAAE,MAAM;gBAHrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChC,OAAO,EAAE,MAAM,EACC,YAAY,CAAC,EAAE,MAAM,YAAA,EACrC,KAAK,CAAC,EAAE,KAAK;CAKhB;AAGD,qBAAa,SAAU,SAAQ,QAAQ;gBAEnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,KAAK;CAKhB;AAGD,qBAAa,cAAe,SAAQ,QAAQ;aAGxB,UAAU,CAAC,EAAE,MAAM;gBADnC,QAAQ,EAAE,MAAM,EACA,UAAU,CAAC,EAAE,MAAM,YAAA;CAQtC;AAID,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3C;AAED,8EAA8E;AAC9E,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI1C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,qCAAqC;AACrC,MAAM,OAAO,QAAS,SAAQ,SAAS;IAEnB;IACA;IAEA;IAJlB,YACkB,MAAc,EACd,QAAgB,EAChC,OAAe,EACC,YAAqB,EACrC,KAAa;QAEb,KAAK,CAAC,2BAA2B,MAAM,QAAQ,QAAQ,KAAK,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QAN9D,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAQ;QAEhB,iBAAY,GAAZ,YAAY,CAAS;QAIrC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACrC,YACE,MAAc,EACd,QAAgB,EAChB,OAAe,EACf,YAAqB,EACrB,KAAa;QAEb,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,2CAA2C;AAC3C,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAGxB;IAFlB,YACE,QAAgB,EACA,UAAmB;QAEnC,MAAM,OAAO,GAAG,UAAU;YACxB,CAAC,CAAC,0CAA0C,UAAU,GAAG;YACzD,CAAC,CAAC,2BAA2B,CAAC;QAChC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QALd,eAAU,GAAV,UAAU,CAAS;QAMnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,4CAA4C;AAC5C,2CAA2C;AAC3C,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,+BAA+B,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,8EAA8E;AAC9E,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YAAY,MAAc,EAAE,KAAa;QACvC,KAAK,CAAC,6CAA6C,MAAM,qDAAqD,EAAE,KAAK,CAAC,CAAC;QACvH,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT — see LICENSE file for details.
5
- */
6
- export { D2LApiClient } from "./client.js";
7
- export { discoverVersions } from "./version-discovery.js";
8
- export { TTLCache } from "./cache.js";
9
- export { TokenBucket } from "./rate-limiter.js";
10
- export { ApiError, RateLimitError, NetworkError } from "./errors.js";
11
- export type { ApiVersions, CacheTTLs, RateLimitConfig, D2LApiClientOptions, } from "./types.js";
12
- export { DEFAULT_CACHE_TTLS } from "./types.js";
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGrE,YAAY,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6DAA6D;AAE7D,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,0BAA0B;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AASrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT - see LICENSE file for details.
5
- */
6
- import type { D2LApiClient } from "./client.js";
7
- export interface PaginateOptions {
8
- /** Cache TTL, passed through to the client on every page. */
9
- ttl?: number;
10
- }
11
- /**
12
- * Every item across every page of a { Items, PagingInfo } endpoint, in order.
13
- */
14
- export declare function fetchAllItems<T>(apiClient: D2LApiClient, firstPath: string, options?: PaginateOptions): Promise<T[]>;
15
- /**
16
- * Every object across every page of a { Objects, Next } endpoint, in order.
17
- *
18
- * Next arrives either as a full next-page URL or as a bare bookmark, so the
19
- * absolute form is reduced to its path and query and anything else is treated
20
- * as a bookmark against the first path.
21
- */
22
- export declare function fetchAllObjects<T>(apiClient: D2LApiClient, firstPath: string, options?: PaginateOptions): Promise<T[]>;
23
- //# sourceMappingURL=paginate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paginate.d.ts","sourceRoot":"","sources":["../../src/api/paginate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyBhD,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAQD;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,CAAC,EAAE,CAAC,CA6Bd;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,CAAC,EAAE,CAAC,CA4Bd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"paginate.js","sourceRoot":"","sources":["../../src/api/paginate.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT — see LICENSE file for details.
5
- */
6
- export declare class TokenBucket {
7
- private tokens;
8
- private lastRefill;
9
- private readonly capacity;
10
- private readonly refillRate;
11
- constructor(capacity: number, refillRate: number);
12
- private refill;
13
- consume(count?: number): Promise<void>;
14
- tryConsume(count?: number): boolean;
15
- get availableTokens(): number;
16
- }
17
- //# sourceMappingURL=rate-limiter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/api/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAOhD,OAAO,CAAC,MAAM;IAWR,OAAO,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB/C,UAAU,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO;IAWtC,IAAI,eAAe,IAAI,MAAM,CAG5B;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/api/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,2DAA2D;AAC3D,mDAAmD;AAEnD,MAAM,OAAO,WAAW;IACd,MAAM,CAAS;IACf,UAAU,CAAS;IACV,QAAQ,CAAS;IACjB,UAAU,CAAS,CAAC,oBAAoB;IAEzD,YAAY,QAAgB,EAAE,UAAkB;QAC9C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,yBAAyB;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,MAAM;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QACxC,MAAM,cAAc,GAAG,SAAS,GAAG,IAAI,CAAC;QAExC,mCAAmC;QACnC,MAAM,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YACzB,gDAAgD;YAChD,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;YACrB,OAAO;QACT,CAAC;QAED,0CAA0C;QAC1C,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAE3D,4BAA4B;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhE,qBAAqB;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,QAAgB,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT. See LICENSE file for details.
5
- */
6
- /**
7
- * Retry transient failures with exponential backoff and jitter.
8
- *
9
- * What counts as transient is decided by the caller through `shouldRetry`,
10
- * so this module knows nothing about HTTP. A 429 that names a Retry-After is
11
- * honored verbatim, even past `maxMs`, because the server has told us
12
- * exactly when to come back and guessing sooner only earns another 429.
13
- *
14
- * `sleep` and `jitter` are injectable so the backoff sequence is testable
15
- * without fake timers.
16
- */
17
- export interface RetryConfig {
18
- /** Total attempts including the first. Default 3. */
19
- maxAttempts?: number;
20
- /** Backoff before the second attempt, doubled thereafter. Default 250. */
21
- initialMs?: number;
22
- /** Ceiling on the computed backoff. Default 5000. Retry-After ignores it. */
23
- maxMs?: number;
24
- sleep?: (ms: number) => Promise<void>;
25
- /** Returns a number in [0, 1). Default Math.random. */
26
- jitter?: () => number;
27
- }
28
- export interface RetryOptions extends RetryConfig {
29
- shouldRetry: (error: unknown) => boolean;
30
- /** Milliseconds the failure itself asked us to wait, if it did. */
31
- retryAfterMs?: (error: unknown) => number | undefined;
32
- }
33
- export declare function withRetry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T>;
34
- /**
35
- * Exactly three things get better by waiting: a rate limit, a server-side
36
- * failure, and a dropped connection. A 401 needs a new token, a 403 needs
37
- * permission, a 404 needs a different path. None of those are retried.
38
- */
39
- export declare function isRetryableFailure(error: unknown): boolean;
40
- /** The Retry-After a 429 carried, in milliseconds, or undefined. */
41
- export declare function retryAfterMsFrom(error: unknown): number | undefined;
42
- //# sourceMappingURL=retry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/api/retry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACzC,mEAAmE;IACnE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CACvD;AAOD,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CA4B1F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI1D;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKnE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/api/retry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgCrE,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CACjD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,EAAoB,EAAE,OAAqB;IAC5E,MAAM,EACJ,WAAW,GAAG,CAAC,EACf,SAAS,GAAG,GAAG,EACf,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,YAAY,EACpB,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,WAAW,EACX,YAAY,GACb,GAAG,OAAO,CAAC;IAEZ,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAE/D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,KAAa,CAAC;YAClB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7D,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,eAAe,GAAG,MAAM,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;IACjF,OAAO,KAAK,YAAY,YAAY,CAAC;AACvC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,cAAc,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACpG,OAAO,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT — see LICENSE file for details.
5
- */
6
- import type { TokenData } from "../types/index.js";
7
- import type { TokenManager } from "../auth/token-manager.js";
8
- import type { RetryConfig } from "./retry.js";
9
- export interface ApiVersions {
10
- lp: string;
11
- le: string;
12
- }
13
- export interface CacheTTLs {
14
- enrollments: number;
15
- courseContent: number;
16
- announcements: number;
17
- grades: number;
18
- assignments: number;
19
- roster: number;
20
- profile: number;
21
- }
22
- export declare const DEFAULT_CACHE_TTLS: CacheTTLs;
23
- export interface RateLimitConfig {
24
- capacity: number;
25
- refillRate: number;
26
- }
27
- export interface D2LApiClientOptions {
28
- baseUrl: string;
29
- tokenManager: TokenManager;
30
- cacheTTLs?: Partial<CacheTTLs>;
31
- rateLimitConfig?: RateLimitConfig;
32
- timeoutMs?: number;
33
- /** Called when auth is expired and retries are exhausted. Return true if re-auth succeeded. */
34
- onAuthExpired?: () => Promise<boolean>;
35
- /** Backoff for 429, 5xx, and network failures. See retry.ts for defaults. */
36
- retry?: RetryConfig;
37
- }
38
- export type { TokenData };
39
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,kBAAkB,EAAE,SAQhC,CAAC;AAGF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAGD,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuBH,uCAAuC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,WAAW,EAAE,SAAS,EAAE,SAAS;IACjC,aAAa,EAAE,SAAS,EAAE,SAAS;IACnC,aAAa,EAAE,OAAO,EAAE,QAAQ;IAChC,MAAM,EAAE,OAAO,EAAE,QAAQ;IACzB,WAAW,EAAE,OAAO,EAAE,SAAS;IAC/B,MAAM,EAAE,SAAS,EAAE,SAAS;IAC5B,OAAO,EAAE,SAAS,EAAE,SAAS;CAC9B,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Purdue Brightspace MCP Server
3
- * Copyright (c) 2026 Rohan Muppa. All rights reserved.
4
- * Licensed under MIT — see LICENSE file for details.
5
- */
6
- import type { ApiVersions } from "./types.js";
7
- /**
8
- * Auto-discover D2L API versions from the public /d2l/api/versions/ endpoint.
9
- *
10
- * @param baseUrl - Base URL of the D2L instance (e.g., "https://purdue.brightspace.com")
11
- * @param timeoutMs - Request timeout in milliseconds (default: 15000)
12
- * @returns Object with discovered LP and LE versions
13
- * @throws NetworkError if fetch fails or versions cannot be parsed
14
- */
15
- export declare function discoverVersions(baseUrl: string, timeoutMs?: number): Promise<ApiVersions>;
16
- //# sourceMappingURL=version-discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version-discovery.d.ts","sourceRoot":"","sources":["../../src/api/version-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,WAAW,CAAC,CA0DtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"version-discovery.js","sourceRoot":"","sources":["../../src/api/version-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAOzC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,YAAoB,KAAK;IAEzB,MAAM,GAAG,GAAG,GAAG,OAAO,oBAAoB,CAAC;IAE3C,IAAI,CAAC;QACH,GAAG,CAAC,OAAO,EAAE,iCAAiC,GAAG,EAAE,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,OAAO,EAAE;gBACP,gDAAgD;gBAChD,YAAY,EAAE,uHAAuH;aACtI;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,YAAY,CACpB,wCAAwC,QAAQ,CAAC,MAAM,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAsB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE1D,qEAAqE;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CACpB,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CACpB,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAgB;YAC1B,EAAE,EAAE,OAAO,CAAC,aAAa;YACzB,EAAE,EAAE,OAAO,CAAC,aAAa;SAC1B,CAAC;QAEF,GAAG,CAAC,MAAM,EAAE,+BAA+B,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzE,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,mEAAmE;QACnE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,YAAY,CACpB,oCAAoC,OAAO,EAAE,EAC7C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * How long automatic sign-in pauses after a missed MFA prompt.
3
- *
4
- * Long enough to stop a hot loop of phone prompts, short enough that tapping
5
- * the wrong number costs a coffee break rather than an afternoon. This was
6
- * four hours, which meant one mistyped number disabled background sign-in
7
- * until dinner, with nothing on screen explaining why.
8
- */
9
- export declare const MFA_COOLDOWN_MS: number;
10
- export declare class AuthenticationCooldownError extends Error {
11
- readonly retryAt: number;
12
- readonly code = "AUTH_COOLDOWN";
13
- constructor(retryAt: number);
14
- }
15
- /** Non-secret retry metadata. Call only while holding the authentication lock. */
16
- export declare class AuthCooldown {
17
- private readonly file;
18
- constructor(sessionDir: string);
19
- assertAllowed(): Promise<void>;
20
- recordMfaFailure(): Promise<void>;
21
- clear(): Promise<void>;
22
- private write;
23
- }
24
- //# sourceMappingURL=auth-cooldown.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-cooldown.d.ts","sourceRoot":"","sources":["../../src/auth/auth-cooldown.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,QAAgB,CAAC;AAE7C,qBAAa,2BAA4B,SAAQ,KAAK;aAExB,OAAO,EAAE,MAAM;IAD3C,QAAQ,CAAC,IAAI,mBAAmB;gBACJ,OAAO,EAAE,MAAM;CAU5C;AAED,kFAAkF;AAClF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAClB,UAAU,EAAE,MAAM;IAIxB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,KAAK;CAMpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-cooldown.js","sourceRoot":"","sources":["../../src/auth/auth-cooldown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAExB;IADnB,IAAI,GAAG,eAAe,CAAC;IAChC,YAA4B,OAAe;QACzC,wEAAwE;QACxE,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACvE,KAAK,CACH,gFAAgF,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;YAClI,iDAAiD,YAAY,EAAE,CAChE,CAAC;QAPwB,YAAO,GAAP,OAAO,CAAQ;QAQzC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,OAAO,YAAY;IACN,IAAI,CAAS;IAC9B,YAAY,UAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyB,CAAC;QAC3D,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/H,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,MAA2B;QAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC;QACrD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -1,7 +0,0 @@
1
- export declare class AuthenticationInProgressError extends Error {
2
- readonly code = "AUTH_IN_PROGRESS";
3
- constructor();
4
- }
5
- /** Acquire a process-shared lock without waiting or relying on its age. */
6
- export declare function acquireProcessLock(lockPath: string): Promise<() => Promise<void>>;
7
- //# sourceMappingURL=auth-lock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-lock.d.ts","sourceRoot":"","sources":["../../src/auth/auth-lock.ts"],"names":[],"mappings":"AAwCA,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,IAAI,sBAAsB;;CAKpC;AA2DD,2EAA2E;AAC3E,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAIvF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-lock.js","sourceRoot":"","sources":["../../src/auth/auth-lock.ts"],"names":[],"mappings":"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"}