Skip to content

Commit 94915dd

Browse files
authored
chore: cleanup imports in d.ts files (#14663)
1 parent 5ce83ac commit 94915dd

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

scripts/buildUtils.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export const typeOnlyPackages = new Set([
3434
]);
3535

3636
// Get absolute paths of all directories under packages/*
37-
export function getPackages() {
37+
function getPackages() {
3838
const packages = fs
3939
.readdirSync(PACKAGES_DIR)
4040
.map(file => path.resolve(PACKAGES_DIR, file))

scripts/bundleTs.mjs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,12 @@ import {
1414
ExtractorConfig,
1515
} from '@microsoft/api-extractor';
1616
import chalk from 'chalk';
17+
import {ESLint} from 'eslint';
1718
import {glob} from 'glob';
1819
import fs from 'graceful-fs';
1920
import pkgDir from 'pkg-dir';
20-
import prettier from 'prettier';
2121
import {rimraf} from 'rimraf';
22-
import {copyrightSnippet, getPackages} from './buildUtils.mjs';
23-
24-
const prettierConfig = await prettier.resolveConfig(
25-
fileURLToPath(import.meta.url).replace(/\.js$/, '.d.ts'),
26-
);
22+
import {copyrightSnippet, getPackagesWithTsConfig} from './buildUtils.mjs';
2723

2824
const require = createRequire(import.meta.url);
2925
const typescriptCompilerFolder = await pkgDir(require.resolve('typescript'));
@@ -32,13 +28,8 @@ const typesNodeReferenceDirective = '/// <reference types="node" />';
3228

3329
const excludedPackages = new Set(['@jest/globals', '@jest/test-globals']);
3430

35-
const packages = getPackages();
36-
37-
const isTsPackage = p =>
38-
fs.existsSync(path.resolve(p.packageDir, 'tsconfig.json'));
39-
40-
const packagesToBundle = packages.filter(
41-
p => isTsPackage(p) && !excludedPackages.has(p.pkg.name),
31+
const packagesToBundle = getPackagesWithTsConfig().filter(
32+
p => !excludedPackages.has(p.pkg.name),
4233
);
4334

4435
console.log(chalk.inverse(' Extracting TypeScript definition files '));
@@ -108,6 +99,20 @@ await fs.promises.writeFile(
10899
JSON.stringify(sharedExtractorConfig, null, 2),
109100
);
110101

102+
const eslint = new ESLint({
103+
cwd: process.cwd(),
104+
fix: true,
105+
overrideConfig: {
106+
rules: {
107+
// `d.ts` files are by nature `type` only imports, so it's just noise when looking at the file
108+
'@typescript-eslint/consistent-type-imports': [
109+
'error',
110+
{prefer: 'no-type-imports'},
111+
],
112+
},
113+
},
114+
});
115+
111116
let compilerState;
112117

113118
await Promise.all(
@@ -205,14 +210,17 @@ await Promise.all(
205210

206211
definitionFile = [
207212
copyrightSnippet,
213+
'',
208214
...definitionFile.split(copyrightSnippet),
209215
].join('\n');
210216

211-
const formattedContent = await prettier.format(definitionFile, {
212-
...prettierConfig,
213-
filepath,
217+
const [lintResult] = await eslint.lintText(definitionFile, {
218+
filePath: 'some-file.ts',
214219
});
215220

221+
// if the autofixer did anything, the result is in `output`
222+
const formattedContent = lintResult.output || definitionFile;
223+
216224
await fs.promises.writeFile(
217225
filepath.replace(
218226
`${path.sep}dist${path.sep}`,

0 commit comments

Comments
 (0)