diff --git a/package-lock.json b/package-lock.json index adce709e8..93931480d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2861,6 +2861,12 @@ "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", "dev": true }, + "@types/json5": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.30.tgz", + "integrity": "sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==", + "dev": true + }, "@types/lodash": { "version": "4.14.162", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.162.tgz", @@ -6679,7 +6685,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -8584,7 +8589,8 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, "supports-color": { "version": "7.1.0", diff --git a/package.json b/package.json index 840defc13..9a90fdf3e 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,9 @@ "cson-parser": "4.0.5", "eslint-config-prettier": "6.14.0", "glob": "7.1.6", + "json5": "^2.1.3", "lodash": "4.17.20", "minimatch": "3.0.4", - "strip-json-comments": "3.1.1", "tslint": "6.1.3", "typescript": "4.0.3" }, @@ -30,6 +30,7 @@ "@types/eslint-config-prettier": "6.11.0", "@types/glob": "7.1.3", "@types/jest": "26.0.15", + "@types/json5": "0.0.30", "@types/lodash": "4.14.162", "@types/minimatch": "3.0.3", "@types/node": "12.12.21", diff --git a/src/input/importer.test.ts b/src/input/importer.test.ts index 861bc37ba..02377971e 100644 --- a/src/input/importer.test.ts +++ b/src/input/importer.test.ts @@ -122,7 +122,7 @@ describe("importer", () => { // Assert expect(imported).toEqual( expect.objectContaining({ - message: "Unexpected token N in JSON at position 0", + message: "JSON5: invalid character 'O' at 1:2", }), ); }); diff --git a/src/utils.ts b/src/utils.ts index 798c4c0e2..391af14f3 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,4 @@ -import stripJsonComments from "strip-json-comments"; +import JSON5 from "json5"; export const isDefined = (item: Item | undefined): item is Item => item !== undefined; @@ -55,4 +55,4 @@ export const uniqueFromSources = (...sources: (T | T[] | undefined)[]) => { return Array.from(new Set(items)); }; -export const parseJson = (text: string) => JSON.parse(stripJsonComments(text)); +export const parseJson = (text: string) => JSON5.parse(text);