socket 1.0.65 → 1.0.66
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/cli.js +522 -345
- package/dist/cli.js.map +1 -1
- package/dist/constants.js +3 -3
- package/dist/constants.js.map +1 -1
- package/dist/shadow-npm-inject.js +6 -6
- package/dist/shadow-npm-inject.js.map +1 -1
- package/dist/types/commands/analytics/fetch-org-analytics.d.mts +6 -2
- package/dist/types/commands/analytics/fetch-org-analytics.d.mts.map +1 -1
- package/dist/types/commands/analytics/fetch-repo-analytics.d.mts +6 -2
- package/dist/types/commands/analytics/fetch-repo-analytics.d.mts.map +1 -1
- package/dist/types/commands/analytics/output-analytics.d.mts +4 -4
- package/dist/types/commands/analytics/output-analytics.d.mts.map +1 -1
- package/dist/types/commands/audit-log/fetch-audit-log.d.mts +10 -5
- package/dist/types/commands/audit-log/fetch-audit-log.d.mts.map +1 -1
- package/dist/types/commands/audit-log/handle-audit-log.d.mts +1 -1
- package/dist/types/commands/audit-log/handle-audit-log.d.mts.map +1 -1
- package/dist/types/commands/audit-log/output-audit-log.d.mts +6 -6
- package/dist/types/commands/audit-log/output-audit-log.d.mts.map +1 -1
- package/dist/types/commands/ci/fetch-default-org-slug.d.mts +1 -1
- package/dist/types/commands/ci/fetch-default-org-slug.d.mts.map +1 -1
- package/dist/types/commands/ci/handle-ci.d.mts +1 -1
- package/dist/types/commands/ci/handle-ci.d.mts.map +1 -1
- package/dist/types/commands/fix/cmd-fix.d.mts.map +1 -1
- package/dist/types/commands/fix/handle-fix.d.mts +2 -1
- package/dist/types/commands/fix/handle-fix.d.mts.map +1 -1
- package/dist/types/commands/login/attempt-login.d.mts.map +1 -1
- package/dist/types/commands/organization/fetch-dependencies.d.mts +8 -3
- package/dist/types/commands/organization/fetch-dependencies.d.mts.map +1 -1
- package/dist/types/commands/organization/fetch-license-policy.d.mts +6 -2
- package/dist/types/commands/organization/fetch-license-policy.d.mts.map +1 -1
- package/dist/types/commands/organization/fetch-organization-list.d.mts +6 -2
- package/dist/types/commands/organization/fetch-organization-list.d.mts.map +1 -1
- package/dist/types/commands/organization/fetch-quota.d.mts +6 -2
- package/dist/types/commands/organization/fetch-quota.d.mts.map +1 -1
- package/dist/types/commands/organization/fetch-security-policy.d.mts +6 -2
- package/dist/types/commands/organization/fetch-security-policy.d.mts.map +1 -1
- package/dist/types/commands/organization/output-dependencies.d.mts +2 -2
- package/dist/types/commands/organization/output-dependencies.d.mts.map +1 -1
- package/dist/types/commands/organization/output-license-policy.d.mts +2 -2
- package/dist/types/commands/organization/output-license-policy.d.mts.map +1 -1
- package/dist/types/commands/organization/output-organization-list.d.mts +2 -2
- package/dist/types/commands/organization/output-organization-list.d.mts.map +1 -1
- package/dist/types/commands/organization/output-quota.d.mts +2 -2
- package/dist/types/commands/organization/output-quota.d.mts.map +1 -1
- package/dist/types/commands/organization/output-security-policy.d.mts +2 -2
- package/dist/types/commands/organization/output-security-policy.d.mts.map +1 -1
- package/dist/types/commands/package/fetch-purls-shallow-score.d.mts +6 -2
- package/dist/types/commands/package/fetch-purls-shallow-score.d.mts.map +1 -1
- package/dist/types/commands/repository/fetch-create-repo.d.mts +11 -6
- package/dist/types/commands/repository/fetch-create-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/fetch-delete-repo.d.mts +6 -2
- package/dist/types/commands/repository/fetch-delete-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/fetch-list-all-repos.d.mts +8 -6
- package/dist/types/commands/repository/fetch-list-all-repos.d.mts.map +1 -1
- package/dist/types/commands/repository/fetch-list-repos.d.mts +9 -4
- package/dist/types/commands/repository/fetch-list-repos.d.mts.map +1 -1
- package/dist/types/commands/repository/fetch-update-repo.d.mts +11 -6
- package/dist/types/commands/repository/fetch-update-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/fetch-view-repo.d.mts +6 -2
- package/dist/types/commands/repository/fetch-view-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/handle-create-repo.d.mts +2 -2
- package/dist/types/commands/repository/handle-create-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/handle-list-repos.d.mts +2 -2
- package/dist/types/commands/repository/handle-list-repos.d.mts.map +1 -1
- package/dist/types/commands/repository/handle-update-repo.d.mts +2 -2
- package/dist/types/commands/repository/handle-update-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/output-create-repo.d.mts +2 -2
- package/dist/types/commands/repository/output-create-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/output-delete-repo.d.mts +2 -2
- package/dist/types/commands/repository/output-delete-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/output-list-repos.d.mts +2 -2
- package/dist/types/commands/repository/output-list-repos.d.mts.map +1 -1
- package/dist/types/commands/repository/output-update-repo.d.mts +2 -2
- package/dist/types/commands/repository/output-update-repo.d.mts.map +1 -1
- package/dist/types/commands/repository/output-view-repo.d.mts +2 -2
- package/dist/types/commands/repository/output-view-repo.d.mts.map +1 -1
- package/dist/types/commands/scan/create-scan-from-github.d.mts.map +1 -1
- package/dist/types/commands/scan/fetch-create-org-full-scan.d.mts +12 -3
- package/dist/types/commands/scan/fetch-create-org-full-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/fetch-delete-org-full-scan.d.mts +6 -2
- package/dist/types/commands/scan/fetch-delete-org-full-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/fetch-diff-scan.d.mts +2 -2
- package/dist/types/commands/scan/fetch-diff-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/fetch-list-scans.d.mts +9 -4
- package/dist/types/commands/scan/fetch-list-scans.d.mts.map +1 -1
- package/dist/types/commands/scan/fetch-report-data.d.mts +8 -3
- package/dist/types/commands/scan/fetch-report-data.d.mts.map +1 -1
- package/dist/types/commands/scan/fetch-scan-metadata.d.mts +6 -2
- package/dist/types/commands/scan/fetch-scan-metadata.d.mts.map +1 -1
- package/dist/types/commands/scan/fetch-supported-scan-file-names.d.mts +6 -2
- package/dist/types/commands/scan/fetch-supported-scan-file-names.d.mts.map +1 -1
- package/dist/types/commands/scan/generate-report.d.mts +2 -2
- package/dist/types/commands/scan/generate-report.d.mts.map +1 -1
- package/dist/types/commands/scan/handle-create-new-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/handle-list-scans.d.mts +2 -2
- package/dist/types/commands/scan/handle-list-scans.d.mts.map +1 -1
- package/dist/types/commands/scan/handle-scan-report.d.mts.map +1 -1
- package/dist/types/commands/scan/output-create-new-scan.d.mts +2 -2
- package/dist/types/commands/scan/output-create-new-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/output-delete-scan.d.mts +2 -2
- package/dist/types/commands/scan/output-delete-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/output-diff-scan.d.mts +2 -2
- package/dist/types/commands/scan/output-diff-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/output-list-scans.d.mts +2 -2
- package/dist/types/commands/scan/output-list-scans.d.mts.map +1 -1
- package/dist/types/commands/scan/output-scan-metadata.d.mts +2 -2
- package/dist/types/commands/scan/output-scan-metadata.d.mts.map +1 -1
- package/dist/types/commands/scan/output-scan-report.d.mts +2 -2
- package/dist/types/commands/scan/output-scan-report.d.mts.map +1 -1
- package/dist/types/commands/scan/stream-scan.d.mts +6 -1
- package/dist/types/commands/scan/stream-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/suggest-org-slug.d.mts.map +1 -1
- package/dist/types/commands/scan/suggest-repo-slug.d.mts +5 -1
- package/dist/types/commands/scan/suggest-repo-slug.d.mts.map +1 -1
- package/dist/types/utils/alert/severity.d.mts +2 -2
- package/dist/types/utils/alert/severity.d.mts.map +1 -1
- package/dist/types/utils/alerts-map.d.mts.map +1 -1
- package/dist/types/utils/api.d.mts +8 -3
- package/dist/types/utils/api.d.mts.map +1 -1
- package/dist/types/utils/coana.d.mts.map +1 -1
- package/dist/types/utils/glob.d.mts +4 -2
- package/dist/types/utils/glob.d.mts.map +1 -1
- package/dist/types/utils/path-resolve.d.mts +2 -2
- package/dist/types/utils/path-resolve.d.mts.map +1 -1
- package/dist/types/utils/sdk.d.mts +6 -1
- package/dist/types/utils/sdk.d.mts.map +1 -1
- package/dist/utils.js +208 -104
- package/dist/utils.js.map +1 -1
- package/dist/vendor.js +141 -61
- package/external/@socketsecurity/registry/external/@inquirer/select.js +14 -2
- package/external/@socketsecurity/registry/external/@npmcli/package-json/index.js +4 -4
- package/external/@socketsecurity/registry/external/libnpmpack.js +4 -4
- package/external/@socketsecurity/registry/external/npm-package-arg.js +4 -4
- package/external/@socketsecurity/registry/external/pacote.js +4 -4
- package/external/@socketsecurity/registry/external/validate-npm-package-name.js +4 -4
- package/external/@socketsecurity/registry/lib/regexps.js +1 -1
- package/external/@socketsecurity/registry/lib/spinner.js +15 -5
- package/package.json +12 -12
package/dist/cli.js
CHANGED
|
@@ -23,29 +23,45 @@ var sorts = require('../external/@socketsecurity/registry/lib/sorts');
|
|
|
23
23
|
var regexps = require('../external/@socketsecurity/registry/lib/regexps');
|
|
24
24
|
var fs$2 = require('../external/@socketsecurity/registry/lib/fs');
|
|
25
25
|
var shadowNpmInject = require('./shadow-npm-inject.js');
|
|
26
|
-
var
|
|
26
|
+
var require$$7 = require('../external/@socketsecurity/registry/lib/objects');
|
|
27
27
|
var shadowNpmBin = require('./shadow-npm-bin.js');
|
|
28
|
-
var require$$
|
|
28
|
+
var require$$8 = require('../external/@socketsecurity/registry/lib/promises');
|
|
29
29
|
var require$$1 = require('node:util');
|
|
30
30
|
var os = require('node:os');
|
|
31
31
|
var promises = require('node:stream/promises');
|
|
32
32
|
|
|
33
|
-
async function fetchOrgAnalyticsData(time) {
|
|
34
|
-
const
|
|
33
|
+
async function fetchOrgAnalyticsData(time, options) {
|
|
34
|
+
const {
|
|
35
|
+
sdkOptions
|
|
36
|
+
} = {
|
|
37
|
+
__proto__: null,
|
|
38
|
+
...options
|
|
39
|
+
};
|
|
40
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
35
41
|
if (!sockSdkCResult.ok) {
|
|
36
42
|
return sockSdkCResult;
|
|
37
43
|
}
|
|
38
44
|
const sockSdk = sockSdkCResult.data;
|
|
39
|
-
return await utils.handleApiCall(sockSdk.getOrgAnalytics(time.toString()),
|
|
45
|
+
return await utils.handleApiCall(sockSdk.getOrgAnalytics(time.toString()), {
|
|
46
|
+
desc: 'analytics data'
|
|
47
|
+
});
|
|
40
48
|
}
|
|
41
49
|
|
|
42
|
-
async function fetchRepoAnalyticsData(repo, time) {
|
|
43
|
-
const
|
|
50
|
+
async function fetchRepoAnalyticsData(repo, time, options) {
|
|
51
|
+
const {
|
|
52
|
+
sdkOptions
|
|
53
|
+
} = {
|
|
54
|
+
__proto__: null,
|
|
55
|
+
...options
|
|
56
|
+
};
|
|
57
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
44
58
|
if (!sockSdkCResult.ok) {
|
|
45
59
|
return sockSdkCResult;
|
|
46
60
|
}
|
|
47
61
|
const sockSdk = sockSdkCResult.data;
|
|
48
|
-
return await utils.handleApiCall(sockSdk.getRepoAnalytics(repo, time.toString()),
|
|
62
|
+
return await utils.handleApiCall(sockSdk.getRepoAnalytics(repo, time.toString()), {
|
|
63
|
+
desc: 'analytics data'
|
|
64
|
+
});
|
|
49
65
|
}
|
|
50
66
|
|
|
51
67
|
// Note: Widgets does not seem to actually work as code :'(
|
|
@@ -446,18 +462,28 @@ async function run$P(argv, importMeta, {
|
|
|
446
462
|
});
|
|
447
463
|
}
|
|
448
464
|
|
|
449
|
-
async function fetchAuditLog({
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
}
|
|
456
|
-
const sockSdkCResult = await utils.setupSdk();
|
|
465
|
+
async function fetchAuditLog(config, options) {
|
|
466
|
+
const {
|
|
467
|
+
sdkOptions
|
|
468
|
+
} = {
|
|
469
|
+
__proto__: null,
|
|
470
|
+
...options
|
|
471
|
+
};
|
|
472
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
457
473
|
if (!sockSdkCResult.ok) {
|
|
458
474
|
return sockSdkCResult;
|
|
459
475
|
}
|
|
460
476
|
const sockSdk = sockSdkCResult.data;
|
|
477
|
+
const {
|
|
478
|
+
logType,
|
|
479
|
+
orgSlug,
|
|
480
|
+
outputKind,
|
|
481
|
+
page,
|
|
482
|
+
perPage
|
|
483
|
+
} = {
|
|
484
|
+
__proto__: null,
|
|
485
|
+
...config
|
|
486
|
+
};
|
|
461
487
|
return await utils.handleApiCall(sockSdk.getAuditLogEvents(orgSlug, {
|
|
462
488
|
// I'm not sure this is used at all.
|
|
463
489
|
outputJson: String(outputKind === 'json'),
|
|
@@ -467,7 +493,9 @@ async function fetchAuditLog({
|
|
|
467
493
|
type: logType,
|
|
468
494
|
page: String(page),
|
|
469
495
|
per_page: String(perPage)
|
|
470
|
-
}),
|
|
496
|
+
}), {
|
|
497
|
+
desc: `audit log for ${orgSlug}`
|
|
498
|
+
});
|
|
471
499
|
}
|
|
472
500
|
|
|
473
501
|
const require$4 = require$$5.createRequire(require('node:url').pathToFileURL(__filename).href);
|
|
@@ -538,10 +566,10 @@ async function outputAsJson(auditLogs, {
|
|
|
538
566
|
desc: 'Audit logs for given query',
|
|
539
567
|
// Lazily access constants.ENV.VITEST.
|
|
540
568
|
generated: constants.ENV.VITEST ? REDACTED : new Date().toISOString(),
|
|
541
|
-
org: orgSlug,
|
|
542
569
|
logType,
|
|
543
|
-
page,
|
|
544
570
|
nextPage: auditLogs.data.nextPage,
|
|
571
|
+
org: orgSlug,
|
|
572
|
+
page,
|
|
545
573
|
perPage,
|
|
546
574
|
logs: auditLogs.data.results.map(log => {
|
|
547
575
|
// Note: The subset is pretty arbitrary
|
|
@@ -708,11 +736,11 @@ async function handleAuditLog({
|
|
|
708
736
|
perPage
|
|
709
737
|
}) {
|
|
710
738
|
const auditLogs = await fetchAuditLog({
|
|
739
|
+
logType,
|
|
711
740
|
orgSlug,
|
|
712
741
|
outputKind,
|
|
713
742
|
page,
|
|
714
|
-
perPage
|
|
715
|
-
logType
|
|
743
|
+
perPage
|
|
716
744
|
});
|
|
717
745
|
await outputAuditLog(auditLogs, {
|
|
718
746
|
logType,
|
|
@@ -860,68 +888,34 @@ async function run$O(argv, importMeta, {
|
|
|
860
888
|
});
|
|
861
889
|
}
|
|
862
890
|
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
if (!sockSdkCResult.ok) {
|
|
875
|
-
return sockSdkCResult;
|
|
876
|
-
}
|
|
877
|
-
const sockSdk = sockSdkCResult.data;
|
|
878
|
-
const result = await utils.handleApiCall(sockSdk.getOrganizations(), 'list of organizations');
|
|
879
|
-
if (!result.ok) {
|
|
880
|
-
return result;
|
|
881
|
-
}
|
|
882
|
-
const orgs = result.data.organizations;
|
|
883
|
-
const keys = Object.keys(orgs);
|
|
884
|
-
if (!keys[0]) {
|
|
885
|
-
return {
|
|
886
|
-
ok: false,
|
|
887
|
-
message: 'Failed to establish identity',
|
|
888
|
-
data: `API did not return any organization associated with the current API token. Unable to continue.`
|
|
889
|
-
};
|
|
890
|
-
}
|
|
891
|
-
const slug = (keys[0] in orgs && orgs?.[keys[0]]?.name) ?? undefined;
|
|
892
|
-
if (!slug) {
|
|
893
|
-
return {
|
|
894
|
-
ok: false,
|
|
895
|
-
message: 'Failed to establish identity',
|
|
896
|
-
data: `Was unable to determine the default organization for the current API token. Unable to continue.`
|
|
897
|
-
};
|
|
898
|
-
}
|
|
899
|
-
debug.debugFn('notice', 'resolve: org', slug);
|
|
900
|
-
return {
|
|
901
|
-
ok: true,
|
|
902
|
-
message: 'Retrieved default org from server',
|
|
903
|
-
data: slug
|
|
891
|
+
async function fetchCreateOrgFullScan(packagePaths, orgSlug, config, options) {
|
|
892
|
+
const {
|
|
893
|
+
branchName,
|
|
894
|
+
commitHash,
|
|
895
|
+
commitMessage,
|
|
896
|
+
committers,
|
|
897
|
+
pullRequest,
|
|
898
|
+
repoName
|
|
899
|
+
} = {
|
|
900
|
+
__proto__: null,
|
|
901
|
+
...config
|
|
904
902
|
};
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
repoName
|
|
917
|
-
}) {
|
|
918
|
-
const sockSdkCResult = await utils.setupSdk();
|
|
903
|
+
const {
|
|
904
|
+
cwd = process.cwd(),
|
|
905
|
+
defaultBranch,
|
|
906
|
+
pendingHead,
|
|
907
|
+
sdkOptions,
|
|
908
|
+
tmp
|
|
909
|
+
} = {
|
|
910
|
+
__proto__: null,
|
|
911
|
+
...options
|
|
912
|
+
};
|
|
913
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
919
914
|
if (!sockSdkCResult.ok) {
|
|
920
915
|
return sockSdkCResult;
|
|
921
916
|
}
|
|
922
917
|
const sockSdk = sockSdkCResult.data;
|
|
923
|
-
|
|
924
|
-
return await utils.handleApiCall(sockSdk.createOrgFullScan(orgSlug, {
|
|
918
|
+
return await utils.handleApiCall(sockSdk.createOrgFullScan(orgSlug, packagePaths, cwd, {
|
|
925
919
|
...(branchName ? {
|
|
926
920
|
branch: branchName
|
|
927
921
|
} : {}),
|
|
@@ -938,28 +932,44 @@ async function fetchCreateOrgFullScan(packagePaths, orgSlug, defaultBranch, pend
|
|
|
938
932
|
...(pullRequest ? {
|
|
939
933
|
pull_request: String(pullRequest)
|
|
940
934
|
} : {}),
|
|
941
|
-
|
|
942
|
-
repo,
|
|
935
|
+
repo: repoName,
|
|
943
936
|
set_as_pending_head: String(pendingHead),
|
|
944
937
|
tmp: String(tmp)
|
|
945
|
-
}
|
|
938
|
+
}), {
|
|
939
|
+
desc: 'to create a scan'
|
|
940
|
+
});
|
|
946
941
|
}
|
|
947
942
|
|
|
948
|
-
async function fetchSupportedScanFileNames() {
|
|
949
|
-
const
|
|
943
|
+
async function fetchSupportedScanFileNames(options) {
|
|
944
|
+
const {
|
|
945
|
+
sdkOptions
|
|
946
|
+
} = {
|
|
947
|
+
__proto__: null,
|
|
948
|
+
...options
|
|
949
|
+
};
|
|
950
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
950
951
|
if (!sockSdkCResult.ok) {
|
|
951
952
|
return sockSdkCResult;
|
|
952
953
|
}
|
|
953
954
|
const sockSdk = sockSdkCResult.data;
|
|
954
|
-
return await utils.handleApiCall(sockSdk.
|
|
955
|
+
return await utils.handleApiCall(sockSdk.getSupportedScanFiles(), {
|
|
956
|
+
desc: 'supported scan file types'
|
|
957
|
+
});
|
|
955
958
|
}
|
|
956
959
|
|
|
957
960
|
/**
|
|
958
961
|
* This fetches all the relevant pieces of data to generate a report, given a
|
|
959
962
|
* full scan ID.
|
|
960
963
|
*/
|
|
961
|
-
async function
|
|
962
|
-
const
|
|
964
|
+
async function fetchScanData(orgSlug, scanId, options) {
|
|
965
|
+
const {
|
|
966
|
+
includeLicensePolicy,
|
|
967
|
+
sdkOptions
|
|
968
|
+
} = {
|
|
969
|
+
__proto__: null,
|
|
970
|
+
...options
|
|
971
|
+
};
|
|
972
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
963
973
|
if (!sockSdkCResult.ok) {
|
|
964
974
|
return sockSdkCResult;
|
|
965
975
|
}
|
|
@@ -1438,8 +1448,10 @@ async function handleScanReport({
|
|
|
1438
1448
|
scanId,
|
|
1439
1449
|
short
|
|
1440
1450
|
}) {
|
|
1441
|
-
const
|
|
1442
|
-
|
|
1451
|
+
const scanDataCResult = await fetchScanData(orgSlug, scanId, {
|
|
1452
|
+
includeLicensePolicy
|
|
1453
|
+
});
|
|
1454
|
+
await outputScanReport(scanDataCResult, {
|
|
1443
1455
|
filePath,
|
|
1444
1456
|
fold,
|
|
1445
1457
|
scanId: scanId,
|
|
@@ -2036,13 +2048,18 @@ async function handleCreateNewScan({
|
|
|
2036
2048
|
logger.logger.log('[ReadOnly] Bailing now');
|
|
2037
2049
|
return;
|
|
2038
2050
|
}
|
|
2039
|
-
const fullScanCResult = await fetchCreateOrgFullScan(packagePaths, orgSlug,
|
|
2051
|
+
const fullScanCResult = await fetchCreateOrgFullScan(packagePaths, orgSlug, {
|
|
2040
2052
|
commitHash,
|
|
2041
2053
|
commitMessage,
|
|
2042
2054
|
committers,
|
|
2043
2055
|
pullRequest,
|
|
2044
2056
|
repoName,
|
|
2045
2057
|
branchName
|
|
2058
|
+
}, {
|
|
2059
|
+
cwd,
|
|
2060
|
+
defaultBranch,
|
|
2061
|
+
pendingHead,
|
|
2062
|
+
tmp
|
|
2046
2063
|
});
|
|
2047
2064
|
if (fullScanCResult.ok && report) {
|
|
2048
2065
|
if (fullScanCResult.data?.id) {
|
|
@@ -2069,40 +2086,39 @@ async function handleCreateNewScan({
|
|
|
2069
2086
|
}
|
|
2070
2087
|
}
|
|
2071
2088
|
|
|
2072
|
-
|
|
2073
|
-
SOCKET_DEFAULT_BRANCH: SOCKET_DEFAULT_BRANCH$2,
|
|
2074
|
-
SOCKET_DEFAULT_REPOSITORY: SOCKET_DEFAULT_REPOSITORY$2
|
|
2075
|
-
} = constants;
|
|
2076
|
-
async function handleCI(autoManifest) {
|
|
2089
|
+
async function handleCi(autoManifest) {
|
|
2077
2090
|
// ci: {
|
|
2078
2091
|
// description: 'Alias for "report create --view --strict"',
|
|
2079
2092
|
// argv: ['report', 'create', '--view', '--strict']
|
|
2080
2093
|
// }
|
|
2081
|
-
const
|
|
2082
|
-
if (!
|
|
2083
|
-
process.exitCode =
|
|
2094
|
+
const orgSlugCResult = await utils.getDefaultOrgSlug();
|
|
2095
|
+
if (!orgSlugCResult.ok) {
|
|
2096
|
+
process.exitCode = orgSlugCResult.code ?? 1;
|
|
2084
2097
|
// Always assume json mode.
|
|
2085
|
-
logger.logger.log(utils.serializeResultJson(
|
|
2098
|
+
logger.logger.log(utils.serializeResultJson(orgSlugCResult));
|
|
2086
2099
|
return;
|
|
2087
2100
|
}
|
|
2101
|
+
const orgSlug = orgSlugCResult.data;
|
|
2088
2102
|
const cwd = process.cwd();
|
|
2089
|
-
|
|
2090
|
-
|
|
2103
|
+
// Lazily access constants.SOCKET_DEFAULT_BRANCH.
|
|
2104
|
+
const branchName = (await utils.gitBranch(cwd)) || constants.SOCKET_DEFAULT_BRANCH;
|
|
2105
|
+
// Lazily access constants.SOCKET_DEFAULT_REPOSITORY.
|
|
2106
|
+
const repoName = (await utils.getRepoName(cwd)) || constants.SOCKET_DEFAULT_REPOSITORY;
|
|
2091
2107
|
await handleCreateNewScan({
|
|
2092
2108
|
autoManifest,
|
|
2093
|
-
branchName
|
|
2109
|
+
branchName,
|
|
2094
2110
|
commitMessage: '',
|
|
2095
2111
|
commitHash: '',
|
|
2096
2112
|
committers: '',
|
|
2097
|
-
cwd
|
|
2113
|
+
cwd,
|
|
2098
2114
|
defaultBranch: false,
|
|
2099
2115
|
interactive: false,
|
|
2100
|
-
orgSlug
|
|
2116
|
+
orgSlug,
|
|
2101
2117
|
outputKind: 'json',
|
|
2102
2118
|
// When 'pendingHead' is true, it requires 'branchName' set and 'tmp' false.
|
|
2103
2119
|
pendingHead: true,
|
|
2104
2120
|
pullRequest: 0,
|
|
2105
|
-
repoName
|
|
2121
|
+
repoName,
|
|
2106
2122
|
readOnly: false,
|
|
2107
2123
|
report: true,
|
|
2108
2124
|
targets: ['.'],
|
|
@@ -2168,7 +2184,7 @@ async function run$N(argv, importMeta, {
|
|
|
2168
2184
|
logger.logger.log(DRY_RUN_BAILING_NOW$K);
|
|
2169
2185
|
return;
|
|
2170
2186
|
}
|
|
2171
|
-
await
|
|
2187
|
+
await handleCi(Boolean(cli.flags['autoManifest']));
|
|
2172
2188
|
}
|
|
2173
2189
|
|
|
2174
2190
|
async function discoverConfigValue(key) {
|
|
@@ -2275,43 +2291,35 @@ async function discoverConfigValue(key) {
|
|
|
2275
2291
|
};
|
|
2276
2292
|
}
|
|
2277
2293
|
async function getDefaultOrgFromToken() {
|
|
2278
|
-
const
|
|
2279
|
-
if (!
|
|
2294
|
+
const orgsCResult = await utils.fetchOrganization();
|
|
2295
|
+
if (!orgsCResult.ok) {
|
|
2280
2296
|
return undefined;
|
|
2281
2297
|
}
|
|
2282
|
-
const
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
if (arr.length === 0) {
|
|
2289
|
-
return undefined;
|
|
2290
|
-
}
|
|
2291
|
-
if (arr.length === 1) {
|
|
2292
|
-
return arr[0];
|
|
2293
|
-
}
|
|
2294
|
-
return arr;
|
|
2298
|
+
const {
|
|
2299
|
+
organizations
|
|
2300
|
+
} = orgsCResult.data;
|
|
2301
|
+
const slugs = Array.from(Object.values(organizations)).map(o => o.slug);
|
|
2302
|
+
if (slugs.length === 0) {
|
|
2303
|
+
return undefined;
|
|
2295
2304
|
}
|
|
2296
|
-
|
|
2305
|
+
if (slugs.length === 1) {
|
|
2306
|
+
return slugs[0];
|
|
2307
|
+
}
|
|
2308
|
+
return slugs;
|
|
2297
2309
|
}
|
|
2298
2310
|
async function getEnforceableOrgsFromToken() {
|
|
2299
|
-
const
|
|
2300
|
-
if (!
|
|
2311
|
+
const orgsCResult = await utils.fetchOrganization();
|
|
2312
|
+
if (!orgsCResult.ok) {
|
|
2301
2313
|
return undefined;
|
|
2302
2314
|
}
|
|
2303
|
-
const
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
if (arr.length === 0) {
|
|
2310
|
-
return undefined;
|
|
2311
|
-
}
|
|
2312
|
-
return arr;
|
|
2315
|
+
const {
|
|
2316
|
+
organizations
|
|
2317
|
+
} = orgsCResult.data;
|
|
2318
|
+
const slugs = Array.from(Object.values(organizations)).map(o => o.slug);
|
|
2319
|
+
if (!slugs.length) {
|
|
2320
|
+
return undefined;
|
|
2313
2321
|
}
|
|
2314
|
-
return
|
|
2322
|
+
return slugs;
|
|
2315
2323
|
}
|
|
2316
2324
|
|
|
2317
2325
|
async function outputConfigAuto(key, result, outputKind) {
|
|
@@ -3566,9 +3574,9 @@ async function getActualTree(cwd = process.cwd()) {
|
|
|
3566
3574
|
|
|
3567
3575
|
const {
|
|
3568
3576
|
BUN: BUN$4,
|
|
3569
|
-
NPM: NPM$
|
|
3577
|
+
NPM: NPM$7,
|
|
3570
3578
|
OVERRIDES: OVERRIDES$2,
|
|
3571
|
-
PNPM: PNPM$
|
|
3579
|
+
PNPM: PNPM$7,
|
|
3572
3580
|
RESOLUTIONS: RESOLUTIONS$1,
|
|
3573
3581
|
VLT: VLT$5,
|
|
3574
3582
|
YARN_BERRY: YARN_BERRY$4,
|
|
@@ -3587,7 +3595,7 @@ function getOverridesDataBun(pkgEnvDetails, pkgJson = pkgEnvDetails.editablePkgJ
|
|
|
3587
3595
|
function getOverridesDataNpm(pkgEnvDetails, pkgJson = pkgEnvDetails.editablePkgJson.content) {
|
|
3588
3596
|
const overrides = pkgJson?.[OVERRIDES$2] ?? {};
|
|
3589
3597
|
return {
|
|
3590
|
-
type: NPM$
|
|
3598
|
+
type: NPM$7,
|
|
3591
3599
|
overrides
|
|
3592
3600
|
};
|
|
3593
3601
|
}
|
|
@@ -3595,9 +3603,9 @@ function getOverridesDataNpm(pkgEnvDetails, pkgJson = pkgEnvDetails.editablePkgJ
|
|
|
3595
3603
|
// pnpm overrides documentation:
|
|
3596
3604
|
// https://pnpm.io/package_json#pnpmoverrides
|
|
3597
3605
|
function getOverridesDataPnpm(pkgEnvDetails, pkgJson = pkgEnvDetails.editablePkgJson.content) {
|
|
3598
|
-
const overrides = pkgJson?.[PNPM$
|
|
3606
|
+
const overrides = pkgJson?.[PNPM$7]?.[OVERRIDES$2] ?? {};
|
|
3599
3607
|
return {
|
|
3600
|
-
type: PNPM$
|
|
3608
|
+
type: PNPM$7,
|
|
3601
3609
|
overrides
|
|
3602
3610
|
};
|
|
3603
3611
|
}
|
|
@@ -3632,7 +3640,7 @@ function getOverridesData(pkgEnvDetails, pkgJson) {
|
|
|
3632
3640
|
switch (pkgEnvDetails.agent) {
|
|
3633
3641
|
case BUN$4:
|
|
3634
3642
|
return getOverridesDataBun(pkgEnvDetails, pkgJson);
|
|
3635
|
-
case PNPM$
|
|
3643
|
+
case PNPM$7:
|
|
3636
3644
|
return getOverridesDataPnpm(pkgEnvDetails, pkgJson);
|
|
3637
3645
|
case VLT$5:
|
|
3638
3646
|
return getOverridesDataVlt(pkgEnvDetails, pkgJson);
|
|
@@ -3640,7 +3648,7 @@ function getOverridesData(pkgEnvDetails, pkgJson) {
|
|
|
3640
3648
|
return getOverridesDataYarn(pkgEnvDetails, pkgJson);
|
|
3641
3649
|
case YARN_CLASSIC$4:
|
|
3642
3650
|
return getOverridesDataYarnClassic(pkgEnvDetails, pkgJson);
|
|
3643
|
-
case NPM$
|
|
3651
|
+
case NPM$7:
|
|
3644
3652
|
default:
|
|
3645
3653
|
return getOverridesDataNpm(pkgEnvDetails, pkgJson);
|
|
3646
3654
|
}
|
|
@@ -4266,7 +4274,7 @@ async function outputFixResult(result, outputKind) {
|
|
|
4266
4274
|
|
|
4267
4275
|
const {
|
|
4268
4276
|
OVERRIDES: OVERRIDES$1,
|
|
4269
|
-
PNPM: PNPM$
|
|
4277
|
+
PNPM: PNPM$6
|
|
4270
4278
|
} = constants;
|
|
4271
4279
|
async function install(pkgEnvDetails, options) {
|
|
4272
4280
|
const {
|
|
@@ -4383,15 +4391,15 @@ async function pnpmFix(pkgEnvDetails, fixConfig) {
|
|
|
4383
4391
|
const {
|
|
4384
4392
|
overrides: oldOverrides
|
|
4385
4393
|
} = getOverridesDataPnpm(pkgEnvDetails, editablePkgJson.content);
|
|
4386
|
-
const oldPnpmSection = editablePkgJson.content[PNPM$
|
|
4394
|
+
const oldPnpmSection = editablePkgJson.content[PNPM$6];
|
|
4387
4395
|
const overrideKey = `${packument.name}@${vulnerableVersionRange}`;
|
|
4388
4396
|
revertOverrides = undefined;
|
|
4389
4397
|
revertOverridesSrc = utils.extractOverridesFromPnpmLockSrc(lockSrc);
|
|
4390
4398
|
if (isWorkspaceRoot) {
|
|
4391
4399
|
revertOverrides = {
|
|
4392
|
-
[PNPM$
|
|
4400
|
+
[PNPM$6]: oldPnpmSection ? {
|
|
4393
4401
|
...oldPnpmSection,
|
|
4394
|
-
[OVERRIDES$1]:
|
|
4402
|
+
[OVERRIDES$1]: require$$7.hasKeys(oldOverrides) ? {
|
|
4395
4403
|
...oldOverrides,
|
|
4396
4404
|
[overrideKey]: undefined
|
|
4397
4405
|
} : undefined
|
|
@@ -4400,7 +4408,7 @@ async function pnpmFix(pkgEnvDetails, fixConfig) {
|
|
|
4400
4408
|
// Update overrides in the root package.json so that when `pnpm install`
|
|
4401
4409
|
// generates pnpm-lock.yaml it updates transitive dependencies too.
|
|
4402
4410
|
editablePkgJson.update({
|
|
4403
|
-
[PNPM$
|
|
4411
|
+
[PNPM$6]: {
|
|
4404
4412
|
...oldPnpmSection,
|
|
4405
4413
|
[OVERRIDES$1]: {
|
|
4406
4414
|
...oldOverrides,
|
|
@@ -4451,16 +4459,13 @@ async function pnpmFix(pkgEnvDetails, fixConfig) {
|
|
|
4451
4459
|
}, fixConfig);
|
|
4452
4460
|
}
|
|
4453
4461
|
|
|
4454
|
-
const {
|
|
4455
|
-
NPM: NPM$7,
|
|
4456
|
-
PNPM: PNPM$6
|
|
4457
|
-
} = constants;
|
|
4458
4462
|
async function handleFix({
|
|
4459
4463
|
autoMerge,
|
|
4460
4464
|
cwd,
|
|
4461
4465
|
ghsas,
|
|
4462
4466
|
limit,
|
|
4463
4467
|
minSatisfying,
|
|
4468
|
+
orgSlug,
|
|
4464
4469
|
outputKind,
|
|
4465
4470
|
prCheck,
|
|
4466
4471
|
purls,
|
|
@@ -4470,49 +4475,66 @@ async function handleFix({
|
|
|
4470
4475
|
testScript,
|
|
4471
4476
|
unknownFlags
|
|
4472
4477
|
}) {
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4478
|
+
if (ghsas.length === 1 && ghsas[0] === 'auto') {
|
|
4479
|
+
let lastCResult;
|
|
4480
|
+
const sockSdkCResult = await utils.setupSdk();
|
|
4481
|
+
lastCResult = sockSdkCResult;
|
|
4482
|
+
const sockSdk = sockSdkCResult.ok ? sockSdkCResult.data : undefined;
|
|
4483
|
+
const supportedFilesCResult = sockSdk ? await fetchSupportedScanFileNames() : undefined;
|
|
4484
|
+
if (supportedFilesCResult) {
|
|
4485
|
+
lastCResult = supportedFilesCResult;
|
|
4486
|
+
}
|
|
4487
|
+
const supportedFiles = supportedFilesCResult?.ok ? supportedFilesCResult.data : undefined;
|
|
4488
|
+
const packagePaths = supportedFiles ? await utils.getPackageFilesForScan(['.'], supportedFiles, {
|
|
4489
|
+
cwd
|
|
4490
|
+
}) : [];
|
|
4491
|
+
const uploadCResult = sockSdk ? await utils.handleApiCall(sockSdk?.uploadManifestFiles(orgSlug, packagePaths), {
|
|
4492
|
+
desc: 'upload manifests'
|
|
4493
|
+
}) : undefined;
|
|
4494
|
+
if (uploadCResult) {
|
|
4495
|
+
lastCResult = uploadCResult;
|
|
4496
|
+
}
|
|
4497
|
+
const tarHash = uploadCResult?.ok ? uploadCResult.data.tarHash : '';
|
|
4498
|
+
const idsOutputCResult = tarHash ? await utils.spawnCoana(['compute-fixes-and-upgrade-purls', cwd, '--manifests-tar-hash', tarHash], {
|
|
4499
|
+
cwd,
|
|
4500
|
+
spinner,
|
|
4501
|
+
env: {
|
|
4502
|
+
SOCKET_ORG_SLUG: orgSlug
|
|
4495
4503
|
}
|
|
4496
|
-
|
|
4504
|
+
}) : undefined;
|
|
4505
|
+
if (idsOutputCResult) {
|
|
4506
|
+
lastCResult = idsOutputCResult;
|
|
4497
4507
|
}
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
if (!applyFixesCResult.ok) {
|
|
4506
|
-
debug.debugFn('error', 'fail: Coana CLI');
|
|
4507
|
-
debug.debugDir('inspect', {
|
|
4508
|
-
message: applyFixesCResult.message,
|
|
4509
|
-
cause: applyFixesCResult.cause
|
|
4510
|
-
});
|
|
4508
|
+
const idsOutput = idsOutputCResult?.ok ? idsOutputCResult.data : '';
|
|
4509
|
+
const ids = utils.cmdFlagValueToArray(/(?<=Vulnerabilities found: )[^\n]+/.exec(idsOutput)?.[0]);
|
|
4510
|
+
const fixCResult = ids.length ? await utils.spawnCoana(['compute-fixes-and-upgrade-purls', cwd, '--manifests-tar-hash', tarHash, '--apply-fixes-to', ...ids, ...unknownFlags], {
|
|
4511
|
+
cwd,
|
|
4512
|
+
spinner,
|
|
4513
|
+
env: {
|
|
4514
|
+
SOCKET_ORG_SLUG: orgSlug
|
|
4511
4515
|
}
|
|
4512
|
-
|
|
4516
|
+
}) : undefined;
|
|
4517
|
+
if (fixCResult) {
|
|
4518
|
+
lastCResult = fixCResult;
|
|
4519
|
+
}
|
|
4520
|
+
// const fixCResult = await spawnCoana(
|
|
4521
|
+
// [
|
|
4522
|
+
// cwd,
|
|
4523
|
+
// '--socket-mode',
|
|
4524
|
+
// DOT_SOCKET_DOT_FACTS_JSON,
|
|
4525
|
+
// '--manifests-tar-hash',
|
|
4526
|
+
// tarHash,
|
|
4527
|
+
// ...unknownFlags,
|
|
4528
|
+
// ],
|
|
4529
|
+
// { cwd, spinner, env: { SOCKET_ORG_SLUG: orgSlug } },
|
|
4530
|
+
// )
|
|
4531
|
+
debug.debugDir('inspect', {
|
|
4532
|
+
lastCResult
|
|
4533
|
+
});
|
|
4534
|
+
if (!lastCResult.ok) {
|
|
4535
|
+
await outputFixResult(lastCResult, outputKind);
|
|
4513
4536
|
return;
|
|
4514
4537
|
}
|
|
4515
|
-
spinner?.infoAndStop('No GHSA IDs found.');
|
|
4516
4538
|
await outputFixResult({
|
|
4517
4539
|
ok: true,
|
|
4518
4540
|
data: ''
|
|
@@ -4538,11 +4560,17 @@ async function handleFix({
|
|
|
4538
4560
|
}, outputKind);
|
|
4539
4561
|
return;
|
|
4540
4562
|
}
|
|
4563
|
+
|
|
4564
|
+
// Lazily access constants.
|
|
4565
|
+
const {
|
|
4566
|
+
NPM,
|
|
4567
|
+
PNPM
|
|
4568
|
+
} = constants;
|
|
4541
4569
|
const {
|
|
4542
4570
|
agent,
|
|
4543
4571
|
agentVersion
|
|
4544
4572
|
} = pkgEnvDetails;
|
|
4545
|
-
if (agent !== NPM
|
|
4573
|
+
if (agent !== NPM && agent !== PNPM) {
|
|
4546
4574
|
await outputFixResult({
|
|
4547
4575
|
ok: false,
|
|
4548
4576
|
message: 'Not supported.',
|
|
@@ -4551,7 +4579,7 @@ async function handleFix({
|
|
|
4551
4579
|
return;
|
|
4552
4580
|
}
|
|
4553
4581
|
logger.logger.info(`Fixing packages for ${agent} v${agentVersion}.\n`);
|
|
4554
|
-
const fixer = agent === NPM
|
|
4582
|
+
const fixer = agent === NPM ? npmFix : pnpmFix;
|
|
4555
4583
|
await outputFixResult(await fixer(pkgEnvDetails, {
|
|
4556
4584
|
autoMerge,
|
|
4557
4585
|
cwd,
|
|
@@ -4589,7 +4617,8 @@ const config$H = {
|
|
|
4589
4617
|
type: 'string',
|
|
4590
4618
|
default: [],
|
|
4591
4619
|
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.\n Use '--ghsa auto' to automatically lookup GHSA IDs and compute fixes for them.`,
|
|
4592
|
-
isMultiple: true
|
|
4620
|
+
isMultiple: true,
|
|
4621
|
+
hidden: true
|
|
4593
4622
|
},
|
|
4594
4623
|
limit: {
|
|
4595
4624
|
type: 'number',
|
|
@@ -4714,6 +4743,14 @@ async function run$H(argv, importMeta, {
|
|
|
4714
4743
|
autoMerge = true;
|
|
4715
4744
|
test = true;
|
|
4716
4745
|
}
|
|
4746
|
+
const orgSlugCResult = await utils.getDefaultOrgSlug();
|
|
4747
|
+
if (!orgSlugCResult.ok) {
|
|
4748
|
+
process.exitCode = orgSlugCResult.code ?? 1;
|
|
4749
|
+
// Always assume json mode.
|
|
4750
|
+
// logger.log(serializeResultJson(orgSlugCResult))
|
|
4751
|
+
return;
|
|
4752
|
+
}
|
|
4753
|
+
const orgSlug = orgSlugCResult.data;
|
|
4717
4754
|
const ghsas = utils.cmdFlagValueToArray(cli.flags['ghsa']);
|
|
4718
4755
|
const limit = (cli.flags['limit'] ? parseInt(String(cli.flags['limit'] || ''), 10) : Infinity) || Infinity;
|
|
4719
4756
|
const maxSatisfying = Boolean(cli.flags['maxSatisfying']);
|
|
@@ -4728,6 +4765,7 @@ async function run$H(argv, importMeta, {
|
|
|
4728
4765
|
limit,
|
|
4729
4766
|
minSatisfying,
|
|
4730
4767
|
prCheck,
|
|
4768
|
+
orgSlug,
|
|
4731
4769
|
outputKind,
|
|
4732
4770
|
purls,
|
|
4733
4771
|
rangeStyle,
|
|
@@ -5022,22 +5060,31 @@ async function attemptLogin(apiBaseUrl, apiProxy) {
|
|
|
5022
5060
|
};
|
|
5023
5061
|
}
|
|
5024
5062
|
const apiToken = apiTokenInput || SOCKET_PUBLIC_API_TOKEN;
|
|
5025
|
-
const
|
|
5026
|
-
|
|
5063
|
+
const sockSdkCResult = await utils.setupSdk({
|
|
5064
|
+
apiBaseUrl,
|
|
5065
|
+
apiProxy,
|
|
5066
|
+
apiToken
|
|
5067
|
+
});
|
|
5068
|
+
if (!sockSdkCResult.ok) {
|
|
5027
5069
|
process.exitCode = 1;
|
|
5028
|
-
logger.logger.fail(utils.failMsgWithBadge(
|
|
5070
|
+
logger.logger.fail(utils.failMsgWithBadge(sockSdkCResult.message, sockSdkCResult.cause));
|
|
5029
5071
|
return;
|
|
5030
5072
|
}
|
|
5031
|
-
const
|
|
5032
|
-
|
|
5073
|
+
const sockSdk = sockSdkCResult.data;
|
|
5074
|
+
const orgsCResult = await utils.handleApiCall(sockSdk.getOrganizations(), {
|
|
5075
|
+
desc: 'token verification'
|
|
5076
|
+
});
|
|
5077
|
+
if (!orgsCResult.ok) {
|
|
5033
5078
|
process.exitCode = 1;
|
|
5034
|
-
logger.logger.fail(utils.failMsgWithBadge(
|
|
5079
|
+
logger.logger.fail(utils.failMsgWithBadge(orgsCResult.message, orgsCResult.cause));
|
|
5035
5080
|
return;
|
|
5036
5081
|
}
|
|
5037
|
-
const
|
|
5038
|
-
|
|
5082
|
+
const {
|
|
5083
|
+
organizations
|
|
5084
|
+
} = orgsCResult.data;
|
|
5085
|
+
const orgSlugs = Object.values(organizations).map(obj => obj.slug);
|
|
5039
5086
|
logger.logger.success(`API key verified: ${orgSlugs}`);
|
|
5040
|
-
const enforcedChoices = Object.values(
|
|
5087
|
+
const enforcedChoices = Object.values(organizations).filter(org => org?.plan === 'enterprise').map(org => ({
|
|
5041
5088
|
name: org.name ?? 'undefined',
|
|
5042
5089
|
value: org.id
|
|
5043
5090
|
}));
|
|
@@ -7348,8 +7395,8 @@ function updatePkgJsonField(editablePkgJson, field, value) {
|
|
|
7348
7395
|
if (oldValue) {
|
|
7349
7396
|
// The field already exists so we simply update the field value.
|
|
7350
7397
|
if (field === PNPM$1) {
|
|
7351
|
-
const isPnpmObj =
|
|
7352
|
-
if (
|
|
7398
|
+
const isPnpmObj = require$$7.isObject(oldValue);
|
|
7399
|
+
if (require$$7.hasKeys(value)) {
|
|
7353
7400
|
editablePkgJson.update({
|
|
7354
7401
|
[field]: {
|
|
7355
7402
|
...(isPnpmObj ? oldValue : {}),
|
|
@@ -7361,7 +7408,7 @@ function updatePkgJsonField(editablePkgJson, field, value) {
|
|
|
7361
7408
|
});
|
|
7362
7409
|
} else {
|
|
7363
7410
|
// Properties with undefined values are omitted when saved as JSON.
|
|
7364
|
-
editablePkgJson.update(
|
|
7411
|
+
editablePkgJson.update(require$$7.hasKeys(oldValue) ? {
|
|
7365
7412
|
[field]: {
|
|
7366
7413
|
...(isPnpmObj ? oldValue : {}),
|
|
7367
7414
|
overrides: undefined
|
|
@@ -7373,7 +7420,7 @@ function updatePkgJsonField(editablePkgJson, field, value) {
|
|
|
7373
7420
|
} else if (field === OVERRIDES || field === RESOLUTIONS) {
|
|
7374
7421
|
// Properties with undefined values are omitted when saved as JSON.
|
|
7375
7422
|
editablePkgJson.update({
|
|
7376
|
-
[field]:
|
|
7423
|
+
[field]: require$$7.hasKeys(value) ? value : undefined
|
|
7377
7424
|
});
|
|
7378
7425
|
} else {
|
|
7379
7426
|
editablePkgJson.update({
|
|
@@ -7382,7 +7429,7 @@ function updatePkgJsonField(editablePkgJson, field, value) {
|
|
|
7382
7429
|
}
|
|
7383
7430
|
return;
|
|
7384
7431
|
}
|
|
7385
|
-
if ((field === OVERRIDES || field === PNPM$1 || field === RESOLUTIONS) && !
|
|
7432
|
+
if ((field === OVERRIDES || field === PNPM$1 || field === RESOLUTIONS) && !require$$7.hasKeys(value)) {
|
|
7386
7433
|
return;
|
|
7387
7434
|
}
|
|
7388
7435
|
// Since the field doesn't exist we want to insert it into the package.json
|
|
@@ -7517,7 +7564,7 @@ async function addOverrides(pkgEnvDetails, pkgPath, options) {
|
|
|
7517
7564
|
let loggedAddingText = false;
|
|
7518
7565
|
|
|
7519
7566
|
// Chunk package names to process them in parallel 3 at a time.
|
|
7520
|
-
await require$$
|
|
7567
|
+
await require$$8.pEach(manifestEntries, 3, async ({
|
|
7521
7568
|
1: data
|
|
7522
7569
|
}) => {
|
|
7523
7570
|
const {
|
|
@@ -7531,11 +7578,11 @@ async function addOverrides(pkgEnvDetails, pkgPath, options) {
|
|
|
7531
7578
|
for (const {
|
|
7532
7579
|
1: depObj
|
|
7533
7580
|
} of depEntries) {
|
|
7534
|
-
const sockSpec =
|
|
7581
|
+
const sockSpec = require$$7.hasOwn(depObj, sockRegPkgName) ? depObj[sockRegPkgName] : undefined;
|
|
7535
7582
|
if (sockSpec) {
|
|
7536
7583
|
depAliasMap.set(sockRegPkgName, sockSpec);
|
|
7537
7584
|
}
|
|
7538
|
-
const origSpec =
|
|
7585
|
+
const origSpec = require$$7.hasOwn(depObj, origPkgName) ? depObj[origPkgName] : undefined;
|
|
7539
7586
|
if (origSpec) {
|
|
7540
7587
|
let thisSpec = origSpec;
|
|
7541
7588
|
// Add package aliases for direct dependencies to avoid npm EOVERRIDE
|
|
@@ -7571,11 +7618,11 @@ async function addOverrides(pkgEnvDetails, pkgPath, options) {
|
|
|
7571
7618
|
npmExecPath
|
|
7572
7619
|
});
|
|
7573
7620
|
// Chunk package names to process them in parallel 3 at a time.
|
|
7574
|
-
await require$$
|
|
7621
|
+
await require$$8.pEach(overridesDataObjects, 3, async ({
|
|
7575
7622
|
overrides,
|
|
7576
7623
|
type
|
|
7577
7624
|
}) => {
|
|
7578
|
-
const overrideExists =
|
|
7625
|
+
const overrideExists = require$$7.hasOwn(overrides, origPkgName);
|
|
7579
7626
|
if (overrideExists || thingScanner(pkgEnvDetails, thingToScan, origPkgName, lockName)) {
|
|
7580
7627
|
const oldSpec = overrideExists ? overrides[origPkgName] : undefined;
|
|
7581
7628
|
const origDepAlias = depAliasMap.get(origPkgName);
|
|
@@ -7625,7 +7672,7 @@ async function addOverrides(pkgEnvDetails, pkgPath, options) {
|
|
|
7625
7672
|
});
|
|
7626
7673
|
if (isWorkspace) {
|
|
7627
7674
|
// Chunk package names to process them in parallel 3 at a time.
|
|
7628
|
-
await require$$
|
|
7675
|
+
await require$$8.pEach(workspacePkgJsonPaths, 3, async workspacePkgJsonPath => {
|
|
7629
7676
|
const otherState = await addOverrides(pkgEnvDetails, path.dirname(workspacePkgJsonPath), {
|
|
7630
7677
|
logger,
|
|
7631
7678
|
pin,
|
|
@@ -7646,7 +7693,7 @@ async function addOverrides(pkgEnvDetails, pkgPath, options) {
|
|
|
7646
7693
|
overrides,
|
|
7647
7694
|
type
|
|
7648
7695
|
} of overridesDataObjects) {
|
|
7649
|
-
updateManifest(type, pkgEnvDetails.editablePkgJson,
|
|
7696
|
+
updateManifest(type, pkgEnvDetails.editablePkgJson, require$$7.toSortedObject(overrides));
|
|
7650
7697
|
}
|
|
7651
7698
|
}
|
|
7652
7699
|
await pkgEnvDetails.editablePkgJson.save();
|
|
@@ -7891,19 +7938,31 @@ async function run$r(argv, importMeta, {
|
|
|
7891
7938
|
});
|
|
7892
7939
|
}
|
|
7893
7940
|
|
|
7894
|
-
async function fetchDependencies({
|
|
7895
|
-
|
|
7896
|
-
|
|
7897
|
-
}
|
|
7898
|
-
|
|
7941
|
+
async function fetchDependencies(config, options) {
|
|
7942
|
+
const {
|
|
7943
|
+
sdkOptions
|
|
7944
|
+
} = {
|
|
7945
|
+
__proto__: null,
|
|
7946
|
+
...options
|
|
7947
|
+
};
|
|
7948
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
7899
7949
|
if (!sockSdkCResult.ok) {
|
|
7900
7950
|
return sockSdkCResult;
|
|
7901
7951
|
}
|
|
7902
7952
|
const sockSdk = sockSdkCResult.data;
|
|
7953
|
+
const {
|
|
7954
|
+
limit,
|
|
7955
|
+
offset
|
|
7956
|
+
} = {
|
|
7957
|
+
__proto__: null,
|
|
7958
|
+
...config
|
|
7959
|
+
};
|
|
7903
7960
|
return await utils.handleApiCall(sockSdk.searchDependencies({
|
|
7904
7961
|
limit,
|
|
7905
7962
|
offset
|
|
7906
|
-
}),
|
|
7963
|
+
}), {
|
|
7964
|
+
desc: 'organization dependencies'
|
|
7965
|
+
});
|
|
7907
7966
|
}
|
|
7908
7967
|
|
|
7909
7968
|
// @ts-ignore
|
|
@@ -8068,13 +8127,21 @@ async function run$q(argv, importMeta, {
|
|
|
8068
8127
|
});
|
|
8069
8128
|
}
|
|
8070
8129
|
|
|
8071
|
-
async function fetchLicensePolicy(orgSlug) {
|
|
8072
|
-
const
|
|
8130
|
+
async function fetchLicensePolicy(orgSlug, options) {
|
|
8131
|
+
const {
|
|
8132
|
+
sdkOptions
|
|
8133
|
+
} = {
|
|
8134
|
+
__proto__: null,
|
|
8135
|
+
...options
|
|
8136
|
+
};
|
|
8137
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
8073
8138
|
if (!sockSdkCResult.ok) {
|
|
8074
8139
|
return sockSdkCResult;
|
|
8075
8140
|
}
|
|
8076
8141
|
const sockSdk = sockSdkCResult.data;
|
|
8077
|
-
return await utils.handleApiCall(sockSdk.getOrgLicensePolicy(orgSlug),
|
|
8142
|
+
return await utils.handleApiCall(sockSdk.getOrgLicensePolicy(orgSlug), {
|
|
8143
|
+
desc: 'organization license policy'
|
|
8144
|
+
});
|
|
8078
8145
|
}
|
|
8079
8146
|
|
|
8080
8147
|
async function outputLicensePolicy(result, outputKind) {
|
|
@@ -8196,13 +8263,21 @@ async function run$p(argv, importMeta, {
|
|
|
8196
8263
|
await handleLicensePolicy(orgSlug, outputKind);
|
|
8197
8264
|
}
|
|
8198
8265
|
|
|
8199
|
-
async function fetchSecurityPolicy(orgSlug) {
|
|
8200
|
-
const
|
|
8266
|
+
async function fetchSecurityPolicy(orgSlug, options) {
|
|
8267
|
+
const {
|
|
8268
|
+
sdkOptions
|
|
8269
|
+
} = {
|
|
8270
|
+
__proto__: null,
|
|
8271
|
+
...options
|
|
8272
|
+
};
|
|
8273
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
8201
8274
|
if (!sockSdkCResult.ok) {
|
|
8202
8275
|
return sockSdkCResult;
|
|
8203
8276
|
}
|
|
8204
8277
|
const sockSdk = sockSdkCResult.data;
|
|
8205
|
-
return await utils.handleApiCall(sockSdk.getOrgSecurityPolicy(orgSlug),
|
|
8278
|
+
return await utils.handleApiCall(sockSdk.getOrgSecurityPolicy(orgSlug), {
|
|
8279
|
+
desc: 'organization security policy'
|
|
8280
|
+
});
|
|
8206
8281
|
}
|
|
8207
8282
|
|
|
8208
8283
|
async function outputSecurityPolicy(result, outputKind) {
|
|
@@ -8327,15 +8402,6 @@ async function run$o(argv, importMeta, {
|
|
|
8327
8402
|
await handleSecurityPolicy(orgSlug, outputKind);
|
|
8328
8403
|
}
|
|
8329
8404
|
|
|
8330
|
-
async function fetchOrganization() {
|
|
8331
|
-
const sockSdkCResult = await utils.setupSdk();
|
|
8332
|
-
if (!sockSdkCResult.ok) {
|
|
8333
|
-
return sockSdkCResult;
|
|
8334
|
-
}
|
|
8335
|
-
const sockSdk = sockSdkCResult.data;
|
|
8336
|
-
return await utils.handleApiCall(sockSdk.getOrganizations(), 'organization list');
|
|
8337
|
-
}
|
|
8338
|
-
|
|
8339
8405
|
async function outputOrganizationList(result, outputKind = 'text') {
|
|
8340
8406
|
if (!result.ok) {
|
|
8341
8407
|
process.exitCode = result.code ?? 1;
|
|
@@ -8387,7 +8453,7 @@ async function outputOrganizationList(result, outputKind = 'text') {
|
|
|
8387
8453
|
}
|
|
8388
8454
|
|
|
8389
8455
|
async function handleOrganizationList(outputKind = 'text') {
|
|
8390
|
-
const data = await fetchOrganization();
|
|
8456
|
+
const data = await utils.fetchOrganization();
|
|
8391
8457
|
await outputOrganizationList(data, outputKind);
|
|
8392
8458
|
}
|
|
8393
8459
|
|
|
@@ -8486,13 +8552,21 @@ const cmdOrganizationPolicy = {
|
|
|
8486
8552
|
}
|
|
8487
8553
|
};
|
|
8488
8554
|
|
|
8489
|
-
async function fetchQuota() {
|
|
8490
|
-
const
|
|
8555
|
+
async function fetchQuota(options) {
|
|
8556
|
+
const {
|
|
8557
|
+
sdkOptions
|
|
8558
|
+
} = {
|
|
8559
|
+
__proto__: null,
|
|
8560
|
+
...options
|
|
8561
|
+
};
|
|
8562
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
8491
8563
|
if (!sockSdkCResult.ok) {
|
|
8492
8564
|
return sockSdkCResult;
|
|
8493
8565
|
}
|
|
8494
8566
|
const sockSdk = sockSdkCResult.data;
|
|
8495
|
-
return await utils.handleApiCall(sockSdk.getQuota(),
|
|
8567
|
+
return await utils.handleApiCall(sockSdk.getQuota(), {
|
|
8568
|
+
desc: 'token quota'
|
|
8569
|
+
});
|
|
8496
8570
|
}
|
|
8497
8571
|
|
|
8498
8572
|
async function outputQuota(result, outputKind = 'text') {
|
|
@@ -8951,20 +9025,28 @@ async function run$l(argv, importMeta, {
|
|
|
8951
9025
|
await handlePurlDeepScore(purls[0] || '', outputKind);
|
|
8952
9026
|
}
|
|
8953
9027
|
|
|
8954
|
-
async function fetchPurlsShallowScore(purls) {
|
|
8955
|
-
|
|
8956
|
-
|
|
9028
|
+
async function fetchPurlsShallowScore(purls, options) {
|
|
9029
|
+
const {
|
|
9030
|
+
sdkOptions
|
|
9031
|
+
} = {
|
|
9032
|
+
__proto__: null,
|
|
9033
|
+
...options
|
|
9034
|
+
};
|
|
9035
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
8957
9036
|
if (!sockSdkCResult.ok) {
|
|
8958
9037
|
return sockSdkCResult;
|
|
8959
9038
|
}
|
|
8960
9039
|
const sockSdk = sockSdkCResult.data;
|
|
9040
|
+
logger.logger.info(`Requesting shallow score data for ${purls.length} package urls (purl): ${purls.join(', ')}`);
|
|
8961
9041
|
const result = await utils.handleApiCall(sockSdk.batchPackageFetch({
|
|
8962
|
-
alerts: 'true'
|
|
8963
|
-
}, {
|
|
8964
9042
|
components: purls.map(purl => ({
|
|
8965
9043
|
purl
|
|
8966
9044
|
}))
|
|
8967
|
-
}
|
|
9045
|
+
}, {
|
|
9046
|
+
alerts: 'true'
|
|
9047
|
+
}), {
|
|
9048
|
+
desc: 'looking up package'
|
|
9049
|
+
});
|
|
8968
9050
|
if (!result.ok) {
|
|
8969
9051
|
return result;
|
|
8970
9052
|
}
|
|
@@ -9460,26 +9542,35 @@ async function run$i(argv, importMeta, {
|
|
|
9460
9542
|
await runRawNpx(argv);
|
|
9461
9543
|
}
|
|
9462
9544
|
|
|
9463
|
-
async function fetchCreateRepo({
|
|
9464
|
-
|
|
9465
|
-
|
|
9466
|
-
|
|
9467
|
-
|
|
9468
|
-
|
|
9469
|
-
|
|
9470
|
-
|
|
9471
|
-
|
|
9545
|
+
async function fetchCreateRepo(config, options) {
|
|
9546
|
+
const {
|
|
9547
|
+
defaultBranch,
|
|
9548
|
+
description,
|
|
9549
|
+
homepage,
|
|
9550
|
+
orgSlug,
|
|
9551
|
+
repoName,
|
|
9552
|
+
visibility
|
|
9553
|
+
} = config;
|
|
9554
|
+
const {
|
|
9555
|
+
sdkOptions
|
|
9556
|
+
} = {
|
|
9557
|
+
__proto__: null,
|
|
9558
|
+
...options
|
|
9559
|
+
};
|
|
9560
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
9472
9561
|
if (!sockSdkCResult.ok) {
|
|
9473
9562
|
return sockSdkCResult;
|
|
9474
9563
|
}
|
|
9475
9564
|
const sockSdk = sockSdkCResult.data;
|
|
9476
9565
|
return await utils.handleApiCall(sockSdk.createOrgRepo(orgSlug, {
|
|
9477
|
-
|
|
9566
|
+
default_branch: defaultBranch,
|
|
9478
9567
|
description,
|
|
9479
9568
|
homepage,
|
|
9480
|
-
|
|
9569
|
+
name: repoName,
|
|
9481
9570
|
visibility
|
|
9482
|
-
}),
|
|
9571
|
+
}), {
|
|
9572
|
+
desc: 'to create a repository'
|
|
9573
|
+
});
|
|
9483
9574
|
}
|
|
9484
9575
|
|
|
9485
9576
|
function outputCreateRepo(result, requestedName, outputKind) {
|
|
@@ -9501,7 +9592,7 @@ function outputCreateRepo(result, requestedName, outputKind) {
|
|
|
9501
9592
|
}
|
|
9502
9593
|
|
|
9503
9594
|
async function handleCreateRepo({
|
|
9504
|
-
|
|
9595
|
+
defaultBranch,
|
|
9505
9596
|
description,
|
|
9506
9597
|
homepage,
|
|
9507
9598
|
orgSlug,
|
|
@@ -9509,7 +9600,7 @@ async function handleCreateRepo({
|
|
|
9509
9600
|
visibility
|
|
9510
9601
|
}, outputKind) {
|
|
9511
9602
|
const data = await fetchCreateRepo({
|
|
9512
|
-
|
|
9603
|
+
defaultBranch,
|
|
9513
9604
|
description,
|
|
9514
9605
|
homepage,
|
|
9515
9606
|
orgSlug,
|
|
@@ -9639,18 +9730,26 @@ async function run$h(argv, importMeta, {
|
|
|
9639
9730
|
repoName: String(repoName),
|
|
9640
9731
|
description: String(cli.flags['repoDescription'] || ''),
|
|
9641
9732
|
homepage: String(cli.flags['homepage'] || ''),
|
|
9642
|
-
|
|
9733
|
+
defaultBranch: String(cli.flags['defaultBranch'] || ''),
|
|
9643
9734
|
visibility: String(cli.flags['visibility'] || 'private')
|
|
9644
9735
|
}, outputKind);
|
|
9645
9736
|
}
|
|
9646
9737
|
|
|
9647
|
-
async function fetchDeleteRepo(orgSlug, repoName) {
|
|
9648
|
-
const
|
|
9738
|
+
async function fetchDeleteRepo(orgSlug, repoName, options) {
|
|
9739
|
+
const {
|
|
9740
|
+
sdkOptions
|
|
9741
|
+
} = {
|
|
9742
|
+
__proto__: null,
|
|
9743
|
+
...options
|
|
9744
|
+
};
|
|
9745
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
9649
9746
|
if (!sockSdkCResult.ok) {
|
|
9650
9747
|
return sockSdkCResult;
|
|
9651
9748
|
}
|
|
9652
9749
|
const sockSdk = sockSdkCResult.data;
|
|
9653
|
-
return await utils.handleApiCall(sockSdk.deleteOrgRepo(orgSlug, repoName),
|
|
9750
|
+
return await utils.handleApiCall(sockSdk.deleteOrgRepo(orgSlug, repoName), {
|
|
9751
|
+
desc: 'to delete a repository'
|
|
9752
|
+
});
|
|
9654
9753
|
}
|
|
9655
9754
|
|
|
9656
9755
|
async function outputDeleteRepo(result, repoName, outputKind) {
|
|
@@ -9768,12 +9867,16 @@ async function run$g(argv, importMeta, {
|
|
|
9768
9867
|
await handleDeleteRepo(orgSlug, repoName, outputKind);
|
|
9769
9868
|
}
|
|
9770
9869
|
|
|
9771
|
-
async function fetchListAllRepos({
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9870
|
+
async function fetchListAllRepos(orgSlug, options) {
|
|
9871
|
+
const {
|
|
9872
|
+
direction,
|
|
9873
|
+
sdkOptions,
|
|
9874
|
+
sort
|
|
9875
|
+
} = {
|
|
9876
|
+
__proto__: null,
|
|
9877
|
+
...options
|
|
9878
|
+
};
|
|
9879
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
9777
9880
|
if (!sockSdkCResult.ok) {
|
|
9778
9881
|
return sockSdkCResult;
|
|
9779
9882
|
}
|
|
@@ -9796,7 +9899,9 @@ async function fetchListAllRepos({
|
|
|
9796
9899
|
per_page: String(100),
|
|
9797
9900
|
// max
|
|
9798
9901
|
page: String(nextPage)
|
|
9799
|
-
}),
|
|
9902
|
+
}), {
|
|
9903
|
+
desc: 'list of repositories'
|
|
9904
|
+
});
|
|
9800
9905
|
if (!orgRepoListCResult.ok) {
|
|
9801
9906
|
debug.debugFn('error', 'fail: fetch repo');
|
|
9802
9907
|
debug.debugDir('inspect', {
|
|
@@ -9816,14 +9921,24 @@ async function fetchListAllRepos({
|
|
|
9816
9921
|
};
|
|
9817
9922
|
}
|
|
9818
9923
|
|
|
9819
|
-
async function fetchListRepos({
|
|
9820
|
-
|
|
9821
|
-
|
|
9822
|
-
|
|
9823
|
-
|
|
9824
|
-
|
|
9825
|
-
|
|
9826
|
-
|
|
9924
|
+
async function fetchListRepos(config, options) {
|
|
9925
|
+
const {
|
|
9926
|
+
direction,
|
|
9927
|
+
orgSlug,
|
|
9928
|
+
page,
|
|
9929
|
+
perPage,
|
|
9930
|
+
sort
|
|
9931
|
+
} = {
|
|
9932
|
+
__proto__: null,
|
|
9933
|
+
...config
|
|
9934
|
+
};
|
|
9935
|
+
const {
|
|
9936
|
+
sdkOptions
|
|
9937
|
+
} = {
|
|
9938
|
+
__proto__: null,
|
|
9939
|
+
...options
|
|
9940
|
+
};
|
|
9941
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
9827
9942
|
if (!sockSdkCResult.ok) {
|
|
9828
9943
|
return sockSdkCResult;
|
|
9829
9944
|
}
|
|
@@ -9831,9 +9946,11 @@ async function fetchListRepos({
|
|
|
9831
9946
|
return await utils.handleApiCall(sockSdk.getOrgRepoList(orgSlug, {
|
|
9832
9947
|
sort,
|
|
9833
9948
|
direction,
|
|
9834
|
-
per_page: String(
|
|
9949
|
+
per_page: String(perPage),
|
|
9835
9950
|
page: String(page)
|
|
9836
|
-
}),
|
|
9951
|
+
}), {
|
|
9952
|
+
desc: 'list of repositories'
|
|
9953
|
+
});
|
|
9837
9954
|
}
|
|
9838
9955
|
|
|
9839
9956
|
// @ts-ignore
|
|
@@ -9899,13 +10016,12 @@ async function handleListRepos({
|
|
|
9899
10016
|
orgSlug,
|
|
9900
10017
|
outputKind,
|
|
9901
10018
|
page,
|
|
9902
|
-
|
|
10019
|
+
perPage,
|
|
9903
10020
|
sort
|
|
9904
10021
|
}) {
|
|
9905
10022
|
if (all) {
|
|
9906
|
-
const data = await fetchListAllRepos({
|
|
10023
|
+
const data = await fetchListAllRepos(orgSlug, {
|
|
9907
10024
|
direction,
|
|
9908
|
-
orgSlug,
|
|
9909
10025
|
sort
|
|
9910
10026
|
});
|
|
9911
10027
|
await outputListRepos(data, outputKind, 0, 0, sort, Infinity, direction);
|
|
@@ -9914,14 +10030,14 @@ async function handleListRepos({
|
|
|
9914
10030
|
direction,
|
|
9915
10031
|
orgSlug,
|
|
9916
10032
|
page,
|
|
9917
|
-
|
|
10033
|
+
perPage,
|
|
9918
10034
|
sort
|
|
9919
10035
|
});
|
|
9920
10036
|
if (!data.ok) {
|
|
9921
10037
|
await outputListRepos(data, outputKind, 0, 0, '', 0, direction);
|
|
9922
10038
|
} else {
|
|
9923
10039
|
// Note: nextPage defaults to 0, is null when there's no next page
|
|
9924
|
-
await outputListRepos(data, outputKind, page, data.data.nextPage, sort,
|
|
10040
|
+
await outputListRepos(data, outputKind, page, data.data.nextPage, sort, perPage, direction);
|
|
9925
10041
|
}
|
|
9926
10042
|
}
|
|
9927
10043
|
}
|
|
@@ -10054,32 +10170,44 @@ async function run$f(argv, importMeta, {
|
|
|
10054
10170
|
orgSlug,
|
|
10055
10171
|
outputKind,
|
|
10056
10172
|
page: Number(cli.flags['page']) || 1,
|
|
10057
|
-
|
|
10173
|
+
perPage: Number(cli.flags['perPage']) || 30,
|
|
10058
10174
|
sort: String(cli.flags['sort'] || 'created_at')
|
|
10059
10175
|
});
|
|
10060
10176
|
}
|
|
10061
10177
|
|
|
10062
|
-
async function fetchUpdateRepo({
|
|
10063
|
-
|
|
10064
|
-
|
|
10065
|
-
|
|
10066
|
-
|
|
10067
|
-
|
|
10068
|
-
|
|
10069
|
-
|
|
10070
|
-
|
|
10178
|
+
async function fetchUpdateRepo(config, options) {
|
|
10179
|
+
const {
|
|
10180
|
+
defaultBranch,
|
|
10181
|
+
description,
|
|
10182
|
+
homepage,
|
|
10183
|
+
orgSlug,
|
|
10184
|
+
repoName,
|
|
10185
|
+
visibility
|
|
10186
|
+
} = {
|
|
10187
|
+
__proto__: null,
|
|
10188
|
+
...config
|
|
10189
|
+
};
|
|
10190
|
+
const {
|
|
10191
|
+
sdkOptions
|
|
10192
|
+
} = {
|
|
10193
|
+
__proto__: null,
|
|
10194
|
+
...options
|
|
10195
|
+
};
|
|
10196
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
10071
10197
|
if (!sockSdkCResult.ok) {
|
|
10072
10198
|
return sockSdkCResult;
|
|
10073
10199
|
}
|
|
10074
10200
|
const sockSdk = sockSdkCResult.data;
|
|
10075
10201
|
return await utils.handleApiCall(sockSdk.updateOrgRepo(orgSlug, repoName, {
|
|
10076
|
-
|
|
10077
|
-
name: repoName,
|
|
10202
|
+
default_branch: defaultBranch,
|
|
10078
10203
|
description,
|
|
10079
10204
|
homepage,
|
|
10080
|
-
|
|
10205
|
+
name: repoName,
|
|
10206
|
+
orgSlug,
|
|
10081
10207
|
visibility
|
|
10082
|
-
}),
|
|
10208
|
+
}), {
|
|
10209
|
+
desc: 'to update a repository'
|
|
10210
|
+
});
|
|
10083
10211
|
}
|
|
10084
10212
|
|
|
10085
10213
|
async function outputUpdateRepo(result, repoName, outputKind) {
|
|
@@ -10098,7 +10226,7 @@ async function outputUpdateRepo(result, repoName, outputKind) {
|
|
|
10098
10226
|
}
|
|
10099
10227
|
|
|
10100
10228
|
async function handleUpdateRepo({
|
|
10101
|
-
|
|
10229
|
+
defaultBranch,
|
|
10102
10230
|
description,
|
|
10103
10231
|
homepage,
|
|
10104
10232
|
orgSlug,
|
|
@@ -10106,7 +10234,7 @@ async function handleUpdateRepo({
|
|
|
10106
10234
|
visibility
|
|
10107
10235
|
}, outputKind) {
|
|
10108
10236
|
const data = await fetchUpdateRepo({
|
|
10109
|
-
|
|
10237
|
+
defaultBranch,
|
|
10110
10238
|
description,
|
|
10111
10239
|
homepage,
|
|
10112
10240
|
orgSlug,
|
|
@@ -10238,18 +10366,26 @@ async function run$e(argv, importMeta, {
|
|
|
10238
10366
|
repoName: String(repoName),
|
|
10239
10367
|
description: String(cli.flags['repoDescription'] || ''),
|
|
10240
10368
|
homepage: String(cli.flags['homepage'] || ''),
|
|
10241
|
-
|
|
10369
|
+
defaultBranch: String(cli.flags['defaultBranch'] || ''),
|
|
10242
10370
|
visibility: String(cli.flags['visibility'] || 'private')
|
|
10243
10371
|
}, outputKind);
|
|
10244
10372
|
}
|
|
10245
10373
|
|
|
10246
|
-
async function fetchViewRepo(orgSlug, repoName) {
|
|
10247
|
-
const
|
|
10374
|
+
async function fetchViewRepo(orgSlug, repoName, options) {
|
|
10375
|
+
const {
|
|
10376
|
+
sdkOptions
|
|
10377
|
+
} = {
|
|
10378
|
+
__proto__: null,
|
|
10379
|
+
...options
|
|
10380
|
+
};
|
|
10381
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
10248
10382
|
if (!sockSdkCResult.ok) {
|
|
10249
10383
|
return sockSdkCResult;
|
|
10250
10384
|
}
|
|
10251
10385
|
const sockSdk = sockSdkCResult.data;
|
|
10252
|
-
return await utils.handleApiCall(sockSdk.getOrgRepo(orgSlug, repoName),
|
|
10386
|
+
return await utils.handleApiCall(sockSdk.getOrgRepo(orgSlug, repoName), {
|
|
10387
|
+
desc: 'repository data'
|
|
10388
|
+
});
|
|
10253
10389
|
}
|
|
10254
10390
|
|
|
10255
10391
|
// @ts-ignore
|
|
@@ -10691,7 +10827,7 @@ async function run$c(argv, importMeta, {
|
|
|
10691
10827
|
if (detected.count > 0 && !autoManifest) {
|
|
10692
10828
|
logger.logger.info(`Detected ${detected.count} manifest targets we could try to generate. Please set the --autoManifest flag if you want to include languages covered by \`socket manifest auto\` in the Scan.`);
|
|
10693
10829
|
}
|
|
10694
|
-
if (updatedInput && orgSlug && targets
|
|
10830
|
+
if (updatedInput && orgSlug && targets.length) {
|
|
10695
10831
|
logger.logger.info('Note: You can invoke this command next time to skip the interactive questions:');
|
|
10696
10832
|
logger.logger.info('```');
|
|
10697
10833
|
logger.logger.info(` socket scan create [other flags...] ${orgSlug} ${targets.join(' ')}`);
|
|
@@ -10759,20 +10895,28 @@ async function run$c(argv, importMeta, {
|
|
|
10759
10895
|
pendingHead: Boolean(pendingHead),
|
|
10760
10896
|
pullRequest: Number(pullRequest),
|
|
10761
10897
|
readOnly: Boolean(readOnly),
|
|
10762
|
-
repoName
|
|
10898
|
+
repoName,
|
|
10763
10899
|
report,
|
|
10764
10900
|
targets,
|
|
10765
10901
|
tmp: Boolean(tmp)
|
|
10766
10902
|
});
|
|
10767
10903
|
}
|
|
10768
10904
|
|
|
10769
|
-
async function fetchDeleteOrgFullScan(orgSlug, scanId) {
|
|
10770
|
-
const
|
|
10905
|
+
async function fetchDeleteOrgFullScan(orgSlug, scanId, options) {
|
|
10906
|
+
const {
|
|
10907
|
+
sdkOptions
|
|
10908
|
+
} = {
|
|
10909
|
+
__proto__: null,
|
|
10910
|
+
...options
|
|
10911
|
+
};
|
|
10912
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
10771
10913
|
if (!sockSdkCResult.ok) {
|
|
10772
10914
|
return sockSdkCResult;
|
|
10773
10915
|
}
|
|
10774
10916
|
const sockSdk = sockSdkCResult.data;
|
|
10775
|
-
return await utils.handleApiCall(sockSdk.deleteOrgFullScan(orgSlug, scanId),
|
|
10917
|
+
return await utils.handleApiCall(sockSdk.deleteOrgFullScan(orgSlug, scanId), {
|
|
10918
|
+
desc: 'to delete a scan'
|
|
10919
|
+
});
|
|
10776
10920
|
}
|
|
10777
10921
|
|
|
10778
10922
|
async function outputDeleteScan(result, outputKind) {
|
|
@@ -11206,10 +11350,6 @@ async function run$a(argv, importMeta, {
|
|
|
11206
11350
|
});
|
|
11207
11351
|
}
|
|
11208
11352
|
|
|
11209
|
-
// Supported manifest file name patterns
|
|
11210
|
-
// Keep in mind that we have to request these files through the GitHub API; that cost is much heavier than local disk searches
|
|
11211
|
-
// TODO: get this list from API instead? Is that too much? Has to fetch through gh api...
|
|
11212
|
-
const SUPPORTED_FILE_PATTERNS = [/.*[-.]spdx\.json/, /bom\.json/, /.*[-.]cyclonedx\.json/, /.*[-.]cyclonedx\.xml/, /package\.json/, /package-lock\.json/, /npm-shrinkwrap\.json/, /yarn\.lock/, /pnpm-lock\.yaml/, /pnpm-lock\.yml/, /pnpm-workspace\.yaml/, /pnpm-workspace\.yml/, /pipfile/, /pyproject\.toml/, /poetry\.lock/, /requirements[\\/].*\.txt/, /requirements-.*\.txt/, /requirements_.*\.txt/, /requirements\.frozen/, /setup\.py/, /pipfile\.lock/, /go\.mod/, /go\.sum/, /pom\.xml/, /.*\..*proj/, /.*\.props/, /.*\.targets/, /.*\.nuspec/, /nuget\.config/, /packages\.config/, /packages\.lock\.json/];
|
|
11213
11353
|
async function createScanFromGithub({
|
|
11214
11354
|
all,
|
|
11215
11355
|
githubApiUrl,
|
|
@@ -11223,9 +11363,8 @@ async function createScanFromGithub({
|
|
|
11223
11363
|
let targetRepos = repos.trim().split(',').map(r => r.trim()).filter(Boolean);
|
|
11224
11364
|
if (all || targetRepos.length === 0) {
|
|
11225
11365
|
// Fetch from Socket API
|
|
11226
|
-
const result = await fetchListAllRepos({
|
|
11366
|
+
const result = await fetchListAllRepos(orgSlug, {
|
|
11227
11367
|
direction: 'asc',
|
|
11228
|
-
orgSlug,
|
|
11229
11368
|
sort: 'name'
|
|
11230
11369
|
});
|
|
11231
11370
|
if (!result.ok) {
|
|
@@ -11264,7 +11403,7 @@ async function createScanFromGithub({
|
|
|
11264
11403
|
let scansCreated = 0;
|
|
11265
11404
|
for (const repoSlug of targetRepos) {
|
|
11266
11405
|
// eslint-disable-next-line no-await-in-loop
|
|
11267
|
-
const
|
|
11406
|
+
const scanCResult = await scanRepo(repoSlug, {
|
|
11268
11407
|
githubApiUrl,
|
|
11269
11408
|
githubToken,
|
|
11270
11409
|
orgSlug,
|
|
@@ -11272,8 +11411,13 @@ async function createScanFromGithub({
|
|
|
11272
11411
|
outputKind,
|
|
11273
11412
|
repos
|
|
11274
11413
|
});
|
|
11275
|
-
if (
|
|
11276
|
-
|
|
11414
|
+
if (scanCResult.ok) {
|
|
11415
|
+
const {
|
|
11416
|
+
scanCreated
|
|
11417
|
+
} = scanCResult.data;
|
|
11418
|
+
if (scanCreated) {
|
|
11419
|
+
scansCreated += 1;
|
|
11420
|
+
}
|
|
11277
11421
|
}
|
|
11278
11422
|
}
|
|
11279
11423
|
logger.logger.success(targetRepos.length, 'GitHub repos detected');
|
|
@@ -11459,7 +11603,9 @@ async function testAndDownloadManifestFile({
|
|
|
11459
11603
|
tmpDir
|
|
11460
11604
|
}) {
|
|
11461
11605
|
debug.debugFn('notice', 'testing: file', file);
|
|
11462
|
-
|
|
11606
|
+
const supportedFilesCResult = await fetchSupportedScanFileNames();
|
|
11607
|
+
const supportedFiles = supportedFilesCResult.ok ? supportedFilesCResult.data : undefined;
|
|
11608
|
+
if (!supportedFiles || !utils.isReportSupportedFile(file, supportedFiles)) {
|
|
11463
11609
|
debug.debugFn('notice', ' - skip: not a known pattern');
|
|
11464
11610
|
// Not an error.
|
|
11465
11611
|
return {
|
|
@@ -11840,7 +11986,7 @@ async function handleCreateGithubScan({
|
|
|
11840
11986
|
outputKind,
|
|
11841
11987
|
repos
|
|
11842
11988
|
}) {
|
|
11843
|
-
const
|
|
11989
|
+
const ghScanCResult = await createScanFromGithub({
|
|
11844
11990
|
all: Boolean(all),
|
|
11845
11991
|
githubApiUrl,
|
|
11846
11992
|
githubToken,
|
|
@@ -11850,7 +11996,7 @@ async function handleCreateGithubScan({
|
|
|
11850
11996
|
outputKind,
|
|
11851
11997
|
repos: String(repos || '')
|
|
11852
11998
|
});
|
|
11853
|
-
await outputScanGithub(
|
|
11999
|
+
await outputScanGithub(ghScanCResult, outputKind);
|
|
11854
12000
|
}
|
|
11855
12001
|
|
|
11856
12002
|
const {
|
|
@@ -12057,21 +12203,31 @@ async function run$9(argv, importMeta, {
|
|
|
12057
12203
|
});
|
|
12058
12204
|
}
|
|
12059
12205
|
|
|
12060
|
-
async function
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12064
|
-
|
|
12065
|
-
|
|
12066
|
-
|
|
12067
|
-
|
|
12068
|
-
sort
|
|
12069
|
-
}) {
|
|
12070
|
-
const sockSdkCResult = await utils.setupSdk();
|
|
12206
|
+
async function fetchOrgFullScanList(config, options) {
|
|
12207
|
+
const {
|
|
12208
|
+
sdkOptions
|
|
12209
|
+
} = {
|
|
12210
|
+
__proto__: null,
|
|
12211
|
+
...options
|
|
12212
|
+
};
|
|
12213
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
12071
12214
|
if (!sockSdkCResult.ok) {
|
|
12072
12215
|
return sockSdkCResult;
|
|
12073
12216
|
}
|
|
12074
12217
|
const sockSdk = sockSdkCResult.data;
|
|
12218
|
+
const {
|
|
12219
|
+
branch,
|
|
12220
|
+
direction,
|
|
12221
|
+
from_time,
|
|
12222
|
+
orgSlug,
|
|
12223
|
+
page,
|
|
12224
|
+
perPage,
|
|
12225
|
+
repo,
|
|
12226
|
+
sort
|
|
12227
|
+
} = {
|
|
12228
|
+
__proto__: null,
|
|
12229
|
+
...config
|
|
12230
|
+
};
|
|
12075
12231
|
return await utils.handleApiCall(sockSdk.getOrgFullScanList(orgSlug, {
|
|
12076
12232
|
...(branch ? {
|
|
12077
12233
|
branch
|
|
@@ -12081,10 +12237,12 @@ async function fetchListScans({
|
|
|
12081
12237
|
} : {}),
|
|
12082
12238
|
sort,
|
|
12083
12239
|
direction,
|
|
12084
|
-
per_page: String(
|
|
12240
|
+
per_page: String(perPage),
|
|
12085
12241
|
page: String(page),
|
|
12086
12242
|
from: from_time
|
|
12087
|
-
}),
|
|
12243
|
+
}), {
|
|
12244
|
+
desc: 'list of scans'
|
|
12245
|
+
});
|
|
12088
12246
|
}
|
|
12089
12247
|
|
|
12090
12248
|
// @ts-ignore
|
|
@@ -12141,17 +12299,17 @@ async function handleListScans({
|
|
|
12141
12299
|
orgSlug,
|
|
12142
12300
|
outputKind,
|
|
12143
12301
|
page,
|
|
12144
|
-
|
|
12302
|
+
perPage,
|
|
12145
12303
|
repo,
|
|
12146
12304
|
sort
|
|
12147
12305
|
}) {
|
|
12148
|
-
const data = await
|
|
12306
|
+
const data = await fetchOrgFullScanList({
|
|
12149
12307
|
branch,
|
|
12150
12308
|
direction,
|
|
12151
12309
|
from_time,
|
|
12152
12310
|
orgSlug,
|
|
12153
12311
|
page,
|
|
12154
|
-
|
|
12312
|
+
perPage,
|
|
12155
12313
|
repo,
|
|
12156
12314
|
sort
|
|
12157
12315
|
});
|
|
@@ -12311,19 +12469,27 @@ async function run$8(argv, importMeta, {
|
|
|
12311
12469
|
orgSlug,
|
|
12312
12470
|
outputKind,
|
|
12313
12471
|
page: Number(cli.flags['page'] || 1),
|
|
12314
|
-
|
|
12472
|
+
perPage: Number(cli.flags['perPage'] || 30),
|
|
12315
12473
|
repo: repo ? String(repo) : '',
|
|
12316
12474
|
sort: String(cli.flags['sort'] || '')
|
|
12317
12475
|
});
|
|
12318
12476
|
}
|
|
12319
12477
|
|
|
12320
|
-
async function fetchScanMetadata(orgSlug, scanId) {
|
|
12321
|
-
const
|
|
12478
|
+
async function fetchScanMetadata(orgSlug, scanId, options) {
|
|
12479
|
+
const {
|
|
12480
|
+
sdkOptions
|
|
12481
|
+
} = {
|
|
12482
|
+
__proto__: null,
|
|
12483
|
+
...options
|
|
12484
|
+
};
|
|
12485
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
12322
12486
|
if (!sockSdkCResult.ok) {
|
|
12323
12487
|
return sockSdkCResult;
|
|
12324
12488
|
}
|
|
12325
12489
|
const sockSdk = sockSdkCResult.data;
|
|
12326
|
-
return await utils.handleApiCall(sockSdk.getOrgFullScanMetadata(orgSlug, scanId),
|
|
12490
|
+
return await utils.handleApiCall(sockSdk.getOrgFullScanMetadata(orgSlug, scanId), {
|
|
12491
|
+
desc: 'meta data for a full scan'
|
|
12492
|
+
});
|
|
12327
12493
|
}
|
|
12328
12494
|
|
|
12329
12495
|
async function outputScanMetadata(result, scanId, outputKind) {
|
|
@@ -13190,8 +13356,15 @@ async function handleScanView(orgSlug, scanId, filePath, outputKind) {
|
|
|
13190
13356
|
await outputScanView(data, orgSlug, scanId, filePath, outputKind);
|
|
13191
13357
|
}
|
|
13192
13358
|
|
|
13193
|
-
async function streamScan(orgSlug, scanId,
|
|
13194
|
-
const
|
|
13359
|
+
async function streamScan(orgSlug, scanId, options) {
|
|
13360
|
+
const {
|
|
13361
|
+
file,
|
|
13362
|
+
sdkOptions
|
|
13363
|
+
} = {
|
|
13364
|
+
__proto__: null,
|
|
13365
|
+
...options
|
|
13366
|
+
};
|
|
13367
|
+
const sockSdkCResult = await utils.setupSdk(sdkOptions);
|
|
13195
13368
|
if (!sockSdkCResult.ok) {
|
|
13196
13369
|
return sockSdkCResult;
|
|
13197
13370
|
}
|
|
@@ -13199,7 +13372,9 @@ async function streamScan(orgSlug, scanId, file) {
|
|
|
13199
13372
|
logger.logger.info('Requesting data from API...');
|
|
13200
13373
|
|
|
13201
13374
|
// Note: this will write to stdout or target file. It's not a noop
|
|
13202
|
-
return await utils.handleApiCall(sockSdk.getOrgFullScan(orgSlug, scanId, file === '-' ? undefined : file),
|
|
13375
|
+
return await utils.handleApiCall(sockSdk.getOrgFullScan(orgSlug, scanId, file === '-' ? undefined : file), {
|
|
13376
|
+
desc: 'a scan'
|
|
13377
|
+
});
|
|
13203
13378
|
}
|
|
13204
13379
|
|
|
13205
13380
|
const {
|
|
@@ -13309,7 +13484,9 @@ async function run$3(argv, importMeta, {
|
|
|
13309
13484
|
return;
|
|
13310
13485
|
}
|
|
13311
13486
|
if (json && stream) {
|
|
13312
|
-
await streamScan(orgSlug, scanId,
|
|
13487
|
+
await streamScan(orgSlug, scanId, {
|
|
13488
|
+
file
|
|
13489
|
+
});
|
|
13313
13490
|
} else {
|
|
13314
13491
|
await handleScanView(orgSlug, scanId, file, outputKind);
|
|
13315
13492
|
}
|
|
@@ -14345,5 +14522,5 @@ void (async () => {
|
|
|
14345
14522
|
await utils.captureException(e);
|
|
14346
14523
|
}
|
|
14347
14524
|
})();
|
|
14348
|
-
//# debugId=
|
|
14525
|
+
//# debugId=5e02c3b4-98c2-48aa-856d-526ed5a48fa7
|
|
14349
14526
|
//# sourceMappingURL=cli.js.map
|