@ocpp-debugkit/toolkit 0.2.0 → 0.2.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/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +6 -3
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/scenario.d.ts +11 -3
- package/dist/cli/commands/scenario.d.ts.map +1 -1
- package/dist/cli/commands/scenario.js +41 -4
- package/dist/cli/commands/scenario.js.map +1 -1
- package/dist/cli/index.js +14 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/core/__fixtures__/connector-fault.d.ts +6 -0
- package/dist/core/__fixtures__/connector-fault.d.ts.map +1 -1
- package/dist/core/__fixtures__/connector-fault.js +11 -1
- package/dist/core/__fixtures__/connector-fault.js.map +1 -1
- package/dist/core/__fixtures__/normal-session.d.ts +6 -0
- package/dist/core/__fixtures__/normal-session.d.ts.map +1 -1
- package/dist/core/__fixtures__/normal-session.js +10 -0
- package/dist/core/__fixtures__/normal-session.js.map +1 -1
- package/dist/core/detection.d.ts +13 -3
- package/dist/core/detection.d.ts.map +1 -1
- package/dist/core/detection.js +338 -6
- package/dist/core/detection.js.map +1 -1
- package/dist/core/fixtures/index.d.ts +12 -0
- package/dist/core/fixtures/index.d.ts.map +1 -1
- package/dist/core/types.d.ts +2 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/react/components.d.ts +9 -45
- package/dist/react/components.d.ts.map +1 -1
- package/dist/react/components.js +120 -38
- package/dist/react/components.js.map +1 -1
- package/dist/reporter/html.d.ts +25 -0
- package/dist/reporter/html.d.ts.map +1 -0
- package/dist/reporter/html.js +396 -0
- package/dist/reporter/html.js.map +1 -0
- package/dist/reporter/index.d.ts +1 -0
- package/dist/reporter/index.d.ts.map +1 -1
- package/dist/reporter/index.js +1 -0
- package/dist/reporter/index.js.map +1 -1
- package/dist/scenarios/__scenarios__/diagnostics-failure.d.ts +58 -0
- package/dist/scenarios/__scenarios__/diagnostics-failure.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/diagnostics-failure.js +91 -0
- package/dist/scenarios/__scenarios__/diagnostics-failure.js.map +1 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.d.ts +118 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.js +226 -0
- package/dist/scenarios/__scenarios__/invalid-stop-reason.js.map +1 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.d.ts +103 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.js +196 -0
- package/dist/scenarios/__scenarios__/meter-value-gap.js.map +1 -0
- package/dist/scenarios/__scenarios__/station-offline.d.ts +6 -0
- package/dist/scenarios/__scenarios__/station-offline.d.ts.map +1 -1
- package/dist/scenarios/__scenarios__/station-offline.js +10 -0
- package/dist/scenarios/__scenarios__/station-offline.js.map +1 -1
- package/dist/scenarios/__scenarios__/status-transition-violation.d.ts +52 -0
- package/dist/scenarios/__scenarios__/status-transition-violation.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/status-transition-violation.js +112 -0
- package/dist/scenarios/__scenarios__/status-transition-violation.js.map +1 -0
- package/dist/scenarios/__scenarios__/unexpected-start.d.ts +80 -0
- package/dist/scenarios/__scenarios__/unexpected-start.d.ts.map +1 -0
- package/dist/scenarios/__scenarios__/unexpected-start.js +124 -0
- package/dist/scenarios/__scenarios__/unexpected-start.js.map +1 -0
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.d.ts +6 -0
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.d.ts.map +1 -1
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.js +10 -0
- package/dist/scenarios/__scenarios__/unexpected-stop-reason.js.map +1 -1
- package/dist/scenarios/index.d.ts +8 -3
- package/dist/scenarios/index.d.ts.map +1 -1
- package/dist/scenarios/index.js +24 -4
- package/dist/scenarios/index.js.map +1 -1
- package/package.json +1 -1
package/dist/core/detection.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Failure detection — analyzes events and sessions for known failure patterns.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* 10 detection rules (v0.1 + v0.2):
|
|
5
|
+
*
|
|
6
|
+
* v0.1:
|
|
5
7
|
* 1. FAILED_AUTHORIZATION — Authorize response with idTagInfo.status = "Invalid"
|
|
6
8
|
* 2. CONNECTOR_FAULT — StatusNotification with status = "Faulted" during active session
|
|
7
|
-
* 3. STATION_OFFLINE_DURING_SESSION — session has StartTransaction but no StopTransaction
|
|
8
|
-
*
|
|
9
|
+
* 3. STATION_OFFLINE_DURING_SESSION — session has StartTransaction but no StopTransaction
|
|
10
|
+
*
|
|
11
|
+
* v0.2:
|
|
12
|
+
* 4. TIMEOUT_NO_HEARTBEAT — no Heartbeat within expected interval after BootNotification
|
|
13
|
+
* 5. METER_VALUE_GAP — no MeterValues during an active transaction
|
|
14
|
+
* 6. INVALID_STOP_REASON — StopTransaction with unexpected/invalid stop reason
|
|
15
|
+
* 7. UNEXPECTED_START — StartTransaction without preceding BootNotification or Authorize
|
|
16
|
+
* 8. STATUS_TRANSITION_VIOLATION — illegal connector status transition
|
|
17
|
+
* 9. DIAGNOSTICS_FAILURE — DiagnosticsStatusNotification indicating failure
|
|
18
|
+
* 10. FIRMWARE_UPDATE_FAILURE — FirmwareStatusNotification indicating failure
|
|
9
19
|
*
|
|
10
20
|
* @see ADR-0003
|
|
11
21
|
*/
|
|
@@ -33,11 +43,63 @@ const SUGGESTED_STEPS = {
|
|
|
33
43
|
'Check if the station firmware has a known stability issue',
|
|
34
44
|
'Investigate if maintenance was performed on the station',
|
|
35
45
|
],
|
|
46
|
+
TIMEOUT_NO_HEARTBEAT: [
|
|
47
|
+
'Check the station network connectivity',
|
|
48
|
+
'Verify the WebSocket connection is stable',
|
|
49
|
+
'Review the station heartbeat interval configuration',
|
|
50
|
+
'Check if the station has rebooted or lost power',
|
|
51
|
+
'Inspect the CSMS for connection acceptance issues',
|
|
52
|
+
],
|
|
53
|
+
METER_VALUE_GAP: [
|
|
54
|
+
'Verify the meter is functioning correctly',
|
|
55
|
+
'Check the meter value reporting interval configuration',
|
|
56
|
+
'Inspect the OCPP connection stability during the session',
|
|
57
|
+
'Review station logs for meter communication errors',
|
|
58
|
+
'Consider hardware replacement if meter is faulty',
|
|
59
|
+
],
|
|
60
|
+
INVALID_STOP_REASON: [
|
|
61
|
+
'Review the StopTransaction payload for the stop reason',
|
|
62
|
+
'Check if the stop reason is within the OCPP 1.6 specification',
|
|
63
|
+
'Investigate why the station used a non-standard reason',
|
|
64
|
+
'Review station firmware for stop reason mapping bugs',
|
|
65
|
+
],
|
|
66
|
+
UNEXPECTED_START: [
|
|
67
|
+
'Verify the station performed BootNotification before starting a transaction',
|
|
68
|
+
'Check if authorization was properly completed before StartTransaction',
|
|
69
|
+
'Review the station startup sequence and timing',
|
|
70
|
+
'Inspect the CSMS for delayed or missing responses',
|
|
71
|
+
],
|
|
72
|
+
STATUS_TRANSITION_VIOLATION: [
|
|
73
|
+
'Review the connector status transition sequence',
|
|
74
|
+
'Check if the station firmware follows the OCPP status model correctly',
|
|
75
|
+
'Verify no manual overrides triggered invalid transitions',
|
|
76
|
+
'Inspect the connector status history for anomalies',
|
|
77
|
+
],
|
|
78
|
+
DIAGNOSTICS_FAILURE: [
|
|
79
|
+
'Review the DiagnosticsStatusNotification payload for the specific status',
|
|
80
|
+
'Check the station diagnostic logs for detailed error information',
|
|
81
|
+
'Verify the station hardware diagnostics are passing',
|
|
82
|
+
'Contact hardware vendor if diagnostics indicate hardware failure',
|
|
83
|
+
],
|
|
84
|
+
FIRMWARE_UPDATE_FAILURE: [
|
|
85
|
+
'Review the FirmwareStatusNotification payload for the specific status',
|
|
86
|
+
'Check if the firmware image was corrupted or incomplete',
|
|
87
|
+
'Verify the station has sufficient storage for the firmware update',
|
|
88
|
+
'Retry the firmware update after addressing the failure cause',
|
|
89
|
+
'Contact the firmware provider if the image is defective',
|
|
90
|
+
],
|
|
36
91
|
};
|
|
37
92
|
const SEVERITY = {
|
|
38
93
|
FAILED_AUTHORIZATION: 'warning',
|
|
39
94
|
CONNECTOR_FAULT: 'critical',
|
|
40
95
|
STATION_OFFLINE_DURING_SESSION: 'critical',
|
|
96
|
+
TIMEOUT_NO_HEARTBEAT: 'warning',
|
|
97
|
+
METER_VALUE_GAP: 'warning',
|
|
98
|
+
INVALID_STOP_REASON: 'info',
|
|
99
|
+
UNEXPECTED_START: 'warning',
|
|
100
|
+
STATUS_TRANSITION_VIOLATION: 'warning',
|
|
101
|
+
DIAGNOSTICS_FAILURE: 'critical',
|
|
102
|
+
FIRMWARE_UPDATE_FAILURE: 'warning',
|
|
41
103
|
};
|
|
42
104
|
// ---------------------------------------------------------------------------
|
|
43
105
|
// Payload extraction helpers
|
|
@@ -215,12 +277,282 @@ function detectStationOfflineDuringSession(_events, sessions) {
|
|
|
215
277
|
*/
|
|
216
278
|
export function detectFailures(events, sessions) {
|
|
217
279
|
const failures = [];
|
|
218
|
-
//
|
|
280
|
+
// v0.1 rules
|
|
219
281
|
failures.push(...detectFailedAuthorization(events));
|
|
220
|
-
// Rule 2: Connector fault during active session
|
|
221
282
|
failures.push(...detectConnectorFault(events));
|
|
222
|
-
// Rule 3: Station offline during session
|
|
223
283
|
failures.push(...detectStationOfflineDuringSession(events, sessions));
|
|
284
|
+
// v0.2 rules
|
|
285
|
+
failures.push(...detectTimeoutNoHeartbeat(events));
|
|
286
|
+
failures.push(...detectMeterValueGap(events, sessions));
|
|
287
|
+
failures.push(...detectInvalidStopReason(events));
|
|
288
|
+
failures.push(...detectUnexpectedStart(events));
|
|
289
|
+
failures.push(...detectStatusTransitionViolation(events));
|
|
290
|
+
failures.push(...detectDiagnosticsFailure(events));
|
|
291
|
+
failures.push(...detectFirmwareUpdateFailure(events));
|
|
292
|
+
return failures;
|
|
293
|
+
}
|
|
294
|
+
// ---------------------------------------------------------------------------
|
|
295
|
+
// v0.2 detection rules
|
|
296
|
+
// ---------------------------------------------------------------------------
|
|
297
|
+
/** Default heartbeat interval: 60 seconds (OCPP 1.6 default). */
|
|
298
|
+
const DEFAULT_HEARTBEAT_INTERVAL_MS = 60_000;
|
|
299
|
+
/** Valid OCPP 1.6 StopTransaction reasons. */
|
|
300
|
+
const VALID_STOP_REASONS = new Set([
|
|
301
|
+
'EmergencyStop',
|
|
302
|
+
'EVDisconnected',
|
|
303
|
+
'HardReset',
|
|
304
|
+
'Local',
|
|
305
|
+
'Other',
|
|
306
|
+
'PowerLoss',
|
|
307
|
+
'Reboot',
|
|
308
|
+
'Remote',
|
|
309
|
+
'SoftReset',
|
|
310
|
+
'UnlockCommand',
|
|
311
|
+
'DeAuthorized',
|
|
312
|
+
]);
|
|
313
|
+
/** Valid connector statuses per OCPP 1.6. */
|
|
314
|
+
const VALID_CONNECTOR_STATUSES = new Set([
|
|
315
|
+
'Available',
|
|
316
|
+
'Preparing',
|
|
317
|
+
'Charging',
|
|
318
|
+
'SuspendedEVSE',
|
|
319
|
+
'SuspendedEV',
|
|
320
|
+
'Finishing',
|
|
321
|
+
'Reserved',
|
|
322
|
+
'Unavailable',
|
|
323
|
+
'Faulted',
|
|
324
|
+
]);
|
|
325
|
+
/**
|
|
326
|
+
* Rule 4: TIMEOUT_NO_HEARTBEAT
|
|
327
|
+
* Detects when a station sends no Heartbeat within the expected interval
|
|
328
|
+
* after BootNotification. Uses 2x the default interval as the threshold.
|
|
329
|
+
*/
|
|
330
|
+
function detectTimeoutNoHeartbeat(events) {
|
|
331
|
+
const failures = [];
|
|
332
|
+
const bootIndex = events.findIndex((e) => e.messageType === 'Call' && e.action === 'BootNotification');
|
|
333
|
+
if (bootIndex === -1)
|
|
334
|
+
return failures;
|
|
335
|
+
const bootEvent = events[bootIndex];
|
|
336
|
+
if (!bootEvent || bootEvent.timestamp === null)
|
|
337
|
+
return failures;
|
|
338
|
+
// Extract heartbeat interval from BootNotification response if present
|
|
339
|
+
let intervalMs = DEFAULT_HEARTBEAT_INTERVAL_MS;
|
|
340
|
+
const bootResponse = events.find((e) => e.messageType === 'CallResult' &&
|
|
341
|
+
e.messageId === bootEvent.messageId &&
|
|
342
|
+
typeof e.payload?.interval === 'number');
|
|
343
|
+
if (bootResponse) {
|
|
344
|
+
const interval = bootResponse.payload.interval;
|
|
345
|
+
intervalMs = interval * 1000;
|
|
346
|
+
}
|
|
347
|
+
// Look for any Heartbeat within 2x the expected interval after BootNotification
|
|
348
|
+
const threshold = bootEvent.timestamp + intervalMs * 2;
|
|
349
|
+
// Only flag if the trace has events beyond the heartbeat threshold
|
|
350
|
+
// (if the trace ends before the first heartbeat is due, we can't know
|
|
351
|
+
// if the station would have sent one)
|
|
352
|
+
const hasEventsBeyondThreshold = events.some((e) => e.timestamp !== null && e.timestamp > threshold);
|
|
353
|
+
if (!hasEventsBeyondThreshold)
|
|
354
|
+
return failures;
|
|
355
|
+
const hasHeartbeat = events.some((e) => e.messageType === 'Call' &&
|
|
356
|
+
e.action === 'Heartbeat' &&
|
|
357
|
+
e.timestamp !== null &&
|
|
358
|
+
e.timestamp <= threshold);
|
|
359
|
+
if (!hasHeartbeat) {
|
|
360
|
+
failures.push({
|
|
361
|
+
code: 'TIMEOUT_NO_HEARTBEAT',
|
|
362
|
+
description: `No Heartbeat received within ${(intervalMs * 2) / 1000}s of BootNotification (expected every ${intervalMs / 1000}s)`,
|
|
363
|
+
severity: SEVERITY.TIMEOUT_NO_HEARTBEAT,
|
|
364
|
+
eventIds: [bootEvent.id],
|
|
365
|
+
suggestedSteps: SUGGESTED_STEPS.TIMEOUT_NO_HEARTBEAT,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
return failures;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Rule 5: METER_VALUE_GAP
|
|
372
|
+
* Detects active transactions (StartTransaction to StopTransaction) where
|
|
373
|
+
* no MeterValuesRequest was sent.
|
|
374
|
+
*/
|
|
375
|
+
function detectMeterValueGap(_events, sessions) {
|
|
376
|
+
const failures = [];
|
|
377
|
+
for (const session of sessions) {
|
|
378
|
+
if (session.transactionId === null)
|
|
379
|
+
continue;
|
|
380
|
+
const hasStart = session.events.some((e) => e.messageType === 'Call' && e.action === 'StartTransaction');
|
|
381
|
+
const hasStop = session.events.some((e) => e.messageType === 'Call' && e.action === 'StopTransaction');
|
|
382
|
+
if (!hasStart || !hasStop)
|
|
383
|
+
continue;
|
|
384
|
+
const hasMeterValues = session.events.some((e) => e.messageType === 'Call' && e.action === 'MeterValues');
|
|
385
|
+
if (!hasMeterValues) {
|
|
386
|
+
const startEvent = session.events.find((e) => e.messageType === 'Call' && e.action === 'StartTransaction');
|
|
387
|
+
failures.push({
|
|
388
|
+
code: 'METER_VALUE_GAP',
|
|
389
|
+
description: `Session ${session.sessionId} (transaction ${session.transactionId}) has StartTransaction and StopTransaction but no MeterValues — metering data is missing`,
|
|
390
|
+
severity: SEVERITY.METER_VALUE_GAP,
|
|
391
|
+
eventIds: startEvent ? [startEvent.id] : [],
|
|
392
|
+
suggestedSteps: SUGGESTED_STEPS.METER_VALUE_GAP,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
return failures;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Rule 6: INVALID_STOP_REASON
|
|
400
|
+
* Detects StopTransaction with a stop reason not in the OCPP 1.6 specification.
|
|
401
|
+
*/
|
|
402
|
+
function detectInvalidStopReason(events) {
|
|
403
|
+
const failures = [];
|
|
404
|
+
for (const event of events) {
|
|
405
|
+
if (event.messageType !== 'Call' || event.action !== 'StopTransaction')
|
|
406
|
+
continue;
|
|
407
|
+
const payload = event.payload;
|
|
408
|
+
const reason = payload?.reason;
|
|
409
|
+
if (typeof reason === 'string' && !VALID_STOP_REASONS.has(reason)) {
|
|
410
|
+
failures.push({
|
|
411
|
+
code: 'INVALID_STOP_REASON',
|
|
412
|
+
description: `StopTransaction has invalid stop reason "${reason}" — not a valid OCPP 1.6 reason code (messageId: ${event.messageId})`,
|
|
413
|
+
severity: SEVERITY.INVALID_STOP_REASON,
|
|
414
|
+
eventIds: [event.id],
|
|
415
|
+
suggestedSteps: SUGGESTED_STEPS.INVALID_STOP_REASON,
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
return failures;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Rule 7: UNEXPECTED_START
|
|
423
|
+
* Detects StartTransaction without a preceding BootNotification or Authorize.
|
|
424
|
+
*/
|
|
425
|
+
function detectUnexpectedStart(events) {
|
|
426
|
+
const failures = [];
|
|
427
|
+
for (let i = 0; i < events.length; i++) {
|
|
428
|
+
const event = events[i];
|
|
429
|
+
if (!event)
|
|
430
|
+
continue;
|
|
431
|
+
if (event.messageType !== 'Call' || event.action !== 'StartTransaction')
|
|
432
|
+
continue;
|
|
433
|
+
// Check for BootNotification or Authorize before this StartTransaction
|
|
434
|
+
const hasBoot = events
|
|
435
|
+
.slice(0, i)
|
|
436
|
+
.some((e) => e.messageType === 'Call' && e.action === 'BootNotification');
|
|
437
|
+
const hasAuthorize = events
|
|
438
|
+
.slice(0, i)
|
|
439
|
+
.some((e) => e.messageType === 'Call' && e.action === 'Authorize');
|
|
440
|
+
if (!hasBoot && !hasAuthorize) {
|
|
441
|
+
failures.push({
|
|
442
|
+
code: 'UNEXPECTED_START',
|
|
443
|
+
description: `StartTransaction at event ${event.id} without preceding BootNotification or Authorize — transaction started without proper initialization (messageId: ${event.messageId})`,
|
|
444
|
+
severity: SEVERITY.UNEXPECTED_START,
|
|
445
|
+
eventIds: [event.id],
|
|
446
|
+
suggestedSteps: SUGGESTED_STEPS.UNEXPECTED_START,
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return failures;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Rule 8: STATUS_TRANSITION_VIOLATION
|
|
454
|
+
* Detects illegal connector status transitions.
|
|
455
|
+
* Valid transitions are based on the OCPP 1.6 connector state model.
|
|
456
|
+
*/
|
|
457
|
+
const VALID_TRANSITIONS = {
|
|
458
|
+
Available: new Set(['Preparing', 'Charging', 'Reserved', 'Unavailable', 'Faulted']),
|
|
459
|
+
Preparing: new Set(['Charging', 'Available', 'SuspendedEVSE', 'Faulted', 'Unavailable']),
|
|
460
|
+
Charging: new Set(['SuspendedEVSE', 'SuspendedEV', 'Finishing', 'Available', 'Faulted']),
|
|
461
|
+
SuspendedEVSE: new Set(['Charging', 'Finishing', 'Available', 'Faulted']),
|
|
462
|
+
SuspendedEV: new Set(['Charging', 'Finishing', 'Available', 'Faulted']),
|
|
463
|
+
Finishing: new Set(['Available', 'Reserved', 'Faulted']),
|
|
464
|
+
Reserved: new Set(['Available', 'Unavailable', 'Faulted']),
|
|
465
|
+
Unavailable: new Set(['Available', 'Faulted']),
|
|
466
|
+
Faulted: new Set(['Unavailable', 'Available']),
|
|
467
|
+
};
|
|
468
|
+
function detectStatusTransitionViolation(events) {
|
|
469
|
+
const failures = [];
|
|
470
|
+
// Collect all StatusNotification statuses in order
|
|
471
|
+
const statusEvents = events.filter((e) => e.messageType === 'Call' && e.action === 'StatusNotification');
|
|
472
|
+
let prevStatus = null;
|
|
473
|
+
let prevEvent = null;
|
|
474
|
+
for (const event of statusEvents) {
|
|
475
|
+
const payload = event.payload;
|
|
476
|
+
const status = payload?.status;
|
|
477
|
+
if (typeof status !== 'string' || !VALID_CONNECTOR_STATUSES.has(status))
|
|
478
|
+
continue;
|
|
479
|
+
if (prevStatus !== null && prevEvent !== null) {
|
|
480
|
+
const allowed = VALID_TRANSITIONS[prevStatus];
|
|
481
|
+
if (allowed && !allowed.has(status)) {
|
|
482
|
+
failures.push({
|
|
483
|
+
code: 'STATUS_TRANSITION_VIOLATION',
|
|
484
|
+
description: `Connector status transition from "${prevStatus}" to "${status}" is not a valid OCPP 1.6 transition (messageId: ${event.messageId})`,
|
|
485
|
+
severity: SEVERITY.STATUS_TRANSITION_VIOLATION,
|
|
486
|
+
eventIds: [prevEvent.id, event.id],
|
|
487
|
+
suggestedSteps: SUGGESTED_STEPS.STATUS_TRANSITION_VIOLATION,
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
prevStatus = status;
|
|
492
|
+
prevEvent = event;
|
|
493
|
+
}
|
|
494
|
+
return failures;
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Rule 9: DIAGNOSTICS_FAILURE
|
|
498
|
+
* Detects DiagnosticsStatusNotification with a failure status.
|
|
499
|
+
*/
|
|
500
|
+
const DIAGNOSTICS_FAILURE_STATUSES = new Set([
|
|
501
|
+
'Idle',
|
|
502
|
+
'Uploaded',
|
|
503
|
+
'UploadFailed',
|
|
504
|
+
'DiagnosisFailed',
|
|
505
|
+
'NotImplemented',
|
|
506
|
+
]);
|
|
507
|
+
function detectDiagnosticsFailure(events) {
|
|
508
|
+
const failures = [];
|
|
509
|
+
for (const event of events) {
|
|
510
|
+
if (event.messageType !== 'Call' || event.action !== 'DiagnosticsStatusNotification')
|
|
511
|
+
continue;
|
|
512
|
+
const payload = event.payload;
|
|
513
|
+
const status = payload?.status;
|
|
514
|
+
if (typeof status === 'string' && DIAGNOSTICS_FAILURE_STATUSES.has(status)) {
|
|
515
|
+
// Only report actual failures, not successful diagnostics
|
|
516
|
+
if (status === 'UploadFailed' || status === 'DiagnosisFailed') {
|
|
517
|
+
failures.push({
|
|
518
|
+
code: 'DIAGNOSTICS_FAILURE',
|
|
519
|
+
description: `DiagnosticsStatusNotification reported failure status "${status}" (messageId: ${event.messageId})`,
|
|
520
|
+
severity: SEVERITY.DIAGNOSTICS_FAILURE,
|
|
521
|
+
eventIds: [event.id],
|
|
522
|
+
suggestedSteps: SUGGESTED_STEPS.DIAGNOSTICS_FAILURE,
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
return failures;
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Rule 10: FIRMWARE_UPDATE_FAILURE
|
|
531
|
+
* Detects FirmwareStatusNotification indicating a firmware update failure.
|
|
532
|
+
*/
|
|
533
|
+
const FIRMWARE_FAILURE_STATUSES = new Set([
|
|
534
|
+
'DownloadFailed',
|
|
535
|
+
'DownloadPaused',
|
|
536
|
+
'InstallFailed',
|
|
537
|
+
'InstallRebootingFailed',
|
|
538
|
+
]);
|
|
539
|
+
function detectFirmwareUpdateFailure(events) {
|
|
540
|
+
const failures = [];
|
|
541
|
+
for (const event of events) {
|
|
542
|
+
if (event.messageType !== 'Call' || event.action !== 'FirmwareStatusNotification')
|
|
543
|
+
continue;
|
|
544
|
+
const payload = event.payload;
|
|
545
|
+
const status = payload?.status;
|
|
546
|
+
if (typeof status === 'string' && FIRMWARE_FAILURE_STATUSES.has(status)) {
|
|
547
|
+
failures.push({
|
|
548
|
+
code: 'FIRMWARE_UPDATE_FAILURE',
|
|
549
|
+
description: `FirmwareStatusNotification reported failure status "${status}" (messageId: ${event.messageId})`,
|
|
550
|
+
severity: SEVERITY.FIRMWARE_UPDATE_FAILURE,
|
|
551
|
+
eventIds: [event.id],
|
|
552
|
+
suggestedSteps: SUGGESTED_STEPS.FIRMWARE_UPDATE_FAILURE,
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
}
|
|
224
556
|
return failures;
|
|
225
557
|
}
|
|
226
558
|
//# 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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,MAAM,eAAe,GAAkC;IACrD,oBAAoB,EAAE;QACpB,2CAA2C;QAC3C,yCAAyC;QACzC,gDAAgD;QAChD,4DAA4D;KAC7D;IACD,eAAe,EAAE;QACf,qDAAqD;QACrD,oCAAoC;QACpC,oDAAoD;QACpD,6CAA6C;QAC7C,2CAA2C;KAC5C;IACD,8BAA8B,EAAE;QAC9B,uDAAuD;QACvD,uCAAuC;QACvC,2CAA2C;QAC3C,2DAA2D;QAC3D,yDAAyD;KAC1D;IACD,oBAAoB,EAAE;QACpB,wCAAwC;QACxC,2CAA2C;QAC3C,qDAAqD;QACrD,iDAAiD;QACjD,mDAAmD;KACpD;IACD,eAAe,EAAE;QACf,2CAA2C;QAC3C,wDAAwD;QACxD,0DAA0D;QAC1D,oDAAoD;QACpD,kDAAkD;KACnD;IACD,mBAAmB,EAAE;QACnB,wDAAwD;QACxD,+DAA+D;QAC/D,wDAAwD;QACxD,sDAAsD;KACvD;IACD,gBAAgB,EAAE;QAChB,6EAA6E;QAC7E,uEAAuE;QACvE,gDAAgD;QAChD,mDAAmD;KACpD;IACD,2BAA2B,EAAE;QAC3B,iDAAiD;QACjD,uEAAuE;QACvE,0DAA0D;QAC1D,oDAAoD;KACrD;IACD,mBAAmB,EAAE;QACnB,0EAA0E;QAC1E,kEAAkE;QAClE,qDAAqD;QACrD,kEAAkE;KACnE;IACD,uBAAuB,EAAE;QACvB,uEAAuE;QACvE,yDAAyD;QACzD,mEAAmE;QACnE,8DAA8D;QAC9D,yDAAyD;KAC1D;CACF,CAAC;AAEF,MAAM,QAAQ,GAAyC;IACrD,oBAAoB,EAAE,SAAS;IAC/B,eAAe,EAAE,UAAU;IAC3B,8BAA8B,EAAE,UAAU;IAC1C,oBAAoB,EAAE,SAAS;IAC/B,eAAe,EAAE,SAAS;IAC1B,mBAAmB,EAAE,MAAM;IAC3B,gBAAgB,EAAE,SAAS;IAC3B,2BAA2B,EAAE,SAAS;IACtC,mBAAmB,EAAE,UAAU;IAC/B,uBAAuB,EAAE,SAAS;CACnC,CAAC;AAEF,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,6DAA6D;AAC7D,SAAS,kBAAkB,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,WAAW,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAA+C,CAAC;IACtE,IAAI,OAAO,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qDAAqD;AACrD,SAAS,2BAA2B,CAAC,KAAY;IAC/C,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACvF,MAAM,OAAO,GAAG,KAAK,CAAC,OAA+B,CAAC;IACtD,IAAI,OAAO,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,SAAS,8BAA8B,CAAC,KAAY;IAClD,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACvF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAkC,CAAC;IACzD,IAAI,OAAO,OAAO,EAAE,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,SAAS,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,yBAAyB,CAAC,MAAe;IAChD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,0CAA0C;QAC1C,IAAI,KAAK,CAAC,WAAW,KAAK,YAAY;YAAE,SAAS;QAEjD,8CAA8C;QAC9C,gEAAgE;QAChE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAC1F,CAAC;QAEF,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EAAE,uEAAuE,KAAK,CAAC,SAAS,GAAG;gBACtG,QAAQ,EAAE,QAAQ,CAAC,oBAAoB;gBACvC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;gBACrC,cAAc,EAAE,eAAe,CAAC,oBAAoB;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,MAAe;IAC3C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,wCAAwC;IACxC,MAAM,cAAc,GAAG,MAAM;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC;SAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,uEAAuE;QACvE,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBACvE,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;QACH,CAAC;QAED,mFAAmF;QACnF,qDAAqD;QACrD,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAE7D,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;gBACxD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,mEAAmE,SAAS,CAAC,CAAC,CAAC,gBAAgB,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAgB,KAAK,CAAC,SAAS,GAAG;oBAC/J,QAAQ,EAAE,QAAQ,CAAC,eAAe;oBAClC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;oBACnC,cAAc,EAAE,eAAe,CAAC,eAAe;iBAChD,CAAC,CAAC;gBACH,MAAM,CAAC,oCAAoC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,iCAAiC,CAAC,OAAgB,EAAE,QAAmB;IAC9E,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI;YAAE,SAAS;QAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CACnE,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAClE,CAAC;QAEF,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,0EAA0E;YAC1E,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,gCAAgC;gBACtC,WAAW,EAAE,WAAW,OAAO,CAAC,SAAS,iBAAiB,OAAO,CAAC,aAAa,0GAA0G;gBACzL,QAAQ,EAAE,QAAQ,CAAC,8BAA8B;gBACjD,QAAQ,EAAE,OAAO,CAAC,MAAM;qBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC;qBAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,cAAc,EAAE,eAAe,CAAC,8BAA8B;aAC/D,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,0DAA0D;QAC1D,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CACnE,CAAC;YACF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAClE,CAAC;YAEF,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACrD,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,gCAAgC;wBACtC,WAAW,EAAE,qBAAqB,MAAM,kCAAkC,OAAO,CAAC,SAAS,iBAAiB,OAAO,CAAC,aAAa,GAAG;wBACpI,QAAQ,EAAE,QAAQ,CAAC,8BAA8B;wBACjD,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,cAAc,EAAE,eAAe,CAAC,8BAA8B;qBAC/D,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe,EAAE,QAAmB;IACjE,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,aAAa;IACb,QAAQ,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtE,aAAa;IACb,QAAQ,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,iEAAiE;AACjE,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAE7C,8CAA8C;AAC9C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,eAAe;IACf,gBAAgB;IAChB,WAAW;IACX,OAAO;IACP,OAAO;IACP,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,eAAe;IACf,cAAc;CACf,CAAC,CAAC;AAEH,6CAA6C;AAC7C,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,WAAW;IACX,WAAW;IACX,UAAU;IACV,eAAe;IACf,aAAa;IACb,WAAW;IACX,UAAU;IACV,aAAa;IACb,SAAS;CACV,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,MAAe;IAC/C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CACnE,CAAC;IACF,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEtC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IAEhE,uEAAuE;IACvE,IAAI,UAAU,GAAG,6BAA6B,CAAC;IAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,KAAK,YAAY;QAC9B,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;QACnC,OAAQ,CAAC,CAAC,OAAkC,EAAE,QAAQ,KAAK,QAAQ,CACtE,CAAC;IACF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAI,YAAY,CAAC,OAAgC,CAAC,QAAQ,CAAC;QACzE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,gFAAgF;IAChF,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC;IAEvD,mEAAmE;IACnE,sEAAsE;IACtE,sCAAsC;IACtC,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CACvD,CAAC;IAEF,IAAI,CAAC,wBAAwB;QAAE,OAAO,QAAQ,CAAC;IAE/C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,KAAK,MAAM;QACxB,CAAC,CAAC,MAAM,KAAK,WAAW;QACxB,CAAC,CAAC,SAAS,KAAK,IAAI;QACpB,CAAC,CAAC,SAAS,IAAI,SAAS,CAC3B,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,gCAAgC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,yCAAyC,UAAU,GAAG,IAAI,IAAI;YAClI,QAAQ,EAAE,QAAQ,CAAC,oBAAoB;YACvC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,cAAc,EAAE,eAAe,CAAC,oBAAoB;SACrD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,OAAgB,EAAE,QAAmB;IAChE,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI;YAAE,SAAS;QAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CACnE,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAClE,CAAC;QAEF,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,SAAS;QAEpC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAC9D,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CACnE,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,WAAW,OAAO,CAAC,SAAS,iBAAiB,OAAO,CAAC,aAAa,0FAA0F;gBACzK,QAAQ,EAAE,QAAQ,CAAC,eAAe;gBAClC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC3C,cAAc,EAAE,eAAe,CAAC,eAAe;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,MAAe;IAC9C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB;YAAE,SAAS;QAEjF,MAAM,OAAO,GAAG,KAAK,CAAC,OAA+B,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAE/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE,4CAA4C,MAAM,oDAAoD,KAAK,CAAC,SAAS,GAAG;gBACrI,QAAQ,EAAE,QAAQ,CAAC,mBAAmB;gBACtC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,cAAc,EAAE,eAAe,CAAC,mBAAmB;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,MAAe;IAC5C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,kBAAkB;YAAE,SAAS;QAElF,uEAAuE;QACvE,MAAM,OAAO,GAAG,MAAM;aACnB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,MAAM;aACxB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QAErE,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,6BAA6B,KAAK,CAAC,EAAE,oHAAoH,KAAK,CAAC,SAAS,GAAG;gBACxL,QAAQ,EAAE,QAAQ,CAAC,gBAAgB;gBACnC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,cAAc,EAAE,eAAe,CAAC,gBAAgB;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GAAgC;IACrD,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IACnF,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACxF,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACxF,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACzE,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACxD,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAC1D,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;CAC/C,CAAC;AAEF,SAAS,+BAA+B,CAAC,MAAe;IACtD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,mDAAmD;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,oBAAoB,CACrE,CAAC;IAEF,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,SAAS,GAAiB,IAAI,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAA+B,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAE/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAElF,IAAI,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC9C,MAAM,OAAO,GAA4B,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACvE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,6BAA6B;oBACnC,WAAW,EAAE,qCAAqC,UAAU,SAAS,MAAM,oDAAoD,KAAK,CAAC,SAAS,GAAG;oBACjJ,QAAQ,EAAE,QAAQ,CAAC,2BAA2B;oBAC9C,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;oBAClC,cAAc,EAAE,eAAe,CAAC,2BAA2B;iBAC5D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,UAAU,GAAG,MAAM,CAAC;QACpB,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,MAAM;IACN,UAAU;IACV,cAAc;IACd,iBAAiB;IACjB,gBAAgB;CACjB,CAAC,CAAC;AAEH,SAAS,wBAAwB,CAAC,MAAe;IAC/C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,+BAA+B;YAAE,SAAS;QAE/F,MAAM,OAAO,GAAG,KAAK,CAAC,OAA+B,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAE/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,0DAA0D;YAC1D,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBAC9D,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EAAE,0DAA0D,MAAM,iBAAiB,KAAK,CAAC,SAAS,GAAG;oBAChH,QAAQ,EAAE,QAAQ,CAAC,mBAAmB;oBACtC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,cAAc,EAAE,eAAe,CAAC,mBAAmB;iBACpD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,wBAAwB;CACzB,CAAC,CAAC;AAEH,SAAS,2BAA2B,CAAC,MAAe;IAClD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,4BAA4B;YAAE,SAAS;QAE5F,MAAM,OAAO,GAAG,KAAK,CAAC,OAA+B,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAE/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxE,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,yBAAyB;gBAC/B,WAAW,EAAE,uDAAuD,MAAM,iBAAiB,KAAK,CAAC,SAAS,GAAG;gBAC7G,QAAQ,EAAE,QAAQ,CAAC,uBAAuB;gBAC1C,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,cAAc,EAAE,eAAe,CAAC,uBAAuB;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -82,6 +82,12 @@ export declare const fixtures: {
|
|
|
82
82
|
status: string;
|
|
83
83
|
};
|
|
84
84
|
})[];
|
|
85
|
+
} | {
|
|
86
|
+
timestamp: string;
|
|
87
|
+
direction: string;
|
|
88
|
+
message: (string | number | {
|
|
89
|
+
currentTime: string;
|
|
90
|
+
})[];
|
|
85
91
|
} | {
|
|
86
92
|
timestamp: string;
|
|
87
93
|
direction: string;
|
|
@@ -249,6 +255,12 @@ export declare const fixtures: {
|
|
|
249
255
|
status: string;
|
|
250
256
|
};
|
|
251
257
|
})[];
|
|
258
|
+
} | {
|
|
259
|
+
timestamp: string;
|
|
260
|
+
direction: string;
|
|
261
|
+
message: (string | number | {
|
|
262
|
+
currentTime: string;
|
|
263
|
+
})[];
|
|
252
264
|
} | {
|
|
253
265
|
timestamp: string;
|
|
254
266
|
direction: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/fixtures/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAErD,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/fixtures/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAErD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIX,CAAC;AAEX,eAAO,MAAM,YAAY,+DAAgE,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -113,8 +113,8 @@ export interface ParseResult {
|
|
|
113
113
|
}
|
|
114
114
|
/** Severity of a detected failure. */
|
|
115
115
|
export type FailureSeverity = 'critical' | 'warning' | 'info';
|
|
116
|
-
/** Failure rule codes
|
|
117
|
-
export type FailureCode = 'FAILED_AUTHORIZATION' | 'CONNECTOR_FAULT' | 'STATION_OFFLINE_DURING_SESSION';
|
|
116
|
+
/** Failure rule codes. v0.1 codes + v0.2 additions. */
|
|
117
|
+
export type FailureCode = 'FAILED_AUTHORIZATION' | 'CONNECTOR_FAULT' | 'STATION_OFFLINE_DURING_SESSION' | 'TIMEOUT_NO_HEARTBEAT' | 'METER_VALUE_GAP' | 'INVALID_STOP_REASON' | 'UNEXPECTED_START' | 'STATUS_TRANSITION_VIOLATION' | 'DIAGNOSTICS_FAILURE' | 'FIRMWARE_UPDATE_FAILURE';
|
|
118
118
|
/**
|
|
119
119
|
* A detected failure in a trace.
|
|
120
120
|
*/
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;AAM9D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,oDAAoD;IACpD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uCAAuC;IACvC,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,qEAAqE;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gCAAgC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,yBAAyB;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,mFAAmF;IACnF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,UAAU,EAAE,cAAc,CAAC;CAC5B;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAMD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;CAC5C;AAMD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAMD,sCAAsC;AACtC,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* React
|
|
2
|
+
* React components for @ocpp-debugkit/toolkit/react.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* These are presentational components — they accept data as props and
|
|
5
|
+
* render UI. They are SSR-safe (no window/document access at module level).
|
|
6
|
+
* No external CSS framework — uses inline styles for zero-dependency rendering.
|
|
7
7
|
*/
|
|
8
8
|
import type { SessionTimelineProps, MessageInspectorProps, FailureSummaryProps, ReportViewerProps, ReplayControlsProps } from './types.js';
|
|
9
|
-
export declare function SessionTimeline({ events, selectedEventId, onSelectEvent }: SessionTimelineProps):
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
readonly onSelectEvent: ((eventId: string) => void) | undefined;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
export declare function MessageInspector({ event }: MessageInspectorProps): {
|
|
18
|
-
readonly type: "MessageInspector";
|
|
19
|
-
readonly props: {
|
|
20
|
-
readonly event: import("../index.js").Event | null;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
export declare function FailureSummary({ failures }: FailureSummaryProps): {
|
|
24
|
-
readonly type: "FailureSummary";
|
|
25
|
-
readonly props: {
|
|
26
|
-
readonly failures: import("../index.js").Failure[];
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
export declare function ReportViewer({ html }: ReportViewerProps): {
|
|
30
|
-
readonly type: "ReportViewer";
|
|
31
|
-
readonly props: {
|
|
32
|
-
readonly html: string;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
export declare function ReplayControls({ isPlaying, currentIndex, totalEvents, onPlay, onPause, onStep, onStepBack, onJump, speed, onSpeedChange, }: ReplayControlsProps): {
|
|
36
|
-
readonly type: "ReplayControls";
|
|
37
|
-
readonly props: {
|
|
38
|
-
readonly isPlaying: boolean;
|
|
39
|
-
readonly currentIndex: number;
|
|
40
|
-
readonly totalEvents: number;
|
|
41
|
-
readonly onPlay: () => void;
|
|
42
|
-
readonly onPause: () => void;
|
|
43
|
-
readonly onStep: () => void;
|
|
44
|
-
readonly onStepBack: () => void;
|
|
45
|
-
readonly onJump: (index: number) => void;
|
|
46
|
-
readonly speed: number | undefined;
|
|
47
|
-
readonly onSpeedChange: ((speed: number) => void) | undefined;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
9
|
+
export declare function SessionTimeline({ events, selectedEventId, onSelectEvent }: SessionTimelineProps): import("react").JSX.Element;
|
|
10
|
+
export declare function MessageInspector({ event }: MessageInspectorProps): import("react").JSX.Element;
|
|
11
|
+
export declare function FailureSummary({ failures }: FailureSummaryProps): import("react").JSX.Element;
|
|
12
|
+
export declare function ReportViewer({ html }: ReportViewerProps): import("react").JSX.Element;
|
|
13
|
+
export declare function ReplayControls({ isPlaying, currentIndex, totalEvents, onPlay, onPause, onStep, onStepBack, onJump, speed, onSpeedChange, }: ReplayControlsProps): import("react").JSX.Element;
|
|
50
14
|
//# sourceMappingURL=components.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/react/components.
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/react/components.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAkFpB,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,oBAAoB,+BAgC/F;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,+BAsDhE;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,+BA2C/D;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,+BAiBvD;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,MAAM,EACN,OAAO,EACP,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,aAAa,GACd,EAAE,mBAAmB,+BA+DrB"}
|