@checkly/playwright-reporter 1.2.0 → 1.3.0

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
@@ -1,2488 +1 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/index.ts
31
- var index_exports = {};
32
- __export(index_exports, {
33
- MissingCredentialsError: () => MissingCredentialsError,
34
- createChecklyReporter: () => createChecklyReporter,
35
- default: () => index_default
36
- });
37
- module.exports = __toCommonJS(index_exports);
38
-
39
- // src/extensions/checkly-upload.ts
40
- var fs5 = __toESM(require("fs"));
41
- var path4 = __toESM(require("path"));
42
-
43
- // ../utils/src/ansi.ts
44
- var ansiRegex = new RegExp(
45
- [
46
- "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
47
- "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
48
- ].join("|"),
49
- "g"
50
- );
51
-
52
- // ../utils/src/asset-collector.ts
53
- var fs = __toESM(require("fs"), 1);
54
- var path = __toESM(require("path"), 1);
55
- var AssetCollector = class {
56
- constructor(testResultsDir) {
57
- this.testResultsDir = testResultsDir;
58
- }
59
- /**
60
- * Collects assets from test results directory
61
- * Uses a two-phase approach to support both normal test runs and blob merge scenarios:
62
- * 1. First, extract attachment paths from the JSON report (works for merge scenarios)
63
- * 2. Fall back to directory scanning for any additional assets not in the report
64
- *
65
- * @param report Optional Playwright JSONReport with attachment paths
66
- * @returns Array of Asset objects with source and archive paths
67
- */
68
- async collectAssets(report) {
69
- const assets = [];
70
- const addedPaths = /* @__PURE__ */ new Set();
71
- if (report) {
72
- this.collectAssetsFromReport(report, assets, addedPaths);
73
- }
74
- if (fs.existsSync(this.testResultsDir)) {
75
- await this.collectAssetsRecursive(this.testResultsDir, assets, addedPaths);
76
- }
77
- return assets;
78
- }
79
- /**
80
- * Extracts assets from JSON report attachment paths
81
- * Essential for blob merge scenarios where attachments are extracted to temporary locations
82
- */
83
- collectAssetsFromReport(report, assets, addedPaths) {
84
- const processResults = (results) => {
85
- for (const result of results) {
86
- if (result.attachments && Array.isArray(result.attachments)) {
87
- for (const attachment of result.attachments) {
88
- if (attachment.path && typeof attachment.path === "string") {
89
- const sourcePath = attachment.path;
90
- if (addedPaths.has(sourcePath)) continue;
91
- if (!fs.existsSync(sourcePath)) {
92
- continue;
93
- }
94
- const archivePath = this.determineArchivePath(sourcePath);
95
- const asset = this.createAsset(sourcePath, archivePath);
96
- assets.push(asset);
97
- addedPaths.add(sourcePath);
98
- }
99
- }
100
- }
101
- }
102
- };
103
- const processSuite = (suite) => {
104
- if (suite.specs) {
105
- for (const spec of suite.specs) {
106
- if (spec.tests) {
107
- for (const test of spec.tests) {
108
- if (test.results) {
109
- processResults(test.results);
110
- }
111
- }
112
- }
113
- }
114
- }
115
- if (suite.suites) {
116
- for (const nestedSuite of suite.suites) {
117
- processSuite(nestedSuite);
118
- }
119
- }
120
- };
121
- if (report.suites) {
122
- for (const suite of report.suites) {
123
- processSuite(suite);
124
- }
125
- }
126
- }
127
- /**
128
- * Determines the archive path for an asset based on its source path
129
- * Handles both test-results paths and blob merge extraction paths
130
- */
131
- determineArchivePath(sourcePath) {
132
- const normalizedPath = sourcePath.replace(/\\/g, "/");
133
- const testResultsIndex = normalizedPath.indexOf("test-results/");
134
- if (testResultsIndex !== -1) {
135
- return normalizedPath.substring(testResultsIndex);
136
- }
137
- const blobResourcesMatch = normalizedPath.match(/.*?[\w-]*blob-report[\w-]*\/resources\/(.+)$/);
138
- if (blobResourcesMatch) {
139
- return `test-results/resources/${blobResourcesMatch[1]}`;
140
- }
141
- const resourcesIndex = normalizedPath.indexOf("/resources/");
142
- if (resourcesIndex !== -1) {
143
- const filename = normalizedPath.split("/").pop() || "";
144
- return `test-results/resources/${filename}`;
145
- }
146
- const parts = normalizedPath.split("/");
147
- if (parts.length >= 2) {
148
- return `test-results/${parts.slice(-2).join("/")}`;
149
- }
150
- return `test-results/${path.basename(sourcePath)}`;
151
- }
152
- /**
153
- * Recursively traverses directories to collect assets
154
- */
155
- async collectAssetsRecursive(currentDir, assets, addedPaths) {
156
- let entries;
157
- try {
158
- entries = fs.readdirSync(currentDir, { withFileTypes: true });
159
- } catch {
160
- return;
161
- }
162
- const baseDirName = path.basename(path.resolve(this.testResultsDir));
163
- for (const entry of entries) {
164
- const fullPath = path.join(currentDir, entry.name);
165
- const relativeFromBase = path.relative(this.testResultsDir, fullPath);
166
- const archivePath = path.join(baseDirName, relativeFromBase);
167
- if (this.shouldSkipFile(entry.name)) {
168
- continue;
169
- }
170
- if (entry.isDirectory()) {
171
- await this.collectAssetsRecursive(fullPath, assets, addedPaths);
172
- } else if (entry.isFile()) {
173
- if (!addedPaths.has(fullPath)) {
174
- const asset = this.createAsset(fullPath, archivePath);
175
- assets.push(asset);
176
- addedPaths.add(fullPath);
177
- }
178
- }
179
- }
180
- }
181
- /**
182
- * Determines if a file should be skipped
183
- */
184
- shouldSkipFile(filename) {
185
- const skipPatterns = [
186
- /^\./,
187
- // Hidden files (.DS_Store, .gitkeep, etc.)
188
- /\.tmp$/i,
189
- // Temporary files
190
- /~$/,
191
- // Backup files
192
- /\.swp$/i,
193
- // Vim swap files
194
- /\.lock$/i,
195
- // Lock files
196
- /^playwright-test-report\.json$/i
197
- // Skip the JSON report itself
198
- ];
199
- return skipPatterns.some((pattern) => pattern.test(filename));
200
- }
201
- /**
202
- * Creates an Asset object from file path
203
- */
204
- createAsset(sourcePath, archivePath) {
205
- const ext = path.extname(sourcePath).toLowerCase();
206
- const { type, contentType } = this.determineAssetType(ext);
207
- const normalizedArchivePath = archivePath.split(path.sep).join("/");
208
- return {
209
- sourcePath,
210
- archivePath: normalizedArchivePath,
211
- type,
212
- contentType
213
- };
214
- }
215
- /**
216
- * Determines asset type and content type from file extension
217
- */
218
- determineAssetType(ext) {
219
- if ([".png", ".jpg", ".jpeg", ".gif", ".bmp", ".svg"].includes(ext)) {
220
- return {
221
- type: "screenshot",
222
- contentType: this.getImageContentType(ext)
223
- };
224
- }
225
- if ([".webm", ".mp4", ".avi", ".mov"].includes(ext)) {
226
- return {
227
- type: "video",
228
- contentType: this.getVideoContentType(ext)
229
- };
230
- }
231
- if (ext === ".zip") {
232
- return {
233
- type: "trace",
234
- contentType: "application/zip"
235
- };
236
- }
237
- if (ext === ".html" || ext === ".htm") {
238
- return {
239
- type: "attachment",
240
- contentType: "text/html"
241
- };
242
- }
243
- if (ext === ".json") {
244
- return {
245
- type: "attachment",
246
- contentType: "application/json"
247
- };
248
- }
249
- if (ext === ".txt" || ext === ".log") {
250
- return {
251
- type: "attachment",
252
- contentType: "text/plain"
253
- };
254
- }
255
- return {
256
- type: "other",
257
- contentType: "application/octet-stream"
258
- };
259
- }
260
- /**
261
- * Gets content type for image files
262
- */
263
- getImageContentType(ext) {
264
- const contentTypes = {
265
- ".png": "image/png",
266
- ".jpg": "image/jpeg",
267
- ".jpeg": "image/jpeg",
268
- ".gif": "image/gif",
269
- ".bmp": "image/bmp",
270
- ".svg": "image/svg+xml"
271
- };
272
- return contentTypes[ext] || "image/png";
273
- }
274
- /**
275
- * Gets content type for video files
276
- */
277
- getVideoContentType(ext) {
278
- const contentTypes = {
279
- ".webm": "video/webm",
280
- ".mp4": "video/mp4",
281
- ".avi": "video/x-msvideo",
282
- ".mov": "video/quicktime"
283
- };
284
- return contentTypes[ext] || "video/webm";
285
- }
286
- };
287
-
288
- // ../utils/src/ci-detector.ts
289
- function detectCI() {
290
- if (process.env.GITHUB_ACTIONS === "true") {
291
- return { environment: "ci", ciProvider: "github-actions", repositoryId: process.env.GITHUB_REPOSITORY };
292
- }
293
- if (process.env.GITLAB_CI === "true") {
294
- return { environment: "ci", ciProvider: "gitlab-ci", repositoryId: process.env.CI_PROJECT_PATH };
295
- }
296
- if (process.env.JENKINS_URL) {
297
- return { environment: "ci", ciProvider: "jenkins", repositoryId: process.env.JOB_NAME };
298
- }
299
- if (process.env.CIRCLECI === "true") {
300
- return { environment: "ci", ciProvider: "circleci", repositoryId: process.env.CIRCLE_PROJECT_REPONAME };
301
- }
302
- if (process.env.TRAVIS === "true") {
303
- return { environment: "ci", ciProvider: "travis-ci", repositoryId: process.env.TRAVIS_REPO_SLUG };
304
- }
305
- if (process.env.TF_BUILD === "True") {
306
- return { environment: "ci", ciProvider: "azure-devops", repositoryId: process.env.BUILD_REPOSITORY_NAME };
307
- }
308
- if (process.env.BITBUCKET_PIPELINE_UUID) {
309
- return { environment: "ci", ciProvider: "bitbucket-pipelines", repositoryId: process.env.BITBUCKET_REPO_SLUG };
310
- }
311
- if (process.env.CI === "true" || process.env.CI === "1") {
312
- return { environment: "ci", ciProvider: "unknown-ci" };
313
- }
314
- return { environment: "local", ciProvider: "local" };
315
- }
316
-
317
- // ../utils/src/console-adapter.ts
318
- var import_node_crypto = require("crypto");
319
- function normalizeType(messageType) {
320
- switch (messageType.toLowerCase()) {
321
- case "debug":
322
- return "debug";
323
- case "error":
324
- return "error";
325
- case "info":
326
- return "info";
327
- case "warning":
328
- case "warn":
329
- return "warning";
330
- default:
331
- return "log";
332
- }
333
- }
334
- function generateId(time, messageType, text, url) {
335
- return (0, import_node_crypto.createHash)("sha256").update(`${time}-${messageType}-${text}-${url}`).digest("hex").substring(0, 16);
336
- }
337
- function toConsoleMessage(event) {
338
- const url = event.location?.url || "";
339
- return {
340
- id: generateId(event.time, event.messageType, event.text, url),
341
- location: {
342
- url,
343
- columnNumber: event.location?.columnNumber || 0,
344
- lineNumber: event.location?.lineNumber || 0
345
- },
346
- text: event.text || "",
347
- timestamp: event.time,
348
- type: normalizeType(event.messageType)
349
- };
350
- }
351
-
352
- // ../utils/src/git-info.ts
353
- function getGitHubRepoInfo() {
354
- const repository = process.env.GITHUB_REPOSITORY;
355
- if (!repository) return void 0;
356
- return {
357
- repoUrl: `https://github.com/${repository}`,
358
- commitId: process.env.GITHUB_SHA,
359
- branchName: process.env.GITHUB_REF_NAME,
360
- commitOwner: process.env.GITHUB_ACTOR,
361
- commitMessage: process.env.GITHUB_EVENT_NAME
362
- };
363
- }
364
-
365
- // ../utils/src/machine-id.ts
366
- var import_node_crypto2 = require("crypto");
367
- var fs2 = __toESM(require("fs"), 1);
368
- var os = __toESM(require("os"), 1);
369
- var path2 = __toESM(require("path"), 1);
370
-
371
- // ../utils/src/network-adapter.ts
372
- var import_node_crypto3 = require("crypto");
373
- function generateId2(url, method, startedAt) {
374
- return (0, import_node_crypto3.createHash)("sha256").update(`${url}-${method}-${startedAt}`).digest("hex").substring(0, 16);
375
- }
376
- function extractDomain(url) {
377
- try {
378
- return new URL(url).hostname;
379
- } catch {
380
- return "";
381
- }
382
- }
383
- function headersArrayToRecord(headers) {
384
- const record = {};
385
- for (const { name, value } of headers) {
386
- record[name.toLowerCase()] = value;
387
- }
388
- return record;
389
- }
390
- function isSuccessStatus(status) {
391
- return status >= 200 && status < 400;
392
- }
393
- function determineResourceType(snapshot) {
394
- if (snapshot._resourceType) {
395
- return snapshot._resourceType;
396
- }
397
- if (snapshot._apiRequest) {
398
- return "fetch";
399
- }
400
- return "other";
401
- }
402
- function toNetworkRequest(event) {
403
- const { snapshot } = event;
404
- const startedAt = new Date(snapshot.startedDateTime).getTime();
405
- const time = Math.round(snapshot.time);
406
- const finishedAt = startedAt + time;
407
- const statusCode = snapshot.response.status;
408
- const url = snapshot.request.url;
409
- const method = snapshot.request.method;
410
- return {
411
- id: generateId2(url, method, startedAt),
412
- url,
413
- domain: extractDomain(url),
414
- method,
415
- resourceType: determineResourceType(snapshot),
416
- statusCode,
417
- statusText: snapshot.response.statusText || "",
418
- start: startedAt,
419
- startedAt,
420
- finishedAt,
421
- time,
422
- hasFinished: true,
423
- hasSucceeded: isSuccessStatus(statusCode),
424
- requestHeaders: headersArrayToRecord(snapshot.request.headers || []),
425
- responseHeaders: headersArrayToRecord(snapshot.response.headers || []),
426
- transferBytes: snapshot.response._transferSize,
427
- resourceBytes: snapshot.response.content?.size
428
- };
429
- }
430
-
431
- // ../utils/src/trace-reader.ts
432
- var fs3 = __toESM(require("fs"), 1);
433
-
434
- // ../utils/src/zip-reader.ts
435
- var import_node_util = require("util");
436
- var zlib = __toESM(require("zlib"), 1);
437
- var gunzip2 = (0, import_node_util.promisify)(zlib.gunzip);
438
- var inflateRaw2 = (0, import_node_util.promisify)(zlib.inflateRaw);
439
- function parseZipEntries(zipBuffer) {
440
- const EOCD_SIG = 101010256;
441
- let eocdOffset = -1;
442
- for (let i = zipBuffer.length - 22; i >= 0; i--) {
443
- if (zipBuffer.readUInt32LE(i) === EOCD_SIG) {
444
- eocdOffset = i;
445
- break;
446
- }
447
- }
448
- if (eocdOffset === -1) {
449
- return [];
450
- }
451
- const cdOffset = zipBuffer.readUInt32LE(eocdOffset + 16);
452
- const cdEntries = zipBuffer.readUInt16LE(eocdOffset + 10);
453
- const entries = [];
454
- const CD_SIG = 33639248;
455
- let offset = cdOffset;
456
- for (let i = 0; i < cdEntries; i++) {
457
- if (zipBuffer.readUInt32LE(offset) !== CD_SIG) {
458
- break;
459
- }
460
- const compressionMethod = zipBuffer.readUInt16LE(offset + 10);
461
- const compressedSize = zipBuffer.readUInt32LE(offset + 20);
462
- const fileNameLength = zipBuffer.readUInt16LE(offset + 28);
463
- const extraFieldLength = zipBuffer.readUInt16LE(offset + 30);
464
- const commentLength = zipBuffer.readUInt16LE(offset + 32);
465
- const localHeaderOffset = zipBuffer.readUInt32LE(offset + 42);
466
- const fileName = zipBuffer.subarray(offset + 46, offset + 46 + fileNameLength).toString("utf-8");
467
- entries.push({
468
- fileName,
469
- compressionMethod,
470
- compressedSize,
471
- localHeaderOffset
472
- });
473
- offset += 46 + fileNameLength + extraFieldLength + commentLength;
474
- }
475
- return entries;
476
- }
477
- async function readZipEntryContent(zipBuffer, entry) {
478
- const LOCAL_SIG = 67324752;
479
- if (zipBuffer.readUInt32LE(entry.localHeaderOffset) !== LOCAL_SIG) {
480
- return null;
481
- }
482
- const localFileNameLength = zipBuffer.readUInt16LE(entry.localHeaderOffset + 26);
483
- const localExtraLength = zipBuffer.readUInt16LE(entry.localHeaderOffset + 28);
484
- const dataOffset = entry.localHeaderOffset + 30 + localFileNameLength + localExtraLength;
485
- const compressedData = zipBuffer.subarray(dataOffset, dataOffset + entry.compressedSize);
486
- let buffer;
487
- if (entry.compressionMethod === 0) {
488
- buffer = compressedData;
489
- } else if (entry.compressionMethod === 8) {
490
- buffer = await inflateRaw2(compressedData);
491
- } else {
492
- return null;
493
- }
494
- if (buffer.length >= 2 && buffer[0] === 31 && buffer[1] === 139) {
495
- const decompressed = await gunzip2(buffer);
496
- return decompressed.toString("utf-8");
497
- }
498
- return buffer.toString("utf-8");
499
- }
500
-
501
- // ../utils/src/trace-reader.ts
502
- var TraceReader = class {
503
- constructor(tracePath) {
504
- this.tracePath = tracePath;
505
- }
506
- zipBuffer = null;
507
- traceEntries = [];
508
- async open() {
509
- if (!fs3.existsSync(this.tracePath)) {
510
- return false;
511
- }
512
- try {
513
- this.zipBuffer = fs3.readFileSync(this.tracePath);
514
- const entries = parseZipEntries(this.zipBuffer);
515
- this.traceEntries = entries.filter(
516
- (e) => (/^\d+-trace\.trace$/.test(e.fileName) || /^\d+-trace\.network$/.test(e.fileName)) && !e.fileName.includes("/")
517
- );
518
- return this.traceEntries.length > 0;
519
- } catch {
520
- return false;
521
- }
522
- }
523
- /**
524
- * Extracts events matching a text filter.
525
- *
526
- * @param textFilter - Substring to match (e.g., '"type":"console"')
527
- * @param adapter - Optional adapter to transform events
528
- */
529
- async extractEvents(textFilter, adapter) {
530
- if (!this.zipBuffer) {
531
- throw new Error("TraceReader not opened. Call open() first.");
532
- }
533
- const results = [];
534
- for (const traceEntry of this.traceEntries) {
535
- const content = await readZipEntryContent(this.zipBuffer, traceEntry);
536
- if (!content) continue;
537
- for (const line of content.split("\n")) {
538
- if (line.indexOf(textFilter) !== -1) {
539
- try {
540
- const event = JSON.parse(line);
541
- results.push(adapter ? adapter(event) : event);
542
- } catch {
543
- }
544
- }
545
- }
546
- }
547
- if (results.length > 0 && typeof results[0].time === "number") {
548
- return results.sort((a, b) => a.time - b.time);
549
- }
550
- return results;
551
- }
552
- /**
553
- * Extracts all events from the trace.
554
- */
555
- async extractAllEvents(adapter) {
556
- if (!this.zipBuffer) {
557
- throw new Error("TraceReader not opened. Call open() first.");
558
- }
559
- const results = [];
560
- for (const traceEntry of this.traceEntries) {
561
- const content = await readZipEntryContent(this.zipBuffer, traceEntry);
562
- if (!content) continue;
563
- for (const line of content.split("\n")) {
564
- if (line.trim()) {
565
- try {
566
- const event = JSON.parse(line);
567
- results.push(adapter ? adapter(event) : event);
568
- } catch {
569
- }
570
- }
571
- }
572
- }
573
- if (results.length > 0 && typeof results[0].time === "number") {
574
- return results.sort((a, b) => a.time - b.time);
575
- }
576
- return results;
577
- }
578
- listFiles() {
579
- if (!this.zipBuffer) {
580
- return [];
581
- }
582
- return parseZipEntries(this.zipBuffer).map((e) => e.fileName);
583
- }
584
- isOpen() {
585
- return this.zipBuffer !== null;
586
- }
587
- };
588
-
589
- // ../utils/src/zipper.ts
590
- var fs4 = __toESM(require("fs"), 1);
591
- var os2 = __toESM(require("os"), 1);
592
- var path3 = __toESM(require("path"), 1);
593
-
594
- // ../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs
595
- var import_module = require("module");
596
- var require2 = (0, import_module.createRequire)("/");
597
- var Worker;
598
- try {
599
- Worker = require2("worker_threads").Worker;
600
- } catch (e) {
601
- }
602
- var u8 = Uint8Array;
603
- var u16 = Uint16Array;
604
- var i32 = Int32Array;
605
- var fleb = new u8([
606
- 0,
607
- 0,
608
- 0,
609
- 0,
610
- 0,
611
- 0,
612
- 0,
613
- 0,
614
- 1,
615
- 1,
616
- 1,
617
- 1,
618
- 2,
619
- 2,
620
- 2,
621
- 2,
622
- 3,
623
- 3,
624
- 3,
625
- 3,
626
- 4,
627
- 4,
628
- 4,
629
- 4,
630
- 5,
631
- 5,
632
- 5,
633
- 5,
634
- 0,
635
- /* unused */
636
- 0,
637
- 0,
638
- /* impossible */
639
- 0
640
- ]);
641
- var fdeb = new u8([
642
- 0,
643
- 0,
644
- 0,
645
- 0,
646
- 1,
647
- 1,
648
- 2,
649
- 2,
650
- 3,
651
- 3,
652
- 4,
653
- 4,
654
- 5,
655
- 5,
656
- 6,
657
- 6,
658
- 7,
659
- 7,
660
- 8,
661
- 8,
662
- 9,
663
- 9,
664
- 10,
665
- 10,
666
- 11,
667
- 11,
668
- 12,
669
- 12,
670
- 13,
671
- 13,
672
- /* unused */
673
- 0,
674
- 0
675
- ]);
676
- var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
677
- var freb = function(eb, start) {
678
- var b = new u16(31);
679
- for (var i = 0; i < 31; ++i) {
680
- b[i] = start += 1 << eb[i - 1];
681
- }
682
- var r = new i32(b[30]);
683
- for (var i = 1; i < 30; ++i) {
684
- for (var j = b[i]; j < b[i + 1]; ++j) {
685
- r[j] = j - b[i] << 5 | i;
686
- }
687
- }
688
- return { b, r };
689
- };
690
- var _a = freb(fleb, 2);
691
- var fl = _a.b;
692
- var revfl = _a.r;
693
- fl[28] = 258, revfl[258] = 28;
694
- var _b = freb(fdeb, 0);
695
- var fd = _b.b;
696
- var revfd = _b.r;
697
- var rev = new u16(32768);
698
- for (i = 0; i < 32768; ++i) {
699
- x = (i & 43690) >> 1 | (i & 21845) << 1;
700
- x = (x & 52428) >> 2 | (x & 13107) << 2;
701
- x = (x & 61680) >> 4 | (x & 3855) << 4;
702
- rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;
703
- }
704
- var x;
705
- var i;
706
- var hMap = (function(cd, mb, r) {
707
- var s = cd.length;
708
- var i = 0;
709
- var l = new u16(mb);
710
- for (; i < s; ++i) {
711
- if (cd[i])
712
- ++l[cd[i] - 1];
713
- }
714
- var le = new u16(mb);
715
- for (i = 1; i < mb; ++i) {
716
- le[i] = le[i - 1] + l[i - 1] << 1;
717
- }
718
- var co;
719
- if (r) {
720
- co = new u16(1 << mb);
721
- var rvb = 15 - mb;
722
- for (i = 0; i < s; ++i) {
723
- if (cd[i]) {
724
- var sv = i << 4 | cd[i];
725
- var r_1 = mb - cd[i];
726
- var v = le[cd[i] - 1]++ << r_1;
727
- for (var m = v | (1 << r_1) - 1; v <= m; ++v) {
728
- co[rev[v] >> rvb] = sv;
729
- }
730
- }
731
- }
732
- } else {
733
- co = new u16(s);
734
- for (i = 0; i < s; ++i) {
735
- if (cd[i]) {
736
- co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i];
737
- }
738
- }
739
- }
740
- return co;
741
- });
742
- var flt = new u8(288);
743
- for (i = 0; i < 144; ++i)
744
- flt[i] = 8;
745
- var i;
746
- for (i = 144; i < 256; ++i)
747
- flt[i] = 9;
748
- var i;
749
- for (i = 256; i < 280; ++i)
750
- flt[i] = 7;
751
- var i;
752
- for (i = 280; i < 288; ++i)
753
- flt[i] = 8;
754
- var i;
755
- var fdt = new u8(32);
756
- for (i = 0; i < 32; ++i)
757
- fdt[i] = 5;
758
- var i;
759
- var flm = /* @__PURE__ */ hMap(flt, 9, 0);
760
- var fdm = /* @__PURE__ */ hMap(fdt, 5, 0);
761
- var shft = function(p) {
762
- return (p + 7) / 8 | 0;
763
- };
764
- var slc = function(v, s, e) {
765
- if (s == null || s < 0)
766
- s = 0;
767
- if (e == null || e > v.length)
768
- e = v.length;
769
- return new u8(v.subarray(s, e));
770
- };
771
- var ec = [
772
- "unexpected EOF",
773
- "invalid block type",
774
- "invalid length/literal",
775
- "invalid distance",
776
- "stream finished",
777
- "no stream handler",
778
- ,
779
- "no callback",
780
- "invalid UTF-8 data",
781
- "extra field too long",
782
- "date not in range 1980-2099",
783
- "filename too long",
784
- "stream finishing",
785
- "invalid zip data"
786
- // determined by unknown compression method
787
- ];
788
- var err = function(ind, msg, nt) {
789
- var e = new Error(msg || ec[ind]);
790
- e.code = ind;
791
- if (Error.captureStackTrace)
792
- Error.captureStackTrace(e, err);
793
- if (!nt)
794
- throw e;
795
- return e;
796
- };
797
- var wbits = function(d, p, v) {
798
- v <<= p & 7;
799
- var o = p / 8 | 0;
800
- d[o] |= v;
801
- d[o + 1] |= v >> 8;
802
- };
803
- var wbits16 = function(d, p, v) {
804
- v <<= p & 7;
805
- var o = p / 8 | 0;
806
- d[o] |= v;
807
- d[o + 1] |= v >> 8;
808
- d[o + 2] |= v >> 16;
809
- };
810
- var hTree = function(d, mb) {
811
- var t = [];
812
- for (var i = 0; i < d.length; ++i) {
813
- if (d[i])
814
- t.push({ s: i, f: d[i] });
815
- }
816
- var s = t.length;
817
- var t2 = t.slice();
818
- if (!s)
819
- return { t: et, l: 0 };
820
- if (s == 1) {
821
- var v = new u8(t[0].s + 1);
822
- v[t[0].s] = 1;
823
- return { t: v, l: 1 };
824
- }
825
- t.sort(function(a, b) {
826
- return a.f - b.f;
827
- });
828
- t.push({ s: -1, f: 25001 });
829
- var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
830
- t[0] = { s: -1, f: l.f + r.f, l, r };
831
- while (i1 != s - 1) {
832
- l = t[t[i0].f < t[i2].f ? i0++ : i2++];
833
- r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
834
- t[i1++] = { s: -1, f: l.f + r.f, l, r };
835
- }
836
- var maxSym = t2[0].s;
837
- for (var i = 1; i < s; ++i) {
838
- if (t2[i].s > maxSym)
839
- maxSym = t2[i].s;
840
- }
841
- var tr = new u16(maxSym + 1);
842
- var mbt = ln(t[i1 - 1], tr, 0);
843
- if (mbt > mb) {
844
- var i = 0, dt = 0;
845
- var lft = mbt - mb, cst = 1 << lft;
846
- t2.sort(function(a, b) {
847
- return tr[b.s] - tr[a.s] || a.f - b.f;
848
- });
849
- for (; i < s; ++i) {
850
- var i2_1 = t2[i].s;
851
- if (tr[i2_1] > mb) {
852
- dt += cst - (1 << mbt - tr[i2_1]);
853
- tr[i2_1] = mb;
854
- } else
855
- break;
856
- }
857
- dt >>= lft;
858
- while (dt > 0) {
859
- var i2_2 = t2[i].s;
860
- if (tr[i2_2] < mb)
861
- dt -= 1 << mb - tr[i2_2]++ - 1;
862
- else
863
- ++i;
864
- }
865
- for (; i >= 0 && dt; --i) {
866
- var i2_3 = t2[i].s;
867
- if (tr[i2_3] == mb) {
868
- --tr[i2_3];
869
- ++dt;
870
- }
871
- }
872
- mbt = mb;
873
- }
874
- return { t: new u8(tr), l: mbt };
875
- };
876
- var ln = function(n, l, d) {
877
- return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;
878
- };
879
- var lc = function(c) {
880
- var s = c.length;
881
- while (s && !c[--s])
882
- ;
883
- var cl = new u16(++s);
884
- var cli = 0, cln = c[0], cls = 1;
885
- var w = function(v) {
886
- cl[cli++] = v;
887
- };
888
- for (var i = 1; i <= s; ++i) {
889
- if (c[i] == cln && i != s)
890
- ++cls;
891
- else {
892
- if (!cln && cls > 2) {
893
- for (; cls > 138; cls -= 138)
894
- w(32754);
895
- if (cls > 2) {
896
- w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);
897
- cls = 0;
898
- }
899
- } else if (cls > 3) {
900
- w(cln), --cls;
901
- for (; cls > 6; cls -= 6)
902
- w(8304);
903
- if (cls > 2)
904
- w(cls - 3 << 5 | 8208), cls = 0;
905
- }
906
- while (cls--)
907
- w(cln);
908
- cls = 1;
909
- cln = c[i];
910
- }
911
- }
912
- return { c: cl.subarray(0, cli), n: s };
913
- };
914
- var clen = function(cf, cl) {
915
- var l = 0;
916
- for (var i = 0; i < cl.length; ++i)
917
- l += cf[i] * cl[i];
918
- return l;
919
- };
920
- var wfblk = function(out, pos, dat) {
921
- var s = dat.length;
922
- var o = shft(pos + 2);
923
- out[o] = s & 255;
924
- out[o + 1] = s >> 8;
925
- out[o + 2] = out[o] ^ 255;
926
- out[o + 3] = out[o + 1] ^ 255;
927
- for (var i = 0; i < s; ++i)
928
- out[o + i + 4] = dat[i];
929
- return (o + 4 + s) * 8;
930
- };
931
- var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
932
- wbits(out, p++, final);
933
- ++lf[256];
934
- var _a2 = hTree(lf, 15), dlt = _a2.t, mlb = _a2.l;
935
- var _b2 = hTree(df, 15), ddt = _b2.t, mdb = _b2.l;
936
- var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
937
- var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
938
- var lcfreq = new u16(19);
939
- for (var i = 0; i < lclt.length; ++i)
940
- ++lcfreq[lclt[i] & 31];
941
- for (var i = 0; i < lcdt.length; ++i)
942
- ++lcfreq[lcdt[i] & 31];
943
- var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
944
- var nlcc = 19;
945
- for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
946
- ;
947
- var flen = bl + 5 << 3;
948
- var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
949
- var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
950
- if (bs >= 0 && flen <= ftlen && flen <= dtlen)
951
- return wfblk(out, p, dat.subarray(bs, bs + bl));
952
- var lm, ll, dm, dl;
953
- wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
954
- if (dtlen < ftlen) {
955
- lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
956
- var llm = hMap(lct, mlcb, 0);
957
- wbits(out, p, nlc - 257);
958
- wbits(out, p + 5, ndc - 1);
959
- wbits(out, p + 10, nlcc - 4);
960
- p += 14;
961
- for (var i = 0; i < nlcc; ++i)
962
- wbits(out, p + 3 * i, lct[clim[i]]);
963
- p += 3 * nlcc;
964
- var lcts = [lclt, lcdt];
965
- for (var it = 0; it < 2; ++it) {
966
- var clct = lcts[it];
967
- for (var i = 0; i < clct.length; ++i) {
968
- var len = clct[i] & 31;
969
- wbits(out, p, llm[len]), p += lct[len];
970
- if (len > 15)
971
- wbits(out, p, clct[i] >> 5 & 127), p += clct[i] >> 12;
972
- }
973
- }
974
- } else {
975
- lm = flm, ll = flt, dm = fdm, dl = fdt;
976
- }
977
- for (var i = 0; i < li; ++i) {
978
- var sym = syms[i];
979
- if (sym > 255) {
980
- var len = sym >> 18 & 31;
981
- wbits16(out, p, lm[len + 257]), p += ll[len + 257];
982
- if (len > 7)
983
- wbits(out, p, sym >> 23 & 31), p += fleb[len];
984
- var dst = sym & 31;
985
- wbits16(out, p, dm[dst]), p += dl[dst];
986
- if (dst > 3)
987
- wbits16(out, p, sym >> 5 & 8191), p += fdeb[dst];
988
- } else {
989
- wbits16(out, p, lm[sym]), p += ll[sym];
990
- }
991
- }
992
- wbits16(out, p, lm[256]);
993
- return p + ll[256];
994
- };
995
- var deo = /* @__PURE__ */ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
996
- var et = /* @__PURE__ */ new u8(0);
997
- var dflt = function(dat, lvl, plvl, pre, post, st) {
998
- var s = st.z || dat.length;
999
- var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post);
1000
- var w = o.subarray(pre, o.length - post);
1001
- var lst = st.l;
1002
- var pos = (st.r || 0) & 7;
1003
- if (lvl) {
1004
- if (pos)
1005
- w[0] = st.r >> 3;
1006
- var opt = deo[lvl - 1];
1007
- var n = opt >> 13, c = opt & 8191;
1008
- var msk_1 = (1 << plvl) - 1;
1009
- var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
1010
- var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
1011
- var hsh = function(i2) {
1012
- return (dat[i2] ^ dat[i2 + 1] << bs1_1 ^ dat[i2 + 2] << bs2_1) & msk_1;
1013
- };
1014
- var syms = new i32(25e3);
1015
- var lf = new u16(288), df = new u16(32);
1016
- var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
1017
- for (; i + 2 < s; ++i) {
1018
- var hv = hsh(i);
1019
- var imod = i & 32767, pimod = head[hv];
1020
- prev[imod] = pimod;
1021
- head[hv] = imod;
1022
- if (wi <= i) {
1023
- var rem = s - i;
1024
- if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) {
1025
- pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
1026
- li = lc_1 = eb = 0, bs = i;
1027
- for (var j = 0; j < 286; ++j)
1028
- lf[j] = 0;
1029
- for (var j = 0; j < 30; ++j)
1030
- df[j] = 0;
1031
- }
1032
- var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
1033
- if (rem > 2 && hv == hsh(i - dif)) {
1034
- var maxn = Math.min(n, rem) - 1;
1035
- var maxd = Math.min(32767, i);
1036
- var ml = Math.min(258, rem);
1037
- while (dif <= maxd && --ch_1 && imod != pimod) {
1038
- if (dat[i + l] == dat[i + l - dif]) {
1039
- var nl = 0;
1040
- for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
1041
- ;
1042
- if (nl > l) {
1043
- l = nl, d = dif;
1044
- if (nl > maxn)
1045
- break;
1046
- var mmd = Math.min(dif, nl - 2);
1047
- var md = 0;
1048
- for (var j = 0; j < mmd; ++j) {
1049
- var ti = i - dif + j & 32767;
1050
- var pti = prev[ti];
1051
- var cd = ti - pti & 32767;
1052
- if (cd > md)
1053
- md = cd, pimod = ti;
1054
- }
1055
- }
1056
- }
1057
- imod = pimod, pimod = prev[imod];
1058
- dif += imod - pimod & 32767;
1059
- }
1060
- }
1061
- if (d) {
1062
- syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];
1063
- var lin = revfl[l] & 31, din = revfd[d] & 31;
1064
- eb += fleb[lin] + fdeb[din];
1065
- ++lf[257 + lin];
1066
- ++df[din];
1067
- wi = i + l;
1068
- ++lc_1;
1069
- } else {
1070
- syms[li++] = dat[i];
1071
- ++lf[dat[i]];
1072
- }
1073
- }
1074
- }
1075
- for (i = Math.max(i, wi); i < s; ++i) {
1076
- syms[li++] = dat[i];
1077
- ++lf[dat[i]];
1078
- }
1079
- pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
1080
- if (!lst) {
1081
- st.r = pos & 7 | w[pos / 8 | 0] << 3;
1082
- pos -= 7;
1083
- st.h = head, st.p = prev, st.i = i, st.w = wi;
1084
- }
1085
- } else {
1086
- for (var i = st.w || 0; i < s + lst; i += 65535) {
1087
- var e = i + 65535;
1088
- if (e >= s) {
1089
- w[pos / 8 | 0] = lst;
1090
- e = s;
1091
- }
1092
- pos = wfblk(w, pos + 1, dat.subarray(i, e));
1093
- }
1094
- st.i = s;
1095
- }
1096
- return slc(o, 0, pre + shft(pos) + post);
1097
- };
1098
- var crct = /* @__PURE__ */ (function() {
1099
- var t = new Int32Array(256);
1100
- for (var i = 0; i < 256; ++i) {
1101
- var c = i, k = 9;
1102
- while (--k)
1103
- c = (c & 1 && -306674912) ^ c >>> 1;
1104
- t[i] = c;
1105
- }
1106
- return t;
1107
- })();
1108
- var crc = function() {
1109
- var c = -1;
1110
- return {
1111
- p: function(d) {
1112
- var cr = c;
1113
- for (var i = 0; i < d.length; ++i)
1114
- cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8;
1115
- c = cr;
1116
- },
1117
- d: function() {
1118
- return ~c;
1119
- }
1120
- };
1121
- };
1122
- var dopt = function(dat, opt, pre, post, st) {
1123
- if (!st) {
1124
- st = { l: 1 };
1125
- if (opt.dictionary) {
1126
- var dict = opt.dictionary.subarray(-32768);
1127
- var newDat = new u8(dict.length + dat.length);
1128
- newDat.set(dict);
1129
- newDat.set(dat, dict.length);
1130
- dat = newDat;
1131
- st.w = dict.length;
1132
- }
1133
- }
1134
- return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st);
1135
- };
1136
- var mrg = function(a, b) {
1137
- var o = {};
1138
- for (var k in a)
1139
- o[k] = a[k];
1140
- for (var k in b)
1141
- o[k] = b[k];
1142
- return o;
1143
- };
1144
- var wbytes = function(d, b, v) {
1145
- for (; v; ++b)
1146
- d[b] = v, v >>>= 8;
1147
- };
1148
- function deflateSync(data, opts) {
1149
- return dopt(data, opts || {}, 0, 0);
1150
- }
1151
- var fltn = function(d, p, t, o) {
1152
- for (var k in d) {
1153
- var val = d[k], n = p + k, op = o;
1154
- if (Array.isArray(val))
1155
- op = mrg(o, val[1]), val = val[0];
1156
- if (val instanceof u8)
1157
- t[n] = [val, op];
1158
- else {
1159
- t[n += "/"] = [new u8(0), op];
1160
- fltn(val, n, t, o);
1161
- }
1162
- }
1163
- };
1164
- var te = typeof TextEncoder != "undefined" && /* @__PURE__ */ new TextEncoder();
1165
- var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();
1166
- var tds = 0;
1167
- try {
1168
- td.decode(et, { stream: true });
1169
- tds = 1;
1170
- } catch (e) {
1171
- }
1172
- function strToU8(str, latin1) {
1173
- if (latin1) {
1174
- var ar_1 = new u8(str.length);
1175
- for (var i = 0; i < str.length; ++i)
1176
- ar_1[i] = str.charCodeAt(i);
1177
- return ar_1;
1178
- }
1179
- if (te)
1180
- return te.encode(str);
1181
- var l = str.length;
1182
- var ar = new u8(str.length + (str.length >> 1));
1183
- var ai = 0;
1184
- var w = function(v) {
1185
- ar[ai++] = v;
1186
- };
1187
- for (var i = 0; i < l; ++i) {
1188
- if (ai + 5 > ar.length) {
1189
- var n = new u8(ai + 8 + (l - i << 1));
1190
- n.set(ar);
1191
- ar = n;
1192
- }
1193
- var c = str.charCodeAt(i);
1194
- if (c < 128 || latin1)
1195
- w(c);
1196
- else if (c < 2048)
1197
- w(192 | c >> 6), w(128 | c & 63);
1198
- else if (c > 55295 && c < 57344)
1199
- c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >> 18), w(128 | c >> 12 & 63), w(128 | c >> 6 & 63), w(128 | c & 63);
1200
- else
1201
- w(224 | c >> 12), w(128 | c >> 6 & 63), w(128 | c & 63);
1202
- }
1203
- return slc(ar, 0, ai);
1204
- }
1205
- var exfl = function(ex) {
1206
- var le = 0;
1207
- if (ex) {
1208
- for (var k in ex) {
1209
- var l = ex[k].length;
1210
- if (l > 65535)
1211
- err(9);
1212
- le += l + 4;
1213
- }
1214
- }
1215
- return le;
1216
- };
1217
- var wzh = function(d, b, f, fn, u, c, ce, co) {
1218
- var fl2 = fn.length, ex = f.extra, col = co && co.length;
1219
- var exl = exfl(ex);
1220
- wbytes(d, b, ce != null ? 33639248 : 67324752), b += 4;
1221
- if (ce != null)
1222
- d[b++] = 20, d[b++] = f.os;
1223
- d[b] = 20, b += 2;
1224
- d[b++] = f.flag << 1 | (c < 0 && 8), d[b++] = u && 8;
1225
- d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
1226
- var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
1227
- if (y < 0 || y > 119)
1228
- err(10);
1229
- wbytes(d, b, y << 25 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >> 1), b += 4;
1230
- if (c != -1) {
1231
- wbytes(d, b, f.crc);
1232
- wbytes(d, b + 4, c < 0 ? -c - 2 : c);
1233
- wbytes(d, b + 8, f.size);
1234
- }
1235
- wbytes(d, b + 12, fl2);
1236
- wbytes(d, b + 14, exl), b += 16;
1237
- if (ce != null) {
1238
- wbytes(d, b, col);
1239
- wbytes(d, b + 6, f.attrs);
1240
- wbytes(d, b + 10, ce), b += 14;
1241
- }
1242
- d.set(fn, b);
1243
- b += fl2;
1244
- if (exl) {
1245
- for (var k in ex) {
1246
- var exf = ex[k], l = exf.length;
1247
- wbytes(d, b, +k);
1248
- wbytes(d, b + 2, l);
1249
- d.set(exf, b + 4), b += 4 + l;
1250
- }
1251
- }
1252
- if (col)
1253
- d.set(co, b), b += col;
1254
- return b;
1255
- };
1256
- var wzf = function(o, b, c, d, e) {
1257
- wbytes(o, b, 101010256);
1258
- wbytes(o, b + 8, c);
1259
- wbytes(o, b + 10, c);
1260
- wbytes(o, b + 12, d);
1261
- wbytes(o, b + 16, e);
1262
- };
1263
- function zipSync(data, opts) {
1264
- if (!opts)
1265
- opts = {};
1266
- var r = {};
1267
- var files = [];
1268
- fltn(data, "", r, opts);
1269
- var o = 0;
1270
- var tot = 0;
1271
- for (var fn in r) {
1272
- var _a2 = r[fn], file = _a2[0], p = _a2[1];
1273
- var compression = p.level == 0 ? 0 : 8;
1274
- var f = strToU8(fn), s = f.length;
1275
- var com = p.comment, m = com && strToU8(com), ms = m && m.length;
1276
- var exl = exfl(p.extra);
1277
- if (s > 65535)
1278
- err(11);
1279
- var d = compression ? deflateSync(file, p) : file, l = d.length;
1280
- var c = crc();
1281
- c.p(file);
1282
- files.push(mrg(p, {
1283
- size: file.length,
1284
- crc: c.d(),
1285
- c: d,
1286
- f,
1287
- m,
1288
- u: s != fn.length || m && com.length != ms,
1289
- o,
1290
- compression
1291
- }));
1292
- o += 30 + s + exl + l;
1293
- tot += 76 + 2 * (s + exl) + (ms || 0) + l;
1294
- }
1295
- var out = new u8(tot + 22), oe = o, cdl = tot - o;
1296
- for (var i = 0; i < files.length; ++i) {
1297
- var f = files[i];
1298
- wzh(out, f.o, f, f.f, f.u, f.c.length);
1299
- var badd = 30 + f.f.length + exfl(f.extra);
1300
- out.set(f.c, f.o + badd);
1301
- wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
1302
- }
1303
- wzf(out, o, files.length, cdl, oe);
1304
- return out;
1305
- }
1306
-
1307
- // ../utils/src/zipper.ts
1308
- var Zipper = class {
1309
- outputPath;
1310
- compressionLevel;
1311
- onProgress;
1312
- constructor(options) {
1313
- this.outputPath = options.outputPath;
1314
- this.compressionLevel = options.compressionLevel ?? 0;
1315
- this.onProgress = options.onProgress;
1316
- }
1317
- /**
1318
- * Creates a ZIP archive containing the JSON report and assets
1319
- * @param reportPath - Path to the JSON report file
1320
- * @param assets - Array of assets to include in the ZIP
1321
- * @returns ZIP creation result with metadata
1322
- */
1323
- async createZip(reportPath, assets) {
1324
- if (!fs4.existsSync(reportPath)) {
1325
- throw new Error(`Report file not found: ${reportPath}`);
1326
- }
1327
- const transformedReportPath = this.transformJsonReport(reportPath);
1328
- const files = {};
1329
- const totalEntries = assets.length + 1;
1330
- let processedEntries = 0;
1331
- const reportContent = fs4.readFileSync(transformedReportPath);
1332
- files["output/playwright-test-report.json"] = new Uint8Array(reportContent);
1333
- processedEntries++;
1334
- this.onProgress?.({ processedEntries, totalEntries, currentFile: "output/playwright-test-report.json" });
1335
- for (const asset of assets) {
1336
- if (!fs4.existsSync(asset.sourcePath)) {
1337
- console.warn(`[Checkly Reporter] Skipping missing asset: ${asset.sourcePath}`);
1338
- continue;
1339
- }
1340
- const content = fs4.readFileSync(asset.sourcePath);
1341
- files[asset.archivePath] = new Uint8Array(content);
1342
- processedEntries++;
1343
- this.onProgress?.({ processedEntries, totalEntries, currentFile: asset.archivePath });
1344
- }
1345
- const zipData = zipSync(files, { level: this.compressionLevel });
1346
- fs4.writeFileSync(this.outputPath, zipData);
1347
- try {
1348
- fs4.unlinkSync(transformedReportPath);
1349
- } catch {
1350
- }
1351
- const entries = this.extractEntryOffsets(zipData);
1352
- return {
1353
- zipPath: this.outputPath,
1354
- size: zipData.length,
1355
- entryCount: entries.length,
1356
- entries
1357
- };
1358
- }
1359
- /**
1360
- * Extracts byte offsets for each entry from the ZIP data
1361
- * Parses the central directory to get accurate offset information
1362
- */
1363
- extractEntryOffsets(zipData) {
1364
- const entries = [];
1365
- const view = new DataView(zipData.buffer, zipData.byteOffset, zipData.byteLength);
1366
- let eocdOffset = -1;
1367
- for (let i = zipData.length - 22; i >= 0; i--) {
1368
- if (view.getUint32(i, true) === 101010256) {
1369
- eocdOffset = i;
1370
- break;
1371
- }
1372
- }
1373
- if (eocdOffset === -1) {
1374
- console.warn("[Checkly Reporter] Could not find ZIP end of central directory");
1375
- return entries;
1376
- }
1377
- let cdOffset = view.getUint32(eocdOffset + 16, true);
1378
- const cdSize = view.getUint32(eocdOffset + 12, true);
1379
- if (cdOffset === 4294967295 && eocdOffset >= 20) {
1380
- const zip64LocatorOffset = eocdOffset - 20;
1381
- if (view.getUint32(zip64LocatorOffset, true) === 117853008) {
1382
- const zip64EocdOffset = Number(view.getBigUint64(zip64LocatorOffset + 8, true));
1383
- if (view.getUint32(zip64EocdOffset, true) === 101075792) {
1384
- cdOffset = Number(view.getBigUint64(zip64EocdOffset + 48, true));
1385
- }
1386
- }
1387
- }
1388
- let offset = cdOffset;
1389
- const cdEnd = cdOffset + cdSize;
1390
- while (offset < cdEnd && view.getUint32(offset, true) === 33639248) {
1391
- const compressedSize = view.getUint32(offset + 20, true);
1392
- const filenameLength = view.getUint16(offset + 28, true);
1393
- const extraLength = view.getUint16(offset + 30, true);
1394
- const commentLength = view.getUint16(offset + 32, true);
1395
- const localHeaderOffset = view.getUint32(offset + 42, true);
1396
- const filenameBytes = zipData.slice(offset + 46, offset + 46 + filenameLength);
1397
- const filename = new TextDecoder().decode(filenameBytes);
1398
- const localExtraLength = view.getUint16(localHeaderOffset + 28, true);
1399
- const dataStart = localHeaderOffset + 30 + filenameLength + localExtraLength;
1400
- const dataEnd = dataStart + compressedSize - 1;
1401
- entries.push({
1402
- name: filename.replace(/\\/g, "/"),
1403
- start: dataStart,
1404
- end: dataEnd >= dataStart ? dataEnd : dataStart
1405
- });
1406
- offset += 46 + filenameLength + extraLength + commentLength;
1407
- }
1408
- return entries;
1409
- }
1410
- /**
1411
- * Transforms the JSON report to use relative paths for attachments
1412
- */
1413
- transformJsonReport(reportPath) {
1414
- const reportContent = fs4.readFileSync(reportPath, "utf-8");
1415
- const report = JSON.parse(reportContent);
1416
- this.transformAttachmentPaths(report);
1417
- const tempReportPath = path3.join(os2.tmpdir(), `playwright-test-report-${Date.now()}.json`);
1418
- fs4.writeFileSync(tempReportPath, JSON.stringify(report, null, 2));
1419
- return tempReportPath;
1420
- }
1421
- /**
1422
- * Recursively transforms attachment paths in the report structure
1423
- */
1424
- transformAttachmentPaths(obj) {
1425
- if (typeof obj !== "object" || obj === null) {
1426
- return;
1427
- }
1428
- if (Array.isArray(obj)) {
1429
- obj.forEach((item) => this.transformAttachmentPaths(item));
1430
- return;
1431
- }
1432
- if (obj.attachments && Array.isArray(obj.attachments)) {
1433
- obj.attachments.forEach((attachment) => {
1434
- if (attachment.path && typeof attachment.path === "string") {
1435
- attachment.path = this.normalizeAttachmentPath(attachment.path);
1436
- }
1437
- });
1438
- }
1439
- Object.values(obj).forEach((value) => this.transformAttachmentPaths(value));
1440
- }
1441
- /**
1442
- * Normalizes attachment paths by extracting the relevant snapshot directory portion
1443
- */
1444
- normalizeAttachmentPath(attachmentPath) {
1445
- const normalizedPath = attachmentPath.replace(/\\/g, "/");
1446
- const testResultsIndex = normalizedPath.indexOf("test-results/");
1447
- if (testResultsIndex !== -1) {
1448
- return normalizedPath.substring(testResultsIndex);
1449
- }
1450
- const blobResourcesMatch = normalizedPath.match(/.*?([\w-]*blob-report[\w-]*\/resources\/.+)$/);
1451
- if (blobResourcesMatch) {
1452
- const filename = normalizedPath.split("/").pop() || "";
1453
- return `test-results/resources/${filename}`;
1454
- }
1455
- const resourcesIndex = normalizedPath.indexOf("/resources/");
1456
- if (resourcesIndex !== -1) {
1457
- const filename = normalizedPath.split("/").pop() || "";
1458
- return `test-results/resources/${filename}`;
1459
- }
1460
- const snapshotsIndex = normalizedPath.indexOf("-snapshots/");
1461
- if (snapshotsIndex !== -1) {
1462
- const pathBeforeSnapshots = normalizedPath.substring(0, snapshotsIndex);
1463
- const lastSlashIndex = pathBeforeSnapshots.lastIndexOf("/");
1464
- const startIndex = lastSlashIndex !== -1 ? lastSlashIndex + 1 : 0;
1465
- return normalizedPath.substring(startIndex);
1466
- }
1467
- const patterns = ["__screenshots__/", "__snapshots__/", "screenshots/", "snapshots/"];
1468
- for (const pattern of patterns) {
1469
- const matchIndex = normalizedPath.indexOf(pattern);
1470
- if (matchIndex !== -1) {
1471
- return normalizedPath.substring(matchIndex);
1472
- }
1473
- }
1474
- console.warn(`[Checkly Reporter] Could not normalize attachment path: ${attachmentPath}`);
1475
- return attachmentPath;
1476
- }
1477
- };
1478
-
1479
- // src/api/client.ts
1480
- var import_axios = __toESM(require("axios"));
1481
- var import_form_data = __toESM(require("form-data"));
1482
-
1483
- // src/api/errors.ts
1484
- var ApiError = class extends Error {
1485
- data;
1486
- constructor(data, options) {
1487
- super(data.message, options);
1488
- this.name = this.constructor.name;
1489
- this.data = data;
1490
- }
1491
- };
1492
- var ValidationError = class extends ApiError {
1493
- };
1494
- var UnauthorizedError = class extends ApiError {
1495
- };
1496
- var ForbiddenError = class extends ApiError {
1497
- };
1498
- var NotFoundError = class extends ApiError {
1499
- };
1500
- var RequestTimeoutError = class extends ApiError {
1501
- };
1502
- var ConflictError = class extends ApiError {
1503
- };
1504
- var ServerError = class extends ApiError {
1505
- };
1506
- var MiscellaneousError = class extends ApiError {
1507
- };
1508
- var MissingResponseError = class extends Error {
1509
- constructor(message, options) {
1510
- super(message, options);
1511
- this.name = "MissingResponseError";
1512
- }
1513
- };
1514
- function parseErrorData(data, statusCode) {
1515
- if (!data) return void 0;
1516
- if (typeof data === "object" && data !== null) {
1517
- const obj = data;
1518
- if (obj.statusCode && obj.error && obj.message) {
1519
- return {
1520
- statusCode: obj.statusCode,
1521
- error: obj.error,
1522
- message: obj.message,
1523
- errorCode: obj.errorCode
1524
- };
1525
- }
1526
- if (obj.error && obj.message) {
1527
- return {
1528
- statusCode,
1529
- error: obj.error,
1530
- message: obj.message,
1531
- errorCode: obj.errorCode
1532
- };
1533
- }
1534
- if (obj.error) {
1535
- return {
1536
- statusCode,
1537
- error: obj.error,
1538
- message: obj.error
1539
- };
1540
- }
1541
- if (obj.message) {
1542
- return {
1543
- statusCode,
1544
- error: obj.message,
1545
- message: obj.message,
1546
- errorCode: obj.errorCode
1547
- };
1548
- }
1549
- }
1550
- if (typeof data === "string") {
1551
- return { statusCode, error: data, message: data };
1552
- }
1553
- return void 0;
1554
- }
1555
- function handleErrorResponse(err2) {
1556
- const axiosError = err2;
1557
- if (!axiosError.response) {
1558
- throw new MissingResponseError(axiosError.message || "Network error");
1559
- }
1560
- const { status, data } = axiosError.response;
1561
- const errorData = parseErrorData(data, status) ?? {
1562
- statusCode: status,
1563
- error: "Unknown error",
1564
- message: axiosError.message || "An error occurred"
1565
- };
1566
- switch (status) {
1567
- case 400:
1568
- throw new ValidationError(errorData);
1569
- case 401:
1570
- throw new UnauthorizedError(errorData);
1571
- case 403:
1572
- throw new ForbiddenError(errorData);
1573
- case 404:
1574
- throw new NotFoundError(errorData);
1575
- case 408:
1576
- throw new RequestTimeoutError(errorData);
1577
- case 409:
1578
- throw new ConflictError(errorData);
1579
- default:
1580
- if (status >= 500) {
1581
- throw new ServerError(errorData);
1582
- }
1583
- throw new MiscellaneousError(errorData);
1584
- }
1585
- }
1586
-
1587
- // src/api/client.ts
1588
- function createClient(options) {
1589
- const http = import_axios.default.create({
1590
- baseURL: options.baseUrl,
1591
- timeout: 12e4,
1592
- maxContentLength: Number.POSITIVE_INFINITY,
1593
- maxBodyLength: Number.POSITIVE_INFINITY
1594
- });
1595
- http.interceptors.request.use((config) => {
1596
- if (config.headers) {
1597
- config.headers.Authorization = `Bearer ${options.apiKey}`;
1598
- config.headers["x-checkly-account"] = options.accountId;
1599
- config.headers["x-checkly-reporter-version"] = options.telemetry.reporterVersion;
1600
- config.headers["x-checkly-playwright-version"] = options.telemetry.playwrightVersion;
1601
- config.headers["x-checkly-ci-provider"] = options.telemetry.ciProvider;
1602
- config.headers["x-checkly-ci-environment"] = options.telemetry.ciEnvironment;
1603
- config.headers["x-checkly-node-version"] = options.telemetry.nodeVersion;
1604
- }
1605
- return config;
1606
- });
1607
- http.interceptors.response.use(
1608
- (response) => response,
1609
- (error) => handleErrorResponse(error)
1610
- );
1611
- return {
1612
- testSessions: {
1613
- async create(request) {
1614
- const response = await http.post("/next/test-sessions/create", request);
1615
- return response.data;
1616
- },
1617
- async uploadAsset(testSessionId, testResultId, assets) {
1618
- const form = new import_form_data.default();
1619
- form.append("assets", assets, { filename: "assets.zip", contentType: "application/zip" });
1620
- const response = await http.post(
1621
- `/next/test-sessions/${testSessionId}/results/${testResultId}/assets`,
1622
- form,
1623
- { headers: form.getHeaders() }
1624
- );
1625
- return response.data;
1626
- },
1627
- async updateResult(testSessionId, testResultId, request) {
1628
- const response = await http.post(
1629
- `/next/test-sessions/${testSessionId}/results/${testResultId}`,
1630
- request
1631
- );
1632
- return response.data;
1633
- }
1634
- }
1635
- };
1636
- }
1637
-
1638
- // src/extensions/checkly-upload.ts
1639
- var MissingCredentialsError = class extends Error {
1640
- constructor(missing) {
1641
- const missingList = missing.map((m) => m === "CHECKLY_API_KEY" ? "apiKey / CHECKLY_API_KEY" : "accountId / CHECKLY_ACCOUNT_ID").join(", ");
1642
- super(
1643
- `Missing required Checkly credentials: ${missingList}.
1644
- Provide them via reporter options or environment variables.
1645
- Get your API key at: https://app.checklyhq.com/settings/user/api-keys
1646
- Or use dryRun: true for local report generation.`
1647
- );
1648
- this.name = "MissingCredentialsError";
1649
- }
1650
- };
1651
- function getPackageVersion() {
1652
- try {
1653
- const packageJson = JSON.parse(fs5.readFileSync(path4.join(__dirname, "..", "package.json"), "utf-8"));
1654
- return packageJson.version;
1655
- } catch {
1656
- return "unknown";
1657
- }
1658
- }
1659
- function getApiUrl(environment) {
1660
- const urls = {
1661
- local: "http://127.0.0.1:3000",
1662
- development: "https://api-dev.checklyhq.com",
1663
- staging: "https://api-test.checklyhq.com",
1664
- production: "https://api.checklyhq.com"
1665
- };
1666
- return urls[environment];
1667
- }
1668
- function getEnvironment() {
1669
- const env = process.env.CHECKLY_ENV || "production";
1670
- const valid = ["local", "development", "staging", "production"];
1671
- if (!valid.includes(env)) {
1672
- console.warn(`[Checkly] Invalid environment "${env}", using "production"`);
1673
- return "production";
1674
- }
1675
- return env;
1676
- }
1677
- function getDirectoryName() {
1678
- const cwd = process.cwd();
1679
- let name = path4.basename(cwd);
1680
- if (!name || name === "/" || name === ".") name = "playwright-tests";
1681
- name = name.replace(/[<>:"|?*]/g, "-");
1682
- if (name.length > 255) name = name.substring(0, 255);
1683
- return name;
1684
- }
1685
- function checklyUpload(options = {}) {
1686
- const apiKey = process.env.CHECKLY_API_KEY || options.apiKey;
1687
- const accountId = process.env.CHECKLY_ACCOUNT_ID || options.accountId;
1688
- const environment = getEnvironment();
1689
- const baseUrl = getApiUrl(environment);
1690
- const dryRun = options.dryRun ?? false;
1691
- const ciInfo = detectCI();
1692
- const reporterVersion = getPackageVersion();
1693
- const canUpload = !dryRun && apiKey && accountId;
1694
- let api;
1695
- let testSession;
1696
- let sessionCreationPromise;
1697
- let startTime;
1698
- let resolvedOutputDir;
1699
- let assetCollector;
1700
- let zipper;
1701
- const testCounts = { passed: 0, failed: 0, flaky: 0 };
1702
- const tracePathsMap = /* @__PURE__ */ new Map();
1703
- const warningsMap = /* @__PURE__ */ new Map();
1704
- const consoleMessagesMap = /* @__PURE__ */ new Map();
1705
- const networkRequestsMap = /* @__PURE__ */ new Map();
1706
- function resolveSessionName(ctx) {
1707
- const { sessionName } = options;
1708
- if (typeof sessionName === "function") return sessionName(ctx);
1709
- if (typeof sessionName === "string") return sessionName;
1710
- return `Playwright Test Session: ${ctx.directoryName}`;
1711
- }
1712
- async function createSession(config, suite, log) {
1713
- if (!api) return;
1714
- try {
1715
- const directoryName = getDirectoryName();
1716
- const sessionName = resolveSessionName({ directoryName, config, suite });
1717
- const repoInfo = getGitHubRepoInfo();
1718
- log("\u{1F517} Creating test session", { name: sessionName, environment });
1719
- testSession = await api.testSessions.create({
1720
- name: sessionName,
1721
- environment: process.env.NODE_ENV || "test",
1722
- repoInfo,
1723
- startedAt: startTime.getTime(),
1724
- testResults: [{ name: directoryName }],
1725
- provider: "PW_REPORTER"
1726
- });
1727
- log("\u2705 Session created", { id: testSession.testSessionId });
1728
- } catch (err2) {
1729
- if (err2 instanceof UnauthorizedError) {
1730
- console.error(
1731
- "[Checkly] Authentication failed: Invalid API key.\n Please verify your apiKey option or CHECKLY_API_KEY environment variable is correct.\n Get your API key at: https://app.checklyhq.com/settings/user/api-keys"
1732
- );
1733
- api = void 0;
1734
- return;
1735
- }
1736
- if (err2 instanceof ForbiddenError) {
1737
- console.error(
1738
- "[Checkly] Access denied: You do not have access to this account.\n Please verify your accountId option or CHECKLY_ACCOUNT_ID environment variable is correct.\n Get your API key at: https://app.checklyhq.com/settings/user/api-keys"
1739
- );
1740
- api = void 0;
1741
- return;
1742
- }
1743
- console.error("[Checkly] Failed to create test session:", err2);
1744
- }
1745
- }
1746
- function checkTraceAttachment(test, result) {
1747
- const key = `${test.id}:${result.retry}`;
1748
- const traceAttachment = result.attachments?.find((a) => a.name === "trace" || a.contentType === "application/zip");
1749
- if (traceAttachment?.path) {
1750
- tracePathsMap.set(key, traceAttachment.path);
1751
- return;
1752
- }
1753
- const traceConfig = test.parent?.project()?.use?.trace;
1754
- const traceMode = typeof traceConfig === "object" ? traceConfig.mode : traceConfig;
1755
- if (!traceMode || traceMode === "off") return;
1756
- const warnings = warningsMap.get(key) || [];
1757
- warnings.push({ type: "trace-missing", message: `No trace found for trace mode "${traceMode}"` });
1758
- warningsMap.set(key, warnings);
1759
- }
1760
- async function extractTraceData(key, tracePath) {
1761
- const reader = new TraceReader(tracePath);
1762
- if (!await reader.open()) return;
1763
- const messages = await reader.extractEvents('"type":"console"', toConsoleMessage);
1764
- if (messages.length > 0) consoleMessagesMap.set(key, messages);
1765
- const requests = await reader.extractEvents('"type":"resource-snapshot"', toNetworkRequest);
1766
- if (requests.length > 0) networkRequestsMap.set(key, requests);
1767
- }
1768
- async function extractDataFromTraces(log) {
1769
- if (tracePathsMap.size === 0) return;
1770
- log("\u{1F4E6} Extracting trace data", { traces: tracePathsMap.size });
1771
- const extractions = Array.from(tracePathsMap.entries()).map(
1772
- ([key, tracePath]) => extractTraceData(key, tracePath).catch((err2) => {
1773
- console.error(`[Checkly] Failed to extract trace data: ${err2}`);
1774
- })
1775
- );
1776
- await Promise.all(extractions);
1777
- }
1778
- function buildChecklyExtensionData(key) {
1779
- const warnings = warningsMap.get(key);
1780
- const consoleMessages = consoleMessagesMap.get(key);
1781
- const network = networkRequestsMap.get(key);
1782
- if (!warnings?.length && !consoleMessages?.length && !network?.length) {
1783
- return null;
1784
- }
1785
- return {
1786
- ...warnings?.length ? { warnings } : {},
1787
- ...consoleMessages?.length ? { console: consoleMessages } : {},
1788
- ...network?.length ? { network } : {}
1789
- };
1790
- }
1791
- function injectDataIntoReport(report) {
1792
- function processSuite(suite) {
1793
- for (const spec of suite.specs) {
1794
- for (const test of spec.tests) {
1795
- for (const result of test.results) {
1796
- const key = `${spec.id}:${result.retry}`;
1797
- const checklyData = buildChecklyExtensionData(key);
1798
- if (checklyData) {
1799
- ;
1800
- result._checkly = checklyData;
1801
- }
1802
- }
1803
- }
1804
- }
1805
- suite.suites?.forEach(processSuite);
1806
- }
1807
- report.suites.forEach(processSuite);
1808
- }
1809
- function calculateTiming(report) {
1810
- const stats = report.stats;
1811
- if (stats?.startTime && stats?.duration !== void 0) {
1812
- const start = new Date(stats.startTime);
1813
- const responseTime = Math.round(stats.duration);
1814
- return {
1815
- startedAt: start.toISOString(),
1816
- stoppedAt: new Date(start.getTime() + responseTime).toISOString(),
1817
- responseTime
1818
- };
1819
- }
1820
- const now = Date.now();
1821
- return {
1822
- startedAt: startTime?.toISOString() ?? (/* @__PURE__ */ new Date()).toISOString(),
1823
- stoppedAt: new Date(now).toISOString(),
1824
- responseTime: startTime ? Math.round(now - startTime.getTime()) : 0
1825
- };
1826
- }
1827
- async function uploadAssets(log, zipPath, zipSizeBytes) {
1828
- if (!api || !testSession || zipSizeBytes === 0) return void 0;
1829
- const firstResult = testSession.testResults[0];
1830
- if (!firstResult) return void 0;
1831
- log("\u{1F4E4} Uploading assets", { size: `${(zipSizeBytes / 1024).toFixed(1)}KB` });
1832
- try {
1833
- const assets = fs5.createReadStream(zipPath);
1834
- const uploadResponse = await api.testSessions.uploadAsset(
1835
- testSession.testSessionId,
1836
- firstResult.testResultId,
1837
- assets
1838
- );
1839
- log("\u2705 Assets uploaded", { assetId: uploadResponse.assetId });
1840
- return uploadResponse.assetId;
1841
- } catch (err2) {
1842
- console.error("[Checkly] Asset upload failed:", err2);
1843
- return void 0;
1844
- }
1845
- }
1846
- async function uploadResults(log, report, zipPath, entries) {
1847
- if (!api || !testSession || testSession.testResults.length === 0) return;
1848
- try {
1849
- const { failed, flaky } = testCounts;
1850
- const overallStatus = failed > 0 ? "FAILED" : "PASSED";
1851
- const isDegraded = failed === 0 && flaky > 0;
1852
- const timing = calculateTiming(report);
1853
- const zipSizeBytes = (await fs5.promises.stat(zipPath)).size;
1854
- const assetId = await uploadAssets(log, zipPath, zipSizeBytes);
1855
- const firstResult = testSession.testResults[0];
1856
- log("\u{1F4DD} Updating test result", { status: overallStatus, isDegraded });
1857
- await api.testSessions.updateResult(testSession.testSessionId, firstResult.testResultId, {
1858
- status: overallStatus,
1859
- assetEntries: assetId ? entries : void 0,
1860
- isDegraded,
1861
- ...timing,
1862
- metadata: { usageData: { s3PostTotalBytes: zipSizeBytes } }
1863
- });
1864
- } catch (err2) {
1865
- console.error("[Checkly] Failed to upload results:", err2);
1866
- }
1867
- }
1868
- return {
1869
- name: "checkly-upload",
1870
- onBegin: ({ config, suite, log }) => {
1871
- startTime = /* @__PURE__ */ new Date();
1872
- resolvedOutputDir = options.outputDir ?? config.projects[0]?.outputDir ?? "test-results";
1873
- const zipPath = path4.join(resolvedOutputDir, "checkly-report.zip");
1874
- assetCollector = new AssetCollector(resolvedOutputDir);
1875
- zipper = new Zipper({ outputPath: zipPath });
1876
- if (!canUpload) {
1877
- if (dryRun) {
1878
- console.warn("[Checkly] Dry run mode - report will be generated locally");
1879
- return;
1880
- }
1881
- const missing = [];
1882
- if (!apiKey) missing.push("CHECKLY_API_KEY");
1883
- if (!accountId) missing.push("CHECKLY_ACCOUNT_ID");
1884
- throw new MissingCredentialsError(missing);
1885
- }
1886
- api = createClient({
1887
- apiKey,
1888
- accountId,
1889
- baseUrl,
1890
- telemetry: {
1891
- reporterVersion,
1892
- playwrightVersion: config.version,
1893
- ciProvider: ciInfo.ciProvider,
1894
- ciEnvironment: ciInfo.environment,
1895
- nodeVersion: process.version
1896
- }
1897
- });
1898
- sessionCreationPromise = createSession(config, suite, log);
1899
- },
1900
- onTestEnd: ({ test, result }) => {
1901
- checkTraceAttachment(test, result);
1902
- const outcome = test.outcome();
1903
- const testIsComplete = result.retry === test.retries || outcome !== "unexpected";
1904
- if (!testIsComplete) return;
1905
- if (outcome === "flaky") {
1906
- testCounts.flaky++;
1907
- testCounts.passed++;
1908
- } else if (result.status === "passed") {
1909
- testCounts.passed++;
1910
- } else if (result.status === "failed" || result.status === "timedOut") {
1911
- testCounts.failed++;
1912
- }
1913
- },
1914
- onEnd: async ({ report, log, addSummaryLine }) => {
1915
- try {
1916
- if (sessionCreationPromise) {
1917
- await sessionCreationPromise;
1918
- }
1919
- await extractDataFromTraces(log);
1920
- injectDataIntoReport(report);
1921
- fs5.mkdirSync(resolvedOutputDir, { recursive: true });
1922
- const tempReportPath = path4.join(resolvedOutputDir, `.checkly-report-${Date.now()}.json`);
1923
- fs5.writeFileSync(tempReportPath, JSON.stringify(report, null, 2));
1924
- const assets = await assetCollector.collectAssets(report);
1925
- const zipResult = await zipper.createZip(tempReportPath, assets);
1926
- log("\u{1F4E6} ZIP created", { path: zipResult.zipPath, size: `${(zipResult.size / 1024).toFixed(1)}KB` });
1927
- if (api && testSession) {
1928
- await uploadResults(log, report, zipResult.zipPath, zipResult.entries);
1929
- if (!dryRun) {
1930
- try {
1931
- fs5.unlinkSync(zipResult.zipPath);
1932
- } catch {
1933
- }
1934
- }
1935
- if (testSession.link) {
1936
- addSummaryLine(`\u{1F517} Checkly Test Session: ${testSession.link}`);
1937
- }
1938
- }
1939
- try {
1940
- fs5.unlinkSync(tempReportPath);
1941
- } catch {
1942
- }
1943
- } catch (err2) {
1944
- console.error("[Checkly] Error in onEnd:", err2);
1945
- }
1946
- }
1947
- };
1948
- }
1949
-
1950
- // src/reporter.ts
1951
- var import_node_fs = require("fs");
1952
- var import_node_path = require("path");
1953
- function getPackageVersion2() {
1954
- try {
1955
- const packageJson = JSON.parse((0, import_node_fs.readFileSync)((0, import_node_path.join)(__dirname, "..", "package.json"), "utf-8"));
1956
- return packageJson.version;
1957
- } catch {
1958
- return "unknown";
1959
- }
1960
- }
1961
- var pluralRules = new Intl.PluralRules("en-US");
1962
- var projectForms = {
1963
- zero: "Project",
1964
- one: "Project",
1965
- two: "Projects",
1966
- few: "Projects",
1967
- many: "Projects",
1968
- other: "Projects"
1969
- };
1970
- var BaseReporter = class {
1971
- config;
1972
- suite;
1973
- startTime;
1974
- options;
1975
- verbose;
1976
- globalErrors = [];
1977
- tests = /* @__PURE__ */ new Map();
1978
- expectedCount = 0;
1979
- unexpectedCount = 0;
1980
- flakyCount = 0;
1981
- skippedCount = 0;
1982
- _report = null;
1983
- extensions = [];
1984
- summaryLines = [];
1985
- // Reconstructed projects for merge-reports scenarios
1986
- reconstructedProjects = /* @__PURE__ */ new Map();
1987
- constructor(options = {}) {
1988
- this.options = options;
1989
- this.verbose = options.verbose ?? process.env.CHECKLY_REPORTER_VERBOSE === "true";
1990
- }
1991
- use(extension) {
1992
- this.extensions.push(extension);
1993
- return this;
1994
- }
1995
- log(message, data) {
1996
- if (!this.verbose) return;
1997
- const timestamp = (/* @__PURE__ */ new Date()).toISOString().split("T")[1].slice(0, 12);
1998
- const prefix = `[Checkly ${timestamp}]`;
1999
- if (data && Object.keys(data).length > 0) {
2000
- console.log(`${prefix} ${message}`, data);
2001
- } else {
2002
- console.log(`${prefix} ${message}`);
2003
- }
2004
- }
2005
- createExtensionLogger(extensionName) {
2006
- return (message, data) => {
2007
- this.log(`[${extensionName}] ${message}`, data);
2008
- };
2009
- }
2010
- onBegin(config, suite) {
2011
- const deprecated = ["outputFile", "testResultsDir", "outputPath"];
2012
- const opts = this.options;
2013
- for (const key of deprecated) {
2014
- if (key in opts && opts[key] !== void 0) {
2015
- throw new Error(`[Checkly] "${key}" option is no longer supported. Use outputDir instead.`);
2016
- }
2017
- }
2018
- this.config = config;
2019
- this.suite = suite;
2020
- this.startTime = /* @__PURE__ */ new Date();
2021
- this.tests.clear();
2022
- this.globalErrors = [];
2023
- this.expectedCount = 0;
2024
- this.unexpectedCount = 0;
2025
- this.flakyCount = 0;
2026
- this.skippedCount = 0;
2027
- this._report = null;
2028
- this.reconstructedProjects.clear();
2029
- this.reconstructProjectsIfNeeded();
2030
- const testCount = this.countTests(suite);
2031
- const projectNames = config.projects.length > 0 ? config.projects.map((p) => p.name).join(", ") : Array.from(this.reconstructedProjects.keys()).join(", ") || "default";
2032
- this.log(`\u{1F3AC} Starting test run`, { tests: testCount, projects: projectNames, workers: config.workers });
2033
- for (const ext of this.extensions) {
2034
- ext.onBegin?.({ config, suite, log: this.createExtensionLogger(ext.name) });
2035
- }
2036
- }
2037
- onTestBegin(test, result) {
2038
- for (const ext of this.extensions) {
2039
- ext.onTestBegin?.({ test, result, log: this.createExtensionLogger(ext.name) });
2040
- }
2041
- }
2042
- onStepBegin(test, result, step) {
2043
- for (const ext of this.extensions) {
2044
- ext.onStepBegin?.({ test, result, step, log: this.createExtensionLogger(ext.name) });
2045
- }
2046
- }
2047
- onStepEnd(test, result, step) {
2048
- for (const ext of this.extensions) {
2049
- ext.onStepEnd?.({ test, result, step, log: this.createExtensionLogger(ext.name) });
2050
- }
2051
- }
2052
- onTestEnd(test, result) {
2053
- const testId = test.id;
2054
- let testData = this.tests.get(testId);
2055
- if (!testData) {
2056
- testData = { testCase: test, results: [] };
2057
- this.tests.set(testId, testData);
2058
- }
2059
- testData.results.push(result);
2060
- for (const ext of this.extensions) {
2061
- ext.onTestEnd?.({ test, result, log: this.createExtensionLogger(ext.name) });
2062
- }
2063
- }
2064
- onStdOut(chunk, test, result) {
2065
- for (const ext of this.extensions) {
2066
- ext.onStdOut?.({ chunk, test, result, log: this.createExtensionLogger(ext.name) });
2067
- }
2068
- }
2069
- onStdErr(chunk, test, result) {
2070
- for (const ext of this.extensions) {
2071
- ext.onStdErr?.({ chunk, test, result, log: this.createExtensionLogger(ext.name) });
2072
- }
2073
- }
2074
- onError(error) {
2075
- this.globalErrors.push(error);
2076
- this.log(`\u{1F4A5} Global error`, { message: error.message?.slice(0, 100) });
2077
- for (const ext of this.extensions) {
2078
- ext.onError?.({ error, log: this.createExtensionLogger(ext.name) });
2079
- }
2080
- }
2081
- async onEnd(result) {
2082
- for (const testData of this.tests.values()) {
2083
- switch (testData.testCase.outcome()) {
2084
- case "expected":
2085
- this.expectedCount++;
2086
- break;
2087
- case "unexpected":
2088
- this.unexpectedCount++;
2089
- break;
2090
- case "flaky":
2091
- this.flakyCount++;
2092
- break;
2093
- case "skipped":
2094
- this.skippedCount++;
2095
- break;
2096
- }
2097
- }
2098
- this._report = this.buildReport(result);
2099
- this.log(`\u{1F3C1} Test run finished`, {
2100
- status: result.status,
2101
- duration: `${result.duration}ms`,
2102
- passed: this.expectedCount,
2103
- failed: this.unexpectedCount,
2104
- flaky: this.flakyCount,
2105
- skipped: this.skippedCount
2106
- });
2107
- const outputDir = this.options.outputDir;
2108
- if (outputDir) {
2109
- const fs6 = await import("fs");
2110
- fs6.mkdirSync(outputDir, { recursive: true });
2111
- const outputPath = `${outputDir}/checkly-report.json`;
2112
- fs6.writeFileSync(outputPath, JSON.stringify(this._report, null, 2));
2113
- this.log(`\u{1F4C4} Report saved`, { path: outputPath });
2114
- }
2115
- for (const ext of this.extensions) {
2116
- await ext.onEnd?.({
2117
- result,
2118
- report: this._report,
2119
- log: this.createExtensionLogger(ext.name),
2120
- addSummaryLine: (line) => this.summaryLines.push(line)
2121
- });
2122
- }
2123
- this.printSummary();
2124
- }
2125
- async onExit() {
2126
- this.log(`\u{1F44B} Reporter exiting`);
2127
- for (const ext of this.extensions) {
2128
- await ext.onExit?.({ log: this.createExtensionLogger(ext.name) });
2129
- }
2130
- }
2131
- printsToStdio() {
2132
- return false;
2133
- }
2134
- getReport() {
2135
- if (this._report) return this._report;
2136
- return this.buildReport({
2137
- status: "passed",
2138
- startTime: this.startTime,
2139
- duration: Date.now() - this.startTime.getTime()
2140
- });
2141
- }
2142
- buildReport(fullResult) {
2143
- return {
2144
- config: this.serializeConfig(),
2145
- suites: this.serializeSuites(),
2146
- errors: this.globalErrors.map((e) => this.serializeError(e, true)),
2147
- stats: {
2148
- startTime: this.startTime.toISOString(),
2149
- duration: fullResult.duration,
2150
- expected: this.expectedCount,
2151
- unexpected: this.unexpectedCount,
2152
- flaky: this.flakyCount,
2153
- skipped: this.skippedCount
2154
- }
2155
- };
2156
- }
2157
- reconstructProjectsIfNeeded() {
2158
- if (this.config.projects.length > 0) {
2159
- return;
2160
- }
2161
- this.log("\u{1F504} Detected merge-reports scenario (empty config.projects), reconstructing projects");
2162
- for (const projectSuite of this.suite.suites) {
2163
- const project = projectSuite.project();
2164
- if (project) {
2165
- const name = project.name || "default";
2166
- if (!this.reconstructedProjects.has(name)) {
2167
- this.reconstructedProjects.set(name, {
2168
- id: name,
2169
- name,
2170
- testDir: project.testDir,
2171
- outputDir: project.outputDir,
2172
- timeout: project.timeout,
2173
- retries: project.retries,
2174
- repeatEach: project.repeatEach,
2175
- metadata: project.metadata ?? {},
2176
- testMatch: Array.isArray(project.testMatch) ? project.testMatch.map(String) : [String(project.testMatch)],
2177
- testIgnore: Array.isArray(project.testIgnore) ? project.testIgnore.map(String) : [String(project.testIgnore)]
2178
- });
2179
- }
2180
- }
2181
- }
2182
- if (this.reconstructedProjects.size === 0) {
2183
- this.collectProjectsFromTests(this.suite);
2184
- }
2185
- this.log("\u{1F504} Reconstructed projects", {
2186
- count: this.reconstructedProjects.size,
2187
- names: Array.from(this.reconstructedProjects.keys())
2188
- });
2189
- }
2190
- collectProjectsFromTests(suite) {
2191
- for (const test of suite.allTests()) {
2192
- const project = test.parent.project();
2193
- const projectName = project?.name || "default";
2194
- if (!this.reconstructedProjects.has(projectName)) {
2195
- if (project) {
2196
- this.reconstructedProjects.set(projectName, {
2197
- id: projectName,
2198
- name: projectName,
2199
- testDir: project.testDir,
2200
- outputDir: project.outputDir,
2201
- timeout: project.timeout,
2202
- retries: project.retries,
2203
- repeatEach: project.repeatEach,
2204
- metadata: project.metadata ?? {},
2205
- testMatch: Array.isArray(project.testMatch) ? project.testMatch.map(String) : [String(project.testMatch)],
2206
- testIgnore: Array.isArray(project.testIgnore) ? project.testIgnore.map(String) : [String(project.testIgnore)]
2207
- });
2208
- } else {
2209
- this.reconstructedProjects.set(projectName, {
2210
- id: projectName,
2211
- name: projectName,
2212
- testDir: "",
2213
- outputDir: "",
2214
- timeout: 0,
2215
- retries: 0,
2216
- repeatEach: 1,
2217
- metadata: {},
2218
- testMatch: [],
2219
- testIgnore: []
2220
- });
2221
- }
2222
- }
2223
- }
2224
- }
2225
- serializeConfig() {
2226
- const c = this.config;
2227
- const projects = c.projects.length > 0 ? c.projects.map((p) => this.serializeProject(p)) : Array.from(this.reconstructedProjects.values());
2228
- return {
2229
- rootDir: c.rootDir,
2230
- configFile: c.configFile ?? void 0,
2231
- version: c.version,
2232
- workers: c.workers,
2233
- fullyParallel: c.fullyParallel,
2234
- forbidOnly: c.forbidOnly,
2235
- globalTimeout: c.globalTimeout,
2236
- maxFailures: c.maxFailures,
2237
- metadata: c.metadata ?? {},
2238
- projects,
2239
- shard: c.shard ?? null,
2240
- tags: c.tags ?? [],
2241
- updateSourceMethod: c.updateSourceMethod,
2242
- preserveOutput: c.preserveOutput,
2243
- quiet: c.quiet,
2244
- reportSlowTests: c.reportSlowTests ?? null,
2245
- webServer: c.webServer ?? null,
2246
- globalSetup: c.globalSetup ?? null,
2247
- globalTeardown: c.globalTeardown ?? null,
2248
- grep: c.grep,
2249
- grepInvert: c.grepInvert,
2250
- reporter: c.reporter,
2251
- updateSnapshots: c.updateSnapshots
2252
- };
2253
- }
2254
- serializeProject(p) {
2255
- return {
2256
- id: p.name,
2257
- name: p.name,
2258
- testDir: p.testDir,
2259
- outputDir: p.outputDir,
2260
- timeout: p.timeout,
2261
- retries: p.retries,
2262
- repeatEach: p.repeatEach,
2263
- metadata: p.metadata ?? {},
2264
- testMatch: Array.isArray(p.testMatch) ? p.testMatch.map(String) : [String(p.testMatch)],
2265
- testIgnore: Array.isArray(p.testIgnore) ? p.testIgnore.map(String) : [String(p.testIgnore)]
2266
- };
2267
- }
2268
- serializeSuites() {
2269
- const fileSuites = /* @__PURE__ */ new Map();
2270
- for (const projectSuite of this.suite.suites) {
2271
- for (const fileSuite of projectSuite.suites) {
2272
- const file = fileSuite.location?.file;
2273
- if (!file) continue;
2274
- const fileName = this.getFileName(file);
2275
- const serialized = this.serializeSuite(fileSuite, fileName);
2276
- if (!serialized) continue;
2277
- const existing = fileSuites.get(file);
2278
- if (existing) {
2279
- this.mergeSuites(existing, serialized);
2280
- } else {
2281
- fileSuites.set(file, serialized);
2282
- }
2283
- }
2284
- }
2285
- return Array.from(fileSuites.values());
2286
- }
2287
- serializeSuite(suite, fileName) {
2288
- const allTests = suite.allTests();
2289
- if (allTests.length === 0) return null;
2290
- const childSuites = [];
2291
- for (const child of suite.suites) {
2292
- const serialized = this.serializeSuite(child, fileName);
2293
- if (serialized) childSuites.push(serialized);
2294
- }
2295
- const specs = [];
2296
- for (const test of suite.tests) {
2297
- const testData = this.tests.get(test.id);
2298
- if (testData) {
2299
- specs.push(this.serializeSpec(testData));
2300
- }
2301
- }
2302
- return {
2303
- title: suite.title || fileName,
2304
- file: fileName,
2305
- line: suite.location?.line ?? 0,
2306
- column: suite.location?.column ?? 0,
2307
- specs,
2308
- suites: childSuites.length ? childSuites : void 0
2309
- };
2310
- }
2311
- mergeSuites(to, from) {
2312
- for (const fromSuite of from.suites || []) {
2313
- const toSuite = to.suites?.find(
2314
- (s) => s.title === fromSuite.title && s.line === fromSuite.line && s.column === fromSuite.column
2315
- );
2316
- if (toSuite) {
2317
- this.mergeSuites(toSuite, fromSuite);
2318
- } else {
2319
- to.suites = to.suites ?? [];
2320
- to.suites.push(fromSuite);
2321
- }
2322
- }
2323
- to.specs.push(...from.specs);
2324
- }
2325
- serializeSpec(data) {
2326
- const { testCase } = data;
2327
- const outcome = testCase.outcome();
2328
- return {
2329
- id: testCase.id,
2330
- title: testCase.title,
2331
- file: this.getFileName(testCase.location.file),
2332
- line: testCase.location.line,
2333
- column: testCase.location.column,
2334
- tags: this.extractTags(testCase),
2335
- ok: outcome === "expected" || outcome === "flaky" || outcome === "skipped",
2336
- tests: [this.serializeTest(data)]
2337
- };
2338
- }
2339
- extractTags(testCase) {
2340
- const runtimeTags = testCase.tags;
2341
- if (runtimeTags && runtimeTags.length > 0) {
2342
- return runtimeTags.map((t) => t.replace(/^@/, ""));
2343
- }
2344
- const titleTags = testCase.title.match(/@[\w-]+/g);
2345
- return titleTags?.map((t) => t.replace(/^@/, "")) ?? [];
2346
- }
2347
- serializeTest(data) {
2348
- const { testCase, results } = data;
2349
- const projectName = this.getProjectName(testCase);
2350
- return {
2351
- projectId: projectName,
2352
- projectName,
2353
- timeout: testCase.timeout,
2354
- expectedStatus: testCase.expectedStatus,
2355
- annotations: this.serializeAnnotations(testCase.annotations),
2356
- results: results.map((r) => this.serializeTestResult(r)),
2357
- status: this.mapOutcome(testCase.outcome())
2358
- };
2359
- }
2360
- getProjectName(testCase) {
2361
- const project = testCase.parent.project();
2362
- if (project && typeof project.name === "string") {
2363
- return project.name;
2364
- }
2365
- let current = testCase.parent;
2366
- while (current) {
2367
- const suiteProject = current.project();
2368
- if (suiteProject && typeof suiteProject.name === "string") {
2369
- return suiteProject.name;
2370
- }
2371
- current = current.parent;
2372
- }
2373
- return "default";
2374
- }
2375
- serializeTestResult(r) {
2376
- return {
2377
- workerIndex: r.workerIndex,
2378
- parallelIndex: r.parallelIndex ?? 0,
2379
- status: r.status,
2380
- duration: r.duration,
2381
- startTime: r.startTime.toISOString(),
2382
- retry: r.retry,
2383
- errors: r.errors.map((e) => this.serializeError(e, true)),
2384
- error: r.error ? this.serializeError(r.error, false) : void 0,
2385
- errorLocation: r.error?.location,
2386
- stdout: r.stdout.map(
2387
- (s) => typeof s === "string" ? { text: s } : Buffer.isBuffer(s) ? { buffer: s.toString("base64") } : s
2388
- ),
2389
- stderr: r.stderr.map(
2390
- (s) => typeof s === "string" ? { text: s } : Buffer.isBuffer(s) ? { buffer: s.toString("base64") } : s
2391
- ),
2392
- attachments: r.attachments.map((a) => ({
2393
- name: a.name,
2394
- contentType: a.contentType,
2395
- path: a.path,
2396
- body: a.body ? a.body.toString("base64") : void 0
2397
- })),
2398
- steps: r.steps.map((s) => this.serializeStep(s)),
2399
- annotations: this.serializeAnnotations(
2400
- r.annotations ?? []
2401
- )
2402
- };
2403
- }
2404
- serializeStep(step) {
2405
- return {
2406
- title: step.title,
2407
- duration: step.duration,
2408
- error: step.error ? this.serializeError(step.error, false) : void 0,
2409
- steps: step.steps?.map((s) => this.serializeStep(s))
2410
- };
2411
- }
2412
- serializeError(error, includeContext) {
2413
- if (error.value !== void 0) {
2414
- return { message: error.value, value: error.value };
2415
- }
2416
- let msg = error.message ?? "Unknown error";
2417
- if (includeContext && !/^(\w+Error|Error):/.test(msg)) {
2418
- msg = "Error: " + msg;
2419
- }
2420
- if (includeContext) {
2421
- if (error.snippet) msg += "\n\n" + error.snippet;
2422
- if (error.stack) {
2423
- const frames = error.stack.split("\n").filter((l) => l.trim().startsWith("at "));
2424
- if (frames.length) msg += "\n" + frames.join("\n");
2425
- } else if (error.location) {
2426
- msg += `
2427
- at ${error.location.file}:${error.location.line}:${error.location.column}`;
2428
- }
2429
- }
2430
- return {
2431
- message: msg,
2432
- location: error.location,
2433
- stack: error.stack,
2434
- snippet: error.snippet
2435
- };
2436
- }
2437
- serializeAnnotations(annotations) {
2438
- return annotations.map((a) => ({ type: a.type, description: a.description, location: a.location }));
2439
- }
2440
- countTests(suite) {
2441
- let count = suite.tests?.length ?? 0;
2442
- for (const child of suite.suites ?? []) {
2443
- count += this.countTests(child);
2444
- }
2445
- return count;
2446
- }
2447
- getFileName(filePath) {
2448
- return filePath.split("/").pop() ?? filePath;
2449
- }
2450
- mapOutcome(outcome) {
2451
- if (outcome === "expected" || outcome === "unexpected" || outcome === "flaky" || outcome === "skipped") {
2452
- return outcome;
2453
- }
2454
- return "unexpected";
2455
- }
2456
- printSummary() {
2457
- const pkgVersion = getPackageVersion2();
2458
- const playwrightVersion = this.config.version;
2459
- const projectNames = this.config.projects.length > 0 ? this.config.projects.map((p) => p.name).join(", ") : Array.from(this.reconstructedProjects.keys()).join(", ") || "default";
2460
- const projectCount = this.config.projects.length > 0 ? this.config.projects.length : this.reconstructedProjects.size || 1;
2461
- const rule = pluralRules.select(projectCount);
2462
- console.log("\n======================================================\n");
2463
- console.log(`\u{1F99D} Checkly reporter: ${pkgVersion}`);
2464
- console.log(`\u{1F3AD} Playwright: ${playwrightVersion}`);
2465
- console.log(`\u{1F4D4} ${projectForms[rule]}: ${projectNames}`);
2466
- for (const line of this.summaryLines) {
2467
- console.log(line);
2468
- }
2469
- console.log("\n======================================================");
2470
- }
2471
- };
2472
-
2473
- // src/index.ts
2474
- var ChecklyReporter = class extends BaseReporter {
2475
- constructor(options = {}) {
2476
- super(options);
2477
- this.use(checklyUpload(options));
2478
- }
2479
- };
2480
- var index_default = ChecklyReporter;
2481
- function createChecklyReporter(options = {}) {
2482
- return ["@checkly/playwright-reporter", options];
2483
- }
2484
- // Annotate the CommonJS export names for ESM import in node:
2485
- 0 && (module.exports = {
2486
- MissingCredentialsError,
2487
- createChecklyReporter
2488
- });
1
+ 'use strict';const a0_0x2586d5=a0_0x5332;(function(_0x1f3f8a,_0x44c744){const _0x1b417d=a0_0x5332,_0xd5a6dd=_0x1f3f8a();while(!![]){try{const _0x648189=-parseInt(_0x1b417d(0x26a))/0x1*(parseInt(_0x1b417d(0x88))/0x2)+parseInt(_0x1b417d(0x8e))/0x3+-parseInt(_0x1b417d(0x9a))/0x4+-parseInt(_0x1b417d(0x2b0))/0x5+parseInt(_0x1b417d(0x11f))/0x6*(-parseInt(_0x1b417d(0xfa))/0x7)+parseInt(_0x1b417d(0x107))/0x8+parseInt(_0x1b417d(0x208))/0x9*(parseInt(_0x1b417d(0x259))/0xa);if(_0x648189===_0x44c744)break;else _0xd5a6dd['push'](_0xd5a6dd['shift']());}catch(_0x567799){_0xd5a6dd['push'](_0xd5a6dd['shift']());}}}(a0_0x1f70,0x64baf));var __create=Object[a0_0x2586d5(0xbc)],__defProp=Object[a0_0x2586d5(0x247)],__getOwnPropDesc=Object[a0_0x2586d5(0x198)],__getOwnPropNames=Object[a0_0x2586d5(0x8c)],__getProtoOf=Object[a0_0x2586d5(0x287)],__hasOwnProp=Object[a0_0x2586d5(0x7f)][a0_0x2586d5(0x1ad)],__export=(_0x2dc05a,_0x38300c)=>{for(var _0x153b98 in _0x38300c)__defProp(_0x2dc05a,_0x153b98,{'get':_0x38300c[_0x153b98],'enumerable':!![]});},__copyProps=(_0x1ff4cd,_0x1c2801,_0x58d2c5,_0x3a5e54)=>{const _0x51558f=a0_0x2586d5;if(_0x1c2801&&typeof _0x1c2801===_0x51558f(0x24c)||typeof _0x1c2801===_0x51558f(0x14f)){for(let _0x4c1357 of __getOwnPropNames(_0x1c2801))if(!__hasOwnProp[_0x51558f(0x146)](_0x1ff4cd,_0x4c1357)&&_0x4c1357!==_0x58d2c5)__defProp(_0x1ff4cd,_0x4c1357,{'get':()=>_0x1c2801[_0x4c1357],'enumerable':!(_0x3a5e54=__getOwnPropDesc(_0x1c2801,_0x4c1357))||_0x3a5e54[_0x51558f(0xf0)]});}return _0x1ff4cd;},__toESM=(_0x59cafb,_0x4b1880,_0x50e732)=>(_0x50e732=_0x59cafb!=null?__create(__getProtoOf(_0x59cafb)):{},__copyProps(_0x4b1880||!_0x59cafb||!_0x59cafb[a0_0x2586d5(0xb8)]?__defProp(_0x50e732,a0_0x2586d5(0x239),{'value':_0x59cafb,'enumerable':!![]}):_0x50e732,_0x59cafb)),__toCommonJS=_0x3d3b0c=>__copyProps(__defProp({},a0_0x2586d5(0xb8),{'value':!![]}),_0x3d3b0c),index_exports={};__export(index_exports,{'MissingCredentialsError':()=>MissingCredentialsError,'createChecklyReporter':()=>createChecklyReporter,'default':()=>index_default}),module[a0_0x2586d5(0x1fa)]=__toCommonJS(index_exports);var fs5=__toESM(require('fs')),path4=__toESM(require(a0_0x2586d5(0xaf))),import_axios=__toESM(require(a0_0x2586d5(0x225))),import_form_data=__toESM(require(a0_0x2586d5(0x23c))),ApiError=class extends Error{[a0_0x2586d5(0x226)];constructor(_0x3e2a84,_0x14d1ac){const _0x44f321=a0_0x2586d5;super(_0x3e2a84[_0x44f321(0x112)],_0x14d1ac),this[_0x44f321(0xe2)]=this[_0x44f321(0x8a)][_0x44f321(0xe2)],this[_0x44f321(0x226)]=_0x3e2a84;}},ValidationError=class extends ApiError{},UnauthorizedError=class extends ApiError{},ForbiddenError=class extends ApiError{},NotFoundError=class extends ApiError{},RequestTimeoutError=class extends ApiError{},ConflictError=class extends ApiError{},ServerError=class extends ApiError{},MiscellaneousError=class extends ApiError{},MissingResponseError=class extends Error{constructor(_0x3040a1,_0x525cf5){const _0x1887f7=a0_0x2586d5;super(_0x3040a1,_0x525cf5),this[_0x1887f7(0xe2)]=_0x1887f7(0x18b);}};function parseErrorData(_0xd182f6,_0x108f86){const _0x1d2fc4=a0_0x2586d5;if(!_0xd182f6)return void 0x0;if(typeof _0xd182f6===_0x1d2fc4(0x24c)&&_0xd182f6!==null){const _0x586690=_0xd182f6;if(_0x586690[_0x1d2fc4(0x1fe)]&&_0x586690[_0x1d2fc4(0x1a1)]&&_0x586690[_0x1d2fc4(0x112)])return{'statusCode':_0x586690[_0x1d2fc4(0x1fe)],'error':_0x586690[_0x1d2fc4(0x1a1)],'message':_0x586690[_0x1d2fc4(0x112)],'errorCode':_0x586690[_0x1d2fc4(0x171)]};if(_0x586690[_0x1d2fc4(0x1a1)]&&_0x586690[_0x1d2fc4(0x112)])return{'statusCode':_0x108f86,'error':_0x586690[_0x1d2fc4(0x1a1)],'message':_0x586690[_0x1d2fc4(0x112)],'errorCode':_0x586690[_0x1d2fc4(0x171)]};if(_0x586690[_0x1d2fc4(0x1a1)])return{'statusCode':_0x108f86,'error':_0x586690[_0x1d2fc4(0x1a1)],'message':_0x586690[_0x1d2fc4(0x1a1)]};if(_0x586690[_0x1d2fc4(0x112)])return{'statusCode':_0x108f86,'error':_0x586690[_0x1d2fc4(0x112)],'message':_0x586690[_0x1d2fc4(0x112)],'errorCode':_0x586690[_0x1d2fc4(0x171)]};}if(typeof _0xd182f6===_0x1d2fc4(0x100))return{'statusCode':_0x108f86,'error':_0xd182f6,'message':_0xd182f6};return void 0x0;}function handleErrorResponse(_0x10ea87){const _0x1c0da0=a0_0x2586d5,_0x281812=_0x10ea87;if(!_0x281812[_0x1c0da0(0x169)])throw new MissingResponseError(_0x281812[_0x1c0da0(0x112)]||_0x1c0da0(0x14b));const {status:_0x3651b3,data:_0x130740}=_0x281812[_0x1c0da0(0x169)],_0x354884=parseErrorData(_0x130740,_0x3651b3)??{'statusCode':_0x3651b3,'error':_0x1c0da0(0x16c),'message':_0x281812[_0x1c0da0(0x112)]||_0x1c0da0(0x1b7)};switch(_0x3651b3){case 0x190:throw new ValidationError(_0x354884);case 0x191:throw new UnauthorizedError(_0x354884);case 0x193:throw new ForbiddenError(_0x354884);case 0x194:throw new NotFoundError(_0x354884);case 0x198:throw new RequestTimeoutError(_0x354884);case 0x199:throw new ConflictError(_0x354884);default:if(_0x3651b3>=0x1f4)throw new ServerError(_0x354884);throw new MiscellaneousError(_0x354884);}}function createClient(_0x38cb0c){const _0x94b0ab=a0_0x2586d5,_0x23ce09=import_axios[_0x94b0ab(0x239)][_0x94b0ab(0xbc)]({'baseURL':_0x38cb0c[_0x94b0ab(0x20c)],'timeout':0x1d4c0,'maxContentLength':Number[_0x94b0ab(0xd2)],'maxBodyLength':Number[_0x94b0ab(0xd2)]});return _0x23ce09[_0x94b0ab(0xec)][_0x94b0ab(0xa2)][_0x94b0ab(0x1bf)](_0x284f45=>{const _0x42d9ce=_0x94b0ab;return _0x284f45[_0x42d9ce(0x1e5)]&&(_0x284f45[_0x42d9ce(0x1e5)][_0x42d9ce(0x277)]=_0x42d9ce(0x12c)+_0x38cb0c[_0x42d9ce(0x92)],_0x284f45[_0x42d9ce(0x1e5)][_0x42d9ce(0x17a)]=_0x38cb0c[_0x42d9ce(0x1da)],_0x284f45[_0x42d9ce(0x1e5)][_0x42d9ce(0x153)]=_0x38cb0c[_0x42d9ce(0x274)][_0x42d9ce(0x141)],_0x284f45[_0x42d9ce(0x1e5)][_0x42d9ce(0x127)]=_0x38cb0c[_0x42d9ce(0x274)][_0x42d9ce(0x216)],_0x284f45[_0x42d9ce(0x1e5)][_0x42d9ce(0x183)]=_0x38cb0c[_0x42d9ce(0x274)][_0x42d9ce(0x172)],_0x284f45[_0x42d9ce(0x1e5)][_0x42d9ce(0x14c)]=_0x38cb0c[_0x42d9ce(0x274)][_0x42d9ce(0xb7)],_0x284f45[_0x42d9ce(0x1e5)][_0x42d9ce(0x18a)]=_0x38cb0c[_0x42d9ce(0x274)][_0x42d9ce(0x249)]),_0x284f45;}),_0x23ce09[_0x94b0ab(0xec)][_0x94b0ab(0x169)][_0x94b0ab(0x1bf)](_0x5b358c=>_0x5b358c,_0x867d20=>handleErrorResponse(_0x867d20)),{'testSessions':{async 'create'(_0x112a65){const _0xe3e7d0=_0x94b0ab,_0x5815fc=await _0x23ce09[_0xe3e7d0(0x90)](_0xe3e7d0(0x126),_0x112a65);return _0x5815fc[_0xe3e7d0(0x226)];},async 'uploadAsset'(_0x45cd10,_0xbd91f9,_0x39cf4a){const _0x4bb1c5=_0x94b0ab,_0x2f2d=new import_form_data[(_0x4bb1c5(0x239))]();_0x2f2d[_0x4bb1c5(0x2a0)](_0x4bb1c5(0x27b),_0x39cf4a,{'filename':_0x4bb1c5(0xb3),'contentType':_0x4bb1c5(0x177)});const _0x44ae79=await _0x23ce09[_0x4bb1c5(0x90)](_0x4bb1c5(0x140)+_0x45cd10+_0x4bb1c5(0xba)+_0xbd91f9+_0x4bb1c5(0x24b),_0x2f2d,{'headers':_0x2f2d[_0x4bb1c5(0x2a9)]()});return _0x44ae79[_0x4bb1c5(0x226)];},async 'updateResult'(_0x24a205,_0x2baab5,_0x3ac9e6){const _0x5a2156=_0x94b0ab,_0x263914=await _0x23ce09[_0x5a2156(0x90)](_0x5a2156(0x140)+_0x24a205+_0x5a2156(0xba)+_0x2baab5,_0x3ac9e6);return _0x263914[_0x5a2156(0x226)];}}};}var ansiRegex=new RegExp([a0_0x2586d5(0x2ae),a0_0x2586d5(0x15b)][a0_0x2586d5(0x21b)]('|'),'g'),fs=__toESM(require('fs')),path=__toESM(require(a0_0x2586d5(0xaf))),AssetCollector=class{constructor(_0x11bfb2){const _0x3555fc=a0_0x2586d5;this[_0x3555fc(0x162)]=_0x11bfb2;}async[a0_0x2586d5(0x2af)](_0x40ac9b){const _0x2ba1a6=a0_0x2586d5,_0x156b12=[],_0x583f49=new Set();return _0x40ac9b&&this[_0x2ba1a6(0x22b)](_0x40ac9b,_0x156b12,_0x583f49),fs[_0x2ba1a6(0x170)](this[_0x2ba1a6(0x162)])&&await this[_0x2ba1a6(0x251)](this[_0x2ba1a6(0x162)],_0x156b12,_0x583f49),_0x156b12;}[a0_0x2586d5(0x22b)](_0x30f851,_0x4b2beb,_0x11225a){const _0x39299f=a0_0x2586d5,_0x2f7a0e=_0x56ce39=>{const _0x3ea970=a0_0x5332;for(const _0x16dc73 of _0x56ce39){if(_0x16dc73[_0x3ea970(0x94)]&&Array[_0x3ea970(0x207)](_0x16dc73[_0x3ea970(0x94)]))for(const _0x2d5364 of _0x16dc73[_0x3ea970(0x94)]){if(_0x2d5364[_0x3ea970(0xaf)]&&typeof _0x2d5364[_0x3ea970(0xaf)]===_0x3ea970(0x100)){const _0x1e5a81=_0x2d5364[_0x3ea970(0xaf)];if(_0x11225a[_0x3ea970(0xfb)](_0x1e5a81))continue;if(!fs[_0x3ea970(0x170)](_0x1e5a81))continue;const _0x5c5dbe=this[_0x3ea970(0x214)](_0x1e5a81),_0x1a2449=this[_0x3ea970(0x10f)](_0x1e5a81,_0x5c5dbe);_0x4b2beb[_0x3ea970(0x252)](_0x1a2449),_0x11225a[_0x3ea970(0x193)](_0x1e5a81);}}}},_0x642578=_0x36c33f=>{const _0x4cf849=a0_0x5332;if(_0x36c33f[_0x4cf849(0x1c6)])for(const _0xba9d4 of _0x36c33f[_0x4cf849(0x1c6)]){if(_0xba9d4[_0x4cf849(0x28d)])for(const _0x5806e8 of _0xba9d4[_0x4cf849(0x28d)]){_0x5806e8[_0x4cf849(0x27f)]&&_0x2f7a0e(_0x5806e8[_0x4cf849(0x27f)]);}}if(_0x36c33f[_0x4cf849(0xcd)])for(const _0x3ce1ff of _0x36c33f[_0x4cf849(0xcd)]){_0x642578(_0x3ce1ff);}};if(_0x30f851[_0x39299f(0xcd)])for(const _0x8f69 of _0x30f851[_0x39299f(0xcd)]){_0x642578(_0x8f69);}}[a0_0x2586d5(0x214)](_0x20c947){const _0x148ff4=a0_0x2586d5,_0x9b3ac1=_0x20c947[_0x148ff4(0x23a)](/\\/g,'/'),_0x1b1810=_0x9b3ac1[_0x148ff4(0x16d)](_0x148ff4(0xff));if(_0x1b1810!==-0x1)return _0x9b3ac1[_0x148ff4(0xab)](_0x1b1810);const _0x3771e9=_0x9b3ac1[_0x148ff4(0x2a4)](/.*?[\w-]*blob-report[\w-]*\/resources\/(.+)$/);if(_0x3771e9)return _0x148ff4(0xc7)+_0x3771e9[0x1];const _0x3847ce=_0x9b3ac1[_0x148ff4(0x16d)](_0x148ff4(0x289));if(_0x3847ce!==-0x1){const _0xf84960=_0x9b3ac1[_0x148ff4(0x1e9)]('/')[_0x148ff4(0x104)]()||'';return _0x148ff4(0xc7)+_0xf84960;}const _0x5093bb=_0x9b3ac1[_0x148ff4(0x1e9)]('/');if(_0x5093bb[_0x148ff4(0x24d)]>=0x2)return _0x148ff4(0xff)+_0x5093bb[_0x148ff4(0x17b)](-0x2)[_0x148ff4(0x21b)]('/');return _0x148ff4(0xff)+path[_0x148ff4(0x1ce)](_0x20c947);}async[a0_0x2586d5(0x251)](_0x33f929,_0x471c7e,_0x2b698e){const _0x2eed63=a0_0x2586d5;let _0x2659ba;try{_0x2659ba=fs[_0x2eed63(0xfd)](_0x33f929,{'withFileTypes':!![]});}catch{return;}const _0x10ff7d=path[_0x2eed63(0x1ce)](path[_0x2eed63(0xf5)](this[_0x2eed63(0x162)]));for(const _0x5bc743 of _0x2659ba){const _0x153791=path[_0x2eed63(0x21b)](_0x33f929,_0x5bc743[_0x2eed63(0xe2)]),_0x34509b=path[_0x2eed63(0x19e)](this[_0x2eed63(0x162)],_0x153791),_0x53298f=path[_0x2eed63(0x21b)](_0x10ff7d,_0x34509b);if(this[_0x2eed63(0x23e)](_0x5bc743[_0x2eed63(0xe2)]))continue;if(_0x5bc743[_0x2eed63(0x25f)]())await this[_0x2eed63(0x251)](_0x153791,_0x471c7e,_0x2b698e);else{if(_0x5bc743[_0x2eed63(0x1f2)]()){if(!_0x2b698e[_0x2eed63(0xfb)](_0x153791)){const _0xf05c81=this[_0x2eed63(0x10f)](_0x153791,_0x53298f);_0x471c7e[_0x2eed63(0x252)](_0xf05c81),_0x2b698e[_0x2eed63(0x193)](_0x153791);}}}}}[a0_0x2586d5(0x23e)](_0x128743){const _0x4a2ec7=a0_0x2586d5,_0x296bbe=[/^\./,/\.tmp$/i,/~$/,/\.swp$/i,/\.lock$/i,/^playwright-test-report\.json$/i];return _0x296bbe[_0x4a2ec7(0x24e)](_0x3fa96b=>_0x3fa96b[_0x4a2ec7(0xca)](_0x128743));}[a0_0x2586d5(0x10f)](_0x41c14b,_0x465b24){const _0xb40d94=a0_0x2586d5,_0x381f92=path[_0xb40d94(0xd0)](_0x41c14b)[_0xb40d94(0x77)](),{type:_0x24baa2,contentType:_0x4ea2de}=this[_0xb40d94(0x86)](_0x381f92),_0x565c11=_0x465b24[_0xb40d94(0x1e9)](path[_0xb40d94(0x209)])[_0xb40d94(0x21b)]('/');return{'sourcePath':_0x41c14b,'archivePath':_0x565c11,'type':_0x24baa2,'contentType':_0x4ea2de};}[a0_0x2586d5(0x86)](_0x3811ec){const _0x9a0113=a0_0x2586d5;if([_0x9a0113(0x271),_0x9a0113(0x130),_0x9a0113(0x138),_0x9a0113(0x1d2),_0x9a0113(0x7a),_0x9a0113(0x17e)][_0x9a0113(0x275)](_0x3811ec))return{'type':_0x9a0113(0x22d),'contentType':this[_0x9a0113(0x296)](_0x3811ec)};if([_0x9a0113(0xa9),_0x9a0113(0x144),_0x9a0113(0x87),_0x9a0113(0x143)][_0x9a0113(0x275)](_0x3811ec))return{'type':_0x9a0113(0x109),'contentType':this[_0x9a0113(0x75)](_0x3811ec)};if(_0x3811ec===_0x9a0113(0x21c))return{'type':_0x9a0113(0x15d),'contentType':_0x9a0113(0x177)};if(_0x3811ec===_0x9a0113(0x1e6)||_0x3811ec===_0x9a0113(0x121))return{'type':_0x9a0113(0x10a),'contentType':_0x9a0113(0x1e7)};if(_0x3811ec===_0x9a0113(0x72))return{'type':_0x9a0113(0x10a),'contentType':_0x9a0113(0x1e2)};if(_0x3811ec===_0x9a0113(0xe1)||_0x3811ec===_0x9a0113(0x12a))return{'type':_0x9a0113(0x10a),'contentType':_0x9a0113(0x16a)};return{'type':_0x9a0113(0x106),'contentType':_0x9a0113(0xa5)};}[a0_0x2586d5(0x296)](_0x9b3f15){const _0x257cd0=a0_0x2586d5,_0x553a6a={'.png':_0x257cd0(0x1a5),'.jpg':_0x257cd0(0x1dc),'.jpeg':_0x257cd0(0x1dc),'.gif':_0x257cd0(0xf2),'.bmp':_0x257cd0(0x99),'.svg':_0x257cd0(0x80)};return _0x553a6a[_0x9b3f15]||_0x257cd0(0x1a5);}[a0_0x2586d5(0x75)](_0x259b17){const _0x3c22c7=a0_0x2586d5,_0x5f1562={'.webm':_0x3c22c7(0xfc),'.mp4':_0x3c22c7(0x91),'.avi':_0x3c22c7(0x84),'.mov':_0x3c22c7(0x282)};return _0x5f1562[_0x259b17]||_0x3c22c7(0xfc);}};function detectCI(){const _0x1ad514=a0_0x2586d5;if(process.env.GITHUB_ACTIONS===_0x1ad514(0xe0))return{'environment':'ci','ciProvider':_0x1ad514(0x299),'repositoryId':process.env.GITHUB_REPOSITORY};if(process.env.GITLAB_CI===_0x1ad514(0xe0))return{'environment':'ci','ciProvider':_0x1ad514(0x1d5),'repositoryId':process.env.CI_PROJECT_PATH};if(process.env.JENKINS_URL)return{'environment':'ci','ciProvider':_0x1ad514(0x176),'repositoryId':process.env.JOB_NAME};if(process.env.CIRCLECI===_0x1ad514(0xe0))return{'environment':'ci','ciProvider':_0x1ad514(0xaa),'repositoryId':process.env.CIRCLE_PROJECT_REPONAME};if(process.env.TRAVIS===_0x1ad514(0xe0))return{'environment':'ci','ciProvider':_0x1ad514(0xe6),'repositoryId':process.env.TRAVIS_REPO_SLUG};if(process.env.TF_BUILD===_0x1ad514(0x29d))return{'environment':'ci','ciProvider':_0x1ad514(0x156),'repositoryId':process.env.BUILD_REPOSITORY_NAME};if(process.env.BITBUCKET_PIPELINE_UUID)return{'environment':'ci','ciProvider':_0x1ad514(0x1be),'repositoryId':process.env.BITBUCKET_REPO_SLUG};if(process.env.CI===_0x1ad514(0xe0)||process.env.CI==='1')return{'environment':'ci','ciProvider':_0x1ad514(0x250)};return{'environment':_0x1ad514(0x2a3),'ciProvider':_0x1ad514(0x2a3)};}var import_node_crypto=require(a0_0x2586d5(0x268));function normalizeType(_0x550c8d){const _0x77332b=a0_0x2586d5;switch(_0x550c8d[_0x77332b(0x77)]()){case _0x77332b(0x164):return _0x77332b(0x164);case _0x77332b(0x1a1):return _0x77332b(0x1a1);case _0x77332b(0x117):return _0x77332b(0x117);case _0x77332b(0x14a):case _0x77332b(0xce):return _0x77332b(0x14a);default:return _0x77332b(0x13c);}}function generateId(_0x4fc421,_0x5939fc,_0x2701e0,_0x64c7da){const _0x3fd7d4=a0_0x2586d5;return(0x0,import_node_crypto[_0x3fd7d4(0x1b3)])(_0x3fd7d4(0x15e))[_0x3fd7d4(0x2ac)](_0x4fc421+'-'+_0x5939fc+'-'+_0x2701e0+'-'+_0x64c7da)[_0x3fd7d4(0x132)](_0x3fd7d4(0x230))[_0x3fd7d4(0xab)](0x0,0x10);}function toConsoleMessage(_0x5063d4){const _0x59593e=a0_0x2586d5,_0x10e8fa=_0x5063d4[_0x59593e(0x26d)]?.[_0x59593e(0x1b6)]||'';return{'id':generateId(_0x5063d4[_0x59593e(0x160)],_0x5063d4[_0x59593e(0xa3)],_0x5063d4[_0x59593e(0xc0)],_0x10e8fa),'location':{'url':_0x10e8fa,'columnNumber':_0x5063d4[_0x59593e(0x26d)]?.[_0x59593e(0xd4)]||0x0,'lineNumber':_0x5063d4[_0x59593e(0x26d)]?.[_0x59593e(0x19a)]||0x0},'text':_0x5063d4[_0x59593e(0xc0)]||'','timestamp':_0x5063d4[_0x59593e(0x160)],'type':normalizeType(_0x5063d4[_0x59593e(0xa3)])};}var import_node_child_process=require(a0_0x2586d5(0x175));function normalizeRepoUrl(_0x5a83fd){const _0x4ee864=a0_0x2586d5;let _0x429ebe=_0x5a83fd[_0x4ee864(0x23a)](/\.git$/,'');const _0x12aede=_0x429ebe[_0x4ee864(0x2a4)](/^git@([^:]+):(.+)$/);if(_0x12aede){const [,_0x5b6e08,_0x777ffd]=_0x12aede;_0x429ebe=_0x4ee864(0x199)+_0x5b6e08+'/'+_0x777ffd;}return _0x429ebe[_0x4ee864(0x2a8)](_0x4ee864(0x157))&&(_0x429ebe=_0x429ebe[_0x4ee864(0x23a)](/^ssh:\/\/(?:git@)?/,_0x4ee864(0x199))),_0x429ebe;}function execGit(_0x19b0ed){const _0x23f105=a0_0x2586d5;try{return(0x0,import_node_child_process[_0x23f105(0x20a)])(_0x19b0ed,{'encoding':_0x23f105(0x243),'stdio':[_0x23f105(0x20e),_0x23f105(0x20e),_0x23f105(0x20e)]})[_0x23f105(0xe3)]();}catch{return void 0x0;}}function getGitHubInfo(){const _0x237de5=a0_0x2586d5,_0x1f63d0=process.env.GITHUB_REPOSITORY;if(!_0x1f63d0)return void 0x0;return{'repoUrl':_0x237de5(0x26c)+_0x1f63d0,'commitId':process.env.GITHUB_SHA,'branchName':process.env.GITHUB_REF_NAME,'commitOwner':process.env.GITHUB_ACTOR,'commitMessage':process.env.GITHUB_COMMIT_MESSAGE||execGit(_0x237de5(0x76))};}function getGitLabInfo(){const _0x13717f=a0_0x2586d5;if(process.env.GITLAB_CI!==_0x13717f(0xe0))return void 0x0;const _0x5454bc=process.env.CI_PROJECT_URL;if(!_0x5454bc)return void 0x0;return{'repoUrl':_0x5454bc,'commitId':process.env.CI_COMMIT_SHA,'branchName':process.env.CI_COMMIT_REF_NAME,'commitOwner':process.env.GITLAB_USER_NAME||process.env.CI_COMMIT_AUTHOR,'commitMessage':process.env.CI_COMMIT_MESSAGE};}function getJenkinsInfo(){const _0x534f4c=a0_0x2586d5;if(!process.env.JENKINS_URL)return void 0x0;const _0x19cf0f=process.env.GIT_URL;if(!_0x19cf0f)return void 0x0;return{'repoUrl':normalizeRepoUrl(_0x19cf0f),'commitId':process.env.GIT_COMMIT,'branchName':process.env.GIT_BRANCH||process.env.BRANCH_NAME||process.env.GIT_LOCAL_BRANCH,'commitOwner':process.env.GIT_AUTHOR_NAME,'commitMessage':execGit(_0x534f4c(0x76))};}function getCircleCIInfo(){const _0x12b102=a0_0x2586d5;if(process.env.CIRCLECI!==_0x12b102(0xe0))return void 0x0;const _0x1e2fc8=process.env.CIRCLE_PROJECT_USERNAME,_0x5d9edc=process.env.CIRCLE_PROJECT_REPONAME;if(!_0x1e2fc8||!_0x5d9edc)return void 0x0;const _0x61ba30=process.env.CIRCLE_VCS_TYPE||_0x12b102(0x286),_0x5aeb05=_0x61ba30===_0x12b102(0x201)?_0x12b102(0x12d):_0x12b102(0x1b1);return{'repoUrl':_0x12b102(0x199)+_0x5aeb05+'/'+_0x1e2fc8+'/'+_0x5d9edc,'commitId':process.env.CIRCLE_SHA1,'branchName':process.env.CIRCLE_BRANCH,'commitOwner':process.env.CIRCLE_USERNAME,'commitMessage':execGit(_0x12b102(0x76))};}function getTravisCIInfo(){const _0x4e1a3d=a0_0x2586d5;if(process.env.TRAVIS!==_0x4e1a3d(0xe0))return void 0x0;const _0x40a1eb=process.env.TRAVIS_REPO_SLUG;if(!_0x40a1eb)return void 0x0;return{'repoUrl':_0x4e1a3d(0x26c)+_0x40a1eb,'commitId':process.env.TRAVIS_COMMIT,'branchName':process.env.TRAVIS_PULL_REQUEST_BRANCH||process.env.TRAVIS_BRANCH,'commitOwner':void 0x0,'commitMessage':process.env.TRAVIS_COMMIT_MESSAGE};}function getAzureDevOpsInfo(){const _0x59470e=a0_0x2586d5;if(process.env.TF_BUILD!==_0x59470e(0x29d))return void 0x0;const _0x3ff532=process.env.BUILD_REPOSITORY_URI;if(!_0x3ff532)return void 0x0;let _0x30311d=process.env.SYSTEM_PULLREQUEST_SOURCEBRANCH||process.env.BUILD_SOURCEBRANCH;return _0x30311d?.[_0x59470e(0x2a8)](_0x59470e(0x167))&&(_0x30311d=_0x30311d[_0x59470e(0x23a)](_0x59470e(0x167),'')),{'repoUrl':normalizeRepoUrl(_0x3ff532),'commitId':process.env.BUILD_SOURCEVERSION,'branchName':_0x30311d,'commitOwner':process.env.BUILD_REQUESTEDFOR,'commitMessage':process.env.BUILD_SOURCEVERSIONMESSAGE};}function getBitbucketInfo(){const _0x388111=a0_0x2586d5;if(!process.env.BITBUCKET_PIPELINE_UUID)return void 0x0;const _0x52a1df=process.env.BITBUCKET_REPO_FULL_NAME;if(!_0x52a1df)return void 0x0;return{'repoUrl':_0x388111(0x1a2)+_0x52a1df,'commitId':process.env.BITBUCKET_COMMIT,'branchName':process.env.BITBUCKET_BRANCH,'commitOwner':void 0x0,'commitMessage':execGit(_0x388111(0x76))};}function getLocalGitInfo(){const _0x4d5ff1=a0_0x2586d5,_0xb80e28=execGit(_0x4d5ff1(0x215));if(!_0xb80e28)return void 0x0;const _0xe67e61=execGit(_0x4d5ff1(0xc3));if(!_0xe67e61)return void 0x0;let _0xe5990a=execGit(_0x4d5ff1(0x1d7));if(_0xe5990a===_0x4d5ff1(0xd5)){const _0x34a9bc=execGit(_0x4d5ff1(0x74));if(_0x34a9bc){const _0x48491f=_0x34a9bc[_0x4d5ff1(0x2a4)](/origin\/([^,\s]+)/);if(_0x48491f)_0xe5990a=_0x48491f[0x1];}}return{'repoUrl':normalizeRepoUrl(_0xe67e61),'commitId':execGit(_0x4d5ff1(0x25e)),'branchName':_0xe5990a!==_0x4d5ff1(0xd5)?_0xe5990a:void 0x0,'commitOwner':execGit(_0x4d5ff1(0x93)),'commitMessage':execGit(_0x4d5ff1(0x76))};}function getRepoInfo(){return getGitHubInfo()??getGitLabInfo()??getJenkinsInfo()??getCircleCIInfo()??getTravisCIInfo()??getAzureDevOpsInfo()??getBitbucketInfo()??getLocalGitInfo();}var import_node_crypto2=require(a0_0x2586d5(0x268)),fs2=__toESM(require('fs')),os=__toESM(require('os')),path2=__toESM(require(a0_0x2586d5(0xaf))),import_node_crypto3=require(a0_0x2586d5(0x268));function generateId2(_0x5b6ad0,_0x6af85,_0x297582){const _0x190160=a0_0x2586d5;return(0x0,import_node_crypto3[_0x190160(0x1b3)])(_0x190160(0x15e))[_0x190160(0x2ac)](_0x5b6ad0+'-'+_0x6af85+'-'+_0x297582)[_0x190160(0x132)](_0x190160(0x230))[_0x190160(0xab)](0x0,0x10);}function extractDomain(_0x26fc53){const _0x2f3607=a0_0x2586d5;try{return new URL(_0x26fc53)[_0x2f3607(0x10d)];}catch{return'';}}function headersArrayToRecord(_0x2eecf6){const _0x2d2f74=a0_0x2586d5,_0x31207a={};for(const {name:_0x5af647,value:_0x7cd3c9}of _0x2eecf6){_0x31207a[_0x5af647[_0x2d2f74(0x77)]()]=_0x7cd3c9;}return _0x31207a;}function a0_0x1f70(){const _0x35da6a=['AgvHzgvYCW','lMH0BwW','Dgv4Dc9ODg1S','BwTKAxjtEw5J','C3bSAxq','Bwv0ywrHDge','DhjHy2vqyxrO','iIWGDxnPBMCGiNbYB2r1y3rPB24I','C3vTBwfYEuXPBMvZ','D2vIu2vYDMvY','zgvJB2rL','uMvWB3j0igzPBguGBM90igzVDw5KoIa','yM9KEq','AxngAwXL','CMvKDwnL','Ahr0Chm6lY9HCgKTDgvZDc5JAgvJA2X5AheUy29T','CgXHExDYAwDODc10zxn0lxjLCg9YDc0','w0nOzwnRBhLDiezHAwXLzcb0BYb1CgXVywqGCMvZDwX0CZO','CMvJB25ZDhj1y3rqCM9Qzwn0C0LMtMvLzgvK','DMfSDwu','C2vYAwfSAxPLu3bLyW','zxHWB3j0CW','C2v0','CgfJA2fNzs5QC29U','zMLSzu5HBwu','C3rHDhvZq29Kzq','ihDVCMTLCNm','CgXHExDYAwDODc10zxn0CW','yML0yNvJA2v0','g1SZodS1oZe3mM0','uKve','ufDFuKvqt1jurvi','icdIGkiGipcFJQ0GugXHExDYAwDODcb2','yw5UB3rHDgLVBNm','AxnbCNjHEq','ndvdzvPZuxm','C2vW','zxHLy1n5BMm','y29UzMLN','yMfZzvvYBa','zMzSyxrL','CgLWzq','8j+uLYbdCMvHDgLUzYb0zxn0ihnLC3nPB24','DgL0Bgu','B3v0Chv0rgLY','Ahr0CdOVlZeYnY4WlJaUmtOZmdaW','Bwf4v2LKDgG','zgv0zxjTAw5LqxjJAgL2zvbHDgG','z2L0ihjLDI1WyxjZzsaTlwDPDc1KAxi','CgXHExDYAwDODfzLCNnPB24','g1SZodS1oZiWog0','C2nYzwvUC2HVDhmV','C2vYAwfSAxPLvgvZDfjLC3vSDa','vf9et1Do','AM9PBG','lNPPCa','8j+tNsbvCgrHDgLUzYb0zxn0ihjLC3vSDa','ugfZCYbsyxrL','DhjHBNnMB3jTsNnVBLjLCg9YDa','BwvYz2vtDwL0zxm','q1jpu1m','q0Hfq0Tmwv9bueLFs0vz','zMLSzq','u2TPCa','yxHPB3m','zgf0yq','C2HHCMq','w0nOzwnRBhKG','C3rHDa','BM9YBwfSAxPLqxr0ywnOBwvUDfbHDgG','y29SBgvJDefZC2v0C0zYB21szxbVCNq','Bwv0Ag9K','C2nYzwvUC2HVDa','iNr5CguIoIjJB25ZB2XLiG','y29UDgvUDa','Agv4','y3DK','C2vYAwfSAxPLqw5UB3rHDgLVBNm','lGOGifbYB3zPzguGDgHLBsb2AweGCMvWB3j0zxiGB3b0Aw9UCYbVCIbLBNzPCM9UBwvUDcb2yxjPywjSzxmUcIaGr2v0ihLVDxiGqvbjigTLEsbHDdOGAhr0Chm6lY9HChaUy2HLy2TSEwHXlMnVBs9Zzxr0Aw5NCY91C2vYl2fWAs1RzxLZcIaGt3iGDxnLigrYEvj1BJOGDhj1zsbMB3iGBg9JywWGCMvWB3j0igDLBMvYyxrPB24U','B25fBMq','AxnuB3rHBa','ueftu0ve','zNjVBq','C2TPChbLza','zgvMyxvSDa','CMvWBgfJzq','Bg9JywXizwfKzxjpzMzZzxq','zM9YBs1KyxrH','8j+oRcbtDgfYDgLUzYb0zxn0ihj1BG','C2HVDwXKu2TPCezPBgu','CMv0CMLLCW','q0Hfq0Tmwv9bq0npvu5ux0Le','DxbKyxrLuMvZDwX0','C3rLChnjBKzPBgu','DxrMltG','B25tDgrfCNi','BgLUAW','zMfPBgvK','zgvMAw5LuhjVCgvYDhK','ywnJB3vUDeLKic8Gq0Hfq0Tmwv9bq0npvu5ux0Le','BM9KzvzLCNnPB24','C3rHDhvZ','l2fZC2v0CW','B2jQzwn0','BgvUz3rO','C29Tzq','B25tDgvWqMvNAw4','Dw5RBM93BI1JAq','y29SBgvJDefZC2v0C1jLy3vYC2L2zq','ChvZAa','B25czwDPBG','y3jLyxrLuMvHzfn0CMvHBq','CMvWB3j0u2XVD1rLC3rZ','zMLUza','vhjHy2vszwfKzxiGBM90ig9Wzw5Lzc4Gq2fSBcbVCgvUkcKGzMLYC3qU','g1SYBq','mJuYndu0me9ACxzLsG','CgfZC2vK','zxHWzwn0zwrdB3vUDa','CMvWzwf0','C3rKB3v0','z2L0ihjLDI1WyxjZzsbirufe','AxneAxjLy3rVCNK','g1SZodS1oZmZBq','w0nOzwnRBhLDiefJy2vZCYbKzw5Pzwq6ifLVDsbKBYbUB3qGAgf2zsbHy2nLC3mGDg8GDgHPCYbHy2nVDw50lGOGifbSzwfZzsb2zxjPzNKGEw91CIbHy2nVDw50swqGB3b0Aw9Uig9YienirunltfLFqundt1vovf9jrcbLBNzPCM9UBwvUDcb2yxjPywjSzsbPCYbJB3jYzwn0lGOGieDLDcb5B3vYiefqssbRzxKGyxq6igH0DhbZoI8VyxbWlMnOzwnRBhLOCs5JB20VC2v0DgLUz3mVDxnLCI9HCgKTA2v5CW','y29SDw1UCW','zMv0y2G','zMLSDgvY','4PYfifnLC3nPB24Gy3jLyxrLza','B25tDgvWrw5K','D3jPDgvgAwXLu3LUyW','y3j5ChrV','w0nOzwnRBhKGuMvWB3j0zxjDienVDwXKig5VDcbMAw5KifPjucbLBMqGB2yGy2vUDhjHBcbKAxjLy3rVCNK','mxjYqMf2Aq','CgfYzw50','Ahr0Chm6lY9NAxrODwiUy29TlW','Bg9JyxrPB24','zM9YBwf0vgfN','EMXPyG','w0nOzwnRBhLDiezHAwXLzcb0BYbJCMvHDguGDgvZDcbZzxnZAw9UoG','lNbUzW','cLj1BM5PBMCG','Bwf4rMfPBhvYzxm','DgvSzw1LDhj5','Aw5JBhvKzxm','y29TChjLC3nLzfnPEMu','qxv0Ag9YAxPHDgLVBG','ugXHExDYAwDODcbuzxn0ifnLC3nPB246ia','DgvZDerPCG','ChjVBwLZAwz5','yxnZzxrZ','twLZC2LUz0nYzwrLBNrPywXZrxjYB3i','C29YDa','x2nOzwnRBhK','CMvZDwX0CW','uMf0zq','Dg9tDhjPBMC','DMLKzw8VCxvPy2T0Aw1L','vg90ywW','g1SZmM0','Aw5MBgf0zvjHDW','z2L0AhvI','z2v0uhjVDg90ExbLt2y','ugfZC2vK','l3jLC291CMnLCY8','y29TChjLC3nPB25nzxrOB2q','C2L6zq','z2v0rMLSzu5HBwu','DgvZDhm','z2XVyMfSrxjYB3jZ','y2HLy2TSEs1YzxbVCNqUEMLW','zM9YrwfJAa','w0nOzwnRBhLDiefZC2v0ihvWBg9HzcbMywLSzwq6','vKvsveLdquW','CMvHzfvjBNqXnKXf','iNr5CguIoIjYzxnVDxjJzs1ZBMfWC2HVDci','w0nOzwnRBhLDiezHAwXLzcb0BYbLEhrYywn0ihrYywnLigrHDge6ia','z2v0sw1Hz2vdB250zw50vhLWzq','DhjHy2uTBwLZC2LUzW','ChjVAMvJDa','z2L0AhvIlwfJDgLVBNm','g1SZodS1oZK5Bq','z2XVyMfSu2v0Dxa','8j+uLYbdAgvJA2X5ifrLC3qGu2vZC2LVBJOG','vhj1zq','CxvPzxq','8j+tPcbvCgXVywrPBMCGyxnZzxrZ','yxbWzw5K','rMfPBa','uhjVAMvJDa','Bg9JywW','Bwf0y2G','zMXVB3i','ChjVBwLZzxm','z2v0vwLUDde2','C3rHCNrZv2L0Aa','z2v0sgvHzgvYCW','BgvMDa','x3jLC291CMnLvhLWzq','DxbKyxrL','D29YA2vYCW','w1X1mdaXqLX1mda5qL1Bw1XDkcKJoZ9DkIG/oIG/oIG/oLTHlxPblvPCzf0Qkd86o1STys16qs1AxgrClYmMlJO9pYvaFL9DkIKQkt9CDtaWmdCP','y29SBgvJDefZC2v0CW','mJm1nJeYnuvWwwfeta','C3rHCNrLzerHDgvuAw1L','8j+uHcbszwnVBNn0CNvJDgvKihbYB2PLy3rZ','icaGicaGihWG','Dg90ywW','lMPZB24','ChjPBNrtDgvWCW','z2L0ihnOB3CGlxmGls1WCMv0DhK9juqGsevbra','z2v0vMLKzw9dB250zw50vhLWzq','z2L0igXVzYaTmsaTlwzVCM1HDd0LCW','Dg9mB3DLCKnHC2u','zxH0zw5ZAw9UCW','CgfYywXSzwXjBMrLEa','lMjTCa','DgvZDfnLC3nPB25Z','8j+tPIbfEhrYywn0Aw5NihrYywnLigrHDge','ywXSvgvZDhm','8j+tPIbAsvaGy3jLyxrLza','ChjVDg90ExbL','Aw1Hz2uVC3zNk3HTBa','x2fWAvjLCxvLC3q','B25tDgrpDxq','w0nOzwnRBhLDief1DgHLBNrPy2f0Aw9UigzHAwXLzdOGsw52ywXPzcbbueKGA2v5lGOGifbSzwfZzsb2zxjPzNKGEw91CIbHCgLlzxKGB3b0Aw9Uig9YienirunltfLFqvbjx0TfwsbLBNzPCM9UBwvUDcb2yxjPywjSzsbPCYbJB3jYzwn0lGOGieDLDcb5B3vYiefqssbRzxKGyxq6igH0DhbZoI8VyxbWlMnOzwnRBhLOCs5JB20VC2v0DgLUz3mVDxnLCI9HCgKTA2v5CW','DMLKzw8VEc1TC3zPzgvV','w0nOzwnRBhKGuMvWB3j0zxjDifnRAxbWAw5Nig1PC3nPBMCGyxnZzxq6ia','zgv0zxjTAw5LqxnZzxruExbL','lMf2Aq','ndy3mJGYqwTqBeLI','EMLWqNvMzMvY','y29UC3rYDwn0B3i','Dw5RBM93BG','z2v0t3DUuhjVCgvYDhLoyw1LCW','B3v0Chv0l3bSyxL3CMLNAhqTDgvZDc1YzxbVCNqUANnVBG','otyWodiYshvsthn2','EMLWugf0Aa','Cg9ZDa','DMLKzw8VBxa0','yxbPs2v5','z2L0igXVzYaTmsaTlwzVCM1HDd0Lyw4','yxr0ywnOBwvUDhm','C3rHy2S','zhj5uNvU','g1SZodS1oZm2Bq','z2v0uhjVAMvJDe5HBwu','Aw1Hz2uVyM1W','mtGYmdG0mg9RyLrQDW','D29YA2vYsw5KzxG','8j+pGsbuzxn0ihj1BIbMAw5PC2HLza','8j+uHcbezxrLy3rLzcbTzxjNzs1YzxbVCNrZihnJzw5HCMLVicHLBxb0EsbJB25MAwCUChjVAMvJDhmPlcbYzwnVBNn0CNvJDgLUzYbWCM9Qzwn0CW','iIbVChrPB24GAxmGBM8GBg9Uz2vYihn1ChbVCNrLzc4GvxnLig91Dhb1DerPCIbPBNn0zwfKlG','DxbKyxrLu25HChnOB3rZ','Dw5SAw5Ru3LUyW','lMnOzwnRBhKTCMvWB3j0lq','CMvXDwvZDa','BwvZC2fNzvr5Cgu','w0nOzwnRBhKGuMvWB3j0zxjDienVDwXKig5VDcbUB3jTywXPEMuGyxr0ywnOBwvUDcbWyxrOoIa','yxbWBgLJyxrPB24VB2n0zxqTC3rYzwfT','8j+tGsa','CMvJB25ZDhj1y3rLzfbYB2PLy3rZ','z2v0vwLUDdmY','lNDLyM0','y2LYy2XLy2K','C3vIC3rYAw5N','C3vTBwfYEs10ywjSzq','rMfPBgvK','ugfZCW','Cgf0Aa','C3vPDgu','zgv2zwXVCg1LBNq','zNvSBhLqyxjHBgXLBa','yxnZzxrZlNPPCa','ChjVAMvJDhm','y29UDgvUDfr5Cgu','yxbPs2v5ic8Gq0Hfq0Tmwv9bueLFs0vz','y2LfBNzPCM9UBwvUDa','x19LC01VzhvSzq','z2XVyMfSvgvHCMrVD24','l3jLC3vSDhmV','yNvMzMvY','y3jLyxrL','ChjLC2vYDMvpDxrWDxq','ChjPBNrtDw1Tyxj5','zw52AxjVBM1LBNq','Dgv4Da','u2TPChbLza','BwLU','z2L0ignVBMzPzYaTlwDLDcbYzw1VDguUB3jPz2LUlNvYBa','C2vYAwfSAxPLu3vPDgvZ','kgzSywT5kq','DgL0BgvqyxrO','DgvZDc1Yzxn1BhrZl3jLC291CMnLCY8','BgLUzq','twLZC2LUzYbYzxf1AxjLzcbdAgvJA2X5ignYzwrLBNrPywXZoIa','DgvZDa','cIaGicbHDca','x19ZBMfWC2HVDhnFxY8','C3vPDgvZ','D2fYBG','ywXPz24','zxH0BMfTzq','vf9ssuDiva','ue9tsvrjvKvFsu5gsu5jvfK','Bg9JywXLq29TCgfYzq','y29SDw1UtNvTyMvY','sevbra','C3rHDhm','rKfjteve','yMfZzty0','Dg9gAxHLza','yxqG','rxjYB3i6ia','D2LKDgG','y3jLyxrLu25PChbLDhm','ihrLC3rZ','C2vYAwfSAxPLq29UzMLN','Dhj1zq','lNr4Da','BMfTzq','DhjPBq','AxncDwzMzxi','BwfWt3v0y29Tzq','DhjHDMLZlwnP','y2vSBhm','C2TPChbLzenVDw50','DxbSB2fKqxnZzxq','DhjHBNnMB3jTqxr0ywnOBwvUDfbHDgHZ','g1SZodS1oZCWBq','Aw50zxjJzxb0B3jZ','Ahr0Chm6lY9HCgKTzgv2lMnOzwnRBhLOCs5JB20','qK9uve9nx1jjr0Hu','Dg9ju09tDhjPBMC','zw51BwvYywjSzq','C2vYAwfSAxPLrxjYB3i','Aw1Hz2uVz2LM','id4G','DxrPBa','CMvZB2X2zq','z3jLCeLUDMvYDa','C2vYAwfSAxPLuhjVAMvJDa','B25fEgL0','g1SZmw0','mtaYmZq2m2Hjy29isq','AgfZ','DMLKzw8VD2vIBq','CMvHzgrPCLn5BMm','tM8GDhjHy2uGzM91BMqGzM9YihrYywnLig1VzguGiG','DgvZDc1Yzxn1BhrZlW','C3rYAw5N','z2v0q29SB3i','Bw9Kzq','zMXHA3K','Cg9W','C3rLChm','B3rOzxi','mta5mdy1nMPsCLHbBa','z3vUEMLW','DMLKzw8','yxr0ywnOBwvUDa','DgvZDfnLC3nPB25jza','zgvSzxrL','Ag9ZDg5HBwu','CMv0CNK','y3jLyxrLqxnZzxq','zxH0CMfJDfrHz3m','zxHWzwn0zwq','BwvZC2fNzq','C3rHDhvZvgv4Da','B3v0Chv0rMLSzq','zMXHA3LdB3vUDa','g1SZodS1oZeZnM0','Aw5MBW','C2HVD1n1Bw1HCNLuywjSzq','ChjPBNrZvg9tDgrPBW','DgvZDfjLC3vSDhm','C3rHCNruAw1L','8j+rIYbszxbVCNrLCIbLEgL0Aw5N','B25qCM9NCMvZCW','z2v0','nKDOz2vdBW','w0nOzwnRBhLDievYCM9YigLUig9Urw5KoG','lMH0Bq','CMLNAhq','AxntzxbHCMf0B3i','wuvmte9x','zxH0CMfJDefSBev2zw50CW','l25LEhqVDgvZDc1ZzxnZAw9UCY9JCMvHDgu','Ec1JAgvJA2X5lxbSyxL3CMLNAhqTDMvYC2LVBG','DgvZDenHC2u','x19Zy3jLzw5ZAg90C19FlW','lMXVzW','B3v0Chv0ugf0Aa','qMvHCMvYia','yML0yNvJA2v0lM9YzW','B3v0y29Tzq','C3rHz2LUzW','lMPWzW','yNvPBgrszxbVCNq','zgLNzxn0','y2XLyxi','g1SXBq','rMXHA3K','zxHWzwn0zwrtDgf0Dxm','C3rKzxjY','lMPWzwC','8j+MNsbdAgvJA2X5ifjLCg9YDgvYihy','se9ssvPptLrbta','zM9YyMLKt25SEq','Bg9N','C25HChnOB3rZlW','y2f0y2G','ChjVAMvJDe5HBwu','l25LEhqVDgvZDc1ZzxnZAw9UCY8','CMvWB3j0zxjwzxjZAw9U','g1SWBq','lM1VDG','lM1Wna','yxjJAgL2zvbHDgG','y2fSBa','BgLZDezPBgvZ','Dw5LEhbLy3rLza','y3jLyxrLrxH0zw5ZAw9Utg9Nz2vY','D2fYBMLUzW','tMv0D29YAYbLCNjVCG','Ec1JAgvJA2X5lwnPlwvUDMLYB25Tzw50','y29UzMLNrMLSzq','DgvZDfjLC3vSDeLK','zNvUy3rPB24','B2zM','C3rYAw5NAwz5','x3jLCg9YDa','Ec1JAgvJA2X5lxjLCg9YDgvYlxzLCNnPB24','Bwf4','g1SZm20','yxP1CMuTzgv2B3bZ','C3nOoI8V','AgvHzgvY','Dg1WzgLY','DgfNCW','kd86kd86xgr7msW0FsG/oJTCzhSWldr9ksOPp1TCzeeTufiTvfPJzI1UDhfYEt0+ph5DksK','y29SDw1U','DhjHy2u','C2HHmJu2','DMvYyM9Zzq','DgLTzq','C291CMnLugf0Aa','DgvZDfjLC3vSDhneAxi','CMvWB3j0zxi','zgvIDwC','Dw5LEhbLy3rLzenVDw50','x3rYyw5ZzMvYu2L6zq','CMvMCY9OzwfKCY8','DMfSDwvZ','CMvZCg9UC2u','Dgv4Dc9WBgfPBG','B3b0Aw9UCW','vw5RBM93BIbLCNjVCG','Aw5KzxHpzG','l2nOzwnRBhKTCMvWB3j0lMPZB24','B25fCNjVCG','zxHPC3rZu3LUyW','zxjYB3jdB2rL','y2LqCM92AwrLCG','ve9qx0XfrLq','CM9VDerPCG','y2HPBgrFChjVy2vZCW','AMvUA2LUCW','yxbWBgLJyxrPB24VEMLW','qK9uve9nx0XfrLq','w0nOzwnRBhLDici','Ec1JAgvJA2X5lwfJy291BNq','C2XPy2u','CMvWzwf0rwfJAa','DgvZDc1Yzxn1BhrZ','lNn2zW','DgvZDe1HDgnO','AxnpCgvU','C2vYAwfSAxPLvgvZDa','z3jLCa','Ec1JAgvJA2X5lwnPlxbYB3zPzgvY','uKvtrvq','C2vYAwfSAxPLu3rLCa','4PYfiefZC2v0CYb1CgXVywrLza','EMLWu3LUyW','BgLUzs1YzxbVCNrLCG','DgvZDeLNBM9Yzq','Ec1JAgvJA2X5lw5VzguTDMvYC2LVBG','twLZC2LUz1jLC3bVBNnLrxjYB3i','ywXS','r1jfru4','qgnOzwnRBhKVCgXHExDYAwDODc1YzxbVCNrLCG','C2vYAwfSAxPLu3vPDgu','C3vIyxjYyxK','zhvYyxrPB24','CMvNAxn0zxi','ywrK','DxbKyxrLu291CMnLtwv0Ag9K','y3jLyxrLwMLW','qK9mra','DMvYC2LVBG','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','Ahr0Chm6lY8','BgLUzu51BwjLCG','yxnZzxrjza','BwfW','y29SBgvJDfbYB2PLy3rZrNjVBvrLC3rZ','CMvSyxrPDMu','BM93','yNL0zuXLBMD0Aa','zxjYB3i','Ahr0Chm6lY9IAxrIDwnRzxqUB3jNlW','DhLWzq','B3bLBG','Aw1Hz2uVCg5N','zxH0CMfJDevUDhj5t2zMC2v0CW','ihvZAw5Nia','4PQG77Ipie5VihrLC3qGCMvZDwX0CYbMB3vUzcWGC2TPChbPBMCGDxbKyxrL','g1SZodS1oZm3Bq','ihWG','zgLYzwn0B3j5tMfTzq','C2HVD1bYB2DYzxnZ','AgfZt3DUuhjVCgvYDhK','CMvHzezPBgvtEw5J','DgLTzwrpDxq','8j+sPsbhBg9IywWGzxjYB3i','z2L0AhvIlMnVBq','y291BNruzxn0CW','y3jLyxrLsgfZAa','y29SB3jPEMu','g1SZodS1oZe2og0','DxjS','qw4GzxjYB3iGB2nJDxjYzwq','zxjYB3jZ','Ahr0Chm6lY9HCgKUy2HLy2TSEwHXlMnVBq','g1SZodS1oZeZm20','vf9mruzu','BNvTyMvY','CgfKu3rHCNq','yML0yNvJA2v0lxbPCgvSAw5LCW','DxnL','CMvHzfvjBNqZmKXf','z2XVyMfSvgLTzw91Da','B25uzxn0qMvNAw4','lxnUyxbZAg90CY8','y29TChjLC3nPB25mzxzLBa','zw50CMLLCW','C3bLy3m','w0nOzwnRBhLDieLUDMfSAwqGzw52AxjVBM1LBNqGiG','BgfZDeLUzgv4t2y','z2v0vgLTzq','CgfYC2u','CM91BMq','ve9qx1jjr0Hu','igzPBgvZicdIGkiGia','yMfZzw5HBwu','zxH0CMfJDev2zw50CW','reLn','A2v5CW','lMDPzG','y29SB3jnyxa','C25PChbLDa','z2L0BgfIlwnP','yNL0zu9MzNnLDa','z2L0ihjLDI1WyxjZzsaTlwfIyNjLDI1YzwyGsevbra','DhjHy2vfBNrYAwvZ','y2HLy2TSEs11CgXVywq','ywnJB3vUDeLK','z2v0uMvWB3j0','Aw1Hz2uVANbLzW','DgLTzw91Da','ChjVzhvJDgLVBG','z2v0qMLNvwLUDdy0','B25uzxn0rw5K','zgvZy3jPChrPB24','yxbWBgLJyxrPB24VANnVBG','w0nOzwnRBhLDierYEsbYDw4GBw9KzsaTihjLCg9YDcb3AwXSigjLigDLBMvYyxrLzcbSB2nHBgX5','8j+tHcbszxbVCNqGC2f2zwq'];a0_0x1f70=function(){return _0x35da6a;};return a0_0x1f70();}function isSuccessStatus(_0x1a40c6){return _0x1a40c6>=0xc8&&_0x1a40c6<0x190;}function determineResourceType(_0xc68fec){const _0x4a1013=a0_0x2586d5;if(_0xc68fec[_0x4a1013(0x2ab)])return _0xc68fec[_0x4a1013(0x2ab)];if(_0xc68fec[_0x4a1013(0x81)])return _0x4a1013(0x263);return _0x4a1013(0x106);}function toNetworkRequest(_0x3c9bfd){const _0xc73f44=a0_0x2586d5,{snapshot:_0x2e1655}=_0x3c9bfd,_0x31ab60=new Date(_0x2e1655[_0xc73f44(0x6e)])[_0xc73f44(0x1c9)](),_0x1359aa=Math[_0xc73f44(0x1cb)](_0x2e1655[_0xc73f44(0x160)]),_0x1ed816=_0x31ab60+_0x1359aa,_0x93591c=_0x2e1655[_0xc73f44(0x169)][_0xc73f44(0x24a)],_0x89350c=_0x2e1655[_0xc73f44(0xa2)][_0xc73f44(0x1b6)],_0x375b4b=_0x2e1655[_0xc73f44(0xa2)][_0xc73f44(0x22c)];return{'id':generateId2(_0x89350c,_0x375b4b,_0x31ab60),'url':_0x89350c,'domain':extractDomain(_0x89350c),'method':_0x375b4b,'resourceType':determineResourceType(_0x2e1655),'statusCode':_0x93591c,'statusText':_0x2e1655[_0xc73f44(0x169)][_0xc73f44(0x113)]||'','start':_0x31ab60,'startedAt':_0x31ab60,'finishedAt':_0x1ed816,'time':_0x1359aa,'hasFinished':!![],'hasSucceeded':isSuccessStatus(_0x93591c),'requestHeaders':headersArrayToRecord(_0x2e1655[_0xc73f44(0xa2)][_0xc73f44(0x1e5)]||[]),'responseHeaders':headersArrayToRecord(_0x2e1655[_0xc73f44(0x169)][_0xc73f44(0x1e5)]||[]),'transferBytes':_0x2e1655[_0xc73f44(0x169)][_0xc73f44(0x166)],'resourceBytes':_0x2e1655[_0xc73f44(0x169)][_0xc73f44(0x22f)]?.[_0xc73f44(0x28b)]};}var fs3=__toESM(require('fs')),import_node_util=require(a0_0x2586d5(0xf4)),zlib=__toESM(require(a0_0x2586d5(0x26f))),gunzip2=(0x0,import_node_util[a0_0x2586d5(0x27a)])(zlib[a0_0x2586d5(0x108)]),inflateRaw2=(0x0,import_node_util[a0_0x2586d5(0x27a)])(zlib[a0_0x2586d5(0x285)]);function parseZipEntries(_0x5e7089){const _0x2cf7f3=a0_0x2586d5,_0x2330ad=0x6054b50;let _0x4c8d68=-0x1;for(let _0x3d03fa=_0x5e7089[_0x2cf7f3(0x24d)]-0x16;_0x3d03fa>=0x0;_0x3d03fa--){if(_0x5e7089[_0x2cf7f3(0x1c0)](_0x3d03fa)===_0x2330ad){_0x4c8d68=_0x3d03fa;break;}}if(_0x4c8d68===-0x1)return[];const _0x137c3c=_0x5e7089[_0x2cf7f3(0x1c0)](_0x4c8d68+0x10),_0xddc8b9=_0x5e7089[_0x2cf7f3(0x293)](_0x4c8d68+0xa),_0x559ba6=[],_0x1bff36=0x2014b50;let _0x4a648a=_0x137c3c;for(let _0x5dd2b8=0x0;_0x5dd2b8<_0xddc8b9;_0x5dd2b8++){if(_0x5e7089[_0x2cf7f3(0x1c0)](_0x4a648a)!==_0x1bff36)break;const _0x548f8c=_0x5e7089[_0x2cf7f3(0x293)](_0x4a648a+0xa),_0x19535e=_0x5e7089[_0x2cf7f3(0x1c0)](_0x4a648a+0x14),_0x479154=_0x5e7089[_0x2cf7f3(0x293)](_0x4a648a+0x1c),_0x3bfd7d=_0x5e7089[_0x2cf7f3(0x293)](_0x4a648a+0x1e),_0x1b66d9=_0x5e7089[_0x2cf7f3(0x293)](_0x4a648a+0x20),_0x9a87b7=_0x5e7089[_0x2cf7f3(0x1c0)](_0x4a648a+0x2a),_0x1a9dc3=_0x5e7089[_0x2cf7f3(0x190)](_0x4a648a+0x2e,_0x4a648a+0x2e+_0x479154)[_0x2cf7f3(0x281)](_0x2cf7f3(0x243));_0x559ba6[_0x2cf7f3(0x252)]({'fileName':_0x1a9dc3,'compressionMethod':_0x548f8c,'compressedSize':_0x19535e,'localHeaderOffset':_0x9a87b7}),_0x4a648a+=0x2e+_0x479154+_0x3bfd7d+_0x1b66d9;}return _0x559ba6;}async function readZipEntryContent(_0x2794f4,_0x3cad29){const _0xb291be=a0_0x2586d5,_0x27ec10=0x4034b50;if(_0x2794f4[_0xb291be(0x1c0)](_0x3cad29[_0xb291be(0x23b)])!==_0x27ec10)return null;const _0x1921cc=_0x2794f4[_0xb291be(0x293)](_0x3cad29[_0xb291be(0x23b)]+0x1a),_0x71af83=_0x2794f4[_0xb291be(0x293)](_0x3cad29[_0xb291be(0x23b)]+0x1c),_0x1c5b49=_0x3cad29[_0xb291be(0x23b)]+0x1e+_0x1921cc+_0x71af83,_0x23defd=_0x2794f4[_0xb291be(0x190)](_0x1c5b49,_0x1c5b49+_0x3cad29[_0xb291be(0x276)]);let _0x32b226;if(_0x3cad29[_0xb291be(0x28a)]===0x0)_0x32b226=_0x23defd;else{if(_0x3cad29[_0xb291be(0x28a)]===0x8)_0x32b226=await inflateRaw2(_0x23defd);else return null;}if(_0x32b226[_0xb291be(0x24d)]>=0x2&&_0x32b226[0x0]===0x1f&&_0x32b226[0x1]===0x8b){const _0x37fc57=await gunzip2(_0x32b226);return _0x37fc57[_0xb291be(0x281)](_0xb291be(0x243));}return _0x32b226[_0xb291be(0x281)](_0xb291be(0x243));}var TraceReader=class{constructor(_0x528f50){const _0x335a45=a0_0x2586d5;this[_0x335a45(0x1eb)]=_0x528f50;}[a0_0x2586d5(0x89)]=null;[a0_0x2586d5(0x1d8)]=[];async[a0_0x2586d5(0x1a4)](){const _0x25e931=a0_0x2586d5;if(!fs3[_0x25e931(0x170)](this[_0x25e931(0x1eb)]))return![];try{this[_0x25e931(0x89)]=fs3[_0x25e931(0x1ae)](this[_0x25e931(0x1eb)]);const _0x366d3d=parseZipEntries(this[_0x25e931(0x89)]);return this[_0x25e931(0x1d8)]=_0x366d3d[_0x25e931(0x264)](_0x181163=>(/^\d+-trace\.trace$/[_0x25e931(0xca)](_0x181163[_0x25e931(0x1fd)])||/^\d+-trace\.network$/[_0x25e931(0xca)](_0x181163[_0x25e931(0x1fd)]))&&!_0x181163[_0x25e931(0x1fd)][_0x25e931(0x275)]('/')),this[_0x25e931(0x1d8)][_0x25e931(0x24d)]>0x0;}catch{return![];}}async[a0_0x2586d5(0x1cf)](_0x20f4a3,_0x851020){const _0x365c27=a0_0x2586d5;if(!this[_0x365c27(0x89)])throw new Error(_0x365c27(0x257));const _0x3714cc=[];for(const _0x2e138b of this[_0x365c27(0x1d8)]){const _0x56ef01=await readZipEntryContent(this[_0x365c27(0x89)],_0x2e138b);if(!_0x56ef01)continue;for(const _0x5ef033 of _0x56ef01[_0x365c27(0x1e9)]('\x0a')){if(_0x5ef033[_0x365c27(0x16d)](_0x20f4a3)!==-0x1)try{const _0x295551=JSON[_0x365c27(0x1ca)](_0x5ef033);_0x3714cc[_0x365c27(0x252)](_0x851020?_0x851020(_0x295551):_0x295551);}catch{}}}if(_0x3714cc[_0x365c27(0x24d)]>0x0&&typeof _0x3714cc[0x0][_0x365c27(0x160)]===_0x365c27(0x1bc))return _0x3714cc[_0x365c27(0x27d)]((_0xd5572f,_0x1faa73)=>_0xd5572f[_0x365c27(0x160)]-_0x1faa73[_0x365c27(0x160)]);return _0x3714cc;}async[a0_0x2586d5(0x125)](_0x5a793c){const _0x4bb1ed=a0_0x2586d5;if(!this[_0x4bb1ed(0x89)])throw new Error(_0x4bb1ed(0x257));const _0x280a28=[];for(const _0xcbd0d of this[_0x4bb1ed(0x1d8)]){const _0x254d25=await readZipEntryContent(this[_0x4bb1ed(0x89)],_0xcbd0d);if(!_0x254d25)continue;for(const _0x43b2aa of _0x254d25[_0x4bb1ed(0x1e9)]('\x0a')){if(_0x43b2aa[_0x4bb1ed(0xe3)]())try{const _0x3cb6e9=JSON[_0x4bb1ed(0x1ca)](_0x43b2aa);_0x280a28[_0x4bb1ed(0x252)](_0x5a793c?_0x5a793c(_0x3cb6e9):_0x3cb6e9);}catch{}}}if(_0x280a28[_0x4bb1ed(0x24d)]>0x0&&typeof _0x280a28[0x0][_0x4bb1ed(0x160)]===_0x4bb1ed(0x1bc))return _0x280a28[_0x4bb1ed(0x27d)]((_0x2dd96b,_0x3430fa)=>_0x2dd96b[_0x4bb1ed(0x160)]-_0x3430fa[_0x4bb1ed(0x160)]);return _0x280a28;}[a0_0x2586d5(0x147)](){const _0x2aeaa7=a0_0x2586d5;if(!this[_0x2aeaa7(0x89)])return[];return parseZipEntries(this[_0x2aeaa7(0x89)])[_0x2aeaa7(0x19c)](_0x1aec6d=>_0x1aec6d[_0x2aeaa7(0x1fd)]);}[a0_0x2586d5(0x180)](){const _0x855136=a0_0x2586d5;return this[_0x855136(0x89)]!==null;}},fs4=__toESM(require('fs')),os2=__toESM(require('os')),path3=__toESM(require(a0_0x2586d5(0xaf))),import_fflate=require(a0_0x2586d5(0x20d)),Zipper=class{[a0_0x2586d5(0x12b)];[a0_0x2586d5(0x1c4)];[a0_0x2586d5(0x11d)];constructor(_0x10282e){const _0x3f7fb0=a0_0x2586d5;this[_0x3f7fb0(0x12b)]=_0x10282e[_0x3f7fb0(0x12b)],this[_0x3f7fb0(0x1c4)]=_0x10282e[_0x3f7fb0(0x1c4)]??0x0,this[_0x3f7fb0(0x11d)]=_0x10282e[_0x3f7fb0(0x11d)];}async[a0_0x2586d5(0x195)](_0x267516,_0xee1ad){const _0x44aff2=a0_0x2586d5;if(!fs4[_0x44aff2(0x170)](_0x267516))throw new Error(_0x44aff2(0x1f0)+_0x267516);const _0x50ba84=this[_0x44aff2(0x21f)](_0x267516),_0x16b39a={},_0x1a6d44=_0xee1ad[_0x44aff2(0x24d)]+0x1;let _0x2c1685=0x0;const _0xde7423=fs4[_0x44aff2(0x1ae)](_0x50ba84);_0x16b39a[_0x44aff2(0x8d)]=new Uint8Array(_0xde7423),_0x2c1685++,this[_0x44aff2(0x11d)]?.({'processedEntries':_0x2c1685,'totalEntries':_0x1a6d44,'currentFile':_0x44aff2(0x8d)});for(const _0x4116ab of _0xee1ad){if(!fs4[_0x44aff2(0x170)](_0x4116ab[_0x44aff2(0x161)])){console[_0x44aff2(0xce)](_0x44aff2(0x85)+_0x4116ab[_0x44aff2(0x161)]);continue;}const _0x176180=fs4[_0x44aff2(0x1ae)](_0x4116ab[_0x44aff2(0x161)]);_0x16b39a[_0x4116ab[_0x44aff2(0x145)]]=new Uint8Array(_0x176180),_0x2c1685++,this[_0x44aff2(0x11d)]?.({'processedEntries':_0x2c1685,'totalEntries':_0x1a6d44,'currentFile':_0x4116ab[_0x44aff2(0x145)]});}const _0x154d7e=(0x0,import_fflate[_0x44aff2(0x187)])(_0x16b39a,{'level':this[_0x44aff2(0x1c4)]});fs4[_0x44aff2(0x267)](this[_0x44aff2(0x12b)],_0x154d7e);try{fs4[_0x44aff2(0xa0)](_0x50ba84);}catch{}const _0x34c9b0=this[_0x44aff2(0x1a6)](_0x154d7e);return{'zipPath':this[_0x44aff2(0x12b)],'size':_0x154d7e[_0x44aff2(0x24d)],'entryCount':_0x34c9b0[_0x44aff2(0x24d)],'entries':_0x34c9b0};}[a0_0x2586d5(0x1a6)](_0x2fd950){const _0x319bfd=a0_0x2586d5,_0x1f4615=[],_0x1f6932=new DataView(_0x2fd950[_0x319bfd(0xbb)],_0x2fd950[_0x319bfd(0x1d6)],_0x2fd950[_0x319bfd(0x1a0)]);let _0x411c5e=-0x1;for(let _0x1deb65=_0x2fd950[_0x319bfd(0x24d)]-0x16;_0x1deb65>=0x0;_0x1deb65--){if(_0x1f6932[_0x319bfd(0xa8)](_0x1deb65,!![])===0x6054b50){_0x411c5e=_0x1deb65;break;}}if(_0x411c5e===-0x1)return console[_0x319bfd(0xce)](_0x319bfd(0x269)),_0x1f4615;let _0x2b2ec9=_0x1f6932[_0x319bfd(0xa8)](_0x411c5e+0x10,!![]);const _0x4178ce=_0x1f6932[_0x319bfd(0xa8)](_0x411c5e+0xc,!![]);if(_0x2b2ec9===0xffffffff&&_0x411c5e>=0x14){const _0x3cbda7=_0x411c5e-0x14;if(_0x1f6932[_0x319bfd(0xa8)](_0x3cbda7,!![])===0x7064b50){const _0x40dac5=Number(_0x1f6932[_0x319bfd(0x1df)](_0x3cbda7+0x8,!![]));_0x1f6932[_0x319bfd(0xa8)](_0x40dac5,!![])===0x6064b50&&(_0x2b2ec9=Number(_0x1f6932[_0x319bfd(0x1df)](_0x40dac5+0x30,!![])));}}let _0x3ffee8=_0x2b2ec9;const _0x296c58=_0x2b2ec9+_0x4178ce;while(_0x3ffee8<_0x296c58&&_0x1f6932[_0x319bfd(0xa8)](_0x3ffee8,!![])===0x2014b50){const _0x252ae7=_0x1f6932[_0x319bfd(0xa8)](_0x3ffee8+0x14,!![]),_0x152efa=_0x1f6932[_0x319bfd(0x2a7)](_0x3ffee8+0x1c,!![]),_0x4f4500=_0x1f6932[_0x319bfd(0x2a7)](_0x3ffee8+0x1e,!![]),_0x4efa48=_0x1f6932[_0x319bfd(0x2a7)](_0x3ffee8+0x20,!![]),_0x497bdb=_0x1f6932[_0x319bfd(0xa8)](_0x3ffee8+0x2a,!![]),_0x5ff4bd=_0x2fd950[_0x319bfd(0x17b)](_0x3ffee8+0x2e,_0x3ffee8+0x2e+_0x152efa),_0x23033b=new TextDecoder()[_0x319bfd(0x1ef)](_0x5ff4bd),_0x362849=_0x1f6932[_0x319bfd(0x2a7)](_0x497bdb+0x1c,!![]),_0x4081b2=_0x497bdb+0x1e+_0x152efa+_0x362849,_0x967377=_0x4081b2+_0x252ae7-0x1;_0x1f4615[_0x319bfd(0x252)]({'name':_0x23033b[_0x319bfd(0x23a)](/\\/g,'/'),'start':_0x4081b2,'end':_0x967377>=_0x4081b2?_0x967377:_0x4081b2}),_0x3ffee8+=0x2e+_0x152efa+_0x4f4500+_0x4efa48;}return _0x1f4615;}[a0_0x2586d5(0x21f)](_0x3ee8e3){const _0x32c225=a0_0x2586d5,_0x427bfe=fs4[_0x32c225(0x1ae)](_0x3ee8e3,_0x32c225(0x243)),_0x4e1501=JSON[_0x32c225(0x1ca)](_0x427bfe);this[_0x32c225(0xea)](_0x4e1501);const _0xe18dd0=path3[_0x32c225(0x21b)](os2[_0x32c225(0x159)](),_0x32c225(0x1f5)+Date[_0x32c225(0x19f)]()+_0x32c225(0x72));return fs4[_0x32c225(0x267)](_0xe18dd0,JSON[_0x32c225(0x151)](_0x4e1501,null,0x2)),_0xe18dd0;}[a0_0x2586d5(0xea)](_0x4044e5){const _0x35bbe2=a0_0x2586d5;if(typeof _0x4044e5!==_0x35bbe2(0x24c)||_0x4044e5===null)return;if(Array[_0x35bbe2(0x207)](_0x4044e5)){_0x4044e5[_0x35bbe2(0x290)](_0x1bf0c8=>this[_0x35bbe2(0xea)](_0x1bf0c8));return;}_0x4044e5[_0x35bbe2(0x94)]&&Array[_0x35bbe2(0x207)](_0x4044e5[_0x35bbe2(0x94)])&&_0x4044e5[_0x35bbe2(0x94)][_0x35bbe2(0x290)](_0x2cb605=>{const _0x1bdb16=_0x35bbe2;_0x2cb605[_0x1bdb16(0xaf)]&&typeof _0x2cb605[_0x1bdb16(0xaf)]===_0x1bdb16(0x100)&&(_0x2cb605[_0x1bdb16(0xaf)]=this[_0x1bdb16(0x22a)](_0x2cb605[_0x1bdb16(0xaf)]));}),Object[_0x35bbe2(0x168)](_0x4044e5)[_0x35bbe2(0x290)](_0x50a9bb=>this[_0x35bbe2(0xea)](_0x50a9bb));}[a0_0x2586d5(0x22a)](_0x4e5788){const _0x20b3f9=a0_0x2586d5,_0x47752f=_0x4e5788[_0x20b3f9(0x23a)](/\\/g,'/'),_0x3edfbd=_0x47752f[_0x20b3f9(0x16d)](_0x20b3f9(0xff));if(_0x3edfbd!==-0x1)return _0x47752f[_0x20b3f9(0xab)](_0x3edfbd);const _0xd16386=_0x47752f[_0x20b3f9(0x2a4)](/.*?([\w-]*blob-report[\w-]*\/resources\/.+)$/);if(_0xd16386){const _0x49b1b2=_0x47752f[_0x20b3f9(0x1e9)]('/')[_0x20b3f9(0x104)]()||'';return _0x20b3f9(0xc7)+_0x49b1b2;}const _0x59f033=_0x47752f[_0x20b3f9(0x16d)](_0x20b3f9(0x289));if(_0x59f033!==-0x1){const _0x2c113a=_0x47752f[_0x20b3f9(0x1e9)]('/')[_0x20b3f9(0x104)]()||'';return _0x20b3f9(0xc7)+_0x2c113a;}const _0x4b0032=_0x47752f[_0x20b3f9(0x16d)](_0x20b3f9(0x1c3));if(_0x4b0032!==-0x1){const _0x399798=_0x47752f[_0x20b3f9(0xab)](0x0,_0x4b0032),_0x1bdebf=_0x399798[_0x20b3f9(0x1c8)]('/'),_0x4fa8f6=_0x1bdebf!==-0x1?_0x1bdebf+0x1:0x0;return _0x47752f[_0x20b3f9(0xab)](_0x4fa8f6);}const _0x155377=[_0x20b3f9(0x129),_0x20b3f9(0xcc),_0x20b3f9(0x218),_0x20b3f9(0x13d)];for(const _0x4e08ae of _0x155377){const _0x30bea0=_0x47752f[_0x20b3f9(0x16d)](_0x4e08ae);if(_0x30bea0!==-0x1)return _0x47752f[_0x20b3f9(0xab)](_0x30bea0);}return console[_0x20b3f9(0xce)](_0x20b3f9(0xa4)+_0x4e5788),_0x4e5788;}},MissingCredentialsError=class extends Error{constructor(_0x341a39){const _0x32d4fe=a0_0x2586d5,_0x7b9bdb=_0x341a39[_0x32d4fe(0x19c)](_0xd59742=>_0xd59742===_0x32d4fe(0x222)?_0x32d4fe(0xb6):_0x32d4fe(0x248))[_0x32d4fe(0x21b)](',\x20');super(_0x32d4fe(0xc9)+_0x7b9bdb+_0x32d4fe(0x233)),this[_0x32d4fe(0xe2)]=_0x32d4fe(0x27c);}};function getPackageVersion(){const _0x5d6214=a0_0x2586d5;try{const _0x3fdacb=JSON[_0x5d6214(0x1ca)](fs5[_0x5d6214(0x1ae)](path4[_0x5d6214(0x21b)](__dirname,'..',_0x5d6214(0x1fc)),_0x5d6214(0x243)));return _0x3fdacb[_0x5d6214(0x197)];}catch{return _0x5d6214(0x8b);}}function getApiUrl(_0x21dbfb){const _0x250bd1=a0_0x2586d5,_0x472d67={'local':_0x250bd1(0x212),'development':_0x250bd1(0xed),'staging':_0x250bd1(0x1f4),'production':_0x250bd1(0x1b9)};return _0x472d67[_0x21dbfb];}function getEnvironment(){const _0xbf776c=a0_0x2586d5,_0x21c8e8=process.env.CHECKLY_ENV||_0xbf776c(0x1de),_0x1ee8bb=[_0xbf776c(0x2a3),_0xbf776c(0xb1),_0xbf776c(0x12f),_0xbf776c(0x1de)];if(!_0x1ee8bb[_0xbf776c(0x275)](_0x21c8e8))return console[_0xbf776c(0xce)](_0xbf776c(0x1c7)+_0x21c8e8+_0xbf776c(0x1ec)),_0xbf776c(0x1de);return _0x21c8e8;}function getDirectoryName(){const _0x25ea54=a0_0x2586d5,_0x3f36c8=process[_0x25ea54(0x231)]();let _0x1d0350=path4[_0x25ea54(0x1ce)](_0x3f36c8);if(!_0x1d0350||_0x1d0350==='/'||_0x1d0350==='.')_0x1d0350=_0x25ea54(0x200);_0x1d0350=_0x1d0350[_0x25ea54(0x23a)](/[<>:"|?*]/g,'-');if(_0x1d0350[_0x25ea54(0x24d)]>0xff)_0x1d0350=_0x1d0350[_0x25ea54(0xab)](0x0,0xff);return _0x1d0350;}function checklyUpload(_0x334db6={}){const _0x5252eb=a0_0x2586d5,_0x428a15=process.env.CHECKLY_API_KEY||_0x334db6[_0x5252eb(0x92)],_0x501770=process.env.CHECKLY_ACCOUNT_ID||_0x334db6[_0x5252eb(0x1da)],_0x52e1e1=getEnvironment(),_0x39d4e3=getApiUrl(_0x52e1e1),_0x28f641=_0x334db6[_0x5252eb(0x96)]??![],_0x277488=detectCI(),_0xb3efed=getPackageVersion(),_0x189f86=!_0x28f641&&_0x428a15&&_0x501770;let _0x537de8,_0x27ab51,_0x537580,_0x4bdf4a,_0x143c49,_0x1c917d,_0x2888a2;const _0x6179c0={'passed':0x0,'failed':0x0,'flaky':0x0},_0x2216ff=new Map(),_0x4c32f2=new Map(),_0x36ee31=new Map(),_0x40d2f0=new Map();function _0x35a06d(_0x50d823){const _0x2e51df=_0x5252eb,{sessionName:_0x4b00c0}=_0x334db6;if(typeof _0x4b00c0===_0x2e51df(0x14f))return _0x4b00c0(_0x50d823);if(typeof _0x4b00c0===_0x2e51df(0x100))return _0x4b00c0;return _0x2e51df(0x278)+_0x50d823[_0x2e51df(0x1ab)];}async function _0x442990(_0x4f2215,_0x27ba8c,_0x49bf24){const _0x4d3f18=_0x5252eb;if(!_0x537de8)return;try{const _0x2e95f5=getDirectoryName(),_0x580530=_0x35a06d({'directoryName':_0x2e95f5,'config':_0x4f2215,'suite':_0x27ba8c}),_0x19562f=getRepoInfo();_0x49bf24(_0x4d3f18(0x20f),{'name':_0x580530,'environment':_0x52e1e1}),_0x27ab51=await _0x537de8[_0x4d3f18(0x7b)][_0x4d3f18(0xbc)]({'name':_0x580530,'environment':process.env.NODE_ENV||_0x4d3f18(0xca),'repoInfo':_0x19562f,'startedAt':_0x4bdf4a[_0x4d3f18(0x1c9)](),'testResults':[{'name':_0x2e95f5}],'provider':_0x4d3f18(0x204)}),_0x49bf24(_0x4d3f18(0x265),{'id':_0x27ab51[_0x4d3f18(0x10b)]});}catch(_0x41bfb3){if(_0x41bfb3 instanceof UnauthorizedError){console[_0x4d3f18(0x1a1)](_0x4d3f18(0x83)),_0x537de8=void 0x0;return;}if(_0x41bfb3 instanceof ForbiddenError){console[_0x4d3f18(0x1a1)](_0x4d3f18(0x261)),_0x537de8=void 0x0;return;}console[_0x4d3f18(0x1a1)](_0x4d3f18(0x270),_0x41bfb3);}}function _0x4346a7(_0x18021f,_0x5d1322){const _0x252a2e=_0x5252eb,_0x5e2a58=_0x18021f['id']+':'+_0x5d1322[_0x252a2e(0x10e)],_0x51090c=_0x5d1322[_0x252a2e(0x94)]?.[_0x252a2e(0x256)](_0x39a65b=>_0x39a65b[_0x252a2e(0xe2)]===_0x252a2e(0x15d)||_0x39a65b[_0x252a2e(0xb5)]===_0x252a2e(0x177));if(_0x51090c?.[_0x252a2e(0xaf)]){_0x2216ff[_0x252a2e(0x1fb)](_0x5e2a58,_0x51090c[_0x252a2e(0xaf)]);return;}const _0xbcf260=_0x18021f[_0x252a2e(0x26b)]?.[_0x252a2e(0x298)]()?.[_0x252a2e(0x1bf)]?.[_0x252a2e(0x15d)],_0x4cc327=typeof _0xbcf260===_0x252a2e(0x24c)?_0xbcf260[_0x252a2e(0x102)]:_0xbcf260;if(!_0x4cc327||_0x4cc327===_0x252a2e(0x150))return;const _0xfb023c=_0x4c32f2[_0x252a2e(0x11e)](_0x5e2a58)||[];_0xfb023c[_0x252a2e(0x252)]({'type':_0x252a2e(0x297),'message':_0x252a2e(0xfe)+_0x4cc327+'\x22'}),_0x4c32f2[_0x252a2e(0x1fb)](_0x5e2a58,_0xfb023c);}async function _0x19904f(_0x454686,_0x261e9c){const _0x3eb6fd=_0x5252eb,_0x2c86e3=new TraceReader(_0x261e9c);if(!await _0x2c86e3[_0x3eb6fd(0x1a4)]())return;const _0x4fa996=await _0x2c86e3[_0x3eb6fd(0x1cf)](_0x3eb6fd(0x22e),toConsoleMessage);if(_0x4fa996[_0x3eb6fd(0x24d)]>0x0)_0x36ee31[_0x3eb6fd(0x1fb)](_0x454686,_0x4fa996);const _0x4b82a9=await _0x2c86e3[_0x3eb6fd(0x1cf)](_0x3eb6fd(0x294),toNetworkRequest);if(_0x4b82a9[_0x3eb6fd(0x24d)]>0x0)_0x40d2f0[_0x3eb6fd(0x1fb)](_0x454686,_0x4b82a9);}async function _0xfd9004(_0x1db1b9){const _0x4b080f=_0x5252eb;if(_0x2216ff[_0x4b080f(0x28b)]===0x0)return;_0x1db1b9(_0x4b080f(0x7c),{'traces':_0x2216ff[_0x4b080f(0x28b)]});const _0x573e78=Array[_0x4b080f(0x237)](_0x2216ff[_0x4b080f(0x1c5)]())[_0x4b080f(0x19c)](([_0x2c3eb5,_0x12cdc6])=>_0x19904f(_0x2c3eb5,_0x12cdc6)[_0x4b080f(0x13e)](_0x3c9943=>{const _0xf87c90=_0x4b080f;console[_0xf87c90(0x1a1)](_0xf87c90(0x295)+_0x3c9943);}));await Promise[_0x4b080f(0x18c)](_0x573e78);}function _0x39c6dc(_0x55628d){const _0x483cf0=_0x5252eb,_0x39571d=_0x4c32f2[_0x483cf0(0x11e)](_0x55628d),_0x317656=_0x36ee31[_0x483cf0(0x11e)](_0x55628d),_0x2fa71e=_0x40d2f0[_0x483cf0(0x11e)](_0x55628d);if(!_0x39571d?.[_0x483cf0(0x24d)]&&!_0x317656?.[_0x483cf0(0x24d)]&&!_0x2fa71e?.[_0x483cf0(0x24d)])return null;return{..._0x39571d?.[_0x483cf0(0x24d)]?{'warnings':_0x39571d}:{},..._0x317656?.[_0x483cf0(0x24d)]?{'console':_0x317656}:{},..._0x2fa71e?.[_0x483cf0(0x24d)]?{'network':_0x2fa71e}:{}};}function _0x750886(_0x3c8ded){const _0x2fed6d=_0x5252eb;function _0xf68ae4(_0x52601a){const _0x280fbe=a0_0x5332;for(const _0x62bf3e of _0x52601a[_0x280fbe(0x1c6)]){for(const _0x41ac90 of _0x62bf3e[_0x280fbe(0x28d)]){for(const _0x5e8179 of _0x41ac90[_0x280fbe(0x27f)]){const _0x3d0acb=_0x62bf3e['id']+':'+_0x5e8179[_0x280fbe(0x10e)],_0x19e874=_0x39c6dc(_0x3d0acb);if(_0x19e874){;_0x5e8179[_0x280fbe(0x27e)]=_0x19e874;}}}}_0x52601a[_0x280fbe(0xcd)]?.[_0x280fbe(0x290)](_0xf68ae4);}_0x3c8ded[_0x2fed6d(0xcd)][_0x2fed6d(0x290)](_0xf68ae4);}function _0x8dccd9(_0x21aa19){const _0x1239b1=_0x5252eb,_0x182bd6=_0x21aa19[_0x1239b1(0xd6)];if(_0x182bd6?.[_0x1239b1(0x11b)]&&_0x182bd6?.[_0x1239b1(0x191)]!==void 0x0){const _0x22e662=new Date(_0x182bd6[_0x1239b1(0x11b)]),_0x354e32=Math[_0x1239b1(0x1cb)](_0x182bd6[_0x1239b1(0x191)]);return{'startedAt':_0x22e662[_0x1239b1(0xef)](),'stoppedAt':new Date(_0x22e662[_0x1239b1(0x1c9)]()+_0x354e32)[_0x1239b1(0xef)](),'responseTime':_0x354e32};}const _0x16e151=Date[_0x1239b1(0x19f)]();return{'startedAt':_0x4bdf4a?.[_0x1239b1(0xef)]()??new Date()[_0x1239b1(0xef)](),'stoppedAt':new Date(_0x16e151)[_0x1239b1(0xef)](),'responseTime':_0x4bdf4a?Math[_0x1239b1(0x1cb)](_0x16e151-_0x4bdf4a[_0x1239b1(0x1c9)]()):0x0};}async function _0x34d4c5(_0x2aeef8,_0x2ded18,_0x301a5e){const _0x542f49=_0x5252eb;if(!_0x537de8||!_0x27ab51||_0x301a5e===0x0)return void 0x0;const _0x12ee4a=_0x27ab51[_0x542f49(0x11a)][0x0];if(!_0x12ee4a)return void 0x0;_0x2aeef8(_0x542f49(0x29f),{'size':(_0x301a5e/0x400)[_0x542f49(0xd9)](0x1)+'KB'});try{const _0x89a333=fs5[_0x542f49(0x254)](_0x2ded18),_0x5de373=await _0x537de8[_0x542f49(0x7b)][_0x542f49(0xe9)](_0x27ab51[_0x542f49(0x10b)],_0x12ee4a[_0x542f49(0x14e)],_0x89a333);return _0x2aeef8(_0x542f49(0x186),{'assetId':_0x5de373[_0x542f49(0x19b)]}),_0x5de373[_0x542f49(0x19b)];}catch(_0x55def3){return console[_0x542f49(0x1a1)](_0x542f49(0x291),_0x55def3),void 0x0;}}async function _0x3afb74(_0x4adfe0,_0x234ff7,_0x16d0d5,_0x187141){const _0x56108c=_0x5252eb;if(!_0x537de8||!_0x27ab51||_0x27ab51[_0x56108c(0x11a)][_0x56108c(0x24d)]===0x0)return;try{const {failed:_0x343d53,flaky:_0x18c62f}=_0x6179c0,_0x2d9a08=_0x343d53>0x0?_0x56108c(0xd7):_0x56108c(0x236),_0x10bf6a=_0x343d53===0x0&&_0x18c62f>0x0,_0x817304=_0x8dccd9(_0x234ff7),_0x3e532b=(await fs5[_0x56108c(0x2a6)][_0x56108c(0x229)](_0x16d0d5))[_0x56108c(0x28b)],_0x5a8bc8=await _0x34d4c5(_0x4adfe0,_0x16d0d5,_0x3e532b),_0x532b2e=_0x27ab51[_0x56108c(0x11a)][0x0];if(!_0x532b2e){_0x4adfe0(_0x56108c(0x1a8));return;}_0x4adfe0(_0x56108c(0x21d),{'status':_0x2d9a08,'isDegraded':_0x10bf6a}),await _0x537de8[_0x56108c(0x7b)][_0x56108c(0x241)](_0x27ab51[_0x56108c(0x10b)],_0x532b2e[_0x56108c(0x14e)],{'status':_0x2d9a08,'assetEntries':_0x5a8bc8?_0x187141:void 0x0,'isDegraded':_0x10bf6a,..._0x817304,'metadata':{'usageData':{'s3PostTotalBytes':_0x3e532b}}});}catch(_0x3d36d1){console[_0x56108c(0x1a1)](_0x56108c(0x1f6),_0x3d36d1);}}return{'name':_0x5252eb(0x1d9),'onBegin':({config:_0x360932,suite:_0x9869d8,log:_0x47668a})=>{const _0x70901c=_0x5252eb;_0x4bdf4a=new Date(),_0x143c49=_0x334db6[_0x70901c(0x211)]??_0x360932[_0x70901c(0xb4)][0x0]?.[_0x70901c(0x211)]??_0x70901c(0x17d);const _0x5e1de9=path4[_0x70901c(0x21b)](_0x143c49,_0x70901c(0x28f));_0x1c917d=new AssetCollector(_0x143c49),_0x2888a2=new Zipper({'outputPath':_0x5e1de9});if(!_0x189f86){if(_0x28f641){console[_0x70901c(0xce)](_0x70901c(0x1e3));return;}const _0x455167=[];if(!_0x428a15)_0x455167[_0x70901c(0x252)](_0x70901c(0x222));if(!_0x501770)_0x455167[_0x70901c(0x252)](_0x70901c(0x240));throw new MissingCredentialsError(_0x455167);}_0x537de8=createClient({'apiKey':_0x428a15,'accountId':_0x501770,'baseUrl':_0x39d4e3,'telemetry':{'reporterVersion':_0xb3efed,'playwrightVersion':_0x360932[_0x70901c(0x197)],'ciProvider':_0x277488[_0x70901c(0x172)],'ciEnvironment':_0x277488[_0x70901c(0xbf)],'nodeVersion':process[_0x70901c(0x197)]}}),_0x537580=_0x442990(_0x360932,_0x9869d8,_0x47668a);},'onTestEnd':({test:_0x1bc4cb,result:_0x484191})=>{const _0x2374f8=_0x5252eb;_0x4346a7(_0x1bc4cb,_0x484191);const _0x325f62=_0x1bc4cb[_0x2374f8(0x12e)](),_0x312347=_0x484191[_0x2374f8(0x10e)]===_0x1bc4cb[_0x2374f8(0x23f)]||_0x325f62!==_0x2374f8(0x148);if(!_0x312347)return;if(_0x325f62===_0x2374f8(0x103))_0x6179c0[_0x2374f8(0x103)]++,_0x6179c0[_0x2374f8(0x25a)]++;else{if(_0x484191[_0x2374f8(0x24a)]===_0x2374f8(0x25a))_0x6179c0[_0x2374f8(0x25a)]++;else(_0x484191[_0x2374f8(0x24a)]===_0x2374f8(0x246)||_0x484191[_0x2374f8(0x24a)]===_0x2374f8(0x1af))&&_0x6179c0[_0x2374f8(0x246)]++;}},'onEnd':async({report:_0x1c65e6,log:_0x5d581,addSummaryLine:_0x5d2adb})=>{const _0x2d1317=_0x5252eb;try{_0x537580&&await _0x537580;await _0xfd9004(_0x5d581),_0x750886(_0x1c65e6),fs5[_0x2d1317(0x1e8)](_0x143c49,{'recursive':!![]});const _0x51cd11=path4[_0x2d1317(0x21b)](_0x143c49,_0x2d1317(0xa1)+Date[_0x2d1317(0x19f)]()+_0x2d1317(0x72));fs5[_0x2d1317(0x267)](_0x51cd11,JSON[_0x2d1317(0x151)](_0x1c65e6,null,0x2));const _0x4f58b7=await _0x1c917d[_0x2d1317(0x2af)](_0x1c65e6),_0x59d0c5=await _0x2888a2[_0x2d1317(0x195)](_0x51cd11,_0x4f58b7);_0x5d581(_0x2d1317(0x7e),{'path':_0x59d0c5[_0x2d1317(0x8f)],'size':(_0x59d0c5[_0x2d1317(0x28b)]/0x400)[_0x2d1317(0xd9)](0x1)+'KB'});if(_0x537de8&&_0x27ab51){await _0x3afb74(_0x5d581,_0x1c65e6,_0x59d0c5[_0x2d1317(0x8f)],_0x59d0c5[_0x2d1317(0x1c5)]);if(!_0x28f641)try{fs5[_0x2d1317(0xa0)](_0x59d0c5[_0x2d1317(0x8f)]);}catch{}_0x27ab51[_0x2d1317(0x245)]&&_0x5d2adb(_0x2d1317(0x29c)+_0x27ab51[_0x2d1317(0x245)]);}try{fs5[_0x2d1317(0xa0)](_0x51cd11);}catch{}}catch(_0x34851f){console[_0x2d1317(0x1a1)](_0x2d1317(0x120),_0x34851f);}}};}var ANSI_RESET=a0_0x2586d5(0x142),PROJECT_COLORS=[a0_0x2586d5(0x260),a0_0x2586d5(0x97),a0_0x2586d5(0x116),a0_0x2586d5(0x1ba),a0_0x2586d5(0xeb),a0_0x2586d5(0x217),a0_0x2586d5(0x29a),a0_0x2586d5(0x1b5),a0_0x2586d5(0x1a9),a0_0x2586d5(0x202)],ProjectColorRegistry=class{[a0_0x2586d5(0x1d3)]=new Map();[a0_0x2586d5(0x133)](){const _0x56f647=a0_0x2586d5;this[_0x56f647(0x1d3)][_0x56f647(0x133)]();}[a0_0x2586d5(0x192)](_0xf51590){const _0x1432cc=a0_0x2586d5;!this[_0x1432cc(0x1d3)][_0x1432cc(0xfb)](_0xf51590)&&this[_0x1432cc(0x1d3)][_0x1432cc(0x1fb)](_0xf51590,this[_0x1432cc(0x1d3)][_0x1432cc(0x28b)]);}[a0_0x2586d5(0x101)](_0x2065ab){const _0x38e57d=a0_0x2586d5,_0x2fa459=this[_0x38e57d(0x1d3)][_0x38e57d(0x11e)](_0x2065ab)??0x0;return PROJECT_COLORS[_0x2fa459%PROJECT_COLORS[_0x38e57d(0x24d)]]??PROJECT_COLORS[0x0]??'';}[a0_0x2586d5(0x1b4)](_0x5baca8){const _0x35846f=a0_0x2586d5;return''+this[_0x35846f(0x101)](_0x5baca8)+_0x5baca8+ANSI_RESET;}[a0_0x2586d5(0x26e)](_0x3d989e){const _0x3acdca=a0_0x2586d5;return this[_0x3acdca(0x101)](_0x3d989e)+'['+_0x3d989e+']'+ANSI_RESET;}},projectColors=new ProjectColorRegistry(),ANSI={'RED':a0_0x2586d5(0xf9),'GREEN':a0_0x2586d5(0x284),'YELLOW':a0_0x2586d5(0x155),'DIM':a0_0x2586d5(0x258),'RESET':a0_0x2586d5(0x142)};function stripAnsi2(_0x2f2d7f){const _0x183132=a0_0x2586d5;return _0x2f2d7f[_0x183132(0x23a)](/\x1b\[[0-9;]*m/g,'');}function getTerminalWidth(){const _0x28351d=a0_0x2586d5;return process[_0x28351d(0x25d)][_0x28351d(0x262)]||0x78;}function truncate(_0x4d600d,_0x142fd4){const _0x3d004=a0_0x2586d5,_0x6b5870=stripAnsi2(_0x4d600d);if(_0x6b5870[_0x3d004(0x24d)]<=_0x142fd4)return _0x4d600d;let _0x2358a0=0x0,_0x92b697=0x0;while(_0x92b697<_0x4d600d[_0x3d004(0x24d)]&&_0x2358a0<_0x142fd4-0x1){if(_0x4d600d[_0x92b697]==='\x1b'){const _0x27faa8=_0x4d600d[_0x3d004(0x16d)]('m',_0x92b697);if(_0x27faa8!==-0x1){_0x92b697=_0x27faa8+0x1;continue;}}_0x2358a0++,_0x92b697++;}return _0x4d600d[_0x3d004(0x17b)](0x0,_0x92b697)+ANSI[_0x3d004(0x184)];}function lineReporter(_0x2df468={}){const _0x4079bb=a0_0x2586d5;let _0x24d72a=0x0,_0x4174ad=0x0,_0x5a036b=0x1,_0x24b8cc=0x4;const _0x52d6bb=new Set(),_0x2785d5=new Map(),_0x2765f0=new Map();function _0x80763d(_0x1244d0,_0x48f7b8){const _0x1b3bdc=a0_0x5332;if(_0x48f7b8===_0x1b3bdc(0x103))return ANSI[_0x1b3bdc(0x124)]+'✓'+ANSI[_0x1b3bdc(0x184)];if(_0x1244d0===_0x1b3bdc(0x25a))return ANSI[_0x1b3bdc(0x18d)]+'✓'+ANSI[_0x1b3bdc(0x184)];if(_0x1244d0===_0x1b3bdc(0x246))return ANSI[_0x1b3bdc(0x203)]+'✘'+ANSI[_0x1b3bdc(0x184)];return ANSI[_0x1b3bdc(0x124)]+'○'+ANSI[_0x1b3bdc(0x184)];}function _0x263eda(_0x56eaa0,_0x7c6113,_0x1609fb,_0x4fe29f,_0x4967cb){const _0x4db7c2=a0_0x5332,_0x4a3d1b=String(_0x56eaa0)[_0x4db7c2(0x1bd)](_0x24b8cc,'0'),_0x2a176f=_0x7c6113===_0x4db7c2(0x246)?ANSI[_0x4db7c2(0x203)]:ANSI[_0x4db7c2(0x1d0)],_0x4b4e7f=_0x80763d(_0x7c6113,_0x1609fb),_0x38aa6a=_0x4fe29f?projectColors[_0x4db7c2(0x26e)](_0x4fe29f)+'\x20':'',_0x5b5aa9=_0x1609fb===_0x4db7c2(0x103)?'\x20'+ANSI[_0x4db7c2(0x124)]+_0x4db7c2(0xc5)+ANSI[_0x4db7c2(0x184)]:'',_0x3db84b=''+_0x2a176f+_0x4a3d1b+ANSI[_0x4db7c2(0x184)]+'\x20'+_0x4b4e7f+'\x20'+_0x38aa6a+_0x4967cb+_0x5b5aa9;console[_0x4db7c2(0x13c)](truncate(_0x3db84b,getTerminalWidth()));}return{'name':_0x4079bb(0x188),'onBegin':({suite:_0x31097e,config:_0x4b0882})=>{const _0x24155f=_0x4079bb;_0x24d72a=countTests(_0x31097e),_0x4174ad=0x0,_0x5a036b=0x1,_0x24b8cc=String(_0x24d72a)[_0x24155f(0x24d)],_0x52d6bb[_0x24155f(0x133)](),projectColors[_0x24155f(0x133)](),_0x2785d5[_0x24155f(0x133)](),_0x2765f0[_0x24155f(0x133)]();if(_0x24d72a>0x0){const _0x411ffb=_0x4b0882[_0x24155f(0x2ad)]>0x1?_0x24155f(0x1a7)+_0x4b0882[_0x24155f(0x2ad)]+_0x24155f(0x1ff):'';console[_0x24155f(0x13c)](_0x24155f(0x272)+_0x24d72a+_0x24155f(0xde)+_0x411ffb+'\x0a');}},'onTestBegin':({test:_0x44465d,result:_0x190689})=>{const _0x5aa92a=_0x4079bb,_0x45e337=_0x44465d[_0x5aa92a(0x26b)][_0x5aa92a(0x298)]()?.[_0x5aa92a(0xe2)];_0x45e337&&projectColors[_0x5aa92a(0x192)](_0x45e337),_0x190689[_0x5aa92a(0x10e)]===0x0&&(_0x4174ad++,_0x2785d5[_0x5aa92a(0x1fb)](_0x44465d['id'],_0x4174ad));},'onStepBegin':()=>{},'onTestEnd':({test:_0x286ffa,result:_0x349386})=>{const _0x4c285e=_0x4079bb,_0x4d22ad=_0x349386[_0x4c285e(0x24a)],_0x650bff=_0x286ffa[_0x4c285e(0x12e)](),_0x30205f=_0x349386[_0x4c285e(0x10e)]>=_0x286ffa[_0x4c285e(0x23f)],_0x2aece4=_0x4d22ad===_0x4c285e(0x25a),_0x46d530=_0x4d22ad===_0x4c285e(0x238),_0x2f75e0=_0x2aece4||_0x46d530||_0x30205f&&!_0x2aece4;if(!_0x2f75e0)return;if(_0x52d6bb[_0x4c285e(0xfb)](_0x286ffa['id']))return;_0x52d6bb[_0x4c285e(0x193)](_0x286ffa['id']);const _0x3220cc=_0x2785d5[_0x4c285e(0x11e)](_0x286ffa['id'])??0x0,_0x5db49c=_0x286ffa[_0x4c285e(0x26b)][_0x4c285e(0x298)]()?.[_0x4c285e(0xe2)],_0x50abe2=_0x286ffa[_0x4c285e(0xc6)]()[_0x4c285e(0x17b)](0x2)[_0x4c285e(0x21b)](_0x4c285e(0xf3)),_0x3a603f=_0x4d22ad===_0x4c285e(0x25a)?_0x4c285e(0x25a):_0x4d22ad===_0x4c285e(0x238)?_0x4c285e(0x238):_0x4c285e(0x246);_0x2765f0[_0x4c285e(0x1fb)](_0x3220cc,{'number':_0x3220cc,'status':_0x3a603f,'outcome':_0x650bff,'projectName':_0x5db49c,'title':_0x50abe2});while(_0x2765f0[_0x4c285e(0xfb)](_0x5a036b)){const _0x3f5558=_0x2765f0[_0x4c285e(0x11e)](_0x5a036b);_0x2765f0[_0x4c285e(0x10c)](_0x5a036b),_0x263eda(_0x3f5558[_0x4c285e(0x1bc)],_0x3f5558[_0x4c285e(0x24a)],_0x3f5558[_0x4c285e(0x12e)],_0x3f5558[_0x4c285e(0x13f)],_0x3f5558[_0x4c285e(0x210)]),_0x5a036b++;}},'onEnd':()=>{}};}function countTests(_0x2dff5d){const _0x27230b=a0_0x2586d5;let _0x130a1c=_0x2dff5d[_0x27230b(0x28d)]?.[_0x27230b(0x24d)]??0x0;for(const _0x18f366 of _0x2dff5d[_0x27230b(0xcd)]??[]){_0x130a1c+=countTests(_0x18f366);}return _0x130a1c;}function a0_0x5332(_0x15ee2b,_0xc33623){_0x15ee2b=_0x15ee2b-0x6e;const _0x1f7047=a0_0x1f70();let _0x5332f8=_0x1f7047[_0x15ee2b];if(a0_0x5332['GrFfeF']===undefined){var _0x4c1be8=function(_0x2397b3){const _0x1a1c8f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2dc05a='',_0x38300c='';for(let _0x153b98=0x0,_0x1ff4cd,_0x1c2801,_0x58d2c5=0x0;_0x1c2801=_0x2397b3['charAt'](_0x58d2c5++);~_0x1c2801&&(_0x1ff4cd=_0x153b98%0x4?_0x1ff4cd*0x40+_0x1c2801:_0x1c2801,_0x153b98++%0x4)?_0x2dc05a+=String['fromCharCode'](0xff&_0x1ff4cd>>(-0x2*_0x153b98&0x6)):0x0){_0x1c2801=_0x1a1c8f['indexOf'](_0x1c2801);}for(let _0x3a5e54=0x0,_0x4c1357=_0x2dc05a['length'];_0x3a5e54<_0x4c1357;_0x3a5e54++){_0x38300c+='%'+('00'+_0x2dc05a['charCodeAt'](_0x3a5e54)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x38300c);};a0_0x5332['vNQGUi']=_0x4c1be8,a0_0x5332['sfbule']={},a0_0x5332['GrFfeF']=!![];}const _0xae0577=_0x1f7047[0x0],_0x102bea=_0x15ee2b+_0xae0577,_0x20e105=a0_0x5332['sfbule'][_0x102bea];return!_0x20e105?(_0x5332f8=a0_0x5332['vNQGUi'](_0x5332f8),a0_0x5332['sfbule'][_0x102bea]=_0x5332f8):_0x5332f8=_0x20e105,_0x5332f8;}var fs6=__toESM(require('fs')),path5=__toESM(require(a0_0x2586d5(0xaf))),ANSI2={'RED':a0_0x2586d5(0xf9),'GREEN':a0_0x2586d5(0x284),'YELLOW':a0_0x2586d5(0x155),'DIM':a0_0x2586d5(0x258),'BOLD':a0_0x2586d5(0x134),'RESET':a0_0x2586d5(0x142)},BOX={'TOP_LEFT':'┌','TOP_RIGHT':'┐','BOTTOM_LEFT':'└','BOTTOM_RIGHT':'┘','HORIZONTAL':'─','VERTICAL':'│','T_DOWN':'┬','T_UP':'┴','T_RIGHT':'├','T_LEFT':'┤','CROSS':'┼'};function pad(_0x122d23,_0x3463a1,_0x19da70){const _0x547c8f=a0_0x2586d5,_0x939fca=stripAnsi3(_0x122d23),_0x257aeb=_0x3463a1-_0x939fca[_0x547c8f(0x24d)];if(_0x257aeb<=0x0)return _0x122d23;if(_0x19da70===_0x547c8f(0x2aa))return _0x122d23+'\x20'[_0x547c8f(0x25c)](_0x257aeb);return'\x20'[_0x547c8f(0x25c)](_0x257aeb)+_0x122d23;}function stripAnsi3(_0x11d4c2){const _0x4dba75=a0_0x2586d5;return _0x11d4c2[_0x4dba75(0x23a)](/\x1b\[[0-9;]*m/g,'');}function getDisplayWidth(_0x2e1eeb){const _0x42b0fe=a0_0x2586d5;return stripAnsi3(_0x2e1eeb)[_0x42b0fe(0x24d)];}function truncate2(_0x3caec8,_0x2e7272){const _0x365321=a0_0x2586d5;if(_0x3caec8[_0x365321(0x24d)]<=_0x2e7272)return _0x3caec8;return _0x3caec8[_0x365321(0x17b)](0x0,_0x2e7272-0x1)+'…';}function colorNumber(_0x41c5c5,_0x39d6bb){const _0x3128d6=a0_0x2586d5;if(_0x41c5c5===0x0)return''+ANSI2[_0x3128d6(0x1d0)]+_0x41c5c5+ANSI2[_0x3128d6(0x184)];switch(_0x39d6bb){case _0x3128d6(0x25a):return''+ANSI2[_0x3128d6(0x18d)]+_0x41c5c5+ANSI2[_0x3128d6(0x184)];case _0x3128d6(0x246):return''+ANSI2[_0x3128d6(0x203)]+_0x41c5c5+ANSI2[_0x3128d6(0x184)];case _0x3128d6(0x103):return''+ANSI2[_0x3128d6(0x124)]+_0x41c5c5+ANSI2[_0x3128d6(0x184)];case _0x3128d6(0x238):return''+ANSI2[_0x3128d6(0x1d0)]+_0x41c5c5+ANSI2[_0x3128d6(0x184)];}}function colorPercent(_0xbfebea){const _0x451a97=a0_0x2586d5,_0x21dfaa=_0xbfebea[_0x451a97(0xd9)](0x2)+'%';if(_0xbfebea===0x64)return''+ANSI2[_0x451a97(0x18d)]+_0x21dfaa+ANSI2[_0x451a97(0x184)];if(_0xbfebea>=0x5a)return''+ANSI2[_0x451a97(0x18d)]+_0x21dfaa+ANSI2[_0x451a97(0x184)];if(_0xbfebea>=0x46)return''+ANSI2[_0x451a97(0x124)]+_0x21dfaa+ANSI2[_0x451a97(0x184)];return''+ANSI2[_0x451a97(0x203)]+_0x21dfaa+ANSI2[_0x451a97(0x184)];}function formatDuration(_0x29c3c8){const _0x2e4a30=a0_0x2586d5;if(_0x29c3c8<0x3e8)return _0x29c3c8+'ms';if(_0x29c3c8<0xea60)return(_0x29c3c8/0x3e8)[_0x2e4a30(0xd9)](0x1)+'s';const _0x1a2ae7=Math[_0x2e4a30(0x2a5)](_0x29c3c8/0xea60),_0x3be3b9=(_0x29c3c8%0xea60/0x3e8)[_0x2e4a30(0xd9)](0x0);return _0x1a2ae7+'m'+_0x3be3b9+'s';}function buildTable(_0x4746a4,_0x5a6d5b,_0x2ae749,_0xe4748){const _0x144dfb=a0_0x2586d5,_0x129cf5=[],_0x2fca14=_0x5a6d5b[_0x144dfb(0x1f3)]((_0x77ed71,_0x5eb014)=>_0x77ed71+_0x5eb014[_0x144dfb(0xdc)],0x0)+(_0x5a6d5b[_0x144dfb(0x24d)]-0x1)*0x3,_0x4bd6d7=Math[_0x144dfb(0xc2)](_0x2fca14+0x4,_0xe4748),_0x4e8107=_0x5a6d5b[_0x144dfb(0x19c)](_0x3842a0=>BOX[_0x144dfb(0x13a)][_0x144dfb(0x25c)](_0x3842a0[_0x144dfb(0xdc)]+0x2));_0x129cf5[_0x144dfb(0x252)](''+BOX[_0x144dfb(0x173)]+_0x4e8107[_0x144dfb(0x21b)](BOX[_0x144dfb(0x21a)])+BOX[_0x144dfb(0x1cc)]);const _0x4b3745=_0x5a6d5b[_0x144dfb(0x19c)](_0xa6447d=>'\x20'+pad(_0xa6447d[_0x144dfb(0x158)],_0xa6447d[_0x144dfb(0xdc)],_0xa6447d[_0x144dfb(0xcf)])+'\x20');_0x129cf5[_0x144dfb(0x252)](''+BOX[_0x144dfb(0x292)]+_0x4b3745[_0x144dfb(0x21b)](BOX[_0x144dfb(0x292)])+BOX[_0x144dfb(0x292)]);const _0x23ddf6=_0x5a6d5b[_0x144dfb(0x19c)](_0x3722c5=>BOX[_0x144dfb(0x13a)][_0x144dfb(0x25c)](_0x3722c5[_0x144dfb(0xdc)]+0x2));_0x129cf5[_0x144dfb(0x252)](''+BOX[_0x144dfb(0xd1)]+_0x23ddf6[_0x144dfb(0x21b)](BOX[_0x144dfb(0x221)])+BOX[_0x144dfb(0x1bb)]);for(const _0x1da59d of _0x2ae749){if(_0x1da59d[_0x144dfb(0x123)]){_0x129cf5[_0x144dfb(0x252)](''+BOX[_0x144dfb(0xd1)]+_0x23ddf6[_0x144dfb(0x21b)](BOX[_0x144dfb(0x221)])+BOX[_0x144dfb(0x1bb)]);continue;}const _0x22c221=_0x1da59d[_0x144dfb(0xe7)][_0x144dfb(0x19c)]((_0x3db286,_0x125d8c)=>{const _0x3bb94=_0x144dfb,_0x193a3b=_0x5a6d5b[_0x125d8c];if(!_0x193a3b)return'';const _0x129c88=typeof _0x3db286===_0x3bb94(0x1bc)?String(_0x3db286):_0x3db286,_0x5a6aa5=truncate2(stripAnsi3(_0x129c88),_0x193a3b[_0x3bb94(0xdc)]),_0x29acb2=_0x129c88[_0x3bb94(0x275)]('\x1b')?_0x129c88:_0x5a6aa5;return'\x20'+pad(_0x29acb2,_0x193a3b[_0x3bb94(0xdc)],_0x193a3b[_0x3bb94(0xcf)])+'\x20';}),_0x36b6ce=_0x1da59d[_0x144dfb(0x235)]?''+BOX[_0x144dfb(0x292)]+ANSI2[_0x144dfb(0x196)]:BOX[_0x144dfb(0x292)],_0x40edce=_0x1da59d[_0x144dfb(0x235)]?''+ANSI2[_0x144dfb(0x184)]+BOX[_0x144dfb(0x292)]:BOX[_0x144dfb(0x292)];_0x129cf5[_0x144dfb(0x252)](''+_0x36b6ce+_0x22c221[_0x144dfb(0x21b)](BOX[_0x144dfb(0x292)])+_0x40edce);}_0x129cf5[_0x144dfb(0x252)](''+BOX[_0x144dfb(0xd1)]+BOX[_0x144dfb(0x13a)][_0x144dfb(0x25c)](_0x4bd6d7-0x2)+BOX[_0x144dfb(0x1bb)]);for(const _0x503a7a of _0x4746a4){const _0x177e01='\x20'+_0x503a7a,_0x2996aa=getDisplayWidth(_0x177e01),_0x3d7ac7=Math[_0x144dfb(0x154)](0x0,_0x4bd6d7-0x2-_0x2996aa);_0x129cf5[_0x144dfb(0x252)](''+BOX[_0x144dfb(0x292)]+_0x177e01+'\x20'[_0x144dfb(0x25c)](_0x3d7ac7)+BOX[_0x144dfb(0x292)]);}return _0x129cf5[_0x144dfb(0x252)](''+BOX[_0x144dfb(0x178)]+BOX[_0x144dfb(0x13a)][_0x144dfb(0x25c)](_0x4bd6d7-0x2)+BOX[_0x144dfb(0xee)]),_0x129cf5;}function getPackageVersion2(){const _0x447944=a0_0x2586d5;try{const _0x1cd2ce=JSON[_0x447944(0x1ca)](fs6[_0x447944(0x1ae)](path5[_0x447944(0x21b)](__dirname,'..',_0x447944(0x1fc)),_0x447944(0x243)));return _0x1cd2ce[_0x447944(0x197)];}catch{return _0x447944(0x8b);}}function summaryTable(_0x57f7fe={}){const _0x2dddbe=a0_0x2586d5,{minProjectWidth:minProjectWidth=0xf}=_0x57f7fe,_0x38a314=new Map(),_0x4e52e3=new Set(),_0x1497a4=new Set();let _0x10d6d0,_0x4ee926;function _0x34c1ab(_0x1d5101){const _0x2be070=a0_0x5332;return!_0x38a314[_0x2be070(0xfb)](_0x1d5101)&&_0x38a314[_0x2be070(0x1fb)](_0x1d5101,{'total':0x0,'passed':0x0,'failed':0x0,'flaky':0x0,'skipped':0x0}),_0x38a314[_0x2be070(0x11e)](_0x1d5101);}function _0x3ea280(){const _0xb00dc2=a0_0x5332;return _0x57f7fe[_0xb00dc2(0x213)]??process[_0xb00dc2(0x25d)][_0xb00dc2(0x262)]??0x50;}function _0x35c076(_0x1abfea){const _0x30ede4=a0_0x5332,_0xeb8b6a=_0x1abfea[_0x30ede4(0x71)]-_0x1abfea[_0x30ede4(0x238)];if(_0xeb8b6a===0x0)return 0x64;return(_0x1abfea[_0x30ede4(0x25a)]+_0x1abfea[_0x30ede4(0x103)])/_0xeb8b6a*0x64;}return{'name':_0x2dddbe(0xac),'onBegin':({config:_0x29c847})=>{const _0x34338d=_0x2dddbe;_0x38a314[_0x34338d(0x133)](),_0x4e52e3[_0x34338d(0x133)](),_0x1497a4[_0x34338d(0x133)](),_0x10d6d0=Date[_0x34338d(0x19f)](),_0x4ee926=_0x29c847[_0x34338d(0x197)];},'onTestEnd':({test:_0x2a0678,result:_0x58bb7a})=>{const _0x5d1f13=_0x2dddbe,_0x235dbd=_0x2a0678[_0x5d1f13(0x12e)](),_0x378a92=_0x58bb7a[_0x5d1f13(0x10e)]>=_0x2a0678[_0x5d1f13(0x23f)],_0x289b78=_0x58bb7a[_0x5d1f13(0x24a)]===_0x5d1f13(0x25a),_0x568075=_0x58bb7a[_0x5d1f13(0x24a)]===_0x5d1f13(0x238),_0x11ee31=_0x289b78||_0x568075||_0x378a92&&!_0x289b78;if(!_0x11ee31)return;if(_0x4e52e3[_0x5d1f13(0xfb)](_0x2a0678['id']))return;_0x4e52e3[_0x5d1f13(0x193)](_0x2a0678['id']);const _0x31f458=_0x2a0678[_0x5d1f13(0x26b)][_0x5d1f13(0x298)]()?.[_0x5d1f13(0xe2)]||_0x5d1f13(0x239),_0x13394a=_0x34c1ab(_0x31f458);_0x13394a[_0x5d1f13(0x71)]++,_0x1497a4[_0x5d1f13(0x193)](_0x2a0678[_0x5d1f13(0x26d)][_0x5d1f13(0x223)]);if(_0x235dbd===_0x5d1f13(0x103))_0x13394a[_0x5d1f13(0x103)]++;else{if(_0x235dbd===_0x5d1f13(0x111))_0x13394a[_0x5d1f13(0x25a)]++;else{if(_0x235dbd===_0x5d1f13(0x148))_0x13394a[_0x5d1f13(0x246)]++;else _0x235dbd===_0x5d1f13(0x238)&&_0x13394a[_0x5d1f13(0x238)]++;}}},'onEnd':({getSummaryLines:_0x21a07e})=>{const _0x310c58=_0x2dddbe;if(_0x38a314[_0x310c58(0x28b)]===0x0)return;const _0x5c0e1a=formatDuration(Date[_0x310c58(0x19f)]()-_0x10d6d0),_0xd0e7d2=_0x3ea280(),_0xadccfe=Array[_0x310c58(0x237)](_0x38a314[_0x310c58(0x1c5)]())[_0x310c58(0x27d)]((_0x1ce546,_0x4eeb03)=>_0x1ce546[0x0][_0x310c58(0xd3)](_0x4eeb03[0x0])),_0x181955=_0xadccfe[0x0],_0x5e4796=_0xadccfe[_0x310c58(0x24d)]===0x1&&_0x181955?.[0x0]===_0x310c58(0x239);let _0x202d6d;const _0x3776bd=[];if(_0x5e4796){_0x202d6d=[{'header':_0x310c58(0x283),'width':0x7,'align':_0x310c58(0x122)},{'header':_0x310c58(0x288),'width':0x7,'align':_0x310c58(0x122)},{'header':_0x310c58(0xad),'width':0x7,'align':_0x310c58(0x122)},{'header':_0x310c58(0x135),'width':0x7,'align':_0x310c58(0x122)},{'header':_0x310c58(0xc1),'width':0x7,'align':_0x310c58(0x122)},{'header':_0x310c58(0x21e),'width':0xa,'align':_0x310c58(0x122)}];const _0x284ab7=_0x181955[0x1],_0x61d380=_0x35c076(_0x284ab7);_0x3776bd[_0x310c58(0x252)]({'cells':[_0x284ab7[_0x310c58(0x71)],colorNumber(_0x284ab7[_0x310c58(0x25a)],_0x310c58(0x25a)),colorNumber(_0x284ab7[_0x310c58(0x246)],_0x310c58(0x246)),colorNumber(_0x284ab7[_0x310c58(0x103)],_0x310c58(0x103)),colorNumber(_0x284ab7[_0x310c58(0x238)],_0x310c58(0x238)),colorPercent(_0x61d380)]});}else{const _0x3bf5b7=Math[_0x310c58(0x154)](minProjectWidth,...Array[_0x310c58(0x237)](_0x38a314[_0x310c58(0x1d1)]())[_0x310c58(0x19c)](_0x3fe990=>_0x3fe990[_0x310c58(0x24d)]),_0x310c58(0x2a2)[_0x310c58(0x24d)],_0x310c58(0x283)[_0x310c58(0x24d)]),_0x2f20f6=Math[_0x310c58(0xc2)](_0x3bf5b7,Math[_0x310c58(0x2a5)](_0xd0e7d2*0.3));_0x202d6d=[{'header':_0x310c58(0x2a2),'width':_0x2f20f6,'align':_0x310c58(0x2aa)},{'header':_0x310c58(0x283),'width':0x5,'align':_0x310c58(0x122)},{'header':_0x310c58(0xae),'width':0x5,'align':_0x310c58(0x122)},{'header':_0x310c58(0x2a1),'width':0x5,'align':_0x310c58(0x122)},{'header':_0x310c58(0x135),'width':0x5,'align':_0x310c58(0x122)},{'header':_0x310c58(0x224),'width':0x5,'align':_0x310c58(0x122)},{'header':_0x310c58(0x280),'width':0x7,'align':_0x310c58(0x122)}];const _0x8bd98a={'total':0x0,'passed':0x0,'failed':0x0,'flaky':0x0,'skipped':0x0};for(const [_0x1b9e46,_0x4d14a3]of _0xadccfe){_0x8bd98a[_0x310c58(0x71)]+=_0x4d14a3[_0x310c58(0x71)],_0x8bd98a[_0x310c58(0x25a)]+=_0x4d14a3[_0x310c58(0x25a)],_0x8bd98a[_0x310c58(0x246)]+=_0x4d14a3[_0x310c58(0x246)],_0x8bd98a[_0x310c58(0x103)]+=_0x4d14a3[_0x310c58(0x103)],_0x8bd98a[_0x310c58(0x238)]+=_0x4d14a3[_0x310c58(0x238)];const _0x559548=_0x35c076(_0x4d14a3);_0x3776bd[_0x310c58(0x252)]({'cells':[projectColors[_0x310c58(0x1b4)](_0x1b9e46),_0x4d14a3[_0x310c58(0x71)],colorNumber(_0x4d14a3[_0x310c58(0x25a)],_0x310c58(0x25a)),colorNumber(_0x4d14a3[_0x310c58(0x246)],_0x310c58(0x246)),colorNumber(_0x4d14a3[_0x310c58(0x103)],_0x310c58(0x103)),colorNumber(_0x4d14a3[_0x310c58(0x238)],_0x310c58(0x238)),colorPercent(_0x559548)]});}if(_0xadccfe[_0x310c58(0x24d)]>0x1){_0x3776bd[_0x310c58(0x252)]({'cells':[],'isSeparator':!![]});const _0x2b9492=_0x35c076(_0x8bd98a);_0x3776bd[_0x310c58(0x252)]({'cells':[_0x310c58(0x283),_0x8bd98a[_0x310c58(0x71)],colorNumber(_0x8bd98a[_0x310c58(0x25a)],_0x310c58(0x25a)),colorNumber(_0x8bd98a[_0x310c58(0x246)],_0x310c58(0x246)),colorNumber(_0x8bd98a[_0x310c58(0x103)],_0x310c58(0x103)),colorNumber(_0x8bd98a[_0x310c58(0x238)],_0x310c58(0x238)),colorPercent(_0x2b9492)],'isTotal':!![]});}}const _0x34b8c2=getPackageVersion2(),_0x383e8f=_0x21a07e(),_0x284dd3=[_0x310c58(0x139)+_0x34b8c2+_0x310c58(0x205)+_0x4ee926,_0x310c58(0xa6)+_0x1497a4[_0x310c58(0x28b)]+_0x310c58(0x1cd)+_0x5c0e1a,..._0x383e8f];_0x383e8f[_0x310c58(0x24d)]=0x0;const _0x3793bb=buildTable(_0x284dd3,_0x202d6d,_0x3776bd,_0xd0e7d2);console[_0x310c58(0x13c)]('');for(const _0x5e432b of _0x3793bb){console[_0x310c58(0x13c)](_0x5e432b);}}};}var import_node_fs=require('fs'),BaseReporter=class{[a0_0x2586d5(0x20b)];[a0_0x2586d5(0xb0)];[a0_0x2586d5(0x11b)];[a0_0x2586d5(0x16b)];[a0_0x2586d5(0x15f)];[a0_0x2586d5(0x28e)]=[];[a0_0x2586d5(0x28d)]=new Map();[a0_0x2586d5(0x242)]=new Map();[a0_0x2586d5(0x25b)]=0x0;[a0_0x2586d5(0x165)]=0x0;[a0_0x2586d5(0x115)]=0x0;[a0_0x2586d5(0xe8)]=0x0;[a0_0x2586d5(0x152)]=null;[a0_0x2586d5(0x78)]=[];[a0_0x2586d5(0x1ed)]=[];[a0_0x2586d5(0xa7)]=new Map();constructor(_0x184251={}){const _0x1945dd=a0_0x2586d5;this[_0x1945dd(0x16b)]=_0x184251,this[_0x1945dd(0x15f)]=_0x184251[_0x1945dd(0x15f)]??process.env.CHECKLY_REPORTER_VERBOSE===_0x1945dd(0xe0);}[a0_0x2586d5(0x1bf)](_0x3bd3d7){const _0x1ccbfd=a0_0x2586d5;return this[_0x1ccbfd(0x78)][_0x1ccbfd(0x252)](_0x3bd3d7),this;}[a0_0x2586d5(0x13c)](_0xbf1da2,_0x1d5f90){const _0x2721e7=a0_0x2586d5;if(!this[_0x2721e7(0x15f)])return;const _0x3e8c1f=new Date()[_0x2721e7(0xef)]()[_0x2721e7(0x1e9)]('T')[0x1]?.[_0x2721e7(0x17b)](0x0,0xc)??'',_0x3fc646=_0x2721e7(0x228)+_0x3e8c1f+']';_0x1d5f90&&Object[_0x2721e7(0x1d1)](_0x1d5f90)[_0x2721e7(0x24d)]>0x0?console[_0x2721e7(0x13c)](_0x3fc646+'\x20'+_0xbf1da2,_0x1d5f90):console[_0x2721e7(0x13c)](_0x3fc646+'\x20'+_0xbf1da2);}[a0_0x2586d5(0x149)](_0x113847){return(_0x15dd23,_0x2e2f4b)=>{const _0x12eb9a=a0_0x5332;this[_0x12eb9a(0x13c)]('['+_0x113847+']\x20'+_0x15dd23,_0x2e2f4b);};}[a0_0x2586d5(0x253)](_0x263958,_0x5a2600){const _0x442608=a0_0x2586d5,_0xb12c31=[_0x442608(0x114),_0x442608(0x162),_0x442608(0x12b)],_0x1f1712=this[_0x442608(0x16b)];for(const _0x5aecea of _0xb12c31){if(_0x5aecea in _0x1f1712&&_0x1f1712[_0x5aecea]!==void 0x0)throw new Error(_0x442608(0x179)+_0x5aecea+_0x442608(0x9e));}this[_0x442608(0x20b)]=_0x263958,this[_0x442608(0xb0)]=_0x5a2600,this[_0x442608(0x11b)]=new Date(),this[_0x442608(0x28d)][_0x442608(0x133)](),this[_0x442608(0x28e)]=[],this[_0x442608(0x25b)]=0x0,this[_0x442608(0x165)]=0x0,this[_0x442608(0x115)]=0x0,this[_0x442608(0xe8)]=0x0,this[_0x442608(0x152)]=null,this[_0x442608(0xa7)][_0x442608(0x133)](),this[_0x442608(0x242)][_0x442608(0x133)](),this[_0x442608(0x1f7)]();const _0x431b82=this[_0x442608(0x1b2)](_0x5a2600),_0x559b72=_0x263958[_0x442608(0xb4)][_0x442608(0x24d)]>0x0?_0x263958[_0x442608(0xb4)][_0x442608(0x19c)](_0x2fda47=>_0x2fda47[_0x442608(0xe2)])[_0x442608(0x21b)](',\x20'):Array[_0x442608(0x237)](this[_0x442608(0xa7)][_0x442608(0x1d1)]())[_0x442608(0x21b)](',\x20')||_0x442608(0x239);this[_0x442608(0x13c)](_0x442608(0x23d),{'tests':_0x431b82,'projects':_0x559b72,'workers':_0x263958[_0x442608(0x2ad)]});for(const _0x1d7d30 of this[_0x442608(0x78)]){_0x1d7d30[_0x442608(0x253)]?.({'config':_0x263958,'suite':_0x5a2600,'log':this[_0x442608(0x149)](_0x1d7d30[_0x442608(0xe2)])});}}[a0_0x2586d5(0x1c2)](_0x101043,_0x42a193){const _0x1381b8=a0_0x2586d5;for(const _0x381231 of this[_0x1381b8(0x78)]){_0x381231[_0x1381b8(0x1c2)]?.({'test':_0x101043,'result':_0x42a193,'log':this[_0x1381b8(0x149)](_0x381231[_0x1381b8(0xe2)])});}}[a0_0x2586d5(0x24f)](_0x3bbd68,_0x536522,_0x1aac4f){const _0x56c3bf=a0_0x2586d5;for(const _0x4558ab of this[_0x56c3bf(0x78)]){_0x4558ab[_0x56c3bf(0x24f)]?.({'test':_0x3bbd68,'result':_0x536522,'step':_0x1aac4f,'log':this[_0x56c3bf(0x149)](_0x4558ab[_0x56c3bf(0xe2)])});}}[a0_0x2586d5(0x266)](_0x73b0c7,_0x21caa9,_0x325f8c){const _0xc95857=a0_0x2586d5;for(const _0x3e35c9 of this[_0xc95857(0x78)]){_0x3e35c9[_0xc95857(0x266)]?.({'test':_0x73b0c7,'result':_0x21caa9,'step':_0x325f8c,'log':this[_0xc95857(0x149)](_0x3e35c9[_0xc95857(0xe2)])});}}[a0_0x2586d5(0x1e0)](_0x10e99c,_0x39b473){const _0x4b5e4d=a0_0x2586d5,_0x8d587f=_0x10e99c['id'];let _0x3aa5b1=this[_0x4b5e4d(0x28d)][_0x4b5e4d(0x11e)](_0x8d587f);!_0x3aa5b1&&(_0x3aa5b1={'testCase':_0x10e99c,'results':[]},this[_0x4b5e4d(0x28d)][_0x4b5e4d(0x1fb)](_0x8d587f,_0x3aa5b1));_0x3aa5b1[_0x4b5e4d(0x27f)][_0x4b5e4d(0x252)](_0x39b473);for(const _0x2ef465 of this[_0x4b5e4d(0x78)]){_0x2ef465[_0x4b5e4d(0x1e0)]?.({'test':_0x10e99c,'result':_0x39b473,'log':this[_0x4b5e4d(0x149)](_0x2ef465[_0x4b5e4d(0xe2)])});}}[a0_0x2586d5(0x82)](_0x5bad0a,_0x376ef9,_0x2836ea){const _0x44ac49=a0_0x2586d5;for(const _0x5f2ceb of this[_0x44ac49(0x78)]){_0x5f2ceb[_0x44ac49(0x82)]?.({'chunk':_0x5bad0a,'test':_0x376ef9,'result':_0x2836ea,'log':this[_0x44ac49(0x149)](_0x5f2ceb[_0x44ac49(0xe2)])});}}[a0_0x2586d5(0x244)](_0x582a50,_0x54cffd,_0x1df31a){const _0x4d51d2=a0_0x2586d5;for(const _0xfdd42c of this[_0x4d51d2(0x78)]){_0xfdd42c[_0x4d51d2(0x244)]?.({'chunk':_0x582a50,'test':_0x54cffd,'result':_0x1df31a,'log':this[_0x4d51d2(0x149)](_0xfdd42c[_0x4d51d2(0xe2)])});}}[a0_0x2586d5(0x16f)](_0x14507c){const _0x25586c=a0_0x2586d5;this[_0x25586c(0x28e)][_0x25586c(0x252)](_0x14507c),this[_0x25586c(0x13c)](_0x25586c(0x1b0),{'message':_0x14507c[_0x25586c(0x112)]?.[_0x25586c(0x17b)](0x0,0x64)});for(const _0x5bc45f of this[_0x25586c(0x78)]){_0x5bc45f[_0x25586c(0x16f)]?.({'error':_0x14507c,'log':this[_0x25586c(0x149)](_0x5bc45f[_0x25586c(0xe2)])});}}async[a0_0x2586d5(0x234)](_0x542004){const _0x562153=a0_0x2586d5;for(const _0x333022 of this[_0x562153(0x28d)][_0x562153(0x168)]()){switch(_0x333022[_0x562153(0x128)][_0x562153(0x12e)]()){case _0x562153(0x111):this[_0x562153(0x25b)]++;break;case _0x562153(0x148):this[_0x562153(0x165)]++;break;case _0x562153(0x103):this[_0x562153(0x115)]++;break;case _0x562153(0x238):this[_0x562153(0xe8)]++;break;}}this[_0x562153(0x152)]=this[_0x562153(0x131)](_0x542004),this[_0x562153(0x13c)](_0x562153(0x9c),{'status':_0x542004[_0x562153(0x24a)],'duration':_0x542004[_0x562153(0x191)]+'ms','passed':this[_0x562153(0x25b)],'failed':this[_0x562153(0x165)],'flaky':this[_0x562153(0x115)],'skipped':this[_0x562153(0xe8)]});const _0x2d93cd=this[_0x562153(0x16b)][_0x562153(0x211)];if(_0x2d93cd){const _0x344a53=await import('fs');_0x344a53[_0x562153(0x1e8)](_0x2d93cd,{'recursive':!![]});const _0x2d4b2f=_0x2d93cd+_0x562153(0x16e);_0x344a53[_0x562153(0x267)](_0x2d4b2f,JSON[_0x562153(0x151)](this[_0x562153(0x152)],null,0x2)),this[_0x562153(0x13c)](_0x562153(0x1e4),{'path':_0x2d4b2f});}for(const _0x5b665f of this[_0x562153(0x78)]){await _0x5b665f[_0x562153(0x234)]?.({'result':_0x542004,'report':this[_0x562153(0x152)],'log':this[_0x562153(0x149)](_0x5b665f[_0x562153(0xe2)]),'addSummaryLine':_0x44b27f=>this[_0x562153(0x1ed)][_0x562153(0x252)](_0x44b27f),'getSummaryLines':()=>this[_0x562153(0x1ed)]});}this[_0x562153(0xbe)]();}async[a0_0x2586d5(0xf8)](){const _0x1a2f0c=a0_0x2586d5;this[_0x1a2f0c(0x13c)](_0x1a2f0c(0x11c));for(const _0x34a377 of this[_0x1a2f0c(0x78)]){await _0x34a377[_0x1a2f0c(0xf8)]?.({'log':this[_0x1a2f0c(0x149)](_0x34a377[_0x1a2f0c(0xe2)])});}}[a0_0x2586d5(0x119)](){const _0x31c688=a0_0x2586d5;return this[_0x31c688(0x16b)][_0x31c688(0x119)]??![];}[a0_0x2586d5(0x1db)](){const _0x3be74b=a0_0x2586d5;if(this[_0x3be74b(0x152)])return this[_0x3be74b(0x152)];return this[_0x3be74b(0x131)]({'status':_0x3be74b(0x25a),'startTime':this[_0x3be74b(0x11b)],'duration':Date[_0x3be74b(0x19f)]()-this[_0x3be74b(0x11b)][_0x3be74b(0x1c9)]()});}[a0_0x2586d5(0x131)](_0x278ccd){const _0x1e2575=a0_0x2586d5,_0x5f040f=this[_0x1e2575(0xc4)]();return this[_0x1e2575(0xdd)](),{'config':this[_0x1e2575(0xdf)](),'suites':_0x5f040f,'errors':this[_0x1e2575(0x28e)][_0x1e2575(0x19c)](_0x5c87c4=>this[_0x1e2575(0xf1)](_0x5c87c4,!![])),'stats':{'startTime':this[_0x1e2575(0x11b)][_0x1e2575(0xef)](),'duration':_0x278ccd[_0x1e2575(0x191)],'expected':this[_0x1e2575(0x25b)],'unexpected':this[_0x1e2575(0x165)],'flaky':this[_0x1e2575(0x115)],'skipped':this[_0x1e2575(0xe8)]}};}[a0_0x2586d5(0x1f7)](){const _0x314491=a0_0x2586d5;if(this[_0x314491(0x20b)][_0x314491(0xb4)][_0x314491(0x24d)]>0x0)return;this[_0x314491(0x13c)](_0x314491(0x9d));for(const _0x49ce8c of this[_0x314491(0xb0)][_0x314491(0xcd)]){const _0x4825a7=_0x49ce8c[_0x314491(0x298)]();if(_0x4825a7){const _0x47c40e=_0x4825a7[_0x314491(0xe2)]||_0x314491(0x239);!this[_0x314491(0xa7)][_0x314491(0xfb)](_0x47c40e)&&this[_0x314491(0xa7)][_0x314491(0x1fb)](_0x47c40e,{'id':_0x47c40e,'name':_0x47c40e,'testDir':_0x4825a7[_0x314491(0x279)],'outputDir':_0x4825a7[_0x314491(0x211)],'timeout':_0x4825a7[_0x314491(0x1dd)],'retries':_0x4825a7[_0x314491(0x23f)],'repeatEach':_0x4825a7[_0x314491(0x17c)],'metadata':_0x4825a7[_0x314491(0x1ea)]??{},'testMatch':Array[_0x314491(0x207)](_0x4825a7[_0x314491(0x17f)])?_0x4825a7[_0x314491(0x17f)][_0x314491(0x19c)](String):[String(_0x4825a7[_0x314491(0x17f)])],'testIgnore':Array[_0x314491(0x207)](_0x4825a7[_0x314491(0x189)])?_0x4825a7[_0x314491(0x189)][_0x314491(0x19c)](String):[String(_0x4825a7[_0x314491(0x189)])]});}}this[_0x314491(0xa7)][_0x314491(0x28b)]===0x0&&this[_0x314491(0x19d)](this[_0x314491(0xb0)]),this[_0x314491(0x13c)](_0x314491(0x6f),{'count':this[_0x314491(0xa7)][_0x314491(0x28b)],'names':Array[_0x314491(0x237)](this[_0x314491(0xa7)][_0x314491(0x1d1)]())});}[a0_0x2586d5(0x19d)](_0x62cf2b){const _0xd2089=a0_0x2586d5;for(const _0x24f291 of _0x62cf2b[_0xd2089(0x7d)]()){const _0x39ed6f=_0x24f291[_0xd2089(0x26b)][_0xd2089(0x298)](),_0x51bac1=_0x39ed6f?.[_0xd2089(0xe2)]||_0xd2089(0x239);!this[_0xd2089(0xa7)][_0xd2089(0xfb)](_0x51bac1)&&(_0x39ed6f?this[_0xd2089(0xa7)][_0xd2089(0x1fb)](_0x51bac1,{'id':_0x51bac1,'name':_0x51bac1,'testDir':_0x39ed6f[_0xd2089(0x279)],'outputDir':_0x39ed6f[_0xd2089(0x211)],'timeout':_0x39ed6f[_0xd2089(0x1dd)],'retries':_0x39ed6f[_0xd2089(0x23f)],'repeatEach':_0x39ed6f[_0xd2089(0x17c)],'metadata':_0x39ed6f[_0xd2089(0x1ea)]??{},'testMatch':Array[_0xd2089(0x207)](_0x39ed6f[_0xd2089(0x17f)])?_0x39ed6f[_0xd2089(0x17f)][_0xd2089(0x19c)](String):[String(_0x39ed6f[_0xd2089(0x17f)])],'testIgnore':Array[_0xd2089(0x207)](_0x39ed6f[_0xd2089(0x189)])?_0x39ed6f[_0xd2089(0x189)][_0xd2089(0x19c)](String):[String(_0x39ed6f[_0xd2089(0x189)])]}):this[_0xd2089(0xa7)][_0xd2089(0x1fb)](_0x51bac1,{'id':_0x51bac1,'name':_0x51bac1,'testDir':'','outputDir':'','timeout':0x0,'retries':0x0,'repeatEach':0x1,'metadata':{},'testMatch':[],'testIgnore':[]}));}}[a0_0x2586d5(0xdf)](){const _0x5c2147=a0_0x2586d5,_0x554c95=this[_0x5c2147(0x20b)],_0x419da2=_0x554c95[_0x5c2147(0xb4)][_0x5c2147(0x24d)]>0x0?_0x554c95[_0x5c2147(0xb4)][_0x5c2147(0x19c)](_0x5da617=>this[_0x5c2147(0xf7)](_0x5da617)):Array[_0x5c2147(0x237)](this[_0x5c2147(0xa7)][_0x5c2147(0x168)]());return{'rootDir':_0x554c95[_0x5c2147(0x174)],'configFile':_0x554c95[_0x5c2147(0x14d)]??void 0x0,'version':_0x554c95[_0x5c2147(0x197)],'workers':_0x554c95[_0x5c2147(0x2ad)],'fullyParallel':_0x554c95[_0x5c2147(0xb2)],'forbidOnly':_0x554c95[_0x5c2147(0x13b)],'globalTimeout':_0x554c95[_0x5c2147(0x1c1)],'maxFailures':_0x554c95[_0x5c2147(0x273)],'metadata':_0x554c95[_0x5c2147(0x1ea)]??{},'projects':_0x419da2,'shard':_0x554c95[_0x5c2147(0x227)]??null,'tags':_0x554c95[_0x5c2147(0x15a)]??[],'updateSourceMethod':_0x554c95[_0x5c2147(0x194)],'preserveOutput':_0x554c95[_0x5c2147(0xbd)],'quiet':_0x554c95[_0x5c2147(0x29e)],'reportSlowTests':_0x554c95[_0x5c2147(0x255)]??null,'webServer':_0x554c95[_0x5c2147(0x1ee)]??null,'globalSetup':_0x554c95[_0x5c2147(0x29b)]??null,'globalTeardown':_0x554c95[_0x5c2147(0xb9)]??null,'grep':_0x554c95[_0x5c2147(0x182)],'grepInvert':_0x554c95[_0x5c2147(0xf6)],'reporter':_0x554c95[_0x5c2147(0x163)],'updateSnapshots':_0x554c95[_0x5c2147(0x9f)]};}[a0_0x2586d5(0xf7)](_0x5b904a){const _0x5f42c7=a0_0x2586d5;return{'id':_0x5b904a[_0x5f42c7(0xe2)],'name':_0x5b904a[_0x5f42c7(0xe2)],'testDir':_0x5b904a[_0x5f42c7(0x279)],'outputDir':_0x5b904a[_0x5f42c7(0x211)],'timeout':_0x5b904a[_0x5f42c7(0x1dd)],'retries':_0x5b904a[_0x5f42c7(0x23f)],'repeatEach':_0x5b904a[_0x5f42c7(0x17c)],'metadata':_0x5b904a[_0x5f42c7(0x1ea)]??{},'testMatch':Array[_0x5f42c7(0x207)](_0x5b904a[_0x5f42c7(0x17f)])?_0x5b904a[_0x5f42c7(0x17f)][_0x5f42c7(0x19c)](String):[String(_0x5b904a[_0x5f42c7(0x17f)])],'testIgnore':Array[_0x5f42c7(0x207)](_0x5b904a[_0x5f42c7(0x189)])?_0x5b904a[_0x5f42c7(0x189)][_0x5f42c7(0x19c)](String):[String(_0x5b904a[_0x5f42c7(0x189)])]};}[a0_0x2586d5(0xc4)](){const _0x955d3e=a0_0x2586d5,_0x1f272c=new Map();for(const _0x18d779 of this[_0x955d3e(0xb0)][_0x955d3e(0xcd)]){for(const _0x415986 of _0x18d779[_0x955d3e(0xcd)]){const _0xf23ef2=_0x415986[_0x955d3e(0x26d)]?.[_0x955d3e(0x223)];if(!_0xf23ef2)continue;const _0xa3a27e=this[_0x955d3e(0x28c)](_0xf23ef2),_0x3b3684=this[_0x955d3e(0x18f)](_0x415986,_0xa3a27e);if(!_0x3b3684)continue;const _0x3fbd53=_0x1f272c[_0x955d3e(0x11e)](_0xf23ef2);_0x3fbd53?this[_0x955d3e(0x220)](_0x3fbd53,_0x3b3684):_0x1f272c[_0x955d3e(0x1fb)](_0xf23ef2,_0x3b3684);}}return Array[_0x955d3e(0x237)](_0x1f272c[_0x955d3e(0x168)]());}[a0_0x2586d5(0x18f)](_0x5d0871,_0x3d6179){const _0x1d5411=a0_0x2586d5,_0x523813=_0x5d0871[_0x1d5411(0x7d)]();if(_0x523813[_0x1d5411(0x24d)]===0x0)return null;const _0x2be228=[];for(const _0x5e5a4a of _0x5d0871[_0x1d5411(0xcd)]){const _0x21555e=this[_0x1d5411(0x18f)](_0x5e5a4a,_0x3d6179);if(_0x21555e)_0x2be228[_0x1d5411(0x252)](_0x21555e);}const _0x2e97bc=[];for(const _0x39989e of _0x5d0871[_0x1d5411(0x28d)]){const _0x2fe3f9=this[_0x1d5411(0x28d)][_0x1d5411(0x11e)](_0x39989e['id']);_0x2fe3f9&&_0x2e97bc[_0x1d5411(0x252)](this[_0x1d5411(0x1f9)](_0x2fe3f9));}return{'title':_0x5d0871[_0x1d5411(0x210)]||_0x3d6179,'file':_0x3d6179,'line':_0x5d0871[_0x1d5411(0x26d)]?.[_0x1d5411(0xc8)]??0x0,'column':_0x5d0871[_0x1d5411(0x26d)]?.[_0x1d5411(0x15c)]??0x0,'specs':_0x2e97bc,'suites':_0x2be228[_0x1d5411(0x24d)]?_0x2be228:void 0x0};}[a0_0x2586d5(0x220)](_0x4145fd,_0x44ce5d){const _0x2e02b9=a0_0x2586d5;for(const _0x5390da of _0x44ce5d[_0x2e02b9(0xcd)]||[]){const _0x346a67=_0x4145fd[_0x2e02b9(0xcd)]?.[_0x2e02b9(0x256)](_0x32ef15=>_0x32ef15[_0x2e02b9(0x210)]===_0x5390da[_0x2e02b9(0x210)]&&_0x32ef15[_0x2e02b9(0xc8)]===_0x5390da[_0x2e02b9(0xc8)]&&_0x32ef15[_0x2e02b9(0x15c)]===_0x5390da[_0x2e02b9(0x15c)]);_0x346a67?this[_0x2e02b9(0x220)](_0x346a67,_0x5390da):(_0x4145fd[_0x2e02b9(0xcd)]=_0x4145fd[_0x2e02b9(0xcd)]??[],_0x4145fd[_0x2e02b9(0xcd)][_0x2e02b9(0x252)](_0x5390da));}_0x4145fd[_0x2e02b9(0x1c6)][_0x2e02b9(0x252)](..._0x44ce5d[_0x2e02b9(0x1c6)]);}[a0_0x2586d5(0x1f9)](_0x19933e){const _0x4e3663=a0_0x2586d5,{testCase:_0x4336ef}=_0x19933e,_0x49ed61=_0x4336ef[_0x4e3663(0x12e)]();return{'id':_0x4336ef['id'],'title':_0x4336ef[_0x4e3663(0x210)],'file':this[_0x4e3663(0x28c)](_0x4336ef[_0x4e3663(0x26d)][_0x4e3663(0x223)]),'line':_0x4336ef[_0x4e3663(0x26d)][_0x4e3663(0xc8)],'column':_0x4336ef[_0x4e3663(0x26d)][_0x4e3663(0x15c)],'tags':this[_0x4e3663(0x110)](_0x4336ef),'ok':_0x49ed61===_0x4e3663(0x111)||_0x49ed61===_0x4e3663(0x103)||_0x49ed61===_0x4e3663(0x238),'tests':[this[_0x4e3663(0x181)](_0x19933e)]};}[a0_0x2586d5(0x110)](_0x256cba){const _0x54ee55=a0_0x2586d5,_0x50394c=_0x256cba[_0x54ee55(0x15a)];if(_0x50394c&&_0x50394c[_0x54ee55(0x24d)]>0x0)return _0x50394c[_0x54ee55(0x19c)](_0x471022=>_0x471022[_0x54ee55(0x23a)](/^@/,''));const _0x5c131a=_0x256cba[_0x54ee55(0x210)][_0x54ee55(0x2a4)](/@[\w-]+/g);return _0x5c131a?.[_0x54ee55(0x19c)](_0x121569=>_0x121569[_0x54ee55(0x23a)](/^@/,''))??[];}[a0_0x2586d5(0x181)](_0x51d733){const _0x1c2624=a0_0x2586d5,{testCase:_0x2eab66,results:_0x1a9f77}=_0x51d733,_0x5e27fa=this[_0x1c2624(0x98)](_0x2eab66);return{'projectId':_0x5e27fa,'projectName':_0x5e27fa,'timeout':_0x2eab66[_0x1c2624(0x1dd)],'expectedStatus':_0x2eab66[_0x1c2624(0x136)],'annotations':this[_0x1c2624(0x232)](_0x2eab66[_0x1c2624(0x206)]),'results':_0x1a9f77[_0x1c2624(0x19c)](_0x307e3c=>this[_0x1c2624(0x219)](_0x307e3c)),'status':this[_0x1c2624(0xe5)](_0x2eab66[_0x1c2624(0x12e)]())};}[a0_0x2586d5(0x98)](_0x33ec7a){const _0x56564c=a0_0x2586d5,_0x12a1ee=_0x33ec7a[_0x56564c(0x26b)][_0x56564c(0x298)]();if(_0x12a1ee&&typeof _0x12a1ee[_0x56564c(0xe2)]===_0x56564c(0x100))return _0x12a1ee[_0x56564c(0xe2)];let _0x339818=_0x33ec7a[_0x56564c(0x26b)];while(_0x339818){const _0x3da643=_0x339818[_0x56564c(0x298)]();if(_0x3da643&&typeof _0x3da643[_0x56564c(0xe2)]===_0x56564c(0x100))return _0x3da643[_0x56564c(0xe2)];_0x339818=_0x339818[_0x56564c(0x26b)];}return _0x56564c(0x239);}[a0_0x2586d5(0x219)](_0x4e2d90){const _0x22427b=a0_0x2586d5;return{'workerIndex':_0x4e2d90[_0x22427b(0x9b)],'parallelIndex':_0x4e2d90[_0x22427b(0x79)]??0x0,'status':_0x4e2d90[_0x22427b(0x24a)],'duration':_0x4e2d90[_0x22427b(0x191)],'startTime':_0x4e2d90[_0x22427b(0x11b)][_0x22427b(0xef)](),'retry':_0x4e2d90[_0x22427b(0x10e)],'errors':_0x4e2d90[_0x22427b(0x1b8)][_0x22427b(0x19c)](_0x216b13=>this[_0x22427b(0xf1)](_0x216b13,!![])),'error':_0x4e2d90[_0x22427b(0x1a1)]?this[_0x22427b(0xf1)](_0x4e2d90[_0x22427b(0x1a1)],![]):void 0x0,'errorLocation':_0x4e2d90[_0x22427b(0x1a1)]?.[_0x22427b(0x26d)],'stdout':_0x4e2d90[_0x22427b(0x25d)][_0x22427b(0x19c)](_0x472827=>typeof _0x472827===_0x22427b(0x100)?{'text':_0x472827}:Buffer[_0x22427b(0xe4)](_0x472827)?{'buffer':_0x472827[_0x22427b(0x281)](_0x22427b(0xd8))}:_0x472827),'stderr':_0x4e2d90[_0x22427b(0x137)][_0x22427b(0x19c)](_0x2bd872=>typeof _0x2bd872===_0x22427b(0x100)?{'text':_0x2bd872}:Buffer[_0x22427b(0xe4)](_0x2bd872)?{'buffer':_0x2bd872[_0x22427b(0x281)](_0x22427b(0xd8))}:_0x2bd872),'attachments':_0x4e2d90[_0x22427b(0x94)][_0x22427b(0x19c)](_0x3e2079=>({'name':_0x3e2079[_0x22427b(0xe2)],'contentType':_0x3e2079[_0x22427b(0xb5)],'path':_0x3e2079[_0x22427b(0xaf)],'body':_0x3e2079[_0x22427b(0x1f1)]?_0x3e2079[_0x22427b(0x1f1)][_0x22427b(0x281)](_0x22427b(0xd8)):void 0x0})),'steps':_0x4e2d90[_0x22427b(0x105)][_0x22427b(0x19c)](_0x356ee8=>this[_0x22427b(0x185)](_0x356ee8)),'annotations':this[_0x22427b(0x232)](_0x4e2d90[_0x22427b(0x206)]??[])};}[a0_0x2586d5(0x185)](_0x2282a2){const _0x2faf97=a0_0x2586d5,_0x29a8fb={'title':_0x2282a2[_0x2faf97(0x210)],'duration':_0x2282a2[_0x2faf97(0x191)],'error':_0x2282a2[_0x2faf97(0x1a1)]?this[_0x2faf97(0xf1)](_0x2282a2[_0x2faf97(0x1a1)],![]):void 0x0,'steps':_0x2282a2[_0x2faf97(0x105)]?.[_0x2faf97(0x19c)](_0x4dc27c=>this[_0x2faf97(0x185)](_0x4dc27c))};if(_0x2282a2[_0x2faf97(0x26d)]){_0x29a8fb[_0x2faf97(0x27e)]={'location':{'file':_0x2282a2[_0x2faf97(0x26d)][_0x2faf97(0x223)],'line':_0x2282a2[_0x2faf97(0x26d)][_0x2faf97(0xc8)],'column':_0x2282a2[_0x2faf97(0x26d)][_0x2faf97(0x15c)]}};const _0x21e758=this[_0x2faf97(0x242)][_0x2faf97(0x11e)](_0x2282a2[_0x2faf97(0x26d)][_0x2faf97(0x223)])??[];_0x21e758[_0x2faf97(0x252)](_0x29a8fb),this[_0x2faf97(0x242)][_0x2faf97(0x1fb)](_0x2282a2[_0x2faf97(0x26d)][_0x2faf97(0x223)],_0x21e758);}return _0x29a8fb;}[a0_0x2586d5(0xf1)](_0x364089,_0x3d3af2){const _0x39a18b=a0_0x2586d5;if(_0x364089[_0x39a18b(0x1f8)]!==void 0x0)return{'message':_0x364089[_0x39a18b(0x1f8)],'value':_0x364089[_0x39a18b(0x1f8)]};let _0x905698=_0x364089[_0x39a18b(0x112)]??_0x39a18b(0x16c);_0x3d3af2&&!/^(\w+Error|Error):/[_0x39a18b(0xca)](_0x905698)&&(_0x905698=_0x39a18b(0xdb)+_0x905698);if(_0x3d3af2){if(_0x364089[_0x39a18b(0x1d4)])_0x905698+='\x0a\x0a'+_0x364089[_0x39a18b(0x1d4)];if(_0x364089[_0x39a18b(0x95)]){const _0x4de20f=_0x364089[_0x39a18b(0x95)][_0x39a18b(0x1e9)]('\x0a')[_0x39a18b(0x264)](_0x5d5512=>_0x5d5512[_0x39a18b(0xe3)]()[_0x39a18b(0x2a8)](_0x39a18b(0xda)));if(_0x4de20f[_0x39a18b(0x24d)])_0x905698+='\x0a'+_0x4de20f[_0x39a18b(0x21b)]('\x0a');}else _0x364089[_0x39a18b(0x26d)]&&(_0x905698+=_0x39a18b(0xcb)+_0x364089[_0x39a18b(0x26d)][_0x39a18b(0x223)]+':'+_0x364089[_0x39a18b(0x26d)][_0x39a18b(0xc8)]+':'+_0x364089[_0x39a18b(0x26d)][_0x39a18b(0x15c)]);}return{'message':_0x905698,'location':_0x364089[_0x39a18b(0x26d)],'stack':_0x364089[_0x39a18b(0x95)],'snippet':_0x364089[_0x39a18b(0x1d4)]};}[a0_0x2586d5(0x232)](_0x3fa690){const _0x6e5115=a0_0x2586d5;return _0x3fa690[_0x6e5115(0x19c)](_0x5ce662=>({'type':_0x5ce662[_0x6e5115(0x1a3)],'description':_0x5ce662[_0x6e5115(0x1e1)],'location':_0x5ce662[_0x6e5115(0x26d)]}));}[a0_0x2586d5(0x1b2)](_0x38fa0b){const _0x2dbe59=a0_0x2586d5;let _0x20e9f3=_0x38fa0b[_0x2dbe59(0x28d)]?.[_0x2dbe59(0x24d)]??0x0;for(const _0x54e59c of _0x38fa0b[_0x2dbe59(0xcd)]??[]){_0x20e9f3+=this[_0x2dbe59(0x1b2)](_0x54e59c);}return _0x20e9f3;}[a0_0x2586d5(0x28c)](_0x32622f){const _0x1f7c01=a0_0x2586d5;return _0x32622f[_0x1f7c01(0x1e9)]('/')[_0x1f7c01(0x104)]()??_0x32622f;}[a0_0x2586d5(0xe5)](_0x47bef0){const _0x22b8c4=a0_0x2586d5;if(_0x47bef0===_0x22b8c4(0x111)||_0x47bef0===_0x22b8c4(0x148)||_0x47bef0===_0x22b8c4(0x103)||_0x47bef0===_0x22b8c4(0x238))return _0x47bef0;return _0x22b8c4(0x148);}[a0_0x2586d5(0xdd)](){const _0x11f61e=a0_0x2586d5;for(const [_0x168638,_0x13088e]of this[_0x11f61e(0x242)]){let _0x2717b4;try{_0x2717b4=(0x0,import_node_fs[_0x11f61e(0x1ae)])(_0x168638,_0x11f61e(0x243));}catch{continue;}const _0x391212=_0x2717b4[_0x11f61e(0x1e9)]('\x0a'),_0x1bdd37=_0x391212[_0x11f61e(0x24d)];for(const _0x133751 of _0x13088e){const _0x1ccfb6=_0x133751[_0x11f61e(0x27e)]?.[_0x11f61e(0x26d)];if(!_0x1ccfb6||_0x1ccfb6[_0x11f61e(0xc8)]<0x1||_0x1ccfb6[_0x11f61e(0xc8)]>_0x1bdd37)continue;const _0x5519b7=_0x1ccfb6[_0x11f61e(0xc8)],_0x1f317d=_0x1ccfb6[_0x11f61e(0x15c)],_0x5206bd=Math[_0x11f61e(0x154)](0x1,_0x5519b7-0x1),_0x2f0344=Math[_0x11f61e(0xc2)](_0x1bdd37,_0x5519b7+0x1),_0x5977d7=[];for(let _0xbc8c3d=_0x5206bd;_0xbc8c3d<=_0x2f0344;_0xbc8c3d++){const _0x4c4799=String(_0xbc8c3d)[_0x11f61e(0x1bd)](0x4,'\x20');_0x5977d7[_0x11f61e(0x252)]('\x20\x20'+_0x4c4799+_0x11f61e(0x1aa)+_0x391212[_0xbc8c3d-0x1]);if(_0xbc8c3d===_0x5519b7&&_0x1f317d>0x0){const _0x537c81='\x20'[_0x11f61e(0x25c)](_0x1f317d-0x1)+'^';_0x5977d7[_0x11f61e(0x252)](_0x11f61e(0x70)+_0x537c81);}}_0x133751[_0x11f61e(0x27e)][_0x11f61e(0x1d4)]=_0x5977d7[_0x11f61e(0x21b)]('\x0a');}}}[a0_0x2586d5(0xbe)](){const _0x2bafb7=a0_0x2586d5;for(const _0x2347a1 of this[_0x2bafb7(0x1ed)]){console[_0x2bafb7(0x13c)](_0x2347a1);}}},ChecklyReporter=class extends BaseReporter{constructor(_0x8bcba5={}){const _0x1cddb1=a0_0x2586d5,_0x5f32bd=_0x8bcba5[_0x1cddb1(0x1ac)]!==![];super({..._0x8bcba5,'printsToStdio':_0x5f32bd}),_0x5f32bd&&this[_0x1cddb1(0x1bf)](lineReporter({'printSteps':_0x8bcba5[_0x1cddb1(0x73)]})),this[_0x1cddb1(0x1bf)](checklyUpload(_0x8bcba5)),_0x8bcba5[_0x1cddb1(0x118)]!==![]&&this[_0x1cddb1(0x1bf)](summaryTable());}},index_default=ChecklyReporter;function createChecklyReporter(_0x3781a1={}){const _0x45994f=a0_0x2586d5;return[_0x45994f(0x18e),_0x3781a1];}0x0&&(module[a0_0x2586d5(0x1fa)]={'MissingCredentialsError':MissingCredentialsError,'createChecklyReporter':createChecklyReporter});