@bigbinary/neeto-audit-frontend 2.0.12 → 2.0.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-audit-frontend",
3
- "version": "2.0.12",
3
+ "version": "2.0.14",
4
4
  "description": "Audits neeto frontend codebase for issues and suggests a fix.",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -28,7 +28,7 @@
28
28
  "dependencies": {
29
29
  "@bigbinary/neeto-cist": "1.0.8",
30
30
  "@bigbinary/neeto-commons-frontend": "3.1.10",
31
- "axios": "1.6.0",
31
+ "axios": "1.7.4",
32
32
  "chalk": "5.3.0",
33
33
  "commander": "11.1.0",
34
34
  "ora": "8.0.1",
@@ -1,5 +1,5 @@
1
- import { existsBy, isNotEmpty } from "@bigbinary/neeto-cist";
2
- import { mergeDeepRight, objOf } from "ramda";
1
+ import { existsBy, isNotEmpty, findBy } from "@bigbinary/neeto-cist";
2
+ import { mergeDeepRight, objOf, pick } from "ramda";
3
3
 
4
4
  import recommendedDependencies from "../../../common/recommendedDependencies";
5
5
  import { NANO_TYPE_MAP, PACKAGE_JSON_PATH, STATUSES } from "../../constants";
@@ -7,12 +7,12 @@ import {
7
7
  createOrReplaceFile,
8
8
  execute,
9
9
  getNanoType,
10
- getPackageJson
10
+ getPackageJson,
11
11
  } from "../../utils";
12
12
  import {
13
13
  getInstallationCommands,
14
14
  getOutdatedPackages,
15
- sortByKey
15
+ sortByKey,
16
16
  } from "./utils";
17
17
 
18
18
  const recommendedPackageVersions = async (debug) => {
@@ -35,17 +35,28 @@ const recommendedPackageVersions = async (debug) => {
35
35
  );
36
36
 
37
37
  const fix = async (debug) => {
38
+ const outdatedPeerDependenciesKeys = findBy(
39
+ { type: "peerDependencies" },
40
+ packagesToUpdate
41
+ )?.outdatedPackages;
42
+
43
+ const peerDependenciesToBeUpdated = pick(
44
+ outdatedPeerDependenciesKeys,
45
+ recommendedVersions.peerDependencies
46
+ );
47
+
38
48
  let newPackageJson = mergeDeepRight(
39
49
  packageJson,
40
- objOf("peerDependencies", recommendedVersions.peerDependencies)
50
+ objOf("peerDependencies", peerDependenciesToBeUpdated)
41
51
  );
52
+
42
53
  newPackageJson = sortByKey(newPackageJson);
43
54
 
44
- isNotEmpty(recommendedVersions.peerDependencies) &&
55
+ isNotEmpty(peerDependenciesToBeUpdated) &&
45
56
  (await createOrReplaceFile({
46
57
  relativeFilePath: PACKAGE_JSON_PATH,
47
58
  content: JSON.stringify(newPackageJson, null, 2),
48
- debug
59
+ debug,
49
60
  }));
50
61
 
51
62
  const commands = getInstallationCommands(
@@ -67,7 +78,7 @@ const recommendedPackageVersions = async (debug) => {
67
78
  return {
68
79
  error: "The dependency packages are not using the recommended versions.",
69
80
  status: STATUSES.FAIL,
70
- fix
81
+ fix,
71
82
  };
72
83
  }
73
84
 
@@ -12,9 +12,10 @@ import {
12
12
  isEmpty,
13
13
  startsWith,
14
14
  includes,
15
- __
15
+ pick,
16
+ __,
16
17
  } from "ramda";
17
- import { filterBy, findBy, isNotEmpty } from "@bigbinary/neeto-cist";
18
+ import { filterBy, findBy } from "@bigbinary/neeto-cist";
18
19
 
19
20
  import { DEPENDENCY_TYPES, MAX_RETRIES, REQUEST_DELAY } from "./constants";
20
21
 
@@ -23,39 +24,37 @@ const updateBigbinaryPackages = async (recommendedList) => {
23
24
  startsWith("@bigbinary")
24
25
  );
25
26
 
26
- if (isNotEmpty(auditPackages)) {
27
- let success = false;
28
- let retries = 0;
29
-
30
- while (!success && retries < MAX_RETRIES) {
31
- try {
32
- const {
33
- data: { nanos }
34
- } = await axios.get(
35
- "https://ops.neetotower.com/api/v1/public/nanos"
36
- );
37
-
38
- const trackedPackages = filterBy(
39
- { name: includes(__, auditPackages) },
40
- nanos
27
+ if (isEmpty(auditPackages)) return recommendedList;
28
+
29
+ let success = false;
30
+ let retries = 0;
31
+
32
+ while (!success && retries < MAX_RETRIES) {
33
+ try {
34
+ const {
35
+ data: { nanos },
36
+ } = await axios.get("https://ops.neetotower.com/api/v1/public/nanos");
37
+
38
+ const trackedPackages = filterBy(
39
+ { name: includes(__, auditPackages) },
40
+ nanos
41
+ );
42
+
43
+ trackedPackages.forEach(({ name, current_version }) => {
44
+ recommendedList[name] = current_version;
45
+ });
46
+
47
+ return recommendedList;
48
+ } catch (error) {
49
+ retries++;
50
+ await new Promise((resolve) => setTimeout(resolve, REQUEST_DELAY));
51
+ if (retries === MAX_RETRIES) {
52
+ console.log(
53
+ chalk.yellowBright(
54
+ "\nCouldn't connect to nanos release tool. Please retry or verify the link is working correctly."
55
+ )
41
56
  );
42
-
43
- trackedPackages.forEach(({ name, current_version }) => {
44
- recommendedList[name] = current_version;
45
- });
46
-
47
- return recommendedList;
48
- } catch (error) {
49
- retries++;
50
- await new Promise((resolve) => setTimeout(resolve, REQUEST_DELAY));
51
- if (retries === MAX_RETRIES) {
52
- console.log(
53
- chalk.yellowBright(
54
- "\nCouldn't connect to nanos release tool. Please retry or verify the link is working correctly."
55
- )
56
- );
57
- process.exitCode = 1;
58
- }
57
+ process.exitCode = 1;
59
58
  }
60
59
  }
61
60
  }
@@ -69,9 +68,26 @@ export const getOutdatedPackages = (recommendedVersions, packageJson) => {
69
68
 
70
69
  const dependencyTypePackages = packageJson[type] ?? {};
71
70
 
72
- const packages = mapObjIndexed(
71
+ let packages = {};
72
+ let dependenciesToCheck = {};
73
+
74
+ if (type === "peerDependencies") {
75
+ const installedDependencies = [
76
+ ...Object.keys(packageJson.dependencies || {}),
77
+ ...Object.keys(packageJson.devDependencies || {}),
78
+ ];
79
+
80
+ dependenciesToCheck = pick(installedDependencies, recommendedList);
81
+ } else {
82
+ dependenciesToCheck = pick(
83
+ Object.keys(dependencyTypePackages),
84
+ recommendedList
85
+ );
86
+ }
87
+
88
+ packages = mapObjIndexed(
73
89
  (_, key) => eqProps(key, recommendedList, dependencyTypePackages),
74
- recommendedList
90
+ dependenciesToCheck
75
91
  );
76
92
 
77
93
  const outdatedPackages = pickBy(not, packages);