diff --git a/lib/parser.ts b/lib/parser.ts index f7c66e8..f12b0df 100644 --- a/lib/parser.ts +++ b/lib/parser.ts @@ -158,7 +158,16 @@ export class CoTParser { raw: Buffer | string, opts: CoTOptions = {} ): CoT { - const parsed = xml2js(String(raw), { compact: true }) as Static; + const str = String(raw); + + let parsed: Static; + try { + parsed = xml2js(str, { compact: true }) as Static; + } catch (err) { + console.error(`Failed to parse CoT XML: ${str}`); + throw err; + } + normalizeBooleanAttributeValues(parsed); const cot = new CoT( diff --git a/package-lock.json b/package-lock.json index 1d74e11..0d61006 100644 --- a/package-lock.json +++ b/package-lock.json @@ -865,9 +865,9 @@ "license": "MIT" }, "node_modules/@tak-ps/xml-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tak-ps/xml-js/-/xml-js-2.0.3.tgz", - "integrity": "sha512-UO8IFA+zW8FTV3I55XFcBQw8664mLoIWdDjEqdKPbfdjkPD99IOn2mr2tvytZqPchKszhPpra9HVjbeS2AxcUA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@tak-ps/xml-js/-/xml-js-2.0.4.tgz", + "integrity": "sha512-ROOOjh2/Aoe0Co0V7l6XdQnlhEwQgrSKaVJM/oKUIUB99FPUVrbla5eqMEUzMhv3CUsh4EOwYIsyHWAlwX461Q==", "license": "MIT", "dependencies": { "sax": "^1.4.1" @@ -2464,9 +2464,9 @@ } }, "node_modules/linkify-it": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", - "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", "dev": true, "funding": [ { @@ -2539,9 +2539,9 @@ } }, "node_modules/markdown-it": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", - "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, "funding": [ { @@ -2556,8 +2556,8 @@ "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -2732,9 +2732,9 @@ } }, "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "license": "MIT", "engines": { "node": ">=12" @@ -2970,9 +2970,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.4.tgz", - "integrity": "sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==", + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.5.tgz", + "integrity": "sha512-F7JnSfPl5ASt6LqwWyUQ3T8BwN3q0eQEbFMYa2iRWaVQmmudo0d7fRmwM4O002gsvW1bs0yBYioutsAjqLJMvQ==", "dev": true, "license": "MIT", "dependencies": {