@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.
- package/CHANGELOG.md +32 -0
- package/LICENSE +201 -0
- package/README.md +77 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +75 -0
- package/dist/cjs/types/cliArguments.d.ts +4 -0
- package/dist/cjs/types/cliArguments.js +2 -0
- package/dist/cjs/types/config.d.ts +12 -0
- package/dist/cjs/types/config.js +2 -0
- package/dist/cjs/types/state.d.ts +6 -0
- package/dist/cjs/types/state.js +2 -0
- package/dist/cjs/utils/console.d.ts +5 -0
- package/dist/cjs/utils/console.js +34 -0
- package/dist/cjs/utils/getCliArguments.d.ts +10 -0
- package/dist/cjs/utils/getCliArguments.js +63 -0
- package/dist/cjs/utils/getConfigFile.d.ts +3 -0
- package/dist/cjs/utils/getConfigFile.js +23 -0
- package/dist/cjs/utils/getMonorepoPrefix.d.ts +6 -0
- package/dist/cjs/utils/getMonorepoPrefix.js +33 -0
- package/dist/cjs/utils/initializeState.d.ts +8 -0
- package/dist/cjs/utils/initializeState.js +40 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +70 -0
- package/dist/esm/types/cliArguments.d.ts +4 -0
- package/dist/esm/types/cliArguments.js +1 -0
- package/dist/esm/types/config.d.ts +12 -0
- package/dist/esm/types/config.js +1 -0
- package/dist/esm/types/state.d.ts +6 -0
- package/dist/esm/types/state.js +1 -0
- package/dist/esm/utils/console.d.ts +5 -0
- package/dist/esm/utils/console.js +23 -0
- package/dist/esm/utils/getCliArguments.d.ts +10 -0
- package/dist/esm/utils/getCliArguments.js +57 -0
- package/dist/esm/utils/getConfigFile.d.ts +3 -0
- package/dist/esm/utils/getConfigFile.js +17 -0
- package/dist/esm/utils/getMonorepoPrefix.d.ts +6 -0
- package/dist/esm/utils/getMonorepoPrefix.js +27 -0
- package/dist/esm/utils/initializeState.d.ts +8 -0
- package/dist/esm/utils/initializeState.js +34 -0
- package/package.json +42 -0
- package/src/index.ts +77 -0
- package/src/types/cliArguments.ts +5 -0
- package/src/types/config.ts +12 -0
- package/src/types/state.ts +6 -0
- package/src/utils/console.ts +27 -0
- package/src/utils/getCliArguments.ts +66 -0
- package/src/utils/getConfigFile.ts +23 -0
- package/src/utils/getMonorepoPrefix.ts +32 -0
- 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
|
+
}
|