@mui/codemod 5.5.0 → 5.6.0

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 CHANGED
@@ -62,6 +62,14 @@ npx @mui/codemod <transform> <path> --jscodeshift="--printOptions='{\"quote\":\"
62
62
 
63
63
  ### v5.0.0
64
64
 
65
+ #### `date-pickers-moved-to-x`
66
+
67
+ Rename the imports of date and time pickers from `@mui/lab` to `@mui/x-date-pickers` and `@mui/x-date-pickers-pro`.
68
+
69
+ ```sh
70
+ npx @mui/codemod v5.0.0/date-pickers-moved-to-x <path>
71
+ ```
72
+
65
73
  #### 🚀 `preset-safe`
66
74
 
67
75
  A combination of all important transformers for migrating v4 to v5. ⚠️ This codemod should be run only once.
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = transformer;
7
+ const _exports = {
8
+ AdapterDateFns: {
9
+ default: 'AdapterDateFns',
10
+ named: []
11
+ },
12
+ AdapterDayjs: {
13
+ default: 'AdapterDayjs',
14
+ named: []
15
+ },
16
+ AdapterLuxon: {
17
+ default: 'AdapterLuxon',
18
+ named: []
19
+ },
20
+ AdapterMoment: {
21
+ default: 'AdapterMoment',
22
+ named: []
23
+ },
24
+ CalendarPicker: {
25
+ default: 'CalendarPicker',
26
+ named: ['calendarPickerClasses', 'CalendarPickerClasses', 'CalendarPickerClassKey', 'CalendarPickerProps', 'CalendarPickerView']
27
+ },
28
+ CalendarPickerSkeleton: {
29
+ default: 'CalendarPickerSkeleton',
30
+ named: ['calendarPickerSkeletonClasses', 'CalendarPickerSkeletonClassKey', 'CalendarPickerSkeletonProps', 'getCalendarPickerSkeletonUtilityClass']
31
+ },
32
+ ClockPicker: {
33
+ default: 'ClockPicker',
34
+ named: ['clockPickerClasses', 'ClockPickerClasses', 'ClockPickerClassKey', 'ClockPickerProps', 'ClockPickerView']
35
+ },
36
+ DatePicker: {
37
+ default: 'DatePicker',
38
+ named: ['DatePickerProps']
39
+ },
40
+ DateRangePicker: {
41
+ default: 'DateRangePicker',
42
+ named: ['DateRange', 'DateRangePickerProps'],
43
+ isPro: true
44
+ },
45
+ DateRangePickerDay: {
46
+ default: 'DateRangePickerDay',
47
+ named: ['dateRangePickerDayClasses', 'DateRangePickerDayClasses', 'DateRangePickerDayClassKey', 'DateRangePickerDayProps', 'getDateRangePickerDayUtilityClass'],
48
+ isPro: true
49
+ },
50
+ DateTimePicker: {
51
+ default: 'DateTimePicker',
52
+ named: ['DateTimePickerProps']
53
+ },
54
+ DesktopDatePicker: {
55
+ default: 'DesktopDatePicker',
56
+ named: ['DesktopDatePickerProps']
57
+ },
58
+ DesktopDateRangePicker: {
59
+ default: 'DesktopDateRangePicker',
60
+ named: ['DesktopDateRangePickerProps'],
61
+ isPro: true
62
+ },
63
+ DesktopDateTimePicker: {
64
+ default: 'DesktopDateTimePicker',
65
+ named: ['DesktopDateTimePickerProps']
66
+ },
67
+ DesktopTimePicker: {
68
+ default: 'DesktopTimePicker',
69
+ named: ['DesktopTimePickerProps']
70
+ },
71
+ LocalizationProvider: {
72
+ default: 'LocalizationProvider',
73
+ named: ['LocalizationProviderProps', 'MuiPickersAdapter', 'MuiPickersAdapterContext', 'MuiPickersAdapterContextValue']
74
+ },
75
+ MobileDatePicker: {
76
+ default: 'MobileDatePicker',
77
+ named: ['MobileDatePickerProps']
78
+ },
79
+ MobileDateRangePicker: {
80
+ default: 'MobileDateRangePicker',
81
+ named: ['MobileDateRangePickerProps'],
82
+ isPro: true
83
+ },
84
+ MobileDateTimePicker: {
85
+ default: 'MobileDateTimePicker',
86
+ named: ['MobileDateTimePickerProps']
87
+ },
88
+ MobileTimePicker: {
89
+ default: 'MobileTimePicker',
90
+ named: ['MobileTimePickerProps']
91
+ },
92
+ MonthPicker: {
93
+ default: 'MonthPicker',
94
+ named: ['monthPickerClasses', 'getMonthPickerUtilityClass', 'MonthPickerClassKey', 'MonthPickerProps']
95
+ },
96
+ PickersDay: {
97
+ default: 'PickersDay',
98
+ named: ['pickersDayClasses', 'getPickersDayUtilityClass', 'PickersDayClassKey', 'PickersDayProps']
99
+ },
100
+ StaticDatePicker: {
101
+ default: 'StaticDatePicker',
102
+ named: ['StaticDatePickerProps']
103
+ },
104
+ StaticDateRangePicker: {
105
+ default: 'StaticDateRangePicker',
106
+ named: ['StaticDateRangePickerProps'],
107
+ isPro: true
108
+ },
109
+ StaticDateTimePicker: {
110
+ default: 'StaticDateTimePicker',
111
+ named: ['StaticDateTimePickerProps']
112
+ },
113
+ StaticTimePicker: {
114
+ default: 'StaticTimePicker',
115
+ named: ['StaticTimePickerProps']
116
+ },
117
+ TimePicker: {
118
+ default: 'TimePicker',
119
+ named: ['TimePickerProps']
120
+ },
121
+ YearPicker: {
122
+ default: 'YearPicker',
123
+ named: ['yearPickerClasses', 'getYearPickerUtilityClass', 'YearPickerClassKey', 'YearPickerProps']
124
+ }
125
+ };
126
+
127
+ const buildLookup = () => {
128
+ return Object.fromEntries(Object.entries(_exports).flatMap(([entryPoint, entryPointData]) => [entryPointData.default, ...entryPointData.named].map(exportName => [exportName, {
129
+ entryPoint,
130
+ isPro: entryPointData.isPro
131
+ }])));
132
+ };
133
+ /**
134
+ * @param {import('jscodeshift').FileInfo} file
135
+ * @param {import('jscodeshift').API} api
136
+ */
137
+
138
+
139
+ function transformer(fileInfo, api, options) {
140
+ const j = api.jscodeshift;
141
+ const printOptions = options.printOptions || {
142
+ quote: 'single'
143
+ };
144
+ const lookup = buildLookup();
145
+ const root = j(fileInfo.source);
146
+ root.find(j.ImportDeclaration).forEach(path => {
147
+ const importSource = path.node.source.value;
148
+ const subPackageImportMatch = importSource.match(/@mui\/lab\/(.*)/);
149
+
150
+ if (subPackageImportMatch !== null) {
151
+ const subModule = subPackageImportMatch[1];
152
+
153
+ if (subModule.startsWith('internal')) {
154
+ console.warn('Imports from `@mui/lab/internal` are not supported');
155
+ return;
156
+ }
157
+
158
+ if (_exports[subModule]) {
159
+ /**
160
+ * @type {import('jscodeshift').ASTPath}
161
+ */
162
+ const sourcePath = path.get('source');
163
+ const targetPackage = _exports[subModule].isPro ? '@mui/x-date-pickers-pro' : '@mui/x-date-pickers';
164
+ const targetImportPath = `${targetPackage}/${subModule}`;
165
+ sourcePath.replace(j.stringLiteral(targetImportPath));
166
+ const importDeclaration = path.value;
167
+ importDeclaration.specifiers = importDeclaration.specifiers.map(specifier => {
168
+ if (specifier.type === 'ImportDefaultSpecifier') {
169
+ const localName = specifier.local.name;
170
+ return j.importSpecifier(j.identifier(subModule), j.identifier(localName));
171
+ }
172
+
173
+ return specifier;
174
+ });
175
+ }
176
+ } else if (importSource === '@mui/lab') {
177
+ // Sieve import specifiers into /core and /lab
178
+ const xImportSpecifiers = [];
179
+ const labImportSpecifiers = [];
180
+ let isPro = false;
181
+ path.node.specifiers.forEach(specifier => {
182
+ if (specifier.type === 'ImportSpecifier') {
183
+ const lookupValue = lookup[specifier.imported.name];
184
+
185
+ if (lookupValue) {
186
+ xImportSpecifiers.push(specifier);
187
+
188
+ if (lookupValue.isPro) {
189
+ isPro = true;
190
+ }
191
+ } else {
192
+ labImportSpecifiers.push(specifier);
193
+ }
194
+ } else {
195
+ // `import Lab from '@material-ui/lab'`
196
+ // `import * as Lab from '@material-ui/lab'`
197
+ // These imports would require scope analysis.
198
+ console.warn(`Can't handle ${specifier.type}`);
199
+ }
200
+ });
201
+
202
+ if (xImportSpecifiers.length > 0) {
203
+ const targetPackage = isPro ? '@mui/x-date-pickers-pro' : '@mui/x-date-pickers';
204
+ path.replace(j.importDeclaration(xImportSpecifiers, j.stringLiteral(targetPackage)), j.importDeclaration(labImportSpecifiers, j.stringLiteral('@mui/lab')));
205
+ }
206
+ }
207
+ }).toSource(printOptions);
208
+ return root.toSource(printOptions);
209
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ var _lab = require("@mui/lab");
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ var _lab = require("@mui/lab");
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _CalendarPicker = _interopRequireWildcard(require("@mui/lab/CalendarPicker"));
6
+
7
+ var _CalendarPickerSkeleton = _interopRequireWildcard(require("@mui/lab/CalendarPickerSkeleton"));
8
+
9
+ var _ClockPicker = _interopRequireWildcard(require("@mui/lab/ClockPicker"));
10
+
11
+ var _DatePicker = _interopRequireWildcard(require("@mui/lab/DatePicker"));
12
+
13
+ var _DateRangePicker = _interopRequireWildcard(require("@mui/lab/DateRangePicker"));
14
+
15
+ var _DateRangePickerDay = _interopRequireWildcard(require("@mui/lab/DateRangePickerDay"));
16
+
17
+ var _DateTimePicker = _interopRequireWildcard(require("@mui/lab/DateTimePicker"));
18
+
19
+ var _DesktopDatePicker = _interopRequireWildcard(require("@mui/lab/DesktopDatePicker"));
20
+
21
+ var _DesktopDateRangePicker = _interopRequireWildcard(require("@mui/lab/DesktopDateRangePicker"));
22
+
23
+ var _DesktopDateTimePicker = _interopRequireWildcard(require("@mui/lab/DesktopDateTimePicker"));
24
+
25
+ var _DesktopTimePicker = _interopRequireWildcard(require("@mui/lab/DesktopTimePicker"));
26
+
27
+ var _LocalizationProvider = _interopRequireWildcard(require("@mui/lab/LocalizationProvider"));
28
+
29
+ var _MobileDatePicker = _interopRequireWildcard(require("@mui/lab/MobileDatePicker"));
30
+
31
+ var _MobileDateRangePicker = _interopRequireWildcard(require("@mui/lab/MobileDateRangePicker"));
32
+
33
+ var _MobileDateTimePicker = _interopRequireWildcard(require("@mui/lab/MobileDateTimePicker"));
34
+
35
+ var _MobileTimePicker = _interopRequireWildcard(require("@mui/lab/MobileTimePicker"));
36
+
37
+ var _MonthPicker = _interopRequireWildcard(require("@mui/lab/MonthPicker"));
38
+
39
+ var _PickersDay = _interopRequireWildcard(require("@mui/lab/PickersDay"));
40
+
41
+ var _StaticDatePicker = _interopRequireWildcard(require("@mui/lab/StaticDatePicker"));
42
+
43
+ var _StaticDateRangePicker = _interopRequireWildcard(require("@mui/lab/StaticDateRangePicker"));
44
+
45
+ var _StaticDateTimePicker = _interopRequireWildcard(require("@mui/lab/StaticDateTimePicker"));
46
+
47
+ var _StaticTimePicker = _interopRequireWildcard(require("@mui/lab/StaticTimePicker"));
48
+
49
+ var _TimePicker = _interopRequireWildcard(require("@mui/lab/TimePicker"));
50
+
51
+ var _YearPicker = _interopRequireWildcard(require("@mui/lab/YearPicker"));
52
+
53
+ var _AdapterDateFns = _interopRequireDefault(require("@mui/lab/AdapterDateFns"));
54
+
55
+ var _AdapterDayjs = _interopRequireDefault(require("@mui/lab/AdapterDayjs"));
56
+
57
+ var _AdapterLuxon = _interopRequireDefault(require("@mui/lab/AdapterLuxon"));
58
+
59
+ var _AdapterMoment = _interopRequireDefault(require("@mui/lab/AdapterMoment"));
60
+
61
+ var _Timeline = _interopRequireDefault(require("@mui/lab/Timeline"));
62
+
63
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
64
+
65
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ var _xDatePickers = require("@mui/x-date-pickers");
4
+
5
+ var _lab = require("@mui/lab");
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ var _xDatePickersPro = require("@mui/x-date-pickers-pro");
4
+
5
+ var _lab = require("@mui/lab");
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _CalendarPicker = require("@mui/x-date-pickers/CalendarPicker");
6
+
7
+ var _CalendarPickerSkeleton = require("@mui/x-date-pickers/CalendarPickerSkeleton");
8
+
9
+ var _ClockPicker = require("@mui/x-date-pickers/ClockPicker");
10
+
11
+ var _DatePicker = require("@mui/x-date-pickers/DatePicker");
12
+
13
+ var _DateRangePicker = require("@mui/x-date-pickers-pro/DateRangePicker");
14
+
15
+ var _DateRangePickerDay = require("@mui/x-date-pickers-pro/DateRangePickerDay");
16
+
17
+ var _DateTimePicker = require("@mui/x-date-pickers/DateTimePicker");
18
+
19
+ var _DesktopDatePicker = require("@mui/x-date-pickers/DesktopDatePicker");
20
+
21
+ var _DesktopDateRangePicker = require("@mui/x-date-pickers-pro/DesktopDateRangePicker");
22
+
23
+ var _DesktopDateTimePicker = require("@mui/x-date-pickers/DesktopDateTimePicker");
24
+
25
+ var _DesktopTimePicker = require("@mui/x-date-pickers/DesktopTimePicker");
26
+
27
+ var _LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
28
+
29
+ var _MobileDatePicker = require("@mui/x-date-pickers/MobileDatePicker");
30
+
31
+ var _MobileDateRangePicker = require("@mui/x-date-pickers-pro/MobileDateRangePicker");
32
+
33
+ var _MobileDateTimePicker = require("@mui/x-date-pickers/MobileDateTimePicker");
34
+
35
+ var _MobileTimePicker = require("@mui/x-date-pickers/MobileTimePicker");
36
+
37
+ var _MonthPicker = require("@mui/x-date-pickers/MonthPicker");
38
+
39
+ var _PickersDay = require("@mui/x-date-pickers/PickersDay");
40
+
41
+ var _StaticDatePicker = require("@mui/x-date-pickers/StaticDatePicker");
42
+
43
+ var _StaticDateRangePicker = require("@mui/x-date-pickers-pro/StaticDateRangePicker");
44
+
45
+ var _StaticDateTimePicker = require("@mui/x-date-pickers/StaticDateTimePicker");
46
+
47
+ var _StaticTimePicker = require("@mui/x-date-pickers/StaticTimePicker");
48
+
49
+ var _TimePicker = require("@mui/x-date-pickers/TimePicker");
50
+
51
+ var _YearPicker = require("@mui/x-date-pickers/YearPicker");
52
+
53
+ var _AdapterDateFns = require("@mui/x-date-pickers/AdapterDateFns");
54
+
55
+ var _AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
56
+
57
+ var _AdapterLuxon = require("@mui/x-date-pickers/AdapterLuxon");
58
+
59
+ var _AdapterMoment = require("@mui/x-date-pickers/AdapterMoment");
60
+
61
+ var _Timeline = _interopRequireDefault(require("@mui/lab/Timeline"));
@@ -16,8 +16,8 @@ function transformer(file, api, options) {
16
16
  quote: 'single'
17
17
  };
18
18
  return j(file.source).find(j.ImportDeclaration).forEach(path => {
19
- const importSouce = path.node.source.value;
20
- const subPackageImportMatch = importSouce.match(/@material-ui\/lab\/(.*)/);
19
+ const importSource = path.node.source.value;
20
+ const subPackageImportMatch = importSource.match(/@material-ui\/lab\/(.*)/);
21
21
 
22
22
  if (subPackageImportMatch !== null) {
23
23
  const componentName = subPackageImportMatch[1];
@@ -29,7 +29,7 @@ function transformer(file, api, options) {
29
29
  const sourcePath = path.get('source');
30
30
  sourcePath.replace(j.stringLiteral(`@material-ui/core/${componentName}`));
31
31
  }
32
- } else if (importSouce === '@material-ui/lab') {
32
+ } else if (importSource === '@material-ui/lab') {
33
33
  // Sieve import specifiers into /core and /lab
34
34
  const labImportSpecifiers = [];
35
35
  const coreImportSpecifiers = [];
@@ -16,7 +16,7 @@ function transformer(file, api, options) {
16
16
  const variant = attributes.find(node => node.type === 'JSXAttribute' && node.name.name === 'variant');
17
17
 
18
18
  if (!variant) {
19
- attributes.push(j.jsxAttribute(j.jsxIdentifier('variant'), j.literal('standard')));
19
+ attributes.unshift(j.jsxAttribute(j.jsxIdentifier('variant'), j.literal('standard')));
20
20
  }
21
21
  }
22
22
 
@@ -27,25 +27,25 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
27
27
 
28
28
  function TextFieldComponent(props) {
29
29
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
30
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField4.default, (0, _extends2.default)({}, props, {
30
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField4.default, (0, _extends2.default)({
31
31
  variant: "standard"
32
- })), _TextField || (_TextField = /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField4.default, {
32
+ }, props)), _TextField || (_TextField = /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField4.default, {
33
33
  variant: "outlined"
34
34
  })), _TextField2 || (_TextField2 = /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField4.default, {
35
35
  variant: "standard"
36
36
  })), _TextField3 || (_TextField3 = /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField4.default, {
37
37
  variant: "filled"
38
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select4.default, (0, _extends2.default)({}, props, {
38
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select4.default, (0, _extends2.default)({
39
39
  variant: "standard"
40
- })), _Select || (_Select = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select4.default, {
40
+ }, props)), _Select || (_Select = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select4.default, {
41
41
  variant: "outlined"
42
42
  })), _Select2 || (_Select2 = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select4.default, {
43
43
  variant: "standard"
44
44
  })), _Select3 || (_Select3 = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select4.default, {
45
45
  variant: "filled"
46
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControl4.default, (0, _extends2.default)({}, props, {
46
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControl4.default, (0, _extends2.default)({
47
47
  variant: "standard"
48
- })), _FormControl || (_FormControl = /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControl4.default, {
48
+ }, props)), _FormControl || (_FormControl = /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControl4.default, {
49
49
  variant: "outlined"
50
50
  })), _FormControl2 || (_FormControl2 = /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControl4.default, {
51
51
  variant: "standard"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/codemod",
3
- "version": "5.5.0",
3
+ "version": "5.6.0",
4
4
  "bin": "./codemod.js",
5
5
  "private": false,
6
6
  "author": "MUI Team",
@@ -35,7 +35,7 @@
35
35
  "@babel/traverse": "^7.17.3",
36
36
  "jscodeshift": "^0.13.1",
37
37
  "jscodeshift-add-imports": "^1.0.10",
38
- "yargs": "^17.3.1"
38
+ "yargs": "^17.4.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/jscodeshift": "0.11.3"