@mui/x-codemod 7.0.0-alpha.5 → 7.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -4
- package/package.json +4 -4
- package/v7.0.0/preset-safe/index.js +2 -0
- package/v7.0.0/tree-view/preset-safe/index.js +16 -0
- package/v7.0.0/tree-view/rename-expansion-props/index.js +23 -0
- package/v7.0.0/tree-view/rename-selection-props/index.js +23 -0
- package/v7.0.0/tree-view/rename-tree-view-simple-tree-view/index.js +47 -0
- package/v7.0.0/tree-view/rename-tree-view-simple-tree-view/rename-tree-view-simple-tree-view.js +40 -0
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ This repository contains a collection of codemod scripts based for use with
|
|
|
13
13
|
<!-- #default-branch-switch -->
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npx @mui/x-codemod <codemod> <paths...>
|
|
16
|
+
npx @mui/x-codemod@next <codemod> <paths...>
|
|
17
17
|
|
|
18
18
|
Applies a `@mui/x-codemod` to the specified paths
|
|
19
19
|
|
|
@@ -73,6 +73,7 @@ The corresponding sub-sections are listed below
|
|
|
73
73
|
|
|
74
74
|
- [`preset-safe-for-pickers`](#preset-safe-for-pickers-v700)
|
|
75
75
|
- [`preset-safe-for-data-grid`](#preset-safe-for-data-grid-v700)
|
|
76
|
+
- [`preset-safe-for-tree-view`](#preset-safe-for-tree-view-v700)
|
|
76
77
|
|
|
77
78
|
### Pickers codemods
|
|
78
79
|
|
|
@@ -151,7 +152,7 @@ Replace types suffix `SlotsComponent` by `Slots` and `SlotsComponentsProps` by `
|
|
|
151
152
|
npx @mui/x-codemod v7.0.0/pickers/rename-slots-types <path>
|
|
152
153
|
```
|
|
153
154
|
|
|
154
|
-
### Data
|
|
155
|
+
### Data Grid codemods
|
|
155
156
|
|
|
156
157
|
#### `preset-safe` for data grid v7.0.0
|
|
157
158
|
|
|
@@ -204,6 +205,76 @@ Rename props related to `cellSelection` feature.
|
|
|
204
205
|
npx @mui/x-codemod v7.0.0/data-grid/rename-cell-selection-props <path>
|
|
205
206
|
```
|
|
206
207
|
|
|
208
|
+
### Tree View codemods
|
|
209
|
+
|
|
210
|
+
#### `preset-safe` for tree view v7.0.0
|
|
211
|
+
|
|
212
|
+
The `preset-safe` codemods for tree view.
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
npx @mui/x-codemod v7.0.0/tree-view/preset-safe <path|folder>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
The list includes these transformers
|
|
219
|
+
|
|
220
|
+
- [`rename-tree-view-simple-tree-view`](#rename-tree-view-simple-tree-view)
|
|
221
|
+
- [`rename-expansion-props`](#rename-expansion-props)
|
|
222
|
+
- [`rename-selection-props`](#rename-selection-props)
|
|
223
|
+
|
|
224
|
+
#### `rename-tree-view-simple-tree-view`
|
|
225
|
+
|
|
226
|
+
Renames the `TreeView` component to `SimpleTreeView`
|
|
227
|
+
|
|
228
|
+
```diff
|
|
229
|
+
- import { TreeView } from '@mui/x-tree-view';
|
|
230
|
+
+ import { SimpleTreeView } from '@mui/x-tree-view';
|
|
231
|
+
|
|
232
|
+
- import { TreeView } from '@mui/x-tree-view/TreeView';
|
|
233
|
+
+ import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView';
|
|
234
|
+
|
|
235
|
+
return (
|
|
236
|
+
- <TreeView>
|
|
237
|
+
+ <SimpleTreeView>
|
|
238
|
+
<TreeItem nodeId="1" label="First item" />
|
|
239
|
+
- </TreeView>
|
|
240
|
+
+ </SimpleTreeView>
|
|
241
|
+
)
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
#### `rename-expansion-props`
|
|
245
|
+
|
|
246
|
+
Rename the expansion props
|
|
247
|
+
|
|
248
|
+
```diff
|
|
249
|
+
<TreeView
|
|
250
|
+
- onNodeToggle={handleExpansionChange}
|
|
251
|
+
+ onExpandedNodesChange={handleExpansionChange}
|
|
252
|
+
|
|
253
|
+
- expanded={expandedNodes}
|
|
254
|
+
+ expandedNodes={expandedNodes}
|
|
255
|
+
|
|
256
|
+
- defaultExpanded={defaultExpandedNodes}
|
|
257
|
+
+ defaultExpandedNodes={defaultExpandedNodes}
|
|
258
|
+
/>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### `rename-selection-props`
|
|
262
|
+
|
|
263
|
+
Rename the selection props
|
|
264
|
+
|
|
265
|
+
```diff
|
|
266
|
+
<TreeView
|
|
267
|
+
- onNodeSelect={handleSelectionChange}
|
|
268
|
+
+ onSelectedNodesChange={handleSelectionChange}
|
|
269
|
+
|
|
270
|
+
- selected={selectedNodes}
|
|
271
|
+
+ selectedNodes={selectedNodes}
|
|
272
|
+
|
|
273
|
+
- defaultSelected={defaultSelectedNodes}
|
|
274
|
+
+ defaultSelectedNodes={defaultSelectedNodes}
|
|
275
|
+
/>
|
|
276
|
+
```
|
|
277
|
+
|
|
207
278
|
## v6.0.0
|
|
208
279
|
|
|
209
280
|
### 🚀 `preset-safe` for v6.0.0
|
|
@@ -549,7 +620,7 @@ This change only affects Date and Time Pickers components.
|
|
|
549
620
|
npx @mui/x-codemod v6.0.0/pickers/rename-components-to-slots <path>
|
|
550
621
|
```
|
|
551
622
|
|
|
552
|
-
### Data
|
|
623
|
+
### Data Grid codemods
|
|
553
624
|
|
|
554
625
|
#### `preset-safe` for data grid v6.0.0
|
|
555
626
|
|
|
@@ -598,7 +669,7 @@ If you are using `GridRowGroupingColumnMenuItems` and `GridRowGroupableColumnMen
|
|
|
598
669
|
|
|
599
670
|
#### `row-selection-props-rename`
|
|
600
671
|
|
|
601
|
-
Data
|
|
672
|
+
Data Grid props that have been renamed.
|
|
602
673
|
|
|
603
674
|
```diff
|
|
604
675
|
<DataGrid
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-codemod",
|
|
3
|
-
"version": "7.0.0-alpha.
|
|
3
|
+
"version": "7.0.0-alpha.7",
|
|
4
4
|
"bin": "./codemod.js",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "MUI Team",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"url": "https://opencollective.com/mui-org"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@babel/core": "^7.23.
|
|
36
|
-
"@babel/runtime": "^7.23.
|
|
37
|
-
"@babel/traverse": "^7.23.
|
|
35
|
+
"@babel/core": "^7.23.7",
|
|
36
|
+
"@babel/runtime": "^7.23.7",
|
|
37
|
+
"@babel/traverse": "^7.23.7",
|
|
38
38
|
"jscodeshift": "0.13.1",
|
|
39
39
|
"jscodeshift-add-imports": "^1.0.10",
|
|
40
40
|
"yargs": "^17.7.2"
|
|
@@ -7,8 +7,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = transformer;
|
|
8
8
|
var _presetSafe = _interopRequireDefault(require("../pickers/preset-safe"));
|
|
9
9
|
var _presetSafe2 = _interopRequireDefault(require("../data-grid/preset-safe"));
|
|
10
|
+
var _presetSafe3 = _interopRequireDefault(require("../tree-view/preset-safe"));
|
|
10
11
|
function transformer(file, api, options) {
|
|
11
12
|
file.source = (0, _presetSafe.default)(file, api, options);
|
|
12
13
|
file.source = (0, _presetSafe2.default)(file, api, options);
|
|
14
|
+
file.source = (0, _presetSafe3.default)(file, api, options);
|
|
13
15
|
return file.source;
|
|
14
16
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = transformer;
|
|
8
|
+
var _renameExpansionProps = _interopRequireDefault(require("../rename-expansion-props"));
|
|
9
|
+
var _renameSelectionProps = _interopRequireDefault(require("../rename-selection-props"));
|
|
10
|
+
var _renameTreeViewSimpleTreeView = _interopRequireDefault(require("../rename-tree-view-simple-tree-view"));
|
|
11
|
+
function transformer(file, api, options) {
|
|
12
|
+
file.source = (0, _renameExpansionProps.default)(file, api, options);
|
|
13
|
+
file.source = (0, _renameSelectionProps.default)(file, api, options);
|
|
14
|
+
file.source = (0, _renameTreeViewSimpleTreeView.default)(file, api, options);
|
|
15
|
+
return file.source;
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = transformer;
|
|
8
|
+
var _renameProps = _interopRequireDefault(require("../../../util/renameProps"));
|
|
9
|
+
function transformer(file, api, options) {
|
|
10
|
+
const j = api.jscodeshift;
|
|
11
|
+
const root = j(file.source);
|
|
12
|
+
const printOptions = options.printOptions;
|
|
13
|
+
return (0, _renameProps.default)({
|
|
14
|
+
root,
|
|
15
|
+
componentNames: ['TreeView', 'SimpleTreeView'],
|
|
16
|
+
props: {
|
|
17
|
+
expanded: 'expandedNodes',
|
|
18
|
+
defaultExpanded: 'defaultExpandedNodes',
|
|
19
|
+
onNodeToggle: 'onExpandedNodesChange'
|
|
20
|
+
},
|
|
21
|
+
j
|
|
22
|
+
}).toSource(printOptions);
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = transformer;
|
|
8
|
+
var _renameProps = _interopRequireDefault(require("../../../util/renameProps"));
|
|
9
|
+
function transformer(file, api, options) {
|
|
10
|
+
const j = api.jscodeshift;
|
|
11
|
+
const root = j(file.source);
|
|
12
|
+
const printOptions = options.printOptions;
|
|
13
|
+
return (0, _renameProps.default)({
|
|
14
|
+
root,
|
|
15
|
+
componentNames: ['TreeView', 'SimpleTreeView'],
|
|
16
|
+
props: {
|
|
17
|
+
selected: 'selectedNodes',
|
|
18
|
+
defaultSelected: 'defaultSelectedNodes',
|
|
19
|
+
onNodeSelect: 'onSelectedNodesChange'
|
|
20
|
+
},
|
|
21
|
+
j
|
|
22
|
+
}).toSource(printOptions);
|
|
23
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = transformer;
|
|
7
|
+
const VARIABLES = {
|
|
8
|
+
TreeView: 'SimpleTreeView',
|
|
9
|
+
TreeViewProps: 'SimpleTreeViewProps',
|
|
10
|
+
TreeViewClasses: 'SimpleTreeViewClasses',
|
|
11
|
+
TreeViewClassKey: 'SimpleTreeViewClassKey',
|
|
12
|
+
treeViewClasses: 'simpleTreeViewClasses',
|
|
13
|
+
getTreeViewUtilityClass: 'getSimpleTreeViewUtilityClass'
|
|
14
|
+
};
|
|
15
|
+
const PACKAGE_REGEXP = /@mui\/x-tree-view(\/(.*)|)/;
|
|
16
|
+
const matchImport = path => (path.node.source.value?.toString() ?? '').match(PACKAGE_REGEXP);
|
|
17
|
+
function transformer(file, api, options) {
|
|
18
|
+
const j = api.jscodeshift;
|
|
19
|
+
const root = j(file.source);
|
|
20
|
+
const printOptions = options.printOptions || {
|
|
21
|
+
quote: 'single',
|
|
22
|
+
trailingComma: true
|
|
23
|
+
};
|
|
24
|
+
const matchingImports = root.find(j.ImportDeclaration).filter(path => !!matchImport(path));
|
|
25
|
+
|
|
26
|
+
// Rename the import specifiers
|
|
27
|
+
// - import { TreeView } from '@mui/x-tree-view/TreeView'
|
|
28
|
+
// + import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'
|
|
29
|
+
matchingImports.find(j.ImportSpecifier).filter(path => VARIABLES.hasOwnProperty(path.node.imported.name)).replaceWith(path => j.importSpecifier(j.identifier(VARIABLES[path.node.imported.name])));
|
|
30
|
+
|
|
31
|
+
// Rename the nested import declarations
|
|
32
|
+
// - import {} from '@mui/x-tree-view/TreeView'
|
|
33
|
+
// + import {} from '@mui/x-tree-view/SimpleTreeView'
|
|
34
|
+
matchingImports.filter(path => matchImport(path)?.[2] === 'TreeView').replaceWith(path => {
|
|
35
|
+
const importPath = path.node.source.value?.toString() ?? '';
|
|
36
|
+
return j.importDeclaration(path.node.specifiers,
|
|
37
|
+
// copy over the existing import specifiers
|
|
38
|
+
j.stringLiteral(importPath.replace('TreeView', 'SimpleTreeView')) // Replace the source with our new source
|
|
39
|
+
);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Rename the import usage
|
|
43
|
+
// - <TreeView />
|
|
44
|
+
// + <SimpleTreeView />
|
|
45
|
+
root.find(j.Identifier).filter(path => VARIABLES.hasOwnProperty(path.node.name)).replaceWith(path => j.identifier(VARIABLES[path.node.name]));
|
|
46
|
+
return root.toSource(printOptions);
|
|
47
|
+
}
|
package/v7.0.0/tree-view/rename-tree-view-simple-tree-view/rename-tree-view-simple-tree-view.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _path = _interopRequireDefault(require("path"));
|
|
5
|
+
var _chai = require("chai");
|
|
6
|
+
var _jscodeshift = _interopRequireDefault(require("jscodeshift"));
|
|
7
|
+
var _ = _interopRequireDefault(require("."));
|
|
8
|
+
var _readFile = _interopRequireDefault(require("../../../util/readFile"));
|
|
9
|
+
function read(fileName) {
|
|
10
|
+
return (0, _readFile.default)(_path.default.join(__dirname, fileName));
|
|
11
|
+
}
|
|
12
|
+
const TEST_FILES = ['nested-imports', 'root-imports'];
|
|
13
|
+
describe('v7.0.0/tree-view', () => {
|
|
14
|
+
describe('rename-tree-view-simple-tree-view', () => {
|
|
15
|
+
TEST_FILES.forEach(testFile => {
|
|
16
|
+
const actualPath = `./actual-${testFile}.spec.tsx`;
|
|
17
|
+
const expectedPath = `./expected-${testFile}.spec.tsx`;
|
|
18
|
+
describe(`${testFile.replace(/-/g, ' ')}`, () => {
|
|
19
|
+
it('transforms imports as needed', () => {
|
|
20
|
+
const actual = (0, _.default)({
|
|
21
|
+
source: read(actualPath)
|
|
22
|
+
}, {
|
|
23
|
+
jscodeshift: _jscodeshift.default.withParser('tsx')
|
|
24
|
+
}, {});
|
|
25
|
+
const expected = read(expectedPath);
|
|
26
|
+
(0, _chai.expect)(actual).to.equal(expected, 'The transformed version should be correct');
|
|
27
|
+
});
|
|
28
|
+
it('should be idempotent', () => {
|
|
29
|
+
const actual = (0, _.default)({
|
|
30
|
+
source: read(expectedPath)
|
|
31
|
+
}, {
|
|
32
|
+
jscodeshift: _jscodeshift.default.withParser('tsx')
|
|
33
|
+
}, {});
|
|
34
|
+
const expected = read(expectedPath);
|
|
35
|
+
(0, _chai.expect)(actual).to.equal(expected, 'The transformed version should be correct');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|