mobbdev 1.4.2 → 1.4.9

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.
@@ -94,6 +94,9 @@ function getSdk(client, withWrapper = defaultWrapper) {
94
94
  performCliLogin(variables, requestHeaders, signal) {
95
95
  return withWrapper((wrappedRequestHeaders) => client.request({ document: PerformCliLoginDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "performCliLogin", "mutation", variables);
96
96
  },
97
+ SetQuarantineEnabled(variables, requestHeaders, signal) {
98
+ return withWrapper((wrappedRequestHeaders) => client.request({ document: SetQuarantineEnabledDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "SetQuarantineEnabled", "mutation", variables);
99
+ },
97
100
  CreateProject(variables, requestHeaders, signal) {
98
101
  return withWrapper((wrappedRequestHeaders) => client.request({ document: CreateProjectDocument, variables, requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders }, signal }), "CreateProject", "mutation", variables);
99
102
  },
@@ -135,7 +138,7 @@ function getSdk(client, withWrapper = defaultWrapper) {
135
138
  }
136
139
  };
137
140
  }
138
- var AiBlameInferenceType, FixQuestionInputType, Language, ManifestAction, Effort_To_Apply_Fix_Enum, Fix_Rating_Tag_Enum, Fix_Report_State_Enum, Fix_State_Enum, IssueLanguage_Enum, IssueType_Enum, Pr_Status_Enum, Project_Role_Type_Enum, Vulnerability_Report_Issue_Category_Enum, Vulnerability_Report_Issue_State_Enum, Vulnerability_Report_Issue_Tag_Enum, Vulnerability_Report_Vendor_Enum, Vulnerability_Severity_Enum, FixDetailsFragmentDoc, FixReportSummaryFieldsFragmentDoc, MeDocument, GetLastOrgAndNamedProjectDocument, GetLastOrgDocument, GetEncryptedApiTokenDocument, FixReportStateDocument, GetVulnerabilityReportPathsDocument, GetAnalysisSubscriptionDocument, GetAnalysisDocument, GetFixesDocument, GetVulByNodesMetadataDocument, GetFalsePositiveDocument, UpdateScmTokenDocument, UploadS3BucketInfoDocument, GetTracyDiffUploadUrlDocument, AnalyzeCommitForExtensionAiBlameDocument, GetAiBlameInferenceDocument, GetAiBlameAttributionPromptDocument, GetPromptSummaryDocument, UploadAiBlameInferencesInitDocument, FinalizeAiBlameInferencesUploadDocument, UploadTracyRecordsDocument, GetTracyRawDataUploadUrlDocument, DigestVulnerabilityReportDocument, SubmitVulnerabilityReportDocument, CreateCommunityUserDocument, CreateCliLoginDocument, PerformCliLoginDocument, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, SkillVerdictsByMd5Document, defaultWrapper;
141
+ var AiBlameInferenceType, FixQuestionInputType, Language, ManifestAction, Effort_To_Apply_Fix_Enum, Fix_Rating_Tag_Enum, Fix_Report_State_Enum, Fix_State_Enum, IssueLanguage_Enum, IssueType_Enum, Pr_Status_Enum, Project_Role_Type_Enum, Vulnerability_Report_Issue_Category_Enum, Vulnerability_Report_Issue_State_Enum, Vulnerability_Report_Issue_Tag_Enum, Vulnerability_Report_Vendor_Enum, Vulnerability_Severity_Enum, FixDetailsFragmentDoc, FixReportSummaryFieldsFragmentDoc, MeDocument, GetLastOrgAndNamedProjectDocument, GetLastOrgDocument, GetEncryptedApiTokenDocument, FixReportStateDocument, GetVulnerabilityReportPathsDocument, GetAnalysisSubscriptionDocument, GetAnalysisDocument, GetFixesDocument, GetVulByNodesMetadataDocument, GetFalsePositiveDocument, UpdateScmTokenDocument, UploadS3BucketInfoDocument, GetTracyDiffUploadUrlDocument, AnalyzeCommitForExtensionAiBlameDocument, GetAiBlameInferenceDocument, GetAiBlameAttributionPromptDocument, GetPromptSummaryDocument, UploadAiBlameInferencesInitDocument, FinalizeAiBlameInferencesUploadDocument, UploadTracyRecordsDocument, GetTracyRawDataUploadUrlDocument, DigestVulnerabilityReportDocument, SubmitVulnerabilityReportDocument, CreateCommunityUserDocument, CreateCliLoginDocument, PerformCliLoginDocument, SetQuarantineEnabledDocument, CreateProjectDocument, ValidateRepoUrlDocument, GitReferenceDocument, AutoPrAnalysisDocument, GetFixReportsByRepoUrlDocument, GetReportFixesDocument, GetLatestReportByRepoUrlDocument, UpdateDownloadedFixDataDocument, GetUserMvsAutoFixDocument, StreamBlameAiAnalysisRequestsDocument, StreamCommitBlameRequestsDocument, ScanSkillDocument, SkillVerdictsByMd5Document, defaultWrapper;
139
142
  var init_client_generates = __esm({
140
143
  "src/features/analysis/scm/generates/client_generates.ts"() {
141
144
  "use strict";
@@ -260,6 +263,7 @@ var init_client_generates = __esm({
260
263
  IssueType_Enum2["HttpParameterPollution"] = "HTTP_PARAMETER_POLLUTION";
261
264
  IssueType_Enum2["HttpResponseSplitting"] = "HTTP_RESPONSE_SPLITTING";
262
265
  IssueType_Enum2["IframeWithoutSandbox"] = "IFRAME_WITHOUT_SANDBOX";
266
+ IssueType_Enum2["ImproperCertificateValidation"] = "IMPROPER_CERTIFICATE_VALIDATION";
263
267
  IssueType_Enum2["ImproperExceptionHandling"] = "IMPROPER_EXCEPTION_HANDLING";
264
268
  IssueType_Enum2["ImproperResourceShutdownOrRelease"] = "IMPROPER_RESOURCE_SHUTDOWN_OR_RELEASE";
265
269
  IssueType_Enum2["ImproperStringFormatting"] = "IMPROPER_STRING_FORMATTING";
@@ -278,6 +282,7 @@ var init_client_generates = __esm({
278
282
  IssueType_Enum2["InsecureTmpFile"] = "INSECURE_TMP_FILE";
279
283
  IssueType_Enum2["InsecureUuidVersion"] = "INSECURE_UUID_VERSION";
280
284
  IssueType_Enum2["InsufficientLogging"] = "INSUFFICIENT_LOGGING";
285
+ IssueType_Enum2["J2EeGetConnection"] = "J2EE_GET_CONNECTION";
281
286
  IssueType_Enum2["JqueryDeprecatedSymbols"] = "JQUERY_DEPRECATED_SYMBOLS";
282
287
  IssueType_Enum2["LeftoverDebugCode"] = "LEFTOVER_DEBUG_CODE";
283
288
  IssueType_Enum2["LocaleDependentComparison"] = "LOCALE_DEPENDENT_COMPARISON";
@@ -593,6 +598,7 @@ var init_client_generates = __esm({
593
598
  id
594
599
  organization {
595
600
  id
601
+ enableV2Fixes
596
602
  projects(where: {name: {_eq: $projectName}}) {
597
603
  name
598
604
  id
@@ -611,6 +617,7 @@ var init_client_generates = __esm({
611
617
  id
612
618
  organization {
613
619
  id
620
+ enableV2Fixes
614
621
  }
615
622
  }
616
623
  }
@@ -941,6 +948,12 @@ var init_client_generates = __esm({
941
948
  level
942
949
  justification
943
950
  }
951
+ appliedSkills
952
+ mcpCalls {
953
+ mcpServer
954
+ mcpTool
955
+ callCount
956
+ }
944
957
  }
945
958
  }
946
959
  ... on PromptSummaryProcessing {
@@ -1092,6 +1105,13 @@ var init_client_generates = __esm({
1092
1105
  performCliLogin(loginId: $loginId) {
1093
1106
  status
1094
1107
  }
1108
+ }
1109
+ `;
1110
+ SetQuarantineEnabledDocument = `
1111
+ mutation SetQuarantineEnabled($enabled: Boolean!) {
1112
+ update_organization(where: {}, _set: {quarantineEnabled: $enabled}) {
1113
+ affected_rows
1114
+ }
1095
1115
  }
1096
1116
  `;
1097
1117
  CreateProjectDocument = `
@@ -1277,12 +1297,15 @@ var init_client_generates = __esm({
1277
1297
  SkillVerdictsByMd5Document = `
1278
1298
  query SkillVerdictsByMd5($md5s: [String!]!) {
1279
1299
  skillVerdictsByMd5(md5s: $md5s) {
1280
- md5
1281
- verdict
1282
- summary
1283
- scannerName
1284
- scannerVersion
1285
- scannedAt
1300
+ quarantineEnabled
1301
+ verdicts {
1302
+ md5
1303
+ verdict
1304
+ summary
1305
+ scannerName
1306
+ scannerVersion
1307
+ scannedAt
1308
+ }
1286
1309
  }
1287
1310
  }
1288
1311
  `;
@@ -1708,6 +1731,7 @@ var init_getIssueType = __esm({
1708
1731
  ["NO_EQUIVALENCE_METHOD" /* NoEquivalenceMethod */]: "Class Does Not Implement Equivalence Method",
1709
1732
  ["INFORMATION_EXPOSURE_VIA_HEADERS" /* InformationExposureViaHeaders */]: "Information Exposure via Headers",
1710
1733
  ["DEBUG_ENABLED" /* DebugEnabled */]: "Debug Enabled",
1734
+ ["J2EE_GET_CONNECTION" /* J2EeGetConnection */]: "J2EE Bad Practices: getConnection()",
1711
1735
  ["LEFTOVER_DEBUG_CODE" /* LeftoverDebugCode */]: "Leftover Debug Code",
1712
1736
  ["POOR_ERROR_HANDLING_EMPTY_CATCH_BLOCK" /* PoorErrorHandlingEmptyCatchBlock */]: "Poor Error Handling: Empty Catch Block",
1713
1737
  ["ERRONEOUS_STRING_COMPARE" /* ErroneousStringCompare */]: "Erroneous String Compare",
@@ -1782,7 +1806,8 @@ var init_getIssueType = __esm({
1782
1806
  ["TAINTED_NUMERIC_CAST" /* TaintedNumericCast */]: "Tainted Numeric Cast",
1783
1807
  ["MISSING_X_FRAME_OPTIONS" /* MissingXFrameOptions */]: "Missing X-Frame-Options Header",
1784
1808
  ["IMPROPER_VALIDATION_OF_ARRAY_INDEX" /* ImproperValidationOfArrayIndex */]: "Improper Validation of Array Index",
1785
- ["INCORRECT_INTEGER_CONVERSION" /* IncorrectIntegerConversion */]: "Incorrect Integer Conversion"
1809
+ ["INCORRECT_INTEGER_CONVERSION" /* IncorrectIntegerConversion */]: "Incorrect Integer Conversion",
1810
+ ["IMPROPER_CERTIFICATE_VALIDATION" /* ImproperCertificateValidation */]: "Improper Certificate Validation"
1786
1811
  };
1787
1812
  issueTypeZ = z5.nativeEnum(IssueType_Enum);
1788
1813
  getIssueTypeFriendlyString = (issueType) => {
@@ -2684,7 +2709,7 @@ var init_env = __esm({
2684
2709
  GITLAB_API_TOKEN: z16.string().optional(),
2685
2710
  GITHUB_API_TOKEN: z16.string().optional(),
2686
2711
  GIT_PROXY_HOST: z16.string().optional().default("http://tinyproxy:8888"),
2687
- MAX_UPLOAD_FILE_SIZE_MB: z16.coerce.number().gt(0).default(5),
2712
+ MAX_UPLOAD_FILE_SIZE_MB: z16.coerce.number().gt(0).default(2),
2688
2713
  GITHUB_API_CONCURRENCY: z16.coerce.number().gt(0).optional().default(10)
2689
2714
  });
2690
2715
  ({
@@ -3546,7 +3571,13 @@ var init_FileUtils = __esm({
3546
3571
  const results = [];
3547
3572
  const filePromises = [];
3548
3573
  for (const item of items) {
3549
- const fullPath = path4.join(dir, item);
3574
+ const safeInput = path4.resolve(
3575
+ path4.sep,
3576
+ path4.normalize(
3577
+ String(dir || "").replace("\0", "").replace(/^(\.\.(\/|\\$))+/, "")
3578
+ )
3579
+ );
3580
+ const fullPath = path4.join(safeInput, item);
3550
3581
  try {
3551
3582
  await fsPromises.access(fullPath, fs4.constants.R_OK);
3552
3583
  const stat = await fsPromises.stat(fullPath);
@@ -3584,7 +3615,9 @@ var init_FileUtils = __esm({
3584
3615
  }) {
3585
3616
  try {
3586
3617
  const stats = fs4.statSync(dir);
3587
- if (!stats.isDirectory()) return [];
3618
+ if (!stats.isDirectory()) {
3619
+ return [];
3620
+ }
3588
3621
  } catch {
3589
3622
  return [];
3590
3623
  }
@@ -3593,7 +3626,7 @@ var init_FileUtils = __esm({
3593
3626
  const { GitService: GitService2 } = await Promise.resolve().then(() => (init_GitService(), GitService_exports));
3594
3627
  const gitService = new GitService2(dir);
3595
3628
  gitMatcher = await gitService.getGitignoreMatcher();
3596
- } catch (e) {
3629
+ } catch {
3597
3630
  }
3598
3631
  const allFiles = await this.processRootDirectory(dir, EXCLUDED_DIRS);
3599
3632
  const filteredFiles = allFiles.filter(
@@ -4852,6 +4885,7 @@ var fixDetailsData = {
4852
4885
  issueDescription: "A data member and a function have the same name which can be confusing to the developer.",
4853
4886
  fixInstructions: "Rename the data member to avoid confusion."
4854
4887
  },
4888
+ ["J2EE_GET_CONNECTION" /* J2EeGetConnection */]: void 0,
4855
4889
  ["LEFTOVER_DEBUG_CODE" /* LeftoverDebugCode */]: void 0,
4856
4890
  ["UNVALIDATED_PUBLIC_METHOD_ARGUMENT" /* UnvalidatedPublicMethodArgument */]: void 0,
4857
4891
  ["ERRONEOUS_STRING_COMPARE" /* ErroneousStringCompare */]: void 0,
@@ -4954,7 +4988,8 @@ var fixDetailsData = {
4954
4988
  ["TAINTED_NUMERIC_CAST" /* TaintedNumericCast */]: void 0,
4955
4989
  ["MISSING_X_FRAME_OPTIONS" /* MissingXFrameOptions */]: void 0,
4956
4990
  ["IMPROPER_VALIDATION_OF_ARRAY_INDEX" /* ImproperValidationOfArrayIndex */]: void 0,
4957
- ["INCORRECT_INTEGER_CONVERSION" /* IncorrectIntegerConversion */]: void 0
4991
+ ["INCORRECT_INTEGER_CONVERSION" /* IncorrectIntegerConversion */]: void 0,
4992
+ ["IMPROPER_CERTIFICATE_VALIDATION" /* ImproperCertificateValidation */]: void 0
4958
4993
  };
4959
4994
 
4960
4995
  // src/features/analysis/scm/shared/src/commitDescriptionMarkup.ts
@@ -5031,6 +5066,31 @@ var go_default = vulnerabilities3;
5031
5066
  // src/features/analysis/scm/shared/src/storedFixData/java/index.ts
5032
5067
  init_client_generates();
5033
5068
 
5069
+ // src/features/analysis/scm/shared/src/storedFixData/java/j2eeGetConnection.ts
5070
+ var j2eeGetConnection = {
5071
+ guidance: () => `This fix replaces direct \`DriverManager.getConnection(...)\` calls with a container-managed JNDI \`DataSource\` lookup. The new code expects the app server (Tomcat / WildFly / WebSphere / etc.) to expose a configured connection pool under the JNDI name you specified.
5072
+
5073
+
5074
+  
5075
+
5076
+ ***Make sure the resource pool exists before merging.*** The patched code will throw a \`NamingException\` at runtime if the JNDI name does not resolve. Configure it in your container's resource definition:
5077
+
5078
+ - **Tomcat**: declare a \`<Resource>\` element in \`context.xml\` (or per-app \`META-INF/context.xml\`) with the same JNDI name, plus \`url\`, \`username\`, \`password\`, \`driverClassName\`, and any pool sizing.
5079
+ - **Spring Boot (embedded Tomcat)**: configure via \`spring.datasource.jndi-name\` and matching \`<Resource>\`, or use \`@ConfigurationProperties\` to bind a \`DataSource\` bean.
5080
+ - **WildFly / JBoss EAP**: declare a \`<datasource>\` in the standalone/domain XML and reference its JNDI binding.
5081
+ - **WebSphere / WebLogic**: define the JDBC provider and data source through the admin console; bind it to the JNDI name.
5082
+
5083
+
5084
+ &nbsp;
5085
+
5086
+ Also add a matching \`<resource-ref>\` (or \`<data-source>\`) in your \`WEB-INF/web.xml\` if you use one. The original connection details (URL, user, password) move from the call site into the resource definition \u2014 remove them from any constants / properties files where they were duplicated.
5087
+
5088
+
5089
+ &nbsp;
5090
+
5091
+ This fix is mandated by the J2EE / Jakarta EE specification (CWE-245) \u2014 direct driver management bypasses the container's pooling, retry, and failover policies.`
5092
+ };
5093
+
5034
5094
  // src/features/analysis/scm/shared/src/storedFixData/java/sqlInjection.ts
5035
5095
  var sqlInjection = {
5036
5096
  guidance: ({
@@ -5058,6 +5118,7 @@ var systemInformationLeak = {
5058
5118
  // src/features/analysis/scm/shared/src/storedFixData/java/index.ts
5059
5119
  var vulnerabilities4 = {
5060
5120
  ["PASSWORD_IN_COMMENT" /* PasswordInComment */]: passwordInComment,
5121
+ ["J2EE_GET_CONNECTION" /* J2EeGetConnection */]: j2eeGetConnection,
5061
5122
  ["SQL_Injection" /* SqlInjection */]: sqlInjection,
5062
5123
  ["SYSTEM_INFORMATION_LEAK" /* SystemInformationLeak */]: systemInformationLeak
5063
5124
  };
@@ -5142,10 +5203,24 @@ See more information [here](https://jinja.palletsprojects.com/en/3.1.x/templates
5142
5203
  ***Note: make sure that none of the data you're marking as safe is coming from user input, as this can lead to XSS vulnerabilities!***`
5143
5204
  };
5144
5205
 
5206
+ // src/features/analysis/scm/shared/src/storedFixData/python/improperCertificateValidation.ts
5207
+ var improperCertificateValidation = {
5208
+ guidance: () => `This fix re-enables TLS certificate validation by changing \`verify=False\` to \`verify=True\` on the HTTP request. Any call that was deliberately reaching a server with a self-signed, expired, or otherwise untrusted certificate will start raising \`ssl.SSLError\` / \`requests.exceptions.SSLError\` after this change.
5209
+
5210
+ &nbsp;
5211
+
5212
+ ***Before merging, confirm that every endpoint reached by this call presents a certificate signed by a trusted CA.*** If the call must talk to an internal service that uses a private CA, prefer pointing \`verify\` at the CA bundle (\`verify="/path/to/ca.pem"\`) over disabling validation. If the certificate cannot be trusted at all, the safe fix is to terminate that connection at a properly configured proxy, not to keep it unvalidated.
5213
+
5214
+ &nbsp;
5215
+
5216
+ See the [\`requests\` SSL verification docs](https://requests.readthedocs.io/en/latest/user/advanced/#ssl-cert-verification) for the supported \`verify\` values.`
5217
+ };
5218
+
5145
5219
  // src/features/analysis/scm/shared/src/storedFixData/python/index.ts
5146
5220
  var vulnerabilities7 = {
5147
5221
  ["AUTO_ESCAPE_FALSE" /* AutoEscapeFalse */]: autoEscapeFalse,
5148
- ["CSRF" /* Csrf */]: csrf
5222
+ ["CSRF" /* Csrf */]: csrf,
5223
+ ["IMPROPER_CERTIFICATE_VALIDATION" /* ImproperCertificateValidation */]: improperCertificateValidation
5149
5224
  };
5150
5225
  var python_default = vulnerabilities7;
5151
5226
 
@@ -5681,6 +5756,15 @@ var insecureCookie2 = {
5681
5756
  }
5682
5757
  };
5683
5758
 
5759
+ // src/features/analysis/scm/shared/src/storedQuestionData/java/j2eeGetConnection.ts
5760
+ var j2eeGetConnection2 = {
5761
+ jndiResourceName: {
5762
+ content: () => "What JNDI name is the database connection pool registered under?",
5763
+ description: () => 'We need the JNDI name your app server uses to expose its container-managed `DataSource`. The fix performs `new InitialContext().lookup(<jndi-name>)` to retrieve the pool, so this value must exactly match the resource definition (e.g. `<Resource name="...">` in Tomcat `context.xml`, or the binding declared in WildFly / WebSphere / WebLogic). The default `java:comp/env/jdbc/myDataSource` is the canonical Tomcat / Spring convention; replace it with whatever your environment uses.',
5764
+ guidance: () => ""
5765
+ }
5766
+ };
5767
+
5684
5768
  // src/features/analysis/scm/shared/src/storedQuestionData/java/leftoverDebugCode.ts
5685
5769
  var leftoverDebugCode = {
5686
5770
  isCodeUsed: {
@@ -6009,6 +6093,7 @@ var vulnerabilities12 = {
6009
6093
  ["UNCHECKED_LOOP_CONDITION" /* UncheckedLoopCondition */]: uncheckedLoopCondition,
6010
6094
  ["INSECURE_COOKIE" /* InsecureCookie */]: insecureCookie2,
6011
6095
  ["TRUST_BOUNDARY_VIOLATION" /* TrustBoundaryViolation */]: trustBoundaryViolation2,
6096
+ ["J2EE_GET_CONNECTION" /* J2EeGetConnection */]: j2eeGetConnection2,
6012
6097
  ["LEFTOVER_DEBUG_CODE" /* LeftoverDebugCode */]: leftoverDebugCode,
6013
6098
  ["ERRONEOUS_STRING_COMPARE" /* ErroneousStringCompare */]: erroneousStringCompare,
6014
6099
  ["DUPLICATED_STRINGS" /* DuplicatedStrings */]: duplicatedStrings
@@ -6870,7 +6955,8 @@ var GQLClient = class {
6870
6955
  const getLastOrgRes = await this._clientSdk.getLastOrg({ email });
6871
6956
  return {
6872
6957
  organizationId: getLastOrgRes?.user?.[0]?.userOrganizationsAndUserOrganizationRoles?.[0]?.organization?.id,
6873
- userName: getLastOrgRes?.user?.[0]?.name ?? ""
6958
+ userName: getLastOrgRes?.user?.[0]?.name ?? "",
6959
+ enableV2Fixes: getLastOrgRes?.user?.[0]?.userOrganizationsAndUserOrganizationRoles?.[0]?.organization?.enableV2Fixes === true
6874
6960
  };
6875
6961
  }
6876
6962
  async createCliLogin(variables) {
@@ -6952,7 +7038,8 @@ var GQLClient = class {
6952
7038
  }
6953
7039
  return {
6954
7040
  organizationId: organization.id,
6955
- projectId
7041
+ projectId,
7042
+ enableV2Fixes: organization.enableV2Fixes === true
6956
7043
  };
6957
7044
  }
6958
7045
  async getEncryptedApiToken(variables) {
@@ -7282,6 +7369,7 @@ var GQLClient = class {
7282
7369
  return await this._clientSdk.ScanSkill(variables);
7283
7370
  }
7284
7371
  // T-467 — batched verdict lookup for the client-side quarantine check.
7372
+ // T-493 — response is the envelope `{ quarantineEnabled, verdicts }`.
7285
7373
  async skillVerdictsByMd5(md5s) {
7286
7374
  return await this._clientSdk.SkillVerdictsByMd5({ md5s });
7287
7375
  }
@@ -7428,7 +7516,11 @@ async function sanitizeDataWithCounts(obj, options) {
7428
7516
  if (typeof data === "string") {
7429
7517
  return sanitizeString(data);
7430
7518
  } else if (Array.isArray(data)) {
7431
- return Promise.all(data.map((item) => sanitizeRecursive(item)));
7519
+ const results = [];
7520
+ for (const item of data) {
7521
+ results.push(await sanitizeRecursive(item));
7522
+ }
7523
+ return results;
7432
7524
  } else if (data instanceof Error) {
7433
7525
  return data;
7434
7526
  } else if (data instanceof Date) {