@bigbinary/neeto-audit-frontend 2.0.12 → 2.0.13

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/dist/index.js CHANGED
@@ -2852,6 +2852,42 @@ _curry2(function mergeDeepRight(lObj, rObj) {
2852
2852
  }, lObj, rObj);
2853
2853
  });
2854
2854
 
2855
+ /**
2856
+ * Returns a partial copy of an object containing only the keys specified. If
2857
+ * the key does not exist, the property is ignored.
2858
+ *
2859
+ * @func
2860
+ * @memberOf R
2861
+ * @since v0.1.0
2862
+ * @category Object
2863
+ * @sig [k] -> {k: v} -> {k: v}
2864
+ * @param {Array} names an array of String property names to copy onto a new object
2865
+ * @param {Object} obj The object to copy from
2866
+ * @return {Object} A new object with only properties from `names` on it.
2867
+ * @see R.omit, R.props
2868
+ * @example
2869
+ *
2870
+ * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
2871
+ * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}
2872
+ */
2873
+
2874
+ var pick$1 =
2875
+ /*#__PURE__*/
2876
+ _curry2(function pick(names, obj) {
2877
+ var result = {};
2878
+ var idx = 0;
2879
+
2880
+ while (idx < names.length) {
2881
+ if (names[idx] in obj) {
2882
+ result[names[idx]] = obj[names[idx]];
2883
+ }
2884
+
2885
+ idx += 1;
2886
+ }
2887
+
2888
+ return result;
2889
+ });
2890
+
2855
2891
  /**
2856
2892
  * Returns a partial copy of an object containing only the keys that satisfy
2857
2893
  * the supplied predicate.
@@ -33484,38 +33520,35 @@ const updateBigbinaryPackages = async (recommendedList) => {
33484
33520
  startsWith("@bigbinary")
33485
33521
  );
33486
33522
 
33487
- if (isNotEmpty(auditPackages)) {
33488
- let retries = 0;
33523
+ if (isEmpty$1(auditPackages)) return recommendedList;
33524
+ let retries = 0;
33489
33525
 
33490
- while (retries < MAX_RETRIES) {
33491
- try {
33492
- const {
33493
- data: { nanos }
33494
- } = await axios.get(
33495
- "https://ops.neetotower.com/api/v1/public/nanos"
33496
- );
33526
+ while (retries < MAX_RETRIES) {
33527
+ try {
33528
+ const {
33529
+ data: { nanos },
33530
+ } = await axios.get("https://ops.neetotower.com/api/v1/public/nanos");
33497
33531
 
33498
- const trackedPackages = filterBy(
33499
- { name: includes(__, auditPackages) },
33500
- nanos
33501
- );
33532
+ const trackedPackages = filterBy(
33533
+ { name: includes(__, auditPackages) },
33534
+ nanos
33535
+ );
33502
33536
 
33503
- trackedPackages.forEach(({ name, current_version }) => {
33504
- recommendedList[name] = current_version;
33505
- });
33537
+ trackedPackages.forEach(({ name, current_version }) => {
33538
+ recommendedList[name] = current_version;
33539
+ });
33506
33540
 
33507
- return recommendedList;
33508
- } catch (error) {
33509
- retries++;
33510
- await new Promise((resolve) => setTimeout(resolve, REQUEST_DELAY));
33511
- if (retries === MAX_RETRIES) {
33512
- console.log(
33513
- chalk$1.yellowBright(
33514
- "\nCouldn't connect to nanos release tool. Please retry or verify the link is working correctly."
33515
- )
33516
- );
33517
- process.exitCode = 1;
33518
- }
33541
+ return recommendedList;
33542
+ } catch (error) {
33543
+ retries++;
33544
+ await new Promise((resolve) => setTimeout(resolve, REQUEST_DELAY));
33545
+ if (retries === MAX_RETRIES) {
33546
+ console.log(
33547
+ chalk$1.yellowBright(
33548
+ "\nCouldn't connect to nanos release tool. Please retry or verify the link is working correctly."
33549
+ )
33550
+ );
33551
+ process.exitCode = 1;
33519
33552
  }
33520
33553
  }
33521
33554
  }
@@ -33529,9 +33562,26 @@ const getOutdatedPackages = (recommendedVersions, packageJson) => {
33529
33562
 
33530
33563
  const dependencyTypePackages = packageJson[type] ?? {};
33531
33564
 
33532
- const packages = mapObjIndexed(
33565
+ let packages = {};
33566
+ let dependenciesToCheck = {};
33567
+
33568
+ if (type === "peerDependencies") {
33569
+ const installedDependencies = [
33570
+ ...Object.keys(packageJson.dependencies || {}),
33571
+ ...Object.keys(packageJson.devDependencies || {}),
33572
+ ];
33573
+
33574
+ dependenciesToCheck = pick$1(installedDependencies, recommendedList);
33575
+ } else {
33576
+ dependenciesToCheck = pick$1(
33577
+ Object.keys(dependencyTypePackages),
33578
+ recommendedList
33579
+ );
33580
+ }
33581
+
33582
+ packages = mapObjIndexed(
33533
33583
  (_, key) => eqProps(key, recommendedList, dependencyTypePackages),
33534
- recommendedList
33584
+ dependenciesToCheck
33535
33585
  );
33536
33586
 
33537
33587
  const outdatedPackages = pickBy(not$1, packages);
@@ -33586,17 +33636,28 @@ const recommendedPackageVersions = async (debug) => {
33586
33636
  );
33587
33637
 
33588
33638
  const fix = async (debug) => {
33639
+ const outdatedPeerDependenciesKeys = findBy(
33640
+ { type: "peerDependencies" },
33641
+ packagesToUpdate
33642
+ )?.outdatedPackages;
33643
+
33644
+ const peerDependenciesToBeUpdated = pick$1(
33645
+ outdatedPeerDependenciesKeys,
33646
+ recommendedVersions.peerDependencies
33647
+ );
33648
+
33589
33649
  let newPackageJson = mergeDeepRight(
33590
33650
  packageJson,
33591
- objOf("peerDependencies", recommendedVersions.peerDependencies)
33651
+ objOf("peerDependencies", peerDependenciesToBeUpdated)
33592
33652
  );
33653
+
33593
33654
  newPackageJson = sortByKey(newPackageJson);
33594
33655
 
33595
- isNotEmpty(recommendedVersions.peerDependencies) &&
33656
+ isNotEmpty(peerDependenciesToBeUpdated) &&
33596
33657
  (await createOrReplaceFile({
33597
33658
  relativeFilePath: PACKAGE_JSON_PATH,
33598
33659
  content: JSON.stringify(newPackageJson, null, 2),
33599
- debug
33660
+ debug,
33600
33661
  }));
33601
33662
 
33602
33663
  const commands = getInstallationCommands(
@@ -33618,7 +33679,7 @@ const recommendedPackageVersions = async (debug) => {
33618
33679
  return {
33619
33680
  error: "The dependency packages are not using the recommended versions.",
33620
33681
  status: STATUSES.FAIL,
33621
- fix
33682
+ fix,
33622
33683
  };
33623
33684
  }
33624
33685
 
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.13",
4
4
  "description": "Audits neeto frontend codebase for issues and suggests a fix.",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -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);