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