@flakiness/sdk 2.2.1 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/lib/browser.js +9 -2
- package/lib/index.js +133 -18
- package/package.json +13 -5
- package/types/src/gitWorktree.d.ts.map +1 -1
- package/types/src/index.d.ts +1 -0
- package/types/src/index.d.ts.map +1 -1
- package/types/src/showReportCommand.d.ts +19 -0
- package/types/src/showReportCommand.d.ts.map +1 -0
- package/types/src/stripAnsi.d.ts +3 -1
- package/types/src/stripAnsi.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
[](https://flakiness.io/flakiness/nodejs-sdk)
|
|
2
|
+
|
|
1
3
|
# Flakiness Node.js SDK
|
|
2
4
|
|
|
3
5
|
The Flakiness SDK provides a comprehensive set of tools for creating and managing [Flakiness JSON Reports](https://github.com/flakiness/flakiness-report) in Node.js.
|
|
@@ -8,6 +10,8 @@ The Flakiness SDK provides a comprehensive set of tools for creating and managin
|
|
|
8
10
|
npm i @flakiness/sdk @flakiness/flakiness-report
|
|
9
11
|
```
|
|
10
12
|
|
|
13
|
+
Requires Node.js 22+.
|
|
14
|
+
|
|
11
15
|
## Quick Start
|
|
12
16
|
|
|
13
17
|
Here's a minimal example of creating a Flakiness JSON Report:
|
|
@@ -94,6 +98,7 @@ Use this entry point when you need to process or manipulate reports in browser-b
|
|
|
94
98
|
### Working with Reports
|
|
95
99
|
- **`readReport()`** - Read a Flakiness report and its attachments from disk
|
|
96
100
|
- **`showReport()`** - Start a local server and open the report in your browser
|
|
101
|
+
- **`showReportCommand()`** - Build a shell command for opening the report later with the Flakiness CLI
|
|
97
102
|
- **`uploadReport()`** - Upload reports and attachments to Flakiness.io
|
|
98
103
|
- **`writeReport()`** - Write reports to disk in the standard Flakiness report format
|
|
99
104
|
|
|
@@ -123,4 +128,3 @@ Use this entry point when you need to process or manipulate reports in browser-b
|
|
|
123
128
|
```
|
|
124
129
|
|
|
125
130
|
If neither method is available, the upload is skipped with a `'skipped'` status.
|
|
126
|
-
|
package/lib/browser.js
CHANGED
|
@@ -13,7 +13,7 @@ __export(reportUtilsBrowser_exports, {
|
|
|
13
13
|
visitTests: () => visitTests
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
16
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.28.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/flakinessReport.js
|
|
17
17
|
var FlakinessReport;
|
|
18
18
|
((FlakinessReport22) => {
|
|
19
19
|
FlakinessReport22.CATEGORY_PLAYWRIGHT = "playwright";
|
|
@@ -23,7 +23,7 @@ var FlakinessReport;
|
|
|
23
23
|
FlakinessReport22.STREAM_STDERR = 2;
|
|
24
24
|
})(FlakinessReport || (FlakinessReport = {}));
|
|
25
25
|
|
|
26
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
26
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.28.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/schema.js
|
|
27
27
|
import z from "zod/v4";
|
|
28
28
|
var Schema;
|
|
29
29
|
((Schema2) => {
|
|
@@ -138,8 +138,15 @@ var Schema;
|
|
|
138
138
|
samples: z.array(Schema2.SystemUtilizationSample)
|
|
139
139
|
});
|
|
140
140
|
Schema2.UtilizationTelemetry = z.tuple([Schema2.DurationMS, z.number().min(0).max(100)]);
|
|
141
|
+
Schema2.Source = z.object({
|
|
142
|
+
filePath: Schema2.GitFilePath,
|
|
143
|
+
text: z.string(),
|
|
144
|
+
lineOffset: z.number().optional(),
|
|
145
|
+
contentType: z.string().optional()
|
|
146
|
+
});
|
|
141
147
|
Schema2.FlakinessProject = z.string();
|
|
142
148
|
Schema2.Report = z.object({
|
|
149
|
+
sources: z.array(Schema2.Source).optional(),
|
|
143
150
|
flakinessProject: Schema2.FlakinessProject.optional(),
|
|
144
151
|
category: z.string().min(1).max(100),
|
|
145
152
|
commitId: Schema2.CommitId,
|
package/lib/index.js
CHANGED
|
@@ -215,6 +215,12 @@ function randomUUIDBase62() {
|
|
|
215
215
|
// src/gitWorktree.ts
|
|
216
216
|
var log = debug("fk:git");
|
|
217
217
|
var execAsync = promisify(exec);
|
|
218
|
+
var GIT_SAFE_ENV = {
|
|
219
|
+
...process.env,
|
|
220
|
+
GIT_CONFIG_COUNT: "1",
|
|
221
|
+
GIT_CONFIG_KEY_0: "safe.directory",
|
|
222
|
+
GIT_CONFIG_VALUE_0: "*"
|
|
223
|
+
};
|
|
218
224
|
var IS_WIN32_PATH = new RegExp("^[a-zA-Z]:\\\\", "i");
|
|
219
225
|
var IS_ALMOST_POSIX_PATH = new RegExp("^[a-zA-Z]:/", "i");
|
|
220
226
|
function toPosixAbsolutePath(absolutePath) {
|
|
@@ -259,7 +265,8 @@ var GitWorktree = class _GitWorktree {
|
|
|
259
265
|
static create(somePathInsideGitRepo) {
|
|
260
266
|
const root = shell(`git`, ["rev-parse", "--show-toplevel"], {
|
|
261
267
|
cwd: somePathInsideGitRepo,
|
|
262
|
-
encoding: "utf-8"
|
|
268
|
+
encoding: "utf-8",
|
|
269
|
+
env: GIT_SAFE_ENV
|
|
263
270
|
});
|
|
264
271
|
assert(root, `FAILED: git rev-parse --show-toplevel HEAD @ ${somePathInsideGitRepo}`);
|
|
265
272
|
return new _GitWorktree(root);
|
|
@@ -297,7 +304,8 @@ var GitWorktree = class _GitWorktree {
|
|
|
297
304
|
headCommitId() {
|
|
298
305
|
const sha = shell(`git`, ["rev-parse", "HEAD"], {
|
|
299
306
|
cwd: this._gitRoot,
|
|
300
|
-
encoding: "utf-8"
|
|
307
|
+
encoding: "utf-8",
|
|
308
|
+
env: GIT_SAFE_ENV
|
|
301
309
|
});
|
|
302
310
|
assert(sha, `FAILED: git rev-parse HEAD @ ${this._gitRoot}`);
|
|
303
311
|
return sha.trim();
|
|
@@ -390,7 +398,7 @@ async function listCommits(gitRoot, head, count) {
|
|
|
390
398
|
].join(FIELD_SEPARATOR);
|
|
391
399
|
const command = `git log ${head} -n ${count} --pretty=format:"${prettyFormat}" -z`;
|
|
392
400
|
try {
|
|
393
|
-
const { stdout } = await execAsync(command, { cwd: gitRoot });
|
|
401
|
+
const { stdout } = await execAsync(command, { cwd: gitRoot, env: GIT_SAFE_ENV });
|
|
394
402
|
if (!stdout) {
|
|
395
403
|
return [];
|
|
396
404
|
}
|
|
@@ -671,7 +679,7 @@ function createEnvironment(options) {
|
|
|
671
679
|
};
|
|
672
680
|
}
|
|
673
681
|
|
|
674
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
682
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.28.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/flakinessReport.js
|
|
675
683
|
var FlakinessReport;
|
|
676
684
|
((FlakinessReport22) => {
|
|
677
685
|
FlakinessReport22.CATEGORY_PLAYWRIGHT = "playwright";
|
|
@@ -681,7 +689,7 @@ var FlakinessReport;
|
|
|
681
689
|
FlakinessReport22.STREAM_STDERR = 2;
|
|
682
690
|
})(FlakinessReport || (FlakinessReport = {}));
|
|
683
691
|
|
|
684
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
692
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.28.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/schema.js
|
|
685
693
|
import z from "zod/v4";
|
|
686
694
|
var Schema;
|
|
687
695
|
((Schema2) => {
|
|
@@ -796,8 +804,15 @@ var Schema;
|
|
|
796
804
|
samples: z.array(Schema2.SystemUtilizationSample)
|
|
797
805
|
});
|
|
798
806
|
Schema2.UtilizationTelemetry = z.tuple([Schema2.DurationMS, z.number().min(0).max(100)]);
|
|
807
|
+
Schema2.Source = z.object({
|
|
808
|
+
filePath: Schema2.GitFilePath,
|
|
809
|
+
text: z.string(),
|
|
810
|
+
lineOffset: z.number().optional(),
|
|
811
|
+
contentType: z.string().optional()
|
|
812
|
+
});
|
|
799
813
|
Schema2.FlakinessProject = z.string();
|
|
800
814
|
Schema2.Report = z.object({
|
|
815
|
+
sources: z.array(Schema2.Source).optional(),
|
|
801
816
|
flakinessProject: Schema2.FlakinessProject.optional(),
|
|
802
817
|
category: z.string().min(1).max(100),
|
|
803
818
|
commitId: Schema2.CommitId,
|
|
@@ -1271,7 +1286,7 @@ async function listFilesRecursively(dir, result = []) {
|
|
|
1271
1286
|
}
|
|
1272
1287
|
|
|
1273
1288
|
// src/showReport.ts
|
|
1274
|
-
import
|
|
1289
|
+
import { styleText } from "node:util";
|
|
1275
1290
|
import open from "open";
|
|
1276
1291
|
|
|
1277
1292
|
// src/staticServer.ts
|
|
@@ -1434,7 +1449,7 @@ async function showReport(reportFolder, options) {
|
|
|
1434
1449
|
const url = new URL(reportViewerUrl);
|
|
1435
1450
|
url.searchParams.set("port", String(server.port()));
|
|
1436
1451
|
url.searchParams.set("token", token);
|
|
1437
|
-
console.log(
|
|
1452
|
+
console.log(styleText("cyan", `
|
|
1438
1453
|
Serving Flakiness report at ${url.toString()}
|
|
1439
1454
|
Press Ctrl+C to quit.`));
|
|
1440
1455
|
await open(url.toString());
|
|
@@ -1442,24 +1457,123 @@ async function showReport(reportFolder, options) {
|
|
|
1442
1457
|
});
|
|
1443
1458
|
}
|
|
1444
1459
|
|
|
1460
|
+
// src/showReportCommand.ts
|
|
1461
|
+
import fs7 from "node:fs";
|
|
1462
|
+
import path3 from "node:path";
|
|
1463
|
+
import which from "which";
|
|
1464
|
+
var DEFAULT_REPORT_FOLDER = "flakiness-report";
|
|
1465
|
+
var FLAKINESS_CLI_COMMANDS = {
|
|
1466
|
+
GLOBAL: "flakiness",
|
|
1467
|
+
PNPM: "pnpm dlx flakiness",
|
|
1468
|
+
NPM: "npx flakiness"
|
|
1469
|
+
};
|
|
1470
|
+
function showReportCommand(reportFolder) {
|
|
1471
|
+
const userCwd = path3.resolve(process.env.INIT_CWD || process.cwd());
|
|
1472
|
+
const flakinessCLI = detectFlakinessCLIFromEnv() ?? detectFlakinessCLIFromFilesystem(userCwd) ?? detectFlakinessCLIFromPath() ?? FLAKINESS_CLI_COMMANDS.NPM;
|
|
1473
|
+
const absoluteReportFolder = path3.resolve(reportFolder);
|
|
1474
|
+
const reportFolderArg = formatReportFolderArg(absoluteReportFolder, userCwd);
|
|
1475
|
+
return `${flakinessCLI} show${reportFolderArg ? ` ${reportFolderArg}` : ""}`;
|
|
1476
|
+
}
|
|
1477
|
+
function detectFlakinessCLIFromEnv() {
|
|
1478
|
+
const userAgent = process.env.npm_config_user_agent ?? "";
|
|
1479
|
+
if (userAgent.startsWith("pnpm/"))
|
|
1480
|
+
return FLAKINESS_CLI_COMMANDS.PNPM;
|
|
1481
|
+
if (userAgent.startsWith("npm/"))
|
|
1482
|
+
return FLAKINESS_CLI_COMMANDS.NPM;
|
|
1483
|
+
const execPath = process.env.npm_execpath ?? "";
|
|
1484
|
+
const execName = execPath ? path3.basename(execPath).toLowerCase() : "";
|
|
1485
|
+
if (execName.startsWith("pnpm"))
|
|
1486
|
+
return FLAKINESS_CLI_COMMANDS.PNPM;
|
|
1487
|
+
return void 0;
|
|
1488
|
+
}
|
|
1489
|
+
function detectFlakinessCLIFromFilesystem(userCwd) {
|
|
1490
|
+
for (const dir of ancestorDirectories(userCwd)) {
|
|
1491
|
+
const packageManager = parsePackageJSON(dir);
|
|
1492
|
+
if (packageManager === "pnpm")
|
|
1493
|
+
return FLAKINESS_CLI_COMMANDS.PNPM;
|
|
1494
|
+
if (packageManager === "npm" || packageManager === "other")
|
|
1495
|
+
return FLAKINESS_CLI_COMMANDS.NPM;
|
|
1496
|
+
if (fs7.existsSync(path3.join(dir, "pnpm-lock.yaml")))
|
|
1497
|
+
return FLAKINESS_CLI_COMMANDS.PNPM;
|
|
1498
|
+
if (fs7.existsSync(path3.join(dir, "pnpm-workspace.yaml")))
|
|
1499
|
+
return FLAKINESS_CLI_COMMANDS.PNPM;
|
|
1500
|
+
}
|
|
1501
|
+
return void 0;
|
|
1502
|
+
}
|
|
1503
|
+
function detectFlakinessCLIFromPath() {
|
|
1504
|
+
if (which.sync("flakiness", { nothrow: true }))
|
|
1505
|
+
return FLAKINESS_CLI_COMMANDS.GLOBAL;
|
|
1506
|
+
if (which.sync("npx", { nothrow: true }))
|
|
1507
|
+
return FLAKINESS_CLI_COMMANDS.NPM;
|
|
1508
|
+
if (which.sync("pnpm", { nothrow: true }))
|
|
1509
|
+
return FLAKINESS_CLI_COMMANDS.PNPM;
|
|
1510
|
+
return void 0;
|
|
1511
|
+
}
|
|
1512
|
+
function parsePackageJSON(dir) {
|
|
1513
|
+
const packageJsonPath = path3.join(dir, "package.json");
|
|
1514
|
+
if (!fs7.existsSync(packageJsonPath))
|
|
1515
|
+
return void 0;
|
|
1516
|
+
try {
|
|
1517
|
+
const packageJson = JSON.parse(fs7.readFileSync(packageJsonPath, "utf8"));
|
|
1518
|
+
if (typeof packageJson.packageManager !== "string")
|
|
1519
|
+
return void 0;
|
|
1520
|
+
if (packageJson.packageManager.startsWith("pnpm@"))
|
|
1521
|
+
return "pnpm";
|
|
1522
|
+
if (packageJson.packageManager.startsWith("npm@"))
|
|
1523
|
+
return "npm";
|
|
1524
|
+
return "other";
|
|
1525
|
+
} catch {
|
|
1526
|
+
return void 0;
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
function ancestorDirectories(startDir) {
|
|
1530
|
+
const directories = [];
|
|
1531
|
+
let current = path3.resolve(startDir);
|
|
1532
|
+
while (true) {
|
|
1533
|
+
directories.push(current);
|
|
1534
|
+
const parent = path3.dirname(current);
|
|
1535
|
+
if (parent === current)
|
|
1536
|
+
return directories;
|
|
1537
|
+
current = parent;
|
|
1538
|
+
}
|
|
1539
|
+
}
|
|
1540
|
+
function formatReportFolderArg(reportFolder, userCwd) {
|
|
1541
|
+
if (isSamePath(reportFolder, path3.resolve(userCwd, DEFAULT_REPORT_FOLDER)))
|
|
1542
|
+
return "";
|
|
1543
|
+
const relativePath = path3.relative(userCwd, reportFolder) || ".";
|
|
1544
|
+
return quoteShellArgument(relativePath);
|
|
1545
|
+
}
|
|
1546
|
+
function isSamePath(left, right) {
|
|
1547
|
+
const normalizedLeft = path3.resolve(left);
|
|
1548
|
+
const normalizedRight = path3.resolve(right);
|
|
1549
|
+
if (process.platform === "win32")
|
|
1550
|
+
return normalizedLeft.toLowerCase() === normalizedRight.toLowerCase();
|
|
1551
|
+
return normalizedLeft === normalizedRight;
|
|
1552
|
+
}
|
|
1553
|
+
function quoteShellArgument(argument) {
|
|
1554
|
+
if (/^[A-Za-z0-9_./:@%+=,-]+$/u.test(argument))
|
|
1555
|
+
return argument;
|
|
1556
|
+
return JSON.stringify(argument);
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1445
1559
|
// src/writeReport.ts
|
|
1446
|
-
import
|
|
1447
|
-
import
|
|
1560
|
+
import fs8 from "fs";
|
|
1561
|
+
import path4 from "path";
|
|
1448
1562
|
async function writeReport(report, attachments, outputFolder) {
|
|
1449
|
-
const reportPath =
|
|
1450
|
-
const attachmentsFolder =
|
|
1451
|
-
await
|
|
1452
|
-
await
|
|
1453
|
-
await
|
|
1563
|
+
const reportPath = path4.join(outputFolder, "report.json");
|
|
1564
|
+
const attachmentsFolder = path4.join(outputFolder, "attachments");
|
|
1565
|
+
await fs8.promises.rm(outputFolder, { recursive: true, force: true });
|
|
1566
|
+
await fs8.promises.mkdir(outputFolder, { recursive: true });
|
|
1567
|
+
await fs8.promises.writeFile(reportPath, JSON.stringify(report), "utf-8");
|
|
1454
1568
|
if (attachments.length)
|
|
1455
|
-
await
|
|
1569
|
+
await fs8.promises.mkdir(attachmentsFolder);
|
|
1456
1570
|
const movedAttachments = [];
|
|
1457
1571
|
for (const attachment of attachments) {
|
|
1458
|
-
const attachmentPath =
|
|
1572
|
+
const attachmentPath = path4.join(attachmentsFolder, attachment.id);
|
|
1459
1573
|
if (attachment.type === "file")
|
|
1460
|
-
await
|
|
1574
|
+
await fs8.promises.cp(attachment.path, attachmentPath);
|
|
1461
1575
|
else if (attachment.type === "buffer")
|
|
1462
|
-
await
|
|
1576
|
+
await fs8.promises.writeFile(attachmentPath, attachment.body);
|
|
1463
1577
|
movedAttachments.push({
|
|
1464
1578
|
type: "file",
|
|
1465
1579
|
contentType: attachment.contentType,
|
|
@@ -1478,6 +1592,7 @@ export {
|
|
|
1478
1592
|
reportUtils_exports as ReportUtils,
|
|
1479
1593
|
readReport,
|
|
1480
1594
|
showReport,
|
|
1595
|
+
showReportCommand,
|
|
1481
1596
|
uploadReport,
|
|
1482
1597
|
writeReport
|
|
1483
1598
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flakiness/sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,27 +24,35 @@
|
|
|
24
24
|
"keywords": [],
|
|
25
25
|
"author": "Degu Labs, Inc",
|
|
26
26
|
"license": "MIT",
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=22"
|
|
29
|
+
},
|
|
27
30
|
"devDependencies": {
|
|
28
|
-
"@flakiness/flakiness-report": "^0.
|
|
31
|
+
"@flakiness/flakiness-report": "^0.28.0",
|
|
32
|
+
"@flakiness/playwright": "^1.3.3",
|
|
33
|
+
"@playwright/test": "^1.58.2",
|
|
29
34
|
"@types/debug": "^4.1.12",
|
|
30
35
|
"@types/node": "^25.0.3",
|
|
36
|
+
"@types/which": "^3.0.4",
|
|
31
37
|
"esbuild": "^0.27.0",
|
|
32
38
|
"kubik": "^0.24.0",
|
|
33
39
|
"tsx": "^4.21.0",
|
|
34
40
|
"typescript": "^5.6.2"
|
|
35
41
|
},
|
|
36
42
|
"peerDependencies": {
|
|
37
|
-
"@flakiness/flakiness-report": "
|
|
43
|
+
"@flakiness/flakiness-report": ">=0.26.0 <1.0.0"
|
|
38
44
|
},
|
|
39
45
|
"dependencies": {
|
|
40
|
-
"chalk": "^5.6.2",
|
|
41
46
|
"debug": "^4.4.3",
|
|
42
47
|
"open": "^10.2.0",
|
|
43
48
|
"stable-hash": "^0.0.6",
|
|
49
|
+
"which": "^6.0.1",
|
|
44
50
|
"zod": "^4.3.5"
|
|
45
51
|
},
|
|
46
52
|
"scripts": {
|
|
47
53
|
"minor": "./version.mjs minor",
|
|
48
|
-
"patch": "./version.mjs patch"
|
|
54
|
+
"patch": "./version.mjs patch",
|
|
55
|
+
"test": "pnpm playwright test",
|
|
56
|
+
"build": "kubik ./build.mts"
|
|
49
57
|
}
|
|
50
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitWorktree.d.ts","sourceRoot":"","sources":["../../src/gitWorktree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"gitWorktree.d.ts","sourceRoot":"","sources":["../../src/gitWorktree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAwB9D;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,8CAA8C;IAC9C,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;IACnC,wDAAwD;IACxD,SAAS,EAAE,eAAe,CAAC,eAAe,CAAC;IAC3C,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mHAAmH;IACnH,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC;CACrC,CAAA;AAyCD;;;;GAIG;AACH,qBAAa,WAAW;IA6BV,OAAO,CAAC,QAAQ;IA5B5B;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM;IAU3C,OAAO,CAAC,aAAa,CAAoB;gBAErB,QAAQ,EAAE,MAAM;IAIpC;;;;;;;;;;;;OAYG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;;;;;;;;;OAYG;IACH,YAAY,IAAI,eAAe,CAAC,QAAQ;IAUxC;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,CAAC,WAAW;IAI1D;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,YAAY,EAAE,eAAe,CAAC,WAAW,GAAG,MAAM;IAI/D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAGvD"}
|
package/types/src/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { GithubOIDC } from './githubOIDC.js';
|
|
|
6
6
|
export * as ReportUtils from './reportUtils.js';
|
|
7
7
|
export { readReport } from './readReport.js';
|
|
8
8
|
export { showReport } from './showReport.js';
|
|
9
|
+
export { showReportCommand } from './showReportCommand.js';
|
|
9
10
|
export { uploadReport } from './uploadReport.js';
|
|
10
11
|
export { writeReport } from './writeReport.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/types/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a command that opens a Flakiness report with the Flakiness CLI.
|
|
3
|
+
*
|
|
4
|
+
* The command is tailored for the shell directory from which the current process
|
|
5
|
+
* was originally invoked. This matters when package managers like pnpm change the
|
|
6
|
+
* working directory while running scripts.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} reportFolder - Absolute or relative path to the report folder.
|
|
9
|
+
*
|
|
10
|
+
* @returns {string} A shell command such as `pnpm dlx flakiness show`.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const command = showReportCommand('./flakiness-report');
|
|
15
|
+
* // Returns: "npx flakiness show"
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function showReportCommand(reportFolder: string): string;
|
|
19
|
+
//# sourceMappingURL=showReportCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showReportCommand.d.ts","sourceRoot":"","sources":["../../src/showReportCommand.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAM9D"}
|
package/types/src/stripAnsi.d.ts
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
14
|
-
*
|
|
14
|
+
* import { styleText } from 'node:util';
|
|
15
|
+
*
|
|
16
|
+
* const clean = stripAnsi(styleText('red', 'Error: test failed'));
|
|
15
17
|
* // Returns: 'Error: test failed' (without color codes)
|
|
16
18
|
* ```
|
|
17
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripAnsi.d.ts","sourceRoot":"","sources":["../../src/stripAnsi.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"stripAnsi.d.ts","sourceRoot":"","sources":["../../src/stripAnsi.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|