@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.
Files changed (33) hide show
  1. package/bin/cli/code-mods/cli.mjs +34 -0
  2. package/bin/cli/code-mods/command-arguments/promptCheckEmPackagesInconsistencies.mjs +22 -0
  3. package/bin/cli/code-mods/command-arguments/promptDeprecatedPackages.mjs +13 -0
  4. package/bin/cli/code-mods/command-arguments/promptFixLegacyImports.mjs +21 -0
  5. package/bin/cli/code-mods/command-arguments/promptHelpMigrateToV3.mjs +21 -0
  6. package/bin/cli/code-mods/command-arguments/promptMissingPackages.mjs +29 -0
  7. package/bin/cli/code-mods/command-logics/check-deprecated-packages/constants.mjs +87 -0
  8. package/bin/cli/code-mods/command-logics/check-deprecated-packages/getEmDsPackagesFromNPMLS.mjs +18 -0
  9. package/bin/cli/code-mods/command-logics/check-deprecated-packages/index.mjs +19 -0
  10. package/bin/cli/code-mods/command-logics/check-deprecated-packages/logResults.mjs +35 -0
  11. package/bin/cli/code-mods/command-logics/check-missing-packages/index.mjs +113 -0
  12. package/bin/cli/code-mods/command-logics/check-packages-inconsistencies/getPackageJsonEmDsVersions.mjs +43 -0
  13. package/bin/cli/code-mods/command-logics/check-packages-inconsistencies/index.mjs +96 -0
  14. package/bin/cli/code-mods/command-logics/execute-commands-map.mjs +31 -0
  15. package/bin/cli/code-mods/command-logics/fix-legacy-imports/index.mjs +29 -0
  16. package/bin/cli/code-mods/command-logics/fix-legacy-imports/legacyImportMap.mjs +105 -0
  17. package/bin/cli/code-mods/command-logics/help-migrate-to-v3/constants.mjs +284 -0
  18. package/bin/cli/code-mods/command-logics/help-migrate-to-v3/getSolutions.mjs +106 -0
  19. package/bin/cli/code-mods/command-logics/help-migrate-to-v3/index.mjs +90 -0
  20. package/bin/cli/code-mods/command-logics/help-migrate-to-v3/logMatch.mjs +39 -0
  21. package/bin/cli/code-mods/command-logics/help-migrate-to-v3/matchDsBasicImports.mjs +20 -0
  22. package/bin/cli/code-mods/command-logics/help-migrate-to-v3/replaceFromSolutions.mjs +15 -0
  23. package/bin/cli/code-mods/commands.mjs +11 -0
  24. package/bin/cli/code-mods/inquirer-questions-prompter.mjs +60 -0
  25. package/bin/cli/utils/CLI_COLORS.mjs +81 -0
  26. package/bin/cli/utils/generatePathFromCurrentFolder.mjs +11 -0
  27. package/bin/cli/utils/getLatestDimsumVersion.mjs +15 -0
  28. package/bin/cli/utils/globArray.mjs +11 -0
  29. package/bin/cli/utils/index.mjs +5 -0
  30. package/bin/cli/utils/matchHelpers.mjs +38 -0
  31. package/bin/cli/utils/replaceFromMap.mjs +15 -0
  32. package/bin/ds-codemods.mjs +4 -0
  33. 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
+ }