vaspera 2.12.0 → 2.13.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/__tests__/siem-integration.test.d.ts +7 -0
  3. package/dist/__tests__/siem-integration.test.d.ts.map +1 -0
  4. package/dist/__tests__/siem-integration.test.js +285 -0
  5. package/dist/__tests__/siem-integration.test.js.map +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +296 -16
  8. package/dist/index.js.map +1 -1
  9. package/dist/persistence/__tests__/json-fallback.test.d.ts +5 -0
  10. package/dist/persistence/__tests__/json-fallback.test.d.ts.map +1 -0
  11. package/dist/persistence/__tests__/json-fallback.test.js +249 -0
  12. package/dist/persistence/__tests__/json-fallback.test.js.map +1 -0
  13. package/dist/persistence/__tests__/persistence.test.js.map +1 -1
  14. package/dist/persistence/db.d.ts +15 -0
  15. package/dist/persistence/db.d.ts.map +1 -1
  16. package/dist/persistence/db.js +59 -10
  17. package/dist/persistence/db.js.map +1 -1
  18. package/dist/persistence/index.d.ts +13 -4
  19. package/dist/persistence/index.d.ts.map +1 -1
  20. package/dist/persistence/index.js +139 -14
  21. package/dist/persistence/index.js.map +1 -1
  22. package/dist/persistence/json-fallback.d.ts +52 -0
  23. package/dist/persistence/json-fallback.d.ts.map +1 -0
  24. package/dist/persistence/json-fallback.js +283 -0
  25. package/dist/persistence/json-fallback.js.map +1 -0
  26. package/dist/scanners/ai-code/index.d.ts.map +1 -1
  27. package/dist/scanners/ai-code/index.js +90 -2
  28. package/dist/scanners/ai-code/index.js.map +1 -1
  29. package/dist/scanners/ai-code/types.d.ts +12 -0
  30. package/dist/scanners/ai-code/types.d.ts.map +1 -1
  31. package/dist/scanners/eslint.d.ts.map +1 -1
  32. package/dist/scanners/eslint.js +45 -3
  33. package/dist/scanners/eslint.js.map +1 -1
  34. package/dist/scanners/scale/bottleneck-detector.d.ts +13 -2
  35. package/dist/scanners/scale/bottleneck-detector.d.ts.map +1 -1
  36. package/dist/scanners/scale/bottleneck-detector.js +199 -72
  37. package/dist/scanners/scale/bottleneck-detector.js.map +1 -1
  38. package/dist/scanners/types.d.ts +18 -1
  39. package/dist/scanners/types.d.ts.map +1 -1
  40. package/dist/scanners/types.js.map +1 -1
  41. package/dist/scanners/typescript.d.ts.map +1 -1
  42. package/dist/scanners/typescript.js +36 -4
  43. package/dist/scanners/typescript.js.map +1 -1
  44. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.13.0] - 2026-06-04
4
+
5
+ ### Added
6
+
7
+ #### False Positive Feedback System
8
+ - New `feedback_submit` tool to mark findings as true/false positives
9
+ - New `feedback_report` tool to view FP rates by scanner and rule
10
+ - New `feedback_suppressions` tool to get rule suppression suggestions based on feedback
11
+ - Feedback stored in `.vaspera/fp-feedback.json` with full audit trail
12
+
13
+ #### Diff-Aware CI Scanning
14
+ - New `certification_scan_diff` tool scans only changed files (git diff)
15
+ - Estimates scan time savings vs full scan
16
+ - Auto-detects security-critical files that always get scanned
17
+
18
+ #### Standalone Autofix Preview
19
+ - `autofix_preview` now works without certification_id
20
+ - Provide file + pattern_id to preview fixes directly
21
+ - Use `autofix_list_patterns` to see available fix patterns
22
+
23
+ ### Fixed
24
+
25
+ #### Persistence DB Fallback
26
+ - Added JSON file fallback when SQLite is unavailable
27
+ - New `src/persistence/json-fallback.ts` with atomic writes
28
+ - Graceful degradation: warns but continues operating
29
+
30
+ #### scale_bottlenecks False Positives
31
+ - Added semantic analysis for workflow/pipeline patterns
32
+ - Confidence scoring (60-100) based on context
33
+ - Sequential workflows no longer flagged as N+1 queries
34
+
35
+ #### ai_code_verify Diagnostics
36
+ - Returns detailed diagnostics when 0 files found
37
+ - Shows which extensions were searched
38
+ - Reports which exclude patterns matched
39
+ - Suggests alternative file extensions
40
+
41
+ #### Scanner Error Messages
42
+ - Added `ScannerErrorDetails` with actionable suggestions
43
+ - tsc/eslint now report phase (init/scan/parse) and fix steps
44
+ - Full error output available for debugging
45
+
46
+ ### Changed
47
+ - MCP tools increased from 103 to 108
48
+
3
49
  ## 2.10.0
4
50
 
5
51
  ### Minor Changes
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SIEM Integration Tests
3
+ *
4
+ * Tests for SIEM event formatting and client registry.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=siem-integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siem-integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/siem-integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,285 @@
1
+ /**
2
+ * SIEM Integration Tests
3
+ *
4
+ * Tests for SIEM event formatting and client registry.
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
7
+ import { formatAsCEF, formatAsJSON, formatForSplunk, formatForSentinel, formatForDatadog, mapSeverity, severityToCEF, createFindingEvent, createScanEvent, createCertificationEvent, getSIEMRegistry, closeSIEMRegistry, createSplunkClient, createDatadogClient, } from "../integrations/siem/index.js";
8
+ describe("SIEM Integration", () => {
9
+ describe("Severity Mapping", () => {
10
+ it("maps Vaspera severities to SIEM severities", () => {
11
+ expect(mapSeverity("critical")).toBe("critical");
12
+ expect(mapSeverity("high")).toBe("high");
13
+ expect(mapSeverity("medium")).toBe("medium");
14
+ expect(mapSeverity("low")).toBe("low");
15
+ expect(mapSeverity("info")).toBe("informational");
16
+ });
17
+ it("maps SIEM severity to CEF numeric values", () => {
18
+ expect(severityToCEF("critical")).toBe(10);
19
+ expect(severityToCEF("high")).toBe(8);
20
+ expect(severityToCEF("medium")).toBe(5);
21
+ expect(severityToCEF("low")).toBe(3);
22
+ expect(severityToCEF("informational")).toBe(1);
23
+ });
24
+ });
25
+ describe("Event Creation", () => {
26
+ it("creates finding events", () => {
27
+ const event = createFindingEvent("/test/project", "finding.new", {
28
+ findingId: "finding-001",
29
+ severity: "high",
30
+ category: "sql-injection",
31
+ file: "src/api.ts",
32
+ line: 42,
33
+ scanner: "semgrep",
34
+ ruleId: "sql-injection-001",
35
+ cweIds: ["CWE-89"],
36
+ description: "SQL injection vulnerability",
37
+ }, "cert-001");
38
+ expect(event.eventType).toBe("finding.new");
39
+ expect(event.severity).toBe("high");
40
+ expect(event.project).toBe("/test/project");
41
+ expect(event.certificationId).toBe("cert-001");
42
+ expect(event.source).toBe("vaspera");
43
+ expect(event.message).toContain("sql-injection");
44
+ expect(event.message).toContain("src/api.ts:42");
45
+ });
46
+ it("creates scan events", () => {
47
+ const event = createScanEvent("/test/project", "scan.completed", {
48
+ scanners: ["semgrep", "gitleaks"],
49
+ findingsCount: 5,
50
+ bySeverity: { critical: 1, high: 2, medium: 2, low: 0, info: 0 },
51
+ durationMs: 5000,
52
+ }, "cert-001");
53
+ expect(event.eventType).toBe("scan.completed");
54
+ expect(event.severity).toBe("critical");
55
+ expect(event.message).toContain("5 findings");
56
+ expect(event.message).toContain("1 critical");
57
+ });
58
+ it("creates certification events", () => {
59
+ const event = createCertificationEvent("/test/project", "certification.completed", {
60
+ certificationId: "cert-001",
61
+ level: "GOLD",
62
+ score: 85,
63
+ findingsCount: 5,
64
+ durationMs: 30000,
65
+ });
66
+ expect(event.eventType).toBe("certification.completed");
67
+ expect(event.severity).toBe("informational");
68
+ expect(event.message).toContain("GOLD");
69
+ expect(event.message).toContain("85");
70
+ });
71
+ });
72
+ describe("CEF Formatting", () => {
73
+ it("formats events as CEF", () => {
74
+ const event = {
75
+ timestamp: "2024-01-01T00:00:00.000Z",
76
+ eventType: "finding.new",
77
+ severity: "high",
78
+ project: "/test/project",
79
+ certificationId: "cert-001",
80
+ message: "SQL injection detected",
81
+ source: "vaspera",
82
+ data: {
83
+ findingId: "finding-001",
84
+ category: "sql-injection",
85
+ file: "src/api.ts",
86
+ line: 42,
87
+ },
88
+ };
89
+ const cef = formatAsCEF(event);
90
+ expect(cef).toContain("CEF:0");
91
+ expect(cef).toContain("Vaspera");
92
+ expect(cef).toContain("Hardening MCP");
93
+ expect(cef).toContain("VASP-001");
94
+ expect(cef).toContain("New Security Finding");
95
+ expect(cef).toContain("|8|");
96
+ });
97
+ it("escapes special characters in CEF", () => {
98
+ const event = {
99
+ timestamp: "2024-01-01T00:00:00.000Z",
100
+ eventType: "finding.new",
101
+ severity: "medium",
102
+ project: "/test/project",
103
+ message: "Message with | pipe and = equals",
104
+ source: "vaspera",
105
+ data: {},
106
+ };
107
+ const cef = formatAsCEF(event);
108
+ expect(cef).toContain("\\|");
109
+ expect(cef).toContain("\\=");
110
+ });
111
+ });
112
+ describe("JSON Formatting", () => {
113
+ it("formats events as JSON", () => {
114
+ const event = {
115
+ timestamp: "2024-01-01T00:00:00.000Z",
116
+ eventType: "finding.new",
117
+ severity: "high",
118
+ project: "/test/project",
119
+ message: "SQL injection detected",
120
+ source: "vaspera",
121
+ data: { findingId: "finding-001" },
122
+ };
123
+ const json = formatAsJSON(event);
124
+ expect(json).toHaveProperty("@timestamp", "2024-01-01T00:00:00.000Z");
125
+ expect(json).toHaveProperty("event");
126
+ expect(json.event.action).toBe("finding.new");
127
+ expect(json.event.severity).toBe(8);
128
+ });
129
+ });
130
+ describe("Splunk Formatting", () => {
131
+ it("formats events for Splunk HEC", () => {
132
+ const event = {
133
+ timestamp: "2024-01-01T00:00:00.000Z",
134
+ eventType: "scan.completed",
135
+ severity: "informational",
136
+ project: "/test/project",
137
+ message: "Scan completed",
138
+ source: "vaspera",
139
+ data: {},
140
+ };
141
+ const splunk = formatForSplunk(event, {
142
+ index: "security",
143
+ source: "vaspera:test",
144
+ host: "test-host",
145
+ });
146
+ expect(splunk).toHaveProperty("time");
147
+ expect(splunk).toHaveProperty("host", "test-host");
148
+ expect(splunk).toHaveProperty("source", "vaspera:test");
149
+ expect(splunk).toHaveProperty("index", "security");
150
+ expect(splunk).toHaveProperty("event");
151
+ });
152
+ });
153
+ describe("Sentinel Formatting", () => {
154
+ it("formats events for Microsoft Sentinel", () => {
155
+ const event = {
156
+ timestamp: "2024-01-01T00:00:00.000Z",
157
+ eventType: "finding.new",
158
+ severity: "critical",
159
+ project: "/test/project",
160
+ certificationId: "cert-001",
161
+ message: "Critical finding",
162
+ source: "vaspera",
163
+ data: { category: "secrets" },
164
+ };
165
+ const sentinel = formatForSentinel(event);
166
+ expect(sentinel).toHaveProperty("TimeGenerated", "2024-01-01T00:00:00.000Z");
167
+ expect(sentinel).toHaveProperty("EventType_s", "finding.new");
168
+ expect(sentinel).toHaveProperty("Severity_s", "critical");
169
+ expect(sentinel).toHaveProperty("Project_s", "/test/project");
170
+ expect(sentinel).toHaveProperty("CertificationId_g", "cert-001");
171
+ });
172
+ });
173
+ describe("Datadog Formatting", () => {
174
+ it("formats events for Datadog", () => {
175
+ const event = {
176
+ timestamp: "2024-01-01T00:00:00.000Z",
177
+ eventType: "finding.new",
178
+ severity: "high",
179
+ project: "/test/project",
180
+ message: "High severity finding",
181
+ source: "vaspera",
182
+ data: {},
183
+ };
184
+ const datadog = formatForDatadog(event, {
185
+ service: "my-service",
186
+ env: "production",
187
+ tags: ["team:security"],
188
+ });
189
+ expect(datadog).toHaveProperty("ddsource", "vaspera");
190
+ expect(datadog).toHaveProperty("service", "my-service");
191
+ expect(datadog).toHaveProperty("status", "error");
192
+ expect(datadog.ddtags).toContain("project:/test/project");
193
+ expect(datadog.ddtags).toContain("env:production");
194
+ expect(datadog.ddtags).toContain("team:security");
195
+ });
196
+ it("maps severity to Datadog status", () => {
197
+ const criticalEvent = {
198
+ timestamp: new Date().toISOString(),
199
+ eventType: "finding.new",
200
+ severity: "critical",
201
+ project: "/test",
202
+ message: "Critical",
203
+ source: "vaspera",
204
+ data: {},
205
+ };
206
+ const lowEvent = {
207
+ timestamp: new Date().toISOString(),
208
+ eventType: "finding.new",
209
+ severity: "low",
210
+ project: "/test",
211
+ message: "Low",
212
+ source: "vaspera",
213
+ data: {},
214
+ };
215
+ const critical = formatForDatadog(criticalEvent);
216
+ const low = formatForDatadog(lowEvent);
217
+ expect(critical.status).toBe("emergency");
218
+ expect(low.status).toBe("info");
219
+ });
220
+ });
221
+ describe("SIEM Registry", () => {
222
+ beforeEach(async () => {
223
+ await closeSIEMRegistry();
224
+ });
225
+ afterEach(async () => {
226
+ await closeSIEMRegistry();
227
+ });
228
+ it("registers and retrieves clients", () => {
229
+ const registry = getSIEMRegistry();
230
+ const client = createSplunkClient({
231
+ endpoint: "https://splunk.example.com:8088",
232
+ token: "test-token",
233
+ index: "security",
234
+ });
235
+ registry.register("test-splunk", client);
236
+ const retrieved = registry.get("test-splunk");
237
+ expect(retrieved).toBeDefined();
238
+ expect(retrieved?.provider).toBe("splunk");
239
+ });
240
+ it("lists all registered clients", () => {
241
+ const registry = getSIEMRegistry();
242
+ registry.register("splunk-1", createSplunkClient({ endpoint: "https://splunk.example.com", token: "t1" }));
243
+ registry.register("datadog-1", createDatadogClient({ apiKey: "api-key-1" }));
244
+ const list = registry.list();
245
+ expect(list).toHaveLength(2);
246
+ expect(list.find((c) => c.name === "splunk-1")?.provider).toBe("splunk");
247
+ expect(list.find((c) => c.name === "datadog-1")?.provider).toBe("datadog");
248
+ });
249
+ it("unregisters clients", async () => {
250
+ const registry = getSIEMRegistry();
251
+ registry.register("test", createSplunkClient({ endpoint: "https://splunk.example.com", token: "t" }));
252
+ expect(registry.get("test")).toBeDefined();
253
+ await registry.unregister("test");
254
+ expect(registry.get("test")).toBeUndefined();
255
+ });
256
+ it("closes all clients", async () => {
257
+ const registry = getSIEMRegistry();
258
+ registry.register("s1", createSplunkClient({ endpoint: "https://splunk.example.com", token: "t1" }));
259
+ registry.register("d1", createDatadogClient({ apiKey: "api-key-1" }));
260
+ expect(registry.list()).toHaveLength(2);
261
+ await registry.closeAll();
262
+ expect(registry.list()).toHaveLength(0);
263
+ });
264
+ });
265
+ describe("Event Type Mapping", () => {
266
+ it("generates correct signature IDs for event types", () => {
267
+ const findingEvent = createFindingEvent("/test", "finding.new", {
268
+ findingId: "f1",
269
+ severity: "high",
270
+ category: "test",
271
+ });
272
+ const cef = formatAsCEF(findingEvent);
273
+ expect(cef).toContain("VASP-001");
274
+ const scanEvent = createScanEvent("/test", "scan.completed", {
275
+ scanners: ["test"],
276
+ findingsCount: 0,
277
+ bySeverity: { critical: 0, high: 0, medium: 0, low: 0, info: 0 },
278
+ durationMs: 100,
279
+ });
280
+ const scanCef = formatAsCEF(scanEvent);
281
+ expect(scanCef).toContain("VASP-011");
282
+ });
283
+ });
284
+ });
285
+ //# sourceMappingURL=siem-integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siem-integration.test.js","sourceRoot":"","sources":["../../src/__tests__/siem-integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AAEvC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,KAAK,GAAG,kBAAkB,CAC9B,eAAe,EACf,aAAa,EACb;gBACE,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,WAAW,EAAE,6BAA6B;aAC3C,EACD,UAAU,CACX,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,KAAK,GAAG,eAAe,CAC3B,eAAe,EACf,gBAAgB,EAChB;gBACE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;gBACjC,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;gBAChE,UAAU,EAAE,IAAI;aACjB,EACD,UAAU,CACX,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,KAAK,GAAG,wBAAwB,CAAC,eAAe,EAAE,yBAAyB,EAAE;gBACjF,eAAe,EAAE,UAAU;gBAC3B,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,eAAe;gBACxB,eAAe,EAAE,UAAU;gBAC3B,OAAO,EAAE,wBAAwB;gBACjC,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE;oBACJ,SAAS,EAAE,aAAa;oBACxB,QAAQ,EAAE,eAAe;oBACzB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,EAAE;iBACT;aACF,CAAC;YAEF,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,kCAAkC;gBAC3C,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,wBAAwB;gBACjC,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;aACnC,CAAC;YAEF,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAEjC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAE,IAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,MAAM,CAAE,IAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,gBAAgB;gBAC3B,QAAQ,EAAE,eAAe;gBACzB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,gBAAgB;gBACzB,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE;gBACpC,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,eAAe;gBACxB,eAAe,EAAE,UAAU;gBAC3B,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;aAC9B,CAAC;YAEF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAA4B,CAAC;YAErE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,eAAe,EAAE,0BAA0B,CAAC,CAAC;YAC7E,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,0BAA0B;gBACrC,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,uBAAuB;gBAChC,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE;gBACtC,OAAO,EAAE,YAAY;gBACrB,GAAG,EAAE,YAAY;gBACjB,IAAI,EAAE,CAAC,eAAe,CAAC;aACxB,CAA4B,CAAC;YAE9B,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACxD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,CAAE,OAAO,CAAC,MAAiB,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YACtE,MAAM,CAAE,OAAO,CAAC,MAAiB,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC/D,MAAM,CAAE,OAAO,CAAC,MAAiB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,aAAa,GAAc;gBAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,MAAM,QAAQ,GAAc;gBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAA4B,CAAC;YAC5E,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAA4B,CAAC;YAElE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,iBAAiB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,iBAAiB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;YAEnC,MAAM,MAAM,GAAG,kBAAkB,CAAC;gBAChC,QAAQ,EAAE,iCAAiC;gBAC3C,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;YAEH,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAEzC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;YAEnC,QAAQ,CAAC,QAAQ,CACf,UAAU,EACV,kBAAkB,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC5E,CAAC;YACF,QAAQ,CAAC,QAAQ,CACf,WAAW,EACX,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAC7C,CAAC;YAEF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE7B,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;YAEnC,QAAQ,CAAC,QAAQ,CACf,MAAM,EACN,kBAAkB,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAC3E,CAAC;YAEF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAE3C,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;YAEnC,QAAQ,CAAC,QAAQ,CACf,IAAI,EACJ,kBAAkB,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC5E,CAAC;YACF,QAAQ,CAAC,QAAQ,CACf,IAAI,EACJ,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAC7C,CAAC;YAEF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAE1B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE;gBAC9D,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAElC,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE;gBAC3D,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;gBAChE,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAySpE;;GAEG;AACH,iBAAS,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;EAIjC;AAED;;GAEG;AACH,iBAAS,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;;;;;;EAK/D;AAED;;GAEG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,MAAM;;;;;EAIrC;AA+CD,QAAA,MAAM,MAAM,WAGV,CAAC;AAk3NH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoTpE;;GAEG;AACH,iBAAS,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;EAIjC;AAED;;GAEG;AACH,iBAAS,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;;;;;;EAK/D;AAED;;GAEG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,MAAM;;;;;EAIrC;AA+CD,QAAA,MAAM,MAAM,WAGV,CAAC;AAyqOH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}