@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,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parser = void 0;
|
|
7
|
+
exports.default = transformer;
|
|
8
|
+
var chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
var codemod_helpers_1 = require("../../codemod-helpers");
|
|
10
|
+
var report_1 = require("../../report");
|
|
11
|
+
exports.parser = 'tsx';
|
|
12
|
+
function transformer(file, api, options) {
|
|
13
|
+
var alias = options.alias;
|
|
14
|
+
var j = api.jscodeshift;
|
|
15
|
+
var source = j(file.source);
|
|
16
|
+
var ImageLocalName = (0, codemod_helpers_1.getImportInfo)(j, file, 'Image', alias).localName;
|
|
17
|
+
var ImageBaseLocalName = (0, codemod_helpers_1.getImportInfo)(j, file, 'ImageBase', alias).localName;
|
|
18
|
+
if (!ImageLocalName && !ImageBaseLocalName) {
|
|
19
|
+
return source.toSource();
|
|
20
|
+
}
|
|
21
|
+
var findAttribute = function (attributes, attributeName) {
|
|
22
|
+
return ((attributes === null || attributes === void 0 ? void 0 : attributes.find(function (attr) {
|
|
23
|
+
return attr.type === 'JSXAttribute' && attr.name.name === attributeName;
|
|
24
|
+
})) || null);
|
|
25
|
+
};
|
|
26
|
+
var showReport = function (localName, additionalMessage) {
|
|
27
|
+
(0, report_1.report)(api, ": ".concat(chalk_1.default.white.bgBlue("".concat(localName, ".Overlay")), " has been changed. Manual changes required: ").concat(additionalMessage));
|
|
28
|
+
};
|
|
29
|
+
var showDisableInteractivePropReport = function (localName) {
|
|
30
|
+
showReport(localName, "\"disableInteractive\" has been removed, please use \"onClick\" if you want to make ".concat(localName, ".Overlay interactive."));
|
|
31
|
+
};
|
|
32
|
+
var calcDisableInteractiveValue = function (disableInteractiveAttribute) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
if (((_a = disableInteractiveAttribute.value) === null || _a === void 0 ? void 0 : _a.type) === 'BooleanLiteral') {
|
|
35
|
+
return disableInteractiveAttribute.value.value;
|
|
36
|
+
}
|
|
37
|
+
else if (disableInteractiveAttribute.value === null) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
else if (((_b = disableInteractiveAttribute.value) === null || _b === void 0 ? void 0 : _b.type) === 'JSXExpressionContainer') {
|
|
41
|
+
var expression = disableInteractiveAttribute.value.expression;
|
|
42
|
+
if (expression.type === 'BooleanLiteral') {
|
|
43
|
+
return expression.value;
|
|
44
|
+
}
|
|
45
|
+
if (expression.type === 'Identifier' && expression.name === 'undefined') {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
};
|
|
51
|
+
var handleImageComponent = function (localName) {
|
|
52
|
+
source
|
|
53
|
+
.find(j.JSXElement, {
|
|
54
|
+
openingElement: {
|
|
55
|
+
name: {
|
|
56
|
+
type: 'JSXMemberExpression',
|
|
57
|
+
object: { name: localName },
|
|
58
|
+
property: { name: 'Overlay' },
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
})
|
|
62
|
+
.forEach(function (path) {
|
|
63
|
+
var _a;
|
|
64
|
+
var overlay = path.node;
|
|
65
|
+
var overlayItemAttributes = overlay.openingElement.attributes;
|
|
66
|
+
var onClickAttribute = findAttribute(overlayItemAttributes, 'onClick');
|
|
67
|
+
var disableInteractiveAttribute = findAttribute(overlayItemAttributes, 'disableInteractive');
|
|
68
|
+
// Кейс, когда disableInteractive не был задан, значит overlay interactive.
|
|
69
|
+
// Сейчас у него обязательно должен быть onClick, чтобы не лоймать обратную совместимость
|
|
70
|
+
if (!disableInteractiveAttribute) {
|
|
71
|
+
// Проверяем наличие onClick, и если его нет, то пользователь должен добавить onClick
|
|
72
|
+
if (!onClickAttribute) {
|
|
73
|
+
showReport(localName, "If you want to make ".concat(localName, ".Overlay interactive, please add \"onClick\" prop."));
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Рассчитываем значение disableInteractive в boolean
|
|
78
|
+
var disableInteractiveValue = calcDisableInteractiveValue(disableInteractiveAttribute);
|
|
79
|
+
if (disableInteractiveValue === null) {
|
|
80
|
+
// Если у disableInteractive используется сложное выражение,
|
|
81
|
+
// то пользователь сам должен удалить этот проп, как ему нужно
|
|
82
|
+
showDisableInteractivePropReport(localName);
|
|
83
|
+
}
|
|
84
|
+
// Удаляем аттрибут disableInteractive
|
|
85
|
+
(0, codemod_helpers_1.removeAttribute)(overlayItemAttributes, disableInteractiveAttribute);
|
|
86
|
+
if (disableInteractiveValue) {
|
|
87
|
+
// Если disableInteractive = true, то все, что нам нужно, это удалить атрибут onClick
|
|
88
|
+
// Важно: мы можем его спокойно удалить, так как в этом кейсе он может быть только undefined
|
|
89
|
+
if (onClickAttribute) {
|
|
90
|
+
(0, codemod_helpers_1.removeAttribute)(overlayItemAttributes, onClickAttribute);
|
|
91
|
+
}
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (!onClickAttribute) {
|
|
95
|
+
// Если disableInteractive = false и onClick пропа нет, то пользователь должен его добавить
|
|
96
|
+
showDisableInteractivePropReport(localName);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// Если disableInteractive = false и onClick не пустой, надо обработать следующие кейсы:
|
|
100
|
+
// onClick=undefined: надо добавить колбэк
|
|
101
|
+
// onClick=identifier: все хорошо, оставляем как есть
|
|
102
|
+
// В остальных случаях надо, чтобы пользователь убедился, что onClick устанавливается корректно
|
|
103
|
+
if (((_a = onClickAttribute.value) === null || _a === void 0 ? void 0 : _a.type) === 'JSXExpressionContainer') {
|
|
104
|
+
var expression = onClickAttribute.value.expression;
|
|
105
|
+
if (expression.type === 'Identifier') {
|
|
106
|
+
if (expression.name === 'undefined') {
|
|
107
|
+
showDisableInteractivePropReport(localName);
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (expression.type === 'ArrowFunctionExpression') {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
showReport(localName, "\"disableInteractive\" has been removed, please validate that \"onClick\" prop value not falsy.");
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
if (ImageLocalName) {
|
|
119
|
+
handleImageComponent(ImageLocalName);
|
|
120
|
+
}
|
|
121
|
+
if (ImageBaseLocalName) {
|
|
122
|
+
handleImageComponent(ImageBaseLocalName);
|
|
123
|
+
}
|
|
124
|
+
return source.toSource();
|
|
125
|
+
}
|
|
@@ -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, 'MiniInfoCell', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, {
|
|
14
|
+
expandable: 'chevron',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return source.toSource();
|
|
18
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
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 RENAME_MAP = {
|
|
8
|
+
header: 'title',
|
|
9
|
+
subheader: 'description',
|
|
10
|
+
headerComponent: 'titleComponent',
|
|
11
|
+
subheaderComponent: 'descriptionComponent',
|
|
12
|
+
};
|
|
13
|
+
function transformer(file, api, options) {
|
|
14
|
+
var alias = options.alias;
|
|
15
|
+
var j = api.jscodeshift;
|
|
16
|
+
var source = j(file.source);
|
|
17
|
+
var modalCardName = (0, codemod_helpers_1.getImportInfo)(j, file, 'ModalCard', alias).localName;
|
|
18
|
+
var modalCardBaseName = (0, codemod_helpers_1.getImportInfo)(j, file, 'ModalCardBase', alias).localName;
|
|
19
|
+
if (!modalCardName && !modalCardBaseName) {
|
|
20
|
+
return source.toSource();
|
|
21
|
+
}
|
|
22
|
+
if (modalCardName) {
|
|
23
|
+
(0, codemod_helpers_1.renameProp)(j, source, modalCardName, RENAME_MAP);
|
|
24
|
+
}
|
|
25
|
+
if (modalCardBaseName) {
|
|
26
|
+
(0, codemod_helpers_1.renameProp)(j, source, modalCardBaseName, RENAME_MAP);
|
|
27
|
+
}
|
|
28
|
+
return source.toSource();
|
|
29
|
+
}
|
|
@@ -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, 'OnboardingTooltip', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { text: 'description', header: 'title' });
|
|
14
|
+
}
|
|
15
|
+
return source.toSource();
|
|
16
|
+
}
|
|
@@ -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, 'PanelHeaderContent', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { status: 'subtitle' });
|
|
14
|
+
}
|
|
15
|
+
return source.toSource();
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
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, 'Placeholder', alias).localName;
|
|
12
|
+
if (!localName) {
|
|
13
|
+
return source.toSource();
|
|
14
|
+
}
|
|
15
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { header: 'title' });
|
|
16
|
+
(0, codemod_helpers_1.renameSubComponent)(j, source, localName, 'Header', 'Title');
|
|
17
|
+
(0, codemod_helpers_1.renameSubComponent)(j, source, localName, 'Text', 'Description');
|
|
18
|
+
return source.toSource();
|
|
19
|
+
}
|
|
@@ -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
|
+
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, 'RichCell', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, {
|
|
14
|
+
subhead: 'overTitle',
|
|
15
|
+
text: 'subtitle',
|
|
16
|
+
caption: 'extraSubtitle',
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return source.toSource();
|
|
20
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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, 'ScreenSpinner', alias).localName;
|
|
12
|
+
if (!localName) {
|
|
13
|
+
return source.toSource();
|
|
14
|
+
}
|
|
15
|
+
function removeSizeProp(attribute) {
|
|
16
|
+
if (attribute.node.name.name === 'size') {
|
|
17
|
+
j(attribute).remove();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function renameLabelToCaption(attribute) {
|
|
21
|
+
if (attribute.node.name.name === 'caption') {
|
|
22
|
+
j(attribute).replaceWith(j.jsxAttribute(j.jsxIdentifier('label'), attribute.node.value));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Обработка ScreenSpinner
|
|
26
|
+
source
|
|
27
|
+
.find(j.JSXOpeningElement)
|
|
28
|
+
.filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === localName; })
|
|
29
|
+
.find(j.JSXAttribute)
|
|
30
|
+
.forEach(function (attr) {
|
|
31
|
+
removeSizeProp(attr);
|
|
32
|
+
renameLabelToCaption(attr);
|
|
33
|
+
});
|
|
34
|
+
// Обработка ScreenSpinner.Loader
|
|
35
|
+
source
|
|
36
|
+
.find(j.JSXElement, {
|
|
37
|
+
openingElement: {
|
|
38
|
+
name: {
|
|
39
|
+
type: 'JSXMemberExpression',
|
|
40
|
+
object: { name: localName },
|
|
41
|
+
property: { name: 'Loader' },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
})
|
|
45
|
+
.find(j.JSXAttribute)
|
|
46
|
+
.forEach(removeSizeProp);
|
|
47
|
+
// Обработка ScreenSpinner.Container
|
|
48
|
+
source
|
|
49
|
+
.find(j.JSXElement, {
|
|
50
|
+
openingElement: {
|
|
51
|
+
name: {
|
|
52
|
+
type: 'JSXMemberExpression',
|
|
53
|
+
object: { name: localName },
|
|
54
|
+
property: { name: 'Container' },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
})
|
|
58
|
+
.find(j.JSXAttribute)
|
|
59
|
+
.forEach(renameLabelToCaption);
|
|
60
|
+
return source.toSource();
|
|
61
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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 = 'ScrollArrow';
|
|
9
|
+
var affectedComponents = ['HorizontalScroll', 'Gallery'];
|
|
10
|
+
function arrowSizeManipulator(api, attribute) {
|
|
11
|
+
var _a;
|
|
12
|
+
var node = attribute.node;
|
|
13
|
+
if (((_a = node.value) === null || _a === void 0 ? void 0 : _a.type) === 'StringLiteral') {
|
|
14
|
+
var oldValue = node.value.value;
|
|
15
|
+
var newValue = oldValue === 'm' ? 's' : oldValue === 'l' ? 'm' : undefined;
|
|
16
|
+
if (newValue) {
|
|
17
|
+
node.value = api.jscodeshift.stringLiteral(newValue);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
(0, report_1.report)(api, "Manual changes required for ".concat(componentName, "'s \"size\" prop. Use \"s\" or \"m\" value only."));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function transformer(file, api, options) {
|
|
25
|
+
var alias = options.alias;
|
|
26
|
+
var j = api.jscodeshift;
|
|
27
|
+
var source = j(file.source);
|
|
28
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, componentName, alias).localName;
|
|
29
|
+
var horizontalScrollLocalName = (0, codemod_helpers_1.getImportInfo)(j, file, affectedComponents[0], alias).localName;
|
|
30
|
+
var galleryLocalName = (0, codemod_helpers_1.getImportInfo)(j, file, affectedComponents[1], alias).localName;
|
|
31
|
+
if (!localName) {
|
|
32
|
+
return source.toSource();
|
|
33
|
+
}
|
|
34
|
+
source
|
|
35
|
+
.find(j.JSXOpeningElement)
|
|
36
|
+
.filter(function (path) { return path.value.name.type === 'JSXIdentifier' && path.value.name.name === localName; })
|
|
37
|
+
.find(j.JSXAttribute, { name: { name: 'size' } })
|
|
38
|
+
.forEach(function (attribute) {
|
|
39
|
+
arrowSizeManipulator(api, attribute);
|
|
40
|
+
});
|
|
41
|
+
source
|
|
42
|
+
.find(j.JSXOpeningElement)
|
|
43
|
+
.filter(function (path) {
|
|
44
|
+
return path.value.name.type === 'JSXIdentifier' &&
|
|
45
|
+
[horizontalScrollLocalName, galleryLocalName].includes(path.value.name.name);
|
|
46
|
+
})
|
|
47
|
+
.find(j.JSXAttribute, { name: { name: 'arrowSize' } })
|
|
48
|
+
.forEach(function (attribute) {
|
|
49
|
+
arrowSizeManipulator(api, attribute);
|
|
50
|
+
});
|
|
51
|
+
return source.toSource();
|
|
52
|
+
}
|
|
@@ -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, 'Select', 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 codemod_helpers_1 = require("../../codemod-helpers");
|
|
6
|
+
exports.parser = 'tsx';
|
|
7
|
+
var componentName = 'Separator';
|
|
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, componentName, alias).localName;
|
|
13
|
+
if (localName) {
|
|
14
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { mode: 'appearance' });
|
|
15
|
+
(0, codemod_helpers_1.swapBooleanValue)(api, source, localName, 'wide', 'padding');
|
|
16
|
+
}
|
|
17
|
+
return source.toSource();
|
|
18
|
+
}
|
|
@@ -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, 'SimpleCell', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, {
|
|
14
|
+
expandable: 'chevron',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return source.toSource();
|
|
18
|
+
}
|
|
@@ -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, 'SimpleGrid', 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,26 @@
|
|
|
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, 'Spacing', 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
|
+
'3xs': '2xs',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
return source.toSource();
|
|
26
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
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, 'Spinner', 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: 'xl',
|
|
23
|
+
medium: 'l',
|
|
24
|
+
regular: 'm',
|
|
25
|
+
small: 's',
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
return source.toSource();
|
|
29
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
function replaceModeToFixed(j, source, api, localName) {
|
|
9
|
+
var getValueFromAttribute = function (attribute) {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
if (((_a = attribute.value) === null || _a === void 0 ? void 0 : _a.type) === 'StringLiteral') {
|
|
12
|
+
return attribute.value.value;
|
|
13
|
+
}
|
|
14
|
+
if (((_b = attribute.value) === null || _b === void 0 ? void 0 : _b.type) === 'JSXExpressionContainer') {
|
|
15
|
+
var expression = attribute.value.expression;
|
|
16
|
+
if (expression.type === 'StringLiteral') {
|
|
17
|
+
return expression.value;
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
};
|
|
23
|
+
source
|
|
24
|
+
.find(j.JSXElement, {
|
|
25
|
+
openingElement: {
|
|
26
|
+
name: {
|
|
27
|
+
name: localName,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
})
|
|
31
|
+
.find(j.JSXAttribute)
|
|
32
|
+
.filter(function (attribute) { return attribute.node.name.name === 'mode'; })
|
|
33
|
+
.forEach(function (attr) {
|
|
34
|
+
var value = getValueFromAttribute(attr.node);
|
|
35
|
+
if (value === null) {
|
|
36
|
+
(0, report_1.report)(api, ": ".concat(localName, " has been changed. Manual changes required: change prop mode to flag fixed"));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (value === 'overflow') {
|
|
40
|
+
j(attr).remove();
|
|
41
|
+
}
|
|
42
|
+
else if (value === 'fixed') {
|
|
43
|
+
j(attr).replaceWith(j.jsxAttribute(j.jsxIdentifier('fixed')));
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function transformer(file, api, options) {
|
|
48
|
+
var alias = options.alias;
|
|
49
|
+
var j = api.jscodeshift;
|
|
50
|
+
var source = j(file.source);
|
|
51
|
+
var localName = (0, codemod_helpers_1.getImportInfo)(j, file, 'SubnavigationBar', alias).localName;
|
|
52
|
+
if (!localName) {
|
|
53
|
+
return source.toSource();
|
|
54
|
+
}
|
|
55
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, {
|
|
56
|
+
subheader: 'subtitle',
|
|
57
|
+
});
|
|
58
|
+
replaceModeToFixed(j, source, api, localName);
|
|
59
|
+
return source.toSource();
|
|
60
|
+
}
|
|
@@ -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, 'SubnavigationButton', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, {
|
|
14
|
+
expandable: 'chevron',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return source.toSource();
|
|
18
|
+
}
|
|
@@ -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, 'TabbarItem', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { text: 'label' });
|
|
14
|
+
}
|
|
15
|
+
return source.toSource();
|
|
16
|
+
}
|
|
@@ -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, 'Tooltip', alias).localName;
|
|
12
|
+
if (localName) {
|
|
13
|
+
(0, codemod_helpers_1.renameProp)(j, source, localName, { text: 'description', header: 'title' });
|
|
14
|
+
}
|
|
15
|
+
return source.toSource();
|
|
16
|
+
}
|