@elliemae/ds-legacy-codemods 1.0.0-rc.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/bin/cli/code-mods/cli.mjs +34 -0
- package/bin/cli/code-mods/command-arguments/promptCheckEmPackagesInconsistencies.mjs +22 -0
- package/bin/cli/code-mods/command-arguments/promptDeprecatedPackages.mjs +13 -0
- package/bin/cli/code-mods/command-arguments/promptFixLegacyImports.mjs +21 -0
- package/bin/cli/code-mods/command-arguments/promptHelpMigrateToV3.mjs +21 -0
- package/bin/cli/code-mods/command-arguments/promptMissingPackages.mjs +29 -0
- package/bin/cli/code-mods/command-logics/check-deprecated-packages/constants.mjs +87 -0
- package/bin/cli/code-mods/command-logics/check-deprecated-packages/getEmDsPackagesFromNPMLS.mjs +18 -0
- package/bin/cli/code-mods/command-logics/check-deprecated-packages/index.mjs +19 -0
- package/bin/cli/code-mods/command-logics/check-deprecated-packages/logResults.mjs +35 -0
- package/bin/cli/code-mods/command-logics/check-missing-packages/index.mjs +113 -0
- package/bin/cli/code-mods/command-logics/check-packages-inconsistencies/getPackageJsonEmDsVersions.mjs +43 -0
- package/bin/cli/code-mods/command-logics/check-packages-inconsistencies/index.mjs +96 -0
- package/bin/cli/code-mods/command-logics/execute-commands-map.mjs +31 -0
- package/bin/cli/code-mods/command-logics/fix-legacy-imports/index.mjs +29 -0
- package/bin/cli/code-mods/command-logics/fix-legacy-imports/legacyImportMap.mjs +105 -0
- package/bin/cli/code-mods/command-logics/help-migrate-to-v3/constants.mjs +284 -0
- package/bin/cli/code-mods/command-logics/help-migrate-to-v3/getSolutions.mjs +106 -0
- package/bin/cli/code-mods/command-logics/help-migrate-to-v3/index.mjs +90 -0
- package/bin/cli/code-mods/command-logics/help-migrate-to-v3/logMatch.mjs +39 -0
- package/bin/cli/code-mods/command-logics/help-migrate-to-v3/matchDsBasicImports.mjs +20 -0
- package/bin/cli/code-mods/command-logics/help-migrate-to-v3/replaceFromSolutions.mjs +15 -0
- package/bin/cli/code-mods/commands.mjs +11 -0
- package/bin/cli/code-mods/inquirer-questions-prompter.mjs +60 -0
- package/bin/cli/utils/CLI_COLORS.mjs +81 -0
- package/bin/cli/utils/generatePathFromCurrentFolder.mjs +11 -0
- package/bin/cli/utils/getLatestDimsumVersion.mjs +15 -0
- package/bin/cli/utils/globArray.mjs +11 -0
- package/bin/cli/utils/index.mjs +5 -0
- package/bin/cli/utils/matchHelpers.mjs +38 -0
- package/bin/cli/utils/replaceFromMap.mjs +15 -0
- package/bin/ds-codemods.mjs +4 -0
- package/package.json +55 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export const legacyImportMap = {
|
|
2
|
+
'@elliemae/ds-legacy-basic/dsaccordion': '@elliemae/ds-legacy-basic/Accordion',
|
|
3
|
+
'@elliemae/ds-legacy-basic/dsgroupbox': '@elliemae/ds-legacy-basic/GroupBox',
|
|
4
|
+
'@elliemae/ds-legacy-basic/dstruncatedtooltiptext': '@elliemae/ds-legacy-basic/TruncatedTooltipText',
|
|
5
|
+
'@elliemae/ds-legacy-basic/dsbutton': '@elliemae/ds-legacy-basic/Button',
|
|
6
|
+
'@elliemae/ds-legacy-basic/dsseparator': '@elliemae/ds-legacy-basic/Separator',
|
|
7
|
+
'@elliemae/ds-legacy-basic/dsicon': '@elliemae/ds-legacy-basic/Icon',
|
|
8
|
+
'@elliemae/ds-legacy-basic/dstabs': '@elliemae/ds-legacy-basic/Tabs',
|
|
9
|
+
'@elliemae/ds-legacy-basic/dstooltip': '@elliemae/ds-legacy-basic/Tooltip',
|
|
10
|
+
'@elliemae/ds-legacy-basic/dsbreadcrumb': '@elliemae/ds-legacy-basic/Breadcrumb',
|
|
11
|
+
'@elliemae/ds-legacy-basic/dspopper': '@elliemae/ds-legacy-basic/Popper',
|
|
12
|
+
'@elliemae/ds-legacy-basic/dszoom': '@elliemae/ds-legacy-basic/Zoom',
|
|
13
|
+
'@elliemae/ds-legacy-basic/dsbuttongroup': '@elliemae/ds-legacy-basic/ButtonGroup',
|
|
14
|
+
'@elliemae/ds-legacy-basic/dscard': '@elliemae/ds-legacy-basic/Card',
|
|
15
|
+
'@elliemae/ds-legacy-basic/dstimepicker': '@elliemae/ds-legacy-basic/TimePicker',
|
|
16
|
+
'@elliemae/ds-legacy-basic/dshidden': '@elliemae/ds-legacy-basic/Hidden',
|
|
17
|
+
'@elliemae/ds-legacy-basic/dsindeterminateprogressindicator': '@elliemae/ds-legacy-basic/IndeterminateProgressIndicator',
|
|
18
|
+
'@elliemae/ds-legacy-basic/dsloadingindicator': '@elliemae/ds-legacy-basic/LoadingIndicator',
|
|
19
|
+
'@elliemae/ds-legacy-basic/dsmenu': '@elliemae/ds-legacy-basic/Menu',
|
|
20
|
+
'@elliemae/ds-legacy-basic/dsoverlay': '@elliemae/ds-legacy-basic/Overlay',
|
|
21
|
+
'@elliemae/ds-legacy-basic/dspageheader': '@elliemae/ds-legacy-basic/PageHeader',
|
|
22
|
+
'@elliemae/ds-legacy-basic/dspagenumber': '@elliemae/ds-legacy-basic/PageNumber',
|
|
23
|
+
'@elliemae/ds-legacy-basic/dspills': '@elliemae/ds-legacy-basic/Pills',
|
|
24
|
+
'@elliemae/ds-legacy-basic/dspopover': '@elliemae/ds-legacy-basic/Popover',
|
|
25
|
+
'@elliemae/ds-legacy-basic/dsportal': '@elliemae/ds-legacy-basic/Portal',
|
|
26
|
+
'@elliemae/ds-legacy-basic/dsprogressindicator': '@elliemae/ds-legacy-basic/ProgressIndicator',
|
|
27
|
+
'@elliemae/ds-legacy-basic/dsreadmore': '@elliemae/ds-legacy-basic/ReadMore',
|
|
28
|
+
'@elliemae/ds-legacy-basic/dsspinner': '@elliemae/ds-legacy-basic/Spinner',
|
|
29
|
+
'@elliemae/ds-legacy-basic/dstextwrapper': '@elliemae/ds-legacy-basic/TextWrapper',
|
|
30
|
+
'@elliemae/ds-legacy-basic/dstoast': '@elliemae/ds-legacy-basic/Toast',
|
|
31
|
+
'@elliemae/ds-legacy-basic/dstoolbar': '@elliemae/ds-legacy-basic/Toolbar',
|
|
32
|
+
'@elliemae/ds-legacy-basic/dszipcodesearch': '@elliemae/ds-legacy-basic/ZipCodeSearch',
|
|
33
|
+
'@elliemae/ds-legacy-basic/dscheckbox': '@elliemae/ds-legacy-basic/form/Checkbox',
|
|
34
|
+
'@elliemae/ds-legacy-basic/dscombobox': '@elliemae/ds-legacy-basic/form/ComboBox',
|
|
35
|
+
'@elliemae/ds-legacy-basic/dsformitemlayout': '@elliemae/ds-legacy-basic/form/FormItem',
|
|
36
|
+
'@elliemae/ds-legacy-basic/dslargeinputtext': '@elliemae/ds-legacy-basic/form/LargeInputText',
|
|
37
|
+
'@elliemae/ds-legacy-basic/dsradio': '@elliemae/ds-legacy-basic/form/Radio',
|
|
38
|
+
'@elliemae/ds-legacy-basic/dsradiogroup': '@elliemae/ds-legacy-basic/form/RadioGroup',
|
|
39
|
+
'@elliemae/ds-legacy-basic/dstextbox': '@elliemae/ds-legacy-basic/form/TextBox',
|
|
40
|
+
'@elliemae/ds-legacy-basic/dstoggle': '@elliemae/ds-legacy-basic/form/Toggle',
|
|
41
|
+
'@elliemae/ds-legacy-basic/dsinputmask': '@elliemae/ds-legacy-basic/form/InputMask',
|
|
42
|
+
'@elliemae/ds-legacy-basic/dsinputgroup': '@elliemae/ds-legacy-basic/form/InputGroup',
|
|
43
|
+
'@elliemae/ds-legacy-basic/dscheckboxgroup': '@elliemae/ds-legacy-basic/form/CheckboxGroup',
|
|
44
|
+
'@elliemae/ds-legacy-basic/dsdateinput': '@elliemae/ds-legacy-basic/form/DateInput',
|
|
45
|
+
'@elliemae/ds-legacy-basic/dsexpandableinput': '@elliemae/ds-legacy-basic/form/ExpandableInput',
|
|
46
|
+
'@elliemae/ds-legacy-basic/dsfloatinglabelinput': '@elliemae/ds-legacy-basic/form/FloatingLabelInput',
|
|
47
|
+
'@elliemae/ds-legacy-basic/dsinput': '@elliemae/ds-legacy-basic/form/Input',
|
|
48
|
+
'@elliemae/ds-legacy-basic/dsrequiredmark': '@elliemae/ds-legacy-basic/form/RequiredMark',
|
|
49
|
+
'@elliemae/ds-legacy-basic/dssearchbox': '@elliemae/ds-legacy-basic/form/SearchBox',
|
|
50
|
+
'@elliemae/ds-legacy-basic/dstimeinput': '@elliemae/ds-legacy-basic/form/TimeInput',
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const legacyImportMapRevert = {
|
|
54
|
+
'@elliemae/ds-legacy-basic/Accordion': '@elliemae/ds-legacy-basic/dsaccordion',
|
|
55
|
+
'@elliemae/ds-legacy-basic/GroupBox': '@elliemae/ds-legacy-basic/dsgroupbox',
|
|
56
|
+
'@elliemae/ds-legacy-basic/TruncatedTooltipText': '@elliemae/ds-legacy-basic/dstruncatedtooltiptext',
|
|
57
|
+
'@elliemae/ds-legacy-basic/Button': '@elliemae/ds-legacy-basic/dsbutton',
|
|
58
|
+
'@elliemae/ds-legacy-basic/Separator': '@elliemae/ds-legacy-basic/dsseparator',
|
|
59
|
+
'@elliemae/ds-legacy-basic/Icon': '@elliemae/ds-legacy-basic/dsicon',
|
|
60
|
+
'@elliemae/ds-legacy-basic/Tabs': '@elliemae/ds-legacy-basic/dstabs',
|
|
61
|
+
'@elliemae/ds-legacy-basic/Tooltip': '@elliemae/ds-legacy-basic/dstooltip',
|
|
62
|
+
'@elliemae/ds-legacy-basic/Breadcrumb': '@elliemae/ds-legacy-basic/dsbreadcrumb',
|
|
63
|
+
'@elliemae/ds-legacy-basic/Popper': '@elliemae/ds-legacy-basic/dspopper',
|
|
64
|
+
'@elliemae/ds-legacy-basic/Zoom': '@elliemae/ds-legacy-basic/dszoom',
|
|
65
|
+
'@elliemae/ds-legacy-basic/ButtonGroup': '@elliemae/ds-legacy-basic/dsbuttongroup',
|
|
66
|
+
'@elliemae/ds-legacy-basic/Card': '@elliemae/ds-legacy-basic/dscard',
|
|
67
|
+
'@elliemae/ds-legacy-basic/TimePicker': '@elliemae/ds-legacy-basic/dstimepicker',
|
|
68
|
+
'@elliemae/ds-legacy-basic/Hidden': '@elliemae/ds-legacy-basic/dshidden',
|
|
69
|
+
'@elliemae/ds-legacy-basic/IndeterminateProgressIndicator': '@elliemae/ds-legacy-basic/dsindeterminateprogressindicator',
|
|
70
|
+
'@elliemae/ds-legacy-basic/LoadingIndicator': '@elliemae/ds-legacy-basic/dsloadingindicator',
|
|
71
|
+
'@elliemae/ds-legacy-basic/Menu': '@elliemae/ds-legacy-basic/dsmenu',
|
|
72
|
+
'@elliemae/ds-legacy-basic/Overlay': '@elliemae/ds-legacy-basic/dsoverlay',
|
|
73
|
+
'@elliemae/ds-legacy-basic/PageHeader': '@elliemae/ds-legacy-basic/dspageheader',
|
|
74
|
+
'@elliemae/ds-legacy-basic/PageNumber': '@elliemae/ds-legacy-basic/dspagenumber',
|
|
75
|
+
'@elliemae/ds-legacy-basic/Pills': '@elliemae/ds-legacy-basic/dspills',
|
|
76
|
+
'@elliemae/ds-legacy-basic/Popover': '@elliemae/ds-legacy-basic/dspopover',
|
|
77
|
+
'@elliemae/ds-legacy-basic/Portal': '@elliemae/ds-legacy-basic/dsportal',
|
|
78
|
+
'@elliemae/ds-legacy-basic/ProgressIndicator': '@elliemae/ds-legacy-basic/dsprogressindicator',
|
|
79
|
+
'@elliemae/ds-legacy-basic/ReadMore': '@elliemae/ds-legacy-basic/dsreadmore',
|
|
80
|
+
'@elliemae/ds-legacy-basic/Spinner': '@elliemae/ds-legacy-basic/dsspinner',
|
|
81
|
+
'@elliemae/ds-legacy-basic/TextWrapper': '@elliemae/ds-legacy-basic/dstextwrapper',
|
|
82
|
+
'@elliemae/ds-legacy-basic/Toast': '@elliemae/ds-legacy-basic/dstoast',
|
|
83
|
+
'@elliemae/ds-legacy-basic/Toolbar': '@elliemae/ds-legacy-basic/dstoolbar',
|
|
84
|
+
'@elliemae/ds-legacy-basic/ZipCodeSearch': '@elliemae/ds-legacy-basic/dszipcodesearch',
|
|
85
|
+
'@elliemae/ds-legacy-basic/form/Checkbox': '@elliemae/ds-legacy-basic/dscheckbox',
|
|
86
|
+
'@elliemae/ds-legacy-basic/form/ComboBox': '@elliemae/ds-legacy-basic/dscombobox',
|
|
87
|
+
'@elliemae/ds-legacy-basic/form/FormItem': '@elliemae/ds-legacy-basic/dsformitemlayout',
|
|
88
|
+
'@elliemae/ds-legacy-basic/form/LargeInputText': '@elliemae/ds-legacy-basic/dslargeinputtext',
|
|
89
|
+
'@elliemae/ds-legacy-basic/form/Radio': '@elliemae/ds-legacy-basic/dsradio',
|
|
90
|
+
'@elliemae/ds-legacy-basic/form/RadioGroup': '@elliemae/ds-legacy-basic/dsradiogroup',
|
|
91
|
+
'@elliemae/ds-legacy-basic/form/TextBox': '@elliemae/ds-legacy-basic/dstextbox',
|
|
92
|
+
'@elliemae/ds-legacy-basic/form/Toggle': '@elliemae/ds-legacy-basic/dstoggle',
|
|
93
|
+
'@elliemae/ds-legacy-basic/form/InputMask': '@elliemae/ds-legacy-basic/dsinputmask',
|
|
94
|
+
'@elliemae/ds-legacy-basic/form/InputGroup': '@elliemae/ds-legacy-basic/dsinputgroup',
|
|
95
|
+
'@elliemae/ds-legacy-basic/form/CheckboxGroup': '@elliemae/ds-legacy-basic/dscheckboxgroup',
|
|
96
|
+
'@elliemae/ds-legacy-basic/form/DateInput': '@elliemae/ds-legacy-basic/dsdateinput',
|
|
97
|
+
'@elliemae/ds-legacy-basic/form/ExpandableInput': '@elliemae/ds-legacy-basic/dsexpandableinput',
|
|
98
|
+
'@elliemae/ds-legacy-basic/form/FloatingLabelInput': '@elliemae/ds-legacy-basic/dsfloatinglabelinput',
|
|
99
|
+
'@elliemae/ds-legacy-basic/form/Input': '@elliemae/ds-legacy-basic/dsinput',
|
|
100
|
+
'@elliemae/ds-legacy-basic/form/RequiredMark': '@elliemae/ds-legacy-basic/dsrequiredmark',
|
|
101
|
+
'@elliemae/ds-legacy-basic/form/SearchBox': '@elliemae/ds-legacy-basic/dssearchbox',
|
|
102
|
+
'@elliemae/ds-legacy-basic/form/TimeInput': '@elliemae/ds-legacy-basic/dstimeinput',
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export default legacyImportMap;
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
export const SOLUTIONS_TYPES = {
|
|
3
|
+
SUB_FOLDER: 'subfolder',
|
|
4
|
+
AUTO_SUBFOLDER: 'auto-subfolder',
|
|
5
|
+
UNFIXABLE: 'unfixable',
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export const wrongFromStrings = [
|
|
9
|
+
'@elliemae/ds-legacy-basic/Accordion',
|
|
10
|
+
'@elliemae/ds-legacy-basic/AppPicker',
|
|
11
|
+
'@elliemae/ds-legacy-basic/Backdrop',
|
|
12
|
+
'@elliemae/ds-legacy-basic/Breadcrumb',
|
|
13
|
+
'@elliemae/ds-legacy-basic/Button',
|
|
14
|
+
'@elliemae/ds-legacy-basic/ButtonGroup',
|
|
15
|
+
'@elliemae/ds-legacy-basic/Card',
|
|
16
|
+
'@elliemae/ds-legacy-basic/CircularProgressIndicator',
|
|
17
|
+
'@elliemae/ds-legacy-basic/form',
|
|
18
|
+
'@elliemae/ds-legacy-basic/Grid',
|
|
19
|
+
'@elliemae/ds-legacy-basic/GroupBox',
|
|
20
|
+
'@elliemae/ds-legacy-basic/Header',
|
|
21
|
+
'@elliemae/ds-legacy-basic/Hidden',
|
|
22
|
+
'@elliemae/ds-legacy-basic/IndeterminateProgressIndicator',
|
|
23
|
+
'@elliemae/ds-legacy-basic/LabelValue',
|
|
24
|
+
'@elliemae/ds-legacy-basic/ListSectionHeader',
|
|
25
|
+
'@elliemae/ds-legacy-basic/LoadingIndicator',
|
|
26
|
+
'@elliemae/ds-legacy-basic/Menu',
|
|
27
|
+
'@elliemae/ds-legacy-basic/Overlay',
|
|
28
|
+
'@elliemae/ds-legacy-basic/PageHeader',
|
|
29
|
+
'@elliemae/ds-legacy-basic/PageNumber',
|
|
30
|
+
'@elliemae/ds-legacy-basic/Pills',
|
|
31
|
+
'@elliemae/ds-legacy-basic/Popover',
|
|
32
|
+
'@elliemae/ds-legacy-basic/Popper',
|
|
33
|
+
'@elliemae/ds-legacy-basic/Portal',
|
|
34
|
+
'@elliemae/ds-legacy-basic/ProgressIndicator',
|
|
35
|
+
'@elliemae/ds-legacy-basic/ReadMore',
|
|
36
|
+
'@elliemae/ds-legacy-basic/ResizableContainer',
|
|
37
|
+
'@elliemae/ds-legacy-basic/Separator',
|
|
38
|
+
'@elliemae/ds-legacy-basic/SidePanel',
|
|
39
|
+
'@elliemae/ds-legacy-basic/Slider',
|
|
40
|
+
'@elliemae/ds-legacy-basic/Spinner',
|
|
41
|
+
'@elliemae/ds-legacy-basic/Tabs',
|
|
42
|
+
'@elliemae/ds-legacy-basic/TextWrapper',
|
|
43
|
+
'@elliemae/ds-legacy-basic/TimePicker',
|
|
44
|
+
'@elliemae/ds-legacy-basic/Toast',
|
|
45
|
+
'@elliemae/ds-legacy-basic/Toolbar',
|
|
46
|
+
'@elliemae/ds-legacy-basic/Tooltip',
|
|
47
|
+
'@elliemae/ds-legacy-basic/TruncatedTooltipText',
|
|
48
|
+
'@elliemae/ds-legacy-basic/ZipCodeSearch',
|
|
49
|
+
'@elliemae/ds-legacy-basic/Zoom',
|
|
50
|
+
'@elliemae/ds-legacy-basic/Icon',
|
|
51
|
+
'@elliemae/ds-legacy-basic',
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
export const SUGGESTABLE_MAP = {
|
|
55
|
+
'@elliemae/ds-legacy-basic/Accordion': '@elliemae/ds-legacy-accordion',
|
|
56
|
+
'@elliemae/ds-legacy-basic/AppPicker': '@elliemae/ds-legacy-app-picker',
|
|
57
|
+
'@elliemae/ds-legacy-basic/Backdrop': '@elliemae/ds-legacy-backdrop',
|
|
58
|
+
'@elliemae/ds-legacy-basic/Breadcrumb': '@elliemae/ds-legacy-breadcrumb',
|
|
59
|
+
'@elliemae/ds-legacy-basic/Button': '@elliemae/ds-legacy-button',
|
|
60
|
+
'@elliemae/ds-legacy-basic/ButtonGroup': '@elliemae/ds-legacy-button-group',
|
|
61
|
+
'@elliemae/ds-legacy-basic/Card': '@elliemae/ds-legacy-card',
|
|
62
|
+
'@elliemae/ds-legacy-basic/CircularProgressIndicator': '@elliemae/ds-legacy-circular-progress-indicator',
|
|
63
|
+
'@elliemae/ds-legacy-basic/form': '@elliemae/ds-legacy-form',
|
|
64
|
+
'@elliemae/ds-legacy-basic/Grid': '@elliemae/ds-legacy-grid',
|
|
65
|
+
'@elliemae/ds-legacy-basic/GroupBox': '@elliemae/ds-legacy-group-box',
|
|
66
|
+
'@elliemae/ds-legacy-basic/Header': '@elliemae/ds-legacy-header',
|
|
67
|
+
'@elliemae/ds-legacy-basic/Hidden': '@elliemae/ds-legacy-hidden',
|
|
68
|
+
'@elliemae/ds-legacy-basic/IndeterminateProgressIndicator': '@elliemae/ds-legacy-indeterminate-progress-indicator',
|
|
69
|
+
'@elliemae/ds-legacy-basic/LabelValue': '@elliemae/ds-legacy-label-value',
|
|
70
|
+
'@elliemae/ds-legacy-basic/ListSectionHeader': '@elliemae/ds-legacy-list-section-header',
|
|
71
|
+
'@elliemae/ds-legacy-basic/LoadingIndicator': '@elliemae/ds-legacy-loading-indicator',
|
|
72
|
+
'@elliemae/ds-legacy-basic/Menu': '@elliemae/ds-legacy-menu',
|
|
73
|
+
'@elliemae/ds-legacy-basic/Overlay': '@elliemae/ds-legacy-overlay',
|
|
74
|
+
'@elliemae/ds-legacy-basic/PageHeader': '@elliemae/ds-legacy-page-header',
|
|
75
|
+
'@elliemae/ds-legacy-basic/PageNumber': '@elliemae/ds-legacy-page-number',
|
|
76
|
+
'@elliemae/ds-legacy-basic/Pills': '@elliemae/ds-legacy-pills',
|
|
77
|
+
'@elliemae/ds-legacy-basic/Popover': '@elliemae/ds-legacy-popover',
|
|
78
|
+
'@elliemae/ds-legacy-basic/Popper': '@elliemae/ds-legacy-popper',
|
|
79
|
+
'@elliemae/ds-legacy-basic/Portal': '@elliemae/ds-legacy-portal',
|
|
80
|
+
'@elliemae/ds-legacy-basic/ProgressIndicator': '@elliemae/ds-legacy-progress-indicator',
|
|
81
|
+
'@elliemae/ds-legacy-basic/ReadMore': '@elliemae/ds-legacy-read-more',
|
|
82
|
+
'@elliemae/ds-legacy-basic/ResizableContainer': '@elliemae/ds-legacy-resizeable-container',
|
|
83
|
+
'@elliemae/ds-legacy-basic/Separator': '@elliemae/ds-legacy-separator',
|
|
84
|
+
'@elliemae/ds-legacy-basic/SidePanel': '@elliemae/ds-legacy-side-panel',
|
|
85
|
+
'@elliemae/ds-legacy-basic/Slider': '@elliemae/ds-legacy-slider',
|
|
86
|
+
'@elliemae/ds-legacy-basic/Spinner': '@elliemae/ds-legacy-spinner',
|
|
87
|
+
'@elliemae/ds-legacy-basic/Tabs': '@elliemae/ds-legacy-tabs',
|
|
88
|
+
'@elliemae/ds-legacy-basic/TextWrapper': '@elliemae/ds-legacy-text-wrapper',
|
|
89
|
+
'@elliemae/ds-legacy-basic/TimePicker': '@elliemae/ds-legacy-time-picker',
|
|
90
|
+
'@elliemae/ds-legacy-basic/Toast': '@elliemae/ds-legacy-toast',
|
|
91
|
+
'@elliemae/ds-legacy-basic/Toolbar': '@elliemae/ds-legacy-toolbar',
|
|
92
|
+
'@elliemae/ds-legacy-basic/Tooltip': '@elliemae/ds-legacy-tooltip',
|
|
93
|
+
'@elliemae/ds-legacy-basic/TruncatedTooltipText': '@elliemae/ds-legacy-truncated-tooltip-text',
|
|
94
|
+
'@elliemae/ds-legacy-basic/ZipCodeSearch': '@elliemae/ds-legacy-zipcode-search',
|
|
95
|
+
'@elliemae/ds-legacy-basic/Zoom': '@elliemae/ds-legacy-zoom',
|
|
96
|
+
'@elliemae/ds-legacy-basic/Icon': '@elliemae/ds-legacy-icon',
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
export const COMPONENT_MAP = {
|
|
100
|
+
DSAccordion: '@elliemae/ds-legacy-accordion',
|
|
101
|
+
DSAccordionItem: '@elliemae/ds-legacy-accordion',
|
|
102
|
+
DSAppPicker: '@elliemae/ds-legacy-app-picker',
|
|
103
|
+
DSBackdrop: '@elliemae/ds-legacy-breadcrumb',
|
|
104
|
+
DSBreadcrumb: '@elliemae/ds-legacy-breadcrumb',
|
|
105
|
+
htmlElements: '@elliemae/ds-legacy-breadcrumb',
|
|
106
|
+
DSBreadcrumbItem: '@elliemae/ds-legacy-breadcrumb',
|
|
107
|
+
DSButton: '@elliemae/ds-legacy-button',
|
|
108
|
+
BUTTON_INTENT: '@elliemae/ds-legacy-button',
|
|
109
|
+
BUTTON_SIZE: '@elliemae/ds-legacy-button',
|
|
110
|
+
BUTTON_TYPE: '@elliemae/ds-legacy-button',
|
|
111
|
+
BUTTON_VARIANT: '@elliemae/ds-legacy-button',
|
|
112
|
+
buttonTypes: '@elliemae/ds-legacy-button',
|
|
113
|
+
buttonVariants: '@elliemae/ds-legacy-button',
|
|
114
|
+
DSButtonV2: '@elliemae/ds-legacy-button',
|
|
115
|
+
BUTTON_SHAPES: '@elliemae/ds-legacy-button',
|
|
116
|
+
BUTTON_SIZES: '@elliemae/ds-legacy-button',
|
|
117
|
+
BUTTON_TYPES: '@elliemae/ds-legacy-button',
|
|
118
|
+
DSButtonGroup: '@elliemae/ds-legacy-button-group',
|
|
119
|
+
DSCard: '@elliemae/ds-legacy-card',
|
|
120
|
+
DSCardHeader: '@elliemae/ds-legacy-card',
|
|
121
|
+
DSCardBody: '@elliemae/ds-legacy-card',
|
|
122
|
+
CustomCard: '@elliemae/ds-legacy-card',
|
|
123
|
+
CardGroup: '@elliemae/ds-legacy-card',
|
|
124
|
+
ActionAddon: '@elliemae/ds-legacy-card',
|
|
125
|
+
DetailCard: '@elliemae/ds-legacy-card',
|
|
126
|
+
DSCircularIndeterminateIndicator: '@elliemae/ds-legacy-circular-progress-indicator',
|
|
127
|
+
DSCheckbox: '@elliemae/ds-legacy-form',
|
|
128
|
+
DSCheckboxGroup: '@elliemae/ds-legacy-form',
|
|
129
|
+
DSComboBox: '@elliemae/ds-legacy-form',
|
|
130
|
+
DSComboBox2: '@elliemae/ds-legacy-form',
|
|
131
|
+
DSDateInput: '@elliemae/ds-legacy-form',
|
|
132
|
+
DateInputsV2Impl: '@elliemae/ds-legacy-form',
|
|
133
|
+
DSDateInputV2: '@elliemae/ds-legacy-form',
|
|
134
|
+
DSExpandableInput: '@elliemae/ds-legacy-form',
|
|
135
|
+
DSFloatingLabelInput: '@elliemae/ds-legacy-form',
|
|
136
|
+
DSFormItemLayout: '@elliemae/ds-legacy-form',
|
|
137
|
+
DSError: '@elliemae/ds-legacy-form',
|
|
138
|
+
DSInput: '@elliemae/ds-legacy-form',
|
|
139
|
+
DSInputGroup: '@elliemae/ds-legacy-form',
|
|
140
|
+
DSInputMask: '@elliemae/ds-legacy-form',
|
|
141
|
+
DSInputProtected: '@elliemae/ds-legacy-form',
|
|
142
|
+
LEFT_ADDON_OPTIONS: '@elliemae/ds-legacy-form',
|
|
143
|
+
RIGHT_ADDON_OPTIONS: '@elliemae/ds-legacy-form',
|
|
144
|
+
DSLargeInputText: '@elliemae/ds-legacy-form',
|
|
145
|
+
SingleMenuItem: '@elliemae/ds-legacy-form',
|
|
146
|
+
MultiMenuItem: '@elliemae/ds-legacy-form',
|
|
147
|
+
noop: '@elliemae/ds-legacy-form',
|
|
148
|
+
MenuItem: '@elliemae/ds-legacy-form',
|
|
149
|
+
SubmenuItem: '@elliemae/ds-legacy-form',
|
|
150
|
+
Section: '@elliemae/ds-legacy-form',
|
|
151
|
+
Separator: '@elliemae/ds-legacy-form',
|
|
152
|
+
DSRadio: '@elliemae/ds-legacy-form',
|
|
153
|
+
DSRadioGroup: '@elliemae/ds-legacy-form',
|
|
154
|
+
DSRequiredMark: '@elliemae/ds-legacy-form',
|
|
155
|
+
SearchBoxToggle: '@elliemae/ds-legacy-form',
|
|
156
|
+
DSSearchBox: '@elliemae/ds-legacy-form',
|
|
157
|
+
DSNavSearchBox: '@elliemae/ds-legacy-form',
|
|
158
|
+
DSTextBox: '@elliemae/ds-legacy-form',
|
|
159
|
+
DSTimeInput: '@elliemae/ds-legacy-form',
|
|
160
|
+
DSToggle: '@elliemae/ds-legacy-form',
|
|
161
|
+
TimeInputImpl: '@elliemae/ds-legacy-form',
|
|
162
|
+
CHECKBOX_VARIANT: '@elliemae/ds-legacy-form',
|
|
163
|
+
COMBOBOX_VARIANT: '@elliemae/ds-legacy-form',
|
|
164
|
+
components: '@elliemae/ds-legacy-form',
|
|
165
|
+
DateInputImpl: '@elliemae/ds-legacy-form',
|
|
166
|
+
FORMITEM_LAYOUT_VARIANTS: '@elliemae/ds-legacy-form',
|
|
167
|
+
InputAddonWrapper: '@elliemae/ds-legacy-form',
|
|
168
|
+
MASK_TYPES: '@elliemae/ds-legacy-form',
|
|
169
|
+
MASK_PIPES: '@elliemae/ds-legacy-form',
|
|
170
|
+
Grid: '@elliemae/ds-legacy-grid',
|
|
171
|
+
GridContainer: '@elliemae/ds-legacy-grid',
|
|
172
|
+
GridItem: '@elliemae/ds-legacy-grid',
|
|
173
|
+
DSGroupBox: '@elliemae/ds-legacy-group-box',
|
|
174
|
+
BOX_TYPES: '@elliemae/ds-legacy-group-box',
|
|
175
|
+
BOX_TYPES_ARRAY: '@elliemae/ds-legacy-group-box',
|
|
176
|
+
DSHeader: '@elliemae/ds-legacy-header',
|
|
177
|
+
useHiddenProps: '@elliemae/ds-legacy-hidden',
|
|
178
|
+
useHiddenController: '@elliemae/ds-legacy-hidden',
|
|
179
|
+
useHiddenTransition: '@elliemae/ds-legacy-hidden',
|
|
180
|
+
useHiddenTrigger: '@elliemae/ds-legacy-hidden',
|
|
181
|
+
DSIndeterminateProgressIndicator: '@elliemae/ds-legacy-indeterminate-progress-indicator',
|
|
182
|
+
DSLabelValue: '@elliemae/ds-legacy-label-value',
|
|
183
|
+
ListSectionHeader: '@elliemae/ds-legacy-list-section-header',
|
|
184
|
+
DSLoadingIndicator: '@elliemae/ds-legacy-loading-indicator',
|
|
185
|
+
Menu: '@elliemae/ds-legacy-menu',
|
|
186
|
+
MenuCombobox: '@elliemae/ds-legacy-menu',
|
|
187
|
+
menuItemFactory: '@elliemae/ds-legacy-menu',
|
|
188
|
+
renderMenuItems: '@elliemae/ds-legacy-menu',
|
|
189
|
+
DSOverlay: '@elliemae/ds-legacy-overlay',
|
|
190
|
+
DSPageHeader: '@elliemae/ds-legacy-page-header',
|
|
191
|
+
DSPageHeaderV2: '@elliemae/ds-legacy-page-header',
|
|
192
|
+
PageHeaderCustomRenderer: '@elliemae/ds-legacy-page-header',
|
|
193
|
+
PageHeaderSummary: '@elliemae/ds-legacy-page-header',
|
|
194
|
+
PageHeaderTitle: '@elliemae/ds-legacy-page-header',
|
|
195
|
+
PageHeaderEditableTitle: '@elliemae/ds-legacy-page-header',
|
|
196
|
+
PageHeaderMenu: '@elliemae/ds-legacy-page-header',
|
|
197
|
+
DSPageNumber: '@elliemae/ds-legacy-page-number',
|
|
198
|
+
Pill: '@elliemae/ds-legacy-pills',
|
|
199
|
+
Container: '@elliemae/ds-legacy-pills',
|
|
200
|
+
PillGroup: '@elliemae/ds-legacy-pills',
|
|
201
|
+
LabeledDropdownPills: '@elliemae/ds-legacy-pills',
|
|
202
|
+
LabeledPills: '@elliemae/ds-legacy-pills',
|
|
203
|
+
DropdownPill: '@elliemae/ds-legacy-pills',
|
|
204
|
+
RemovablePill: '@elliemae/ds-legacy-pills',
|
|
205
|
+
ReadOnlyPill: '@elliemae/ds-legacy-pills',
|
|
206
|
+
OverflowPill: '@elliemae/ds-legacy-pills',
|
|
207
|
+
DSPillV2: '@elliemae/ds-legacy-pills',
|
|
208
|
+
DSPillGroupV2: '@elliemae/ds-legacy-pills',
|
|
209
|
+
DSPillButton: '@elliemae/ds-legacy-pills',
|
|
210
|
+
DSPopover: '@elliemae/ds-legacy-popover',
|
|
211
|
+
Interaction: '@elliemae/ds-legacy-popover',
|
|
212
|
+
usePopper: '@elliemae/ds-legacy-popover',
|
|
213
|
+
usePopoverProviderState: '@elliemae/ds-legacy-popover',
|
|
214
|
+
DSPopper: '@elliemae/ds-legacy-popper',
|
|
215
|
+
getArrowStylesBySize: '@elliemae/ds-legacy-popper',
|
|
216
|
+
PopperInteractions: '@elliemae/ds-legacy-popper',
|
|
217
|
+
interactions: '@elliemae/ds-legacy-popper',
|
|
218
|
+
PopperPositions: '@elliemae/ds-legacy-popper',
|
|
219
|
+
positions: '@elliemae/ds-legacy-popper',
|
|
220
|
+
DSPortal: '@elliemae/ds-legacy-portal',
|
|
221
|
+
DSProgressIndicator: '@elliemae/ds-legacy-progress-indicator',
|
|
222
|
+
DSReadMore: '@elliemae/ds-legacy-read-more',
|
|
223
|
+
ResizableContainer: '@elliemae/ds-legacy-resizeable-container',
|
|
224
|
+
DSSeparator: '@elliemae/ds-legacy-separator',
|
|
225
|
+
SidePanel: '@elliemae/ds-legacy-side-panel',
|
|
226
|
+
SidePanelHeader: '@elliemae/ds-legacy-side-panel',
|
|
227
|
+
TemplateBasicPageWithSidePanel: '@elliemae/ds-legacy-side-panel',
|
|
228
|
+
DSSlider: '@elliemae/ds-legacy-slider',
|
|
229
|
+
DSSpinner: '@elliemae/ds-legacy-spinner',
|
|
230
|
+
DSTab: '@elliemae/ds-legacy-tabs',
|
|
231
|
+
DSTabs: '@elliemae/ds-legacy-tabs',
|
|
232
|
+
TabTypes: '@elliemae/ds-legacy-tabs',
|
|
233
|
+
DSTabsDatatestid: '@elliemae/ds-legacy-tabs',
|
|
234
|
+
DSTextWrapper: '@elliemae/ds-legacy-text-wrapper',
|
|
235
|
+
DSTimePicker: '@elliemae/ds-legacy-time-picker',
|
|
236
|
+
TimePickerMenu: '@elliemae/ds-legacy-time-picker',
|
|
237
|
+
DSTimePickerMenu: '@elliemae/ds-legacy-time-picker',
|
|
238
|
+
convertTimeString: '@elliemae/ds-legacy-time-picker',
|
|
239
|
+
DSToast: '@elliemae/ds-legacy-toast',
|
|
240
|
+
toast: '@elliemae/ds-legacy-toast',
|
|
241
|
+
ToastType: '@elliemae/ds-legacy-toast',
|
|
242
|
+
toastTypes: '@elliemae/ds-legacy-toast',
|
|
243
|
+
ToastPosition: '@elliemae/ds-legacy-toast',
|
|
244
|
+
toastsPositions: '@elliemae/ds-legacy-toast',
|
|
245
|
+
DSToastAction: '@elliemae/ds-legacy-toast',
|
|
246
|
+
DSToastActionLink: '@elliemae/ds-legacy-toast',
|
|
247
|
+
DSToolbar: '@elliemae/ds-legacy-toolbar',
|
|
248
|
+
DSToolbarV2: '@elliemae/ds-legacy-toolbar',
|
|
249
|
+
DSToolbarItemV2: '@elliemae/ds-legacy-toolbar',
|
|
250
|
+
DSToolbarSeparatorV2: '@elliemae/ds-legacy-toolbar',
|
|
251
|
+
ToolbarItem: '@elliemae/ds-legacy-toolbar',
|
|
252
|
+
ToolbarGroup: '@elliemae/ds-legacy-toolbar',
|
|
253
|
+
ToolbarDivider: '@elliemae/ds-legacy-toolbar',
|
|
254
|
+
DSTooltip: '@elliemae/ds-legacy-tooltip',
|
|
255
|
+
TooltipContainer: '@elliemae/ds-legacy-tooltip',
|
|
256
|
+
TooltipText: '@elliemae/ds-legacy-tooltip',
|
|
257
|
+
DSTooltipV2: '@elliemae/ds-legacy-tooltip',
|
|
258
|
+
tooltipPositions: '@elliemae/ds-legacy-tooltip',
|
|
259
|
+
TooltipType: '@elliemae/ds-legacy-tooltip',
|
|
260
|
+
DSTooltipV3: '@elliemae/ds-legacy-tooltip',
|
|
261
|
+
TooltipV3DatatestId: '@elliemae/ds-legacy-tooltip',
|
|
262
|
+
TooltipTextProvider: '@elliemae/ds-legacy-truncated-tooltip-text',
|
|
263
|
+
TruncatedTooltipContext: '@elliemae/ds-legacy-truncated-tooltip-text',
|
|
264
|
+
SimpleTruncatedTooltipText: '@elliemae/ds-legacy-truncated-tooltip-text',
|
|
265
|
+
DSTruncatedTooltipText: '@elliemae/ds-legacy-truncated-tooltip-text',
|
|
266
|
+
DSTruncateTextWithTooltip: '@elliemae/ds-legacy-truncated-tooltip-text',
|
|
267
|
+
DSTruncateTextWithTooltipDatatestid: '@elliemae/ds-legacy-truncated-tooltip-text',
|
|
268
|
+
DSZipCodeSearch: '@elliemae/ds-legacy-zipcode-search',
|
|
269
|
+
DSZoom: '@elliemae/ds-legacy-zoom',
|
|
270
|
+
'*': null,
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
// /gms all the flags are required for this regexp to work
|
|
274
|
+
//
|
|
275
|
+
// E.G.
|
|
276
|
+
// import { DSAccordion, DSAccordionItem} from '@elliemae/ds-legacy-basic/Accordion'
|
|
277
|
+
// catches: ["import"," { DSAccordion, DSAccordionItem}", " from ", "'@elliemae/ds-legacy-basic'"]
|
|
278
|
+
// E.G. 2
|
|
279
|
+
// import { DSAccordion, DSAccordionItem} from '@elliemae/ds-legacy-accordion'
|
|
280
|
+
// catches: [] ( because @elliemae\/ds-basic is never matched )
|
|
281
|
+
// https://regex101.com/r/vcwW0S/1
|
|
282
|
+
export const problematicImportRegexp =
|
|
283
|
+
// /(?<=(import))(((?!import).)*?)(?<=(\s?from\s)?)(['"]@elliemae\/ds-basic(\/\S+)?['"])/gms;
|
|
284
|
+
/(import)\s?((?:(?!import).)*?)(\s?from\s)(['"]@elliemae\/ds-basic(\/(?:(?!form)\S)+)?['"])/gms;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
2
|
+
import { SUGGESTABLE_MAP, COMPONENT_MAP, SOLUTIONS_TYPES } from './constants.mjs';
|
|
3
|
+
import { matchDsBasicImports } from './matchDsBasicImports.mjs';
|
|
4
|
+
|
|
5
|
+
export const mapComponentsToImportStatement = (fullMatch, components) => {
|
|
6
|
+
const autoSolutions = [];
|
|
7
|
+
const unAutoFixables = [];
|
|
8
|
+
const importStatementsMap = {};
|
|
9
|
+
let hasUnfixables = false;
|
|
10
|
+
// try to create a map based on components names to new import statements
|
|
11
|
+
// based on COMPONENT_MAP, if the component exist in the map we know what the new imports should be
|
|
12
|
+
// E.G.:
|
|
13
|
+
// import { DSAccordion, DSAppPicker } from "@elliemae/ds-legacy-basic";
|
|
14
|
+
// will generate:
|
|
15
|
+
// importStatementsMap={
|
|
16
|
+
// '@elliemae/ds-legacy-accordion':['DSAccordion']
|
|
17
|
+
// '@elliemae/ds-legacy-app-picker':['DSAppPicker']
|
|
18
|
+
// }
|
|
19
|
+
// we can NOT process/auto-fix import * from "@elliemae/ds-legacy-basic"; or any non-named import
|
|
20
|
+
components.forEach((component) => {
|
|
21
|
+
if (component !== '')
|
|
22
|
+
if (!component.includes('*')) {
|
|
23
|
+
const importKey = COMPONENT_MAP[component];
|
|
24
|
+
if (Array.isArray(importStatementsMap[importKey])) importStatementsMap[importKey].push(component);
|
|
25
|
+
else importStatementsMap[importKey] = [component];
|
|
26
|
+
} else {
|
|
27
|
+
hasUnfixables = true;
|
|
28
|
+
unAutoFixables.push(component);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
// now that we have the map based on components names we try to create a "solution" statement for it.
|
|
32
|
+
// each entry looks like [newPackageImport, arrayOfNamedComponents]
|
|
33
|
+
const entries = Object.entries(importStatementsMap);
|
|
34
|
+
if (entries.length > 0)
|
|
35
|
+
entries.forEach(([fromPackage, comps]) => {
|
|
36
|
+
if (fromPackage !== 'undefined') {
|
|
37
|
+
autoSolutions.push(`import { ${comps.join(', ')} } from '${fromPackage}'`);
|
|
38
|
+
} else {
|
|
39
|
+
hasUnfixables = true;
|
|
40
|
+
unAutoFixables.push({ fromPackage, comps });
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
else hasUnfixables = true;
|
|
44
|
+
|
|
45
|
+
let unfixable = {};
|
|
46
|
+
if (!hasUnfixables) unfixable = null;
|
|
47
|
+
else {
|
|
48
|
+
unfixable = {
|
|
49
|
+
fullMatch,
|
|
50
|
+
components: unAutoFixables,
|
|
51
|
+
solutionType: SOLUTIONS_TYPES.UNFIXABLE,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
let solution = null;
|
|
56
|
+
const solutionsStatements = autoSolutions.join('\n');
|
|
57
|
+
if (solutionsStatements !== '') {
|
|
58
|
+
solution = {
|
|
59
|
+
fullMatch,
|
|
60
|
+
solution: solutionsStatements,
|
|
61
|
+
solutionType: SOLUTIONS_TYPES.AUTO_SUBFOLDER,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// after all the code we can have a "solution" (that can be multi-line) or unfixables, or both
|
|
66
|
+
return {
|
|
67
|
+
solution,
|
|
68
|
+
unfixable,
|
|
69
|
+
importStatementsMap,
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const getSubFolderSolution = (fullMatch, components, fullFromPack) => ({
|
|
74
|
+
solution: {
|
|
75
|
+
fullMatch,
|
|
76
|
+
solution: `import ${components} from '${SUGGESTABLE_MAP[fullFromPack]}'`,
|
|
77
|
+
solutionType: SOLUTIONS_TYPES.SUB_FOLDER,
|
|
78
|
+
},
|
|
79
|
+
fromPackage: SUGGESTABLE_MAP[fullFromPack],
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
export const getSolutions = (fileContent) => {
|
|
83
|
+
const matches = matchDsBasicImports(fileContent);
|
|
84
|
+
const solutions = [];
|
|
85
|
+
const unfixables = [];
|
|
86
|
+
let newPackagesMap = {};
|
|
87
|
+
let hasErrors = false;
|
|
88
|
+
if (matches.length > 0) {
|
|
89
|
+
hasErrors = true;
|
|
90
|
+
matches.forEach((match) => {
|
|
91
|
+
const { fullMatch, componentVariable, fullFromPack, optionalSubfolder } = match;
|
|
92
|
+
if (optionalSubfolder !== '') {
|
|
93
|
+
const { solution, fromPackage } = getSubFolderSolution(fullMatch, componentVariable, fullFromPack);
|
|
94
|
+
solutions.push(solution);
|
|
95
|
+
newPackagesMap[fromPackage] = componentVariable;
|
|
96
|
+
} else {
|
|
97
|
+
const csvComponents = componentVariable.replace(/{+/g, '').replace(/}+/g, '').replace(/\s+/gms, '').split(',');
|
|
98
|
+
const { solution, unfixable, importStatementsMap } = mapComponentsToImportStatement(fullMatch, csvComponents);
|
|
99
|
+
if (solution) solutions.push(solution);
|
|
100
|
+
if (unfixable) unfixables.push(unfixable);
|
|
101
|
+
newPackagesMap = { ...newPackagesMap, ...importStatementsMap };
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return { solutions, unfixables, hasErrors, newPackages: Object.keys(newPackagesMap), newPackagesMap };
|
|
106
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
2
|
+
/* eslint-disable no-console */
|
|
3
|
+
import util from 'util';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import fse from 'fs-extra';
|
|
6
|
+
import { generatePathFromCurrentFolder, globArray } from '../../../utils/index.mjs';
|
|
7
|
+
import {
|
|
8
|
+
brightMagentaStr,
|
|
9
|
+
boldGreenStr,
|
|
10
|
+
brightYellowStr,
|
|
11
|
+
brightRedStr,
|
|
12
|
+
brightCyanStr,
|
|
13
|
+
} from '../../../utils/CLI_COLORS.mjs';
|
|
14
|
+
import { getSolutions } from './getSolutions.mjs';
|
|
15
|
+
import { replaceFromSolutions } from './replaceFromSolutions.mjs';
|
|
16
|
+
|
|
17
|
+
export const helpMigrateToV3 = (options) => {
|
|
18
|
+
const csvGlobs = options.globPattern.split(',').map((pattern) => generatePathFromCurrentFolder(pattern));
|
|
19
|
+
|
|
20
|
+
const ignoredPatterns = options.globPatternIgnore.split(',');
|
|
21
|
+
const globOptions = { ignore: ignoredPatterns };
|
|
22
|
+
|
|
23
|
+
const pathToFileToProcess = globArray(csvGlobs, globOptions);
|
|
24
|
+
|
|
25
|
+
const totals = {
|
|
26
|
+
hasErrors: false,
|
|
27
|
+
hasUnfixables: false,
|
|
28
|
+
totalAppliedFixes: 0,
|
|
29
|
+
listOfAllFilesWithErrors: [],
|
|
30
|
+
listOfFixedFiles: [],
|
|
31
|
+
listOfUnfixableFiles: [],
|
|
32
|
+
convertedPackagesMap: {},
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
pathToFileToProcess.forEach((path) => {
|
|
36
|
+
const fileContent = fs.readFileSync(path, {
|
|
37
|
+
encoding: 'utf8',
|
|
38
|
+
flag: 'r',
|
|
39
|
+
});
|
|
40
|
+
if (fileContent && typeof fileContent === 'string') {
|
|
41
|
+
const { solutions, unfixables, hasErrors, newPackagesMap } = getSolutions(fileContent);
|
|
42
|
+
if (hasErrors) {
|
|
43
|
+
totals.listOfAllFilesWithErrors.push(path);
|
|
44
|
+
totals.hasErrors = true;
|
|
45
|
+
if (unfixables.length > 0) {
|
|
46
|
+
totals.hasUnfixables = true;
|
|
47
|
+
totals.listOfUnfixableFiles.push({ path, unfixables });
|
|
48
|
+
}
|
|
49
|
+
if (solutions.length > 0) {
|
|
50
|
+
const newContent = replaceFromSolutions(fileContent, solutions);
|
|
51
|
+
fse.outputFileSync(path, newContent);
|
|
52
|
+
totals.listOfFixedFiles.push(path);
|
|
53
|
+
totals.totalAppliedFixes += solutions.length;
|
|
54
|
+
}
|
|
55
|
+
if (Object.keys(newPackagesMap).length) {
|
|
56
|
+
totals.convertedPackagesMap = { ...totals.convertedPackagesMap, ...newPackagesMap };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
if (totals.hasErrors) {
|
|
62
|
+
console.log('\n');
|
|
63
|
+
console.log(brightMagentaStr('# Found outdated import statement in:'));
|
|
64
|
+
console.log('```');
|
|
65
|
+
console.log(totals.listOfAllFilesWithErrors);
|
|
66
|
+
console.log('```');
|
|
67
|
+
console.log('\n');
|
|
68
|
+
console.log(boldGreenStr('## The following files were auto-fixed'));
|
|
69
|
+
console.log('```');
|
|
70
|
+
console.log(totals.listOfFixedFiles);
|
|
71
|
+
console.log('```');
|
|
72
|
+
console.log(boldGreenStr(`a total of ${totals.totalAppliedFixes} fixes were applied`));
|
|
73
|
+
if (totals.hasUnfixables) {
|
|
74
|
+
console.log('\n');
|
|
75
|
+
console.log(brightRedStr('## found some problems that can not be autofixed '));
|
|
76
|
+
console.log('```');
|
|
77
|
+
console.log(util.inspect(totals.listOfUnfixableFiles, { showHidden: false, depth: null, colors: true }));
|
|
78
|
+
console.log('```');
|
|
79
|
+
console.log('\n');
|
|
80
|
+
console.log(brightRedStr('you must manually solve those import statements'));
|
|
81
|
+
console.log('check https://qa.dimsum.rd.elliemae.io/ documentation to find your new import statements');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
console.log('\n');
|
|
85
|
+
console.log(brightYellowStr('# You must ensure following dependencies are present in your package.json:'));
|
|
86
|
+
console.log('```');
|
|
87
|
+
console.log(util.inspect(Object.keys(totals.convertedPackagesMap), { showHidden: false, depth: null, colors: true }));
|
|
88
|
+
console.log('```');
|
|
89
|
+
console.log(brightCyanStr('Done.'));
|
|
90
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { brightCyanStr, brightMagentaStr, yellowStr, brightGreenStr } from '../../../utils/CLI_COLORS.mjs';
|
|
3
|
+
import { getSubFolderSolution, mapComponentsToImportStatement } from './getSolutions.mjs';
|
|
4
|
+
|
|
5
|
+
const logSubfolderImport = (fullMatch, components, fullFromPack) => {
|
|
6
|
+
const { solution } = getSubFolderSolution(fullMatch, components, fullFromPack);
|
|
7
|
+
console.log(brightMagentaStr('detected'));
|
|
8
|
+
console.log(fullMatch);
|
|
9
|
+
console.log(brightCyanStr('you should move to'));
|
|
10
|
+
console.log(brightGreenStr(solution));
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const logSuggestedNewImportStatements = (fullMatch, newStatements) => {
|
|
14
|
+
console.log(brightMagentaStr('detected'));
|
|
15
|
+
console.log(fullMatch);
|
|
16
|
+
console.log(brightCyanStr('you should move to'));
|
|
17
|
+
newStatements.forEach((statement) => console.log(brightGreenStr(statement)));
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const logUnAutoFixables = (fullMatch, unautofixables) => {
|
|
21
|
+
console.log(brightMagentaStr('detected'));
|
|
22
|
+
console.log(fullMatch);
|
|
23
|
+
console.log(brightCyanStr("we can't automatically suggest you any fix for"));
|
|
24
|
+
console.log(unautofixables);
|
|
25
|
+
console.log('please check https://qa.dimsum.rd.elliemae.io/ documentation to update the import statements');
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const logMatch = (match) => {
|
|
29
|
+
const { fullMatch, componentVariable, fullFromPack, optionalSubfolder } = match;
|
|
30
|
+
console.log(yellowStr('--------------------------------'));
|
|
31
|
+
if (optionalSubfolder !== '') logSubfolderImport(fullMatch, componentVariable, fullFromPack);
|
|
32
|
+
else {
|
|
33
|
+
const csvComponents = componentVariable.replace(/{+/g, '').replace(/}+/g, '').replace(/\s+/g, '').split(',');
|
|
34
|
+
const { newImportStatements, unAutoFixables } = mapComponentsToImportStatement(csvComponents);
|
|
35
|
+
logSuggestedNewImportStatements(fullMatch, newImportStatements);
|
|
36
|
+
if (unAutoFixables) logUnAutoFixables(fullMatch, unAutoFixables);
|
|
37
|
+
}
|
|
38
|
+
console.log(yellowStr('--------------------------------'));
|
|
39
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { problematicImportRegexp } from './constants.mjs';
|
|
2
|
+
|
|
3
|
+
export function matchDsBasicImports(filecontent = '') {
|
|
4
|
+
const matches = [];
|
|
5
|
+
if (filecontent) {
|
|
6
|
+
const dsBasicImportsMatches = [...filecontent.matchAll(problematicImportRegexp)];
|
|
7
|
+
dsBasicImportsMatches.forEach((matchData) => {
|
|
8
|
+
// repeated commas here are not an error, I am skipping the value from the array to deconstruct the next one
|
|
9
|
+
const [fullMatch, , componentVariable, , fullFromPack, optionalSubfolder = ''] = matchData;
|
|
10
|
+
matches.push({
|
|
11
|
+
fullMatch: fullMatch.trim(),
|
|
12
|
+
componentVariable: componentVariable.trim(),
|
|
13
|
+
fullFromPack: fullFromPack.trim().replace(/'+/g, '').replace(/"+/g, ''),
|
|
14
|
+
optionalSubfolder: optionalSubfolder.trim(),
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return matches;
|
|
20
|
+
}
|