diff --git a/dist/templateManager.user.js b/dist/templateManager.user.js index 378559b..1f5fc2d 100644 --- a/dist/templateManager.user.js +++ b/dist/templateManager.user.js @@ -847,6 +847,15 @@ getCacheBustString() { return Math.floor(Date.now() / CACHE_BUST_PERIOD).toString(36); } + validateJSON(str) { + try { + JSON.parse(str); + return true; + } + catch (_a) { + return false; + } + } loadTemplatesFromJsonURL(url, minPriority = 0, lastContact = '') { let _url = new URL(url); let uniqueString = `${_url.origin}${_url.pathname}`; @@ -870,6 +879,10 @@ this.responseDiffs.push(responseTime - Date.now()); } // parse the response + if (this.validateJSON(response.responseText) === false) { + console.error(`Invalid JSON from ${_url}`); + return; + } let json = JSON.parse(response.responseText); // read blacklist. These will never be loaded if (json.blacklist) { diff --git a/package-lock.json b/package-lock.json index c310a93..475cf06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "template-manager", - "version": "0.6.2", + "version": "0.6.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "template-manager", - "version": "0.6.2", + "version": "0.6.4", "license": "MIT", "dependencies": { "@types/greasemonkey": "^4.0.4" diff --git a/src/templateManager.ts b/src/templateManager.ts index f4a3067..560023f 100644 --- a/src/templateManager.ts +++ b/src/templateManager.ts @@ -115,6 +115,15 @@ export class TemplateManager { return Math.floor(Date.now() / CACHE_BUST_PERIOD).toString(36) } + validateJSON(str: string) { + try { + JSON.parse(str); + return true; + } catch { + return false; + } + } + loadTemplatesFromJsonURL(url: string | URL, minPriority = 0, lastContact = '') { let _url = new URL(url); let uniqueString = `${_url.origin}${_url.pathname}`; @@ -141,6 +150,10 @@ export class TemplateManager { this.responseDiffs.push(responseTime - Date.now()); } // parse the response + if (this.validateJSON(response.responseText) === false) { + console.error(`Invalid JSON from ${_url}`); + return; + } let json: JsonParams = JSON.parse(response.responseText); // read blacklist. These will never be loaded if (json.blacklist) {