Skip to content

Commit fd467bb

Browse files
authored
fix: remove interopDefault to use jiti's default (#19697)
* fix: remove interopDefault to use jiti's default * refactor * fix CI * refactor * refactor * add tests * fix tests * remove unused file
1 parent 2dfb5eb commit fd467bb

File tree

7 files changed

+1838
-1488
lines changed

7 files changed

+1838
-1488
lines changed

knip.jsonc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
"c8",
2727
// Optional peer dependency used for loading TypeScript configuration files
2828
"jiti",
29+
"jiti-v2.0",
30+
"jiti-v2.1",
2931
],
3032
},
3133
"docs": {

lib/config/config-loader.js

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,13 @@ function isNativeTypeScriptSupportEnabled() {
139139
* @since 9.24.0
140140
*/
141141
async function loadTypeScriptConfigFileWithJiti(filePath, fileURL, mtime) {
142-
// eslint-disable-next-line no-use-before-define -- `ConfigLoader.loadJiti` can be overwritten for testing
143-
const { createJiti } = await ConfigLoader.loadJiti().catch(() => {
144-
throw new Error(
145-
"The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.",
146-
);
147-
});
142+
const { createJiti, version: jitiVersion } =
143+
// eslint-disable-next-line no-use-before-define -- `ConfigLoader.loadJiti` can be overwritten for testing
144+
await ConfigLoader.loadJiti().catch(() => {
145+
throw new Error(
146+
"The 'jiti' library is required for loading TypeScript configuration files. Make sure to install it.",
147+
);
148+
});
148149

149150
// `createJiti` was added in jiti v2.
150151
if (typeof createJiti !== "function") {
@@ -157,11 +158,15 @@ async function loadTypeScriptConfigFileWithJiti(filePath, fileURL, mtime) {
157158
* Disabling `moduleCache` allows us to reload a
158159
* config file when the last modified timestamp changes.
159160
*/
160-
161-
const jiti = createJiti(__filename, {
161+
const jitiOptions = {
162162
moduleCache: false,
163-
interopDefault: false,
164-
});
163+
};
164+
165+
if (jitiVersion.startsWith("2.1.")) {
166+
jitiOptions.interopDefault = false;
167+
}
168+
169+
const jiti = createJiti(__filename, jitiOptions);
165170
const config = await jiti.import(fileURL.href);
166171

167172
importedConfigFileModificationTime.set(filePath, mtime);
@@ -498,11 +503,12 @@ class ConfigLoader {
498503

499504
/**
500505
* Used to import the jiti dependency. This method is exposed internally for testing purposes.
501-
* @returns {Promise<Record<string, unknown>>} A promise that fulfills with a module object
502-
* or rejects with an error if jiti is not found.
506+
* @returns {Promise<{createJiti: Function|undefined, version: string;}>} A promise that fulfills with an object containing the jiti module's createJiti function and version.
503507
*/
504-
static loadJiti() {
505-
return import("jiti");
508+
static async loadJiti() {
509+
const { createJiti } = await import("jiti");
510+
const version = require("jiti/package.json").version;
511+
return { createJiti, version };
506512
}
507513

508514
/**

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,9 @@
173173
"globals": "^15.0.0",
174174
"got": "^11.8.3",
175175
"gray-matter": "^4.0.3",
176-
"jiti": "^2.1.0",
176+
"jiti": "^2.2.0",
177+
"jiti-v2.0": "npm:[email protected]",
178+
"jiti-v2.1": "npm:[email protected]",
177179
"knip": "^5.32.0",
178180
"lint-staged": "^11.0.0",
179181
"load-perf": "^0.2.0",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
foo;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module.exports = {
2+
configs: {
3+
recommended: {
4+
rules: {
5+
"no-undef": "error",
6+
},
7+
},
8+
},
9+
};
10+
11+
// The following string will confuse jiti when interopDefault is false:
12+
// @foo export {}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "commonjs"
3+
}

0 commit comments

Comments
 (0)