@vkontakte/vkui-codemods 0.0.7 → 1.0.0-beta.1
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 +69 -21
- package/dist/autoDetectVKUIVersion.js +77 -0
- package/dist/cli.js +86 -30
- package/dist/codemod-helpers.js +76 -4
- package/dist/getAvailableCodemods.js +31 -4
- package/dist/index.js +57 -64
- package/dist/report.js +1 -2
- package/dist/testHelpers/testHelper.js +3 -3
- package/dist/transforms/{accordion.js → v6/accordion.js} +3 -3
- package/dist/transforms/{action-sheet-item.js → v6/action-sheet-item.js} +2 -2
- package/dist/transforms/{action-sheet.js → v6/action-sheet.js} +3 -3
- package/dist/transforms/{alert.js → v6/alert.js} +2 -2
- package/dist/transforms/{appearance-provider.js → v6/appearance-provider.js} +2 -2
- package/dist/transforms/{banner.js → v6/banner.js} +3 -3
- package/dist/transforms/{calendar-range.js → v6/calendar-range.js} +2 -2
- package/dist/transforms/{calendar.js → v6/calendar.js} +2 -2
- package/dist/transforms/{card-scroll.js → v6/card-scroll.js} +2 -2
- package/dist/transforms/{chip.js → v6/chip.js} +2 -2
- package/dist/transforms/{chips-input.js → v6/chips-input.js} +2 -2
- package/dist/transforms/{config-provider.js → v6/config-provider.js} +2 -2
- package/dist/transforms/{content-card.js → v6/content-card.js} +2 -2
- package/dist/transforms/{custom-scroll-view.js → v6/custom-scroll-view.js} +3 -3
- package/dist/transforms/{date-input.js → v6/date-input.js} +2 -2
- package/dist/transforms/{date-range-input.js → v6/date-range-input.js} +2 -2
- package/dist/transforms/{fixed-layout.js → v6/fixed-layout.js} +2 -2
- package/dist/transforms/{forbid-imports.js → v6/forbid-imports.js} +2 -2
- package/dist/transforms/{form-item.js → v6/form-item.js} +2 -2
- package/dist/transforms/{form-layout.js → v6/form-layout.js} +3 -3
- package/dist/transforms/{gallery.js → v6/gallery.js} +2 -2
- package/dist/transforms/{gradient-prop-change.js → v6/gradient-prop-change.js} +3 -3
- package/dist/transforms/{image-base.js → v6/image-base.js} +2 -2
- package/dist/transforms/{modal-card.js → v6/modal-card.js} +3 -3
- package/dist/transforms/{modal-page-header.js → v6/modal-page-header.js} +2 -2
- package/dist/transforms/{pagination.js → v6/pagination.js} +3 -3
- package/dist/transforms/{panel-header-content.js → v6/panel-header-content.js} +3 -3
- package/dist/transforms/{panel-header.js → v6/panel-header.js} +3 -3
- package/dist/transforms/{placeholder.js → v6/placeholder.js} +2 -2
- package/dist/transforms/{popout-wrapper.js → v6/popout-wrapper.js} +3 -3
- package/dist/transforms/{popover.js → v6/popover.js} +2 -2
- package/dist/transforms/{popper.js → v6/popper.js} +2 -2
- package/dist/transforms/{rich-tooltip.js → v6/rich-tooltip.js} +3 -3
- package/dist/transforms/{search.js → v6/search.js} +2 -2
- package/dist/transforms/{select.js → v6/select.js} +2 -2
- package/dist/transforms/{simple-cell.js → v6/simple-cell.js} +3 -3
- package/dist/transforms/{split-col.js → v6/split-col.js} +2 -2
- package/dist/transforms/{tabbar.js → v6/tabbar.js} +2 -2
- package/dist/transforms/{tappable.js → v6/tappable.js} +3 -3
- package/dist/transforms/{text-tooltip.js → v6/text-tooltip.js} +2 -2
- package/dist/transforms/{tooltip-container.js → v6/tooltip-container.js} +2 -2
- package/dist/transforms/{tooltip.js → v6/tooltip.js} +2 -2
- package/dist/transforms/{typography.js → v6/typography.js} +3 -3
- package/dist/transforms/{users-stack.js → v6/users-stack.js} +3 -3
- package/dist/transforms/v7/action-sheet.js +16 -0
- package/dist/transforms/v7/alert.js +16 -0
- package/dist/transforms/v7/appearance-provider.js +35 -0
- package/dist/transforms/v7/appearance.js +45 -0
- package/dist/transforms/v7/banner.js +47 -0
- package/dist/transforms/v7/card-grid.js +16 -0
- package/dist/transforms/v7/card-scroll.js +59 -0
- package/dist/transforms/v7/cell-button.js +49 -0
- package/dist/transforms/v7/cell.js +18 -0
- package/dist/transforms/v7/chips-select.js +20 -0
- package/dist/transforms/v7/common/remapSizePropValue.js +43 -0
- package/dist/transforms/v7/common/swapGapPropElements.js +25 -0
- package/dist/transforms/v7/config-provider.js +136 -0
- package/dist/transforms/v7/content-card.js +21 -0
- package/dist/transforms/v7/custom-scroll-view.js +21 -0
- package/dist/transforms/v7/custom-select.js +20 -0
- package/dist/transforms/v7/flex.js +18 -0
- package/dist/transforms/v7/form-item.js +128 -0
- package/dist/transforms/v7/form-status.js +18 -0
- package/dist/transforms/v7/header.js +28 -0
- package/dist/transforms/v7/horizontal-cell-show-more.js +58 -0
- package/dist/transforms/v7/horizontal-cell.js +16 -0
- package/dist/transforms/v7/horizontal-scroll.js +38 -0
- package/dist/transforms/v7/image-overlay.js +125 -0
- package/dist/transforms/v7/mini-info-cell.js +18 -0
- package/dist/transforms/v7/modal-card.js +29 -0
- package/dist/transforms/v7/onboarding-tooltip.js +16 -0
- package/dist/transforms/v7/panel-header-content.js +16 -0
- package/dist/transforms/v7/placeholder.js +19 -0
- package/dist/transforms/v7/rich-cell.js +20 -0
- package/dist/transforms/v7/screen-spinner.js +61 -0
- package/dist/transforms/v7/scroll-arrow.js +52 -0
- package/dist/transforms/v7/select.js +20 -0
- package/dist/transforms/v7/separator.js +18 -0
- package/dist/transforms/v7/simple-cell.js +18 -0
- package/dist/transforms/v7/simple-grid.js +18 -0
- package/dist/transforms/v7/spacing.js +26 -0
- package/dist/transforms/v7/spinner.js +29 -0
- package/dist/transforms/v7/subnavigation-bar.js +60 -0
- package/dist/transforms/v7/subnavigation-button.js +18 -0
- package/dist/transforms/v7/tabbar-item.js +16 -0
- package/dist/transforms/v7/tooltip.js +16 -0
- package/dist/transforms/v7/typography.js +79 -0
- package/dist/transforms/v7/users-stack.js +50 -0
- package/package.json +7 -7
- package/dist/transforms/{horizontal-cell-show-more.js → v6/horizontal-cell-show-more.js} +1 -1
- package/dist/transforms/{range-slider.js → v6/range-slider.js} +1 -1
- package/dist/transforms/{visually-hidden-input.js → v6/visually-hidden-input.js} +1 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.remapSizePropValue = void 0;
|
|
4
|
+
var report_1 = require("../../../report");
|
|
5
|
+
var remapSizePropValue = function (_a) {
|
|
6
|
+
var j = _a.j, source = _a.source, sizesMap = _a.sizesMap, componentName = _a.componentName, api = _a.api;
|
|
7
|
+
source
|
|
8
|
+
.find(j.JSXOpeningElement)
|
|
9
|
+
.filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === componentName; })
|
|
10
|
+
.find(j.JSXAttribute)
|
|
11
|
+
.filter(function (attribute) {
|
|
12
|
+
var attributeName = attribute.node.name.name;
|
|
13
|
+
return attributeName === 'size';
|
|
14
|
+
})
|
|
15
|
+
.forEach(function (attribute) {
|
|
16
|
+
var _a, _b, _c, _d;
|
|
17
|
+
var nodeToReplaceValue;
|
|
18
|
+
if (((_a = attribute.node.value) === null || _a === void 0 ? void 0 : _a.type) !== 'JSXExpressionContainer' &&
|
|
19
|
+
((_b = attribute.node.value) === null || _b === void 0 ? void 0 : _b.type) !== 'StringLiteral') {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (((_c = attribute.node.value) === null || _c === void 0 ? void 0 : _c.type) === 'JSXExpressionContainer') {
|
|
23
|
+
var expression = attribute.node.value.expression;
|
|
24
|
+
if (expression.type !== 'StringLiteral') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
nodeToReplaceValue = expression;
|
|
28
|
+
}
|
|
29
|
+
if (((_d = attribute.node.value) === null || _d === void 0 ? void 0 : _d.type) === 'StringLiteral') {
|
|
30
|
+
nodeToReplaceValue = attribute.node.value;
|
|
31
|
+
}
|
|
32
|
+
if (nodeToReplaceValue) {
|
|
33
|
+
var newValue = sizesMap[nodeToReplaceValue.value];
|
|
34
|
+
if (newValue) {
|
|
35
|
+
nodeToReplaceValue.value = newValue;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
(0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"size\" prop."));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.remapSizePropValue = remapSizePropValue;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.swapGapPropElements = void 0;
|
|
4
|
+
var swapGapPropElements = function (j, source, componentName) {
|
|
5
|
+
source
|
|
6
|
+
.find(j.JSXOpeningElement)
|
|
7
|
+
.filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === componentName; })
|
|
8
|
+
.forEach(function (path) {
|
|
9
|
+
var attributes = path.node.attributes;
|
|
10
|
+
var gapAttribute = attributes === null || attributes === void 0 ? void 0 : attributes.find(function (attr) { return attr.type === 'JSXAttribute' && attr.name.name === 'gap'; });
|
|
11
|
+
if (gapAttribute &&
|
|
12
|
+
gapAttribute.value &&
|
|
13
|
+
gapAttribute.value.type === 'JSXExpressionContainer') {
|
|
14
|
+
var expression = gapAttribute.value.expression;
|
|
15
|
+
if (expression.type === 'ArrayExpression' && expression.elements.length === 2) {
|
|
16
|
+
// Меняем местами элементы массива
|
|
17
|
+
var _a = expression.elements, first = _a[0], second = _a[1];
|
|
18
|
+
if (first && second) {
|
|
19
|
+
expression.elements = [second, first];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
exports.swapGapPropElements = swapGapPropElements;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
var report_1 = require("../../report");
|
|
7
|
+
exports.parser = 'tsx';
|
|
8
|
+
var CONFIG_PROVIDER_NAME = 'ConfigProvider';
|
|
9
|
+
var CONFIG_PROVIDER_PROPS_NAME = 'ConfigProviderProps';
|
|
10
|
+
var CONFIG_PROVIDER_CONTEXT_NAME = 'ConfigProviderContext';
|
|
11
|
+
var USE_CONFIG_PROVIDER_NAME = 'useConfigProvider';
|
|
12
|
+
function transformer(file, api, options) {
|
|
13
|
+
var alias = options.alias;
|
|
14
|
+
var j = api.jscodeshift;
|
|
15
|
+
var source = j(file.source);
|
|
16
|
+
var configProviderName = (0, codemod_helpers_1.getImportInfo)(j, file, CONFIG_PROVIDER_NAME, alias).localName;
|
|
17
|
+
var configProviderPropsName = (0, codemod_helpers_1.getImportInfo)(j, file, CONFIG_PROVIDER_PROPS_NAME, alias).localName;
|
|
18
|
+
var configProviderContextName = (0, codemod_helpers_1.getImportInfo)(j, file, CONFIG_PROVIDER_CONTEXT_NAME, alias).localName;
|
|
19
|
+
var useConfigProviderName = (0, codemod_helpers_1.getImportInfo)(j, file, USE_CONFIG_PROVIDER_NAME, alias).localName;
|
|
20
|
+
if (!configProviderName &&
|
|
21
|
+
!configProviderPropsName &&
|
|
22
|
+
!configProviderContextName &&
|
|
23
|
+
!useConfigProviderName) {
|
|
24
|
+
return source.toSource();
|
|
25
|
+
}
|
|
26
|
+
if (configProviderName) {
|
|
27
|
+
handleConfigProvider(j, api, source, configProviderName);
|
|
28
|
+
}
|
|
29
|
+
if (configProviderContextName) {
|
|
30
|
+
handleConfigProviderContext(j, api, source, configProviderContextName);
|
|
31
|
+
}
|
|
32
|
+
if (useConfigProviderName) {
|
|
33
|
+
handleUseConfigProvider(j, api, source, useConfigProviderName);
|
|
34
|
+
}
|
|
35
|
+
if (configProviderPropsName) {
|
|
36
|
+
handleConfigProviderProps(j, api, source, configProviderPropsName);
|
|
37
|
+
}
|
|
38
|
+
return source.toSource();
|
|
39
|
+
}
|
|
40
|
+
function handleConfigProviderProps(j, api, source, localName) {
|
|
41
|
+
var showReport = function () {
|
|
42
|
+
(0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\" in object."));
|
|
43
|
+
};
|
|
44
|
+
var types = source.find(j.TSTypeReference, {
|
|
45
|
+
typeName: { type: 'Identifier', name: localName },
|
|
46
|
+
});
|
|
47
|
+
if (types.length) {
|
|
48
|
+
showReport();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function handleUseConfigProvider(j, api, source, localName) {
|
|
52
|
+
var showReport = function () {
|
|
53
|
+
(0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\" in result of hook."));
|
|
54
|
+
};
|
|
55
|
+
var identifiers = source.find(j.Identifier, {
|
|
56
|
+
name: localName,
|
|
57
|
+
});
|
|
58
|
+
if (identifiers.length) {
|
|
59
|
+
showReport();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function handleConfigProvider(j, api, source, localName) {
|
|
63
|
+
var showReport = function () {
|
|
64
|
+
(0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\"."));
|
|
65
|
+
};
|
|
66
|
+
source
|
|
67
|
+
.find(j.JSXElement, {
|
|
68
|
+
openingElement: {
|
|
69
|
+
name: {
|
|
70
|
+
name: localName,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
})
|
|
74
|
+
.forEach(function (path) {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
var appearanceAttribute = (_a = path.node.openingElement.attributes) === null || _a === void 0 ? void 0 : _a.find(function (attr) { return attr.type === 'JSXAttribute' && attr.name && attr.name.name === 'appearance'; });
|
|
77
|
+
if (appearanceAttribute) {
|
|
78
|
+
appearanceAttribute.name = j.jsxIdentifier('colorScheme');
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
var spreadAttribute = (_b = path.node.openingElement.attributes) === null || _b === void 0 ? void 0 : _b.find(function (attr) { return attr.type === 'JSXSpreadAttribute'; });
|
|
82
|
+
if (spreadAttribute) {
|
|
83
|
+
showReport();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
return;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function handleConfigProviderContext(j, api, source, localName) {
|
|
90
|
+
var showReport = function () {
|
|
91
|
+
(0, report_1.report)(api, ": \"".concat(localName, "\" has been changed. Manual changes required: perhaps need to rename \"appearance\" field to \"colorScheme\"."));
|
|
92
|
+
};
|
|
93
|
+
source
|
|
94
|
+
.find(j.JSXElement, {
|
|
95
|
+
openingElement: {
|
|
96
|
+
name: {
|
|
97
|
+
object: { name: localName },
|
|
98
|
+
property: { name: 'Provider' },
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
})
|
|
102
|
+
.forEach(function (path) {
|
|
103
|
+
var _a, _b;
|
|
104
|
+
var valueAttribute = (_a = path.node.openingElement.attributes) === null || _a === void 0 ? void 0 : _a.find(function (attr) { return attr.type === 'JSXAttribute' && attr.name && attr.name.name === 'value'; });
|
|
105
|
+
if (!valueAttribute) {
|
|
106
|
+
showReport();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
var valueExpression = ((_b = valueAttribute.value) === null || _b === void 0 ? void 0 : _b.type) === 'JSXExpressionContainer'
|
|
110
|
+
? valueAttribute.value.expression
|
|
111
|
+
: undefined;
|
|
112
|
+
if (!valueExpression) {
|
|
113
|
+
showReport();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (valueExpression.type === 'Identifier') {
|
|
117
|
+
showReport();
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (valueExpression.type === 'ObjectExpression') {
|
|
121
|
+
var appearanceProp = valueExpression.properties.find(function (prop) {
|
|
122
|
+
return prop.type === 'ObjectProperty' &&
|
|
123
|
+
prop.key.type === 'Identifier' &&
|
|
124
|
+
prop.key.name === 'appearance';
|
|
125
|
+
});
|
|
126
|
+
if (!appearanceProp) {
|
|
127
|
+
showReport();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
appearanceProp.key = j.identifier('colorScheme');
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
showReport();
|
|
134
|
+
return;
|
|
135
|
+
});
|
|
136
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
exports.parser = 'tsx';
|
|
7
|
+
function transformer(file, api, options) {
|
|
8
|
+
var alias = options.alias;
|
|
9
|
+
var j = api.jscodeshift;
|
|
10
|
+
var source = j(file.source);
|
|
11
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'ContentCard', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, {
|
|
14
|
+
subtitle: 'overTitle',
|
|
15
|
+
header: 'title',
|
|
16
|
+
text: 'description',
|
|
17
|
+
headerComponent: 'titleComponent',
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return source.toSource();
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
exports.parser = 'tsx';
|
|
7
|
+
var PROPS_TO_REMOVE = ['windowResize', 'autoHideScrollbar', 'autoHideScrollbarDelay'];
|
|
8
|
+
function transformer(file, api, options) {
|
|
9
|
+
var alias = options.alias;
|
|
10
|
+
var j = api.jscodeshift;
|
|
11
|
+
var source = j(file.source);
|
|
12
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'CustomScrollView', alias).localName;
|
|
13
|
+
if (!localName) {
|
|
14
|
+
return source.toSource();
|
|
15
|
+
}
|
|
16
|
+
(0, codemod_helpers_1.removeProps)(j, api, source, localName, PROPS_TO_REMOVE, function () {
|
|
17
|
+
return "need to remove props ".concat(PROPS_TO_REMOVE.join(', '));
|
|
18
|
+
});
|
|
19
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { boxRef: 'getRootRef' });
|
|
20
|
+
return source.toSource();
|
|
21
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
exports.parser = 'tsx';
|
|
7
|
+
var PROPS_TO_REMOVE = ['autoHideScrollbar', 'autoHideScrollbarDelay'];
|
|
8
|
+
function transformer(file, api, options) {
|
|
9
|
+
var alias = options.alias;
|
|
10
|
+
var j = api.jscodeshift;
|
|
11
|
+
var source = j(file.source);
|
|
12
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'CustomSelect', alias).localName;
|
|
13
|
+
if (!localName) {
|
|
14
|
+
return source.toSource();
|
|
15
|
+
}
|
|
16
|
+
(0, codemod_helpers_1.removeProps)(j, api, source, localName, PROPS_TO_REMOVE, function () {
|
|
17
|
+
return "need to remove props ".concat(PROPS_TO_REMOVE.join(', '));
|
|
18
|
+
});
|
|
19
|
+
return source.toSource();
|
|
20
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var swapGapPropElements_1 = require("./common/swapGapPropElements");
|
|
6
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
7
|
+
exports.parser = 'tsx';
|
|
8
|
+
function transformer(file, api, options) {
|
|
9
|
+
var alias = options.alias;
|
|
10
|
+
var j = api.jscodeshift;
|
|
11
|
+
var source = j(file.source);
|
|
12
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'Flex', alias).localName;
|
|
13
|
+
if (!localName) {
|
|
14
|
+
return source.toSource();
|
|
15
|
+
}
|
|
16
|
+
(0, swapGapPropElements_1.swapGapPropElements)(j, source, localName);
|
|
17
|
+
return source.toSource();
|
|
18
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
exports.parser = 'tsx';
|
|
7
|
+
function transformer(file, api, options) {
|
|
8
|
+
var alias = options.alias;
|
|
9
|
+
var j = api.jscodeshift;
|
|
10
|
+
var source = j(file.source);
|
|
11
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'FormItem', alias).localName;
|
|
12
|
+
if (!localName) {
|
|
13
|
+
return source.toSource();
|
|
14
|
+
}
|
|
15
|
+
function processTopLabel(element) {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
if (element.openingElement.name.type === 'JSXMemberExpression' &&
|
|
18
|
+
((_a = element.openingElement.name.property) === null || _a === void 0 ? void 0 : _a.name) === 'TopLabel') {
|
|
19
|
+
var multilineValue_1;
|
|
20
|
+
element.openingElement.attributes = (_b = element.openingElement.attributes) === null || _b === void 0 ? void 0 : _b.filter(function (attr) {
|
|
21
|
+
var _a;
|
|
22
|
+
if (attr.type === 'JSXAttribute' && attr.name.name === 'multiline') {
|
|
23
|
+
if (!attr.value) {
|
|
24
|
+
multilineValue_1 = true;
|
|
25
|
+
}
|
|
26
|
+
else if (((_a = attr.value) === null || _a === void 0 ? void 0 : _a.type) === 'JSXExpressionContainer') {
|
|
27
|
+
multilineValue_1 = attr.value;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
});
|
|
33
|
+
return multilineValue_1;
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
function findTopLabelRecursive(element) {
|
|
38
|
+
var result = processTopLabel(element);
|
|
39
|
+
if (result !== undefined) {
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
if (!element.children) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
for (var _i = 0, _a = element.children; _i < _a.length; _i++) {
|
|
46
|
+
var child = _a[_i];
|
|
47
|
+
if (child.type === 'JSXElement') {
|
|
48
|
+
result = findTopLabelRecursive(child);
|
|
49
|
+
if (result !== undefined) {
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
source.find(j.JSXElement, { openingElement: { name: { name: localName } } }).forEach(function (path) {
|
|
57
|
+
var formItem = path.node;
|
|
58
|
+
var topMultiline;
|
|
59
|
+
var topLabelMultiline;
|
|
60
|
+
var formItemAttributes = formItem.openingElement.attributes;
|
|
61
|
+
var prettifyTopMultilineAttribute = function () {
|
|
62
|
+
var _a;
|
|
63
|
+
// Избавляемся от лишнего:
|
|
64
|
+
// если topMultiline={false} можно убрать аттрибут
|
|
65
|
+
// если topMultiline={true} можно убрать {true}
|
|
66
|
+
if (topMultiline && (formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.includes(topMultiline))) {
|
|
67
|
+
if (((_a = topMultiline === null || topMultiline === void 0 ? void 0 : topMultiline.value) === null || _a === void 0 ? void 0 : _a.type) === 'JSXExpressionContainer' &&
|
|
68
|
+
topMultiline.value.expression.type === 'BooleanLiteral') {
|
|
69
|
+
if (topMultiline.value.expression.value) {
|
|
70
|
+
topMultiline.value = null;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
formItemAttributes.splice(formItemAttributes.indexOf(topMultiline), 1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
// Проверяем существующий topMultiline проп
|
|
79
|
+
formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.forEach(function (attr) {
|
|
80
|
+
if (attr.type === 'JSXAttribute' && attr.name.name === 'topMultiline') {
|
|
81
|
+
topMultiline = attr;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// Ищем FormItem.TopLabel в пропе top и topNode
|
|
85
|
+
formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.forEach(function (attr) {
|
|
86
|
+
var _a, _b;
|
|
87
|
+
if (attr.type === 'JSXAttribute' &&
|
|
88
|
+
(attr.name.name === 'top' || attr.name.name === 'topNode')) {
|
|
89
|
+
if (((_a = attr.value) === null || _a === void 0 ? void 0 : _a.type) === 'JSXElement') {
|
|
90
|
+
topLabelMultiline = findTopLabelRecursive(attr.value);
|
|
91
|
+
}
|
|
92
|
+
else if (((_b = attr.value) === null || _b === void 0 ? void 0 : _b.type) === 'JSXExpressionContainer' &&
|
|
93
|
+
attr.value.expression.type === 'JSXElement') {
|
|
94
|
+
topLabelMultiline = findTopLabelRecursive(attr.value.expression);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
// Ищем FormItem.TopLabel в children
|
|
99
|
+
if (topLabelMultiline === undefined && formItem.children) {
|
|
100
|
+
for (var _i = 0, _a = formItem.children; _i < _a.length; _i++) {
|
|
101
|
+
var child = _a[_i];
|
|
102
|
+
if (child.type === 'JSXElement') {
|
|
103
|
+
topLabelMultiline = findTopLabelRecursive(child);
|
|
104
|
+
if (topLabelMultiline !== undefined) {
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (!topLabelMultiline) {
|
|
111
|
+
prettifyTopMultilineAttribute();
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
var newTopMultilineValue = topLabelMultiline === true ? null : topLabelMultiline;
|
|
115
|
+
// Обновляем или добавляем topMultiline проп
|
|
116
|
+
if (topMultiline) {
|
|
117
|
+
// Если у FormItem задан topMultiline -> переопределяем
|
|
118
|
+
topMultiline.value = newTopMultilineValue;
|
|
119
|
+
}
|
|
120
|
+
else if (topLabelMultiline) {
|
|
121
|
+
// Если у FormItem не задан topMultiline
|
|
122
|
+
// добавляем его в аргументы
|
|
123
|
+
formItemAttributes === null || formItemAttributes === void 0 ? void 0 : formItemAttributes.push(j.jsxAttribute(j.jsxIdentifier('topMultiline'), newTopMultilineValue));
|
|
124
|
+
}
|
|
125
|
+
prettifyTopMultilineAttribute();
|
|
126
|
+
});
|
|
127
|
+
return source.toSource();
|
|
128
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
exports.parser = 'tsx';
|
|
7
|
+
function transformer(file, api, options) {
|
|
8
|
+
var alias = options.alias;
|
|
9
|
+
var j = api.jscodeshift;
|
|
10
|
+
var source = j(file.source);
|
|
11
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'FormStatus', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, {
|
|
14
|
+
header: 'title',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return source.toSource();
|
|
18
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var remapSizePropValue_1 = require("./common/remapSizePropValue");
|
|
6
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
7
|
+
exports.parser = 'tsx';
|
|
8
|
+
function transformer(file, api, options) {
|
|
9
|
+
var alias = options.alias;
|
|
10
|
+
var j = api.jscodeshift;
|
|
11
|
+
var source = j(file.source);
|
|
12
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'Header', alias).localName;
|
|
13
|
+
if (!localName) {
|
|
14
|
+
return source.toSource();
|
|
15
|
+
}
|
|
16
|
+
(0, remapSizePropValue_1.remapSizePropValue)({
|
|
17
|
+
j: j,
|
|
18
|
+
api: api,
|
|
19
|
+
source: source,
|
|
20
|
+
componentName: localName,
|
|
21
|
+
sizesMap: {
|
|
22
|
+
large: 'l',
|
|
23
|
+
regular: 'm',
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { aside: 'after' });
|
|
27
|
+
return source.toSource();
|
|
28
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
var report_1 = require("../../report");
|
|
7
|
+
exports.parser = 'tsx';
|
|
8
|
+
var componentName = 'HorizontalCellShowMore';
|
|
9
|
+
function compensateLastCellIndentManipulator(api, attribute) {
|
|
10
|
+
var node = attribute.node;
|
|
11
|
+
if (!node.value) {
|
|
12
|
+
api.jscodeshift(attribute).remove();
|
|
13
|
+
}
|
|
14
|
+
else if (node.value.type === 'JSXExpressionContainer' &&
|
|
15
|
+
node.value.expression.type === 'BooleanLiteral') {
|
|
16
|
+
api.jscodeshift(attribute).remove();
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
(0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"compensateLastCellIndent\" prop. You might not need it anymore."));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function sizeManipulator(api, attribute) {
|
|
23
|
+
var _a;
|
|
24
|
+
var node = attribute.node;
|
|
25
|
+
if (((_a = node.value) === null || _a === void 0 ? void 0 : _a.type) === 'StringLiteral') {
|
|
26
|
+
if (node.value.value !== 's') {
|
|
27
|
+
node.value = api.jscodeshift.stringLiteral('m');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
(0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"size\" prop. Use \"s\" or \"m\" value only."));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function transformer(file, api, options) {
|
|
35
|
+
var alias = options.alias;
|
|
36
|
+
var j = api.jscodeshift;
|
|
37
|
+
var source = j(file.source);
|
|
38
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, componentName, alias).localName;
|
|
39
|
+
if (!localName) {
|
|
40
|
+
return source.toSource();
|
|
41
|
+
}
|
|
42
|
+
source
|
|
43
|
+
.find(j.JSXOpeningElement)
|
|
44
|
+
.filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === localName; })
|
|
45
|
+
.find(j.JSXAttribute, function (attribute) {
|
|
46
|
+
return attribute.name.name === 'compensateLastCellIndent' || attribute.name.name === 'size';
|
|
47
|
+
})
|
|
48
|
+
.forEach(function (attribute) {
|
|
49
|
+
var attributeName = attribute.node.name.name;
|
|
50
|
+
if (attributeName === 'compensateLastCellIndent') {
|
|
51
|
+
compensateLastCellIndentManipulator(api, attribute);
|
|
52
|
+
}
|
|
53
|
+
else if (attributeName === 'size') {
|
|
54
|
+
sizeManipulator(api, attribute);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return source.toSource();
|
|
58
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
exports.parser = 'tsx';
|
|
7
|
+
function transformer(file, api, options) {
|
|
8
|
+
var alias = options.alias;
|
|
9
|
+
var j = api.jscodeshift;
|
|
10
|
+
var source = j(file.source);
|
|
11
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'HorizontalCell', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { header: 'title' });
|
|
14
|
+
}
|
|
15
|
+
return source.toSource();
|
|
16
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parser = void 0;
|
|
4
|
+
exports.default = transformer;
|
|
5
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
var report_1 = require("../../report");
|
|
7
|
+
exports.parser = 'tsx';
|
|
8
|
+
var componentName = 'HorizontalScroll';
|
|
9
|
+
function transformer(file, api, options) {
|
|
10
|
+
var alias = options.alias;
|
|
11
|
+
var j = api.jscodeshift;
|
|
12
|
+
var source = j(file.source);
|
|
13
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, componentName, alias).localName;
|
|
14
|
+
if (!localName) {
|
|
15
|
+
return source.toSource();
|
|
16
|
+
}
|
|
17
|
+
source
|
|
18
|
+
.find(j.JSXOpeningElement)
|
|
19
|
+
.filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === localName; })
|
|
20
|
+
.find(j.JSXAttribute)
|
|
21
|
+
.filter(function (attribute) { return attribute.node.name.name === 'inline'; })
|
|
22
|
+
.forEach(function (attribute) {
|
|
23
|
+
var node = attribute.node;
|
|
24
|
+
if (!node.value) {
|
|
25
|
+
j(attribute).remove();
|
|
26
|
+
}
|
|
27
|
+
else if (node.value.type === 'JSXExpressionContainer' &&
|
|
28
|
+
node.value.expression.type === 'BooleanLiteral') {
|
|
29
|
+
if (node.value.expression.value) {
|
|
30
|
+
j(attribute).remove();
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
(0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"inline\" prop."));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return source.toSource();
|
|
38
|
+
}
|