@bimetal/devtools 0.15.10 → 0.16.7
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/.tsbuildinfo +1 -1
- package/dist/causation-forest.d.ts +60 -0
- package/dist/causation-forest.d.ts.map +1 -0
- package/dist/causation-forest.js +191 -0
- package/dist/causation-forest.js.map +1 -0
- package/dist/index.d.ts +50 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -7
- package/dist/index.js.map +1 -1
- package/dist/inspectable-json.d.ts +71 -0
- package/dist/inspectable-json.d.ts.map +1 -0
- package/dist/inspectable-json.js +225 -0
- package/dist/inspectable-json.js.map +1 -0
- package/dist/observed-bridge.d.ts +71 -0
- package/dist/observed-bridge.d.ts.map +1 -0
- package/dist/observed-bridge.js +165 -0
- package/dist/observed-bridge.js.map +1 -0
- package/dist/observed-helpers.d.ts +88 -0
- package/dist/observed-helpers.d.ts.map +1 -0
- package/dist/observed-helpers.js +76 -0
- package/dist/observed-helpers.js.map +1 -0
- package/dist/registry.d.ts +42 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +84 -0
- package/dist/registry.js.map +1 -1
- package/dist/replay-engine.d.ts +128 -0
- package/dist/replay-engine.d.ts.map +1 -0
- package/dist/replay-engine.js +199 -0
- package/dist/replay-engine.js.map +1 -0
- package/dist/snapshot-export.d.ts +73 -0
- package/dist/snapshot-export.d.ts.map +1 -0
- package/dist/snapshot-export.js +119 -0
- package/dist/snapshot-export.js.map +1 -0
- package/dist/time-travel.d.ts +62 -0
- package/dist/time-travel.d.ts.map +1 -0
- package/dist/time-travel.js +140 -0
- package/dist/time-travel.js.map +1 -0
- package/dist/types.d.ts +121 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `createTimeTravelController` — ephemerer Controller, baut View-State zu
|
|
3
|
+
* einer beliebigen Stream-Version (v0.16.2 Sub 3).
|
|
4
|
+
*
|
|
5
|
+
* Architektur-Verträge aus `design/calendar/16-replay-target-architecture.md`:
|
|
6
|
+
* - **Eigene Subscribe-Seite**, NICHT im `DevtoolsState`-Snapshot — Slider-
|
|
7
|
+
* Bewegungen churchen nicht die Always-On-Listener im Inspector.
|
|
8
|
+
* - **Pure Fold-Kern wiederverwendet**: nutzt `foldEvents` aus
|
|
9
|
+
* `replay-engine.ts`, KEINE eigene Engine. Live-Engine + Controller
|
|
10
|
+
* produzieren bit-identische Snapshots (Sub 1 verriegelt).
|
|
11
|
+
* - **Stale-Cancel via running-counter**: schnelle Slider-Drags droppen
|
|
12
|
+
* ältere `goTo`-Resolves silently.
|
|
13
|
+
* - **Kein Range-Read**: `eventStore.read(streamId)` komplett, filter
|
|
14
|
+
* via `event.envelope.version <= targetVersion`. Optimierung erst mit
|
|
15
|
+
* Snapshot-Reuse-Slice.
|
|
16
|
+
* - **dispose-safe**: alle Methoden silent no-op nach dispose.
|
|
17
|
+
* - **`view.status` ist eigenständig** ('idle' | 'loading' | 'ready' | 'error')
|
|
18
|
+
* — getrennt von `view.snapshot.status` (das ist der Fold-Status:
|
|
19
|
+
* 'replaying' / 'live' / 'error'). UI nimmt `view.status` für den
|
|
20
|
+
* Controller-Zustand, nicht den geschachtelten Snapshot-Status.
|
|
21
|
+
*/
|
|
22
|
+
import { createInitialSnapshot, foldEvents, } from './replay-engine.js';
|
|
23
|
+
import { jsonDiff } from './inspectable-json.js';
|
|
24
|
+
export function createTimeTravelController(handle) {
|
|
25
|
+
let runningCounter = 0;
|
|
26
|
+
let disposed = false;
|
|
27
|
+
let view = {
|
|
28
|
+
status: 'idle',
|
|
29
|
+
cursor: 0,
|
|
30
|
+
snapshot: createInitialSnapshot(handle.aggregate, handle.projection),
|
|
31
|
+
maxVersion: 0,
|
|
32
|
+
};
|
|
33
|
+
const listeners = new Set();
|
|
34
|
+
function invalidate() {
|
|
35
|
+
for (const l of listeners) {
|
|
36
|
+
try {
|
|
37
|
+
l();
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
// eslint-disable-next-line no-console
|
|
41
|
+
console.error('[@bimetal/devtools] TimeTravelController listener threw:', err);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function setView(next) {
|
|
46
|
+
view = next;
|
|
47
|
+
invalidate();
|
|
48
|
+
}
|
|
49
|
+
async function readAll() {
|
|
50
|
+
// Pilot-Verriegelung: kein `fromVersion`-Argument, kein Range-Read.
|
|
51
|
+
// Stream komplett lesen, danach filtern.
|
|
52
|
+
return handle.eventStore.read(handle.streamId);
|
|
53
|
+
}
|
|
54
|
+
function foldUpTo(events, targetVersion) {
|
|
55
|
+
const filtered = events.filter(e => e.envelope.version <= targetVersion);
|
|
56
|
+
return foldEvents(filtered, handle.aggregate, handle.projection, createInitialSnapshot(handle.aggregate, handle.projection));
|
|
57
|
+
}
|
|
58
|
+
async function goTo(version) {
|
|
59
|
+
if (disposed)
|
|
60
|
+
return;
|
|
61
|
+
const myCounter = ++runningCounter;
|
|
62
|
+
setView({ ...view, status: 'loading', lastError: undefined });
|
|
63
|
+
let events;
|
|
64
|
+
try {
|
|
65
|
+
events = await readAll();
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (myCounter !== runningCounter || disposed)
|
|
69
|
+
return;
|
|
70
|
+
setView({
|
|
71
|
+
...view,
|
|
72
|
+
status: 'error',
|
|
73
|
+
lastError: error instanceof Error ? error : new Error(String(error)),
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (myCounter !== runningCounter || disposed)
|
|
78
|
+
return;
|
|
79
|
+
const folded = foldUpTo(events, version);
|
|
80
|
+
if (myCounter !== runningCounter || disposed)
|
|
81
|
+
return;
|
|
82
|
+
const maxVersion = events.length > 0 ? events[events.length - 1].envelope.version : 0;
|
|
83
|
+
setView({
|
|
84
|
+
status: 'ready',
|
|
85
|
+
cursor: version,
|
|
86
|
+
snapshot: folded,
|
|
87
|
+
maxVersion,
|
|
88
|
+
lastError: undefined,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async function diff(compareToVersion) {
|
|
92
|
+
if (disposed)
|
|
93
|
+
return [];
|
|
94
|
+
let events;
|
|
95
|
+
try {
|
|
96
|
+
events = await readAll();
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Read-Failure beim Diff: leer zurück. UI kann das nicht
|
|
100
|
+
// unterscheiden von „kein Diff", aber das ist OK — wenn Storage
|
|
101
|
+
// weg ist, ist Time-Travel ohnehin nicht sinnvoll, und der
|
|
102
|
+
// `goTo`-Pfad propagiert den Fehler in `view.status='error'`.
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
if (disposed)
|
|
106
|
+
return [];
|
|
107
|
+
const currentSnap = view.snapshot;
|
|
108
|
+
if (compareToVersion === undefined) {
|
|
109
|
+
// Default: gegen Live — Frage „was kommt seit Cursor noch dazu":
|
|
110
|
+
// current → live.
|
|
111
|
+
const liveSnap = foldEvents(events, handle.aggregate, handle.projection, createInitialSnapshot(handle.aggregate, handle.projection));
|
|
112
|
+
return jsonDiff(currentSnap.state, liveSnap.state);
|
|
113
|
+
}
|
|
114
|
+
// compareToVersion (typisch cursor-1 für Previous-Toggle) — Frage
|
|
115
|
+
// „was hat Event v_k bewirkt": previous → current. Sonst wären
|
|
116
|
+
// added/removed im Previous-Modus invertiert.
|
|
117
|
+
const compareSnap = foldUpTo(events, compareToVersion);
|
|
118
|
+
return jsonDiff(compareSnap.state, currentSnap.state);
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
get view() {
|
|
122
|
+
return view;
|
|
123
|
+
},
|
|
124
|
+
subscribe(listener) {
|
|
125
|
+
listeners.add(listener);
|
|
126
|
+
return () => {
|
|
127
|
+
listeners.delete(listener);
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
goTo,
|
|
131
|
+
diff,
|
|
132
|
+
dispose() {
|
|
133
|
+
if (disposed)
|
|
134
|
+
return;
|
|
135
|
+
disposed = true;
|
|
136
|
+
listeners.clear();
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=time-travel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-travel.js","sourceRoot":"","sources":["../src/time-travel.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -93,6 +93,121 @@ export interface CapturedSyncRecord {
|
|
|
93
93
|
kind: `sync-${string}`;
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Strukturelles Interface für ein Publish-Target (Broker-API-Slice).
|
|
98
|
+
* Analog zu `PublishTarget` aus `@bimetal/event-sourcing/broker-bridge`,
|
|
99
|
+
* aber lokal in devtools deklariert — keine zirkulare Import-Beziehung.
|
|
100
|
+
*/
|
|
101
|
+
export interface PublishTargetLike<TMessage = DomainEvent> {
|
|
102
|
+
publish(topic: string, message: TMessage): Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* v0.16.4 produziert nur 'event-store-to-broker'. Spätere Slices
|
|
106
|
+
* erweitern die Union explizit per eigener Slice.
|
|
107
|
+
* Pilot-Schärfung 2026-06-09: kein freies `string` als Public-Type.
|
|
108
|
+
*/
|
|
109
|
+
export type BridgeKind = 'event-store-to-broker';
|
|
110
|
+
export interface BridgeEndpoint {
|
|
111
|
+
readonly label: string;
|
|
112
|
+
/** Optional: wenn der Endpoint ein registrierter EventStore ist, dessen id. */
|
|
113
|
+
readonly storeId?: string;
|
|
114
|
+
}
|
|
115
|
+
export type BridgeRecord = BridgeEventForwardedRecord | BridgePublishErrorRecord;
|
|
116
|
+
export interface BridgeEventForwardedRecord {
|
|
117
|
+
readonly kind: 'bridge-event-forwarded';
|
|
118
|
+
readonly topic: string;
|
|
119
|
+
readonly event: DomainEvent;
|
|
120
|
+
}
|
|
121
|
+
export interface BridgePublishErrorRecord {
|
|
122
|
+
readonly kind: 'bridge-publish-error';
|
|
123
|
+
readonly topic: string;
|
|
124
|
+
readonly event: DomainEvent;
|
|
125
|
+
readonly error: {
|
|
126
|
+
readonly message: string;
|
|
127
|
+
readonly stack?: string;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Bridge-spezifische Diagnostics-Source in devtools — NICHT der
|
|
132
|
+
* generische `DiagnosticsSource` aus `@bimetal/event-sourcing`.
|
|
133
|
+
* Begründung: `DiagnosticsRecord` ist dort eine geschlossene Union,
|
|
134
|
+
* `bridge-*`-Kinds dort einzufügen würde event-sourcing mit Bridge-
|
|
135
|
+
* Konzepten verschmutzen (Boundary-Verletzung).
|
|
136
|
+
*/
|
|
137
|
+
export interface BridgeDiagnosticsSource {
|
|
138
|
+
subscribe(listener: (record: BridgeRecord) => void): Unsubscribe;
|
|
139
|
+
}
|
|
140
|
+
export interface BridgeDiagnosticsSink {
|
|
141
|
+
emit(record: BridgeRecord): void;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Handle für `registerBridge`. `diagnostics` ist Pflicht — die Bridge
|
|
145
|
+
* muss observable sein, sonst ist die Registrierung sinnlos.
|
|
146
|
+
*/
|
|
147
|
+
export interface BridgeHandle {
|
|
148
|
+
readonly id: string;
|
|
149
|
+
readonly name: string;
|
|
150
|
+
readonly kind: BridgeKind;
|
|
151
|
+
readonly source: BridgeEndpoint;
|
|
152
|
+
readonly target: BridgeEndpoint;
|
|
153
|
+
readonly diagnostics: BridgeDiagnosticsSource;
|
|
154
|
+
}
|
|
155
|
+
export interface RegisteredBridge {
|
|
156
|
+
readonly id: string;
|
|
157
|
+
readonly name: string;
|
|
158
|
+
readonly kind: BridgeKind;
|
|
159
|
+
readonly source: BridgeEndpoint;
|
|
160
|
+
readonly target: BridgeEndpoint;
|
|
161
|
+
}
|
|
162
|
+
export interface CapturedBridgeRecord {
|
|
163
|
+
/** Monotonic capture sequence — global across all bridges + record kinds. */
|
|
164
|
+
readonly seq: number;
|
|
165
|
+
readonly bridgeId: string;
|
|
166
|
+
readonly bridgeName: string;
|
|
167
|
+
/** Wall-clock timestamp at capture time (ms epoch). */
|
|
168
|
+
readonly capturedAt: number;
|
|
169
|
+
readonly record: BridgeRecord;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* RegisteredReplayTarget — public Sicht eines registrierten Targets im
|
|
173
|
+
* `DevtoolsState`. Trägt den aktuellen `ReplayEngineSnapshot` mit, damit
|
|
174
|
+
* UI-Konsumenten ohne separate Engine-Subscription rendern können.
|
|
175
|
+
*
|
|
176
|
+
* `snapshot` ist `unknown` typisiert, weil der Registry-Vertrag
|
|
177
|
+
* heterogene Targets verwaltet (verschiedene Aggregate-State-Formen).
|
|
178
|
+
* Konkrete Konsumenten castten auf ihren bekannten Typ.
|
|
179
|
+
*/
|
|
180
|
+
export interface RegisteredReplayTarget {
|
|
181
|
+
readonly id: string;
|
|
182
|
+
readonly name: string;
|
|
183
|
+
readonly streamId: string;
|
|
184
|
+
/**
|
|
185
|
+
* `projection.version` aus dem Handle (v0.16.1). UI vergleicht das mit
|
|
186
|
+
* `snapshot.lastAppliedSchemaVersion` — Drift macht der Inspector
|
|
187
|
+
* sichtbar. Im Architektur-Doc §v0.16-Leitplanke 6 verriegelt.
|
|
188
|
+
*/
|
|
189
|
+
readonly projectionVersion: number;
|
|
190
|
+
readonly snapshot: ReplayEngineSnapshotErased;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Type-erased Snapshot für die Registry-Sicht. Identisch zur generischen
|
|
194
|
+
* `ReplayEngineSnapshot<unknown, unknown>` aus `replay-engine.ts`, hier
|
|
195
|
+
* separat deklariert um zirkulare Type-Importe zu vermeiden (types.ts
|
|
196
|
+
* darf nicht von replay-engine.ts abhängen).
|
|
197
|
+
*/
|
|
198
|
+
export interface ReplayEngineSnapshotErased {
|
|
199
|
+
readonly state: unknown;
|
|
200
|
+
readonly readModel: unknown;
|
|
201
|
+
readonly lastAppliedVersion: number;
|
|
202
|
+
readonly status: 'replaying' | 'live' | 'error';
|
|
203
|
+
readonly lastError?: {
|
|
204
|
+
readonly event: DomainEvent | null;
|
|
205
|
+
readonly error: Error;
|
|
206
|
+
};
|
|
207
|
+
readonly lastAppliedEventId?: string;
|
|
208
|
+
readonly lastAppliedSchemaVersion?: number;
|
|
209
|
+
readonly blockedEventCount: number;
|
|
210
|
+
}
|
|
96
211
|
/**
|
|
97
212
|
* Live, read-only snapshot of what the devtools sees right now.
|
|
98
213
|
* Lists registered stores + transports, plus die rolling buffers für
|
|
@@ -108,5 +223,11 @@ export interface DevtoolsState {
|
|
|
108
223
|
readonly events: readonly CapturedEvent[];
|
|
109
224
|
readonly syncTransports: readonly RegisteredSyncTransport[];
|
|
110
225
|
readonly syncRecords: readonly CapturedSyncRecord[];
|
|
226
|
+
/** Registered ReplayTargets mit aktuellem Engine-Snapshot (v0.16.0). */
|
|
227
|
+
readonly replayTargets: readonly RegisteredReplayTarget[];
|
|
228
|
+
/** Registered Bridges (v0.16.4). */
|
|
229
|
+
readonly bridges: readonly RegisteredBridge[];
|
|
230
|
+
/** Rolling-window an Bridge-Records (v0.16.4). */
|
|
231
|
+
readonly bridgeRecords: readonly CapturedBridgeRecord[];
|
|
111
232
|
}
|
|
112
233
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,0CAA0C;AAC1C,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACrE,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;CAClF;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,WAAW,CAAC;CACvE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG;QAAE,IAAI,EAAE,QAAQ,MAAM,EAAE,CAAA;KAAE,CAAC;CACjE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC5D,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bimetal/devtools",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.7",
|
|
4
4
|
"description": "Event-Debugger primitives (v0.14). Framework-agnostic registry + diagnostics-source for auditing event-sourced systems. Zero hard dependencies on @bimetal/broker or any domain package — structural interfaces only.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prepublishOnly": "npm run build"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@bimetal/event-sourcing": "^0.
|
|
28
|
+
"@bimetal/event-sourcing": "^0.16.7"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"vitest": "^3.2.1"
|