Update linguist-languages to v8 (#17569)

This commit is contained in:
fisker Cheung authored and GitHub committed 2025-06-07 17:35:33 +08:00
1 parent 0f5fee8fac
commit 80a3b919ea
15 files changed
+74 -71

No files matched your search

+1 -1
View File
@@ -2,7 +2,7 @@
Previously, `languages` API for custom plugin only supported to infer parser based on the file basename or extension. Previously, `languages` API for custom plugin only supported to infer parser based on the file basename or extension.
Prettier main added `isSupported: ({ filepath: string }) => boolean` function to allow plugin check if file is supported based on the full path (eg: files in a specific directory). Prettier main added `isSupported: (options: { filepath: string }) => boolean` function to allow plugin check if file is supported based on the full path (eg: files in a specific directory).
:::note :::note
+1 -1
View File
@@ -124,7 +124,7 @@ The support information looks like this:
filenames?: string[]; filenames?: string[];
linguistLanguageId?: number; linguistLanguageId?: number;
vscodeLanguageIds?: string[]; vscodeLanguageIds?: string[];
isSupported?({ filepath: string }): boolean; isSupported?(options: { filepath: string }): boolean;
}>; }>;
} }
``` ```
+1 -1
View File
@@ -76,7 +76,7 @@
"jest-docblock": "30.0.0-beta.3", "jest-docblock": "30.0.0-beta.3",
"json5": "2.2.3", "json5": "2.2.3",
"leven": "4.0.0", "leven": "4.0.0",
"linguist-languages": "7.31.2", "linguist-languages": "8.0.0",
"meriyah": "6.0.6", "meriyah": "6.0.6",
"micromatch": "4.0.8", "micromatch": "4.0.8",
"minimist": "1.2.8", "minimist": "1.2.8",
+1 -1
View File
@@ -680,7 +680,7 @@ export interface SupportLanguage {
linguistLanguageId?: number | undefined; linguistLanguageId?: number | undefined;
vscodeLanguageIds?: string[] | undefined; vscodeLanguageIds?: string[] | undefined;
interpreters?: string[] | undefined; interpreters?: string[] | undefined;
isSupported?: (({ filepath: string }) => boolean) | undefined; isSupported?: ((options: { filepath: string }) => boolean) | undefined;
} }
export interface SupportOptionRange { export interface SupportOptionRange {
+1 -1
View File
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const languages = [ const languages = [
+1 -1
View File
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const languages = [ const languages = [
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const languages = [ const languages = [
+1 -1
View File
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const languages = [ const languages = [
+1 -1
View File
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const languages = [ const languages = [
+1 -1
View File
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const ignoredFilenames = new Set([ const ignoredFilenames = new Set([
+1 -1
View File
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const languages = [ const languages = [
+1 -1
View File
@@ -1,4 +1,4 @@
import linguistLanguages from "linguist-languages"; import * as linguistLanguages from "linguist-languages";
import createLanguage from "../utils/create-language.js"; import createLanguage from "../utils/create-language.js";
const ignoredFilenames = new Set([ const ignoredFilenames = new Set([
+56 -31
View File
@@ -1,39 +1,64 @@
function assertUniqueArray(array, message) { import assert from "node:assert";
if (new Set(array).size === array.length) {
return; /** @import {Language as LinguistLanguage} from 'linguist-languages' */
/**
@typedef {{
name: string;
parsers?: readonly string[];
group?: string | undefined;
tmScope?: string | undefined;
aceMode?: string | undefined;
codemirrorMode?: string | undefined;
codemirrorMimeType?: string | undefined;
aliases?: readonly string[] | undefined;
extensions?: readonly string[] | undefined;
filenames?: readonly string[] | undefined;
linguistLanguageId?: number | undefined;
vscodeLanguageIds?: readonly string[] | undefined;
interpreters?: readonly string[] | undefined;
isSupported?: ((options: {filepath: string}) => boolean) | undefined;
}} Language
*/
const excludedFields = new Set([
"color",
// Rename as `linguistLanguageId`
"languageId",
]);
const arrayTypeFields = new Set([
"parsers",
"aliases",
"extensions",
"interpreters",
"filenames",
"vscodeLanguageIds",
]);
/**
* @param {LinguistLanguage} linguistLanguage
* @param {(data: LinguistLanguage) => Partial<LinguistLanguage & Language>} getOverrides
* @returns {Language}
*/
function createLanguage(linguistLanguage, getOverrides) {
const language = { ...linguistLanguage, ...getOverrides(linguistLanguage) };
language.linguistLanguageId = language.languageId;
for (const field of excludedFields) {
delete language[field];
} }
/* c8 ignore next */ for (const property of arrayTypeFields) {
throw new Error(message); const value = language[property];
}
function createLanguage(linguistData, getOverrides) { assert.ok(
const { languageId, ...restData } = linguistData; value === undefined ||
const overrides = getOverrides(linguistData); (Array.isArray(value) && new Set(value).size === value.length),
`Language property '${property}' should be 'undefined' or unique array.`,
if (process.env.NODE_ENV !== "production" && overrides) { );
for (const property of [
"parsers",
"extensions",
"interpreters",
"filenames",
]) {
const value = overrides[property];
if (value) {
assertUniqueArray(
value,
`Language property '${property}' should be unique.`,
);
}
}
} }
return { return language;
linguistLanguageId: languageId,
...restData,
...overrides,
};
} }
export default createLanguage; export default createLanguage;
@@ -1,4 +1,4 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`API getSupportInfo() 1`] = ` exports[`API getSupportInfo() 1`] = `
{ {
@@ -314,7 +314,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["xhtml"], "aliases": ["xhtml"],
"codemirrorMimeType": "text/html", "codemirrorMimeType": "text/html",
"codemirrorMode": "htmlmixed", "codemirrorMode": "htmlmixed",
"color": "#e34c26",
"extensions": [".component.html"], "extensions": [".component.html"],
"filenames": [], "filenames": [],
"linguistLanguageId": 146, "linguistLanguageId": 146,
@@ -328,7 +327,6 @@ exports[`CLI --support-info 1`] = `
"aceMode": "css", "aceMode": "css",
"codemirrorMimeType": "text/css", "codemirrorMimeType": "text/css",
"codemirrorMode": "css", "codemirrorMode": "css",
"color": "#663399",
"extensions": [".css", ".wxss"], "extensions": [".css", ".wxss"],
"linguistLanguageId": 50, "linguistLanguageId": 50,
"name": "CSS", "name": "CSS",
@@ -342,7 +340,6 @@ exports[`CLI --support-info 1`] = `
"aliases": [], "aliases": [],
"codemirrorMimeType": "text/javascript", "codemirrorMimeType": "text/javascript",
"codemirrorMode": "javascript", "codemirrorMode": "javascript",
"color": "#f1e05a",
"extensions": [".js.flow"], "extensions": [".js.flow"],
"filenames": [], "filenames": [],
"interpreters": [ "interpreters": [
@@ -366,7 +363,6 @@ exports[`CLI --support-info 1`] = `
}, },
{ {
"aceMode": "text", "aceMode": "text",
"color": "#e10098",
"extensions": [".graphql", ".gql", ".graphqls"], "extensions": [".graphql", ".gql", ".graphqls"],
"linguistLanguageId": 139, "linguistLanguageId": 139,
"name": "GraphQL", "name": "GraphQL",
@@ -378,7 +374,6 @@ exports[`CLI --support-info 1`] = `
{ {
"aceMode": "handlebars", "aceMode": "handlebars",
"aliases": ["hbs", "htmlbars"], "aliases": ["hbs", "htmlbars"],
"color": "#f7931e",
"extensions": [".handlebars", ".hbs"], "extensions": [".handlebars", ".hbs"],
"linguistLanguageId": 155, "linguistLanguageId": 155,
"name": "Handlebars", "name": "Handlebars",
@@ -392,7 +387,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["xhtml"], "aliases": ["xhtml"],
"codemirrorMimeType": "text/html", "codemirrorMimeType": "text/html",
"codemirrorMode": "htmlmixed", "codemirrorMode": "htmlmixed",
"color": "#e34c26",
"extensions": [ "extensions": [
".html", ".html",
".hta", ".hta",
@@ -414,7 +408,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["js", "node"], "aliases": ["js", "node"],
"codemirrorMimeType": "text/javascript", "codemirrorMimeType": "text/javascript",
"codemirrorMode": "javascript", "codemirrorMode": "javascript",
"color": "#f1e05a",
"extensions": [ "extensions": [
".js", ".js",
"._js", "._js",
@@ -478,7 +471,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["geojson", "jsonl", "sarif", "topojson"], "aliases": ["geojson", "jsonl", "sarif", "topojson"],
"codemirrorMimeType": "application/json", "codemirrorMimeType": "application/json",
"codemirrorMode": "javascript", "codemirrorMode": "javascript",
"color": "#292929",
"extensions": [ "extensions": [
".json", ".json",
".4DForm", ".4DForm",
@@ -530,7 +522,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["jsonc"], "aliases": ["jsonc"],
"codemirrorMimeType": "text/javascript", "codemirrorMimeType": "text/javascript",
"codemirrorMode": "javascript", "codemirrorMode": "javascript",
"color": "#292929",
"extensions": [ "extensions": [
".jsonc", ".jsonc",
".code-snippets", ".code-snippets",
@@ -564,7 +555,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["geojson", "jsonl", "sarif", "topojson"], "aliases": ["geojson", "jsonl", "sarif", "topojson"],
"codemirrorMimeType": "application/json", "codemirrorMimeType": "application/json",
"codemirrorMode": "javascript", "codemirrorMode": "javascript",
"color": "#292929",
"extensions": [".importmap"], "extensions": [".importmap"],
"filenames": ["package.json", "package-lock.json", "composer.json"], "filenames": ["package.json", "package-lock.json", "composer.json"],
"linguistLanguageId": 174, "linguistLanguageId": 174,
@@ -578,7 +568,6 @@ exports[`CLI --support-info 1`] = `
"aceMode": "javascript", "aceMode": "javascript",
"codemirrorMimeType": "application/json", "codemirrorMimeType": "application/json",
"codemirrorMode": "javascript", "codemirrorMode": "javascript",
"color": "#267CB9",
"extensions": [".json5"], "extensions": [".json5"],
"linguistLanguageId": 175, "linguistLanguageId": 175,
"name": "JSON5", "name": "JSON5",
@@ -613,7 +602,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["less-css"], "aliases": ["less-css"],
"codemirrorMimeType": "text/css", "codemirrorMimeType": "text/css",
"codemirrorMode": "css", "codemirrorMode": "css",
"color": "#1d365d",
"extensions": [".less"], "extensions": [".less"],
"linguistLanguageId": 198, "linguistLanguageId": 198,
"name": "Less", "name": "Less",
@@ -627,7 +615,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["xhtml"], "aliases": ["xhtml"],
"codemirrorMimeType": "text/html", "codemirrorMimeType": "text/html",
"codemirrorMode": "htmlmixed", "codemirrorMode": "htmlmixed",
"color": "#e34c26",
"extensions": [], "extensions": [],
"filenames": [], "filenames": [],
"linguistLanguageId": 146, "linguistLanguageId": 146,
@@ -642,7 +629,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["md", "pandoc"], "aliases": ["md", "pandoc"],
"codemirrorMimeType": "text/x-gfm", "codemirrorMimeType": "text/x-gfm",
"codemirrorMode": "gfm", "codemirrorMode": "gfm",
"color": "#083fa1",
"extensions": [ "extensions": [
".md", ".md",
".livemd", ".livemd",
@@ -670,7 +656,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["md", "pandoc"], "aliases": ["md", "pandoc"],
"codemirrorMimeType": "text/x-gfm", "codemirrorMimeType": "text/x-gfm",
"codemirrorMode": "gfm", "codemirrorMode": "gfm",
"color": "#083fa1",
"extensions": [".mdx"], "extensions": [".mdx"],
"filenames": [], "filenames": [],
"linguistLanguageId": 222, "linguistLanguageId": 222,
@@ -686,7 +671,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["MJML", "mjml"], "aliases": ["MJML", "mjml"],
"codemirrorMimeType": "text/html", "codemirrorMimeType": "text/html",
"codemirrorMode": "htmlmixed", "codemirrorMode": "htmlmixed",
"color": "#e34c26",
"extensions": [".mjml"], "extensions": [".mjml"],
"filenames": [], "filenames": [],
"linguistLanguageId": 146, "linguistLanguageId": 146,
@@ -698,7 +682,6 @@ exports[`CLI --support-info 1`] = `
}, },
{ {
"aceMode": "text", "aceMode": "text",
"color": "#dc3a0c",
"extensions": [".pcss", ".postcss"], "extensions": [".pcss", ".postcss"],
"group": "CSS", "group": "CSS",
"linguistLanguageId": 262764437, "linguistLanguageId": 262764437,
@@ -712,7 +695,6 @@ exports[`CLI --support-info 1`] = `
"aceMode": "scss", "aceMode": "scss",
"codemirrorMimeType": "text/x-scss", "codemirrorMimeType": "text/x-scss",
"codemirrorMode": "css", "codemirrorMode": "css",
"color": "#c6538c",
"extensions": [".scss"], "extensions": [".scss"],
"linguistLanguageId": 329, "linguistLanguageId": 329,
"name": "SCSS", "name": "SCSS",
@@ -725,7 +707,6 @@ exports[`CLI --support-info 1`] = `
"aceMode": "javascript", "aceMode": "javascript",
"codemirrorMimeType": "text/jsx", "codemirrorMimeType": "text/jsx",
"codemirrorMode": "jsx", "codemirrorMode": "jsx",
"color": "#3178c6",
"extensions": [".tsx"], "extensions": [".tsx"],
"group": "TypeScript", "group": "TypeScript",
"linguistLanguageId": 94901924, "linguistLanguageId": 94901924,
@@ -740,7 +721,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["ts"], "aliases": ["ts"],
"codemirrorMimeType": "application/typescript", "codemirrorMimeType": "application/typescript",
"codemirrorMode": "javascript", "codemirrorMode": "javascript",
"color": "#3178c6",
"extensions": [".ts", ".cts", ".mts"], "extensions": [".ts", ".cts", ".mts"],
"interpreters": ["bun", "deno", "ts-node", "tsx"], "interpreters": ["bun", "deno", "ts-node", "tsx"],
"linguistLanguageId": 378, "linguistLanguageId": 378,
@@ -752,7 +732,6 @@ exports[`CLI --support-info 1`] = `
}, },
{ {
"aceMode": "html", "aceMode": "html",
"color": "#41b883",
"extensions": [".vue"], "extensions": [".vue"],
"linguistLanguageId": 391, "linguistLanguageId": 391,
"name": "Vue", "name": "Vue",
@@ -766,7 +745,6 @@ exports[`CLI --support-info 1`] = `
"aliases": ["yml"], "aliases": ["yml"],
"codemirrorMimeType": "text/x-yaml", "codemirrorMimeType": "text/x-yaml",
"codemirrorMode": "yaml", "codemirrorMode": "yaml",
"color": "#cb171e",
"extensions": [ "extensions": [
".yml", ".yml",
".mir", ".mir",
+5 -5
View File
@@ -6374,10 +6374,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"linguist-languages@npm:7.31.2": "linguist-languages@npm:8.0.0":
version: 7.31.2 version: 8.0.0
resolution: "linguist-languages@npm:7.31.2" resolution: "linguist-languages@npm:8.0.0"
checksum: 10/2cf3963e92bd735afb8d490e6a5b351c4b1a6c9c44350f4efee844855c5d0226029d18f172be2750d4915c21d4ff8e117233777680d20a35cc81c1e805447407 checksum: 10/89e390f16b0da76666573db5cd9ad65b5046c71953b298fddef3605b7057a537dfa5c4525ddeb8b6aa6fbf3e53da52907abee7447fa7a6e500818261bf519f60
languageName: node languageName: node
linkType: hard linkType: hard
@@ -7388,7 +7388,7 @@ __metadata:
json5: "npm:2.2.3" json5: "npm:2.2.3"
knip: "npm:5.50.5" knip: "npm:5.50.5"
leven: "npm:4.0.0" leven: "npm:4.0.0"
linguist-languages: "npm:7.31.2" linguist-languages: "npm:8.0.0"
magic-string: "npm:0.30.17" magic-string: "npm:0.30.17"
meriyah: "npm:6.0.6" meriyah: "npm:6.0.6"
micromatch: "npm:4.0.8" micromatch: "npm:4.0.8"