brightspace-mcp-server 5.1.9 → 5.1.12

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.
@@ -97,7 +97,16 @@ export async function fetchAllObjects(apiClient, firstPath, options) {
97
97
  */
98
98
  function nextPath(firstPath, next) {
99
99
  if (/^https?:\/\//i.test(next)) {
100
- const url = new URL(next);
100
+ let url;
101
+ try {
102
+ url = new URL(next);
103
+ }
104
+ catch {
105
+ // Stop here rather than throw away the pages already fetched. The raw
106
+ // Next is not logged: it can carry a `d2lSessionVal=` token.
107
+ log("WARN", "Pagination stopped: Next link was not a valid URL", { firstPath });
108
+ return null;
109
+ }
101
110
  if (!isApiPath(url.pathname)) {
102
111
  log("INFO", "Pagination stopped: Next link left the D2L API", {
103
112
  firstPath,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brightspace-mcp-server",
3
- "version": "5.1.9",
3
+ "version": "5.1.12",
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",
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "@modelcontextprotocol/sdk": "^1.26.0",
33
33
  "@napi-rs/keyring": "^2.0.0",
34
- "dotenv": "^17.2.4",
34
+ "dotenv": "^18.0.8",
35
35
  "file-type": "^22.1.1",
36
36
  "playwright": "^1.58.2",
37
37
  "sanitize-filename": "^1.6.3",