diff --git a/package.json b/package.json index f744050e3..3c782422e 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "json-stable-stringify": "1.0.1", "leven": "2.1.0", "lines-and-columns": "1.1.6", - "linguist-languages": "6.2.1-dev.20180706", + "linguist-languages": "7.5.1", "lodash.uniqby": "4.7.0", "mem": "4.0.0", "minimatch": "3.0.4", diff --git a/src/language-css/index.js b/src/language-css/index.js index c53662a6e..36480906b 100644 --- a/src/language-css/index.js +++ b/src/language-css/index.js @@ -5,14 +5,14 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/css"), { + createLanguage(require("linguist-languages/data/CSS"), { override: { since: "1.4.0", parsers: ["css"], vscodeLanguageIds: ["css"] } }), - createLanguage(require("linguist-languages/data/postcss"), { + createLanguage(require("linguist-languages/data/PostCSS"), { override: { since: "1.4.0", parsers: ["css"], @@ -22,14 +22,14 @@ const languages = [ extensions: [".postcss"] } }), - createLanguage(require("linguist-languages/data/less"), { + createLanguage(require("linguist-languages/data/Less"), { override: { since: "1.4.0", parsers: ["less"], vscodeLanguageIds: ["less"] } }), - createLanguage(require("linguist-languages/data/scss"), { + createLanguage(require("linguist-languages/data/SCSS"), { override: { since: "1.4.0", parsers: ["scss"], diff --git a/src/language-graphql/index.js b/src/language-graphql/index.js index 4d86bb498..6ace5c017 100644 --- a/src/language-graphql/index.js +++ b/src/language-graphql/index.js @@ -5,7 +5,7 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/graphql"), { + createLanguage(require("linguist-languages/data/GraphQL"), { override: { since: "1.5.0", parsers: ["graphql"], diff --git a/src/language-handlebars/index.js b/src/language-handlebars/index.js index 0b4a63719..b9142ed1c 100644 --- a/src/language-handlebars/index.js +++ b/src/language-handlebars/index.js @@ -4,7 +4,7 @@ const printer = require("./printer-glimmer"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/handlebars"), { + createLanguage(require("linguist-languages/data/Handlebars"), { override: { since: null, // unreleased parsers: ["glimmer"], diff --git a/src/language-html/index.js b/src/language-html/index.js index 12709365a..4992d3c24 100644 --- a/src/language-html/index.js +++ b/src/language-html/index.js @@ -5,7 +5,7 @@ const createLanguage = require("../utils/create-language"); const options = require("./options"); const languages = [ - createLanguage(require("linguist-languages/data/html"), { + createLanguage(require("linguist-languages/data/HTML"), { override: { name: "Angular", since: "1.15.0", @@ -16,7 +16,7 @@ const languages = [ filenames: [] } }), - createLanguage(require("linguist-languages/data/html"), { + createLanguage(require("linguist-languages/data/HTML"), { override: { since: "1.15.0", parsers: ["html"], @@ -28,7 +28,7 @@ const languages = [ ] } }), - createLanguage(require("linguist-languages/data/html"), { + createLanguage(require("linguist-languages/data/HTML"), { override: { name: "Lightning Web Components", since: "1.17.0", @@ -39,7 +39,7 @@ const languages = [ filenames: [] } }), - createLanguage(require("linguist-languages/data/vue"), { + createLanguage(require("linguist-languages/data/Vue"), { override: { since: "1.10.0", parsers: ["vue"], diff --git a/src/language-js/index.js b/src/language-js/index.js index b227e3583..fbe8ad0a0 100644 --- a/src/language-js/index.js +++ b/src/language-js/index.js @@ -6,7 +6,7 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/javascript"), { + createLanguage(require("linguist-languages/data/JavaScript"), { override: { since: "0.0.0", parsers: ["babel", "flow"], @@ -16,44 +16,49 @@ const languages = [ interpreters: ["nodejs"] } }), - createLanguage(require("linguist-languages/data/javascript"), { + createLanguage(require("linguist-languages/data/JavaScript"), { override: { name: "Flow", since: "0.0.0", parsers: ["babel", "flow"], vscodeLanguageIds: ["javascript"], - aliases: [], filenames: [], extensions: [".js.flow"] } }), - createLanguage(require("linguist-languages/data/jsx"), { + createLanguage(require("linguist-languages/data/JSX"), { override: { since: "0.0.0", parsers: ["babel", "flow"], vscodeLanguageIds: ["javascriptreact"] } }), - createLanguage(require("linguist-languages/data/typescript"), { + createLanguage(require("linguist-languages/data/TypeScript"), { override: { since: "1.4.0", parsers: ["typescript"], - vscodeLanguageIds: ["typescript", "typescriptreact"] + vscodeLanguageIds: ["typescript"] } }), - createLanguage(require("linguist-languages/data/json"), { + createLanguage(require("linguist-languages/data/TSX"), { + override: { + since: "1.4.0", + parsers: ["typescript"], + vscodeLanguageIds: ["typescriptreact"] + } + }), + createLanguage(require("linguist-languages/data/JSON"), { override: { name: "JSON.stringify", since: "1.13.0", parsers: ["json-stringify"], vscodeLanguageIds: ["json"], - extensions: [], // .json file defaults to json instead of json-stringify filenames: ["package.json", "package-lock.json", "composer.json"] } }), - createLanguage(require("linguist-languages/data/json"), { + createLanguage(require("linguist-languages/data/JSON"), { override: { since: "1.5.0", parsers: ["json"], @@ -63,7 +68,7 @@ const languages = [ filenames: [".prettierrc"] } }), - createLanguage(require("linguist-languages/data/json-with-comments"), { + createLanguage(require("linguist-languages/data/JSON with Comments"), { override: { since: "1.5.0", parsers: ["json"], @@ -73,7 +78,7 @@ const languages = [ filenames: [".eslintrc"] } }), - createLanguage(require("linguist-languages/data/json5"), { + createLanguage(require("linguist-languages/data/JSON5"), { override: { since: "1.13.0", parsers: ["json5"], diff --git a/src/language-markdown/index.js b/src/language-markdown/index.js index f2db352df..2382b4c1c 100644 --- a/src/language-markdown/index.js +++ b/src/language-markdown/index.js @@ -5,7 +5,7 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/markdown"), { + createLanguage(require("linguist-languages/data/Markdown"), { override: { since: "1.8.0", parsers: ["remark"], @@ -13,18 +13,21 @@ const languages = [ }, extend: { filenames: ["README"] + }, + exclude: { + extensions: [".mdx"] } }), - createLanguage( - { name: "MDX", extensions: [".mdx"] }, // TODO: use linguist data - { - override: { - since: "1.15.0", - parsers: ["mdx"], - vscodeLanguageIds: ["mdx"] - } + createLanguage(require("linguist-languages/data/Markdown"), { + override: { + name: "MDX", + since: "1.15.0", + parsers: ["mdx"], + vscodeLanguageIds: ["mdx"], + filenames: [], + extensions: [".mdx"] } - ) + }) ]; const printers = { diff --git a/src/language-yaml/index.js b/src/language-yaml/index.js index 7f034b8a7..b2dace66b 100644 --- a/src/language-yaml/index.js +++ b/src/language-yaml/index.js @@ -5,7 +5,7 @@ const options = require("./options"); const createLanguage = require("../utils/create-language"); const languages = [ - createLanguage(require("linguist-languages/data/yaml"), { + createLanguage(require("linguist-languages/data/YAML"), { override: { since: "1.14.0", parsers: ["yaml"], diff --git a/src/utils/create-language.js b/src/utils/create-language.js index bcf073e1f..6f3300830 100644 --- a/src/utils/create-language.js +++ b/src/utils/create-language.js @@ -1,6 +1,6 @@ "use strict"; -module.exports = function(linguistData, { extend, override }) { +module.exports = function(linguistData, { extend, override, exclude }) { const language = {}; for (const key in linguistData) { @@ -14,6 +14,14 @@ module.exports = function(linguistData, { extend, override }) { } } + if (exclude) { + for (const key in exclude) { + language[key] = (language[key] || []).filter( + value => (exclude[key] || []).indexOf(value) === -1 + ); + } + } + for (const key in override) { language[key] = override[key]; } diff --git a/tests_integration/__tests__/__snapshots__/support-info.js.snap b/tests_integration/__tests__/__snapshots__/support-info.js.snap index 0a9974b62..e654050eb 100644 --- a/tests_integration/__tests__/__snapshots__/support-info.js.snap +++ b/tests_integration/__tests__/__snapshots__/support-info.js.snap @@ -141,7 +141,7 @@ exports[`API getSupportInfo() with version 1.0.0 -> 1.4.0 1`] = ` \\"flow\\", ], \\"JSX\\": Array [ -@@ -10,24 +13,51 @@ +@@ -10,24 +13,54 @@ ], \\"JavaScript\\": Array [ \\"babylon\\", @@ -156,6 +156,9 @@ exports[`API getSupportInfo() with version 1.0.0 -> 1.4.0 1`] = ` + \\"SCSS\\": Array [ + \\"postcss\\", + ], ++ \\"TSX\\": Array [ ++ \\"typescript\\", ++ ], + \\"TypeScript\\": Array [ + \\"typescript\\", + ], @@ -193,7 +196,7 @@ exports[`API getSupportInfo() with version 1.0.0 -> 1.4.0 1`] = ` \\"type\\": \\"choice\\", }, \\"printWidth\\": Object { -@@ -37,10 +67,28 @@ +@@ -37,10 +70,28 @@ \\"start\\": 0, \\"step\\": 1, }, @@ -249,7 +252,7 @@ exports[`API getSupportInfo() with version 1.4.0 -> 1.5.0 1`] = ` \\"flow\\", ], \\"JavaScript\\": Array [ -@@ -54,10 +63,12 @@ +@@ -57,10 +66,12 @@ \\"choices\\": Array [ \\"flow\\", \\"babylon\\", @@ -297,11 +300,11 @@ exports[`API getSupportInfo() with version 1.5.0 -> 1.7.1 1`] = ` - \\"postcss\\", + \\"scss\\", ], - \\"TypeScript\\": Array [ + \\"TSX\\": Array [ \\"typescript\\", ], - }, -@@ -62,11 +62,13 @@ + \\"TypeScript\\": Array [ +@@ -65,11 +65,13 @@ \\"parser\\": Object { \\"choices\\": Array [ \\"flow\\", @@ -316,7 +319,7 @@ exports[`API getSupportInfo() with version 1.5.0 -> 1.7.1 1`] = ` ], \\"default\\": \\"babylon\\", \\"type\\": \\"choice\\", -@@ -96,10 +98,14 @@ +@@ -99,10 +101,14 @@ \\"start\\": 0, \\"step\\": 1, }, @@ -352,7 +355,7 @@ exports[`API getSupportInfo() with version 1.7.1 -> 1.8.0 1`] = ` ], \\"SCSS\\": Array [ \\"scss\\", -@@ -53,10 +56,14 @@ +@@ -56,10 +59,14 @@ }, \\"filepath\\": Object { \\"default\\": undefined, @@ -367,7 +370,7 @@ exports[`API getSupportInfo() with version 1.7.1 -> 1.8.0 1`] = ` \\"type\\": \\"boolean\\", }, \\"parser\\": Object { -@@ -67,10 +74,11 @@ +@@ -70,10 +77,11 @@ \\"css\\", \\"less\\", \\"scss\\", @@ -386,7 +389,7 @@ exports[`API getSupportInfo() with version 1.8.0 -> 1.8.2 1`] = ` - First value + Second value -@@ -88,10 +88,18 @@ +@@ -91,10 +91,18 @@ \\"start\\": 0, \\"step\\": 1, }, @@ -465,8 +468,8 @@ exports[`API getSupportInfo() with version 1.8.2 -> 1.16.0 1`] = ` ], \\"PostCSS\\": Array [ \\"css\\", -@@ -37,12 +52,26 @@ - \\"scss\\", +@@ -40,12 +55,26 @@ + \\"typescript\\", ], \\"TypeScript\\": Array [ \\"typescript\\", @@ -492,7 +495,7 @@ exports[`API getSupportInfo() with version 1.8.2 -> 1.16.0 1`] = ` \\"type\\": \\"boolean\\", }, \\"cursorOffset\\": Object { -@@ -52,37 +81,76 @@ +@@ -55,37 +84,76 @@ \\"start\\": -1, \\"step\\": 1, }, @@ -571,7 +574,7 @@ exports[`API getSupportInfo() with version 1.8.2 -> 1.16.0 1`] = ` \\"range\\": Object { \\"end\\": Infinity, \\"start\\": 0, -@@ -90,14 +158,15 @@ +@@ -93,14 +161,15 @@ }, \\"type\\": \\"int\\", }, @@ -611,7 +614,7 @@ exports[`API getSupportInfo() with version 1.16.0 -> undefined 1`] = ` ], \\"Markdown\\": Array [ \\"markdown\\", -@@ -135,10 +138,11 @@ +@@ -138,10 +141,11 @@ \\"mdx\\", \\"vue\\", \\"yaml\\", @@ -623,7 +626,7 @@ exports[`API getSupportInfo() with version 1.16.0 -> undefined 1`] = ` \\"type\\": \\"choice\\", }, \\"pluginSearchDirs\\": Object { -@@ -165,10 +169,19 @@ +@@ -168,10 +172,19 @@ \\"preserve\\", ], \\"default\\": \\"preserve\\", @@ -679,7 +682,16 @@ exports[`CLI --support-info (stdout) 1`] = ` \\".xsjslib\\" ], \\"filenames\\": [\\"Jakefile\\"], - \\"interpreters\\": [\\"node\\", \\"nodejs\\"], + \\"interpreters\\": [ + \\"chakra\\", + \\"d8\\", + \\"js\\", + \\"node\\", + \\"rhino\\", + \\"v8\\", + \\"v8-shell\\", + \\"nodejs\\" + ], \\"linguistLanguageId\\": 183, \\"name\\": \\"JavaScript\\", \\"parsers\\": [\\"babel\\", \\"flow\\"], @@ -696,7 +708,7 @@ exports[`CLI --support-info (stdout) 1`] = ` \\"color\\": \\"#f1e05a\\", \\"extensions\\": [\\".js.flow\\"], \\"filenames\\": [], - \\"interpreters\\": [\\"node\\"], + \\"interpreters\\": [\\"chakra\\", \\"d8\\", \\"js\\", \\"node\\", \\"rhino\\", \\"v8\\", \\"v8-shell\\"], \\"linguistLanguageId\\": 183, \\"name\\": \\"Flow\\", \\"parsers\\": [\\"babel\\", \\"flow\\"], @@ -725,14 +737,29 @@ exports[`CLI --support-info (stdout) 1`] = ` \\"codemirrorMimeType\\": \\"application/typescript\\", \\"codemirrorMode\\": \\"javascript\\", \\"color\\": \\"#2b7489\\", - \\"extensions\\": [\\".ts\\", \\".tsx\\"], + \\"extensions\\": [\\".ts\\"], + \\"interpreters\\": [\\"deno\\", \\"ts-node\\"], \\"linguistLanguageId\\": 378, \\"name\\": \\"TypeScript\\", \\"parsers\\": [\\"typescript\\"], \\"since\\": \\"1.4.0\\", \\"tmScope\\": \\"source.ts\\", \\"type\\": \\"programming\\", - \\"vscodeLanguageIds\\": [\\"typescript\\", \\"typescriptreact\\"] + \\"vscodeLanguageIds\\": [\\"typescript\\"] + }, + { + \\"aceMode\\": \\"javascript\\", + \\"codemirrorMimeType\\": \\"text/jsx\\", + \\"codemirrorMode\\": \\"jsx\\", + \\"extensions\\": [\\".tsx\\"], + \\"group\\": \\"TypeScript\\", + \\"linguistLanguageId\\": 94901924, + \\"name\\": \\"TSX\\", + \\"parsers\\": [\\"typescript\\"], + \\"since\\": \\"1.4.0\\", + \\"tmScope\\": \\"source.tsx\\", + \\"type\\": \\"programming\\", + \\"vscodeLanguageIds\\": [\\"typescriptreact\\"] }, { \\"aceMode\\": \\"json\\", @@ -740,7 +767,6 @@ exports[`CLI --support-info (stdout) 1`] = ` \\"codemirrorMode\\": \\"javascript\\", \\"extensions\\": [], \\"filenames\\": [\\"package.json\\", \\"package-lock.json\\", \\"composer.json\\"], - \\"group\\": \\"JavaScript\\", \\"linguistLanguageId\\": 174, \\"name\\": \\"JSON.stringify\\", \\"parsers\\": [\\"json-stringify\\"], @@ -759,24 +785,29 @@ exports[`CLI --support-info (stdout) 1`] = ` \\".avsc\\", \\".geojson\\", \\".gltf\\", + \\".har\\", + \\".ice\\", \\".JSON-tmLanguage\\", \\".jsonl\\", + \\".mcmeta\\", \\".tfstate\\", \\".tfstate.backup\\", \\".topojson\\", \\".webapp\\", - \\".webmanifest\\" + \\".webmanifest\\", + \\".yy\\", + \\".yyp\\" ], \\"filenames\\": [ \\".arcconfig\\", \\".htmlhintrc\\", \\".tern-config\\", \\".tern-project\\", + \\".watchmanconfig\\", \\"composer.lock\\", \\"mcmod.info\\", \\".prettierrc\\" ], - \\"group\\": \\"JavaScript\\", \\"linguistLanguageId\\": 174, \\"name\\": \\"JSON\\", \\"parsers\\": [\\"json\\"], @@ -812,6 +843,8 @@ exports[`CLI --support-info (stdout) 1`] = ` \\".jscsrc\\", \\".jshintrc\\", \\".jslintrc\\", + \\"jsconfig.json\\", + \\"language-configuration.json\\", \\"tsconfig.json\\", \\".eslintrc\\" ], @@ -887,13 +920,13 @@ exports[`CLI --support-info (stdout) 1`] = ` \\"name\\": \\"SCSS\\", \\"parsers\\": [\\"scss\\"], \\"since\\": \\"1.4.0\\", - \\"tmScope\\": \\"source.scss\\", + \\"tmScope\\": \\"source.css.scss\\", \\"type\\": \\"markup\\", \\"vscodeLanguageIds\\": [\\"scss\\"] }, { \\"aceMode\\": \\"text\\", - \\"extensions\\": [\\".graphql\\", \\".gql\\"], + \\"extensions\\": [\\".graphql\\", \\".gql\\", \\".graphqls\\"], \\"linguistLanguageId\\": 139, \\"name\\": \\"GraphQL\\", \\"parsers\\": [\\"graphql\\"], @@ -918,7 +951,7 @@ exports[`CLI --support-info (stdout) 1`] = ` \\".ronn\\", \\".workbook\\" ], - \\"filenames\\": [\\"README\\"], + \\"filenames\\": [\\"contents.lr\\", \\"README\\"], \\"linguistLanguageId\\": 222, \\"name\\": \\"Markdown\\", \\"parsers\\": [\\"markdown\\"], @@ -929,11 +962,20 @@ exports[`CLI --support-info (stdout) 1`] = ` \\"wrap\\": true }, { + \\"aceMode\\": \\"markdown\\", + \\"aliases\\": [\\"pandoc\\"], + \\"codemirrorMimeType\\": \\"text/x-gfm\\", + \\"codemirrorMode\\": \\"gfm\\", \\"extensions\\": [\\".mdx\\"], + \\"filenames\\": [], + \\"linguistLanguageId\\": 222, \\"name\\": \\"MDX\\", \\"parsers\\": [\\"mdx\\"], \\"since\\": \\"1.15.0\\", - \\"vscodeLanguageIds\\": [\\"mdx\\"] + \\"tmScope\\": \\"source.gfm\\", + \\"type\\": \\"prose\\", + \\"vscodeLanguageIds\\": [\\"mdx\\"], + \\"wrap\\": true }, { \\"aceMode\\": \\"html\\", diff --git a/yarn.lock b/yarn.lock index dea14d889..5604ea2e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4522,9 +4522,10 @@ lines-and-columns@1.1.6, lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" -linguist-languages@6.2.1-dev.20180706: - version "6.2.1-dev.20180706" - resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-6.2.1-dev.20180706.tgz#119766ff7e753654a06a6ae64364483458fa6664" +linguist-languages@7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-7.5.1.tgz#458f34ac40b90b64963569de29caaa0dc9621c7b" + integrity sha512-kZBOK2+xcub7UIVxzpWZoWQhfJ6zrpimo+/FXn3XuLCbvdwNJ3A/GVz5AFVFVSbYRoRCGD9f9qIf7cUHDklLkA== load-json-file@^1.0.0: version "1.1.0"