@cloud-ru/ft-deps-validator 1.1.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 (49) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +201 -0
  3. package/README.md +77 -0
  4. package/dist/cjs/index.d.ts +2 -0
  5. package/dist/cjs/index.js +75 -0
  6. package/dist/cjs/types/cliArguments.d.ts +4 -0
  7. package/dist/cjs/types/cliArguments.js +2 -0
  8. package/dist/cjs/types/config.d.ts +12 -0
  9. package/dist/cjs/types/config.js +2 -0
  10. package/dist/cjs/types/state.d.ts +6 -0
  11. package/dist/cjs/types/state.js +2 -0
  12. package/dist/cjs/utils/console.d.ts +5 -0
  13. package/dist/cjs/utils/console.js +34 -0
  14. package/dist/cjs/utils/getCliArguments.d.ts +10 -0
  15. package/dist/cjs/utils/getCliArguments.js +63 -0
  16. package/dist/cjs/utils/getConfigFile.d.ts +3 -0
  17. package/dist/cjs/utils/getConfigFile.js +23 -0
  18. package/dist/cjs/utils/getMonorepoPrefix.d.ts +6 -0
  19. package/dist/cjs/utils/getMonorepoPrefix.js +33 -0
  20. package/dist/cjs/utils/initializeState.d.ts +8 -0
  21. package/dist/cjs/utils/initializeState.js +40 -0
  22. package/dist/esm/index.d.ts +2 -0
  23. package/dist/esm/index.js +70 -0
  24. package/dist/esm/types/cliArguments.d.ts +4 -0
  25. package/dist/esm/types/cliArguments.js +1 -0
  26. package/dist/esm/types/config.d.ts +12 -0
  27. package/dist/esm/types/config.js +1 -0
  28. package/dist/esm/types/state.d.ts +6 -0
  29. package/dist/esm/types/state.js +1 -0
  30. package/dist/esm/utils/console.d.ts +5 -0
  31. package/dist/esm/utils/console.js +23 -0
  32. package/dist/esm/utils/getCliArguments.d.ts +10 -0
  33. package/dist/esm/utils/getCliArguments.js +57 -0
  34. package/dist/esm/utils/getConfigFile.d.ts +3 -0
  35. package/dist/esm/utils/getConfigFile.js +17 -0
  36. package/dist/esm/utils/getMonorepoPrefix.d.ts +6 -0
  37. package/dist/esm/utils/getMonorepoPrefix.js +27 -0
  38. package/dist/esm/utils/initializeState.d.ts +8 -0
  39. package/dist/esm/utils/initializeState.js +34 -0
  40. package/package.json +42 -0
  41. package/src/index.ts +77 -0
  42. package/src/types/cliArguments.ts +5 -0
  43. package/src/types/config.ts +12 -0
  44. package/src/types/state.ts +6 -0
  45. package/src/utils/console.ts +27 -0
  46. package/src/utils/getCliArguments.ts +66 -0
  47. package/src/utils/getConfigFile.ts +23 -0
  48. package/src/utils/getMonorepoPrefix.ts +32 -0
  49. package/src/utils/initializeState.ts +51 -0
@@ -0,0 +1,51 @@
1
+ import path from 'path';
2
+
3
+ import { State } from '../types/state';
4
+ import { getMonorepoPrefix } from './getMonorepoPrefix';
5
+
6
+ type Options = {
7
+ cwd: string;
8
+ folders: string[];
9
+ prefix?: string;
10
+ };
11
+
12
+ export function initializeState({ cwd, folders, prefix }: Options): State {
13
+ const internalPackages: Record<string, string> = {};
14
+ const initialState: State = {
15
+ wrongVersions: [],
16
+ internalAsDev: [],
17
+ unusedDeps: [],
18
+ missing: [],
19
+ };
20
+
21
+ const monorepoName = prefix || getMonorepoPrefix({ cwd, folders });
22
+ if (!monorepoName) {
23
+ throw new Error('[ERROR] Prefix was not specified and was not found');
24
+ }
25
+
26
+ const monorepoPackageRegexp = new RegExp(`${monorepoName}\\/`);
27
+
28
+ for (const folder of folders) {
29
+ // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-var-requires
30
+ const pkg = require(path.resolve(folder, 'package.json'));
31
+ internalPackages[pkg.name] = pkg.version;
32
+ }
33
+
34
+ for (const folder of folders) {
35
+ // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-var-requires
36
+ const pkg = require(path.resolve(folder, 'package.json'));
37
+ const usedInternal = Object.keys(pkg.dependencies || {}).filter(x => monorepoPackageRegexp.test(x));
38
+ usedInternal.forEach(dep => {
39
+ if (pkg.dependencies[dep] !== internalPackages[dep]) {
40
+ initialState.wrongVersions.push(
41
+ `Error in ${pkg.name}: ${dep} has ${pkg.dependencies[dep]}, but correct version is ${internalPackages[dep]}`,
42
+ );
43
+ }
44
+ });
45
+
46
+ const usedInternalDev = Object.keys(pkg.devDependencies || {}).filter(x => monorepoPackageRegexp.test(x));
47
+ usedInternalDev.forEach(dep => initialState.internalAsDev.push(`Error in ${pkg.name}: ${dep}`));
48
+ }
49
+
50
+ return initialState;
51
+ }