pwnkit-cli 0.3.2 → 0.3.3

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.
Files changed (92) hide show
  1. package/LICENSE +188 -0
  2. package/README.md +324 -0
  3. package/attacks/data-exfiltration/pii-leakage.yaml +27 -0
  4. package/attacks/encoding-bypass/base64-encoding.yaml +24 -0
  5. package/attacks/jailbreak/dan-roleplay.yaml +27 -0
  6. package/attacks/jailbreak/hypothetical-scenario.yaml +25 -0
  7. package/attacks/jailbreak/multilingual-bypass.yaml +22 -0
  8. package/attacks/output-manipulation/harmful-content.yaml +25 -0
  9. package/attacks/prompt-injection/context-manipulation.yaml +32 -0
  10. package/attacks/prompt-injection/direct-injection.yaml +28 -0
  11. package/attacks/prompt-injection/indirect-injection.yaml +33 -0
  12. package/attacks/system-prompt-extraction/direct-ask.yaml +30 -0
  13. package/attacks/system-prompt-extraction/markdown-exfil.yaml +26 -0
  14. package/attacks/tool-misuse/ssrf-via-tools.yaml +27 -0
  15. package/index.js +58458 -0
  16. package/package.json +29 -24
  17. package/dist/commands/audit.d.ts +0 -3
  18. package/dist/commands/audit.d.ts.map +0 -1
  19. package/dist/commands/audit.js +0 -32
  20. package/dist/commands/audit.js.map +0 -1
  21. package/dist/commands/findings.d.ts +0 -3
  22. package/dist/commands/findings.d.ts.map +0 -1
  23. package/dist/commands/findings.js +0 -110
  24. package/dist/commands/findings.js.map +0 -1
  25. package/dist/commands/history.d.ts +0 -3
  26. package/dist/commands/history.d.ts.map +0 -1
  27. package/dist/commands/history.js +0 -34
  28. package/dist/commands/history.js.map +0 -1
  29. package/dist/commands/index.d.ts +0 -7
  30. package/dist/commands/index.d.ts.map +0 -1
  31. package/dist/commands/index.js +0 -7
  32. package/dist/commands/index.js.map +0 -1
  33. package/dist/commands/replay.d.ts +0 -3
  34. package/dist/commands/replay.d.ts.map +0 -1
  35. package/dist/commands/replay.js +0 -83
  36. package/dist/commands/replay.js.map +0 -1
  37. package/dist/commands/review.d.ts +0 -3
  38. package/dist/commands/review.d.ts.map +0 -1
  39. package/dist/commands/review.js +0 -30
  40. package/dist/commands/review.js.map +0 -1
  41. package/dist/commands/run.d.ts +0 -16
  42. package/dist/commands/run.d.ts.map +0 -1
  43. package/dist/commands/run.js +0 -83
  44. package/dist/commands/run.js.map +0 -1
  45. package/dist/commands/scan.d.ts +0 -3
  46. package/dist/commands/scan.d.ts.map +0 -1
  47. package/dist/commands/scan.js +0 -187
  48. package/dist/commands/scan.js.map +0 -1
  49. package/dist/event-handler.d.ts +0 -19
  50. package/dist/event-handler.d.ts.map +0 -1
  51. package/dist/event-handler.js +0 -63
  52. package/dist/event-handler.js.map +0 -1
  53. package/dist/formatters/index.d.ts +0 -14
  54. package/dist/formatters/index.d.ts.map +0 -1
  55. package/dist/formatters/index.js +0 -56
  56. package/dist/formatters/index.js.map +0 -1
  57. package/dist/formatters/json.d.ts +0 -3
  58. package/dist/formatters/json.d.ts.map +0 -1
  59. package/dist/formatters/json.js +0 -4
  60. package/dist/formatters/json.js.map +0 -1
  61. package/dist/formatters/markdown.d.ts +0 -3
  62. package/dist/formatters/markdown.d.ts.map +0 -1
  63. package/dist/formatters/markdown.js +0 -90
  64. package/dist/formatters/markdown.js.map +0 -1
  65. package/dist/formatters/replay.d.ts +0 -24
  66. package/dist/formatters/replay.d.ts.map +0 -1
  67. package/dist/formatters/replay.js +0 -357
  68. package/dist/formatters/replay.js.map +0 -1
  69. package/dist/formatters/terminal.d.ts +0 -4
  70. package/dist/formatters/terminal.d.ts.map +0 -1
  71. package/dist/formatters/terminal.js +0 -190
  72. package/dist/formatters/terminal.js.map +0 -1
  73. package/dist/index.d.ts +0 -3
  74. package/dist/index.d.ts.map +0 -1
  75. package/dist/index.js +0 -157
  76. package/dist/index.js.map +0 -1
  77. package/dist/spinner.d.ts +0 -16
  78. package/dist/spinner.d.ts.map +0 -1
  79. package/dist/spinner.js +0 -97
  80. package/dist/spinner.js.map +0 -1
  81. package/dist/ui/ScanUI.d.ts +0 -37
  82. package/dist/ui/ScanUI.d.ts.map +0 -1
  83. package/dist/ui/ScanUI.js +0 -58
  84. package/dist/ui/ScanUI.js.map +0 -1
  85. package/dist/ui/renderScan.d.ts +0 -21
  86. package/dist/ui/renderScan.d.ts.map +0 -1
  87. package/dist/ui/renderScan.js +0 -191
  88. package/dist/ui/renderScan.js.map +0 -1
  89. package/dist/utils.d.ts +0 -12
  90. package/dist/utils.d.ts.map +0 -1
  91. package/dist/utils.js +0 -40
  92. package/dist/utils.js.map +0 -1
@@ -1,357 +0,0 @@
1
- import chalk from "chalk";
2
- // ── Sleep utility ──
3
- function sleep(ms) {
4
- return new Promise((resolve) => setTimeout(resolve, ms));
5
- }
6
- // ── ANSI-safe string length ──
7
- function stripAnsi(s) {
8
- // eslint-disable-next-line no-control-regex
9
- return s.replace(/\x1b\[[0-9;]*m/g, "");
10
- }
11
- // ── Box drawing ──
12
- const BOX_WIDTH = 55;
13
- function boxTop(label) {
14
- const inner = ` ${label} `;
15
- const remaining = BOX_WIDTH - inner.length - 1; // -1 for closing corner
16
- return (chalk.dim("\u250c\u2500 ") +
17
- chalk.bold.white(label) +
18
- chalk.dim(" " + "\u2500".repeat(Math.max(0, remaining)) + "\u2510"));
19
- }
20
- function boxRow(content) {
21
- const visible = stripAnsi(content);
22
- const pad = Math.max(0, BOX_WIDTH - visible.length - 2);
23
- return chalk.dim("\u2502") + " " + content + " ".repeat(pad) + chalk.dim("\u2502");
24
- }
25
- function boxBottom(withArrow) {
26
- if (withArrow) {
27
- const half = Math.floor((BOX_WIDTH - 1) / 2);
28
- const rest = BOX_WIDTH - half - 1;
29
- return (chalk.dim("\u2514" + "\u2500".repeat(half) + "\u2534" + "\u2500".repeat(rest) + "\u2518"));
30
- }
31
- return chalk.dim("\u2514" + "\u2500".repeat(BOX_WIDTH) + "\u2518");
32
- }
33
- function connector() {
34
- const half = Math.floor((BOX_WIDTH + 1) / 2);
35
- return " ".repeat(half) + chalk.dim("\u25bc");
36
- }
37
- // ── Outcome styling ──
38
- function outcomeLabel(outcome) {
39
- switch (outcome) {
40
- case "vulnerable":
41
- return chalk.red.bold("VULNERABLE");
42
- case "leaked":
43
- return chalk.red.bold("LEAKED");
44
- case "bypassed":
45
- return chalk.red.bold("BYPASSED");
46
- case "safe":
47
- return chalk.green("SAFE");
48
- case "error":
49
- return chalk.yellow("ERROR");
50
- default:
51
- return chalk.gray(outcome.toUpperCase());
52
- }
53
- }
54
- function severityColor(s) {
55
- switch (s) {
56
- case "critical":
57
- return chalk.red.bold;
58
- case "high":
59
- return chalk.redBright;
60
- case "medium":
61
- return chalk.yellow;
62
- case "low":
63
- return chalk.blue;
64
- case "info":
65
- return chalk.gray;
66
- }
67
- }
68
- // ── Build replay lines from scan data ──
69
- function buildReplayLines(data) {
70
- const lines = [];
71
- const FAST = 50;
72
- const MED = 75;
73
- const SLOW = 100;
74
- const PAUSE = 200;
75
- // ── DISCOVER lane ──
76
- lines.push({ text: boxTop("DISCOVER"), delay: PAUSE });
77
- if (data.targetInfo) {
78
- const t = data.targetInfo;
79
- const truncUrl = t.url.length > 30 ? t.url.slice(0, 27) + "..." : t.url;
80
- lines.push({
81
- text: boxRow(chalk.dim("\u25b8") +
82
- " " +
83
- chalk.white(`GET ${truncUrl}`) +
84
- chalk.dim(" \u2192 ") +
85
- chalk.white(`200`) +
86
- chalk.gray(` (${t.type} endpoint detected)`)),
87
- delay: MED,
88
- });
89
- if (t.systemPrompt) {
90
- lines.push({
91
- text: boxRow(chalk.dim("\u25b8") +
92
- " " +
93
- chalk.white(`System prompt extracted`) +
94
- chalk.gray(` (${t.systemPrompt.length} chars)`)),
95
- delay: MED,
96
- });
97
- }
98
- if (t.detectedFeatures && t.detectedFeatures.length > 0) {
99
- lines.push({
100
- text: boxRow(chalk.dim("\u25b8") +
101
- " " +
102
- chalk.white(`${t.detectedFeatures.length} features detected: `) +
103
- chalk.gray(t.detectedFeatures.slice(0, 3).join(", "))),
104
- delay: MED,
105
- });
106
- }
107
- if (t.endpoints && t.endpoints.length > 0) {
108
- lines.push({
109
- text: boxRow(chalk.dim("\u25b8") +
110
- " " +
111
- chalk.white(`${t.endpoints.length} endpoints found`)),
112
- delay: MED,
113
- });
114
- }
115
- }
116
- else {
117
- const truncTarget = data.target.length > 30 ? data.target.slice(0, 27) + "..." : data.target;
118
- lines.push({
119
- text: boxRow(chalk.dim("\u25b8") +
120
- " " +
121
- chalk.white(`GET ${truncTarget}`) +
122
- chalk.dim(" \u2192 ") +
123
- chalk.white("200") +
124
- chalk.gray(" (LLM endpoint detected)")),
125
- delay: MED,
126
- });
127
- }
128
- lines.push({ text: boxBottom(true), delay: FAST });
129
- lines.push({ text: connector(), delay: PAUSE });
130
- // ── ATTACK lane ──
131
- lines.push({ text: boxTop("ATTACK"), delay: PAUSE });
132
- const vulnerableFindings = data.findings.filter((f) => f.status !== "false-positive");
133
- if (vulnerableFindings.length > 0) {
134
- for (const finding of vulnerableFindings.slice(0, 8)) {
135
- const truncTitle = finding.title.length > 30
136
- ? finding.title.slice(0, 27) + "..."
137
- : finding.title;
138
- let outcome = "VULNERABLE";
139
- const cat = finding.category;
140
- if (cat === "system-prompt-extraction")
141
- outcome = "LEAKED";
142
- if (cat === "jailbreak")
143
- outcome = "BYPASSED";
144
- lines.push({
145
- text: boxRow(chalk.dim("\u25b8") +
146
- " " +
147
- chalk.white(truncTitle) +
148
- chalk.dim(" \u2192 ") +
149
- " " +
150
- outcomeLabel(outcome.toLowerCase())),
151
- delay: MED,
152
- });
153
- }
154
- if (vulnerableFindings.length > 8) {
155
- lines.push({
156
- text: boxRow(chalk.gray(` ... and ${vulnerableFindings.length - 8} more attacks`)),
157
- delay: FAST,
158
- });
159
- }
160
- }
161
- else {
162
- lines.push({
163
- text: boxRow(chalk.dim("\u25b8") +
164
- " " +
165
- chalk.white(`${data.summary.totalAttacks} probes executed`) +
166
- chalk.dim(" \u2192 ") +
167
- chalk.green("ALL SAFE")),
168
- delay: MED,
169
- });
170
- }
171
- lines.push({ text: boxBottom(true), delay: FAST });
172
- lines.push({ text: connector(), delay: PAUSE });
173
- // ── VERIFY lane ──
174
- lines.push({ text: boxTop("VERIFY"), delay: PAUSE });
175
- const confirmed = data.findings.filter((f) => f.status === "confirmed" || f.status === "verified" || f.status === "scored" || f.status === "reported");
176
- const falsePositives = data.findings.filter((f) => f.status === "false-positive");
177
- if (confirmed.length > 0 || data.findings.length > 0) {
178
- const reproduced = confirmed.length > 0 ? confirmed.length : data.findings.length;
179
- lines.push({
180
- text: boxRow(chalk.green("\u2713") +
181
- " " +
182
- chalk.white(`Reproduced ${reproduced}/${reproduced} findings`)),
183
- delay: MED,
184
- });
185
- }
186
- if (falsePositives.length > 0) {
187
- lines.push({
188
- text: boxRow(chalk.red("\u2717") +
189
- " " +
190
- chalk.white(`Eliminated ${falsePositives.length} false positives`)),
191
- delay: MED,
192
- });
193
- }
194
- if (confirmed.length === 0 && falsePositives.length === 0 && data.findings.length === 0) {
195
- lines.push({
196
- text: boxRow(chalk.green("\u2713") + " " + chalk.white("No findings to verify")),
197
- delay: MED,
198
- });
199
- }
200
- lines.push({ text: boxBottom(true), delay: FAST });
201
- lines.push({ text: connector(), delay: PAUSE });
202
- // ── REPORT lane ──
203
- lines.push({ text: boxTop("REPORT"), delay: PAUSE });
204
- const totalFindings = data.summary.totalFindings;
205
- if (totalFindings > 0) {
206
- const parts = [];
207
- if (data.summary.critical > 0)
208
- parts.push(chalk.red.bold(`${data.summary.critical} CRITICAL`));
209
- if (data.summary.high > 0)
210
- parts.push(chalk.redBright(`${data.summary.high} HIGH`));
211
- if (data.summary.medium > 0)
212
- parts.push(chalk.yellow(`${data.summary.medium} MEDIUM`));
213
- if (data.summary.low > 0)
214
- parts.push(chalk.blue(`${data.summary.low} LOW`));
215
- if (data.summary.info > 0)
216
- parts.push(chalk.gray(`${data.summary.info} INFO`));
217
- lines.push({
218
- text: boxRow(chalk.white(`${totalFindings} verified findings: `) + parts.join(chalk.dim(", "))),
219
- delay: MED,
220
- });
221
- }
222
- else {
223
- lines.push({
224
- text: boxRow(chalk.green.bold("0 findings") + chalk.white(" - target appears secure")),
225
- delay: MED,
226
- });
227
- }
228
- const duration = data.durationMs < 1000
229
- ? `${data.durationMs}ms`
230
- : `${(data.durationMs / 1000).toFixed(1)}s`;
231
- lines.push({
232
- text: boxRow(chalk.white(`Completed in ${duration}`) +
233
- chalk.dim(" \u2192 ") +
234
- chalk.gray("./pwnkit-report.json")),
235
- delay: MED,
236
- });
237
- lines.push({ text: boxBottom(false), delay: FAST });
238
- return lines;
239
- }
240
- // ── Animated replay (prints to stdout with delays) ──
241
- export async function renderReplay(data) {
242
- const lines = buildReplayLines(data);
243
- // Banner
244
- process.stdout.write("\n");
245
- process.stdout.write(chalk.red.bold(" \u25c6 pwnkit") +
246
- chalk.gray(" attack replay") +
247
- "\n");
248
- process.stdout.write(chalk.dim(" " + "\u2500".repeat(BOX_WIDTH + 1)) + "\n");
249
- process.stdout.write("\n");
250
- await sleep(200);
251
- for (const line of lines) {
252
- await sleep(line.delay);
253
- process.stdout.write(" " + line.text + "\n");
254
- }
255
- process.stdout.write("\n");
256
- }
257
- // ── Static (non-animated) replay for piping/testing ──
258
- export function renderReplayStatic(data) {
259
- const lines = buildReplayLines(data);
260
- const output = [];
261
- output.push("");
262
- output.push(chalk.red.bold(" \u25c6 pwnkit") + chalk.gray(" attack replay"));
263
- output.push(chalk.dim(" " + "\u2500".repeat(BOX_WIDTH + 1)));
264
- output.push("");
265
- for (const line of lines) {
266
- output.push(" " + line.text);
267
- }
268
- output.push("");
269
- return output.join("\n");
270
- }
271
- export function createReplayCollector(target) {
272
- let targetInfo;
273
- const findings = [];
274
- const stages = {};
275
- let totalAttacks = 0;
276
- let attacksDone = 0;
277
- const startMs = Date.now();
278
- return {
279
- onEvent(event) {
280
- switch (event.type) {
281
- case "stage:start":
282
- if (event.stage) {
283
- stages[event.stage] = { startMs: Date.now() };
284
- }
285
- if (event.stage === "attack") {
286
- const match = event.message.match(/(\d+)/);
287
- if (match)
288
- totalAttacks = parseInt(match[1], 10);
289
- }
290
- if (event.stage === "discovery" && event.data && typeof event.data === "object") {
291
- const d = event.data;
292
- if ("target" in d) {
293
- targetInfo = d.target;
294
- }
295
- }
296
- break;
297
- case "stage:end":
298
- if (event.stage) {
299
- if (stages[event.stage]) {
300
- stages[event.stage].endMs = Date.now();
301
- }
302
- }
303
- if (event.stage === "discovery" &&
304
- event.data &&
305
- typeof event.data === "object") {
306
- const d = event.data;
307
- if ("target" in d) {
308
- targetInfo = d.target;
309
- }
310
- }
311
- break;
312
- case "attack:end":
313
- attacksDone++;
314
- break;
315
- case "finding":
316
- if (event.data && typeof event.data === "object" && "id" in event.data) {
317
- findings.push(event.data);
318
- }
319
- break;
320
- }
321
- },
322
- getReplayData() {
323
- const durationMs = Date.now() - startMs;
324
- const critCount = findings.filter((f) => f.severity === "critical").length;
325
- const highCount = findings.filter((f) => f.severity === "high").length;
326
- const medCount = findings.filter((f) => f.severity === "medium").length;
327
- const lowCount = findings.filter((f) => f.severity === "low").length;
328
- const infoCount = findings.filter((f) => f.severity === "info").length;
329
- return {
330
- target,
331
- targetInfo,
332
- findings,
333
- summary: {
334
- totalAttacks: totalAttacks || attacksDone,
335
- totalFindings: findings.length,
336
- critical: critCount,
337
- high: highCount,
338
- medium: medCount,
339
- low: lowCount,
340
- info: infoCount,
341
- },
342
- durationMs,
343
- };
344
- },
345
- };
346
- }
347
- // ── Build ReplayData from a ScanReport (for --replay / replay command) ──
348
- export function replayDataFromReport(report) {
349
- return {
350
- target: report.target,
351
- findings: report.findings,
352
- summary: report.summary,
353
- durationMs: report.durationMs,
354
- warnings: report.warnings,
355
- };
356
- }
357
- //# sourceMappingURL=replay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/formatters/replay.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { ScanReport } from "@pwnkit/shared";
2
- export declare function formatTerminal(report: ScanReport): string;
3
- export declare function renderProgressBar(current: number, total: number, width?: number): string;
4
- //# sourceMappingURL=terminal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/formatters/terminal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,gBAAgB,CAAC;AAsFpE,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA0DzD;AAwFD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,GACT,MAAM,CAQR"}
@@ -1,190 +0,0 @@
1
- import chalk from "chalk";
2
- // ── Severity Design System ──
3
- const SEVERITY_STYLE = {
4
- critical: {
5
- badge: (s) => chalk.bgRed.white.bold(` ${s} `),
6
- label: "Critical",
7
- icon: "●",
8
- },
9
- high: {
10
- badge: (s) => chalk.bgRedBright.white.bold(` ${s} `),
11
- label: "High",
12
- icon: "●",
13
- },
14
- medium: {
15
- badge: (s) => chalk.bgYellow.black.bold(` ${s} `),
16
- label: "Medium",
17
- icon: "●",
18
- },
19
- low: {
20
- badge: (s) => chalk.bgBlue.white(` ${s} `),
21
- label: "Low",
22
- icon: "○",
23
- },
24
- info: {
25
- badge: (s) => chalk.bgGray.white(` ${s} `),
26
- label: "Info",
27
- icon: "·",
28
- },
29
- };
30
- const SEVERITY_COUNT_COLOR = {
31
- critical: chalk.red.bold,
32
- high: chalk.redBright.bold,
33
- medium: chalk.yellow.bold,
34
- low: chalk.blue,
35
- info: chalk.gray,
36
- };
37
- // ── Box Drawing ──
38
- const BOX = {
39
- topLeft: "╭",
40
- topRight: "╮",
41
- bottomLeft: "╰",
42
- bottomRight: "╯",
43
- horizontal: "─",
44
- vertical: "│",
45
- teeRight: "├",
46
- teeLeft: "┤",
47
- };
48
- function boxLine(width) {
49
- return BOX.horizontal.repeat(width);
50
- }
51
- function boxTop(width) {
52
- return ` ${chalk.gray(BOX.topLeft + boxLine(width) + BOX.topRight)}`;
53
- }
54
- function boxBottom(width) {
55
- return ` ${chalk.gray(BOX.bottomLeft + boxLine(width) + BOX.bottomRight)}`;
56
- }
57
- function boxRow(content, width) {
58
- // Strip ANSI to measure visible length
59
- const visible = stripAnsi(content);
60
- const pad = Math.max(0, width - visible.length);
61
- return ` ${chalk.gray(BOX.vertical)} ${content}${" ".repeat(pad)}${chalk.gray(BOX.vertical)}`;
62
- }
63
- function boxDivider(width) {
64
- return ` ${chalk.gray(BOX.teeRight + boxLine(width) + BOX.teeLeft)}`;
65
- }
66
- function stripAnsi(s) {
67
- // eslint-disable-next-line no-control-regex
68
- return s.replace(/\x1b\[[0-9;]*m/g, "");
69
- }
70
- // ── Main Formatter ──
71
- export function formatTerminal(report) {
72
- const W = 60; // inner box width (excluding border chars)
73
- const lines = [];
74
- lines.push("");
75
- if (report.warnings.length > 0) {
76
- lines.push(` ${chalk.yellow.bold("WARNINGS")}`);
77
- lines.push("");
78
- for (const warning of report.warnings) {
79
- lines.push(` ${chalk.yellow.bold("!")} ${chalk.yellow(`[${warning.stage}] ${warning.message}`)}`);
80
- }
81
- lines.push("");
82
- }
83
- // ── Findings Section ──
84
- if (report.findings.length === 0) {
85
- lines.push("");
86
- if (report.warnings.length > 0) {
87
- lines.push(` ${chalk.yellow.bold("!")} ${chalk.yellow("No vulnerabilities confirmed. Scan finished with warnings.")}`);
88
- }
89
- else {
90
- lines.push(` ${chalk.green.bold("✓")} ${chalk.green("No vulnerabilities found.")}`);
91
- }
92
- }
93
- else {
94
- lines.push(` ${chalk.bold.white("FINDINGS")}`);
95
- lines.push("");
96
- const sorted = [...report.findings].sort((a, b) => severityRank(a.severity) - severityRank(b.severity));
97
- for (const finding of sorted) {
98
- lines.push(formatFinding(finding));
99
- }
100
- }
101
- // ── Summary ──
102
- lines.push("");
103
- lines.push(` ${chalk.gray("─".repeat(50))}`);
104
- lines.push("");
105
- const { summary } = report;
106
- const sev = [
107
- summary.critical > 0 ? chalk.red.bold(`${summary.critical} critical`) : chalk.gray(`${summary.critical} critical`),
108
- summary.high > 0 ? chalk.hex("#f97316").bold(`${summary.high} high`) : chalk.gray(`${summary.high} high`),
109
- summary.medium > 0 ? chalk.yellow.bold(`${summary.medium} medium`) : chalk.gray(`${summary.medium} medium`),
110
- chalk.gray(`${summary.low} low`),
111
- chalk.gray(`${summary.info} info`),
112
- ].join(chalk.gray(" "));
113
- lines.push(` ${sev}`);
114
- lines.push(` ${chalk.white.bold(String(summary.totalFindings))} findings ${chalk.gray("in")} ${chalk.white(formatDuration(report.durationMs))}`);
115
- lines.push("");
116
- return lines.join("\n");
117
- }
118
- // ── Finding Card ──
119
- function formatFinding(finding) {
120
- const style = SEVERITY_STYLE[finding.severity];
121
- const lines = [];
122
- // Badge + Title
123
- lines.push(` ${style.badge(style.label.toUpperCase().padEnd(8))} ${chalk.bold.white(finding.title)}`);
124
- // Category + OWASP
125
- const meta = [];
126
- meta.push(`${chalk.gray("Category:")} ${formatCategory(finding.category)}`);
127
- if (finding.status === "confirmed") {
128
- meta.push(chalk.green("✓ Confirmed"));
129
- }
130
- lines.push(` ${" ".repeat(11)}${meta.join(chalk.gray(" · "))}`);
131
- // Description
132
- if (finding.description) {
133
- const desc = finding.description.length > 100
134
- ? finding.description.slice(0, 97) + "..."
135
- : finding.description;
136
- lines.push(` ${" ".repeat(11)}${chalk.gray(desc)}`);
137
- }
138
- // Evidence snippet
139
- if (finding.evidence.analysis) {
140
- const ev = finding.evidence.analysis.length > 100
141
- ? finding.evidence.analysis.slice(0, 97) + "..."
142
- : finding.evidence.analysis;
143
- lines.push(` ${" ".repeat(11)}${chalk.gray.italic("↳ " + ev)}`);
144
- }
145
- lines.push("");
146
- return lines.join("\n");
147
- }
148
- // ── Helpers ──
149
- function buildSeverityLine(summary) {
150
- const parts = [];
151
- const severities = ["critical", "high", "medium", "low", "info"];
152
- for (const sev of severities) {
153
- const count = summary[sev];
154
- const color = SEVERITY_COUNT_COLOR[sev];
155
- const icon = SEVERITY_STYLE[sev].icon;
156
- parts.push(` ${color(icon)} ${color(String(count))} ${chalk.gray(SEVERITY_STYLE[sev].label)}`);
157
- }
158
- return parts.join(chalk.gray(" "));
159
- }
160
- function formatCategory(cat) {
161
- return cat
162
- .split("-")
163
- .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
164
- .join(" ");
165
- }
166
- function severityRank(s) {
167
- const order = {
168
- critical: 0,
169
- high: 1,
170
- medium: 2,
171
- low: 3,
172
- info: 4,
173
- };
174
- return order[s];
175
- }
176
- function formatDuration(ms) {
177
- if (ms < 1000)
178
- return `${ms}ms`;
179
- return `${(ms / 1000).toFixed(1)}s`;
180
- }
181
- // ── Progress Bar (exported for use in index.ts) ──
182
- export function renderProgressBar(current, total, width = 30) {
183
- const ratio = Math.min(current / total, 1);
184
- const filled = Math.round(ratio * width);
185
- const empty = width - filled;
186
- const bar = chalk.red("█".repeat(filled)) + chalk.gray("░".repeat(empty));
187
- const pct = Math.round(ratio * 100);
188
- return `${bar} ${chalk.white.bold(String(pct))}${chalk.gray("%")} ${chalk.gray(`(${current}/${total})`)}`;
189
- }
190
- //# sourceMappingURL=terminal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/formatters/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,+BAA+B;AAE/B,MAAM,cAAc,GAGhB;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACtD,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,GAAG;KACV;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5D,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,GAAG;KACV;IACD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzD,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,GAAG;KACV;IACD,GAAG,EAAE;QACH,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAClD,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,GAAG;KACV;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAClD,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,GAAG;KACV;CACF,CAAC;AAEF,MAAM,oBAAoB,GAA4C;IACpE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI;IACxB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;IAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;IACzB,GAAG,EAAE,KAAK,CAAC,IAAI;IACf,IAAI,EAAE,KAAK,CAAC,IAAI;CACjB,CAAC;AAEF,oBAAoB;AAEpB,MAAM,GAAG,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;CACJ,CAAC;AAEX,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,MAAM,CAAC,OAAe,EAAE,KAAa;IAC5C,uCAAuC;IACvC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjG,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,4CAA4C;IAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,uBAAuB;AAEvB,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,2CAA2C;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CACvF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,4DAA4D,CAAC,EAAE,CAC5G,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC9D,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,MAAM,GAAG,GAAG;QACV,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,WAAW,CAAC;QAClH,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC;QACzG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,SAAS,CAAC;QAC3G,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC;KACnC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IAClJ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,qBAAqB;AAErB,SAAS,aAAa,CAAC,OAAgB;IACrC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,gBAAgB;IAChB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEvG,mBAAmB;IACnB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnE,cAAc;IACd,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,GACR,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;YAC9B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YAC1C,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,GACN,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG;YACpC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YAChD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,gBAAgB;AAEhB,SAAS,iBAAiB,CAAC,OAM1B;IACC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE7E,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,CAAW;IAC/B,MAAM,KAAK,GAA6B;QACtC,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;KACR,CAAC;IACF,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,EAAU;IAChC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,oDAAoD;AAEpD,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,KAAa,EACb,KAAK,GAAG,EAAE;IAEV,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7B,MAAM,GAAG,GACP,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,OAAO,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;AAC5G,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}