@socketsecurity/cli-with-sentry 1.0.103 → 1.0.105

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.
@@ -1 +1 @@
1
- {"version":3,"file":"perform-reachability-analysis.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/perform-reachability-analysis.mts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,wBAAwB,EAAE,MAAM,CAAA;IAChC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACnC,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C,CAAA;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,GAChD,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CA6J9C"}
1
+ {"version":3,"file":"perform-reachability-analysis.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/perform-reachability-analysis.mts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,wBAAwB,EAAE,MAAM,CAAA;IAChC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACnC,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C,CAAA;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,GAChD,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CA+J9C"}
package/dist/vendor.js CHANGED
@@ -27442,7 +27442,7 @@ var isInteractiveExports = /*@__PURE__*/ requireIsInteractive();
27442
27442
  var dist$e = {};
27443
27443
 
27444
27444
  var name$2 = "@socketsecurity/sdk";
27445
- var version$5 = "1.4.79";
27445
+ var version$5 = "1.4.80";
27446
27446
  var license = "MIT";
27447
27447
  var description = "SDK for the Socket API client";
27448
27448
  var author = {
@@ -175287,5 +175287,5 @@ exports.terminalLinkExports = terminalLinkExports;
175287
175287
  exports.updater = updater$1;
175288
175288
  exports.yargsParser = yargsParser;
175289
175289
  exports.yoctocolorsCjsExports = yoctocolorsCjsExports;
175290
- //# debugId=f5e9f44c-6738-4a2d-947f-077a45beb5d9
175290
+ //# debugId=63796303-c4df-4409-b8a5-da5950acd29d
175291
175291
  //# sourceMappingURL=vendor.js.map
@@ -190952,25 +190952,25 @@ var Spinner = class _Spinner {
190952
190952
  };
190953
190953
 
190954
190954
  // ../utils/src/command-utils.ts
190955
- async function execAndLogOnFailure(cmd, dir, options) {
190955
+ async function execAndLogOnFailure(cmd, dir, options, logLevel = "info") {
190956
190956
  const result = await execNeverFail(cmd, dir, options);
190957
- if (result.error) logCommandOutput(result, cmd, dir);
190957
+ if (result.error) logCommandOutput(result, cmd, dir, logLevel);
190958
190958
  return !result.error;
190959
190959
  }
190960
190960
  async function execPipeAndLogOnFailure(cmd, dir, options) {
190961
190961
  return execAndLogOnFailure(cmd, dir, { ...options, pipe: true });
190962
190962
  }
190963
- function logCommandOutput(cmdResult, cmd, dir) {
190963
+ function logCommandOutput(cmdResult, cmd, dir, logLevel = "info") {
190964
190964
  const { error, stdout, stderr } = cmdResult;
190965
- logger.info(error ? `Error running command: ${cmd}` : `Result of running command: ${cmd}`);
190966
- logger.info(`Directory: ${dir}`);
190965
+ logger[logLevel](error ? `Error running command: ${cmd}` : `Result of running command: ${cmd}`);
190966
+ logger[logLevel](`Directory: ${dir}`);
190967
190967
  if (error) {
190968
190968
  const em = error.message;
190969
- logger.info(`Error: ${em?.endsWith?.(`
190969
+ logger[logLevel](`Error: ${em?.endsWith?.(`
190970
190970
  ${stderr}`) ? em.slice(0, -stderr.length - 1) : em}`);
190971
190971
  }
190972
- logger.info(`stdout: ${stdout}`);
190973
- logger.info(`stderr: ${stderr}`);
190972
+ logger[logLevel](`stdout: ${stdout}`);
190973
+ logger[logLevel](`stderr: ${stderr}`);
190974
190974
  }
190975
190975
  async function execNeverFail(cmd, dir, options) {
190976
190976
  return new Promise((resolve24) => {
@@ -197761,6 +197761,14 @@ function parseSocketResponse(responseData) {
197761
197761
  throw new Error(`Unexpected response type from Socket API: ${typeof responseData}`);
197762
197762
  }
197763
197763
  }
197764
+ function parseComputeArtifactsResponse(responseData) {
197765
+ const response = parseSocketResponse(responseData);
197766
+ return {
197767
+ artifacts: response.filter((r2) => r2.type === "artifact").map((r2) => r2.value),
197768
+ metadata: response.filter((r2) => r2.type === "metadata").flatMap((r2) => r2.value)
197769
+ // There should always only be one metadata object
197770
+ };
197771
+ }
197764
197772
  async function createSocketTier1Scan(cliOptions, coanaCliVersion) {
197765
197773
  try {
197766
197774
  const url2 = getSocketApiUrl("tier1-reachability-scan");
@@ -197883,6 +197891,7 @@ async function registerAnalysisMetadataSocket(subprojectPath, workspacePath, eco
197883
197891
  }
197884
197892
  async function getLatestBucketsSocket(subprojectPath, workspacePath) {
197885
197893
  try {
197894
+ if (!process.env.SOCKET_REPO_NAME || !process.env.SOCKET_BRANCH_NAME) return void 0;
197886
197895
  const url2 = getSocketApiUrl("tier1-reachability-scan/latest-buckets");
197887
197896
  const params = {
197888
197897
  workspacePath,
@@ -197948,7 +197957,7 @@ async function fetchArtifactsFromManifestsTarHash(manifestsTarHash) {
197948
197957
  try {
197949
197958
  const url2 = getSocketApiUrl(`orgs/${process.env.SOCKET_ORG_SLUG}/compute-artifacts?tarHash=${manifestsTarHash}`);
197950
197959
  const responseData = (await axios2.post(url2, {}, { headers: getAuthHeaders() })).data;
197951
- return parseSocketResponse(responseData);
197960
+ return parseComputeArtifactsResponse(responseData);
197952
197961
  } catch (e) {
197953
197962
  if (e instanceof AxiosError2) {
197954
197963
  prettyPrintAxiosError(e);
@@ -197975,23 +197984,20 @@ async function computeSocketFactArtifacts(rootDir, relativeManifestFilePaths) {
197975
197984
  if (!uploadData.tarHash) {
197976
197985
  throw new Error("No tarHash received from upload-manifest-files response");
197977
197986
  }
197978
- const computeUrl = getSocketApiUrl(
197979
- `orgs/${process.env.SOCKET_ORG_SLUG}/compute-artifacts?tarHash=${uploadData.tarHash}`
197980
- );
197981
- const computeResponse = await axios2.post(computeUrl, {}, { headers: getAuthHeaders() });
197982
- const responseData = computeResponse.data;
197983
- return parseSocketResponse(responseData);
197987
+ return (await fetchArtifactsFromManifestsTarHash(uploadData.tarHash)).artifacts;
197984
197988
  } catch (error) {
197985
197989
  logger.warn("Failed to compute socket fact artifacts", error);
197986
197990
  return void 0;
197987
197991
  }
197988
197992
  }
197989
- async function registerAutofixOrUpgradePurlRun(manifestsTarHash, repositoryName, options, cliCommand) {
197993
+ async function registerAutofixOrUpgradePurlRun(manifestsTarHash, options, cliCommand) {
197990
197994
  try {
197991
197995
  const url2 = getSocketApiUrl(`orgs/${process.env.SOCKET_ORG_SLUG}/fixes/register-autofix-or-upgrade-cli-run`);
197992
197996
  const data2 = {
197993
197997
  manifestsTarHash,
197994
- repositoryName,
197998
+ // disabling rule to also catch case where process.env.SOCKET_REPO_NAME is the empty string.
197999
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
198000
+ repositoryName: process.env.SOCKET_REPO_NAME || "unknown-repo",
197995
198001
  options,
197996
198002
  cliCommand
197997
198003
  };
@@ -205296,23 +205302,23 @@ var Spinner2 = class _Spinner {
205296
205302
  };
205297
205303
 
205298
205304
  // ../utils/dist/command-utils.js
205299
- async function execAndLogOnFailure2(cmd, dir, options) {
205305
+ async function execAndLogOnFailure2(cmd, dir, options, logLevel = "info") {
205300
205306
  const result = await execNeverFail2(cmd, dir, options);
205301
205307
  if (result.error)
205302
- logCommandOutput2(result, cmd, dir);
205308
+ logCommandOutput2(result, cmd, dir, logLevel);
205303
205309
  return !result.error;
205304
205310
  }
205305
- function logCommandOutput2(cmdResult, cmd, dir) {
205311
+ function logCommandOutput2(cmdResult, cmd, dir, logLevel = "info") {
205306
205312
  const { error, stdout, stderr } = cmdResult;
205307
- logger.info(error ? `Error running command: ${cmd}` : `Result of running command: ${cmd}`);
205308
- logger.info(`Directory: ${dir}`);
205313
+ logger[logLevel](error ? `Error running command: ${cmd}` : `Result of running command: ${cmd}`);
205314
+ logger[logLevel](`Directory: ${dir}`);
205309
205315
  if (error) {
205310
205316
  const em = error.message;
205311
- logger.info(`Error: ${em?.endsWith?.(`
205317
+ logger[logLevel](`Error: ${em?.endsWith?.(`
205312
205318
  ${stderr}`) ? em.slice(0, -stderr.length - 1) : em}`);
205313
205319
  }
205314
- logger.info(`stdout: ${stdout}`);
205315
- logger.info(`stderr: ${stderr}`);
205320
+ logger[logLevel](`stdout: ${stdout}`);
205321
+ logger[logLevel](`stderr: ${stderr}`);
205316
205322
  }
205317
205323
  async function execNeverFail2(cmd, dir, options) {
205318
205324
  return new Promise((resolve24) => {
@@ -206483,18 +206489,19 @@ import { access as access2, cp, readdir as readdir3, stat as stat2 } from "fs/pr
206483
206489
  import { basename as basename4, join as join11, relative as relative6, resolve as resolve13 } from "path";
206484
206490
  var { uniq } = import_lodash5.default;
206485
206491
  var { isMatch } = import_micromatch.default;
206486
- function findParent(dir, predicate, wholePath) {
206487
- let curr = dir;
206488
- let last2 = dir;
206492
+ function* parents(dir) {
206493
+ let [curr, last2] = [dir, dir];
206489
206494
  do {
206490
- const name = wholePath ? curr : basename4(curr);
206491
- if (predicate(name))
206492
- return curr;
206493
- last2 = curr;
206494
- curr = resolve13(curr, "..");
206495
+ yield curr;
206496
+ [last2, curr] = [curr, resolve13(curr, "..")];
206495
206497
  } while (curr !== last2);
206496
206498
  return void 0;
206497
206499
  }
206500
+ function findParent(dir, predicate, wholePath) {
206501
+ for (const parent2 of parents(dir))
206502
+ if (predicate(wholePath ? parent2 : basename4(parent2)))
206503
+ return parent2;
206504
+ }
206498
206505
 
206499
206506
  // ../utils/dist/constants.js
206500
206507
  var { once: once2 } = import_lodash6.default;
@@ -207378,17 +207385,18 @@ import { access as access3, cp as cp2, readdir as readdir4, stat as stat3 } from
207378
207385
  import { basename as basename5, join as join16, relative as relative7, resolve as resolve15 } from "path";
207379
207386
  var { uniq: uniq2 } = import_lodash8.default;
207380
207387
  var { isMatch: isMatch2 } = import_micromatch2.default;
207381
- function findParent2(dir, predicate, wholePath) {
207382
- let curr = dir;
207383
- let last2 = dir;
207388
+ function* parents2(dir) {
207389
+ let [curr, last2] = [dir, dir];
207384
207390
  do {
207385
- const name = wholePath ? curr : basename5(curr);
207386
- if (predicate(name)) return curr;
207387
- last2 = curr;
207388
- curr = resolve15(curr, "..");
207391
+ yield curr;
207392
+ [last2, curr] = [curr, resolve15(curr, "..")];
207389
207393
  } while (curr !== last2);
207390
207394
  return void 0;
207391
207395
  }
207396
+ function findParent2(dir, predicate, wholePath) {
207397
+ for (const parent2 of parents2(dir))
207398
+ if (predicate(wholePath ? parent2 : basename5(parent2))) return parent2;
207399
+ }
207392
207400
  async function getFilesRelative(dir, excludeDirs) {
207393
207401
  async function helper(subDir, arrayOfFiles) {
207394
207402
  for (const item of await readdir4(join16(dir, subDir), { withFileTypes: true })) {
@@ -209354,6 +209362,7 @@ import { join as join20, resolve as resolve18 } from "path";
209354
209362
  import util3 from "util";
209355
209363
  var { once: once7 } = import_lodash13.default;
209356
209364
  var systemPython = once7(() => execFileSync2("which", ["python"], { encoding: "utf8" }).trim());
209365
+ var hasPyenv = once7(async () => !(await execNeverFail("which pyenv")).error);
209357
209366
 
209358
209367
  // ../utils/src/pip-utils.ts
209359
209368
  async function isSetupPySetuptools(file) {
@@ -210102,8 +210111,8 @@ function getVulnerabilityDependencyType(vulnChainDetails, directDependencies, af
210102
210111
  finalDepType = depType;
210103
210112
  }
210104
210113
  }
210105
- const parents2 = vcd.parentsMap.get(devIdentifier);
210106
- for (const p3 of parents2 ?? []) {
210114
+ const parents4 = vcd.parentsMap.get(devIdentifier);
210115
+ for (const p3 of parents4 ?? []) {
210107
210116
  if (p3 === ROOT_NODE_STR) continue;
210108
210117
  const parentNode = vcd.transitiveDependencies[p3];
210109
210118
  if (afd && !afd.has(parentNode)) continue;
@@ -210225,17 +210234,17 @@ function computeVulnChainDetails(dependencyTree, dependencyIdentifier, parentsMa
210225
210234
  function addNode(currentIdentifier, childIdentifier, visited) {
210226
210235
  if (visited.has(currentIdentifier))
210227
210236
  return;
210228
- const parents2 = parentsMap.get(currentIdentifier);
210237
+ const parents4 = parentsMap.get(currentIdentifier);
210229
210238
  const newCurrentNode = transformToVulnChainNode(dependencyTree.transitiveDependencies[currentIdentifier]);
210230
210239
  res.transitiveDependencies[currentIdentifier] = newCurrentNode;
210231
210240
  if (childIdentifier && !newCurrentNode.children.includes(childIdentifier))
210232
210241
  newCurrentNode.children.push(childIdentifier);
210233
210242
  if (!childIdentifier)
210234
210243
  newCurrentNode.vulnerable = true;
210235
- if (!parents2)
210244
+ if (!parents4)
210236
210245
  return res;
210237
210246
  visited.add(currentIdentifier);
210238
- for (const parent2 of parents2) {
210247
+ for (const parent2 of parents4) {
210239
210248
  if (parent2 === ROOT_IDENTIFIER)
210240
210249
  res.children.push(currentIdentifier);
210241
210250
  else
@@ -210339,8 +210348,14 @@ function getAllToplevelAncestors(artifactMap, artifactId) {
210339
210348
  async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash) {
210340
210349
  logger.info("Fetching artifacts from Socket backend using manifests tar hash", manifestsTarHash);
210341
210350
  try {
210342
- const artifacts = await fetchArtifactsFromManifestsTarHash(manifestsTarHash);
210351
+ const { artifacts } = await fetchArtifactsFromManifestsTarHash(manifestsTarHash);
210343
210352
  const properPythonProjects = [];
210353
+ const pipArtifactToRepresentativeManifest = {};
210354
+ for (const artifact of artifacts) {
210355
+ if (artifact.type === "pypi" && artifact.manifestFiles) {
210356
+ pipArtifactToRepresentativeManifest[simplePurl(artifact.type, artifact.namespace ?? "", artifact.name, artifact.version ?? "")] = artifact;
210357
+ }
210358
+ }
210344
210359
  const venvExcludes = [
210345
210360
  "venv",
210346
210361
  ".venv",
@@ -210379,6 +210394,11 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash)
210379
210394
  const ecosystemToWorkspaceToVulnerabilities = {};
210380
210395
  const purlsFailedToFindWorkspace = /* @__PURE__ */ new Set();
210381
210396
  for (const artifact of artifacts) {
210397
+ let processToplevelAncestors2 = function(artifact2) {
210398
+ const allAncestorIds = getAllToplevelAncestors(artifactMap, artifact2.id);
210399
+ allAncestorIds.forEach((ancestorId) => artifactMap.get(ancestorId)?.manifestFiles?.forEach((ref) => manifestFiles.push(ref.file)));
210400
+ };
210401
+ var processToplevelAncestors = processToplevelAncestors2;
210382
210402
  const ecosystem = getAdvisoryEcosystemFromPurlType(artifact.type);
210383
210403
  if (!ecosystem)
210384
210404
  continue;
@@ -210392,10 +210412,17 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash)
210392
210412
  manifestFiles.push(...(await getFilesRelative(rootWorkingDirectory)).filter((file) => (0, import_picomatch2.default)("{*.csproj,packages.lock.json}")(basename7(file))));
210393
210413
  break;
210394
210414
  }
210415
+ case "PIP": {
210416
+ const sPurl = simplePurl(artifact.type, artifact.namespace ?? "", artifact.name, artifact.version ?? "");
210417
+ if (pipArtifactToRepresentativeManifest[sPurl]) {
210418
+ manifestFiles.push(...(pipArtifactToRepresentativeManifest[sPurl].manifestFiles ?? []).map((ref) => ref.file));
210419
+ }
210420
+ processToplevelAncestors2(artifact);
210421
+ break;
210422
+ }
210395
210423
  default: {
210396
210424
  artifact.manifestFiles?.forEach((ref) => manifestFiles.push(ref.file));
210397
- const allAncestorIds = getAllToplevelAncestors(artifactMap, artifact.id);
210398
- allAncestorIds.forEach((ancestorId) => artifactMap.get(ancestorId)?.manifestFiles?.forEach((ref) => manifestFiles.push(ref.file)));
210425
+ processToplevelAncestors2(artifact);
210399
210426
  break;
210400
210427
  }
210401
210428
  }
@@ -210493,7 +210520,7 @@ function computeVulnChainDetails2(artifacts, vulnerableArtifactId) {
210493
210520
  const currentArtifact = artifactMap.get(currentId);
210494
210521
  if (!currentArtifact)
210495
210522
  return;
210496
- const parents2 = parentsMap.get(currentId);
210523
+ const parents4 = parentsMap.get(currentId);
210497
210524
  const newCurrentNode = {
210498
210525
  packageName: getNameFromNamespaceAndName(currentArtifact.type, currentArtifact.namespace, currentArtifact.name),
210499
210526
  version: currentArtifact.version ?? void 0,
@@ -210512,8 +210539,8 @@ function computeVulnChainDetails2(artifacts, vulnerableArtifactId) {
210512
210539
  }
210513
210540
  }
210514
210541
  visited.add(currentId);
210515
- if (parents2) {
210516
- for (const parentId of parents2) {
210542
+ if (parents4) {
210543
+ for (const parentId of parents4) {
210517
210544
  addNode(parentId, currentId, visited);
210518
210545
  }
210519
210546
  }
@@ -213022,7 +213049,7 @@ __export(traversing_exports, {
213022
213049
  nextUntil: () => nextUntil,
213023
213050
  not: () => not,
213024
213051
  parent: () => parent,
213025
- parents: () => parents,
213052
+ parents: () => parents3,
213026
213053
  parentsUntil: () => parentsUntil,
213027
213054
  prev: () => prev,
213028
213055
  prevAll: () => prevAll,
@@ -214284,7 +214311,7 @@ function _removeDuplicates(elems) {
214284
214311
  return Array.from(new Set(elems));
214285
214312
  }
214286
214313
  var parent = _singleMatcher(({ parent: parent2 }) => parent2 && !isDocument(parent2) ? parent2 : null, _removeDuplicates);
214287
- var parents = _matcher((elem) => {
214314
+ var parents3 = _matcher((elem) => {
214288
214315
  const matched = [];
214289
214316
  while (elem.parent && !isDocument(elem.parent)) {
214290
214317
  matched.push(elem.parent);
@@ -225028,10 +225055,10 @@ var FixesTask = class {
225028
225055
  return;
225029
225056
  }
225030
225057
  }
225031
- const parents2 = this.getParents(pId, vulnChainDetails);
225058
+ const parents4 = this.getParents(pId, vulnChainDetails);
225032
225059
  let allowedVersionsForCId = potentialVersionsForFix[cId] ? [...potentialVersionsForFix[cId]] : await this.getSafeVersionsOfPackage(vulnChainDetails.transitiveDependencies[cId].packageName);
225033
- if (parents2.length !== 0) {
225034
- for (const parent2 of parents2) {
225060
+ if (parents4.length !== 0) {
225061
+ for (const parent2 of parents4) {
225035
225062
  await computeFix(parent2, pId, [key, ...visited]);
225036
225063
  if (res[pId])
225037
225064
  allowedVersionsForCId = await this.filterVersionsAllowedByParent(pId, res[pId], cId, allowedVersionsForCId);
@@ -225060,11 +225087,11 @@ var FixesTask = class {
225060
225087
  const deps = vulnChainDetails.transitiveDependencies;
225061
225088
  const vulnerablePackageIdentifiers = Object.entries(deps ?? []).filter(([_identifier, node]) => node.vulnerable).map(([identifier, _node]) => identifier);
225062
225089
  for (const pId of vulnerablePackageIdentifiers) {
225063
- const parents2 = this.getParents(pId, vulnChainDetails);
225064
- if (parents2.length === 0) {
225090
+ const parents4 = this.getParents(pId, vulnChainDetails);
225091
+ if (parents4.length === 0) {
225065
225092
  pickVersionWrapper(pId, [...potentialVersionsForFix[pId]]);
225066
225093
  } else {
225067
- for (const parent2 of parents2) {
225094
+ for (const parent2 of parents4) {
225068
225095
  await computeFix(parent2, pId, []);
225069
225096
  }
225070
225097
  }
@@ -225125,9 +225152,9 @@ var FixesTask = class {
225125
225152
  safeVersionsForC
225126
225153
  );
225127
225154
  const vs = await filterVersions(pId, versionsOfPAllowingSomeSafeVersions);
225128
- const parents2 = this.getParents(pId, vuln.vulnChainDetails);
225129
- if (parents2.length !== 0) {
225130
- for (const parent2 of parents2) {
225155
+ const parents4 = this.getParents(pId, vuln.vulnChainDetails);
225156
+ if (parents4.length !== 0) {
225157
+ for (const parent2 of parents4) {
225131
225158
  await computePotentialVersionsForFixWithCache(parent2, pId, vs);
225132
225159
  }
225133
225160
  } else {
@@ -225139,17 +225166,17 @@ var FixesTask = class {
225139
225166
  const deps = vuln.vulnChainDetails?.transitiveDependencies;
225140
225167
  const vulnerablePackageIdentifiers = Object.entries(deps ?? []).filter(([_identifier, node]) => node.vulnerable).map(([identifier, _node]) => identifier);
225141
225168
  for (const pId of vulnerablePackageIdentifiers) {
225142
- const parents2 = this.getParents(pId, vuln.vulnChainDetails);
225169
+ const parents4 = this.getParents(pId, vuln.vulnChainDetails);
225143
225170
  const safeVersionsForVulnerablePackage = await safeVersions(pId);
225144
225171
  const { upgrades, downgrades } = this.groupVersionsInUpgradesAndDowngrades(
225145
225172
  assertDefined(this.packageStructure.transitiveDependencies[pId].version),
225146
225173
  safeVersionsForVulnerablePackage
225147
225174
  );
225148
- if (parents2.length === 0) {
225175
+ if (parents4.length === 0) {
225149
225176
  if (upgrades.length > 0) res[pId] = upgrades;
225150
225177
  else if (downgrades.length > 0) res[pId] = downgrades;
225151
225178
  } else {
225152
- for (const parent2 of parents2) {
225179
+ for (const parent2 of parents4) {
225153
225180
  const resClone = { ...res };
225154
225181
  const alreadyComputedCacheClone = new Map(alreadyComputedCache);
225155
225182
  try {
@@ -225583,7 +225610,7 @@ async function onlineScan(dependencyTree, apiKey, timeout) {
225583
225610
  }
225584
225611
 
225585
225612
  // dist/version.js
225586
- var version2 = "14.12.3";
225613
+ var version2 = "14.12.10";
225587
225614
 
225588
225615
  // dist/cli-core.js
225589
225616
  var { mapValues, omit, partition, pick } = import_lodash15.default;
@@ -226274,7 +226301,7 @@ async function upgradePurl(path2, upgrades, options, logFile, cliFixRunId) {
226274
226301
  logger.silent = options.silent;
226275
226302
  let cliRunId = cliFixRunId;
226276
226303
  if (!cliRunId && options.manifestsTarHash) {
226277
- cliRunId = await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash, path2, options, "upgrade-purls");
226304
+ cliRunId = await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash, options, "upgrade-purls");
226278
226305
  }
226279
226306
  const upgradePurlRunId = cliRunId && await getSocketAPI().registerUpgradePurlRun(cliRunId, upgrades);
226280
226307
  Spinner.instance({ text: "Running Coana Upgrade Purl CLI", isSilent: options.silent }).start();
@@ -226404,7 +226431,7 @@ ${vulnerabilityFixes.map((fix) => ` ${fix.dependencyName} from ${fix.currentVers
226404
226431
 
226405
226432
  // dist/cli-compute-fixes-and-upgrade-purls.js
226406
226433
  async function computeFixesAndUpgradePurls(path2, options, logFile) {
226407
- const autofixRunId = options.manifestsTarHash && await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash, path2, options, "autofix");
226434
+ const autofixRunId = options.manifestsTarHash && await getSocketAPI().registerAutofixOrUpgradePurlRun(options.manifestsTarHash, options, "autofix");
226408
226435
  const { artifacts, ghsaToVulnerableArtifactIds } = await computeInputForComputingFixes(path2, options);
226409
226436
  if (Object.keys(ghsaToVulnerableArtifactIds).length === 0) {
226410
226437
  logger.info("No vulnerabilities to compute fixes for");