mobbdev 1.0.87 → 1.0.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +163 -132
- package/package.json +14 -12
package/dist/index.mjs
CHANGED
|
@@ -11,14 +11,15 @@ import Debug21 from "debug";
|
|
|
11
11
|
import { hideBin } from "yargs/helpers";
|
|
12
12
|
|
|
13
13
|
// src/args/commands/convert_to_sarif.ts
|
|
14
|
-
import fs4 from "
|
|
14
|
+
import fs4 from "fs";
|
|
15
15
|
|
|
16
16
|
// src/commands/convert_to_sarif.ts
|
|
17
|
-
import fs3 from "
|
|
18
|
-
import path3 from "
|
|
17
|
+
import fs3 from "fs";
|
|
18
|
+
import path3 from "path";
|
|
19
19
|
|
|
20
20
|
// src/commands/fpr_stream_parser.ts
|
|
21
|
-
import fs from "
|
|
21
|
+
import fs from "fs";
|
|
22
|
+
import readline from "readline";
|
|
22
23
|
import sax from "sax";
|
|
23
24
|
var BaseStreamParser = class {
|
|
24
25
|
constructor(parser) {
|
|
@@ -134,14 +135,17 @@ var UnifiedNodePoolParser = class extends BaseStreamParser {
|
|
|
134
135
|
}
|
|
135
136
|
};
|
|
136
137
|
var VulnerabilityParser = class extends BaseStreamParser {
|
|
137
|
-
constructor() {
|
|
138
|
-
super(
|
|
139
|
-
__publicField(this, "vulnerabilities", []);
|
|
138
|
+
constructor(parser, tmpStorageFilePath) {
|
|
139
|
+
super(parser);
|
|
140
140
|
__publicField(this, "isInVulnerability", false);
|
|
141
141
|
__publicField(this, "codePoints", []);
|
|
142
142
|
__publicField(this, "metadata", {});
|
|
143
143
|
__publicField(this, "metaInfo", {});
|
|
144
144
|
__publicField(this, "groupName", "");
|
|
145
|
+
__publicField(this, "tmpStorageFileWriter");
|
|
146
|
+
__publicField(this, "tmpStorageFilePath");
|
|
147
|
+
this.tmpStorageFilePath = tmpStorageFilePath;
|
|
148
|
+
this.tmpStorageFileWriter = fs.createWriteStream(tmpStorageFilePath);
|
|
145
149
|
}
|
|
146
150
|
onOpenTag(tag) {
|
|
147
151
|
super.onOpenTag(tag);
|
|
@@ -195,25 +199,43 @@ var VulnerabilityParser = class extends BaseStreamParser {
|
|
|
195
199
|
onCloseTag() {
|
|
196
200
|
if (this.getPathString() === "FVDL > Vulnerabilities > Vulnerability") {
|
|
197
201
|
this.isInVulnerability = false;
|
|
198
|
-
this.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
202
|
+
this.tmpStorageFileWriter.write(
|
|
203
|
+
JSON.stringify({
|
|
204
|
+
nodes: this.codePoints,
|
|
205
|
+
instanceID: this.metadata["InstanceID"] ?? "",
|
|
206
|
+
instanceSeverity: this.metadata["InstanceSeverity"] ?? "",
|
|
207
|
+
confidence: this.metadata["Confidence"] ?? "",
|
|
208
|
+
classID: this.metadata["ClassID"] ?? "",
|
|
209
|
+
type: this.metadata["Type"] ?? "",
|
|
210
|
+
subtype: this.metadata["Subtype"] ?? "",
|
|
211
|
+
metaInfo: this.metaInfo
|
|
212
|
+
}) + "\n"
|
|
213
|
+
);
|
|
208
214
|
}
|
|
209
215
|
super.onCloseTag();
|
|
210
216
|
}
|
|
211
|
-
getVulnerabilities() {
|
|
212
|
-
|
|
217
|
+
async *getVulnerabilities() {
|
|
218
|
+
await new Promise((r) => this.tmpStorageFileWriter.end(r));
|
|
219
|
+
const rl = readline.createInterface({
|
|
220
|
+
input: fs.createReadStream(this.tmpStorageFilePath),
|
|
221
|
+
crlfDelay: Infinity
|
|
222
|
+
});
|
|
223
|
+
for await (const line of rl) {
|
|
224
|
+
if (line) {
|
|
225
|
+
yield JSON.parse(line);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
213
228
|
}
|
|
214
229
|
};
|
|
215
230
|
function initSaxParser(filepath) {
|
|
216
|
-
const parser = sax.createStream(true
|
|
231
|
+
const parser = sax.createStream(true, {
|
|
232
|
+
// All these flags help to improve parsing speed a lot.
|
|
233
|
+
trim: false,
|
|
234
|
+
normalize: false,
|
|
235
|
+
lowercase: false,
|
|
236
|
+
xmlns: false,
|
|
237
|
+
position: false
|
|
238
|
+
});
|
|
217
239
|
const awaiter = new Promise((resolve, reject) => {
|
|
218
240
|
parser.on("end", () => resolve(true));
|
|
219
241
|
parser.on("error", (e) => reject(e));
|
|
@@ -221,7 +243,10 @@ function initSaxParser(filepath) {
|
|
|
221
243
|
return {
|
|
222
244
|
parser,
|
|
223
245
|
parse: async () => {
|
|
224
|
-
fs.createReadStream(filepath
|
|
246
|
+
fs.createReadStream(filepath, {
|
|
247
|
+
// Set chunk size to 100 MB. The default is 16 KB, which makes the process too slow.
|
|
248
|
+
highWaterMark: 100 * 1024 * 1024
|
|
249
|
+
}).pipe(parser);
|
|
225
250
|
await awaiter;
|
|
226
251
|
}
|
|
227
252
|
};
|
|
@@ -409,6 +434,7 @@ var IssueType_Enum = /* @__PURE__ */ ((IssueType_Enum2) => {
|
|
|
409
434
|
IssueType_Enum2["SystemExitShouldReraise"] = "SYSTEM_EXIT_SHOULD_RERAISE";
|
|
410
435
|
IssueType_Enum2["SystemInformationLeak"] = "SYSTEM_INFORMATION_LEAK";
|
|
411
436
|
IssueType_Enum2["SystemInformationLeakExternal"] = "SYSTEM_INFORMATION_LEAK_EXTERNAL";
|
|
437
|
+
IssueType_Enum2["TarSlip"] = "TAR_SLIP";
|
|
412
438
|
IssueType_Enum2["TrustBoundaryViolation"] = "TRUST_BOUNDARY_VIOLATION";
|
|
413
439
|
IssueType_Enum2["TypeConfusion"] = "TYPE_CONFUSION";
|
|
414
440
|
IssueType_Enum2["UncheckedLoopCondition"] = "UNCHECKED_LOOP_CONDITION";
|
|
@@ -947,71 +973,71 @@ var GetMcpFixesDocument = `
|
|
|
947
973
|
var defaultWrapper = (action, _operationName, _operationType, _variables) => action();
|
|
948
974
|
function getSdk(client, withWrapper = defaultWrapper) {
|
|
949
975
|
return {
|
|
950
|
-
Me(variables, requestHeaders) {
|
|
951
|
-
return withWrapper((wrappedRequestHeaders) => client.request(MeDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "Me", "query", variables);
|
|
976
|
+
Me(variables, requestHeaders, signal) {
|
|
977
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: MeDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "Me", "query", variables);
|
|
952
978
|
},
|
|
953
|
-
getOrgAndProjectId(variables, requestHeaders) {
|
|
954
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetOrgAndProjectIdDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "getOrgAndProjectId", "query", variables);
|
|
979
|
+
getOrgAndProjectId(variables, requestHeaders, signal) {
|
|
980
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetOrgAndProjectIdDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getOrgAndProjectId", "query", variables);
|
|
955
981
|
},
|
|
956
|
-
GetEncryptedApiToken(variables, requestHeaders) {
|
|
957
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetEncryptedApiTokenDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "GetEncryptedApiToken", "query", variables);
|
|
982
|
+
GetEncryptedApiToken(variables, requestHeaders, signal) {
|
|
983
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetEncryptedApiTokenDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "GetEncryptedApiToken", "query", variables);
|
|
958
984
|
},
|
|
959
|
-
FixReportState(variables, requestHeaders) {
|
|
960
|
-
return withWrapper((wrappedRequestHeaders) => client.request(FixReportStateDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "FixReportState", "query", variables);
|
|
985
|
+
FixReportState(variables, requestHeaders, signal) {
|
|
986
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: FixReportStateDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "FixReportState", "query", variables);
|
|
961
987
|
},
|
|
962
|
-
GetVulnerabilityReportPaths(variables, requestHeaders) {
|
|
963
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetVulnerabilityReportPathsDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "GetVulnerabilityReportPaths", "query", variables);
|
|
988
|
+
GetVulnerabilityReportPaths(variables, requestHeaders, signal) {
|
|
989
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetVulnerabilityReportPathsDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "GetVulnerabilityReportPaths", "query", variables);
|
|
964
990
|
},
|
|
965
|
-
getAnalysisSubscription(variables, requestHeaders) {
|
|
966
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetAnalysisSubscriptionDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "getAnalysisSubscription", "subscription", variables);
|
|
991
|
+
getAnalysisSubscription(variables, requestHeaders, signal) {
|
|
992
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetAnalysisSubscriptionDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getAnalysisSubscription", "subscription", variables);
|
|
967
993
|
},
|
|
968
|
-
getAnalysis(variables, requestHeaders) {
|
|
969
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetAnalysisDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "getAnalysis", "query", variables);
|
|
994
|
+
getAnalysis(variables, requestHeaders, signal) {
|
|
995
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetAnalysisDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getAnalysis", "query", variables);
|
|
970
996
|
},
|
|
971
|
-
getFixes(variables, requestHeaders) {
|
|
972
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetFixesDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "getFixes", "query", variables);
|
|
997
|
+
getFixes(variables, requestHeaders, signal) {
|
|
998
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetFixesDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getFixes", "query", variables);
|
|
973
999
|
},
|
|
974
|
-
getVulByNodesMetadata(variables, requestHeaders) {
|
|
975
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetVulByNodesMetadataDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "getVulByNodesMetadata", "query", variables);
|
|
1000
|
+
getVulByNodesMetadata(variables, requestHeaders, signal) {
|
|
1001
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetVulByNodesMetadataDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getVulByNodesMetadata", "query", variables);
|
|
976
1002
|
},
|
|
977
|
-
getFalsePositive(variables, requestHeaders) {
|
|
978
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetFalsePositiveDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "getFalsePositive", "query", variables);
|
|
1003
|
+
getFalsePositive(variables, requestHeaders, signal) {
|
|
1004
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetFalsePositiveDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "getFalsePositive", "query", variables);
|
|
979
1005
|
},
|
|
980
|
-
updateScmToken(variables, requestHeaders) {
|
|
981
|
-
return withWrapper((wrappedRequestHeaders) => client.request(UpdateScmTokenDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "updateScmToken", "mutation", variables);
|
|
1006
|
+
updateScmToken(variables, requestHeaders, signal) {
|
|
1007
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: UpdateScmTokenDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "updateScmToken", "mutation", variables);
|
|
982
1008
|
},
|
|
983
|
-
uploadS3BucketInfo(variables, requestHeaders) {
|
|
984
|
-
return withWrapper((wrappedRequestHeaders) => client.request(UploadS3BucketInfoDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "uploadS3BucketInfo", "mutation", variables);
|
|
1009
|
+
uploadS3BucketInfo(variables, requestHeaders, signal) {
|
|
1010
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: UploadS3BucketInfoDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "uploadS3BucketInfo", "mutation", variables);
|
|
985
1011
|
},
|
|
986
|
-
DigestVulnerabilityReport(variables, requestHeaders) {
|
|
987
|
-
return withWrapper((wrappedRequestHeaders) => client.request(DigestVulnerabilityReportDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "DigestVulnerabilityReport", "mutation", variables);
|
|
1012
|
+
DigestVulnerabilityReport(variables, requestHeaders, signal) {
|
|
1013
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: DigestVulnerabilityReportDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "DigestVulnerabilityReport", "mutation", variables);
|
|
988
1014
|
},
|
|
989
|
-
SubmitVulnerabilityReport(variables, requestHeaders) {
|
|
990
|
-
return withWrapper((wrappedRequestHeaders) => client.request(SubmitVulnerabilityReportDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "SubmitVulnerabilityReport", "mutation", variables);
|
|
1015
|
+
SubmitVulnerabilityReport(variables, requestHeaders, signal) {
|
|
1016
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: SubmitVulnerabilityReportDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "SubmitVulnerabilityReport", "mutation", variables);
|
|
991
1017
|
},
|
|
992
|
-
CreateCommunityUser(variables, requestHeaders) {
|
|
993
|
-
return withWrapper((wrappedRequestHeaders) => client.request(CreateCommunityUserDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "CreateCommunityUser", "mutation", variables);
|
|
1018
|
+
CreateCommunityUser(variables, requestHeaders, signal) {
|
|
1019
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: CreateCommunityUserDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "CreateCommunityUser", "mutation", variables);
|
|
994
1020
|
},
|
|
995
|
-
CreateCliLogin(variables, requestHeaders) {
|
|
996
|
-
return withWrapper((wrappedRequestHeaders) => client.request(CreateCliLoginDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "CreateCliLogin", "mutation", variables);
|
|
1021
|
+
CreateCliLogin(variables, requestHeaders, signal) {
|
|
1022
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: CreateCliLoginDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "CreateCliLogin", "mutation", variables);
|
|
997
1023
|
},
|
|
998
|
-
performCliLogin(variables, requestHeaders) {
|
|
999
|
-
return withWrapper((wrappedRequestHeaders) => client.request(PerformCliLoginDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "performCliLogin", "mutation", variables);
|
|
1024
|
+
performCliLogin(variables, requestHeaders, signal) {
|
|
1025
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: PerformCliLoginDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "performCliLogin", "mutation", variables);
|
|
1000
1026
|
},
|
|
1001
|
-
CreateProject(variables, requestHeaders) {
|
|
1002
|
-
return withWrapper((wrappedRequestHeaders) => client.request(CreateProjectDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "CreateProject", "mutation", variables);
|
|
1027
|
+
CreateProject(variables, requestHeaders, signal) {
|
|
1028
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: CreateProjectDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "CreateProject", "mutation", variables);
|
|
1003
1029
|
},
|
|
1004
|
-
validateRepoUrl(variables, requestHeaders) {
|
|
1005
|
-
return withWrapper((wrappedRequestHeaders) => client.request(ValidateRepoUrlDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "validateRepoUrl", "query", variables);
|
|
1030
|
+
validateRepoUrl(variables, requestHeaders, signal) {
|
|
1031
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: ValidateRepoUrlDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "validateRepoUrl", "query", variables);
|
|
1006
1032
|
},
|
|
1007
|
-
gitReference(variables, requestHeaders) {
|
|
1008
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GitReferenceDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "gitReference", "query", variables);
|
|
1033
|
+
gitReference(variables, requestHeaders, signal) {
|
|
1034
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GitReferenceDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "gitReference", "query", variables);
|
|
1009
1035
|
},
|
|
1010
|
-
autoPrAnalysis(variables, requestHeaders) {
|
|
1011
|
-
return withWrapper((wrappedRequestHeaders) => client.request(AutoPrAnalysisDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "autoPrAnalysis", "mutation", variables);
|
|
1036
|
+
autoPrAnalysis(variables, requestHeaders, signal) {
|
|
1037
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: AutoPrAnalysisDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "autoPrAnalysis", "mutation", variables);
|
|
1012
1038
|
},
|
|
1013
|
-
GetMCPFixes(variables, requestHeaders) {
|
|
1014
|
-
return withWrapper((wrappedRequestHeaders) => client.request(GetMcpFixesDocument, variables, { ...requestHeaders, ...wrappedRequestHeaders }), "GetMCPFixes", "query", variables);
|
|
1039
|
+
GetMCPFixes(variables, requestHeaders, signal) {
|
|
1040
|
+
return withWrapper((wrappedRequestHeaders) => client.request({ document: GetMcpFixesDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "GetMCPFixes", "query", variables);
|
|
1015
1041
|
}
|
|
1016
1042
|
};
|
|
1017
1043
|
}
|
|
@@ -1445,7 +1471,8 @@ var issueTypeMap = {
|
|
|
1445
1471
|
["WILDCARD_IMPORTS" /* WildcardImports */]: "Wildcard Imports should not be used",
|
|
1446
1472
|
["AVOID_IDENTITY_COMPARISON_CACHED_TYPES" /* AvoidIdentityComparisonCachedTypes */]: "Avoid Identity Comparison of Cached Types",
|
|
1447
1473
|
["AVOID_BUILTIN_SHADOWING" /* AvoidBuiltinShadowing */]: "Avoid Builtin Shadowing",
|
|
1448
|
-
["IMPROPER_STRING_FORMATTING" /* ImproperStringFormatting */]: "Improper String Formatting"
|
|
1474
|
+
["IMPROPER_STRING_FORMATTING" /* ImproperStringFormatting */]: "Improper String Formatting",
|
|
1475
|
+
["TAR_SLIP" /* TarSlip */]: "Tar Slip"
|
|
1449
1476
|
};
|
|
1450
1477
|
var issueTypeZ = z5.nativeEnum(IssueType_Enum);
|
|
1451
1478
|
var getIssueTypeFriendlyString = (issueType) => {
|
|
@@ -1908,7 +1935,7 @@ var ConvertToSarifInputFileFormat = /* @__PURE__ */ ((ConvertToSarifInputFileFor
|
|
|
1908
1935
|
var DEFUALT_ADO_ORIGIN = scmCloudUrl.Ado;
|
|
1909
1936
|
|
|
1910
1937
|
// src/features/analysis/scm/ado/utils.ts
|
|
1911
|
-
import querystring from "
|
|
1938
|
+
import querystring from "querystring";
|
|
1912
1939
|
import * as api from "azure-devops-node-api";
|
|
1913
1940
|
import Debug from "debug";
|
|
1914
1941
|
import { z as z17 } from "zod";
|
|
@@ -2178,7 +2205,8 @@ var fixDetailsData = {
|
|
|
2178
2205
|
["AVOID_IDENTITY_COMPARISON_CACHED_TYPES" /* AvoidIdentityComparisonCachedTypes */]: void 0,
|
|
2179
2206
|
["AVOID_BUILTIN_SHADOWING" /* AvoidBuiltinShadowing */]: void 0,
|
|
2180
2207
|
["IMPROPER_STRING_FORMATTING" /* ImproperStringFormatting */]: void 0,
|
|
2181
|
-
["WILDCARD_IMPORTS" /* WildcardImports */]: void 0
|
|
2208
|
+
["WILDCARD_IMPORTS" /* WildcardImports */]: void 0,
|
|
2209
|
+
["TAR_SLIP" /* TarSlip */]: void 0
|
|
2182
2210
|
};
|
|
2183
2211
|
|
|
2184
2212
|
// src/features/analysis/scm/shared/src/commitDescriptionMarkup.ts
|
|
@@ -4862,7 +4890,7 @@ async function getAdoRepoList({
|
|
|
4862
4890
|
}
|
|
4863
4891
|
|
|
4864
4892
|
// src/features/analysis/scm/ado/AdoSCMLib.ts
|
|
4865
|
-
import { setTimeout as setTimeout2 } from "
|
|
4893
|
+
import { setTimeout as setTimeout2 } from "timers/promises";
|
|
4866
4894
|
|
|
4867
4895
|
// src/features/analysis/scm/scmSubmit/index.ts
|
|
4868
4896
|
import { simpleGit } from "simple-git";
|
|
@@ -5143,7 +5171,7 @@ var AdoSCMLib = class extends SCMLib {
|
|
|
5143
5171
|
};
|
|
5144
5172
|
|
|
5145
5173
|
// src/features/analysis/scm/bitbucket/bitbucket.ts
|
|
5146
|
-
import querystring2 from "
|
|
5174
|
+
import querystring2 from "querystring";
|
|
5147
5175
|
import * as bitbucketPkgNode from "bitbucket";
|
|
5148
5176
|
import bitbucketPkg from "bitbucket";
|
|
5149
5177
|
import Debug2 from "debug";
|
|
@@ -5463,7 +5491,7 @@ async function getRepositoriesByWorkspace(bitbucketClient, { workspaceSlug }) {
|
|
|
5463
5491
|
}
|
|
5464
5492
|
|
|
5465
5493
|
// src/features/analysis/scm/bitbucket/BitbucketSCMLib.ts
|
|
5466
|
-
import { setTimeout as setTimeout3 } from "
|
|
5494
|
+
import { setTimeout as setTimeout3 } from "timers/promises";
|
|
5467
5495
|
import { z as z20 } from "zod";
|
|
5468
5496
|
function getUserAndPassword(token) {
|
|
5469
5497
|
const [username, password] = token.split(":");
|
|
@@ -6500,7 +6528,7 @@ var GithubSCMLib = class extends SCMLib {
|
|
|
6500
6528
|
};
|
|
6501
6529
|
|
|
6502
6530
|
// src/features/analysis/scm/gitlab/gitlab.ts
|
|
6503
|
-
import querystring3 from "
|
|
6531
|
+
import querystring3 from "querystring";
|
|
6504
6532
|
import {
|
|
6505
6533
|
createRequesterFn
|
|
6506
6534
|
} from "@gitbeaker/requester-utils";
|
|
@@ -7206,8 +7234,8 @@ __export(utils_exports, {
|
|
|
7206
7234
|
});
|
|
7207
7235
|
|
|
7208
7236
|
// src/utils/dirname.ts
|
|
7209
|
-
import path from "
|
|
7210
|
-
import { fileURLToPath } from "
|
|
7237
|
+
import path from "path";
|
|
7238
|
+
import { fileURLToPath } from "url";
|
|
7211
7239
|
function getDirName() {
|
|
7212
7240
|
return path.dirname(fileURLToPath(import.meta.url));
|
|
7213
7241
|
}
|
|
@@ -7216,9 +7244,9 @@ function getTopLevelDirName(fullPath) {
|
|
|
7216
7244
|
}
|
|
7217
7245
|
|
|
7218
7246
|
// src/utils/keypress.ts
|
|
7219
|
-
import
|
|
7247
|
+
import readline2 from "readline";
|
|
7220
7248
|
async function keypress() {
|
|
7221
|
-
const rl =
|
|
7249
|
+
const rl = readline2.createInterface({
|
|
7222
7250
|
input: process.stdin,
|
|
7223
7251
|
output: process.stdout
|
|
7224
7252
|
});
|
|
@@ -7275,8 +7303,8 @@ function Spinner({ ci = false } = {}) {
|
|
|
7275
7303
|
}
|
|
7276
7304
|
|
|
7277
7305
|
// src/utils/check_node_version.ts
|
|
7278
|
-
import fs2 from "
|
|
7279
|
-
import path2 from "
|
|
7306
|
+
import fs2 from "fs";
|
|
7307
|
+
import path2 from "path";
|
|
7280
7308
|
import semver from "semver";
|
|
7281
7309
|
function getPackageJson() {
|
|
7282
7310
|
let manifestPath = path2.join(getDirName(), "../package.json");
|
|
@@ -7300,8 +7328,8 @@ var CliError = class extends Error {
|
|
|
7300
7328
|
};
|
|
7301
7329
|
|
|
7302
7330
|
// src/commands/convert_to_sarif.ts
|
|
7303
|
-
import AdmZip from "adm-zip";
|
|
7304
7331
|
import multimatch from "multimatch";
|
|
7332
|
+
import StreamZip from "node-stream-zip";
|
|
7305
7333
|
import tmp from "tmp";
|
|
7306
7334
|
async function convertToSarif(options) {
|
|
7307
7335
|
switch (options.inputFileFormat) {
|
|
@@ -7315,8 +7343,9 @@ async function convertToSarif(options) {
|
|
|
7315
7343
|
}
|
|
7316
7344
|
}
|
|
7317
7345
|
async function convertFprToSarif(inputFilePath, outputFilePath, codePathPatterns) {
|
|
7318
|
-
const zipIn = new
|
|
7319
|
-
|
|
7346
|
+
const zipIn = new StreamZip.async({ file: inputFilePath });
|
|
7347
|
+
const zipInEntries = await zipIn.entries();
|
|
7348
|
+
if (!("audit.fvdl" in zipInEntries)) {
|
|
7320
7349
|
throw new CliError(
|
|
7321
7350
|
"\nError: the input file should be in a valid Fortify FPR format."
|
|
7322
7351
|
);
|
|
@@ -7325,12 +7354,12 @@ async function convertFprToSarif(inputFilePath, outputFilePath, codePathPatterns
|
|
|
7325
7354
|
unsafeCleanup: true
|
|
7326
7355
|
});
|
|
7327
7356
|
try {
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
|
|
7331
|
-
);
|
|
7357
|
+
const auditFvdlPath = path3.join(tmpObj.name, "audit.fvdl");
|
|
7358
|
+
await zipIn.extract("audit.fvdl", auditFvdlPath);
|
|
7359
|
+
const auditFvdlSaxParser = initSaxParser(auditFvdlPath);
|
|
7332
7360
|
const vulnerabilityParser = new VulnerabilityParser(
|
|
7333
|
-
auditFvdlSaxParser.parser
|
|
7361
|
+
auditFvdlSaxParser.parser,
|
|
7362
|
+
path3.join(tmpObj.name, "vulns.json")
|
|
7334
7363
|
);
|
|
7335
7364
|
const unifiedNodePoolParser = new UnifiedNodePoolParser(
|
|
7336
7365
|
auditFvdlSaxParser.parser
|
|
@@ -7340,17 +7369,16 @@ async function convertFprToSarif(inputFilePath, outputFilePath, codePathPatterns
|
|
|
7340
7369
|
);
|
|
7341
7370
|
let auditMetadataParser = null;
|
|
7342
7371
|
await auditFvdlSaxParser.parse();
|
|
7343
|
-
if (
|
|
7344
|
-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
);
|
|
7372
|
+
if ("audit.xml" in zipInEntries) {
|
|
7373
|
+
const auditXmlPath = path3.join(tmpObj.name, "audit.xml");
|
|
7374
|
+
await zipIn.extract("audit.xml", auditXmlPath);
|
|
7375
|
+
const auditXmlSaxParser = initSaxParser(auditXmlPath);
|
|
7348
7376
|
auditMetadataParser = new AuditMetadataParser(auditXmlSaxParser.parser);
|
|
7349
7377
|
await auditXmlSaxParser.parse();
|
|
7350
7378
|
}
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7379
|
+
await zipIn.close();
|
|
7380
|
+
const writer = fs3.createWriteStream(outputFilePath);
|
|
7381
|
+
writer.write(`{
|
|
7354
7382
|
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
|
|
7355
7383
|
"version": "2.1.0",
|
|
7356
7384
|
"runs": [
|
|
@@ -7361,23 +7389,26 @@ async function convertFprToSarif(inputFilePath, outputFilePath, codePathPatterns
|
|
|
7361
7389
|
}
|
|
7362
7390
|
},
|
|
7363
7391
|
"results": [
|
|
7364
|
-
`
|
|
7365
|
-
|
|
7366
|
-
const
|
|
7367
|
-
|
|
7392
|
+
`);
|
|
7393
|
+
let isFirstVuln = true;
|
|
7394
|
+
for await (const vulnerability of vulnerabilityParser.getVulnerabilities()) {
|
|
7395
|
+
const sarifResult = fortifyVulnerabilityToSarifResult(
|
|
7368
7396
|
vulnerability,
|
|
7369
7397
|
auditMetadataParser,
|
|
7370
7398
|
reportMetadataParser,
|
|
7371
7399
|
unifiedNodePoolParser
|
|
7372
|
-
)
|
|
7373
|
-
|
|
7374
|
-
|
|
7375
|
-
|
|
7376
|
-
|
|
7377
|
-
|
|
7400
|
+
);
|
|
7401
|
+
if (filterSarifResult(sarifResult, codePathPatterns)) {
|
|
7402
|
+
if (isFirstVuln) {
|
|
7403
|
+
isFirstVuln = false;
|
|
7404
|
+
} else {
|
|
7405
|
+
writer.write(",\n");
|
|
7406
|
+
}
|
|
7407
|
+
writer.write(JSON.stringify(sarifResult, null, 2));
|
|
7378
7408
|
}
|
|
7379
|
-
}
|
|
7380
|
-
|
|
7409
|
+
}
|
|
7410
|
+
writer.write("\n]}]}");
|
|
7411
|
+
await new Promise((r) => writer.end(r));
|
|
7381
7412
|
} finally {
|
|
7382
7413
|
tmpObj.removeCallback();
|
|
7383
7414
|
}
|
|
@@ -7451,8 +7482,8 @@ function fortifyNodesToSarifLocations(nodes, unifiedNodePoolParser) {
|
|
|
7451
7482
|
import chalk2 from "chalk";
|
|
7452
7483
|
|
|
7453
7484
|
// src/constants.ts
|
|
7454
|
-
import path4 from "
|
|
7455
|
-
import { fileURLToPath as fileURLToPath2 } from "
|
|
7485
|
+
import path4 from "path";
|
|
7486
|
+
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
7456
7487
|
import chalk from "chalk";
|
|
7457
7488
|
import Debug4 from "debug";
|
|
7458
7489
|
import * as dotenv from "dotenv";
|
|
@@ -7706,18 +7737,18 @@ import chalk10 from "chalk";
|
|
|
7706
7737
|
import yargs from "yargs/yargs";
|
|
7707
7738
|
|
|
7708
7739
|
// src/args/commands/analyze.ts
|
|
7709
|
-
import fs7 from "
|
|
7740
|
+
import fs7 from "fs";
|
|
7710
7741
|
|
|
7711
7742
|
// src/commands/index.ts
|
|
7712
|
-
import crypto from "
|
|
7713
|
-
import os from "
|
|
7743
|
+
import crypto from "crypto";
|
|
7744
|
+
import os from "os";
|
|
7714
7745
|
|
|
7715
7746
|
// src/features/analysis/index.ts
|
|
7716
|
-
import fs6 from "
|
|
7717
|
-
import fsPromises from "
|
|
7718
|
-
import path7 from "
|
|
7719
|
-
import { env as env2 } from "
|
|
7720
|
-
import { pipeline } from "
|
|
7747
|
+
import fs6 from "fs";
|
|
7748
|
+
import fsPromises from "fs/promises";
|
|
7749
|
+
import path7 from "path";
|
|
7750
|
+
import { env as env2 } from "process";
|
|
7751
|
+
import { pipeline } from "stream/promises";
|
|
7721
7752
|
import chalk5 from "chalk";
|
|
7722
7753
|
import Configstore from "configstore";
|
|
7723
7754
|
import Debug18 from "debug";
|
|
@@ -8905,9 +8936,9 @@ var GQLClient = class {
|
|
|
8905
8936
|
};
|
|
8906
8937
|
|
|
8907
8938
|
// src/features/analysis/pack.ts
|
|
8908
|
-
import fs5 from "
|
|
8909
|
-
import path5 from "
|
|
8910
|
-
import
|
|
8939
|
+
import fs5 from "fs";
|
|
8940
|
+
import path5 from "path";
|
|
8941
|
+
import AdmZip from "adm-zip";
|
|
8911
8942
|
import Debug13 from "debug";
|
|
8912
8943
|
import { globby } from "globby";
|
|
8913
8944
|
import { isBinary } from "istextorbinary";
|
|
@@ -8969,7 +9000,7 @@ async function pack(srcDirPath, vulnFiles, isIncludeAllFiles = false) {
|
|
|
8969
9000
|
dot: true
|
|
8970
9001
|
});
|
|
8971
9002
|
debug13("files found %d", filepaths.length);
|
|
8972
|
-
const zip = new
|
|
9003
|
+
const zip = new AdmZip();
|
|
8973
9004
|
debug13("compressing files");
|
|
8974
9005
|
for (const filepath of filepaths) {
|
|
8975
9006
|
const absFilepath = path5.join(srcDirPath, filepath.toString());
|
|
@@ -8999,8 +9030,8 @@ async function pack(srcDirPath, vulnFiles, isIncludeAllFiles = false) {
|
|
|
8999
9030
|
}
|
|
9000
9031
|
async function repackFpr(fprPath) {
|
|
9001
9032
|
debug13("repack fpr file %s", fprPath);
|
|
9002
|
-
const zipIn = new
|
|
9003
|
-
const zipOut = new
|
|
9033
|
+
const zipIn = new AdmZip(fprPath);
|
|
9034
|
+
const zipOut = new AdmZip();
|
|
9004
9035
|
const mappingXML = zipIn.readAsText("src-archive/index.xml", "utf-8");
|
|
9005
9036
|
const filesMapping = FPR_SOURCE_CODE_FILE_MAPPING_SCHEMA.parse(
|
|
9006
9037
|
await parseStringPromise(mappingXML)
|
|
@@ -9082,14 +9113,14 @@ async function snykArticlePrompt() {
|
|
|
9082
9113
|
}
|
|
9083
9114
|
|
|
9084
9115
|
// src/features/analysis/scanners/checkmarx.ts
|
|
9085
|
-
import { createRequire } from "
|
|
9116
|
+
import { createRequire } from "module";
|
|
9086
9117
|
|
|
9087
9118
|
// src/post_install/constants.mjs
|
|
9088
9119
|
var cxOperatingSystemSupportMessage = `Your operating system does not support checkmarx.
|
|
9089
9120
|
You can see the list of supported operating systems here: https://github.com/Checkmarx/ast-cli#releases`;
|
|
9090
9121
|
|
|
9091
9122
|
// src/utils/child_process.ts
|
|
9092
|
-
import cp from "
|
|
9123
|
+
import cp from "child_process";
|
|
9093
9124
|
import Debug14 from "debug";
|
|
9094
9125
|
import * as process2 from "process";
|
|
9095
9126
|
function createFork({ args, processPath, name }, options) {
|
|
@@ -9258,7 +9289,7 @@ async function validateCheckamxCredentials() {
|
|
|
9258
9289
|
}
|
|
9259
9290
|
|
|
9260
9291
|
// src/features/analysis/scanners/snyk.ts
|
|
9261
|
-
import { createRequire as createRequire2 } from "
|
|
9292
|
+
import { createRequire as createRequire2 } from "module";
|
|
9262
9293
|
import chalk4 from "chalk";
|
|
9263
9294
|
import Debug16 from "debug";
|
|
9264
9295
|
import { createSpinner as createSpinner3 } from "nanospinner";
|
|
@@ -10662,8 +10693,8 @@ var GitService = class {
|
|
|
10662
10693
|
};
|
|
10663
10694
|
|
|
10664
10695
|
// src/mcp/services/PathValidation.ts
|
|
10665
|
-
import fs8 from "
|
|
10666
|
-
import path10 from "
|
|
10696
|
+
import fs8 from "fs";
|
|
10697
|
+
import path10 from "path";
|
|
10667
10698
|
var PathValidation = class {
|
|
10668
10699
|
/**
|
|
10669
10700
|
* Validates a path for MCP usage - combines security and existence checks
|
|
@@ -10707,9 +10738,9 @@ var PathValidation = class {
|
|
|
10707
10738
|
};
|
|
10708
10739
|
|
|
10709
10740
|
// src/mcp/services/FilePacking.ts
|
|
10710
|
-
import fs9 from "
|
|
10711
|
-
import path11 from "
|
|
10712
|
-
import
|
|
10741
|
+
import fs9 from "fs";
|
|
10742
|
+
import path11 from "path";
|
|
10743
|
+
import AdmZip2 from "adm-zip";
|
|
10713
10744
|
import { isBinary as isBinary2 } from "istextorbinary";
|
|
10714
10745
|
var MAX_FILE_SIZE2 = 1024 * 1024 * 5;
|
|
10715
10746
|
var EXCLUDED_FILE_PATTERNS = [
|
|
@@ -10895,7 +10926,7 @@ var FilePacking = class {
|
|
|
10895
10926
|
}
|
|
10896
10927
|
async packFiles(sourceDirectoryPath, filesToPack) {
|
|
10897
10928
|
logInfo(`FilePacking: packing files from ${sourceDirectoryPath}`);
|
|
10898
|
-
const zip = new
|
|
10929
|
+
const zip = new AdmZip2();
|
|
10899
10930
|
let packedFilesCount = 0;
|
|
10900
10931
|
logInfo("FilePacking: compressing files");
|
|
10901
10932
|
for (const filepath of filesToPack) {
|
|
@@ -11739,7 +11770,7 @@ var mcpHandler = async (_args) => {
|
|
|
11739
11770
|
};
|
|
11740
11771
|
|
|
11741
11772
|
// src/args/commands/review.ts
|
|
11742
|
-
import fs10 from "
|
|
11773
|
+
import fs10 from "fs";
|
|
11743
11774
|
import chalk9 from "chalk";
|
|
11744
11775
|
function reviewBuilder(yargs2) {
|
|
11745
11776
|
return yargs2.option("f", {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobbdev",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.90",
|
|
4
4
|
"description": "Automated secure code remediation tool",
|
|
5
5
|
"repository": "git+https://github.com/mobb-dev/bugsy.git",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"chalk-animation": "2.0.3",
|
|
56
56
|
"configstore": "6.0.0",
|
|
57
57
|
"cross-fetch": "4.1.0",
|
|
58
|
-
"debug": "4.4.
|
|
58
|
+
"debug": "4.4.1",
|
|
59
59
|
"dotenv": "16.5.0",
|
|
60
60
|
"extract-zip": "2.0.1",
|
|
61
61
|
"globby": "14.1.0",
|
|
@@ -71,26 +71,27 @@
|
|
|
71
71
|
"multimatch": "7.0.0",
|
|
72
72
|
"nanospinner": "1.1.0",
|
|
73
73
|
"node-fetch": "3.3.2",
|
|
74
|
+
"node-stream-zip": "1.15.0",
|
|
74
75
|
"octokit": "3.2.1",
|
|
75
76
|
"open": "8.4.2",
|
|
76
77
|
"parse-diff": "0.11.1",
|
|
77
78
|
"sax": "1.4.1",
|
|
78
|
-
"semver": "7.7.
|
|
79
|
+
"semver": "7.7.2",
|
|
79
80
|
"simple-git": "3.27.0",
|
|
80
|
-
"snyk": "1.
|
|
81
|
+
"snyk": "1.1297.1",
|
|
81
82
|
"tar": "6.2.1",
|
|
82
83
|
"tmp": "0.2.3",
|
|
83
|
-
"undici": "6.21.
|
|
84
|
+
"undici": "6.21.3",
|
|
84
85
|
"uuid": "11.1.0",
|
|
85
86
|
"ws": "8.18.2",
|
|
86
87
|
"xml2js": "0.6.2",
|
|
87
88
|
"yargs": "17.7.2",
|
|
88
|
-
"zod": "3.
|
|
89
|
+
"zod": "3.25.36"
|
|
89
90
|
},
|
|
90
91
|
"devDependencies": {
|
|
91
92
|
"@graphql-codegen/cli": "5.0.6",
|
|
92
93
|
"@graphql-codegen/typescript": "4.1.6",
|
|
93
|
-
"@graphql-codegen/typescript-graphql-request": "6.
|
|
94
|
+
"@graphql-codegen/typescript-graphql-request": "6.3.0",
|
|
94
95
|
"@graphql-codegen/typescript-operations": "4.6.1",
|
|
95
96
|
"@octokit/types": "13.10.0",
|
|
96
97
|
"@types/adm-zip": "0.5.7",
|
|
@@ -108,18 +109,19 @@
|
|
|
108
109
|
"@types/yargs": "17.0.33",
|
|
109
110
|
"@typescript-eslint/eslint-plugin": "7.17.0",
|
|
110
111
|
"@typescript-eslint/parser": "7.17.0",
|
|
111
|
-
"@vitest/coverage-istanbul": "3.1.
|
|
112
|
-
"@vitest/ui": "3.1.
|
|
112
|
+
"@vitest/coverage-istanbul": "3.1.4",
|
|
113
|
+
"@vitest/ui": "3.1.4",
|
|
113
114
|
"eslint": "8.57.0",
|
|
114
115
|
"eslint-plugin-import": "2.31.0",
|
|
115
116
|
"eslint-plugin-prettier": "5.4.0",
|
|
116
117
|
"eslint-plugin-simple-import-sort": "10.0.0",
|
|
117
|
-
"msw": "2.
|
|
118
|
+
"msw": "2.8.5",
|
|
118
119
|
"nock": "14.0.4",
|
|
120
|
+
"pino-pretty": "13.0.0",
|
|
119
121
|
"prettier": "3.5.3",
|
|
120
|
-
"tsup": "8.
|
|
122
|
+
"tsup": "8.5.0",
|
|
121
123
|
"typescript": "4.9.5",
|
|
122
|
-
"vitest": "3.1.
|
|
124
|
+
"vitest": "3.1.4"
|
|
123
125
|
},
|
|
124
126
|
"engines": {
|
|
125
127
|
"node": ">=18.20.4"
|