@testream/dotnet-reporter 1.0.1 → 1.1.1

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.js CHANGED
@@ -2,15 +2,15 @@
2
2
  require('./sourcemap-register.js');/******/ (() => { // webpackBootstrap
3
3
  /******/ var __webpack_modules__ = ({
4
4
 
5
- /***/ 537:
5
+ /***/ 1537:
6
6
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
7
7
 
8
8
  "use strict";
9
9
 
10
10
 
11
11
  const validator = __nccwpck_require__(93);
12
- const XMLParser = __nccwpck_require__(360);
13
- const XMLBuilder = __nccwpck_require__(823);
12
+ const XMLParser = __nccwpck_require__(2360);
13
+ const XMLBuilder = __nccwpck_require__(2823);
14
14
 
15
15
  module.exports = {
16
16
  XMLParser: XMLParser,
@@ -20,7 +20,7 @@ module.exports = {
20
20
 
21
21
  /***/ }),
22
22
 
23
- /***/ 64:
23
+ /***/ 3064:
24
24
  /***/ ((module) => {
25
25
 
26
26
  function getIgnoreAttributesFn(ignoreAttributes) {
@@ -46,7 +46,7 @@ module.exports = getIgnoreAttributesFn
46
46
 
47
47
  /***/ }),
48
48
 
49
- /***/ 559:
49
+ /***/ 7559:
50
50
  /***/ ((__unused_webpack_module, exports) => {
51
51
 
52
52
  "use strict";
@@ -132,7 +132,7 @@ exports.nameRegexp = nameRegexp;
132
132
  "use strict";
133
133
 
134
134
 
135
- const util = __nccwpck_require__(559);
135
+ const util = __nccwpck_require__(7559);
136
136
 
137
137
  const defaultOptions = {
138
138
  allowBooleanAttributes: false, //A tag can have attributes without any value
@@ -559,14 +559,14 @@ function getPositionFromMatch(match) {
559
559
 
560
560
  /***/ }),
561
561
 
562
- /***/ 823:
562
+ /***/ 2823:
563
563
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
564
564
 
565
565
  "use strict";
566
566
 
567
567
  //parse Empty Node as self closing node
568
- const buildFromOrderedJs = __nccwpck_require__(57);
569
- const getIgnoreAttributesFn = __nccwpck_require__(64)
568
+ const buildFromOrderedJs = __nccwpck_require__(1057);
569
+ const getIgnoreAttributesFn = __nccwpck_require__(3064)
570
570
 
571
571
  const defaultOptions = {
572
572
  attributeNamePrefix: '@_',
@@ -853,7 +853,7 @@ module.exports = Builder;
853
853
 
854
854
  /***/ }),
855
855
 
856
- /***/ 57:
856
+ /***/ 1057:
857
857
  /***/ ((module) => {
858
858
 
859
859
  const EOL = "\n";
@@ -995,10 +995,10 @@ module.exports = toXml;
995
995
 
996
996
  /***/ }),
997
997
 
998
- /***/ 91:
998
+ /***/ 2091:
999
999
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
1000
1000
 
1001
- const util = __nccwpck_require__(559);
1001
+ const util = __nccwpck_require__(7559);
1002
1002
 
1003
1003
  //TODO: handle comments
1004
1004
  function readDocType(xmlData, i){
@@ -1209,18 +1209,18 @@ exports.defaultOptions = defaultOptions;
1209
1209
 
1210
1210
  /***/ }),
1211
1211
 
1212
- /***/ 629:
1212
+ /***/ 2629:
1213
1213
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
1214
1214
 
1215
1215
  "use strict";
1216
1216
 
1217
1217
  ///@ts-check
1218
1218
 
1219
- const util = __nccwpck_require__(559);
1220
- const xmlNode = __nccwpck_require__(79);
1221
- const readDocType = __nccwpck_require__(91);
1222
- const toNumber = __nccwpck_require__(236);
1223
- const getIgnoreAttributesFn = __nccwpck_require__(64)
1219
+ const util = __nccwpck_require__(7559);
1220
+ const xmlNode = __nccwpck_require__(7079);
1221
+ const readDocType = __nccwpck_require__(2091);
1222
+ const toNumber = __nccwpck_require__(6236);
1223
+ const getIgnoreAttributesFn = __nccwpck_require__(3064)
1224
1224
 
1225
1225
  // const regx =
1226
1226
  // '<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)'
@@ -1823,12 +1823,12 @@ module.exports = OrderedObjParser;
1823
1823
 
1824
1824
  /***/ }),
1825
1825
 
1826
- /***/ 360:
1826
+ /***/ 2360:
1827
1827
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
1828
1828
 
1829
1829
  const { buildOptions} = __nccwpck_require__(901);
1830
- const OrderedObjParser = __nccwpck_require__(629);
1831
- const { prettify} = __nccwpck_require__(318);
1830
+ const OrderedObjParser = __nccwpck_require__(2629);
1831
+ const { prettify} = __nccwpck_require__(5318);
1832
1832
  const validator = __nccwpck_require__(93);
1833
1833
 
1834
1834
  class XMLParser{
@@ -1887,7 +1887,7 @@ module.exports = XMLParser;
1887
1887
 
1888
1888
  /***/ }),
1889
1889
 
1890
- /***/ 318:
1890
+ /***/ 5318:
1891
1891
  /***/ ((__unused_webpack_module, exports) => {
1892
1892
 
1893
1893
  "use strict";
@@ -2008,7 +2008,7 @@ exports.prettify = prettify;
2008
2008
 
2009
2009
  /***/ }),
2010
2010
 
2011
- /***/ 79:
2011
+ /***/ 7079:
2012
2012
  /***/ ((module) => {
2013
2013
 
2014
2014
  "use strict";
@@ -2040,7 +2040,7 @@ module.exports = XmlNode;
2040
2040
 
2041
2041
  /***/ }),
2042
2042
 
2043
- /***/ 236:
2043
+ /***/ 6236:
2044
2044
  /***/ ((module) => {
2045
2045
 
2046
2046
  const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;
@@ -2157,86 +2157,138 @@ module.exports = toNumber;
2157
2157
 
2158
2158
  /***/ }),
2159
2159
 
2160
- /***/ 406:
2160
+ /***/ 2406:
2161
2161
  /***/ ((__unused_webpack_module, exports) => {
2162
2162
 
2163
2163
  "use strict";
2164
2164
 
2165
2165
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2166
2166
  exports.detectCIContext = detectCIContext;
2167
- /**
2168
- * Detect CI context from environment variables
2169
- * Supports: GitHub Actions, GitLab CI, Azure Pipelines, CircleCI, Jenkins, Bitbucket Pipelines
2170
- */
2171
- function detectCIContext() {
2172
- const env = process.env;
2173
- // GitHub Actions
2174
- if (env.GITHUB_ACTIONS === 'true') {
2175
- return {
2176
- branch: env.GITHUB_HEAD_REF || env.GITHUB_REF_NAME || env.GITHUB_REF?.replace('refs/heads/', ''),
2177
- commitSha: env.GITHUB_SHA,
2178
- repositoryUrl: env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY
2179
- ? `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}`
2180
- : undefined,
2181
- buildNumber: env.GITHUB_RUN_NUMBER,
2182
- buildUrl: env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY && env.GITHUB_RUN_ID
2183
- ? `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`
2184
- : undefined,
2185
- };
2167
+ function removePrefix(value, prefix) {
2168
+ if (!value) {
2169
+ return undefined;
2186
2170
  }
2187
- // GitLab CI
2188
- if (env.GITLAB_CI === 'true') {
2189
- return {
2190
- branch: env.CI_COMMIT_BRANCH || env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,
2191
- commitSha: env.CI_COMMIT_SHA,
2192
- repositoryUrl: env.CI_PROJECT_URL,
2193
- buildNumber: env.CI_PIPELINE_IID,
2194
- buildUrl: env.CI_PIPELINE_URL,
2195
- };
2171
+ return value.startsWith(prefix) ? value.slice(prefix.length) : value;
2172
+ }
2173
+ function readEnvironment() {
2174
+ const runtime = globalThis;
2175
+ return runtime.process?.env ?? {};
2176
+ }
2177
+ function buildGithubRepositoryUrl(env) {
2178
+ if (!env.GITHUB_SERVER_URL || !env.GITHUB_REPOSITORY) {
2179
+ return undefined;
2196
2180
  }
2197
- // Azure Pipelines
2198
- if (env.TF_BUILD === 'True') {
2199
- return {
2200
- branch: env.BUILD_SOURCEBRANCH?.replace('refs/heads/', ''),
2201
- commitSha: env.BUILD_SOURCEVERSION,
2202
- repositoryUrl: env.BUILD_REPOSITORY_URI,
2203
- buildNumber: env.BUILD_BUILDNUMBER,
2204
- buildUrl: env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI && env.SYSTEM_TEAMPROJECT && env.BUILD_BUILDID
2205
- ? `${env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${env.SYSTEM_TEAMPROJECT}/_build/results?buildId=${env.BUILD_BUILDID}`
2206
- : undefined,
2207
- };
2181
+ return `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}`;
2182
+ }
2183
+ function buildGithubBuildUrl(env) {
2184
+ if (!env.GITHUB_SERVER_URL || !env.GITHUB_REPOSITORY || !env.GITHUB_RUN_ID) {
2185
+ return undefined;
2208
2186
  }
2209
- // CircleCI
2210
- if (env.CIRCLECI === 'true') {
2211
- return {
2212
- branch: env.CIRCLE_BRANCH,
2213
- commitSha: env.CIRCLE_SHA1,
2214
- repositoryUrl: env.CIRCLE_REPOSITORY_URL,
2215
- buildNumber: env.CIRCLE_BUILD_NUM,
2216
- buildUrl: env.CIRCLE_BUILD_URL,
2217
- };
2187
+ return `${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`;
2188
+ }
2189
+ function detectGitHubBranch(env) {
2190
+ if (env.GITHUB_HEAD_REF) {
2191
+ return env.GITHUB_HEAD_REF;
2218
2192
  }
2219
- // Jenkins
2220
- if (env.JENKINS_URL) {
2221
- return {
2222
- branch: env.GIT_BRANCH?.replace('origin/', ''),
2223
- commitSha: env.GIT_COMMIT,
2224
- repositoryUrl: env.GIT_URL,
2225
- buildNumber: env.BUILD_NUMBER,
2226
- buildUrl: env.BUILD_URL,
2227
- };
2193
+ if (env.GITHUB_REF?.startsWith('refs/heads/')) {
2194
+ return env.GITHUB_REF_NAME ?? removePrefix(env.GITHUB_REF, 'refs/heads/');
2228
2195
  }
2229
- // Bitbucket Pipelines
2230
- if (env.BITBUCKET_BUILD_NUMBER) {
2231
- return {
2232
- branch: env.BITBUCKET_BRANCH,
2233
- commitSha: env.BITBUCKET_COMMIT,
2234
- repositoryUrl: env.BITBUCKET_GIT_HTTP_ORIGIN,
2235
- buildNumber: env.BITBUCKET_BUILD_NUMBER,
2236
- buildUrl: env.BITBUCKET_REPO_FULL_NAME && env.BITBUCKET_BUILD_NUMBER
2237
- ? `https://bitbucket.org/${env.BITBUCKET_REPO_FULL_NAME}/pipelines/results/${env.BITBUCKET_BUILD_NUMBER}`
2238
- : undefined,
2239
- };
2196
+ return undefined;
2197
+ }
2198
+ function detectGitHubActionsContext(env) {
2199
+ return {
2200
+ branch: detectGitHubBranch(env),
2201
+ commitSha: env.GITHUB_SHA,
2202
+ repositoryUrl: buildGithubRepositoryUrl(env),
2203
+ buildNumber: env.GITHUB_RUN_NUMBER,
2204
+ buildUrl: buildGithubBuildUrl(env),
2205
+ };
2206
+ }
2207
+ function detectGitLabContext(env) {
2208
+ return {
2209
+ branch: env.CI_COMMIT_BRANCH || env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,
2210
+ commitSha: env.CI_COMMIT_SHA,
2211
+ repositoryUrl: env.CI_PROJECT_URL,
2212
+ buildNumber: env.CI_PIPELINE_IID,
2213
+ buildUrl: env.CI_PIPELINE_URL,
2214
+ };
2215
+ }
2216
+ function detectAzurePipelinesContext(env) {
2217
+ return {
2218
+ branch: removePrefix(env.BUILD_SOURCEBRANCH, 'refs/heads/'),
2219
+ commitSha: env.BUILD_SOURCEVERSION,
2220
+ repositoryUrl: env.BUILD_REPOSITORY_URI,
2221
+ buildNumber: env.BUILD_BUILDNUMBER,
2222
+ buildUrl: env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI && env.SYSTEM_TEAMPROJECT && env.BUILD_BUILDID
2223
+ ? `${env.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${env.SYSTEM_TEAMPROJECT}/_build/results?buildId=${env.BUILD_BUILDID}`
2224
+ : undefined,
2225
+ };
2226
+ }
2227
+ function detectCircleCIContext(env) {
2228
+ return {
2229
+ branch: env.CIRCLE_BRANCH,
2230
+ commitSha: env.CIRCLE_SHA1,
2231
+ repositoryUrl: env.CIRCLE_REPOSITORY_URL,
2232
+ buildNumber: env.CIRCLE_BUILD_NUM,
2233
+ buildUrl: env.CIRCLE_BUILD_URL,
2234
+ };
2235
+ }
2236
+ function detectJenkinsContext(env) {
2237
+ return {
2238
+ branch: removePrefix(env.GIT_BRANCH, 'origin/'),
2239
+ commitSha: env.GIT_COMMIT,
2240
+ repositoryUrl: env.GIT_URL,
2241
+ buildNumber: env.BUILD_NUMBER,
2242
+ buildUrl: env.BUILD_URL,
2243
+ };
2244
+ }
2245
+ function detectBitbucketContext(env) {
2246
+ return {
2247
+ branch: env.BITBUCKET_BRANCH,
2248
+ commitSha: env.BITBUCKET_COMMIT,
2249
+ repositoryUrl: env.BITBUCKET_GIT_HTTP_ORIGIN,
2250
+ buildNumber: env.BITBUCKET_BUILD_NUMBER,
2251
+ buildUrl: env.BITBUCKET_REPO_FULL_NAME && env.BITBUCKET_BUILD_NUMBER
2252
+ ? `https://bitbucket.org/${env.BITBUCKET_REPO_FULL_NAME}/pipelines/results/${env.BITBUCKET_BUILD_NUMBER}`
2253
+ : undefined,
2254
+ };
2255
+ }
2256
+ const CI_PROVIDER_DETECTORS = [
2257
+ {
2258
+ isMatch: (env) => env.GITHUB_ACTIONS === 'true',
2259
+ detect: detectGitHubActionsContext,
2260
+ },
2261
+ {
2262
+ isMatch: (env) => env.GITLAB_CI === 'true',
2263
+ detect: detectGitLabContext,
2264
+ },
2265
+ {
2266
+ isMatch: (env) => env.TF_BUILD === 'True',
2267
+ detect: detectAzurePipelinesContext,
2268
+ },
2269
+ {
2270
+ isMatch: (env) => env.CIRCLECI === 'true',
2271
+ detect: detectCircleCIContext,
2272
+ },
2273
+ {
2274
+ isMatch: (env) => Boolean(env.JENKINS_URL),
2275
+ detect: detectJenkinsContext,
2276
+ },
2277
+ {
2278
+ isMatch: (env) => Boolean(env.BITBUCKET_BUILD_NUMBER),
2279
+ detect: detectBitbucketContext,
2280
+ },
2281
+ ];
2282
+ /**
2283
+ * Detect CI context from environment variables
2284
+ * Supports: GitHub Actions, GitLab CI, Azure Pipelines, CircleCI, Jenkins, Bitbucket Pipelines
2285
+ */
2286
+ function detectCIContext() {
2287
+ const env = readEnvironment();
2288
+ for (const provider of CI_PROVIDER_DETECTORS) {
2289
+ if (provider.isMatch(env)) {
2290
+ return provider.detect(env);
2291
+ }
2240
2292
  }
2241
2293
  return {};
2242
2294
  }
@@ -2244,7 +2296,7 @@ function detectCIContext() {
2244
2296
 
2245
2297
  /***/ }),
2246
2298
 
2247
- /***/ 827:
2299
+ /***/ 3827:
2248
2300
  /***/ ((__unused_webpack_module, exports) => {
2249
2301
 
2250
2302
  "use strict";
@@ -2255,7 +2307,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
2255
2307
 
2256
2308
  /***/ }),
2257
2309
 
2258
- /***/ 322:
2310
+ /***/ 7322:
2259
2311
  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
2260
2312
 
2261
2313
  "use strict";
@@ -2277,10 +2329,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
2277
2329
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2278
2330
  exports.ensureReportId = exports.mapAttachmentsToTestResults = exports.uploadArtifacts = exports.uploadTestRun = exports.detectCIContext = void 0;
2279
2331
  // CTRF types
2280
- __exportStar(__nccwpck_require__(827), exports);
2281
- var ci_detection_1 = __nccwpck_require__(406);
2332
+ __exportStar(__nccwpck_require__(3827), exports);
2333
+ var ci_detection_1 = __nccwpck_require__(2406);
2282
2334
  Object.defineProperty(exports, "detectCIContext", ({ enumerable: true, get: function () { return ci_detection_1.detectCIContext; } }));
2283
- var upload_1 = __nccwpck_require__(969);
2335
+ var upload_1 = __nccwpck_require__(8969);
2284
2336
  Object.defineProperty(exports, "uploadTestRun", ({ enumerable: true, get: function () { return upload_1.uploadTestRun; } }));
2285
2337
  Object.defineProperty(exports, "uploadArtifacts", ({ enumerable: true, get: function () { return upload_1.uploadArtifacts; } }));
2286
2338
  Object.defineProperty(exports, "mapAttachmentsToTestResults", ({ enumerable: true, get: function () { return upload_1.mapAttachmentsToTestResults; } }));
@@ -2289,7 +2341,7 @@ Object.defineProperty(exports, "ensureReportId", ({ enumerable: true, get: funct
2289
2341
 
2290
2342
  /***/ }),
2291
2343
 
2292
- /***/ 969:
2344
+ /***/ 8969:
2293
2345
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
2294
2346
 
2295
2347
  "use strict";
@@ -2299,10 +2351,11 @@ exports.ensureReportId = ensureReportId;
2299
2351
  exports.uploadTestRun = uploadTestRun;
2300
2352
  exports.mapAttachmentsToTestResults = mapAttachmentsToTestResults;
2301
2353
  exports.uploadArtifacts = uploadArtifacts;
2302
- const ci_detection_1 = __nccwpck_require__(406);
2303
- const DEFAULT_API_URL = 'https://test-manager-backend.fly.dev';
2354
+ const ci_detection_1 = __nccwpck_require__(2406);
2355
+ const DEFAULT_API_URL = "https://test-manager-backend.fly.dev";
2304
2356
  function ensureReportId(report) {
2305
- if (typeof report.reportId === 'string' && report.reportId.trim().length > 0) {
2357
+ if (typeof report.reportId === "string" &&
2358
+ report.reportId.trim().length > 0) {
2306
2359
  return report.reportId;
2307
2360
  }
2308
2361
  const reportId = crypto.randomUUID();
@@ -2321,7 +2374,7 @@ function resolveApiUrl(explicitApiUrl) {
2321
2374
  return DEFAULT_API_URL;
2322
2375
  }
2323
2376
  function getEnvApiUrl() {
2324
- if (typeof process === 'undefined' || !process?.env) {
2377
+ if (typeof process === "undefined" || !process?.env) {
2325
2378
  return undefined;
2326
2379
  }
2327
2380
  return normalizeApiUrl(process.env.TESTREAM_API_URL);
@@ -2334,20 +2387,25 @@ function normalizeApiUrl(value) {
2334
2387
  if (!trimmed) {
2335
2388
  return undefined;
2336
2389
  }
2337
- return trimmed.replace(/\/+$/, '');
2390
+ // Use while loop instead of regex for better performance and clarity
2391
+ let result = trimmed;
2392
+ while (result.endsWith("/")) {
2393
+ result = result.slice(0, -1);
2394
+ }
2395
+ return result;
2338
2396
  }
2339
2397
  function isReportAlreadyExistsConflict(error) {
2340
- return error.errorCode === 'report_already_exists';
2398
+ return error.errorCode === "report_already_exists";
2341
2399
  }
2342
2400
  function formatUploadError(error) {
2343
- const detail = error.detail || error.title || error.rawBody || 'Unknown error';
2344
- const codeLabel = error.errorCode ? `, code=${error.errorCode}` : '';
2401
+ const detail = error.detail || error.title || error.rawBody || "Unknown error";
2402
+ const codeLabel = error.errorCode ? `, code=${error.errorCode}` : "";
2345
2403
  return `Upload failed (HTTP ${error.statusCode}${codeLabel}): ${detail}`;
2346
2404
  }
2347
2405
  async function parseHttpError(response) {
2348
2406
  const rawBody = await response.text();
2349
- const contentType = response.headers.get('content-type') || '';
2350
- if (contentType.toLowerCase().includes('json') && rawBody.trim().length > 0) {
2407
+ const contentType = response.headers.get("content-type") || "";
2408
+ if (contentType.toLowerCase().includes("json") && rawBody.trim().length > 0) {
2351
2409
  try {
2352
2410
  const parsed = JSON.parse(rawBody);
2353
2411
  return {
@@ -2397,14 +2455,14 @@ async function uploadTestRun(options) {
2397
2455
  ...uploadContext,
2398
2456
  };
2399
2457
  // Professional logging
2400
- console.log('Uploading test results...');
2458
+ console.log("Uploading test results...");
2401
2459
  let response;
2402
2460
  try {
2403
2461
  response = await fetch(`${apiUrl}/api/v1/ingest`, {
2404
- method: 'POST',
2462
+ method: "POST",
2405
2463
  headers: {
2406
- 'X-API-KEY': apiKey,
2407
- 'Content-Type': 'application/json',
2464
+ "X-API-KEY": apiKey,
2465
+ "Content-Type": "application/json",
2408
2466
  },
2409
2467
  body: JSON.stringify(ingestPayload),
2410
2468
  });
@@ -2422,7 +2480,7 @@ async function uploadTestRun(options) {
2422
2480
  if (!response.ok) {
2423
2481
  const parsedError = await parseHttpError(response);
2424
2482
  if (response.status === 409 && isReportAlreadyExistsConflict(parsedError)) {
2425
- console.warn('Report already exists (workflow may have been re-run)');
2483
+ console.warn("Report already exists (workflow may have been re-run)");
2426
2484
  return {
2427
2485
  success: true,
2428
2486
  reportId,
@@ -2530,8 +2588,8 @@ async function uploadArtifacts(options) {
2530
2588
  async function uploadSingleArtifact(options) {
2531
2589
  const { testResultId, attachment, reportId, apiKey, apiUrl } = options;
2532
2590
  // Dynamically import fs for Node.js environments
2533
- const fs = await Promise.resolve(/* import() */).then(__nccwpck_require__.t.bind(__nccwpck_require__, 943, 23));
2534
- const path = await Promise.resolve(/* import() */).then(__nccwpck_require__.t.bind(__nccwpck_require__, 928, 23));
2591
+ const fs = await Promise.resolve(/* import() */).then(__nccwpck_require__.t.bind(__nccwpck_require__, 1943, 23));
2592
+ const path = await Promise.resolve(/* import() */).then(__nccwpck_require__.t.bind(__nccwpck_require__, 6928, 23));
2535
2593
  const filePath = path.resolve(attachment.path);
2536
2594
  // Check if file exists
2537
2595
  try {
@@ -2545,7 +2603,7 @@ async function uploadSingleArtifact(options) {
2545
2603
  let fileBuffer;
2546
2604
  let sizeBytes;
2547
2605
  const fileName = path.basename(filePath);
2548
- const contentType = attachment.contentType || 'application/octet-stream';
2606
+ const contentType = attachment.contentType || "application/octet-stream";
2549
2607
  try {
2550
2608
  fileBuffer = await fs.readFile(filePath);
2551
2609
  sizeBytes = fileBuffer.byteLength;
@@ -2585,7 +2643,7 @@ async function uploadSingleArtifact(options) {
2585
2643
  }
2586
2644
  class LegacyUploadRequiredError extends Error {
2587
2645
  constructor() {
2588
- super('Legacy upload endpoint required');
2646
+ super("Legacy upload endpoint required");
2589
2647
  }
2590
2648
  }
2591
2649
  async function uploadWithPresignedUrl(options) {
@@ -2598,10 +2656,10 @@ async function uploadWithPresignedUrl(options) {
2598
2656
  sizeBytes,
2599
2657
  };
2600
2658
  const initResponse = await fetch(`${apiUrl}/api/v1/artifacts/${reportId}/upload-url`, {
2601
- method: 'POST',
2659
+ method: "POST",
2602
2660
  headers: {
2603
- 'X-API-KEY': apiKey,
2604
- 'Content-Type': 'application/json',
2661
+ "X-API-KEY": apiKey,
2662
+ "Content-Type": "application/json",
2605
2663
  },
2606
2664
  body: JSON.stringify(initPayload),
2607
2665
  });
@@ -2613,12 +2671,14 @@ async function uploadWithPresignedUrl(options) {
2613
2671
  throw new Error(`Failed to create direct upload URL (HTTP ${initResponse.status}): ${errorText}`);
2614
2672
  }
2615
2673
  const uploadInitResult = (await initResponse.json());
2616
- const uploadHeaders = { ...(uploadInitResult.requiredHeaders ?? {}) };
2617
- if (!hasHeaderIgnoreCase(uploadHeaders, 'Content-Type')) {
2618
- uploadHeaders['Content-Type'] = contentType;
2674
+ const uploadHeaders = {
2675
+ ...(uploadInitResult.requiredHeaders ?? {}),
2676
+ };
2677
+ if (!hasHeaderIgnoreCase(uploadHeaders, "Content-Type")) {
2678
+ uploadHeaders["Content-Type"] = contentType;
2619
2679
  }
2620
2680
  const directUploadResponse = await fetch(uploadInitResult.uploadUrl, {
2621
- method: 'PUT',
2681
+ method: "PUT",
2622
2682
  headers: uploadHeaders,
2623
2683
  body: fileBuffer,
2624
2684
  });
@@ -2635,10 +2695,10 @@ async function uploadWithPresignedUrl(options) {
2635
2695
  storageKey: uploadInitResult.storageKey,
2636
2696
  };
2637
2697
  const completeResponse = await fetch(`${apiUrl}/api/v1/artifacts/${reportId}/complete`, {
2638
- method: 'POST',
2698
+ method: "POST",
2639
2699
  headers: {
2640
- 'X-API-KEY': apiKey,
2641
- 'Content-Type': 'application/json',
2700
+ "X-API-KEY": apiKey,
2701
+ "Content-Type": "application/json",
2642
2702
  },
2643
2703
  body: JSON.stringify(completePayload),
2644
2704
  });
@@ -2649,16 +2709,16 @@ async function uploadWithPresignedUrl(options) {
2649
2709
  return true;
2650
2710
  }
2651
2711
  async function uploadWithLegacyEndpoint(options) {
2652
- const { testResultId, attachmentName, reportId, apiKey, apiUrl, fileName, contentType, fileBuffer } = options;
2712
+ const { testResultId, attachmentName, reportId, apiKey, apiUrl, fileName, contentType, fileBuffer, } = options;
2653
2713
  const blob = new Blob([new Uint8Array(fileBuffer)], { type: contentType });
2654
2714
  const formData = new FormData();
2655
- formData.append('testResultId', testResultId);
2656
- formData.append('ctrfAttachmentName', attachmentName);
2657
- formData.append('file', blob, fileName);
2715
+ formData.append("testResultId", testResultId);
2716
+ formData.append("ctrfAttachmentName", attachmentName);
2717
+ formData.append("file", blob, fileName);
2658
2718
  const response = await fetch(`${apiUrl}/api/v1/artifacts/${reportId}`, {
2659
- method: 'POST',
2719
+ method: "POST",
2660
2720
  headers: {
2661
- 'X-API-KEY': apiKey,
2721
+ "X-API-KEY": apiKey,
2662
2722
  },
2663
2723
  body: formData,
2664
2724
  });
@@ -2679,7 +2739,7 @@ function hasHeaderIgnoreCase(headers, headerName) {
2679
2739
 
2680
2740
  /***/ }),
2681
2741
 
2682
- /***/ 328:
2742
+ /***/ 4328:
2683
2743
  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
2684
2744
 
2685
2745
  "use strict";
@@ -2719,14 +2779,14 @@ var __importStar = (this && this.__importStar) || (function () {
2719
2779
  })();
2720
2780
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2721
2781
  const glob_1 = __nccwpck_require__(447);
2722
- const path = __importStar(__nccwpck_require__(928));
2723
- const fs = __importStar(__nccwpck_require__(943));
2782
+ const path = __importStar(__nccwpck_require__(6928));
2783
+ const fs = __importStar(__nccwpck_require__(1943));
2724
2784
  const os = __importStar(__nccwpck_require__(857));
2725
- const child_process_1 = __nccwpck_require__(317);
2726
- const trx_parser_1 = __nccwpck_require__(914);
2727
- const uploader_1 = __nccwpck_require__(10);
2785
+ const child_process_1 = __nccwpck_require__(5317);
2786
+ const trx_parser_1 = __nccwpck_require__(8914);
2787
+ const uploader_1 = __nccwpck_require__(8010);
2728
2788
  function printUsage() {
2729
- console.log(`
2789
+ console.log(String.raw `
2730
2790
  @testream/dotnet-reporter - Run .NET tests and upload results to Testream
2731
2791
 
2732
2792
  Usage:
@@ -2771,7 +2831,7 @@ Examples:
2771
2831
  npx @testream/dotnet-reporter -k your-api-key --project ./MyTests
2772
2832
 
2773
2833
  # With environment metadata
2774
- npx @testream/dotnet-reporter -k your-api-key \\
2834
+ npx @testream/dotnet-reporter -k your-api-key \
2775
2835
  --test-environment staging --app-name MyApp --app-version 1.0.0
2776
2836
 
2777
2837
  # Pass additional arguments to dotnet test
@@ -2908,15 +2968,15 @@ async function runDotnetTest(projectPath, additionalArgs = []) {
2908
2968
  const logger = console;
2909
2969
  // Create temp directory for TRX output
2910
2970
  const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'dotnet-reporter-'));
2911
- const trxFileName = `results-${Date.now()}.trx`;
2912
2971
  // Build dotnet test command
2913
2972
  const args = ['test'];
2914
2973
  if (projectPath) {
2915
2974
  args.push(projectPath);
2916
2975
  }
2917
- // Add TRX logger
2918
- args.push('--logger', `trx;LogFileName=${trxFileName}`);
2919
- args.push('--results-directory', tempDir);
2976
+ // Add TRX logger without a fixed filename so each test project gets a unique
2977
+ // TRX file. Specifying LogFileName causes all projects in a solution to write
2978
+ // to the same file, with later projects overwriting earlier ones.
2979
+ args.push('--logger', 'trx', '--results-directory', tempDir);
2920
2980
  // Add any additional user-provided args
2921
2981
  args.push(...additionalArgs);
2922
2982
  logger.info('Running dotnet test...');
@@ -3042,7 +3102,7 @@ main();
3042
3102
 
3043
3103
  /***/ }),
3044
3104
 
3045
- /***/ 914:
3105
+ /***/ 8914:
3046
3106
  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
3047
3107
 
3048
3108
  "use strict";
@@ -3083,16 +3143,13 @@ var __importStar = (this && this.__importStar) || (function () {
3083
3143
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3084
3144
  exports.parseTrxFile = parseTrxFile;
3085
3145
  exports.parseTrxFiles = parseTrxFiles;
3086
- const fs = __importStar(__nccwpck_require__(943));
3087
- const fast_xml_parser_1 = __nccwpck_require__(537);
3146
+ const fs = __importStar(__nccwpck_require__(1943));
3147
+ const fast_xml_parser_1 = __nccwpck_require__(1537);
3148
+ const crypto_1 = __nccwpck_require__(6982);
3088
3149
  const TOOL_NAME = 'dotnet';
3089
- // Simple UUID v4 generator (avoid extra dependency)
3150
+ // Use crypto.randomUUID() for secure UUID generation (available in Node.js 15.7.0+)
3090
3151
  function generateUUID() {
3091
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
3092
- const r = (Math.random() * 16) | 0;
3093
- const v = c === 'x' ? r : (r & 0x3) | 0x8;
3094
- return v.toString(16);
3095
- });
3152
+ return (0, crypto_1.randomUUID)();
3096
3153
  }
3097
3154
  /**
3098
3155
  * Parse TRX duration string (HH:MM:SS.mmmmmmm) to milliseconds
@@ -3100,13 +3157,22 @@ function generateUUID() {
3100
3157
  function parseDuration(duration) {
3101
3158
  if (!duration)
3102
3159
  return 0;
3103
- const match = duration.match(/^(\d+):(\d+):(\d+)\.?(\d+)?$/);
3104
- if (!match)
3160
+ // Use split() instead of regex to avoid ReDoS vulnerability
3161
+ const parts = duration.split(':');
3162
+ if (parts.length !== 3)
3163
+ return 0;
3164
+ const hours = parseInt(parts[0], 10);
3165
+ if (isNaN(hours))
3105
3166
  return 0;
3106
- const hours = parseInt(match[1], 10);
3107
- const minutes = parseInt(match[2], 10);
3108
- const seconds = parseInt(match[3], 10);
3109
- const fraction = match[4] ? parseFloat(`0.${match[4]}`) * 1000 : 0;
3167
+ const minutes = parseInt(parts[1], 10);
3168
+ if (isNaN(minutes))
3169
+ return 0;
3170
+ // Handle seconds and fractional part (may contain decimal point)
3171
+ const secondsParts = parts[2].split('.');
3172
+ const seconds = parseInt(secondsParts[0], 10);
3173
+ if (isNaN(seconds))
3174
+ return 0;
3175
+ const fraction = secondsParts[1] ? parseFloat(`0.${secondsParts[1]}`) * 1000 : 0;
3110
3176
  return hours * 3600000 + minutes * 60000 + seconds * 1000 + Math.round(fraction);
3111
3177
  }
3112
3178
  /**
@@ -3156,8 +3222,8 @@ function extractLineNumber(stackTrace) {
3156
3222
  function extractFilePath(stackTrace) {
3157
3223
  if (!stackTrace)
3158
3224
  return undefined;
3159
- // Match file paths ending in .cs
3160
- const match = stackTrace.match(/([A-Za-z]:\\[^\s:]+\.cs|\/[^\s:]+\.cs)/);
3225
+ // Match file paths ending in .cs with bounded length to prevent ReDoS
3226
+ const match = stackTrace.match(/([A-Za-z]:\\[^\s:]{1,256}\.cs|\/[^\s:]{1,256}\.cs)/);
3161
3227
  return match ? match[1] : undefined;
3162
3228
  }
3163
3229
  /**
@@ -3349,7 +3415,7 @@ async function parseTrxFiles(trxPaths) {
3349
3415
 
3350
3416
  /***/ }),
3351
3417
 
3352
- /***/ 10:
3418
+ /***/ 8010:
3353
3419
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
3354
3420
 
3355
3421
  "use strict";
@@ -3357,7 +3423,7 @@ async function parseTrxFiles(trxPaths) {
3357
3423
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3358
3424
  exports.detectGitContext = void 0;
3359
3425
  exports.uploadToApi = uploadToApi;
3360
- const shared_types_1 = __nccwpck_require__(322);
3426
+ const shared_types_1 = __nccwpck_require__(7322);
3361
3427
  /**
3362
3428
  * Upload CTRF report to Testream API
3363
3429
  */
@@ -3384,7 +3450,7 @@ exports.detectGitContext = shared_types_1.detectCIContext;
3384
3450
 
3385
3451
  /***/ }),
3386
3452
 
3387
- /***/ 317:
3453
+ /***/ 5317:
3388
3454
  /***/ ((module) => {
3389
3455
 
3390
3456
  "use strict";
@@ -3392,7 +3458,15 @@ module.exports = require("child_process");
3392
3458
 
3393
3459
  /***/ }),
3394
3460
 
3395
- /***/ 896:
3461
+ /***/ 6982:
3462
+ /***/ ((module) => {
3463
+
3464
+ "use strict";
3465
+ module.exports = require("crypto");
3466
+
3467
+ /***/ }),
3468
+
3469
+ /***/ 9896:
3396
3470
  /***/ ((module) => {
3397
3471
 
3398
3472
  "use strict";
@@ -3400,7 +3474,7 @@ module.exports = require("fs");
3400
3474
 
3401
3475
  /***/ }),
3402
3476
 
3403
- /***/ 943:
3477
+ /***/ 1943:
3404
3478
  /***/ ((module) => {
3405
3479
 
3406
3480
  "use strict";
@@ -3408,7 +3482,7 @@ module.exports = require("fs/promises");
3408
3482
 
3409
3483
  /***/ }),
3410
3484
 
3411
- /***/ 474:
3485
+ /***/ 8474:
3412
3486
  /***/ ((module) => {
3413
3487
 
3414
3488
  "use strict";
@@ -3416,7 +3490,7 @@ module.exports = require("node:events");
3416
3490
 
3417
3491
  /***/ }),
3418
3492
 
3419
- /***/ 24:
3493
+ /***/ 3024:
3420
3494
  /***/ ((module) => {
3421
3495
 
3422
3496
  "use strict";
@@ -3424,7 +3498,7 @@ module.exports = require("node:fs");
3424
3498
 
3425
3499
  /***/ }),
3426
3500
 
3427
- /***/ 455:
3501
+ /***/ 1455:
3428
3502
  /***/ ((module) => {
3429
3503
 
3430
3504
  "use strict";
@@ -3432,7 +3506,7 @@ module.exports = require("node:fs/promises");
3432
3506
 
3433
3507
  /***/ }),
3434
3508
 
3435
- /***/ 760:
3509
+ /***/ 6760:
3436
3510
  /***/ ((module) => {
3437
3511
 
3438
3512
  "use strict";
@@ -3440,7 +3514,7 @@ module.exports = require("node:path");
3440
3514
 
3441
3515
  /***/ }),
3442
3516
 
3443
- /***/ 75:
3517
+ /***/ 7075:
3444
3518
  /***/ ((module) => {
3445
3519
 
3446
3520
  "use strict";
@@ -3448,7 +3522,7 @@ module.exports = require("node:stream");
3448
3522
 
3449
3523
  /***/ }),
3450
3524
 
3451
- /***/ 193:
3525
+ /***/ 6193:
3452
3526
  /***/ ((module) => {
3453
3527
 
3454
3528
  "use strict";
@@ -3456,7 +3530,7 @@ module.exports = require("node:string_decoder");
3456
3530
 
3457
3531
  /***/ }),
3458
3532
 
3459
- /***/ 136:
3533
+ /***/ 3136:
3460
3534
  /***/ ((module) => {
3461
3535
 
3462
3536
  "use strict";
@@ -3472,7 +3546,7 @@ module.exports = require("os");
3472
3546
 
3473
3547
  /***/ }),
3474
3548
 
3475
- /***/ 928:
3549
+ /***/ 6928:
3476
3550
  /***/ ((module) => {
3477
3551
 
3478
3552
  "use strict";
@@ -3480,7 +3554,7 @@ module.exports = require("path");
3480
3554
 
3481
3555
  /***/ }),
3482
3556
 
3483
- /***/ 80:
3557
+ /***/ 7080:
3484
3558
  /***/ ((__unused_webpack_module, exports) => {
3485
3559
 
3486
3560
  "use strict";
@@ -3546,14 +3620,14 @@ exports.range = range;
3546
3620
 
3547
3621
  /***/ }),
3548
3622
 
3549
- /***/ 339:
3623
+ /***/ 2339:
3550
3624
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
3551
3625
 
3552
3626
  "use strict";
3553
3627
 
3554
3628
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3555
3629
  exports.expand = expand;
3556
- const balanced_match_1 = __nccwpck_require__(80);
3630
+ const balanced_match_1 = __nccwpck_require__(7080);
3557
3631
  const escSlash = '\0SLASH' + Math.random() + '\0';
3558
3632
  const escOpen = '\0OPEN' + Math.random() + '\0';
3559
3633
  const escClose = '\0CLOSE' + Math.random() + '\0';
@@ -3749,18 +3823,18 @@ function expand_(str, isTop) {
3749
3823
 
3750
3824
  /***/ }),
3751
3825
 
3752
- /***/ 809:
3826
+ /***/ 8809:
3753
3827
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
3754
3828
 
3755
3829
  "use strict";
3756
3830
 
3757
3831
  Object.defineProperty(exports, "__esModule", ({ value: true }));
3758
3832
  exports.Glob = void 0;
3759
- const minimatch_1 = __nccwpck_require__(647);
3760
- const node_url_1 = __nccwpck_require__(136);
3761
- const path_scurry_1 = __nccwpck_require__(125);
3762
- const pattern_js_1 = __nccwpck_require__(841);
3763
- const walker_js_1 = __nccwpck_require__(89);
3833
+ const minimatch_1 = __nccwpck_require__(6647);
3834
+ const node_url_1 = __nccwpck_require__(3136);
3835
+ const path_scurry_1 = __nccwpck_require__(5125);
3836
+ const pattern_js_1 = __nccwpck_require__(2841);
3837
+ const walker_js_1 = __nccwpck_require__(6089);
3764
3838
  // if no process global, just call it linux.
3765
3839
  // so we default to case-sensitive, / separators
3766
3840
  const defaultPlatform = (typeof process === 'object' &&
@@ -4003,14 +4077,14 @@ exports.Glob = Glob;
4003
4077
 
4004
4078
  /***/ }),
4005
4079
 
4006
- /***/ 233:
4080
+ /***/ 6233:
4007
4081
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
4008
4082
 
4009
4083
  "use strict";
4010
4084
 
4011
4085
  Object.defineProperty(exports, "__esModule", ({ value: true }));
4012
4086
  exports.hasMagic = void 0;
4013
- const minimatch_1 = __nccwpck_require__(647);
4087
+ const minimatch_1 = __nccwpck_require__(6647);
4014
4088
  /**
4015
4089
  * Return true if the patterns provided contain any magic glob characters,
4016
4090
  * given the options provided.
@@ -4037,7 +4111,7 @@ exports.hasMagic = hasMagic;
4037
4111
 
4038
4112
  /***/ }),
4039
4113
 
4040
- /***/ 449:
4114
+ /***/ 6449:
4041
4115
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
4042
4116
 
4043
4117
  "use strict";
@@ -4048,8 +4122,8 @@ exports.hasMagic = hasMagic;
4048
4122
  // Ignores are always parsed in dot:true mode
4049
4123
  Object.defineProperty(exports, "__esModule", ({ value: true }));
4050
4124
  exports.Ignore = void 0;
4051
- const minimatch_1 = __nccwpck_require__(647);
4052
- const pattern_js_1 = __nccwpck_require__(841);
4125
+ const minimatch_1 = __nccwpck_require__(6647);
4126
+ const pattern_js_1 = __nccwpck_require__(2841);
4053
4127
  const defaultPlatform = (typeof process === 'object' &&
4054
4128
  process &&
4055
4129
  typeof process.platform === 'string') ?
@@ -4175,17 +4249,17 @@ exports.globStream = globStream;
4175
4249
  exports.globSync = globSync;
4176
4250
  exports.globIterateSync = globIterateSync;
4177
4251
  exports.globIterate = globIterate;
4178
- const minimatch_1 = __nccwpck_require__(647);
4179
- const glob_js_1 = __nccwpck_require__(809);
4180
- const has_magic_js_1 = __nccwpck_require__(233);
4181
- var minimatch_2 = __nccwpck_require__(647);
4252
+ const minimatch_1 = __nccwpck_require__(6647);
4253
+ const glob_js_1 = __nccwpck_require__(8809);
4254
+ const has_magic_js_1 = __nccwpck_require__(6233);
4255
+ var minimatch_2 = __nccwpck_require__(6647);
4182
4256
  Object.defineProperty(exports, "escape", ({ enumerable: true, get: function () { return minimatch_2.escape; } }));
4183
4257
  Object.defineProperty(exports, "unescape", ({ enumerable: true, get: function () { return minimatch_2.unescape; } }));
4184
- var glob_js_2 = __nccwpck_require__(809);
4258
+ var glob_js_2 = __nccwpck_require__(8809);
4185
4259
  Object.defineProperty(exports, "Glob", ({ enumerable: true, get: function () { return glob_js_2.Glob; } }));
4186
- var has_magic_js_2 = __nccwpck_require__(233);
4260
+ var has_magic_js_2 = __nccwpck_require__(6233);
4187
4261
  Object.defineProperty(exports, "hasMagic", ({ enumerable: true, get: function () { return has_magic_js_2.hasMagic; } }));
4188
- var ignore_js_1 = __nccwpck_require__(449);
4262
+ var ignore_js_1 = __nccwpck_require__(6449);
4189
4263
  Object.defineProperty(exports, "Ignore", ({ enumerable: true, get: function () { return ignore_js_1.Ignore; } }));
4190
4264
  function globStreamSync(pattern, options = {}) {
4191
4265
  return new glob_js_1.Glob(pattern, options).streamSync();
@@ -4238,7 +4312,7 @@ exports.glob.glob = exports.glob;
4238
4312
 
4239
4313
  /***/ }),
4240
4314
 
4241
- /***/ 841:
4315
+ /***/ 2841:
4242
4316
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
4243
4317
 
4244
4318
  "use strict";
@@ -4246,7 +4320,7 @@ exports.glob.glob = exports.glob;
4246
4320
  // this is just a very light wrapper around 2 arrays with an offset index
4247
4321
  Object.defineProperty(exports, "__esModule", ({ value: true }));
4248
4322
  exports.Pattern = void 0;
4249
- const minimatch_1 = __nccwpck_require__(647);
4323
+ const minimatch_1 = __nccwpck_require__(6647);
4250
4324
  const isPatternList = (pl) => pl.length >= 1;
4251
4325
  const isGlobList = (gl) => gl.length >= 1;
4252
4326
  /**
@@ -4464,7 +4538,7 @@ exports.Pattern = Pattern;
4464
4538
 
4465
4539
  /***/ }),
4466
4540
 
4467
- /***/ 999:
4541
+ /***/ 7999:
4468
4542
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
4469
4543
 
4470
4544
  "use strict";
@@ -4472,7 +4546,7 @@ exports.Pattern = Pattern;
4472
4546
  // synchronous utility for filtering entries and calculating subwalks
4473
4547
  Object.defineProperty(exports, "__esModule", ({ value: true }));
4474
4548
  exports.Processor = exports.SubWalks = exports.MatchRecord = exports.HasWalkedCache = void 0;
4475
- const minimatch_1 = __nccwpck_require__(647);
4549
+ const minimatch_1 = __nccwpck_require__(6647);
4476
4550
  /**
4477
4551
  * A cache of which patterns have been processed for a given Path
4478
4552
  */
@@ -4772,7 +4846,7 @@ exports.Processor = Processor;
4772
4846
 
4773
4847
  /***/ }),
4774
4848
 
4775
- /***/ 89:
4849
+ /***/ 6089:
4776
4850
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
4777
4851
 
4778
4852
  "use strict";
@@ -4785,9 +4859,9 @@ exports.GlobStream = exports.GlobWalker = exports.GlobUtil = void 0;
4785
4859
  *
4786
4860
  * @module
4787
4861
  */
4788
- const minipass_1 = __nccwpck_require__(31);
4789
- const ignore_js_1 = __nccwpck_require__(449);
4790
- const processor_js_1 = __nccwpck_require__(999);
4862
+ const minipass_1 = __nccwpck_require__(1031);
4863
+ const ignore_js_1 = __nccwpck_require__(6449);
4864
+ const processor_js_1 = __nccwpck_require__(7999);
4791
4865
  const makeIgnore = (ignore, opts) => typeof ignore === 'string' ? new ignore_js_1.Ignore([ignore], opts)
4792
4866
  : Array.isArray(ignore) ? new ignore_js_1.Ignore(ignore, opts)
4793
4867
  : ignore;
@@ -5166,7 +5240,7 @@ exports.GlobStream = GlobStream;
5166
5240
 
5167
5241
  /***/ }),
5168
5242
 
5169
- /***/ 481:
5243
+ /***/ 3481:
5170
5244
  /***/ ((__unused_webpack_module, exports) => {
5171
5245
 
5172
5246
  "use strict";
@@ -6779,7 +6853,7 @@ exports.assertValidPattern = assertValidPattern;
6779
6853
 
6780
6854
  /***/ }),
6781
6855
 
6782
- /***/ 743:
6856
+ /***/ 8743:
6783
6857
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
6784
6858
 
6785
6859
  "use strict";
@@ -6787,8 +6861,8 @@ exports.assertValidPattern = assertValidPattern;
6787
6861
  // parse a single path portion
6788
6862
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6789
6863
  exports.AST = void 0;
6790
- const brace_expressions_js_1 = __nccwpck_require__(694);
6791
- const unescape_js_1 = __nccwpck_require__(967);
6864
+ const brace_expressions_js_1 = __nccwpck_require__(6694);
6865
+ const unescape_js_1 = __nccwpck_require__(7967);
6792
6866
  const types = new Set(['!', '?', '+', '*', '@']);
6793
6867
  const isExtglobType = (c) => types.has(c);
6794
6868
  // Patterns that get prepended to bind to the start of either the
@@ -7377,7 +7451,7 @@ exports.AST = AST;
7377
7451
 
7378
7452
  /***/ }),
7379
7453
 
7380
- /***/ 694:
7454
+ /***/ 6694:
7381
7455
  /***/ ((__unused_webpack_module, exports) => {
7382
7456
 
7383
7457
  "use strict";
@@ -7536,7 +7610,7 @@ exports.parseClass = parseClass;
7536
7610
 
7537
7611
  /***/ }),
7538
7612
 
7539
- /***/ 516:
7613
+ /***/ 7516:
7540
7614
  /***/ ((__unused_webpack_module, exports) => {
7541
7615
 
7542
7616
  "use strict";
@@ -7573,18 +7647,18 @@ exports.escape = escape;
7573
7647
 
7574
7648
  /***/ }),
7575
7649
 
7576
- /***/ 647:
7650
+ /***/ 6647:
7577
7651
  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
7578
7652
 
7579
7653
  "use strict";
7580
7654
 
7581
7655
  Object.defineProperty(exports, "__esModule", ({ value: true }));
7582
7656
  exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;
7583
- const brace_expansion_1 = __nccwpck_require__(339);
7657
+ const brace_expansion_1 = __nccwpck_require__(2339);
7584
7658
  const assert_valid_pattern_js_1 = __nccwpck_require__(557);
7585
- const ast_js_1 = __nccwpck_require__(743);
7586
- const escape_js_1 = __nccwpck_require__(516);
7587
- const unescape_js_1 = __nccwpck_require__(967);
7659
+ const ast_js_1 = __nccwpck_require__(8743);
7660
+ const escape_js_1 = __nccwpck_require__(7516);
7661
+ const unescape_js_1 = __nccwpck_require__(7967);
7588
7662
  const minimatch = (p, pattern, options = {}) => {
7589
7663
  (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
7590
7664
  // shortcut: comments match nothing.
@@ -8594,11 +8668,11 @@ class Minimatch {
8594
8668
  }
8595
8669
  exports.Minimatch = Minimatch;
8596
8670
  /* c8 ignore start */
8597
- var ast_js_2 = __nccwpck_require__(743);
8671
+ var ast_js_2 = __nccwpck_require__(8743);
8598
8672
  Object.defineProperty(exports, "AST", ({ enumerable: true, get: function () { return ast_js_2.AST; } }));
8599
- var escape_js_2 = __nccwpck_require__(516);
8673
+ var escape_js_2 = __nccwpck_require__(7516);
8600
8674
  Object.defineProperty(exports, "escape", ({ enumerable: true, get: function () { return escape_js_2.escape; } }));
8601
- var unescape_js_2 = __nccwpck_require__(967);
8675
+ var unescape_js_2 = __nccwpck_require__(7967);
8602
8676
  Object.defineProperty(exports, "unescape", ({ enumerable: true, get: function () { return unescape_js_2.unescape; } }));
8603
8677
  /* c8 ignore stop */
8604
8678
  exports.minimatch.AST = ast_js_1.AST;
@@ -8609,7 +8683,7 @@ exports.minimatch.unescape = unescape_js_1.unescape;
8609
8683
 
8610
8684
  /***/ }),
8611
8685
 
8612
- /***/ 967:
8686
+ /***/ 7967:
8613
8687
  /***/ ((__unused_webpack_module, exports) => {
8614
8688
 
8615
8689
  "use strict";
@@ -8654,7 +8728,7 @@ exports.unescape = unescape;
8654
8728
 
8655
8729
  /***/ }),
8656
8730
 
8657
- /***/ 31:
8731
+ /***/ 1031:
8658
8732
  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
8659
8733
 
8660
8734
  "use strict";
@@ -8670,9 +8744,9 @@ const proc = typeof process === 'object' && process
8670
8744
  stdout: null,
8671
8745
  stderr: null,
8672
8746
  };
8673
- const node_events_1 = __nccwpck_require__(474);
8674
- const node_stream_1 = __importDefault(__nccwpck_require__(75));
8675
- const node_string_decoder_1 = __nccwpck_require__(193);
8747
+ const node_events_1 = __nccwpck_require__(8474);
8748
+ const node_stream_1 = __importDefault(__nccwpck_require__(7075));
8749
+ const node_string_decoder_1 = __nccwpck_require__(6193);
8676
8750
  /**
8677
8751
  * Return true if the argument is a Minipass stream, Node stream, or something
8678
8752
  * else that Minipass can interact with.
@@ -9689,7 +9763,7 @@ exports.Minipass = Minipass;
9689
9763
 
9690
9764
  /***/ }),
9691
9765
 
9692
- /***/ 125:
9766
+ /***/ 5125:
9693
9767
  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
9694
9768
 
9695
9769
  "use strict";
@@ -9719,16 +9793,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
9719
9793
  };
9720
9794
  Object.defineProperty(exports, "__esModule", ({ value: true }));
9721
9795
  exports.PathScurry = exports.Path = exports.PathScurryDarwin = exports.PathScurryPosix = exports.PathScurryWin32 = exports.PathScurryBase = exports.PathPosix = exports.PathWin32 = exports.PathBase = exports.ChildrenCache = exports.ResolveCache = void 0;
9722
- const lru_cache_1 = __nccwpck_require__(481);
9723
- const node_path_1 = __nccwpck_require__(760);
9724
- const node_url_1 = __nccwpck_require__(136);
9725
- const fs_1 = __nccwpck_require__(896);
9726
- const actualFS = __importStar(__nccwpck_require__(24));
9796
+ const lru_cache_1 = __nccwpck_require__(3481);
9797
+ const node_path_1 = __nccwpck_require__(6760);
9798
+ const node_url_1 = __nccwpck_require__(3136);
9799
+ const fs_1 = __nccwpck_require__(9896);
9800
+ const actualFS = __importStar(__nccwpck_require__(3024));
9727
9801
  const realpathSync = fs_1.realpathSync.native;
9728
9802
  // TODO: test perf of fs/promises realpath vs realpathCB,
9729
9803
  // since the promises one uses realpath.native
9730
- const promises_1 = __nccwpck_require__(455);
9731
- const minipass_1 = __nccwpck_require__(31);
9804
+ const promises_1 = __nccwpck_require__(1455);
9805
+ const minipass_1 = __nccwpck_require__(1031);
9732
9806
  const defaultFS = {
9733
9807
  lstatSync: fs_1.lstatSync,
9734
9808
  readdir: fs_1.readdir,
@@ -11814,7 +11888,7 @@ exports.PathScurry = process.platform === 'win32' ? PathScurryWin32
11814
11888
  /******/ // startup
11815
11889
  /******/ // Load entry module and return exports
11816
11890
  /******/ // This entry module is referenced by other modules so it can't be inlined
11817
- /******/ var __webpack_exports__ = __nccwpck_require__(328);
11891
+ /******/ var __webpack_exports__ = __nccwpck_require__(4328);
11818
11892
  /******/ module.exports = __webpack_exports__;
11819
11893
  /******/
11820
11894
  /******/ })()