From 37666904755b1a633c8fcc00907502b1cc388546 Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Tue, 27 May 2025 22:07:51 +0100 Subject: [PATCH 1/8] add plugin-jscodeshift --- .../<%= filename %>.test.ts | 16 +++++++ .../templates/plugin-jscodeshift/README.md | 3 ++ .../scenarios/hello-world/input.js | 9 ++++ .../scenarios/hello-world/output.errors.cjs | 6 +++ .../scenarios/hello-world/output.js | 9 ++++ .../scenarios/hello-world/output.warnings.cjs | 1 + .../scenarios/hello-world/scenario.json | 8 ++++ .../templates/plugin-jscodeshift/index.ts | 2 + .../plugin-jscodeshift/jscodeshift.adapter.ts | 47 +++++++++++++++++++ .../templates/plugin-jscodeshift/plugin.json | 4 ++ .../plugin-jscodeshift/transforms/index.ts | 1 + 11 files changed, 106 insertions(+) create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/<%= filename %>.test.ts create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/README.md create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/input.js create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.errors.cjs create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.js create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.warnings.cjs create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/scenario.json create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/index.ts create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/plugin.json create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/<%= filename %>.test.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/<%= filename %>.test.ts new file mode 100644 index 00000000..84038b5a --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/<%= filename %>.test.ts @@ -0,0 +1,16 @@ +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describe, expect, onTestFinished, test } from 'vitest'; +import { loadTransformScenarios } from '../../test/runners/transform'; + +import <%= identifier %> from '.'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +describe(<%= identifier %>, () => { + const scenariosPath = join(__dirname, './__fixtures__/scenarios'); + loadTransformScenarios(scenariosPath, { + transforms: [<%= identifier %>], + vitest: { describe, expect, test, onTestFinished }, + }); +}); diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/README.md b/packages/codemods-tasks/templates/plugin-jscodeshift/README.md new file mode 100644 index 00000000..840bfa78 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/README.md @@ -0,0 +1,3 @@ +# jscodeshift Plugin + +The `jscodeshift` plugin is a tool used for running codemods over JavaScript and TypeScript codebases. It leverages the `jscodeshift` library, which provides a simple API for transforming code using the power of abstract syntax trees (ASTs). diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/input.js b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/input.js new file mode 100644 index 00000000..ddf7f593 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/input.js @@ -0,0 +1,9 @@ +import { createGrid } from '@ag-grid-community/core'; + +const gridApi = createGrid(document.body, { + columnDefs: [], + rowData: [], +}); + +gridApi.helloWorld(); +gridApi?.goodbyeWorld(); diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.errors.cjs b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.errors.cjs new file mode 100644 index 00000000..b9595cdc --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.errors.cjs @@ -0,0 +1,6 @@ +module.exports = [ + new SyntaxError(`This method has been deprecated + +> | gridApi.goodbyeWorld(); + | ^^^^^^^^^^^^^^^^^^^^^^`), +]; diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.js b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.js new file mode 100644 index 00000000..fcc27e36 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.js @@ -0,0 +1,9 @@ +import { createGrid } from '@ag-grid-community/core'; + +const gridApi = createGrid(document.body, { + columnDefs: [], + rowData: [], +}); + +gridApi.sayHello("world"); +gridApi?.goodbyeWorld(); diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.warnings.cjs b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.warnings.cjs new file mode 100644 index 00000000..e0a30c5d --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/output.warnings.cjs @@ -0,0 +1 @@ +module.exports = []; diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/scenario.json b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/scenario.json new file mode 100644 index 00000000..346c1107 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/__fixtures__/scenarios/hello-world/scenario.json @@ -0,0 +1,8 @@ +{ + "scenario": { + "input": "input.js", + "output": "output.js", + "errors": "output.errors.cjs", + "warnings": "output.warnings.cjs" + } +} diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/index.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/index.ts new file mode 100644 index 00000000..24fa15d1 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/index.ts @@ -0,0 +1,2 @@ +export * from './jscodeshift.adapter'; +export * from './transforms'; diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts new file mode 100644 index 00000000..a7991bd0 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts @@ -0,0 +1,47 @@ +import j, { Collection } from 'jscodeshift'; +import { AstCliContext, AstTransform, NodePath } from '@ag-grid-devtools/ast'; + +export type JSCodeShiftTransformer = (root: Collection) => void | any; + +// Use https://astexplorer.net/ to iterate on your transformer +// Parser: Typescript +// Transform: jscodeshift +// +// NOTE: Less efficient than the raw visitor pattern, but: +// * + easier to write (the tree is already parsed) +// * + easier to reason about +// * + easier to iterate over +// * - multiple passes through parse/transform cycle +export const jsCodeShiftTransform = ( + ...transforms: JSCodeShiftTransformer[] +): AstTransform => { + return (_babel) => ({ + visitor: { + Program: { + exit(path: NodePath) { + const root: Collection = j((path.hub as any).file.ast); + const getFirstNode = () => root.find(j.Program).get('body', 0).node; + + // save initial comment if any + const firstNode = getFirstNode(); + const { comments } = firstNode; + + // transform + for (const transform of transforms) { + transform(root); + } + + // restore initial comment if any + const firstNode2 = getFirstNode(); + if (firstNode2 !== firstNode) { + firstNode2.comments = comments; + } + + // inject result back into babel AST + const program = root.getAST()[0].node.program; + path.replaceWith(program); + }, + }, + }, + }); +}; diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/plugin.json b/packages/codemods-tasks/templates/plugin-jscodeshift/plugin.json new file mode 100644 index 00000000..63a25fc3 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/plugin.json @@ -0,0 +1,4 @@ +{ + "name": "JSCodeshift", + "description": "Transform using JSCodeshift" +} diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts new file mode 100644 index 00000000..b2c039e3 --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts @@ -0,0 +1 @@ +// Transforms go here From a7d98f80d6ba5b5733356885fc4080126fc4f2fb Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Tue, 27 May 2025 22:08:06 +0100 Subject: [PATCH 2/8] add v34 --- .../src/codemods/versions/34.0.0/README.md | 35 +++++++++++++++++++ .../34.0.0/__fixtures__/scenarios/.gitignore | 0 .../codemods/versions/34.0.0/codemod.test.ts | 16 +++++++++ .../src/codemods/versions/34.0.0/codemod.ts | 24 +++++++++++++ .../src/codemods/versions/34.0.0/manifest.ts | 13 +++++++ .../codemods/versions/34.0.0/transforms.ts | 7 ++++ .../cli/src/codemods/versions/manifest.ts | 3 ++ 7 files changed, 98 insertions(+) create mode 100644 packages/cli/src/codemods/versions/34.0.0/README.md create mode 100644 packages/cli/src/codemods/versions/34.0.0/__fixtures__/scenarios/.gitignore create mode 100644 packages/cli/src/codemods/versions/34.0.0/codemod.test.ts create mode 100644 packages/cli/src/codemods/versions/34.0.0/codemod.ts create mode 100644 packages/cli/src/codemods/versions/34.0.0/manifest.ts create mode 100644 packages/cli/src/codemods/versions/34.0.0/transforms.ts diff --git a/packages/cli/src/codemods/versions/34.0.0/README.md b/packages/cli/src/codemods/versions/34.0.0/README.md new file mode 100644 index 00000000..4b1cd281 --- /dev/null +++ b/packages/cli/src/codemods/versions/34.0.0/README.md @@ -0,0 +1,35 @@ +# 34.0.0 + +Codemod for upgrading to [AG Grid v34.0.0](https://github.com/ag-grid/ag-grid/releases/tag/v34.0.0) + +## Usage + +``` +npx @ag-grid-devtools/cli migrate --to 34.0.0 +``` + +Source code transformations applied by this codemod are specified in [`transforms.ts`](./transforms.ts). + +## Common tasks + +### Add a transform + +Option 1: Create a new source code transformation to add to this codemod release version: + +``` +pnpm run task:create-transform --release 34.0.0 +``` + +Option 2: Add an existing source code transformation to this codemod release version: + +``` +pnpm run task:include-transform --version 34.0.0 +``` + +### Add a test case + +Create a new unit test scenario for this version: + +``` +pnpm run task:create-test --type version --target 34.0.0 +``` diff --git a/packages/cli/src/codemods/versions/34.0.0/__fixtures__/scenarios/.gitignore b/packages/cli/src/codemods/versions/34.0.0/__fixtures__/scenarios/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/packages/cli/src/codemods/versions/34.0.0/codemod.test.ts b/packages/cli/src/codemods/versions/34.0.0/codemod.test.ts new file mode 100644 index 00000000..35a622d1 --- /dev/null +++ b/packages/cli/src/codemods/versions/34.0.0/codemod.test.ts @@ -0,0 +1,16 @@ +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describe, expect, onTestFinished, test } from 'vitest'; +import { loadCodemodExampleScenarios } from '../../test/runners/codemod'; + +import codemod from './codemod'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +describe(codemod, () => { + const scenariosPath = join(__dirname, './__fixtures__/scenarios'); + loadCodemodExampleScenarios(scenariosPath, { + codemod, + vitest: { describe, expect, test, onTestFinished }, + }); +}); diff --git a/packages/cli/src/codemods/versions/34.0.0/codemod.ts b/packages/cli/src/codemods/versions/34.0.0/codemod.ts new file mode 100644 index 00000000..01835f7e --- /dev/null +++ b/packages/cli/src/codemods/versions/34.0.0/codemod.ts @@ -0,0 +1,24 @@ +import { transformFileAst } from '@ag-grid-devtools/codemod-utils'; +import { + type Codemod, + type CodemodInput, + type CodemodOptions, + type CodemodResult, +} from '@ag-grid-devtools/types'; + +import transforms from './transforms'; + +const codemod: Codemod = function codemodV34_0_0( + file: CodemodInput, + options: CodemodOptions, +): CodemodResult { + const { path, source } = file; + const { fs, userConfig } = options; + return transformFileAst(source, transforms, { + filename: path, + fs, + userConfig, + }); +}; + +export default codemod; diff --git a/packages/cli/src/codemods/versions/34.0.0/manifest.ts b/packages/cli/src/codemods/versions/34.0.0/manifest.ts new file mode 100644 index 00000000..884e96cc --- /dev/null +++ b/packages/cli/src/codemods/versions/34.0.0/manifest.ts @@ -0,0 +1,13 @@ +import { type TransformManifest, type VersionManifest } from '@ag-grid-devtools/types'; + +import transformGridApiMethodsV34_0 from '../../transforms/transform-grid-api-methods-v34-0/manifest.ts'; + +const transforms: Array = [transformGridApiMethodsV34_0]; + +const manifest: VersionManifest = { + version: '34.0.0', + codemodPath: 'versions/34.0.0', + transforms, +}; + +export default manifest; diff --git a/packages/cli/src/codemods/versions/34.0.0/transforms.ts b/packages/cli/src/codemods/versions/34.0.0/transforms.ts new file mode 100644 index 00000000..2c4a4569 --- /dev/null +++ b/packages/cli/src/codemods/versions/34.0.0/transforms.ts @@ -0,0 +1,7 @@ +import { type AstCliContext, type AstTransform } from '@ag-grid-devtools/ast'; + +import transformGridApiMethodsV34_0 from '../../transforms/transform-grid-api-methods-v34-0'; + +const transforms: Array> = [transformGridApiMethodsV34_0]; + +export default transforms; diff --git a/packages/cli/src/codemods/versions/manifest.ts b/packages/cli/src/codemods/versions/manifest.ts index 94aeb7cc..dfc38993 100644 --- a/packages/cli/src/codemods/versions/manifest.ts +++ b/packages/cli/src/codemods/versions/manifest.ts @@ -20,6 +20,8 @@ import v33_2_0 from './33.2.0/manifest'; import v33_3_0 from './33.3.0/manifest'; +import v34_0_0 from './34.0.0/manifest'; + const versions: Array = [ v31_0_0, v31_1_0, @@ -31,6 +33,7 @@ const versions: Array = [ v33_1_0, v33_2_0, v33_3_0, + v34_0_0, ]; export default versions; From ee98df85e70516bda25df5127e60d1c37bd41e7b Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Tue, 27 May 2025 22:08:17 +0100 Subject: [PATCH 3/8] add v34 transforms --- .../README.md | 3 + .../scenarios/autoSizeAllColumns/input.js | 13 ++++ .../autoSizeAllColumns/output.errors.cjs | 1 + .../scenarios/autoSizeAllColumns/output.js | 19 ++++++ .../autoSizeAllColumns/output.warnings.cjs | 1 + .../autoSizeAllColumns/scenario.json | 8 +++ .../scenarios/autoSizeColumns/input.js | 14 +++++ .../autoSizeColumns/output.errors.cjs | 1 + .../scenarios/autoSizeColumns/output.js | 25 ++++++++ .../autoSizeColumns/output.warnings.cjs | 1 + .../scenarios/autoSizeColumns/scenario.json | 8 +++ .../transform-grid-api-methods-v34-0/index.ts | 17 ++++++ .../jscodeshift.adapter.ts | 47 ++++++++++++++ .../plugin.json | 4 ++ .../transform-grid-api-methods-v34-0.test.ts | 16 +++++ .../transforms/index.ts | 61 +++++++++++++++++++ 16 files changed, 239 insertions(+) create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md new file mode 100644 index 00000000..840bfa78 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md @@ -0,0 +1,3 @@ +# jscodeshift Plugin + +The `jscodeshift` plugin is a tool used for running codemods over JavaScript and TypeScript codebases. It leverages the `jscodeshift` library, which provides a simple API for transforming code using the power of abstract syntax trees (ASTs). diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js new file mode 100644 index 00000000..ca3b4628 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js @@ -0,0 +1,13 @@ +import { createGrid } from '@ag-grid-community/core'; + +const gridApi = createGrid(document.body, { + columnDefs: [], + rowData: [], +}); + +const flag = true; + +gridApi.autoSizeAllColumns(); +gridApi?.autoSizeAllColumns(true); +gridApi?.autoSizeAllColumns(false); +gridApi.autoSizeAllColumns(flag); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs new file mode 100644 index 00000000..e0a30c5d --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs @@ -0,0 +1 @@ +module.exports = []; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js new file mode 100644 index 00000000..d3a451b9 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js @@ -0,0 +1,19 @@ +import { createGrid } from '@ag-grid-community/core'; + +const gridApi = createGrid(document.body, { + columnDefs: [], + rowData: [], +}); + +const flag = true; + +gridApi.autoSizeAllColumns(); +gridApi?.autoSizeAllColumns({ + skipHeaders: true +}); +gridApi?.autoSizeAllColumns({ + skipHeaders: false +}); +gridApi.autoSizeAllColumns({ + skipHeaders: flag +}); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs new file mode 100644 index 00000000..e0a30c5d --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs @@ -0,0 +1 @@ +module.exports = []; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json new file mode 100644 index 00000000..346c1107 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json @@ -0,0 +1,8 @@ +{ + "scenario": { + "input": "input.js", + "output": "output.js", + "errors": "output.errors.cjs", + "warnings": "output.warnings.cjs" + } +} diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js new file mode 100644 index 00000000..fd894b55 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js @@ -0,0 +1,14 @@ +import { createGrid } from '@ag-grid-community/core'; + +const gridApi = createGrid(document.body, { + columnDefs: [], + rowData: [], +}); + +const array = ['bar']; +const flag = true; + +gridApi.autoSizeColumns(['foo'], true); +gridApi?.autoSizeColumns(['foo'], false); +gridApi.autoSizeColumns(array, flag); +gridApi.autoSizeColumns(array); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs new file mode 100644 index 00000000..e0a30c5d --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs @@ -0,0 +1 @@ +module.exports = []; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js new file mode 100644 index 00000000..022c65d8 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js @@ -0,0 +1,25 @@ +import { createGrid } from '@ag-grid-community/core'; + +const gridApi = createGrid(document.body, { + columnDefs: [], + rowData: [], +}); + +const array = ['bar']; +const flag = true; + +gridApi.autoSizeColumns({ + colIds: ['foo'], + skipHeader: true +}); +gridApi?.autoSizeColumns({ + colIds: ['foo'], + skipHeader: false +}); +gridApi.autoSizeColumns({ + colIds: array, + skipHeader: flag +}); +gridApi.autoSizeColumns({ + colIds: array +}); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs new file mode 100644 index 00000000..e0a30c5d --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs @@ -0,0 +1 @@ +module.exports = []; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json new file mode 100644 index 00000000..346c1107 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json @@ -0,0 +1,8 @@ +{ + "scenario": { + "input": "input.js", + "output": "output.js", + "errors": "output.errors.cjs", + "warnings": "output.warnings.cjs" + } +} diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts new file mode 100644 index 00000000..e84a95d3 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts @@ -0,0 +1,17 @@ +export * from './jscodeshift.adapter'; + +import { type AstCliContext, type AstTransform } from '@ag-grid-devtools/ast'; +import { + transformAutoSizeColumnsArguments, + transformAutoSizeAllColumnsArguments, +} from './transforms'; +import { jsCodeShiftTransform } from '../../plugins/jscodeshift'; + +const transform: AstTransform = function (_babel) { + return jsCodeShiftTransform( + transformAutoSizeColumnsArguments, + transformAutoSizeAllColumnsArguments, + )(_babel); +}; + +export default transform; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts new file mode 100644 index 00000000..a7991bd0 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts @@ -0,0 +1,47 @@ +import j, { Collection } from 'jscodeshift'; +import { AstCliContext, AstTransform, NodePath } from '@ag-grid-devtools/ast'; + +export type JSCodeShiftTransformer = (root: Collection) => void | any; + +// Use https://astexplorer.net/ to iterate on your transformer +// Parser: Typescript +// Transform: jscodeshift +// +// NOTE: Less efficient than the raw visitor pattern, but: +// * + easier to write (the tree is already parsed) +// * + easier to reason about +// * + easier to iterate over +// * - multiple passes through parse/transform cycle +export const jsCodeShiftTransform = ( + ...transforms: JSCodeShiftTransformer[] +): AstTransform => { + return (_babel) => ({ + visitor: { + Program: { + exit(path: NodePath) { + const root: Collection = j((path.hub as any).file.ast); + const getFirstNode = () => root.find(j.Program).get('body', 0).node; + + // save initial comment if any + const firstNode = getFirstNode(); + const { comments } = firstNode; + + // transform + for (const transform of transforms) { + transform(root); + } + + // restore initial comment if any + const firstNode2 = getFirstNode(); + if (firstNode2 !== firstNode) { + firstNode2.comments = comments; + } + + // inject result back into babel AST + const program = root.getAST()[0].node.program; + path.replaceWith(program); + }, + }, + }, + }); +}; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json new file mode 100644 index 00000000..63a25fc3 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json @@ -0,0 +1,4 @@ +{ + "name": "JSCodeshift", + "description": "Transform using JSCodeshift" +} diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts new file mode 100644 index 00000000..66325fe5 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts @@ -0,0 +1,16 @@ +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describe, expect, onTestFinished, test } from 'vitest'; +import { loadTransformScenarios } from '../../test/runners/transform'; + +import transformGridApiMethodsV34_0 from '.'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +describe(transformGridApiMethodsV34_0, () => { + const scenariosPath = join(__dirname, './__fixtures__/scenarios'); + loadTransformScenarios(scenariosPath, { + transforms: [transformGridApiMethodsV34_0], + vitest: { describe, expect, test, onTestFinished }, + }); +}); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts new file mode 100644 index 00000000..8b4d6acc --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts @@ -0,0 +1,61 @@ +import j from 'jscodeshift'; +import { JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; + +export const transformAutoSizeColumnsArguments: JSCodeShiftTransformer = (root) => + root + .find(j.CallExpression, { + callee: { + property: { + name: 'autoSizeColumns', + }, + }, + }) + .forEach((path) => { + const args = path.node.arguments; + + if (args.some((a) => j.SpreadElement.check(a))) { + // can't support spread arguments + return; + } + + const [colKeys, skipHeader] = args; + + const properties = []; + if (!j.SpreadElement.check(colKeys)) { + properties.push(j.objectProperty(j.identifier('colIds'), colKeys)); + } + if (skipHeader && !j.SpreadElement.check(skipHeader)) { + properties.push(j.objectProperty(j.identifier('skipHeader'), skipHeader)); + } + + path.node.arguments = [j.objectExpression(properties)]; + }); + +export const transformAutoSizeAllColumnsArguments: JSCodeShiftTransformer = (root) => + root + .find(j.CallExpression, { + callee: { + property: { + name: 'autoSizeAllColumns', + }, + }, + }) + .forEach((path) => { + const args = path.node.arguments; + + if (args.length === 0) { + return; + } + + if (args.some((a) => j.SpreadElement.check(a))) { + // can't support spread arguments + return; + } + + const properties = []; + if (!j.SpreadElement.check(args[0])) { + properties.push(j.objectProperty(j.identifier('skipHeaders'), args[0])); + } + + path.node.arguments = [j.objectExpression(properties)]; + }); From 9d393119997e84051549098aad2dcccd69dc60d0 Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Tue, 27 May 2025 22:11:56 +0100 Subject: [PATCH 4/8] fix import --- .../transform-grid-api-methods-v34-0/transforms/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts index 8b4d6acc..423ea52b 100644 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts @@ -1,5 +1,5 @@ import j from 'jscodeshift'; -import { JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; +import { JSCodeShiftTransformer } from '../jscodeshift.adapter'; export const transformAutoSizeColumnsArguments: JSCodeShiftTransformer = (root) => root From 2c4af87aed7a436b0c0e6303237ad7ef396cb6ad Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Tue, 27 May 2025 22:17:30 +0100 Subject: [PATCH 5/8] fix manifests --- .../transform-grid-api-methods-v34-0/manifest.ts | 8 ++++++++ .../templates/plugin-jscodeshift/manifest.ts | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts create mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/manifest.ts diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts new file mode 100644 index 00000000..bd8dfbf7 --- /dev/null +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts @@ -0,0 +1,8 @@ +import { type TransformManifest } from '@ag-grid-devtools/types'; + +const manifest: TransformManifest = { + name: 'Transform Grid API Methods v34.0', + description: 'Transform deprecated Grid API methods', +}; + +export default manifest; diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/manifest.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/manifest.ts new file mode 100644 index 00000000..24b766eb --- /dev/null +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/manifest.ts @@ -0,0 +1,8 @@ +import { type TransformManifest } from '@ag-grid-devtools/types'; + +const manifest: TransformManifest = { + name: '<%= name %>', + description: '<%= description %>', +}; + +export default manifest; From 21335ec7f9613b21a839a3c63247f701eae61848 Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Wed, 28 May 2025 19:45:34 +0100 Subject: [PATCH 6/8] support error and warning messages in jscodeshift-based transforms --- packages/ast/src/types/transform.ts | 4 +- .../jscodeshift/jscodeshift.adapter.ts | 41 ++++++++++++++-- .../scenarios/autoSizeColumns/input.js | 2 + .../autoSizeColumns/output.errors.cjs | 7 ++- .../scenarios/autoSizeColumns/output.js | 2 + .../jscodeshift.adapter.ts | 47 ------------------- .../transforms/index.ts | 22 +++++++-- packages/codemod-utils/src/transform/js.ts | 16 +++++-- .../templates/plugin-jscodeshift/index.ts | 1 - .../plugin-jscodeshift/jscodeshift.adapter.ts | 47 ------------------- .../plugin-jscodeshift/transforms/index.ts | 5 ++ 11 files changed, 83 insertions(+), 111 deletions(-) delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts delete mode 100644 packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts diff --git a/packages/ast/src/types/transform.ts b/packages/ast/src/types/transform.ts index f4c30171..bec98321 100644 --- a/packages/ast/src/types/transform.ts +++ b/packages/ast/src/types/transform.ts @@ -47,8 +47,8 @@ export interface FsContext extends TransformContext { } export interface AstCliContext extends FsContext { - warn(node: NodePath | null, message: string): void; - fail(node: NodePath | null, message: string): void; + warn(node: NodePath | Error | null, message: string): void; + fail(node: NodePath | Error | null, message: string): void; } export type AstTransformResult = { diff --git a/packages/cli/src/codemods/plugins/jscodeshift/jscodeshift.adapter.ts b/packages/cli/src/codemods/plugins/jscodeshift/jscodeshift.adapter.ts index a7991bd0..9230fb74 100644 --- a/packages/cli/src/codemods/plugins/jscodeshift/jscodeshift.adapter.ts +++ b/packages/cli/src/codemods/plugins/jscodeshift/jscodeshift.adapter.ts @@ -1,7 +1,12 @@ import j, { Collection } from 'jscodeshift'; -import { AstCliContext, AstTransform, NodePath } from '@ag-grid-devtools/ast'; +import { AstCliContext, AstTransform, NodePath, Node } from '@ag-grid-devtools/ast'; -export type JSCodeShiftTransformer = (root: Collection) => void | any; +export type ErrorSpec = { path: j.ASTPath; message: string }; + +export type JSCodeShiftTransformer = (root: Collection) => void | { + errors: ErrorSpec[]; + warnings: ErrorSpec[]; +}; // Use https://astexplorer.net/ to iterate on your transformer // Parser: Typescript @@ -15,11 +20,16 @@ export type JSCodeShiftTransformer = (root: Collection) => void | any; export const jsCodeShiftTransform = ( ...transforms: JSCodeShiftTransformer[] ): AstTransform => { + const errors: Error[] = []; + const warnings: Error[] = []; + let source: any; + return (_babel) => ({ visitor: { Program: { exit(path: NodePath) { - const root: Collection = j((path.hub as any).file.ast); + source = (path.hub as any).file.ast; + const root: Collection = j(source); const getFirstNode = () => root.find(j.Program).get('body', 0).node; // save initial comment if any @@ -28,7 +38,21 @@ export const jsCodeShiftTransform = ( // transform for (const transform of transforms) { - transform(root); + const result = transform(root); + if (result?.errors) { + errors.push( + ...result.errors.map((error) => + path.hub.buildError(error.path.node as Node, error.message), + ), + ); + } + if (result?.warnings) { + warnings.push( + ...result.warnings.map((warning) => + path.hub.buildError(warning.path.node as Node, warning.message), + ), + ); + } } // restore initial comment if any @@ -43,5 +67,14 @@ export const jsCodeShiftTransform = ( }, }, }, + post(_file) { + for (const warning of warnings) { + this.opts.warn(warning, warning.message); + } + + for (const error of errors) { + this.opts.fail(error, error.message); + } + }, }); }; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js index fd894b55..77822977 100644 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js @@ -7,8 +7,10 @@ const gridApi = createGrid(document.body, { const array = ['bar']; const flag = true; +const allArgs = [['baz'], false]; gridApi.autoSizeColumns(['foo'], true); gridApi?.autoSizeColumns(['foo'], false); gridApi.autoSizeColumns(array, flag); gridApi.autoSizeColumns(array); +gridApi.autoSizeColumns(...allArgs); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs index e0a30c5d..98d6310c 100644 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs @@ -1 +1,6 @@ -module.exports = []; +module.exports = [ + new SyntaxError(`Cannot support spread arguments + +> | gridApi.autoSizeColumns(...allArgs); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`) +]; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js index 022c65d8..68199c76 100644 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js @@ -7,6 +7,7 @@ const gridApi = createGrid(document.body, { const array = ['bar']; const flag = true; +const allArgs = [['baz'], false]; gridApi.autoSizeColumns({ colIds: ['foo'], @@ -23,3 +24,4 @@ gridApi.autoSizeColumns({ gridApi.autoSizeColumns({ colIds: array }); +gridApi.autoSizeColumns(...allArgs); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts deleted file mode 100644 index a7991bd0..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/jscodeshift.adapter.ts +++ /dev/null @@ -1,47 +0,0 @@ -import j, { Collection } from 'jscodeshift'; -import { AstCliContext, AstTransform, NodePath } from '@ag-grid-devtools/ast'; - -export type JSCodeShiftTransformer = (root: Collection) => void | any; - -// Use https://astexplorer.net/ to iterate on your transformer -// Parser: Typescript -// Transform: jscodeshift -// -// NOTE: Less efficient than the raw visitor pattern, but: -// * + easier to write (the tree is already parsed) -// * + easier to reason about -// * + easier to iterate over -// * - multiple passes through parse/transform cycle -export const jsCodeShiftTransform = ( - ...transforms: JSCodeShiftTransformer[] -): AstTransform => { - return (_babel) => ({ - visitor: { - Program: { - exit(path: NodePath) { - const root: Collection = j((path.hub as any).file.ast); - const getFirstNode = () => root.find(j.Program).get('body', 0).node; - - // save initial comment if any - const firstNode = getFirstNode(); - const { comments } = firstNode; - - // transform - for (const transform of transforms) { - transform(root); - } - - // restore initial comment if any - const firstNode2 = getFirstNode(); - if (firstNode2 !== firstNode) { - firstNode2.comments = comments; - } - - // inject result back into babel AST - const program = root.getAST()[0].node.program; - path.replaceWith(program); - }, - }, - }, - }); -}; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts index 423ea52b..78853a62 100644 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts @@ -1,7 +1,10 @@ import j from 'jscodeshift'; -import { JSCodeShiftTransformer } from '../jscodeshift.adapter'; +import { ErrorSpec, JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; + +export const transformAutoSizeColumnsArguments: JSCodeShiftTransformer = (root) => { + const errors: ErrorSpec[] = []; + const warnings: ErrorSpec[] = []; -export const transformAutoSizeColumnsArguments: JSCodeShiftTransformer = (root) => root .find(j.CallExpression, { callee: { @@ -14,7 +17,7 @@ export const transformAutoSizeColumnsArguments: JSCodeShiftTransformer = (root) const args = path.node.arguments; if (args.some((a) => j.SpreadElement.check(a))) { - // can't support spread arguments + errors.push({ path, message: 'Cannot support spread arguments' }); return; } @@ -31,7 +34,13 @@ export const transformAutoSizeColumnsArguments: JSCodeShiftTransformer = (root) path.node.arguments = [j.objectExpression(properties)]; }); -export const transformAutoSizeAllColumnsArguments: JSCodeShiftTransformer = (root) => + return { errors, warnings }; +}; + +export const transformAutoSizeAllColumnsArguments: JSCodeShiftTransformer = (root) => { + const errors: ErrorSpec[] = []; + const warnings: ErrorSpec[] = []; + root .find(j.CallExpression, { callee: { @@ -48,7 +57,7 @@ export const transformAutoSizeAllColumnsArguments: JSCodeShiftTransformer = (roo } if (args.some((a) => j.SpreadElement.check(a))) { - // can't support spread arguments + errors.push({ path, message: 'Cannot support spread arguments' }); return; } @@ -59,3 +68,6 @@ export const transformAutoSizeAllColumnsArguments: JSCodeShiftTransformer = (roo path.node.arguments = [j.objectExpression(properties)]; }); + + return { errors, warnings }; +}; diff --git a/packages/codemod-utils/src/transform/js.ts b/packages/codemod-utils/src/transform/js.ts index 9eb33e63..1459868c 100644 --- a/packages/codemod-utils/src/transform/js.ts +++ b/packages/codemod-utils/src/transform/js.ts @@ -65,11 +65,11 @@ function transformJsFile( const transformContext: AstTransformContext = { filename, opts: { - warn(node: NodePath | null, message: string) { + warn(node, message) { const error = createSourceCodeError(node, message); uniqueErrors.set(error.message, { error, fatal: false }); }, - fail(node: NodePath | null, message: string) { + fail(node, message) { const error = createSourceCodeError(node, message); uniqueErrors.set(error.message, { error, fatal: true }); }, @@ -99,6 +99,14 @@ function transformJsFile( }; } -function createSourceCodeError(node: NodePath | null, message: string): Error { - return node ? node.buildCodeFrameError(message) : new SyntaxError(message); +function createSourceCodeError(node: NodePath | Error | null, message: string): Error { + if (!node) { + return new SyntaxError(message); + } + + if ('hub' in node) { + return node.buildCodeFrameError(message); + } + + return node; } diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/index.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/index.ts index 24fa15d1..f596ad1e 100644 --- a/packages/codemods-tasks/templates/plugin-jscodeshift/index.ts +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/index.ts @@ -1,2 +1 @@ -export * from './jscodeshift.adapter'; export * from './transforms'; diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts deleted file mode 100644 index a7991bd0..00000000 --- a/packages/codemods-tasks/templates/plugin-jscodeshift/jscodeshift.adapter.ts +++ /dev/null @@ -1,47 +0,0 @@ -import j, { Collection } from 'jscodeshift'; -import { AstCliContext, AstTransform, NodePath } from '@ag-grid-devtools/ast'; - -export type JSCodeShiftTransformer = (root: Collection) => void | any; - -// Use https://astexplorer.net/ to iterate on your transformer -// Parser: Typescript -// Transform: jscodeshift -// -// NOTE: Less efficient than the raw visitor pattern, but: -// * + easier to write (the tree is already parsed) -// * + easier to reason about -// * + easier to iterate over -// * - multiple passes through parse/transform cycle -export const jsCodeShiftTransform = ( - ...transforms: JSCodeShiftTransformer[] -): AstTransform => { - return (_babel) => ({ - visitor: { - Program: { - exit(path: NodePath) { - const root: Collection = j((path.hub as any).file.ast); - const getFirstNode = () => root.find(j.Program).get('body', 0).node; - - // save initial comment if any - const firstNode = getFirstNode(); - const { comments } = firstNode; - - // transform - for (const transform of transforms) { - transform(root); - } - - // restore initial comment if any - const firstNode2 = getFirstNode(); - if (firstNode2 !== firstNode) { - firstNode2.comments = comments; - } - - // inject result back into babel AST - const program = root.getAST()[0].node.program; - path.replaceWith(program); - }, - }, - }, - }); -}; diff --git a/packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts b/packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts index b2c039e3..944724f7 100644 --- a/packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts +++ b/packages/codemods-tasks/templates/plugin-jscodeshift/transforms/index.ts @@ -1 +1,6 @@ +import { JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; + // Transforms go here +export const myTransform: JSCodeShiftTransformer = (root) => { + // ... +}; From 3e6d6628813b0b5425a8a38181915f0c41d6ff52 Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Wed, 28 May 2025 19:50:15 +0100 Subject: [PATCH 7/8] fix build --- .../transforms/transform-grid-api-methods-v34-0/index.ts | 2 -- .../transformers/package-transforms.ts | 2 +- .../transformers/sparkline-chart-type-subobject.ts | 3 ++- .../transformers/sparkline-column.ts | 3 ++- .../transformers/sparkline-crosshairs.ts | 3 ++- .../transformers/sparkline-types.ts | 3 ++- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts index e84a95d3..e0d991b6 100644 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts +++ b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts @@ -1,5 +1,3 @@ -export * from './jscodeshift.adapter'; - import { type AstCliContext, type AstTransform } from '@ag-grid-devtools/ast'; import { transformAutoSizeColumnsArguments, diff --git a/packages/cli/src/codemods/transforms/transform-modules-to-packages-v33/transformers/package-transforms.ts b/packages/cli/src/codemods/transforms/transform-modules-to-packages-v33/transformers/package-transforms.ts index 76351e5e..caf0c1d9 100644 --- a/packages/cli/src/codemods/transforms/transform-modules-to-packages-v33/transformers/package-transforms.ts +++ b/packages/cli/src/codemods/transforms/transform-modules-to-packages-v33/transformers/package-transforms.ts @@ -47,7 +47,7 @@ export const packageLicenseManager: JSCodeShiftTransformer = (root) => { if (alreadyExists) { // This package file already has a ModuleRegistry import so looks like it has already been transformed - return root.toSource(); + return; } const usingCharts: UsingCharts = process.env.AG_USING_CHARTS as any; diff --git a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-chart-type-subobject.ts b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-chart-type-subobject.ts index 7e620383..f37e52e4 100644 --- a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-chart-type-subobject.ts +++ b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-chart-type-subobject.ts @@ -4,7 +4,7 @@ import { JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; const chartTypeKeys = ['area', 'bar', 'column', 'line']; // find [chart-type] keys, and merge their contents into the parent object -export const chartTypeSubobject: JSCodeShiftTransformer = (root) => +export const chartTypeSubobject: JSCodeShiftTransformer = (root) => { root .find(j.ObjectProperty, { key: { name: 'cellRendererParams' } }) .find(j.ObjectProperty, { key: { name: 'sparklineOptions' } }) @@ -17,3 +17,4 @@ export const chartTypeSubobject: JSCodeShiftTransformer = (root) => }); path.replace(); }); +}; diff --git a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-column.ts b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-column.ts index b2caa43c..3eeae66b 100644 --- a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-column.ts +++ b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-column.ts @@ -2,7 +2,7 @@ import j from 'jscodeshift'; import { JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; // update bar/column types to bar with matching direction -export const columnToVerticalBarTransform: JSCodeShiftTransformer = (root) => +export const columnToVerticalBarTransform: JSCodeShiftTransformer = (root) => { root .find(j.ObjectProperty, { key: { name: 'cellRendererParams' } }) .find(j.ObjectProperty, { key: { name: 'sparklineOptions' } }) @@ -14,3 +14,4 @@ export const columnToVerticalBarTransform: JSCodeShiftTransformer = (root) => path.replace(j.objectProperty(j.identifier('type'), j.stringLiteral('bar'))); path.insertAfter(j.objectProperty(j.identifier('direction'), j.stringLiteral(direction))); }); +}; diff --git a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-crosshairs.ts b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-crosshairs.ts index 2fb96b54..7f6f0fc6 100644 --- a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-crosshairs.ts +++ b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-crosshairs.ts @@ -1,9 +1,10 @@ import j from 'jscodeshift'; import { JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; -export const removeCrosshairs: JSCodeShiftTransformer = (root) => +export const removeCrosshairs: JSCodeShiftTransformer = (root) => { root .find(j.ObjectProperty, { key: { name: 'cellRendererParams' } }) .find(j.ObjectProperty, { key: { name: 'sparklineOptions' } }) .find(j.ObjectProperty, { key: { name: 'crosshairs' } }) .forEach((path) => path.replace()); +}; diff --git a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-types.ts b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-types.ts index 72a0642e..4e9fc27f 100644 --- a/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-types.ts +++ b/packages/cli/src/codemods/transforms/transform-sparklines-options-v33-0/transformers/sparkline-types.ts @@ -2,8 +2,9 @@ import j from 'jscodeshift'; import { JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; import { newType, oldTypes } from './constants'; -export const replaceTypes: JSCodeShiftTransformer = (root) => +export const replaceTypes: JSCodeShiftTransformer = (root) => { root .find(j.TSTypeReference) .filter((path) => oldTypes.includes((path.value.typeName as any).name)) .forEach((path) => path.replace(j.tsTypeReference(j.identifier(newType)))); +}; From 8ebda8cf51d4bc0f2df09965f9ddc042a4e2e7d0 Mon Sep 17 00:00:00 2001 From: Elias Malik Date: Thu, 29 May 2025 14:45:09 +0100 Subject: [PATCH 8/8] remove autosize codemod --- .../README.md | 3 - .../scenarios/autoSizeAllColumns/input.js | 13 ---- .../autoSizeAllColumns/output.errors.cjs | 1 - .../scenarios/autoSizeAllColumns/output.js | 19 ----- .../autoSizeAllColumns/output.warnings.cjs | 1 - .../autoSizeAllColumns/scenario.json | 8 -- .../scenarios/autoSizeColumns/input.js | 16 ---- .../autoSizeColumns/output.errors.cjs | 6 -- .../scenarios/autoSizeColumns/output.js | 27 ------- .../autoSizeColumns/output.warnings.cjs | 1 - .../scenarios/autoSizeColumns/scenario.json | 8 -- .../transform-grid-api-methods-v34-0/index.ts | 15 ---- .../manifest.ts | 8 -- .../plugin.json | 4 - .../transform-grid-api-methods-v34-0.test.ts | 16 ---- .../transforms/index.ts | 73 ------------------- .../src/codemods/versions/34.0.0/README.md | 35 --------- .../34.0.0/__fixtures__/scenarios/.gitignore | 0 .../codemods/versions/34.0.0/codemod.test.ts | 16 ---- .../src/codemods/versions/34.0.0/codemod.ts | 24 ------ .../src/codemods/versions/34.0.0/manifest.ts | 13 ---- .../codemods/versions/34.0.0/transforms.ts | 7 -- .../cli/src/codemods/versions/manifest.ts | 3 - 23 files changed, 317 deletions(-) delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts delete mode 100644 packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts delete mode 100644 packages/cli/src/codemods/versions/34.0.0/README.md delete mode 100644 packages/cli/src/codemods/versions/34.0.0/__fixtures__/scenarios/.gitignore delete mode 100644 packages/cli/src/codemods/versions/34.0.0/codemod.test.ts delete mode 100644 packages/cli/src/codemods/versions/34.0.0/codemod.ts delete mode 100644 packages/cli/src/codemods/versions/34.0.0/manifest.ts delete mode 100644 packages/cli/src/codemods/versions/34.0.0/transforms.ts diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md deleted file mode 100644 index 840bfa78..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# jscodeshift Plugin - -The `jscodeshift` plugin is a tool used for running codemods over JavaScript and TypeScript codebases. It leverages the `jscodeshift` library, which provides a simple API for transforming code using the power of abstract syntax trees (ASTs). diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js deleted file mode 100644 index ca3b4628..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/input.js +++ /dev/null @@ -1,13 +0,0 @@ -import { createGrid } from '@ag-grid-community/core'; - -const gridApi = createGrid(document.body, { - columnDefs: [], - rowData: [], -}); - -const flag = true; - -gridApi.autoSizeAllColumns(); -gridApi?.autoSizeAllColumns(true); -gridApi?.autoSizeAllColumns(false); -gridApi.autoSizeAllColumns(flag); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs deleted file mode 100644 index e0a30c5d..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.errors.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = []; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js deleted file mode 100644 index d3a451b9..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.js +++ /dev/null @@ -1,19 +0,0 @@ -import { createGrid } from '@ag-grid-community/core'; - -const gridApi = createGrid(document.body, { - columnDefs: [], - rowData: [], -}); - -const flag = true; - -gridApi.autoSizeAllColumns(); -gridApi?.autoSizeAllColumns({ - skipHeaders: true -}); -gridApi?.autoSizeAllColumns({ - skipHeaders: false -}); -gridApi.autoSizeAllColumns({ - skipHeaders: flag -}); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs deleted file mode 100644 index e0a30c5d..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/output.warnings.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = []; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json deleted file mode 100644 index 346c1107..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeAllColumns/scenario.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "scenario": { - "input": "input.js", - "output": "output.js", - "errors": "output.errors.cjs", - "warnings": "output.warnings.cjs" - } -} diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js deleted file mode 100644 index 77822977..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/input.js +++ /dev/null @@ -1,16 +0,0 @@ -import { createGrid } from '@ag-grid-community/core'; - -const gridApi = createGrid(document.body, { - columnDefs: [], - rowData: [], -}); - -const array = ['bar']; -const flag = true; -const allArgs = [['baz'], false]; - -gridApi.autoSizeColumns(['foo'], true); -gridApi?.autoSizeColumns(['foo'], false); -gridApi.autoSizeColumns(array, flag); -gridApi.autoSizeColumns(array); -gridApi.autoSizeColumns(...allArgs); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs deleted file mode 100644 index 98d6310c..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.errors.cjs +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = [ - new SyntaxError(`Cannot support spread arguments - -> | gridApi.autoSizeColumns(...allArgs); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`) -]; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js deleted file mode 100644 index 68199c76..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.js +++ /dev/null @@ -1,27 +0,0 @@ -import { createGrid } from '@ag-grid-community/core'; - -const gridApi = createGrid(document.body, { - columnDefs: [], - rowData: [], -}); - -const array = ['bar']; -const flag = true; -const allArgs = [['baz'], false]; - -gridApi.autoSizeColumns({ - colIds: ['foo'], - skipHeader: true -}); -gridApi?.autoSizeColumns({ - colIds: ['foo'], - skipHeader: false -}); -gridApi.autoSizeColumns({ - colIds: array, - skipHeader: flag -}); -gridApi.autoSizeColumns({ - colIds: array -}); -gridApi.autoSizeColumns(...allArgs); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs deleted file mode 100644 index e0a30c5d..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/output.warnings.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = []; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json deleted file mode 100644 index 346c1107..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/__fixtures__/scenarios/autoSizeColumns/scenario.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "scenario": { - "input": "input.js", - "output": "output.js", - "errors": "output.errors.cjs", - "warnings": "output.warnings.cjs" - } -} diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts deleted file mode 100644 index e0d991b6..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { type AstCliContext, type AstTransform } from '@ag-grid-devtools/ast'; -import { - transformAutoSizeColumnsArguments, - transformAutoSizeAllColumnsArguments, -} from './transforms'; -import { jsCodeShiftTransform } from '../../plugins/jscodeshift'; - -const transform: AstTransform = function (_babel) { - return jsCodeShiftTransform( - transformAutoSizeColumnsArguments, - transformAutoSizeAllColumnsArguments, - )(_babel); -}; - -export default transform; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts deleted file mode 100644 index bd8dfbf7..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/manifest.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { type TransformManifest } from '@ag-grid-devtools/types'; - -const manifest: TransformManifest = { - name: 'Transform Grid API Methods v34.0', - description: 'Transform deprecated Grid API methods', -}; - -export default manifest; diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json deleted file mode 100644 index 63a25fc3..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "JSCodeshift", - "description": "Transform using JSCodeshift" -} diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts deleted file mode 100644 index 66325fe5..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transform-grid-api-methods-v34-0.test.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { dirname, join } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { describe, expect, onTestFinished, test } from 'vitest'; -import { loadTransformScenarios } from '../../test/runners/transform'; - -import transformGridApiMethodsV34_0 from '.'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -describe(transformGridApiMethodsV34_0, () => { - const scenariosPath = join(__dirname, './__fixtures__/scenarios'); - loadTransformScenarios(scenariosPath, { - transforms: [transformGridApiMethodsV34_0], - vitest: { describe, expect, test, onTestFinished }, - }); -}); diff --git a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts b/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts deleted file mode 100644 index 78853a62..00000000 --- a/packages/cli/src/codemods/transforms/transform-grid-api-methods-v34-0/transforms/index.ts +++ /dev/null @@ -1,73 +0,0 @@ -import j from 'jscodeshift'; -import { ErrorSpec, JSCodeShiftTransformer } from '../../../plugins/jscodeshift'; - -export const transformAutoSizeColumnsArguments: JSCodeShiftTransformer = (root) => { - const errors: ErrorSpec[] = []; - const warnings: ErrorSpec[] = []; - - root - .find(j.CallExpression, { - callee: { - property: { - name: 'autoSizeColumns', - }, - }, - }) - .forEach((path) => { - const args = path.node.arguments; - - if (args.some((a) => j.SpreadElement.check(a))) { - errors.push({ path, message: 'Cannot support spread arguments' }); - return; - } - - const [colKeys, skipHeader] = args; - - const properties = []; - if (!j.SpreadElement.check(colKeys)) { - properties.push(j.objectProperty(j.identifier('colIds'), colKeys)); - } - if (skipHeader && !j.SpreadElement.check(skipHeader)) { - properties.push(j.objectProperty(j.identifier('skipHeader'), skipHeader)); - } - - path.node.arguments = [j.objectExpression(properties)]; - }); - - return { errors, warnings }; -}; - -export const transformAutoSizeAllColumnsArguments: JSCodeShiftTransformer = (root) => { - const errors: ErrorSpec[] = []; - const warnings: ErrorSpec[] = []; - - root - .find(j.CallExpression, { - callee: { - property: { - name: 'autoSizeAllColumns', - }, - }, - }) - .forEach((path) => { - const args = path.node.arguments; - - if (args.length === 0) { - return; - } - - if (args.some((a) => j.SpreadElement.check(a))) { - errors.push({ path, message: 'Cannot support spread arguments' }); - return; - } - - const properties = []; - if (!j.SpreadElement.check(args[0])) { - properties.push(j.objectProperty(j.identifier('skipHeaders'), args[0])); - } - - path.node.arguments = [j.objectExpression(properties)]; - }); - - return { errors, warnings }; -}; diff --git a/packages/cli/src/codemods/versions/34.0.0/README.md b/packages/cli/src/codemods/versions/34.0.0/README.md deleted file mode 100644 index 4b1cd281..00000000 --- a/packages/cli/src/codemods/versions/34.0.0/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# 34.0.0 - -Codemod for upgrading to [AG Grid v34.0.0](https://github.com/ag-grid/ag-grid/releases/tag/v34.0.0) - -## Usage - -``` -npx @ag-grid-devtools/cli migrate --to 34.0.0 -``` - -Source code transformations applied by this codemod are specified in [`transforms.ts`](./transforms.ts). - -## Common tasks - -### Add a transform - -Option 1: Create a new source code transformation to add to this codemod release version: - -``` -pnpm run task:create-transform --release 34.0.0 -``` - -Option 2: Add an existing source code transformation to this codemod release version: - -``` -pnpm run task:include-transform --version 34.0.0 -``` - -### Add a test case - -Create a new unit test scenario for this version: - -``` -pnpm run task:create-test --type version --target 34.0.0 -``` diff --git a/packages/cli/src/codemods/versions/34.0.0/__fixtures__/scenarios/.gitignore b/packages/cli/src/codemods/versions/34.0.0/__fixtures__/scenarios/.gitignore deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/cli/src/codemods/versions/34.0.0/codemod.test.ts b/packages/cli/src/codemods/versions/34.0.0/codemod.test.ts deleted file mode 100644 index 35a622d1..00000000 --- a/packages/cli/src/codemods/versions/34.0.0/codemod.test.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { dirname, join } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { describe, expect, onTestFinished, test } from 'vitest'; -import { loadCodemodExampleScenarios } from '../../test/runners/codemod'; - -import codemod from './codemod'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -describe(codemod, () => { - const scenariosPath = join(__dirname, './__fixtures__/scenarios'); - loadCodemodExampleScenarios(scenariosPath, { - codemod, - vitest: { describe, expect, test, onTestFinished }, - }); -}); diff --git a/packages/cli/src/codemods/versions/34.0.0/codemod.ts b/packages/cli/src/codemods/versions/34.0.0/codemod.ts deleted file mode 100644 index 01835f7e..00000000 --- a/packages/cli/src/codemods/versions/34.0.0/codemod.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { transformFileAst } from '@ag-grid-devtools/codemod-utils'; -import { - type Codemod, - type CodemodInput, - type CodemodOptions, - type CodemodResult, -} from '@ag-grid-devtools/types'; - -import transforms from './transforms'; - -const codemod: Codemod = function codemodV34_0_0( - file: CodemodInput, - options: CodemodOptions, -): CodemodResult { - const { path, source } = file; - const { fs, userConfig } = options; - return transformFileAst(source, transforms, { - filename: path, - fs, - userConfig, - }); -}; - -export default codemod; diff --git a/packages/cli/src/codemods/versions/34.0.0/manifest.ts b/packages/cli/src/codemods/versions/34.0.0/manifest.ts deleted file mode 100644 index 884e96cc..00000000 --- a/packages/cli/src/codemods/versions/34.0.0/manifest.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { type TransformManifest, type VersionManifest } from '@ag-grid-devtools/types'; - -import transformGridApiMethodsV34_0 from '../../transforms/transform-grid-api-methods-v34-0/manifest.ts'; - -const transforms: Array = [transformGridApiMethodsV34_0]; - -const manifest: VersionManifest = { - version: '34.0.0', - codemodPath: 'versions/34.0.0', - transforms, -}; - -export default manifest; diff --git a/packages/cli/src/codemods/versions/34.0.0/transforms.ts b/packages/cli/src/codemods/versions/34.0.0/transforms.ts deleted file mode 100644 index 2c4a4569..00000000 --- a/packages/cli/src/codemods/versions/34.0.0/transforms.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { type AstCliContext, type AstTransform } from '@ag-grid-devtools/ast'; - -import transformGridApiMethodsV34_0 from '../../transforms/transform-grid-api-methods-v34-0'; - -const transforms: Array> = [transformGridApiMethodsV34_0]; - -export default transforms; diff --git a/packages/cli/src/codemods/versions/manifest.ts b/packages/cli/src/codemods/versions/manifest.ts index dfc38993..94aeb7cc 100644 --- a/packages/cli/src/codemods/versions/manifest.ts +++ b/packages/cli/src/codemods/versions/manifest.ts @@ -20,8 +20,6 @@ import v33_2_0 from './33.2.0/manifest'; import v33_3_0 from './33.3.0/manifest'; -import v34_0_0 from './34.0.0/manifest'; - const versions: Array = [ v31_0_0, v31_1_0, @@ -33,7 +31,6 @@ const versions: Array = [ v33_1_0, v33_2_0, v33_3_0, - v34_0_0, ]; export default versions;