diff --git a/package-lock.json b/package-lock.json index fa31f6d3b..a76ffae86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -76,7 +76,6 @@ "jsdom": "^22.1.0", "mime-types": "^2.1.35", "mocha-junit-reporter": "^2.2.1", - "ogc-parser": "^1.5.0", "prettier": "^3.0.3", "prettier-plugin-jsdoc": "^1.1.1", "rimraf": "^5.0.1", @@ -8221,26 +8220,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ogc-parser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ogc-parser/-/ogc-parser-1.5.0.tgz", - "integrity": "sha512-JsIKCSmCsET6L2WMqytO1jM9r+dbzUYfGIJr4qq9dy+0DVCGzFSztjFEtUiES/hziqfhG1LgrxPjf/XUwUH9RA==", - "dev": true, - "dependencies": { - "xmldom": "^0.1.27", - "xpath": "^0.0.24" - } - }, - "node_modules/ogc-parser/node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", - "dev": true, - "engines": { - "node": ">=0.1" - } - }, "node_modules/ol": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/ol/-/ol-8.1.0.tgz", @@ -11174,15 +11153,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xpath": { - "version": "0.0.24", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.24.tgz", - "integrity": "sha512-xUsra70vEDlxu0T90+qkg/8/KvPPm4KQbh25yMZCpBABBkdQLaOLNsgzRAUax7wlWZt7Ka5Q+itg/TPzzHieVQ==", - "dev": true, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 0a30f4a0b..8dace600f 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,6 @@ "jsdom": "^22.1.0", "mime-types": "^2.1.35", "mocha-junit-reporter": "^2.2.1", - "ogc-parser": "^1.5.0", "prettier": "^3.0.3", "prettier-plugin-jsdoc": "^1.1.1", "rimraf": "^5.0.1", diff --git a/scripts/check-external-layers-providers.js b/scripts/check-external-layers-providers.js index 8bf31d6da..c6306aade 100755 --- a/scripts/check-external-layers-providers.js +++ b/scripts/check-external-layers-providers.js @@ -6,9 +6,7 @@ import writeYamlFile from 'write-yaml-file' import axiosRetry from 'axios-retry' import yargs from 'yargs' import { hideBin } from 'yargs/helpers' -import ogcParser from 'ogc-parser' import { exit } from 'process' - import { transformUrl, isWmsGetCap, @@ -16,6 +14,14 @@ import { isKml, isGpx, } from '@/modules/infobox/utils/external-provider' +import { WMSCapabilities } from "ol/format"; +import WMTSCapabilities from "ol/format/WMTSCapabilities"; +import { JSDOM } from 'jsdom' + +// faking browser support, so that OpenLayers has what it requires to parse XMLs +const dom = new JSDOM() +global.DOMParser = dom.window.DOMParser +global.Node = dom.window.Node const options = yargs(hideBin(process.argv)) .usage('Usage: $0 [options]') @@ -130,20 +136,23 @@ function checkProviderResponse(provider, url, response, result) { } } +const wmsCapParser = new WMSCapabilities() +const wmtsCapParser = new WMTSCapabilities() + function checkProviderResponseContent(provider, url, response, result) { const content = response.data let isValid = true if (isWmsGetCap(content)) { - const capabilities = ogcParser.wms(content) - if (!capabilities || !capabilities.layer) { + const capabilities = wmsCapParser.read(content) + if (!capabilities?.Capability?.Layer?.Layer) { isValid = false console.error(`Invalid provider ${provider}, WMS get Cap parsing failed`) result.invalid_wms.push({ provider: provider, url: url, content: content.slice(0, 50) }) } } else if (isWmtsGetCap(content)) { - const capabilities = ogcParser.wmts(content) - if (!capabilities || !capabilities.layer) { + const capabilities = wmtsCapParser.read(content) + if (!capabilities?.Contents?.Layer) { isValid = false console.error(`Invalid provider ${provider}, WMTS get Cap parsing failed`) result.invalid_wmts.push({