Skip to content

Commit 495eabc

Browse files
authoredSep 12, 2024
ignore .d.ts files and process input directories (#86)
* ignore .d.ts files and process input directories
1 parent 7134b42 commit 495eabc

File tree

26 files changed

+622
-226
lines changed

26 files changed

+622
-226
lines changed
 

‎package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
"@types/glob": "8.1.0",
3838
"glob": "11.0.0",
3939
"prettier": "3.3.3",
40-
"typedoc": "^0.26.6",
40+
"typedoc": "^0.26.7",
4141
"typescript": "5.5.4",
42-
"tsx": "4.17.0",
43-
"vite": "5.4.1",
42+
"tsx": "4.19.1",
43+
"vite": "5.4.4",
4444
"vitest": "1.6.0",
4545
"@vitest/coverage-v8": "1.6.0"
4646
}

‎packages/ast/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@
5858
},
5959
"peerDependencies": {
6060
"eslint": "8.57.0",
61-
"typedoc": "^0.26.6",
61+
"typedoc": "^0.26.7",
6262
"typescript": "5.5.4",
63-
"vite": "^5.4.1",
63+
"vite": "^5.4.4",
6464
"vitest": "^1.6.0"
6565
}
6666
}

‎packages/build-config/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"prettier": "3.3.3",
3232
"rollup-plugin-preserve-shebang": "1.0.1",
3333
"typescript": "5.5.4",
34-
"vite": "^5.4.1",
34+
"vite": "^5.4.4",
3535
"vite-plugin-dts": "4.0.3",
3636
"vite-plugin-node-polyfills": "0.22.0",
3737
"vite-plugin-static-copy": "1.0.6",

‎packages/cli/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
"dependencies": {
8181
"@typescript-eslint/parser": "7.18.0",
8282
"eslint": "8.57.0",
83-
"tsx": "4.17.0"
83+
"tsx": "4.19.1"
8484
},
8585
"devDependencies": {
8686
"@ag-grid-devtools/ast": "workspace:*",
@@ -92,7 +92,7 @@
9292
"@ag-grid-devtools/types": "workspace:*",
9393
"@ag-grid-devtools/utils": "workspace:*",
9494
"@ag-grid-devtools/worker-utils": "workspace:*",
95-
"@types/diff": "5.2.1",
95+
"@types/diff": "5.2.2",
9696
"@types/graceful-fs": "4.1.9",
9797
"@types/node": "22.4.1",
9898
"@types/semver": "7.5.8",
@@ -107,9 +107,9 @@
107107
},
108108
"peerDependencies": {
109109
"eslint": "8.57.0",
110-
"typedoc": "^0.26.6",
110+
"typedoc": "^0.26.7",
111111
"typescript": "5.5.4",
112-
"vite": "^5.4.1",
112+
"vite": "^5.4.4",
113113
"vitest": "^1.6.0"
114114
}
115115
}

‎packages/cli/src/cli.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Enum, dynamicRequire, match } from '@ag-grid-devtools/utils';
2+
import path from 'path';
23
import {
34
parseArgs as parseMigrateCommandArgs,
45
cli as migrate,

‎packages/cli/src/commands/migrate.ts

+12-11
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ Options:
115115
See https://ag-grid.com/javascript-data-grid/codemods/#configuration-file
116116
117117
Additional arguments:
118-
[<file>...] List of input files to operate on.
118+
[<file>...<dir>...] List of input files and directories to operate on.
119119
Defaults to all source files in the current working directory excluding patterns in .gitignore
120120
121121
Other options:
@@ -323,18 +323,19 @@ async function migrate(
323323
? (await getGitSourceFiles(gitRoot)).map((path) => resolve(gitRoot, path))
324324
: null;
325325

326-
let inputFilePaths: string[];
327-
328-
if (input.length > 0) {
329-
inputFilePaths = input.map((path) => resolve(cwd, path));
330-
} else {
331-
const skipFiles: string[] = [];
332-
if (userConfigPath) {
333-
skipFiles.push(userConfigPath);
334-
}
335-
inputFilePaths = await findSourceFiles(cwd, SOURCE_FILE_EXTENSIONS, skipFiles, gitRoot);
326+
let skipFiles = new Set<string>();
327+
if (userConfigPath) {
328+
skipFiles.add(userConfigPath);
336329
}
337330

331+
const inputFilePaths = await findSourceFiles(
332+
cwd,
333+
input.length > 0 ? input : [cwd],
334+
SOURCE_FILE_EXTENSIONS,
335+
skipFiles,
336+
gitRoot,
337+
);
338+
338339
if (!allowUntracked) {
339340
const trackedFilePaths = gitSourceFilePaths ? new Set(gitSourceFilePaths) : null;
340341
let untrackedInputFiles = trackedFilePaths
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const exportedValue: string;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { createGrid } from '@ag-grid-community/core';
2+
3+
(() => {
4+
const gridOptions = { foo: 'bar' };
5+
gridOptions.baz = 3;
6+
const gridApi = createGrid(document.getQuerySelector('main'), gridOptions);
7+
gridApi.sizeColumnsToFit();
8+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { createGrid } from '@ag-grid-community/core';
2+
3+
(() => {
4+
const gridOptions = { foo: 'bar' };
5+
gridOptions.baz = 3;
6+
const gridApi = createGrid(document.getQuerySelector('main'), gridOptions);
7+
gridApi.sizeColumnsToFit();
8+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { createGrid } from '@ag-grid-community/core';
2+
3+
(() => {
4+
const gridOptions = { foo: 'bar' };
5+
gridOptions.baz = 3;
6+
const gridApi = createGrid(document.getQuerySelector('main'), gridOptions);
7+
gridApi.sizeColumnsToFit();
8+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { expect, test } from 'vitest';
2+
import { cli } from '../../../cli';
3+
import { CliE2ETestEnv } from '../e2e-test-utils';
4+
5+
const env = new CliE2ETestEnv(import.meta.url);
6+
7+
test(
8+
'cli e2e - input files and directories',
9+
async () => {
10+
await env.init();
11+
await cli(
12+
['migrate', '--num-threads=3', '--allow-untracked', '--from=30.0.0', 'file1.js', 'dir'],
13+
env.cliOptions,
14+
);
15+
expect(await env.loadExpectedSrc('file1.js')).toEqual(await env.loadTempSrc('file1.js'));
16+
17+
expect(await env.loadExpectedSrc('dir/file2.js')).toEqual(
18+
await env.loadTempSrc('dir/file2.js'),
19+
);
20+
21+
expect(await env.loadExpectedSrc('dir/file3.js')).toEqual(
22+
await env.loadTempSrc('dir/file3.js'),
23+
);
24+
25+
expect(await env.loadInputSrc('untouched.js')).toEqual(await env.loadTempSrc('untouched.js'));
26+
},
27+
env.TIMEOUT,
28+
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Grid as AgGrid } from '@ag-grid-community/core';
2+
3+
(() => {
4+
const gridOptions = { foo: 'bar' };
5+
gridOptions.baz = 3;
6+
new AgGrid(document.getQuerySelector('main'), gridOptions);
7+
gridOptions.api.sizeColumnsToFit();
8+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Grid as AgGrid } from '@ag-grid-community/core';
2+
3+
(() => {
4+
const gridOptions = { foo: 'bar' };
5+
gridOptions.baz = 3;
6+
new AgGrid(document.getQuerySelector('main'), gridOptions);
7+
gridOptions.api.sizeColumnsToFit();
8+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Grid as AgGrid } from '@ag-grid-community/core';
2+
3+
(() => {
4+
const gridOptions = { foo: 'bar' };
5+
gridOptions.baz = 3;
6+
new AgGrid(document.getQuerySelector('main'), gridOptions);
7+
gridOptions.api.sizeColumnsToFit();
8+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Grid as AgGrid } from '@ag-grid-community/core';
2+
3+
(() => {
4+
const gridOptions = { foo: 'untouched' };
5+
gridOptions.baz = 3;
6+
new AgGrid(document.getQuerySelector('main'), gridOptions);
7+
gridOptions.api.sizeColumnsToFit();
8+
})();

‎packages/cli/src/utils/fs.ts

+67-18
Original file line numberDiff line numberDiff line change
@@ -30,28 +30,77 @@ export async function findGitRoot(path: string): Promise<string | undefined> {
3030
}
3131
}
3232

33+
export async function isDirectory(path: string): Promise<boolean> {
34+
try {
35+
return (await stat(path)).isDirectory();
36+
} catch {
37+
return false;
38+
}
39+
}
40+
41+
async function resolveFilesOrDirectories(
42+
input: string[],
43+
cwd: string,
44+
): Promise<{ filesSet: Set<string>; directoriesSet: Set<string> }> {
45+
const files = new Set<string>();
46+
const directories = new Set<string>();
47+
48+
const checks = input.map(async (item) => {
49+
const fullPath = resolve(cwd, item);
50+
try {
51+
const statResult = await stat(fullPath);
52+
if (statResult.isDirectory()) {
53+
directories.add(fullPath);
54+
} else {
55+
files.add(fullPath);
56+
}
57+
} catch {
58+
files.add(fullPath);
59+
}
60+
});
61+
62+
await Promise.all(checks);
63+
64+
return { filesSet: files, directoriesSet: directories };
65+
}
66+
3367
export async function findSourceFiles(
34-
path: string,
68+
cwd: string,
69+
paths: string[],
3570
extensions: string[],
36-
skipFiles: string[],
71+
skipFiles: ReadonlySet<string> | null,
3772
gitRoot: string | undefined,
3873
): Promise<Array<string>> {
39-
path = resolve(path);
40-
41-
let files = await glob(
42-
extensions.map((ext) => `**/*${ext}`),
43-
{
44-
dot: true,
45-
cwd: path,
46-
nodir: true,
47-
absolute: true,
48-
ignore: ['**/node_modules/**', '**/.git/**'],
49-
},
50-
);
51-
52-
if (skipFiles.length > 0) {
53-
const skipFilesSet = new Set(skipFiles);
54-
files = files.filter((file) => !skipFilesSet.has(file));
74+
const { filesSet, directoriesSet } = await resolveFilesOrDirectories(paths, cwd);
75+
76+
for (let path of directoriesSet) {
77+
path = resolve(path);
78+
for (const file of await glob(
79+
extensions.map((ext) => `**/*${ext}`),
80+
{
81+
dot: true,
82+
cwd: path,
83+
nodir: true,
84+
absolute: true,
85+
ignore: [
86+
'**/node_modules/**',
87+
'**/.git/**',
88+
'**/.hg/**',
89+
'**/.svn/**',
90+
91+
// ignore .d.ts files as we cannot properly parse and process them
92+
'**/*.d.ts',
93+
],
94+
},
95+
)) {
96+
filesSet.add(file);
97+
}
98+
}
99+
100+
let files = Array.from(filesSet);
101+
102+
if (skipFiles && skipFiles.size > 0) {
103+
files = files.filter((file) => !skipFiles.has(file));
55104
}
56105

57106
interface DirGitignore {

‎packages/cli/src/utils/pkg.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ export function getCliPackageVersion(): string {
99
}
1010

1111
export function getCliCommand(): string {
12-
return `npx ${getCliPackageName()}@${getCliPackageVersion().replace(/^(\d+\.\d+).+$/, '$1')}`;
12+
return `npx ${getCliPackageName()}@latest`;
1313
}

‎packages/codemod-task-utils/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@
5050
},
5151
"peerDependencies": {
5252
"eslint": "8.57.0",
53-
"typedoc": "^0.26.6",
53+
"typedoc": "^0.26.7",
5454
"typescript": "5.5.4",
55-
"vite": "^5.4.1",
55+
"vite": "^5.4.4",
5656
"vitest": "^1.6.0"
5757
}
5858
}

‎packages/codemod-utils/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@
5858
"peerDependencies": {
5959
"@typescript-eslint/parser": "7.18.0",
6060
"eslint": "8.57.0",
61-
"typedoc": "^0.26.6",
61+
"typedoc": "^0.26.7",
6262
"typescript": "5.5.4",
63-
"vite": "^5.4.1",
63+
"vite": "^5.4.4",
6464
"vitest": "^1.6.0"
6565
}
6666
}

‎packages/codemods-tasks/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@
4343
},
4444
"peerDependencies": {
4545
"eslint": "8.57.0",
46-
"typedoc": "^0.26.6",
46+
"typedoc": "^0.26.7",
4747
"typescript": "5.5.4",
48-
"vite": "^5.4.1",
48+
"vite": "^5.4.4",
4949
"vitest": "^1.6.0"
5050
}
5151
}

‎packages/systemjs-plugin/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"peerDependencies": {
4646
"eslint": "8.57.0",
4747
"typescript": "^5.5.4",
48-
"vite": "^5.4.1",
48+
"vite": "^5.4.4",
4949
"vite-plugin-node-polyfills": "^0.22"
5050
}
5151
}

‎packages/test-utils/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@
5555
"@vitest/expect": "^1.6.0",
5656
"@vitest/runner": "^1.6.0",
5757
"eslint": "8.57.0",
58-
"typedoc": "^0.26.6",
58+
"typedoc": "^0.26.7",
5959
"typescript": "5.5.4",
60-
"vite": "^5.4.1",
60+
"vite": "^5.4.4",
6161
"vitest": "^1.6.0"
6262
}
6363
}

‎packages/types/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
},
4343
"peerDependencies": {
4444
"eslint": "8.57.0",
45-
"typedoc": "^0.26.6",
45+
"typedoc": "^0.26.7",
4646
"typescript": "5.5.4",
47-
"vite": "^5.4.1"
47+
"vite": "^5.4.4"
4848
}
4949
}

‎packages/utils/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@
4949
},
5050
"peerDependencies": {
5151
"eslint": "8.57.0",
52-
"typedoc": "^0.26.6",
52+
"typedoc": "^0.26.7",
5353
"typescript": "5.5.4",
54-
"vite": "^5.4.1",
54+
"vite": "^5.4.4",
5555
"vitest": "^1.6.0"
5656
}
5757
}

‎packages/worker-utils/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@
4747
},
4848
"peerDependencies": {
4949
"eslint": "8.57.0",
50-
"typedoc": "^0.26.6",
50+
"typedoc": "^0.26.7",
5151
"typescript": "5.5.4",
52-
"vite": "^5.4.1",
52+
"vite": "^5.4.4",
5353
"vitest": "^1.6.0"
5454
}
5555
}

0 commit comments

Comments
 (0)
Please sign in to comment.