diff --git a/lib/util/JSONReadValidate.js b/lib/util/JSONReadValidate.js index 42e4111..7d8617f 100644 --- a/lib/util/JSONReadValidate.js +++ b/lib/util/JSONReadValidate.js @@ -1,5 +1,5 @@ import fs from 'fs-extra' -import JSONLint from 'json-lint' +import parseJson from 'json-parse-even-better-errors' /** * @param {string} filepath @@ -24,11 +24,12 @@ export function readValidateJSONSync (filepath) { } function validateJSON (jsonData, filepath) { - const lint = JSONLint(jsonData) - if (!lint.error) return - let errorMessage = 'JSON parsing error: ' + lint.error + ', line: ' + lint.line + ', character: ' + lint.character - if (filepath) { - errorMessage += ', file: \'' + filepath + '\'' + try { + parseJson(jsonData) + } catch (err) { + const msg = filepath + ? `${err.message} in file '${filepath}'` + : err.message + throw new Error(msg) } - throw new Error(errorMessage) } diff --git a/package-lock.json b/package-lock.json index 3ed588a..264ac5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "fs-extra": "^10.0.0", "globs": "^0.1.4", "inquirer": "^7.3.3", - "json-lint": "^0.1.0", + "json-parse-even-better-errors": "^5.0.0", "lodash-es": "^4.17.21", "node-fetch": "^3.2.10", "parse-github-url": "^1.0.2", @@ -192,6 +192,7 @@ "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^3.0.0", "@octokit/graphql": "^5.0.0", @@ -629,6 +630,7 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2322,6 +2324,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -2477,6 +2480,7 @@ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -2544,6 +2548,7 @@ "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "eslint-plugin-es": "^3.0.0", "eslint-utils": "^2.0.0", @@ -2585,6 +2590,7 @@ "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": "^10.12.0 || >=12.0.0" }, @@ -4604,15 +4610,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-lint": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/json-lint/-/json-lint-0.1.0.tgz", - "integrity": "sha512-QoBMCAo3sFnAl2nvCcrt5NmjqMRejlghhMvZ0ykhgfNpp7ukp1te7dP6q2o4fkvl03t08t75njni+y6S7jiHLg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "engines": { - "node": ">=0.5" - } - }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -4621,11 +4618,13 @@ "license": "MIT" }, "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", + "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", + "license": "MIT", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -4926,6 +4925,7 @@ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -8209,6 +8209,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", @@ -9077,6 +9084,7 @@ "integrity": "sha512-NMPKdfpXTnPn49FDogMBi36SiBfXkSOJqCkk0E4iWOY1tusvvgBwqUmxTX1kmlT6kIYed9YwNKD1sfPpqa5yaA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@semantic-release/commit-analyzer": "^9.0.2", "@semantic-release/error": "^3.0.0", diff --git a/package.json b/package.json index 46c3beb..206f340 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "fs-extra": "^10.0.0", "globs": "^0.1.4", "inquirer": "^7.3.3", - "json-lint": "^0.1.0", + "json-parse-even-better-errors": "^5.0.0", "lodash-es": "^4.17.21", "node-fetch": "^3.2.10", "parse-github-url": "^1.0.2", @@ -30,17 +30,17 @@ "adapt": "./bin/adapt.js" }, "devDependencies": { - "eslint": "^7.31.0", - "eslint-config-standard": "^16.0.3", - "eslint-plugin-import": "^2.23.4", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", "@semantic-release/commit-analyzer": "^9.0.2", "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^8.0.5", "@semantic-release/npm": "^9.0.1", "@semantic-release/release-notes-generator": "^10.0.3", "conventional-changelog-eslint": "^3.0.9", + "eslint": "^7.31.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.1.0", "semantic-release": "^19.0.3" }, "release": {