diff --git a/src/language-js/parse/oxc.js b/src/language-js/parse/oxc.js index 79be36b7c..9472499df 100644 --- a/src/language-js/parse/oxc.js +++ b/src/language-js/parse/oxc.js @@ -4,6 +4,7 @@ import createError from "../../common/parser-create-error.js"; import { tryCombinationsSync } from "../../utilities/try-combinations.js"; import postprocess from "./postprocess/index.js"; import createParser from "./utilities/create-parser.js"; +import { isDtsFile } from "./utilities/is-dts-file.js"; import jsxRegexp from "./utilities/jsx-regexp.evaluate.js"; import { shouldEnableJsx } from "./utilities/jsx-support.js"; import { @@ -103,10 +104,7 @@ function parseJs(text, options) { function getLanguageCombinations(text, options) { const filepath = options?.filepath; - if ( - typeof filepath === "string" && - filepath.toLowerCase().endsWith(".d.ts") - ) { + if (isDtsFile(filepath)) { return ["dts"]; } diff --git a/src/language-js/parse/utilities/is-dts-file.js b/src/language-js/parse/utilities/is-dts-file.js new file mode 100644 index 000000000..25aa2da50 --- /dev/null +++ b/src/language-js/parse/utilities/is-dts-file.js @@ -0,0 +1,5 @@ +function isDtsFile(filepath) { + return typeof filepath === "string" && /\.d\.(?:ts|mts|cts)$/i.test(filepath); +} + +export { isDtsFile }; diff --git a/src/language-js/parse/utilities/source-types.js b/src/language-js/parse/utilities/source-types.js index 3d1cda81a..2d375ea79 100644 --- a/src/language-js/parse/utilities/source-types.js +++ b/src/language-js/parse/utilities/source-types.js @@ -13,8 +13,6 @@ export function getSourceType(filepath) { return; } - filepath = filepath.toLowerCase(); - if (/\.(?:mjs|mts)$/i.test(filepath)) { return SOURCE_TYPE_MODULE; } diff --git a/src/language-js/parse/yuku.js b/src/language-js/parse/yuku.js index e7f05eb12..dbeddceed 100644 --- a/src/language-js/parse/yuku.js +++ b/src/language-js/parse/yuku.js @@ -4,6 +4,7 @@ import createError from "../../common/parser-create-error.js"; import { tryCombinationsSync } from "../../utilities/try-combinations.js"; import postprocess from "./postprocess/index.js"; import createParser from "./utilities/create-parser.js"; +import { isDtsFile } from "./utilities/is-dts-file.js"; import jsxRegexp from "./utilities/jsx-regexp.evaluate.js"; import { shouldEnableJsx } from "./utilities/jsx-support.js"; import { @@ -87,10 +88,7 @@ function parseJs(text, options) { function getLanguageCombinations(text, options) { const filepath = options?.filepath; - if ( - typeof filepath === "string" && - filepath.toLowerCase().endsWith(".d.ts") - ) { + if (isDtsFile(filepath)) { return ["dts"]; } diff --git a/tests/format/typescript/d-ts-files/__snapshots__/format.test.js.snap b/tests/format/typescript/d-ts-files/__snapshots__/format.test.js.snap deleted file mode 100644 index a4b90ce13..000000000 --- a/tests/format/typescript/d-ts-files/__snapshots__/format.test.js.snap +++ /dev/null @@ -1,31 +0,0 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`const-without-initializer.d.ts format 1`] = ` -====================================options===================================== -parsers: ["typescript"] - printWidth: 80 (default) | -=====================================input====================================== -export const version: string; - -=====================================output===================================== -export const version: string; - -================================================================================ -`; - -exports[`const-without-initializer-in-namespace.d.ts format 1`] = ` -====================================options===================================== -parsers: ["typescript"] - printWidth: 80 (default) | -=====================================input====================================== -export namespace builders { - const breakParent: string; -} - -=====================================output===================================== -export namespace builders { - const breakParent: string; -} - -================================================================================ -`; diff --git a/tests/format/typescript/dts-files/__snapshots__/format.test.js.snap b/tests/format/typescript/dts-files/__snapshots__/format.test.js.snap new file mode 100644 index 000000000..fa83c2036 --- /dev/null +++ b/tests/format/typescript/dts-files/__snapshots__/format.test.js.snap @@ -0,0 +1,91 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`const-without-initializer.d.cts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] + printWidth: 80 (default) | +=====================================input====================================== +const version: string; + +=====================================output===================================== +const version: string; + +================================================================================ +`; + +exports[`const-without-initializer.d.mts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] + printWidth: 80 (default) | +=====================================input====================================== +export const version: string; + +=====================================output===================================== +export const version: string; + +================================================================================ +`; + +exports[`const-without-initializer.d.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] + printWidth: 80 (default) | +=====================================input====================================== +export const version: string; + +=====================================output===================================== +export const version: string; + +================================================================================ +`; + +exports[`const-without-initializer-in-namespace.d.cts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] + printWidth: 80 (default) | +=====================================input====================================== +namespace builders { + const breakParent: string; +} + +=====================================output===================================== +namespace builders { + const breakParent: string; +} + +================================================================================ +`; + +exports[`const-without-initializer-in-namespace.d.mts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] + printWidth: 80 (default) | +=====================================input====================================== +export namespace builders { + const breakParent: string; +} + +=====================================output===================================== +export namespace builders { + const breakParent: string; +} + +================================================================================ +`; + +exports[`const-without-initializer-in-namespace.d.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] + printWidth: 80 (default) | +=====================================input====================================== +export namespace builders { + const breakParent: string; +} + +=====================================output===================================== +export namespace builders { + const breakParent: string; +} + +================================================================================ +`; diff --git a/tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.cts b/tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.cts new file mode 100644 index 000000000..45057a87f --- /dev/null +++ b/tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.cts @@ -0,0 +1,3 @@ +namespace builders { + const breakParent: string; +} diff --git a/tests/format/typescript/d-ts-files/const-without-initializer-in-namespace.d.ts b/tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.mts similarity index 100% rename from tests/format/typescript/d-ts-files/const-without-initializer-in-namespace.d.ts rename to tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.mts diff --git a/tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.ts b/tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.ts new file mode 100644 index 000000000..6a3a1f34a --- /dev/null +++ b/tests/format/typescript/dts-files/const-without-initializer-in-namespace.d.ts @@ -0,0 +1,3 @@ +export namespace builders { + const breakParent: string; +} diff --git a/tests/format/typescript/dts-files/const-without-initializer.d.cts b/tests/format/typescript/dts-files/const-without-initializer.d.cts new file mode 100644 index 000000000..2035369e2 --- /dev/null +++ b/tests/format/typescript/dts-files/const-without-initializer.d.cts @@ -0,0 +1 @@ +const version: string; diff --git a/tests/format/typescript/d-ts-files/const-without-initializer.d.ts b/tests/format/typescript/dts-files/const-without-initializer.d.mts similarity index 100% rename from tests/format/typescript/d-ts-files/const-without-initializer.d.ts rename to tests/format/typescript/dts-files/const-without-initializer.d.mts diff --git a/tests/format/typescript/dts-files/const-without-initializer.d.ts b/tests/format/typescript/dts-files/const-without-initializer.d.ts new file mode 100644 index 000000000..56ebe816e --- /dev/null +++ b/tests/format/typescript/dts-files/const-without-initializer.d.ts @@ -0,0 +1 @@ +export const version: string; diff --git a/tests/format/typescript/d-ts-files/format.test.js b/tests/format/typescript/dts-files/format.test.js similarity index 100% rename from tests/format/typescript/d-ts-files/format.test.js rename to tests/format/typescript/dts-files/format.test.js