@elliemae/ds-codemods 3.0.0-next.9 → 3.0.0-rc.0

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,34 @@
1
+ import arg from 'arg';
2
+ import { promptForMissingOptions } from './inquirer-questions-prompter';
3
+ import { executeCommandsMap } from './command-logics/execute-commands-map';
4
+
5
+ function parseArgumentsIntoOptions(rawArgs) {
6
+ const args = arg(
7
+ {
8
+ '--cwd': String,
9
+ '--globPattern': String,
10
+ '--globPatternIgnore': String,
11
+ '--projectFolderPath': String,
12
+ '--ignorePackagesGlobPattern': String,
13
+ '--ignoreFilesGlobPattern': String,
14
+ },
15
+ {
16
+ argv: rawArgs.slice(2),
17
+ },
18
+ );
19
+ return {
20
+ cwd: args['--cwd'],
21
+ globPattern: args['--globPattern'],
22
+ globPatternIgnore: args['--globPatternIgnore'],
23
+ projectFolderPath: args['--projectFolderPath'],
24
+ ignorePackagesGlobPattern: args['--ignorePackagesGlobPattern'],
25
+ ignoreFilesGlobPattern: args['--ignoreFilesGlobPattern'],
26
+ script: args._[0],
27
+ };
28
+ }
29
+
30
+ export async function cli(args) {
31
+ let options = parseArgumentsIntoOptions(args);
32
+ options = await promptForMissingOptions(options);
33
+ executeCommandsMap(args, options);
34
+ }
@@ -0,0 +1,22 @@
1
+ export const getPackagesInconsistenciesQuestions = (originalOptions) => {
2
+ const extraOptions = [];
3
+ const { globPattern, globPatternIgnore } = originalOptions;
4
+ if (!globPattern && globPattern !== '') {
5
+ extraOptions.push({
6
+ type: 'input',
7
+ name: 'globPattern',
8
+ message:
9
+ 'Please provide a comma separated list of globPatterns catching the file in which to check for inconsistencies',
10
+ default: './package.json', // './packages/ds-codemods/test-ables/check-packages-inconsistencies/package.json.test',
11
+ });
12
+ }
13
+ if (!globPatternIgnore && globPatternIgnore !== '') {
14
+ extraOptions.push({
15
+ type: 'input',
16
+ name: 'globPatternIgnore',
17
+ message: 'Please provide a comma separated list of ignored files for your globPattern',
18
+ default: '**/node_modules/**/*',
19
+ });
20
+ }
21
+ return extraOptions;
22
+ };
@@ -0,0 +1,13 @@
1
+ export const getDeprecatedPackagesQuestions = (originalOptions) => {
2
+ const extraOptions = [];
3
+ const { cwd } = originalOptions;
4
+ if (!cwd && cwd !== '') {
5
+ extraOptions.push({
6
+ type: 'input',
7
+ name: 'globPatternIgnore',
8
+ message: 'Please provide the project root directory (where node_modules folder lives)',
9
+ default: './',
10
+ });
11
+ }
12
+ return extraOptions;
13
+ };
@@ -0,0 +1,21 @@
1
+ export const getLegacyImportsQuestions = (originalOptions) => {
2
+ const extraOptions = [];
3
+ const { globPattern, globPatternIgnore } = originalOptions;
4
+ if (!globPattern && globPattern !== '') {
5
+ extraOptions.push({
6
+ type: 'input',
7
+ name: 'globPattern',
8
+ message: 'Please provide a comma separated list of globPatterns catching the file in which to fix the imports',
9
+ default: './**/*.js,./**/*.jsx,./**/*.ts,./**/*.tsx',
10
+ });
11
+ }
12
+ if (!globPatternIgnore && globPatternIgnore !== '') {
13
+ extraOptions.push({
14
+ type: 'input',
15
+ name: 'globPatternIgnore',
16
+ message: 'Please provide a comma separated list of ignored files for your globPattern',
17
+ default: '**/node_modules/**/*',
18
+ });
19
+ }
20
+ return extraOptions;
21
+ };
@@ -0,0 +1,21 @@
1
+ export const getHelpMigrateToV3Questions = (originalOptions) => {
2
+ const extraOptions = [];
3
+ const { globPattern, globPatternIgnore } = originalOptions;
4
+ if (!globPattern && globPattern !== '') {
5
+ extraOptions.push({
6
+ type: 'input',
7
+ name: 'globPattern',
8
+ message: 'Please provide a comma separated list of globPatterns catching the file in which to fix the imports',
9
+ default: './**/*.js,./**/*.jsx,./**/*.ts,./**/*.tsx',
10
+ });
11
+ }
12
+ if (!globPatternIgnore && globPatternIgnore !== '') {
13
+ extraOptions.push({
14
+ type: 'input',
15
+ name: 'globPatternIgnore',
16
+ message: 'Please provide a comma separated list of ignored files for your globPattern',
17
+ default: '**/node_modules/**/*',
18
+ });
19
+ }
20
+ return extraOptions;
21
+ };
@@ -0,0 +1,29 @@
1
+ export const getMissingPackagesQuestions = (originalOptions) => {
2
+ const extraOptions = [];
3
+ const { projectFolderPath, ignorePackagesGlobPattern, ignoreFilesGlobPattern } = originalOptions;
4
+ if (!projectFolderPath && projectFolderPath !== '') {
5
+ extraOptions.push({
6
+ type: 'input',
7
+ name: 'projectFolderPath',
8
+ message: 'path to the project folder containing package.json file',
9
+ default: './',
10
+ });
11
+ }
12
+ if (!ignorePackagesGlobPattern && ignorePackagesGlobPattern !== '') {
13
+ extraOptions.push({
14
+ type: 'input',
15
+ name: 'ignorePackagesGlobPattern',
16
+ message: 'Please provide a comma separated list of globPatterns for ignored packages, if any.',
17
+ default: '',
18
+ });
19
+ }
20
+ if (!ignoreFilesGlobPattern && ignoreFilesGlobPattern !== '') {
21
+ extraOptions.push({
22
+ type: 'input',
23
+ name: 'ignoreFilesGlobPattern',
24
+ message: 'Please provide a comma separated list of globPatterns for ignored files, if any.',
25
+ default: '**/*.eslintrc.js',
26
+ });
27
+ }
28
+ return extraOptions;
29
+ };
@@ -0,0 +1,87 @@
1
+ export const SEVERITY = {
2
+ NON_STARTER: ['Failing to upgrade will make the project impossible to start/use', 1],
3
+ KNOWN_ISSUES: [
4
+ 'The component has unfixable known issues. Failing to upgrade means APP will have to live with those',
5
+ 2,
6
+ ],
7
+ FRAGILE_AND_UNMANTAINED: [
8
+ 'Failing to upgrade will make the project fragile and any error will have to be addressed by the APP team',
9
+ 3,
10
+ ],
11
+ UNMANTAINED: ['Failing to upgrade will mean that any error will have to be addressed by the APP team', 4],
12
+ };
13
+
14
+ export const SOLUTIONS = {
15
+ REMOVED: 'the component has been regarded as supreflous and has hencheforth been removed in favor of examples',
16
+ NEW_VERSION_BREAKING: 'the component impedes further enhancments/bugfixes, a new version ex-novo has been created.',
17
+ };
18
+
19
+ export const DEPRECATED_PACKAGES = {
20
+ '@elliemae/ds-datagrids': {
21
+ name: 'data-grid',
22
+ solution: SOLUTIONS.NEW_VERSION_BREAKING,
23
+ severity: SEVERITY.KNOWN_ISSUES,
24
+ // TODO create relative confluence
25
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Breaking+changes+-+Migration+steps+and+rationale',
26
+ },
27
+ '@elliemae/ds-date-picker': {
28
+ name: 'date-picker',
29
+ solution: SOLUTIONS.NEW_VERSION_BREAKING,
30
+ severity: SEVERITY.KNOWN_ISSUES,
31
+ // TODO create relative confluence
32
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Breaking+changes+-+Migration+steps+and+rationale',
33
+ },
34
+ '@elliemae/ds-date-range-picker': {
35
+ name: 'date-range-picker',
36
+ solution: SOLUTIONS.NEW_VERSION_BREAKING,
37
+ severity: SEVERITY.KNOWN_ISSUES,
38
+ // TODO create relative confluence
39
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Breaking+changes+-+Migration+steps+and+rationale',
40
+ },
41
+ '@elliemae/ds-date-time-picker': {
42
+ name: 'date-time-picker',
43
+ solution: SOLUTIONS.NEW_VERSION_BREAKING,
44
+ severity: SEVERITY.KNOWN_ISSUES,
45
+ // TODO create relative confluence
46
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Breaking+changes+-+Migration+steps+and+rationale',
47
+ },
48
+ '@elliemae/ds-time-picker': {
49
+ name: 'time-picker',
50
+ solution: SOLUTIONS.NEW_VERSION_BREAKING,
51
+ severity: SEVERITY.KNOWN_ISSUES,
52
+ // TODO create relative confluence
53
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Breaking+changes+-+Migration+steps+and+rationale',
54
+ },
55
+ '@elliemae/ds-button-group': {
56
+ name: 'button-group',
57
+ solution: SOLUTIONS.REMOVED,
58
+ severity: SEVERITY.NON_STARTER,
59
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Button+Group+-+Dimsum+2.x',
60
+ },
61
+ '@elliemae/ds-card-array': {
62
+ name: 'card-array',
63
+ solution: SOLUTIONS.REMOVED,
64
+ severity: SEVERITY.NON_STARTER,
65
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Card+Array+-+Dimsum+2.x',
66
+ },
67
+ '@elliemae/ds-form': {
68
+ subComponents: [
69
+ {
70
+ name: 'combobox',
71
+ solution: SOLUTIONS.NEW_VERSION_BREAKING,
72
+ severity: SEVERITY.FRAGILE_AND_UNMANTAINED,
73
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Combo-box+-+Dimsum+2.x',
74
+ },
75
+ ],
76
+ },
77
+ '@elliemae/ds-combobox-v1': {
78
+ subComponents: [
79
+ {
80
+ name: 'combobox',
81
+ solution: SOLUTIONS.NEW_VERSION_BREAKING,
82
+ severity: SEVERITY.FRAGILE_AND_UNMANTAINED,
83
+ confluence: 'https://confluence.elliemae.io/display/FEAE/Combo-box+-+Dimsum+2.x',
84
+ },
85
+ ],
86
+ },
87
+ };
@@ -1,5 +1,5 @@
1
- import * as React from "react";
2
- function getEmDsPackagesFromNPMLS(npmLsStdout = "") {
1
+ /* eslint-disable max-statements */
2
+ export function getEmDsPackagesFromNPMLS(npmLsStdout = '') {
3
3
  const dsPackageRegExp = /@elliemae\/ds-.*?@(.*)/gm;
4
4
  const matches = [];
5
5
  if (npmLsStdout) {
@@ -8,14 +8,11 @@ function getEmDsPackagesFromNPMLS(npmLsStdout = "") {
8
8
  const matchObj = {
9
9
  fullMatch,
10
10
  version,
11
- package: fullMatch.split(version)[0].slice(0, -1)
11
+ package: fullMatch.split(version)[0].slice(0, -1),
12
12
  };
13
13
  matches.push(matchObj);
14
14
  });
15
15
  }
16
+
16
17
  return matches;
17
18
  }
18
- export {
19
- getEmDsPackagesFromNPMLS
20
- };
21
- //# sourceMappingURL=getEmDsPackagesFromNPMLS.js.map
@@ -0,0 +1,19 @@
1
+ import { exec } from 'child_process';
2
+ import { getEmDsPackagesFromNPMLS } from './getEmDsPackagesFromNPMLS';
3
+ import { logResults, logCyanQuestion } from './logResults';
4
+
5
+ const npmLs = async ({ cwd }) => {
6
+ const [, stdout] = await new Promise((resolve) => {
7
+ exec('npm ls', { cwd }, (...cbRes) => resolve(cbRes));
8
+ });
9
+ if (stdout) return getEmDsPackagesFromNPMLS(stdout);
10
+ return [];
11
+ };
12
+
13
+ export const checkDeprecatedPackages = async (options) => {
14
+ const installedPackages = await npmLs(options);
15
+ if (installedPackages.length === 0) logCyanQuestion('no dimsum packages found... did you specify the correct cwd?');
16
+ logResults(installedPackages);
17
+ };
18
+
19
+ export default checkDeprecatedPackages;
@@ -0,0 +1,70 @@
1
+ import chalk from 'chalk';
2
+ import { DEPRECATED_PACKAGES } from './constants';
3
+ // Colors
4
+ // black
5
+ // red
6
+ // green
7
+ // yellow
8
+ // blue
9
+ // magenta
10
+ // cyan
11
+ // white
12
+ // blackBright (alias: gray, grey)
13
+ // redBright
14
+ // greenBright
15
+ // yellowBright
16
+ // blueBright
17
+ // magentaBright
18
+ // cyanBright
19
+ // whiteBright
20
+
21
+ // Background colors
22
+ // bgBlack
23
+ // bgRed
24
+ // bgGreen
25
+ // bgYellow
26
+ // bgBlue
27
+ // bgMagenta
28
+ // bgCyan
29
+ // bgWhite
30
+ // bgBlackBright (alias: bgGray, bgGrey)
31
+ // bgRedBright
32
+ // bgGreenBright
33
+ // bgYellowBright
34
+ // bgBlueBright
35
+ // bgMagentaBright
36
+ // bgCyanBright
37
+ // bgWhiteBright
38
+
39
+ const chalkMap = {
40
+ 1: chalk.bold.yellowBright.bgRed,
41
+ 2: chalk.bold.redBright,
42
+ 3: chalk.bold.red,
43
+ 4: chalk.red,
44
+ };
45
+
46
+ const logDeprecatedComponent = ({ name, solution, severity, confluence }) => {
47
+ const [sevDesc, sevLevel] = severity;
48
+ const chalkLog = chalkMap[sevLevel];
49
+ console.log(chalk.yellow('--------------------------------'));
50
+ console.log(chalk.bold.cyan(`${name} deprecation!`));
51
+ console.log(chalkLog(sevDesc));
52
+ console.log(chalk.bold.green(solution));
53
+ console.log(chalk.white(confluence));
54
+ console.log(chalk.yellow('--------------------------------'));
55
+ };
56
+
57
+ export function logCyanQuestion(question) {
58
+ console.log(chalk.cyanBright(question));
59
+ }
60
+
61
+ export function logResults(detectedPackages) {
62
+ detectedPackages.forEach((pack) => {
63
+ const deprecatedMetaInfo = DEPRECATED_PACKAGES[pack.package];
64
+ if (deprecatedMetaInfo) {
65
+ const { subComponents, ...metainfo } = deprecatedMetaInfo;
66
+ if (JSON.stringify(metainfo) !== '{}') logDeprecatedComponent(metainfo);
67
+ if (subComponents) subComponents.forEach(logDeprecatedComponent);
68
+ }
69
+ });
70
+ }
@@ -0,0 +1,82 @@
1
+ /* eslint-disable no-console */
2
+ import depcheck from 'depcheck';
3
+ import chalk from 'chalk';
4
+ import { generatePathFromCurrentFolder } from '../../../utils';
5
+
6
+ const logUnusedDep = (unused) => {
7
+ console.log(chalk.yellowBright('### Found unused dependencies :>>'));
8
+ console.log('```');
9
+ console.log(unused.dependencies);
10
+ console.log('```');
11
+ };
12
+ const logUnusedDevDep = (unused) => {
13
+ console.log(chalk.magentaBright('### Found unused dev dependencies :>>'));
14
+ console.log('```');
15
+ console.log(unused.devDependencies);
16
+ console.log('```');
17
+ };
18
+ const logMissing = (unused) => {
19
+ const missingString = [...Object.keys(unused.missing)].map((pack) => `\t${pack}`).join(',\n');
20
+ console.log(chalk.redBright('### Found missing dependencies :>>'));
21
+ console.log('```');
22
+ console.log('{');
23
+ console.log(missingString);
24
+ console.log('}');
25
+ console.log('```');
26
+ };
27
+
28
+ export const checkMissingPackages = async (options) => {
29
+ const { projectFolderPath, ignorePackagesGlobPattern, ignoreFilesGlobPattern } = options;
30
+ const ignorePatterns = ignorePackagesGlobPattern
31
+ .split(',')
32
+ .map((pattern) => (pattern && pattern !== '' ? generatePathFromCurrentFolder(pattern) : ''));
33
+ const ignoreMatches = ignoreFilesGlobPattern
34
+ .split(',')
35
+ .map((pattern) => (pattern && pattern !== '' ? generatePathFromCurrentFolder(pattern) : ''));
36
+ const depCheckOptions = {
37
+ ignoreBinPackage: false, // ignore the packages with bin entry
38
+ skipMissing: false, // skip calculation of missing dependencies
39
+ parsers: {
40
+ // the target parsers
41
+ '**/*.js': depcheck.parser.jsx,
42
+ '**/*.jsx': depcheck.parser.jsx,
43
+ '**/*.ts': depcheck.parser.typescript,
44
+ '**/*.tsx': depcheck.parser.typescript,
45
+ },
46
+ detectors: [
47
+ depcheck.detector.requireCallExpression,
48
+ depcheck.detector.requireResolveCallExpression,
49
+ depcheck.detector.importDeclaration,
50
+ depcheck.detector.typescriptImportType,
51
+ depcheck.detector.exportDeclaration,
52
+ ],
53
+ specials: [
54
+ // the target special parsers
55
+ depcheck.special.babel,
56
+ depcheck.special.bin,
57
+ depcheck.special.eslint,
58
+ depcheck.special.husky,
59
+ depcheck.special.jest,
60
+ depcheck.special.mocha,
61
+ depcheck.special.prettier,
62
+ depcheck.special.tslint,
63
+ depcheck.special.webpack,
64
+ ],
65
+ ignorePatterns,
66
+ ignoreMatches,
67
+ };
68
+ const pathToRoot = generatePathFromCurrentFolder(projectFolderPath);
69
+
70
+ depcheck(pathToRoot, depCheckOptions).then((unused) => {
71
+ const unusedDep = Array.isArray(unused.dependencies) && unused.dependencies.length > 0;
72
+ const unusedDevDep = Array.isArray(unused.devDependencies) && unused.devDependencies.length > 0;
73
+ const missing = Object.keys(unused.missing).length > 0;
74
+ const hasErrors = unusedDep || unusedDevDep || missing;
75
+ console.log(chalk.bold.cyanBright(`# Dependencies results for ${pathToRoot}`));
76
+ console.log(chalk.bold.cyanBright(`[${pathToRoot}](${pathToRoot}package.json)`));
77
+ if (unusedDep) logUnusedDep(unused);
78
+ if (unusedDevDep) logUnusedDevDep(unused);
79
+ if (missing) logMissing(unused);
80
+ if (!hasErrors) console.log(chalk.bold.green(`no problems found!`));
81
+ });
82
+ };
@@ -1,20 +1,23 @@
1
- import * as React from "react";
2
- function getPackageJsonEmDsVersions(packageJsonAsString = "") {
1
+ /* eslint-disable max-statements */
2
+ export function getPackageJsonEmDsVersions(packageJsonAsString = '') {
3
3
  const dependenciesRegExp = /"dependencies": {(.*?)},?/gs;
4
4
  const devDependenciesRegExp = /"devDependencies": {(.*?)},?/gs;
5
5
  const peerDependenciesRegExp = /"peerDependencies": {(.*?)},?/gs;
6
6
  const dsPackageRegExp = /"@elliemae\/ds-.*?": "(.*?)",?/gm;
7
+
7
8
  const [dependenciesString] = packageJsonAsString.match(dependenciesRegExp) || [];
8
9
  const [devDependenciesString] = packageJsonAsString.match(devDependenciesRegExp) || [];
9
10
  const [peerDependenciesString] = packageJsonAsString.match(peerDependenciesRegExp) || [];
11
+
10
12
  const matches = [];
11
13
  const dependenciesMatches = [];
12
14
  const devDependenciesMatches = [];
13
15
  const peerDependenciesMatches = [];
16
+
14
17
  if (dependenciesString) {
15
18
  const depMatches = [...dependenciesString.matchAll(dsPackageRegExp)];
16
19
  depMatches.forEach(([fullMatch, version]) => {
17
- const matchObj = { fullMatch, version, dependencyType: "dependency" };
20
+ const matchObj = { fullMatch, version, dependencyType: 'dependency' };
18
21
  matches.push(matchObj);
19
22
  dependenciesMatches.push(matchObj);
20
23
  });
@@ -22,7 +25,7 @@ function getPackageJsonEmDsVersions(packageJsonAsString = "") {
22
25
  if (devDependenciesString) {
23
26
  const devDepMatches = [...devDependenciesString.matchAll(dsPackageRegExp)];
24
27
  devDepMatches.forEach(([fullMatch, version]) => {
25
- const matchObj = { fullMatch, version, dependencyType: "devDependency" };
28
+ const matchObj = { fullMatch, version, dependencyType: 'devDependency' };
26
29
  matches.push(matchObj);
27
30
  devDependenciesMatches.push(matchObj);
28
31
  });
@@ -30,14 +33,11 @@ function getPackageJsonEmDsVersions(packageJsonAsString = "") {
30
33
  if (peerDependenciesString) {
31
34
  const peerDepMatches = [...peerDependenciesString.matchAll(dsPackageRegExp)];
32
35
  peerDepMatches.forEach(([fullMatch, version]) => {
33
- const matchObj = { fullMatch, version, dependencyType: "peerDependency" };
36
+ const matchObj = { fullMatch, version, dependencyType: 'peerDependency' };
34
37
  matches.push(matchObj);
35
38
  peerDependenciesMatches.push(matchObj);
36
39
  });
37
40
  }
41
+
38
42
  return { matches, dependenciesMatches, devDependenciesMatches, peerDependenciesMatches };
39
43
  }
40
- export {
41
- getPackageJsonEmDsVersions
42
- };
43
- //# sourceMappingURL=getPackageJsonEmDsVersions.js.map
@@ -0,0 +1,59 @@
1
+ import fs from 'fs';
2
+ import chalk from 'chalk';
3
+ import { getPackageJsonEmDsVersions } from './getPackageJsonEmDsVersions';
4
+ import {
5
+ generatePathFromCurrentFolder,
6
+ globArray,
7
+ getHighestMatchVersion,
8
+ getLatestDimsumVersion,
9
+ } from '../../../utils';
10
+
11
+ const getErrors = (highestVersion, matches = []) => {
12
+ const errors = [];
13
+ let hasErrors = false;
14
+ matches.forEach((match) => {
15
+ const { version } = match;
16
+ if (version !== highestVersion.fullVersion) {
17
+ hasErrors = true;
18
+ errors.push({ ...match, suggestedVersion: highestVersion.fullVersion });
19
+ }
20
+ });
21
+ return { errors, hasErrors };
22
+ };
23
+ export const checkPackagesInconsistencies = async (options) => {
24
+ const csvGlobs = options.globPattern.split(',').map((pattern) => generatePathFromCurrentFolder(pattern));
25
+
26
+ const ignoredPatterns = options.globPatternIgnore.split(',');
27
+ const globOptions = { ignore: ignoredPatterns };
28
+
29
+ const pathToFileToProcess = globArray(csvGlobs, globOptions);
30
+ const { latestVersionParsed } = await getLatestDimsumVersion();
31
+
32
+ pathToFileToProcess.forEach((path) => {
33
+ const fileContent = fs.readFileSync(path, {
34
+ encoding: 'utf8',
35
+ flag: 'r',
36
+ });
37
+ if (fileContent && typeof fileContent === 'string') {
38
+ const { matches } = getPackageJsonEmDsVersions(fileContent);
39
+ const highestVersion = getHighestMatchVersion(matches);
40
+ const { errors, hasErrors } = getErrors(highestVersion, matches);
41
+ if (hasErrors) {
42
+ console.log(chalk.yellow('Your Package json has some Elliemae dimsum inconsistencies'));
43
+ console.log(errors);
44
+ console.log(chalk.yellow('Please solve them as soon as possible to avoid unexpected errors'));
45
+ }
46
+ const shouldUpdateToNewest =
47
+ highestVersion.major < latestVersionParsed.major ||
48
+ (highestVersion.major === latestVersionParsed.major && highestVersion.minor < latestVersionParsed.minor - 6);
49
+ if (shouldUpdateToNewest) {
50
+ console.log(chalk.bold.yellowBright.bgRed('We detected that you are using a version that is too outdated'));
51
+ console.log(chalk.yellowBright(`Detected (highest) version:`, chalk.bold.red(highestVersion.fullVersion)));
52
+ console.log(chalk.yellowBright(`Latest version:`, chalk.bold.cyanBright(latestVersionParsed.fullVersion)));
53
+ console.log(chalk.bold.yellowBright.bgRed('Please update to the newest version release as soon as possible!'));
54
+ }
55
+ }
56
+ });
57
+ };
58
+
59
+ export default checkPackagesInconsistencies;
@@ -1,10 +1,11 @@
1
- import * as React from "react";
2
- import { fixLegacyImports } from "./fix-legacy-imports";
3
- import { checkPackagesInconsistencies } from "./check-packages-inconsistencies";
4
- import { checkMissingPackages } from "./check-missing-packages";
5
- import { checkDeprecatedPackages } from "./check-deprecated-packages";
6
- import { COMMANDS } from "../commands";
7
- async function executeCommandsMap(args, options) {
1
+ import { fixLegacyImports } from './fix-legacy-imports';
2
+ import { checkPackagesInconsistencies } from './check-packages-inconsistencies';
3
+ import { checkMissingPackages } from './check-missing-packages';
4
+ import { checkDeprecatedPackages } from './check-deprecated-packages';
5
+ import { helpMigrateToV3 } from './help-migrate-to-v3';
6
+ import { COMMANDS } from '../commands';
7
+
8
+ export async function executeCommandsMap(args, options) {
8
9
  switch (options.script) {
9
10
  case COMMANDS.FIX_LEGACY_IMPORTS:
10
11
  fixLegacyImports(options);
@@ -21,11 +22,10 @@ async function executeCommandsMap(args, options) {
21
22
  case COMMANDS.CHECK_DEPRECATED_PACKAGES:
22
23
  checkDeprecatedPackages(options);
23
24
  break;
25
+ case COMMANDS.HELP_MIGRATE_TO_V3:
26
+ helpMigrateToV3(options);
27
+ break;
24
28
  default:
25
29
  break;
26
30
  }
27
31
  }
28
- export {
29
- executeCommandsMap
30
- };
31
- //# sourceMappingURL=execute-commands-map.js.map
@@ -0,0 +1,29 @@
1
+ import fs from 'fs';
2
+ import fse from 'fs-extra';
3
+ import { generatePathFromCurrentFolder, replaceFromMap, globArray } from '../../../utils';
4
+ import { legacyImportMap, legacyImportMapRevert } from './legacyImportMap';
5
+
6
+ export const fixLegacyImports = (options, isRevert = false) => {
7
+ const csvGlobs = options.globPattern.split(',').map((pattern) => generatePathFromCurrentFolder(pattern));
8
+
9
+ const ignoredPatterns = options.globPatternIgnore.split(',');
10
+ const globOptions = { ignore: ignoredPatterns };
11
+
12
+ const pathToFileToProcess = globArray(csvGlobs, globOptions);
13
+
14
+ const replaceMap = isRevert ? legacyImportMapRevert : legacyImportMap;
15
+ console.log('replaceMap :>> ', replaceMap);
16
+ pathToFileToProcess.forEach((path) => {
17
+ console.log('path :>> ', path);
18
+ const fileContent = fs.readFileSync(path, {
19
+ encoding: 'utf8',
20
+ flag: 'r',
21
+ });
22
+ if (fileContent && typeof fileContent === 'string') {
23
+ const newContent = replaceFromMap(fileContent, replaceMap);
24
+ fse.outputFileSync(path, newContent);
25
+ }
26
+ });
27
+ };
28
+
29
+ export default fixLegacyImports;