@ocpp-debugkit/toolkit 0.2.1 → 0.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.
Files changed (67) hide show
  1. package/README.md +234 -12
  2. package/dist/cli/commands/anonymize.d.ts +15 -0
  3. package/dist/cli/commands/anonymize.d.ts.map +1 -0
  4. package/dist/cli/commands/anonymize.js +104 -0
  5. package/dist/cli/commands/anonymize.js.map +1 -0
  6. package/dist/cli/commands/ci.d.ts +10 -0
  7. package/dist/cli/commands/ci.d.ts.map +1 -0
  8. package/dist/cli/commands/ci.js +96 -0
  9. package/dist/cli/commands/ci.js.map +1 -0
  10. package/dist/cli/commands/diff.d.ts +10 -0
  11. package/dist/cli/commands/diff.d.ts.map +1 -0
  12. package/dist/cli/commands/diff.js +71 -0
  13. package/dist/cli/commands/diff.js.map +1 -0
  14. package/dist/cli/index.js +27 -0
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/core/assertions.d.ts +36 -0
  17. package/dist/core/assertions.d.ts.map +1 -0
  18. package/dist/core/assertions.js +335 -0
  19. package/dist/core/assertions.js.map +1 -0
  20. package/dist/core/detection.d.ts +8 -1
  21. package/dist/core/detection.d.ts.map +1 -1
  22. package/dist/core/detection.js +287 -1
  23. package/dist/core/detection.js.map +1 -1
  24. package/dist/core/diff.d.ts +68 -0
  25. package/dist/core/diff.d.ts.map +1 -0
  26. package/dist/core/diff.js +199 -0
  27. package/dist/core/diff.js.map +1 -0
  28. package/dist/core/index.d.ts +4 -0
  29. package/dist/core/index.d.ts.map +1 -1
  30. package/dist/core/index.js +4 -0
  31. package/dist/core/index.js.map +1 -1
  32. package/dist/core/types.d.ts +77 -2
  33. package/dist/core/types.d.ts.map +1 -1
  34. package/dist/index.d.ts +3 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/scenarios/__scenarios__/heartbeat-irregular.d.ts +51 -0
  39. package/dist/scenarios/__scenarios__/heartbeat-irregular.d.ts.map +1 -0
  40. package/dist/scenarios/__scenarios__/heartbeat-irregular.js +81 -0
  41. package/dist/scenarios/__scenarios__/heartbeat-irregular.js.map +1 -0
  42. package/dist/scenarios/__scenarios__/meter-anomaly.d.ts +115 -0
  43. package/dist/scenarios/__scenarios__/meter-anomaly.d.ts.map +1 -0
  44. package/dist/scenarios/__scenarios__/meter-anomaly.js +152 -0
  45. package/dist/scenarios/__scenarios__/meter-anomaly.js.map +1 -0
  46. package/dist/scenarios/__scenarios__/short-session.d.ts +111 -0
  47. package/dist/scenarios/__scenarios__/short-session.d.ts.map +1 -0
  48. package/dist/scenarios/__scenarios__/short-session.js +129 -0
  49. package/dist/scenarios/__scenarios__/short-session.js.map +1 -0
  50. package/dist/scenarios/__scenarios__/slow-csms-response.d.ts +52 -0
  51. package/dist/scenarios/__scenarios__/slow-csms-response.d.ts.map +1 -0
  52. package/dist/scenarios/__scenarios__/slow-csms-response.js +61 -0
  53. package/dist/scenarios/__scenarios__/slow-csms-response.js.map +1 -0
  54. package/dist/scenarios/__scenarios__/unexpected-start.js +3 -3
  55. package/dist/scenarios/__scenarios__/unresponsive-csms.d.ts +53 -0
  56. package/dist/scenarios/__scenarios__/unresponsive-csms.d.ts.map +1 -0
  57. package/dist/scenarios/__scenarios__/unresponsive-csms.js +53 -0
  58. package/dist/scenarios/__scenarios__/unresponsive-csms.js.map +1 -0
  59. package/dist/scenarios/compare.d.ts +39 -0
  60. package/dist/scenarios/compare.d.ts.map +1 -0
  61. package/dist/scenarios/compare.js +77 -0
  62. package/dist/scenarios/compare.js.map +1 -0
  63. package/dist/scenarios/index.d.ts +10 -3
  64. package/dist/scenarios/index.d.ts.map +1 -1
  65. package/dist/scenarios/index.js +22 -1
  66. package/dist/scenarios/index.js.map +1 -1
  67. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Failure detection — analyzes events and sessions for known failure patterns.
3
3
  *
4
- * 10 detection rules (v0.1 + v0.2):
4
+ * 15 detection rules (v0.1 + v0.2 + v0.3):
5
5
  *
6
6
  * v0.1:
7
7
  * 1. FAILED_AUTHORIZATION — Authorize response with idTagInfo.status = "Invalid"
@@ -17,6 +17,13 @@
17
17
  * 9. DIAGNOSTICS_FAILURE — DiagnosticsStatusNotification indicating failure
18
18
  * 10. FIRMWARE_UPDATE_FAILURE — FirmwareStatusNotification indicating failure
19
19
  *
20
+ * v0.3:
21
+ * 11. SUSPICIOUS_SESSION_DURATION — session < 60s or > 24h
22
+ * 12. SLOW_RESPONSE — gap between Call and matching CallResult/CallError > 10s
23
+ * 13. HEARTBEAT_INTERVAL_VIOLATION — heartbeat intervals deviate >50% from expected
24
+ * 14. METER_VALUE_ANOMALY — non-monotonic or negative meter readings
25
+ * 15. UNRESPONSIVE_CSMS — Call with no matching CallResult or CallError
26
+ *
20
27
  * @see ADR-0003
21
28
  */
22
29
  // ---------------------------------------------------------------------------
@@ -88,6 +95,41 @@ const SUGGESTED_STEPS = {
88
95
  'Retry the firmware update after addressing the failure cause',
89
96
  'Contact the firmware provider if the image is defective',
90
97
  ],
98
+ SUSPICIOUS_SESSION_DURATION: [
99
+ 'Review the session duration in the trace timeline',
100
+ 'For very short sessions: check if the transaction was aborted or authorization failed mid-session',
101
+ 'For very long sessions: check if the station forgot to send StopTransaction',
102
+ 'Verify the station clock is synchronized (NTP)',
103
+ 'Check if the session spans a maintenance window or firmware update',
104
+ ],
105
+ SLOW_RESPONSE: [
106
+ 'Check the CSMS processing time for the affected message type',
107
+ 'Review system load and database performance on the CSMS',
108
+ 'Verify network latency between station and CSMS',
109
+ 'Check if the CSMS is running a long-running synchronous operation',
110
+ 'Review CSMS logs for the specific message ID',
111
+ ],
112
+ HEARTBEAT_INTERVAL_VIOLATION: [
113
+ 'Verify the heartbeat interval configured on the station matches the BootNotification response',
114
+ 'Check for network instability causing delayed heartbeats',
115
+ 'Review the station clock synchronization (NTP)',
116
+ 'Check if the station firmware has a known heartbeat timing bug',
117
+ 'Inspect the WebSocket connection stability',
118
+ ],
119
+ METER_VALUE_ANOMALY: [
120
+ 'Verify the meter is functioning correctly and is properly calibrated',
121
+ 'Check for meter communication errors or data corruption',
122
+ 'Review the meter value sampling and reporting configuration',
123
+ 'Inspect for potential tampering or hardware malfunction',
124
+ 'Contact the meter vendor if the issue persists',
125
+ ],
126
+ UNRESPONSIVE_CSMS: [
127
+ 'Check if the CSMS was online and accepting connections during the session',
128
+ 'Verify the WebSocket connection was stable at the time of the unanswered Call',
129
+ 'Review CSMS logs for the specific message ID',
130
+ 'Check if the CSMS crashed or restarted during the session',
131
+ 'Inspect the network path between station and CSMS for packet loss',
132
+ ],
91
133
  };
92
134
  const SEVERITY = {
93
135
  FAILED_AUTHORIZATION: 'warning',
@@ -100,6 +142,11 @@ const SEVERITY = {
100
142
  STATUS_TRANSITION_VIOLATION: 'warning',
101
143
  DIAGNOSTICS_FAILURE: 'critical',
102
144
  FIRMWARE_UPDATE_FAILURE: 'warning',
145
+ SUSPICIOUS_SESSION_DURATION: 'warning',
146
+ SLOW_RESPONSE: 'warning',
147
+ HEARTBEAT_INTERVAL_VIOLATION: 'info',
148
+ METER_VALUE_ANOMALY: 'warning',
149
+ UNRESPONSIVE_CSMS: 'critical',
103
150
  };
104
151
  // ---------------------------------------------------------------------------
105
152
  // Payload extraction helpers
@@ -289,6 +336,12 @@ export function detectFailures(events, sessions) {
289
336
  failures.push(...detectStatusTransitionViolation(events));
290
337
  failures.push(...detectDiagnosticsFailure(events));
291
338
  failures.push(...detectFirmwareUpdateFailure(events));
339
+ // v0.3 rules
340
+ failures.push(...detectSuspiciousSessionDuration(events, sessions));
341
+ failures.push(...detectSlowResponse(events));
342
+ failures.push(...detectHeartbeatIntervalViolation(events));
343
+ failures.push(...detectMeterValueAnomaly(events, sessions));
344
+ failures.push(...detectUnresponsiveCsms(events));
292
345
  return failures;
293
346
  }
294
347
  // ---------------------------------------------------------------------------
@@ -555,4 +608,237 @@ function detectFirmwareUpdateFailure(events) {
555
608
  }
556
609
  return failures;
557
610
  }
611
+ // ---------------------------------------------------------------------------
612
+ // v0.3 detection rules
613
+ // ---------------------------------------------------------------------------
614
+ /** Minimum session duration to not be suspicious: 60 seconds. */
615
+ const MIN_SESSION_DURATION_MS = 60_000;
616
+ /** Maximum session duration to not be suspicious: 24 hours. */
617
+ const MAX_SESSION_DURATION_MS = 24 * 60 * 60 * 1000;
618
+ /** Threshold for slow response: 10 seconds. */
619
+ const SLOW_RESPONSE_THRESHOLD_MS = 10_000;
620
+ /** Deviation threshold for heartbeat interval violation: 50%. */
621
+ const HEARTBEAT_DEVIATION_THRESHOLD = 0.5;
622
+ /**
623
+ * Rule 11: SUSPICIOUS_SESSION_DURATION
624
+ * Detects sessions that are suspiciously short (< 60s) or long (> 24h).
625
+ */
626
+ function detectSuspiciousSessionDuration(_events, sessions) {
627
+ const failures = [];
628
+ for (const session of sessions) {
629
+ if (session.transactionId === null)
630
+ continue;
631
+ if (session.startTime === null || session.endTime === null)
632
+ continue;
633
+ const durationMs = session.endTime - session.startTime;
634
+ if (durationMs < MIN_SESSION_DURATION_MS) {
635
+ failures.push({
636
+ code: 'SUSPICIOUS_SESSION_DURATION',
637
+ description: `Session ${session.sessionId} (transaction ${session.transactionId}) lasted only ${durationMs}ms — suspiciously short session may indicate aborted start or authorization failure`,
638
+ severity: SEVERITY.SUSPICIOUS_SESSION_DURATION,
639
+ eventIds: session.events
640
+ .filter((e) => e.messageType === 'Call' &&
641
+ (e.action === 'StartTransaction' || e.action === 'StopTransaction'))
642
+ .map((e) => e.id),
643
+ suggestedSteps: SUGGESTED_STEPS.SUSPICIOUS_SESSION_DURATION,
644
+ });
645
+ }
646
+ else if (durationMs > MAX_SESSION_DURATION_MS) {
647
+ failures.push({
648
+ code: 'SUSPICIOUS_SESSION_DURATION',
649
+ description: `Session ${session.sessionId} (transaction ${session.transactionId}) lasted ${Math.round(durationMs / (60 * 60 * 1000))} hours — suspiciously long session may indicate forgotten charging or missing StopTransaction`,
650
+ severity: SEVERITY.SUSPICIOUS_SESSION_DURATION,
651
+ eventIds: session.events
652
+ .filter((e) => e.messageType === 'Call' &&
653
+ (e.action === 'StartTransaction' || e.action === 'StopTransaction'))
654
+ .map((e) => e.id),
655
+ suggestedSteps: SUGGESTED_STEPS.SUSPICIOUS_SESSION_DURATION,
656
+ });
657
+ }
658
+ }
659
+ return failures;
660
+ }
661
+ /**
662
+ * Rule 12: SLOW_RESPONSE
663
+ * Detects when the gap between a Call and its matching CallResult/CallError
664
+ * exceeds the threshold (default 10s).
665
+ */
666
+ function detectSlowResponse(events) {
667
+ const failures = [];
668
+ // Build a map of messageId → CallResult/CallError timestamps
669
+ const responseMap = new Map();
670
+ for (const event of events) {
671
+ if ((event.messageType === 'CallResult' || event.messageType === 'CallError') &&
672
+ event.timestamp !== null) {
673
+ responseMap.set(event.messageId, event.timestamp);
674
+ }
675
+ }
676
+ for (const call of events) {
677
+ if (call.messageType !== 'Call' || call.timestamp === null)
678
+ continue;
679
+ const responseTime = responseMap.get(call.messageId);
680
+ if (responseTime === undefined)
681
+ continue; // No matching response — handled by UNRESPONSIVE_CSMS
682
+ const gapMs = responseTime - call.timestamp;
683
+ if (gapMs > SLOW_RESPONSE_THRESHOLD_MS) {
684
+ failures.push({
685
+ code: 'SLOW_RESPONSE',
686
+ description: `Response to ${call.action} (messageId: ${call.messageId}) took ${Math.round(gapMs / 1000)}s — exceeds ${SLOW_RESPONSE_THRESHOLD_MS / 1000}s threshold`,
687
+ severity: SEVERITY.SLOW_RESPONSE,
688
+ eventIds: [call.id],
689
+ suggestedSteps: SUGGESTED_STEPS.SLOW_RESPONSE,
690
+ });
691
+ }
692
+ }
693
+ return failures;
694
+ }
695
+ /**
696
+ * Rule 13: HEARTBEAT_INTERVAL_VIOLATION
697
+ * Detects when heartbeat intervals deviate >50% from the expected interval
698
+ * (from BootNotification response, or default 60s).
699
+ */
700
+ function detectHeartbeatIntervalViolation(events) {
701
+ const failures = [];
702
+ // Extract expected heartbeat interval from BootNotification response
703
+ let expectedIntervalMs = DEFAULT_HEARTBEAT_INTERVAL_MS;
704
+ const bootIndex = events.findIndex((e) => e.messageType === 'Call' && e.action === 'BootNotification');
705
+ if (bootIndex !== -1) {
706
+ const bootEvent = events[bootIndex];
707
+ if (bootEvent) {
708
+ const bootResponse = events.find((e) => e.messageType === 'CallResult' &&
709
+ e.messageId === bootEvent.messageId &&
710
+ typeof e.payload?.interval === 'number');
711
+ if (bootResponse) {
712
+ const interval = bootResponse.payload.interval;
713
+ expectedIntervalMs = interval * 1000;
714
+ }
715
+ }
716
+ }
717
+ // Collect heartbeat timestamps in order
718
+ const heartbeatTimestamps = events
719
+ .filter((e) => e.messageType === 'Call' && e.action === 'Heartbeat' && e.timestamp !== null)
720
+ .map((e) => ({ id: e.id, timestamp: e.timestamp }));
721
+ if (heartbeatTimestamps.length < 2)
722
+ return failures;
723
+ for (let i = 1; i < heartbeatTimestamps.length; i++) {
724
+ const prev = heartbeatTimestamps[i - 1];
725
+ const curr = heartbeatTimestamps[i];
726
+ if (!prev || !curr)
727
+ continue;
728
+ const actualGap = curr.timestamp - prev.timestamp;
729
+ const deviation = Math.abs(actualGap - expectedIntervalMs) / expectedIntervalMs;
730
+ if (deviation > HEARTBEAT_DEVIATION_THRESHOLD) {
731
+ failures.push({
732
+ code: 'HEARTBEAT_INTERVAL_VIOLATION',
733
+ description: `Heartbeat interval deviation: ${Math.round(actualGap / 1000)}s between heartbeats, expected ~${Math.round(expectedIntervalMs / 1000)}s (${Math.round(deviation * 100)}% deviation)`,
734
+ severity: SEVERITY.HEARTBEAT_INTERVAL_VIOLATION,
735
+ eventIds: [prev.id, curr.id],
736
+ suggestedSteps: SUGGESTED_STEPS.HEARTBEAT_INTERVAL_VIOLATION,
737
+ });
738
+ }
739
+ }
740
+ return failures;
741
+ }
742
+ /**
743
+ * Rule 14: METER_VALUE_ANOMALY
744
+ * Detects non-monotonic (decreasing) or negative meter readings during
745
+ * an active transaction.
746
+ */
747
+ function detectMeterValueAnomaly(_events, sessions) {
748
+ const failures = [];
749
+ for (const session of sessions) {
750
+ if (session.transactionId === null)
751
+ continue;
752
+ // Collect meter values from MeterValues calls in order
753
+ const meterEvents = session.events.filter((e) => e.messageType === 'Call' && e.action === 'MeterValues');
754
+ if (meterEvents.length === 0)
755
+ continue;
756
+ // Extract numeric meter values from the payload
757
+ // OCPP 1.6 MeterValues: { connectorId, transactionId, meterValue: [{ timestamp, sampledValue: [{ value, ... }] }] }
758
+ const readings = [];
759
+ for (const event of meterEvents) {
760
+ const payload = event.payload;
761
+ const meterValues = payload?.meterValue;
762
+ if (!Array.isArray(meterValues))
763
+ continue;
764
+ for (const mv of meterValues) {
765
+ const sampledValues = mv?.sampledValue;
766
+ if (!Array.isArray(sampledValues))
767
+ continue;
768
+ for (const sv of sampledValues) {
769
+ const rawValue = sv?.value;
770
+ if (typeof rawValue === 'string') {
771
+ const numValue = Number.parseFloat(rawValue);
772
+ if (!Number.isNaN(numValue)) {
773
+ readings.push({ eventId: event.id, value: numValue });
774
+ }
775
+ }
776
+ else if (typeof rawValue === 'number') {
777
+ readings.push({ eventId: event.id, value: rawValue });
778
+ }
779
+ }
780
+ }
781
+ }
782
+ if (readings.length === 0)
783
+ continue;
784
+ // Check for negative values
785
+ for (const reading of readings) {
786
+ if (reading.value < 0) {
787
+ failures.push({
788
+ code: 'METER_VALUE_ANOMALY',
789
+ description: `Negative meter value detected: ${reading.value} in session ${session.sessionId} (transaction ${session.transactionId})`,
790
+ severity: SEVERITY.METER_VALUE_ANOMALY,
791
+ eventIds: [reading.eventId],
792
+ suggestedSteps: SUGGESTED_STEPS.METER_VALUE_ANOMALY,
793
+ });
794
+ }
795
+ }
796
+ // Check for non-monotonic (decreasing) values
797
+ for (let i = 1; i < readings.length; i++) {
798
+ const prev = readings[i - 1];
799
+ const curr = readings[i];
800
+ if (!prev || !curr)
801
+ continue;
802
+ if (curr.value < prev.value) {
803
+ failures.push({
804
+ code: 'METER_VALUE_ANOMALY',
805
+ description: `Non-monotonic meter reading: value decreased from ${prev.value} to ${curr.value} in session ${session.sessionId} (transaction ${session.transactionId})`,
806
+ severity: SEVERITY.METER_VALUE_ANOMALY,
807
+ eventIds: [prev.eventId, curr.eventId],
808
+ suggestedSteps: SUGGESTED_STEPS.METER_VALUE_ANOMALY,
809
+ });
810
+ }
811
+ }
812
+ }
813
+ return failures;
814
+ }
815
+ /**
816
+ * Rule 15: UNRESPONSIVE_CSMS
817
+ * Detects Call messages that have no matching CallResult or CallError
818
+ * (the CSMS never responded).
819
+ */
820
+ function detectUnresponsiveCsms(events) {
821
+ const failures = [];
822
+ // Build a set of messageIds that have responses
823
+ const respondedMessageIds = new Set();
824
+ for (const event of events) {
825
+ if (event.messageType === 'CallResult' || event.messageType === 'CallError') {
826
+ respondedMessageIds.add(event.messageId);
827
+ }
828
+ }
829
+ for (const call of events) {
830
+ if (call.messageType !== 'Call')
831
+ continue;
832
+ if (!respondedMessageIds.has(call.messageId)) {
833
+ failures.push({
834
+ code: 'UNRESPONSIVE_CSMS',
835
+ description: `No response received for ${call.action} Call (messageId: ${call.messageId}) — CSMS did not respond with CallResult or CallError`,
836
+ severity: SEVERITY.UNRESPONSIVE_CSMS,
837
+ eventIds: [call.id],
838
+ suggestedSteps: SUGGESTED_STEPS.UNRESPONSIVE_CSMS,
839
+ });
840
+ }
841
+ }
842
+ return failures;
843
+ }
558
844
  //# sourceMappingURL=detection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/core/detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/core/detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Trace diffing — compare two parsed traces and surface differences.
3
+ *
4
+ * Matches events by `messageId` (OCPP UniqueId), then compares:
5
+ * - timestamp, direction, action, payload (deep equality), errorCode
6
+ * - detected failures (by code)
7
+ * - session summaries (human-readable difference strings)
8
+ *
9
+ * Pure function — no I/O, no side effects. Browser-safe (no Node built-ins).
10
+ *
11
+ * @module @ocpp-debugkit/toolkit/core
12
+ */
13
+ import type { Event, Failure, ParseResult, SessionSummary } from './types.js';
14
+ /** A field-level difference between two events that share a messageId. */
15
+ export interface EventDiff {
16
+ /** The OCPP UniqueId shared by both events. */
17
+ messageId: string;
18
+ /** The field that differs. */
19
+ field: 'timestamp' | 'direction' | 'action' | 'payload' | 'errorCode';
20
+ /** The value in trace A (or null if the field was absent). */
21
+ valueA: unknown;
22
+ /** The value in trace B (or null if the field was absent). */
23
+ valueB: unknown;
24
+ }
25
+ /** Summary-level differences between two traces. */
26
+ export interface SummaryDiff {
27
+ /** Summary of trace A (or null if A has no sessions). */
28
+ a: SessionSummary | null;
29
+ /** Summary of trace B (or null if B has no sessions). */
30
+ b: SessionSummary | null;
31
+ /** Human-readable difference descriptions. */
32
+ differences: string[];
33
+ }
34
+ /** The complete diff result between two traces. */
35
+ export interface TraceDiff {
36
+ /** Events present in trace A but not B (by messageId). */
37
+ onlyInA: Event[];
38
+ /** Events present in trace B but not A (by messageId). */
39
+ onlyInB: Event[];
40
+ /** Events present in both but with field-level differences. */
41
+ modified: EventDiff[];
42
+ /** Failures detected in A but not B. */
43
+ failuresOnlyInA: Failure[];
44
+ /** Failures detected in B but not A. */
45
+ failuresOnlyInB: Failure[];
46
+ /** Summary differences. */
47
+ summaryDiff: SummaryDiff;
48
+ }
49
+ /**
50
+ * Compare two parsed traces and return a structured diff.
51
+ *
52
+ * @param a - Parse result of trace A
53
+ * @param b - Parse result of trace B
54
+ * @returns A {@link TraceDiff} describing all differences
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const resultA = parseTrace(traceAJson);
59
+ * const resultB = parseTrace(traceBJson);
60
+ * const diff = diffTraces(resultA, resultB);
61
+ *
62
+ * if (diff.onlyInA.length > 0) {
63
+ * console.log(`${diff.onlyInA.length} events only in trace A`);
64
+ * }
65
+ * ```
66
+ */
67
+ export declare function diffTraces(a: ParseResult, b: ParseResult): TraceDiff;
68
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAS9E,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IACtE,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACzB,yDAAyD;IACzD,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACzB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,0DAA0D;IAC1D,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,wCAAwC;IACxC,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,wCAAwC;IACxC,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,2BAA2B;IAC3B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAqCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,SAAS,CAyIpE"}