@socketsecurity/cli-with-sentry 1.0.1 → 1.0.3

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 (31) hide show
  1. package/dist/cli.js +144 -74
  2. package/dist/cli.js.map +1 -1
  3. package/dist/constants.js +3 -3
  4. package/dist/constants.js.map +1 -1
  5. package/dist/types/commands/fix/agent-fix.d.mts.map +1 -1
  6. package/dist/types/commands/fix/cmd-fix.d.mts.map +1 -1
  7. package/dist/types/commands/fix/handle-fix.d.mts +6 -20
  8. package/dist/types/commands/fix/handle-fix.d.mts.map +1 -1
  9. package/dist/types/commands/fix/npm-fix.d.mts.map +1 -1
  10. package/dist/types/commands/optimize/add-overrides.d.mts.map +1 -1
  11. package/dist/types/commands/optimize/get-overrides-by-agent.d.mts +1 -1
  12. package/dist/types/commands/optimize/get-overrides-by-agent.d.mts.map +1 -1
  13. package/dist/types/commands/package/output-purls-shallow-score.d.mts.map +1 -1
  14. package/dist/types/commands/scan/handle-reach-scan.d.mts.map +1 -1
  15. package/dist/types/commands/scan/output-scan-reach.d.mts +1 -1
  16. package/dist/types/commands/scan/output-scan-reach.d.mts.map +1 -1
  17. package/dist/types/utils/cmd.d.mts +1 -0
  18. package/dist/types/utils/cmd.d.mts.map +1 -1
  19. package/dist/types/utils/coana.d.mts +4 -0
  20. package/dist/types/utils/coana.d.mts.map +1 -0
  21. package/dist/types/utils/fail-msg-with-badge.d.mts +1 -1
  22. package/dist/types/utils/fail-msg-with-badge.d.mts.map +1 -1
  23. package/dist/utils.js +51 -4
  24. package/dist/utils.js.map +1 -1
  25. package/dist/vendor.js +85939 -80792
  26. package/external/@socketsecurity/registry/external/browserslist.js +374 -347
  27. package/external/@socketsecurity/registry/lib/spawn.js +11 -2
  28. package/external/@socketsecurity/registry/manifest.json +2 -2
  29. package/package.json +10 -8
  30. package/dist/types/commands/scan/scan-reachability.d.mts +0 -3
  31. package/dist/types/commands/scan/scan-reachability.d.mts.map +0 -1
package/dist/cli.js CHANGED
@@ -14,17 +14,17 @@ var fs$1 = require('node:fs');
14
14
  var path = require('node:path');
15
15
  var spawn = require('../external/@socketsecurity/registry/lib/spawn');
16
16
  var arrays = require('../external/@socketsecurity/registry/lib/arrays');
17
+ var words = require('../external/@socketsecurity/registry/lib/words');
17
18
  var registry = require('../external/@socketsecurity/registry');
18
19
  var npm = require('../external/@socketsecurity/registry/lib/npm');
19
20
  var packages = require('../external/@socketsecurity/registry/lib/packages');
20
21
  var sorts = require('../external/@socketsecurity/registry/lib/sorts');
22
+ var strings = require('../external/@socketsecurity/registry/lib/strings');
21
23
  var path$1 = require('../external/@socketsecurity/registry/lib/path');
22
24
  var regexps = require('../external/@socketsecurity/registry/lib/regexps');
23
25
  var shadowNpmInject = require('./shadow-npm-inject.js');
24
26
  var fs$2 = require('../external/@socketsecurity/registry/lib/fs');
25
- var strings = require('../external/@socketsecurity/registry/lib/strings');
26
27
  var objects = require('../external/@socketsecurity/registry/lib/objects');
27
- var words = require('../external/@socketsecurity/registry/lib/words');
28
28
  var shadowNpmBin = require('./shadow-npm-bin.js');
29
29
  var require$$7 = require('../external/@socketsecurity/registry/lib/promises');
30
30
  var require$$1 = require('node:util');
@@ -3638,7 +3638,7 @@ const {
3638
3638
  RESOLUTIONS: RESOLUTIONS$1,
3639
3639
  VLT: VLT$5,
3640
3640
  YARN_BERRY: YARN_BERRY$4,
3641
- YARN_CLASSIC: YARN_CLASSIC$5
3641
+ YARN_CLASSIC: YARN_CLASSIC$4
3642
3642
  } = constants;
3643
3643
  function getOverridesDataBun(pkgEnvDetails, pkgJson = pkgEnvDetails.editablePkgJson.content) {
3644
3644
  const overrides = pkgJson?.[RESOLUTIONS$1] ?? {};
@@ -3690,11 +3690,27 @@ function getOverridesDataYarn(pkgEnvDetails, pkgJson = pkgEnvDetails.editablePkg
3690
3690
  function getOverridesDataYarnClassic(pkgEnvDetails, pkgJson = pkgEnvDetails.editablePkgJson.content) {
3691
3691
  const overrides = pkgJson?.[RESOLUTIONS$1] ?? {};
3692
3692
  return {
3693
- type: YARN_CLASSIC$5,
3693
+ type: YARN_CLASSIC$4,
3694
3694
  overrides
3695
3695
  };
3696
3696
  }
3697
- const overridesDataByAgent = new Map([[BUN$4, getOverridesDataBun], [NPM$8, getOverridesDataNpm], [PNPM$8, getOverridesDataPnpm], [VLT$5, getOverridesDataVlt], [YARN_BERRY$4, getOverridesDataYarn], [YARN_CLASSIC$5, getOverridesDataYarnClassic]]);
3697
+ function getOverridesData(pkgEnvDetails, pkgJson) {
3698
+ switch (pkgEnvDetails.agent) {
3699
+ case BUN$4:
3700
+ return getOverridesDataBun(pkgEnvDetails, pkgJson);
3701
+ case PNPM$8:
3702
+ return getOverridesDataPnpm(pkgEnvDetails, pkgJson);
3703
+ case VLT$5:
3704
+ return getOverridesDataVlt(pkgEnvDetails, pkgJson);
3705
+ case YARN_BERRY$4:
3706
+ return getOverridesDataYarn(pkgEnvDetails, pkgJson);
3707
+ case YARN_CLASSIC$4:
3708
+ return getOverridesDataYarnClassic(pkgEnvDetails, pkgJson);
3709
+ case NPM$8:
3710
+ default:
3711
+ return getOverridesDataNpm(pkgEnvDetails, pkgJson);
3712
+ }
3713
+ }
3698
3714
 
3699
3715
  const noopHandler = () => {};
3700
3716
  async function agentFix(pkgEnvDetails, actualTree, alertsMap, installer, {
@@ -3744,7 +3760,6 @@ async function agentFix(pkgEnvDetails, actualTree, alertsMap, installer, {
3744
3760
  // Process the workspace root last since it will add an override to package.json.
3745
3761
  pkgEnvDetails.editablePkgJson.filename];
3746
3762
  const sortedInfoEntries = Array.from(infoByPartialPurl.entries()).sort((a, b) => sorts.naturalCompare(a[0], b[0]));
3747
- const getOverridesData = overridesDataByAgent.get(pkgEnvDetails.agent);
3748
3763
  const cleanupInfoEntriesLoop = () => {
3749
3764
  logger.logger.dedent();
3750
3765
  spinner?.dedent();
@@ -3878,10 +3893,16 @@ async function agentFix(pkgEnvDetails, actualTree, alertsMap, installer, {
3878
3893
  }
3879
3894
  continue infosLoop;
3880
3895
  }
3881
- const oldOverrides = getOverridesData(pkgEnvDetails, editablePkgJson.content);
3882
- const overrideKey = `${name}@${vulnerableVersionRange}`;
3883
- const newVersionRange = utils.applyRange(oldOverrides?.[overrideKey] ?? oldVersion, newVersion, rangeStyle);
3884
- const newId = `${name}@${newVersionRange}`;
3896
+ const {
3897
+ overrides: oldOverrides
3898
+ } = getOverridesData(pkgEnvDetails, editablePkgJson.content);
3899
+ let refRange = oldOverrides?.[`${name}@${vulnerableVersionRange}`];
3900
+ if (!strings.isNonEmptyString(refRange)) {
3901
+ refRange = oldOverrides?.[name];
3902
+ }
3903
+ if (!strings.isNonEmptyString(refRange)) {
3904
+ refRange = oldVersion;
3905
+ }
3885
3906
 
3886
3907
  // eslint-disable-next-line no-await-in-loop
3887
3908
  await beforeInstall(editablePkgJson, name, oldVersion, newVersion, vulnerableVersionRange, options);
@@ -3902,6 +3923,7 @@ async function agentFix(pkgEnvDetails, actualTree, alertsMap, installer, {
3902
3923
  hasAnnouncedWorkspace = true;
3903
3924
  workspaceLogCallCount = logger.logger.logCallCount;
3904
3925
  }
3926
+ const newId = `${name}@${utils.applyRange(refRange, newVersion, rangeStyle)}`;
3905
3927
  spinner?.start();
3906
3928
  spinner?.info(`Installing ${newId} in ${workspace}.`);
3907
3929
  let error;
@@ -4214,9 +4236,24 @@ async function npmFix(pkgEnvDetails, options) {
4214
4236
  limit: Math.max(limit, openPrs.length)
4215
4237
  }));
4216
4238
  } else {
4239
+ const npmPath = path.resolve(fs$1.realpathSync(pkgEnvDetails.agentExecPath), '../..');
4240
+ const config = new vendor.libExports$2({
4241
+ argv: [],
4242
+ cwd: process.cwd(),
4243
+ definitions: vendor.definitionsExports.definitions,
4244
+ // Lazily access constants.execPath.
4245
+ execPath: constants.execPath,
4246
+ env: process.env,
4247
+ flatten: vendor.definitionsExports.flatten,
4248
+ npmPath,
4249
+ platform: process.platform,
4250
+ shorthands: vendor.definitionsExports.shorthands
4251
+ });
4252
+ await config.load();
4217
4253
  const arb = new shadowNpmInject.Arborist({
4218
4254
  path: pkgEnvDetails.pkgPath,
4219
- ...shadowNpmInject.SAFE_ARBORIST_REIFY_OPTIONS_OVERRIDES
4255
+ ...shadowNpmInject.SAFE_ARBORIST_REIFY_OPTIONS_OVERRIDES,
4256
+ config
4220
4257
  });
4221
4258
  actualTree = await arb.reify();
4222
4259
  // Calling arb.reify() creates the arb.diff object, nulls-out arb.idealTree,
@@ -4449,9 +4486,10 @@ const {
4449
4486
  NPM: NPM$7,
4450
4487
  PNPM: PNPM$6
4451
4488
  } = constants;
4452
- async function handleFix({
4489
+ async function handleFix(argv, {
4453
4490
  autoMerge,
4454
4491
  cwd,
4492
+ ghsas,
4455
4493
  limit,
4456
4494
  outputKind,
4457
4495
  purls,
@@ -4459,31 +4497,74 @@ async function handleFix({
4459
4497
  test,
4460
4498
  testScript
4461
4499
  }) {
4462
- const pkgEnvResult = await utils.detectAndValidatePackageEnvironment(cwd, {
4500
+ let {
4501
+ length: ghsasCount
4502
+ } = ghsas;
4503
+ if (ghsasCount) {
4504
+ // Lazily access constants.spinner.
4505
+ const {
4506
+ spinner
4507
+ } = constants;
4508
+ spinner.start('Fetching GHSA IDs...');
4509
+ if (ghsasCount === 1 && ghsas[0] === 'auto') {
4510
+ const autoCResult = await utils.spawnCoana(['compute-fixes-and-upgrade-purls', cwd], {
4511
+ cwd,
4512
+ spinner
4513
+ });
4514
+ if (autoCResult.ok) {
4515
+ ghsas = utils.cmdFlagValueToArray(/(?<=Vulnerabilities found: )[^\n]+/.exec(autoCResult.data)?.[0]);
4516
+ ghsasCount = ghsas.length;
4517
+ } else {
4518
+ ghsas = [];
4519
+ ghsasCount = 0;
4520
+ }
4521
+ }
4522
+ if (ghsasCount) {
4523
+ spinner.info(`Found ${ghsasCount} GHSA ${words.pluralize('ID', ghsasCount)}.`);
4524
+ await outputFixResult(await utils.spawnCoana(['compute-fixes-and-upgrade-purls', cwd, '--apply-fixes-to', ...ghsas, ...argv], {
4525
+ cwd,
4526
+ spinner
4527
+ }), outputKind);
4528
+ spinner.stop();
4529
+ return;
4530
+ }
4531
+ spinner.infoAndStop('No GHSA IDs found.');
4532
+ await outputFixResult({
4533
+ ok: true,
4534
+ data: ''
4535
+ }, outputKind);
4536
+ return;
4537
+ }
4538
+ const pkgEnvCResult = await utils.detectAndValidatePackageEnvironment(cwd, {
4463
4539
  cmdName: CMD_NAME$1,
4464
4540
  logger: logger.logger
4465
4541
  });
4466
- if (!pkgEnvResult.ok) {
4467
- return pkgEnvResult;
4542
+ if (!pkgEnvCResult.ok) {
4543
+ await outputFixResult(pkgEnvCResult, outputKind);
4544
+ return;
4468
4545
  }
4469
- const pkgEnvDetails = pkgEnvResult.data;
4546
+ const {
4547
+ data: pkgEnvDetails
4548
+ } = pkgEnvCResult;
4470
4549
  if (!pkgEnvDetails) {
4471
- return {
4550
+ await outputFixResult({
4472
4551
  ok: false,
4473
- message: 'No package found',
4474
- cause: `No valid package environment was found in given cwd (${cwd})`
4475
- };
4552
+ message: 'No package found.',
4553
+ cause: `No valid package environment found for project path: ${cwd}`
4554
+ }, outputKind);
4555
+ return;
4476
4556
  }
4477
4557
  logger.logger.info(`Fixing packages for ${pkgEnvDetails.agent} v${pkgEnvDetails.agentVersion}.\n`);
4478
4558
  const {
4479
4559
  agent
4480
4560
  } = pkgEnvDetails;
4481
4561
  if (agent !== NPM$7 && agent !== PNPM$6) {
4482
- return {
4562
+ await outputFixResult({
4483
4563
  ok: false,
4484
- message: 'Not supported',
4564
+ message: 'Not supported.',
4485
4565
  cause: `${agent} is not supported by this command at the moment.`
4486
- };
4566
+ }, outputKind);
4567
+ return;
4487
4568
  }
4488
4569
 
4489
4570
  // Lazily access spinner.
@@ -4491,7 +4572,7 @@ async function handleFix({
4491
4572
  spinner
4492
4573
  } = constants;
4493
4574
  const fixer = agent === NPM$7 ? npmFix : pnpmFix;
4494
- const result = await fixer(pkgEnvDetails, {
4575
+ await outputFixResult(await fixer(pkgEnvDetails, {
4495
4576
  autoMerge,
4496
4577
  cwd,
4497
4578
  limit,
@@ -4500,8 +4581,7 @@ async function handleFix({
4500
4581
  spinner,
4501
4582
  test,
4502
4583
  testScript
4503
- });
4504
- await outputFixResult(result, outputKind);
4584
+ }), outputKind);
4505
4585
  }
4506
4586
 
4507
4587
  const {
@@ -4523,6 +4603,12 @@ const config$H = {
4523
4603
  default: false,
4524
4604
  description: `Shorthand for --autoMerge --test`
4525
4605
  },
4606
+ ghsa: {
4607
+ type: 'string',
4608
+ default: [],
4609
+ description: `Provide a list of ${vendor.terminalLinkExports('GHSA IDs', 'https://docs.github.com/en/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database#about-ghsa-ids')} to compute fixes for, as either a comma separated value or as multiple flags`,
4610
+ isMultiple: true
4611
+ },
4526
4612
  limit: {
4527
4613
  type: 'number',
4528
4614
  default: Infinity,
@@ -4531,7 +4617,7 @@ const config$H = {
4531
4617
  purl: {
4532
4618
  type: 'string',
4533
4619
  default: [],
4534
- description: `Provide a list of ${vendor.terminalLinkExports('package URLs', 'https://github.com/package-url/purl-spec?tab=readme-ov-file#purl')} (PURLs) to fix, as either a comma separated value or as multiple flags,\n instead of querying the Socket API`,
4620
+ description: `Provide a list of ${vendor.terminalLinkExports('PURLs', 'https://github.com/package-url/purl-spec?tab=readme-ov-file#purl')} to compute fixes for, as either a comma separated value or as multiple flags,\n instead of querying the Socket API`,
4535
4621
  isMultiple: true,
4536
4622
  shortFlag: 'p'
4537
4623
  },
@@ -4621,12 +4707,14 @@ async function run$H(argv, importMeta, {
4621
4707
  autoMerge = true;
4622
4708
  test = true;
4623
4709
  }
4710
+ const ghsas = utils.cmdFlagValueToArray(cli.flags['ghsa']);
4624
4711
  const limit = (cli.flags['limit'] ? parseInt(String(cli.flags['limit'] || ''), 10) : Infinity) || Infinity;
4625
- const purls = Array.isArray(cli.flags['purl']) ? cli.flags['purl'].flatMap(p => p.split(/, */)) : [];
4712
+ const purls = utils.cmdFlagValueToArray(cli.flags['purl']);
4626
4713
  const testScript = String(cli.flags['testScript'] || 'test');
4627
- await handleFix({
4714
+ await handleFix(argv, {
4628
4715
  autoMerge,
4629
4716
  cwd,
4717
+ ghsas,
4630
4718
  limit,
4631
4719
  outputKind,
4632
4720
  purls,
@@ -6918,7 +7006,7 @@ const {
6918
7006
  PNPM: PNPM$4,
6919
7007
  VLT: VLT$4,
6920
7008
  YARN_BERRY: YARN_BERRY$3,
6921
- YARN_CLASSIC: YARN_CLASSIC$4
7009
+ YARN_CLASSIC: YARN_CLASSIC$3
6922
7010
  } = constants;
6923
7011
  function matchLsCmdViewHumanStdout(stdout, name) {
6924
7012
  return stdout.includes(` ${name}@`);
@@ -6926,7 +7014,7 @@ function matchLsCmdViewHumanStdout(stdout, name) {
6926
7014
  function matchQueryCmdStdout(stdout, name) {
6927
7015
  return stdout.includes(`"${name}"`);
6928
7016
  }
6929
- const depsIncludesByAgent = new Map([[BUN$3, matchLsCmdViewHumanStdout], [NPM$5, matchQueryCmdStdout], [PNPM$4, matchQueryCmdStdout], [VLT$4, matchQueryCmdStdout], [YARN_BERRY$3, matchLsCmdViewHumanStdout], [YARN_CLASSIC$4, matchLsCmdViewHumanStdout]]);
7017
+ const depsIncludesByAgent = new Map([[BUN$3, matchLsCmdViewHumanStdout], [NPM$5, matchQueryCmdStdout], [PNPM$4, matchQueryCmdStdout], [VLT$4, matchQueryCmdStdout], [YARN_BERRY$3, matchLsCmdViewHumanStdout], [YARN_CLASSIC$3, matchLsCmdViewHumanStdout]]);
6930
7018
 
6931
7019
  function getDependencyEntries(pkgEnvDetails) {
6932
7020
  const {
@@ -6959,7 +7047,7 @@ const {
6959
7047
  PNPM: PNPM$3,
6960
7048
  VLT: VLT$3,
6961
7049
  YARN_BERRY: YARN_BERRY$2,
6962
- YARN_CLASSIC: YARN_CLASSIC$3
7050
+ YARN_CLASSIC: YARN_CLASSIC$2
6963
7051
  } = constants;
6964
7052
  function includesNpm(lockSrc, name) {
6965
7053
  // Detects the package name in the following cases:
@@ -7001,7 +7089,7 @@ function includesYarn(lockSrc, name) {
7001
7089
  // , name@
7002
7090
  `(?<=(?:^\\s*|,\\s*)"?)${escapedName}(?=@)`, 'm').test(lockSrc);
7003
7091
  }
7004
- const lockfileIncludesByAgent = new Map([[BUN$2, includesBun], [NPM$4, includesNpm], [PNPM$3, includesPnpm], [VLT$3, includesVlt], [YARN_BERRY$2, includesYarn], [YARN_CLASSIC$3, includesYarn]]);
7092
+ const lockfileIncludesByAgent = new Map([[BUN$2, includesBun], [NPM$4, includesNpm], [PNPM$3, includesPnpm], [VLT$3, includesVlt], [YARN_BERRY$2, includesYarn], [YARN_CLASSIC$2, includesYarn]]);
7005
7093
 
7006
7094
  const {
7007
7095
  BUN: BUN$1,
@@ -7009,7 +7097,7 @@ const {
7009
7097
  PNPM: PNPM$2,
7010
7098
  VLT: VLT$2,
7011
7099
  YARN_BERRY: YARN_BERRY$1,
7012
- YARN_CLASSIC: YARN_CLASSIC$2
7100
+ YARN_CLASSIC: YARN_CLASSIC$1
7013
7101
  } = constants;
7014
7102
  function cleanupQueryStdout(stdout) {
7015
7103
  if (stdout === '') {
@@ -7138,7 +7226,7 @@ async function lsYarnClassic(pkgEnvDetails, cwd) {
7138
7226
  } catch {}
7139
7227
  return '';
7140
7228
  }
7141
- const lsByAgent = new Map([[BUN$1, lsBun], [NPM$3, lsNpm], [PNPM$2, lsPnpm], [VLT$2, lsVlt], [YARN_BERRY$1, lsYarnBerry], [YARN_CLASSIC$2, lsYarnClassic]]);
7229
+ const lsByAgent = new Map([[BUN$1, lsBun], [NPM$3, lsNpm], [PNPM$2, lsPnpm], [VLT$2, lsVlt], [YARN_BERRY$1, lsYarnBerry], [YARN_CLASSIC$1, lsYarnClassic]]);
7142
7230
 
7143
7231
  const CMD_NAME = 'socket optimize';
7144
7232
 
@@ -7150,7 +7238,7 @@ const {
7150
7238
  RESOLUTIONS,
7151
7239
  VLT: VLT$1,
7152
7240
  YARN_BERRY,
7153
- YARN_CLASSIC: YARN_CLASSIC$1
7241
+ YARN_CLASSIC
7154
7242
  } = constants;
7155
7243
  const depFields = ['dependencies', 'devDependencies', 'peerDependencies', 'peerDependenciesMeta', 'optionalDependencies', 'bundleDependencies'];
7156
7244
  function getEntryIndexes(entries, keys) {
@@ -7252,12 +7340,11 @@ function updateResolutionsField(pkgEnvDetails, overrides) {
7252
7340
  function updatePnpmField(pkgEnvDetails, overrides) {
7253
7341
  updatePkgJsonField(pkgEnvDetails.editablePkgJson, PNPM$1, overrides);
7254
7342
  }
7255
- const updateManifestByAgent = new Map([[BUN, updateResolutionsField], [NPM$2, updateOverridesField], [PNPM$1, updatePnpmField], [VLT$1, updateOverridesField], [YARN_BERRY, updateResolutionsField], [YARN_CLASSIC$1, updateResolutionsField]]);
7343
+ const updateManifestByAgent = new Map([[BUN, updateResolutionsField], [NPM$2, updateOverridesField], [PNPM$1, updatePnpmField], [VLT$1, updateOverridesField], [YARN_BERRY, updateResolutionsField], [YARN_CLASSIC, updateResolutionsField]]);
7256
7344
 
7257
7345
  const {
7258
7346
  NPM: NPM$1,
7259
- PNPM,
7260
- YARN_CLASSIC
7347
+ PNPM
7261
7348
  } = constants;
7262
7349
  const manifestNpmOverrides = registry.getManifestData(NPM$1);
7263
7350
  async function addOverrides(pkgEnvDetails, pkgPath, options) {
@@ -7297,9 +7384,9 @@ async function addOverrides(pkgEnvDetails, pkgPath, options) {
7297
7384
  }
7298
7385
  const overridesDataObjects = [];
7299
7386
  if (isWorkspace || pkgEnvDetails.editablePkgJson.content['private']) {
7300
- overridesDataObjects.push(overridesDataByAgent.get(agent)(pkgEnvDetails));
7387
+ overridesDataObjects.push(getOverridesData(pkgEnvDetails));
7301
7388
  } else {
7302
- overridesDataObjects.push(overridesDataByAgent.get(NPM$1)(pkgEnvDetails), overridesDataByAgent.get(YARN_CLASSIC)(pkgEnvDetails));
7389
+ overridesDataObjects.push(getOverridesDataNpm(pkgEnvDetails), getOverridesDataYarnClassic(pkgEnvDetails));
7303
7390
  }
7304
7391
  spinner?.setText(`Adding overrides to ${workspace}...`);
7305
7392
  const depAliasMap = new Map();
@@ -8770,7 +8857,7 @@ function formatReportCard(artifact, color) {
8770
8857
  };
8771
8858
  const alertString = getAlertString(artifact.alerts, !color);
8772
8859
  if (!artifact.ecosystem) {
8773
- console.log('WTF?', artifact);
8860
+ debug.debugLog('miss: Artifact ecosystem', artifact);
8774
8861
  }
8775
8862
  const purl = `pkg:${artifact.ecosystem}/${artifact.name}${artifact.version ? '@' + artifact.version : ''}`;
8776
8863
  return ['Package: ' + (color ? vendor.yoctocolorsCjsExports.bold(purl) : purl), '', ...Object.entries(scoreResult).map(score => `- ${score[0]}:`.padEnd(20, ' ') + ` ${formatScore(score[1], !color, true)}`), alertString].join('\n');
@@ -12198,7 +12285,7 @@ async function run$7(argv, importMeta, {
12198
12285
  await handleOrgScanMetadata(orgSlug, scanId, outputKind);
12199
12286
  }
12200
12287
 
12201
- async function outputScanReach(result, cwd, outputKind) {
12288
+ async function outputScanReach(result, outputKind) {
12202
12289
  if (!result.ok) {
12203
12290
  process.exitCode = result.code ?? 1;
12204
12291
  }
@@ -12210,42 +12297,25 @@ async function outputScanReach(result, cwd, outputKind) {
12210
12297
  logger.logger.fail(utils.failMsgWithBadge(result.message, result.cause));
12211
12298
  return;
12212
12299
  }
12213
- logger.logger.success('finished on', cwd);
12300
+ logger.logger.log('');
12301
+ logger.logger.success('Finished!');
12214
12302
  }
12215
12303
 
12216
12304
  const {
12217
12305
  DOT_SOCKET_DOT_FACTS_JSON
12218
12306
  } = constants;
12219
- async function scanReachability(argv, cwd) {
12220
- try {
12221
- const result = await spawn.spawn(constants.execPath, [
12222
- // Lazily access constants.nodeNoWarningsFlags.
12223
- ...constants.nodeNoWarningsFlags,
12224
- // Lazily access constants.coanaBinPath.
12225
- constants.coanaBinPath, 'run', cwd, '--output-dir', cwd, '--socket-mode', DOT_SOCKET_DOT_FACTS_JSON, '--disable-report-submission', ...argv], {
12226
- cwd,
12227
- env: {
12228
- ...process.env,
12229
- SOCKET_CLI_API_TOKEN: utils.getDefaultToken()
12230
- }
12231
- });
12232
- return {
12233
- ok: true,
12234
- data: result.stdout.trim()
12235
- };
12236
- } catch (e) {
12237
- const message = e?.stdout ?? e?.message;
12238
- return {
12239
- ok: false,
12240
- data: e,
12241
- message
12242
- };
12243
- }
12244
- }
12245
-
12246
12307
  async function handleScanReach(argv, cwd, outputKind) {
12247
- const result = await scanReachability(argv, cwd);
12248
- await outputScanReach(result, cwd, outputKind);
12308
+ // Lazily access constants.spinner.
12309
+ const {
12310
+ spinner
12311
+ } = constants;
12312
+ spinner.start('Running reachability scan...');
12313
+ const result = await utils.spawnCoana(['run', cwd, '--output-dir', cwd, '--socket-mode', DOT_SOCKET_DOT_FACTS_JSON, '--disable-report-submission', ...argv], {
12314
+ cwd,
12315
+ spinner
12316
+ });
12317
+ spinner.stop();
12318
+ await outputScanReach(result, outputKind);
12249
12319
  }
12250
12320
 
12251
12321
  const {
@@ -14070,5 +14140,5 @@ void (async () => {
14070
14140
  await utils.captureException(e);
14071
14141
  }
14072
14142
  })();
14073
- //# debugId=2d2b9a8c-0021-4a50-be2d-f6b89034705e
14143
+ //# debugId=7eb55598-7509-4018-b34f-5184fd83870f
14074
14144
  //# sourceMappingURL=cli.js.map