@kar-mi/spirit-vale-tools-combat 3.3.6 → 5.0.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 (72) hide show
  1. package/dist/events/combat-decoding.d.ts +41 -0
  2. package/dist/events/combat-decoding.d.ts.map +1 -0
  3. package/dist/{combat-tracker.d.ts → events/combat-events.d.ts} +29 -112
  4. package/dist/events/combat-events.d.ts.map +1 -0
  5. package/dist/events/damage-observer.d.ts +12 -0
  6. package/dist/events/damage-observer.d.ts.map +1 -0
  7. package/dist/events/decoded-fields.d.ts +5 -0
  8. package/dist/events/decoded-fields.d.ts.map +1 -0
  9. package/dist/events/effect-display.d.ts.map +1 -0
  10. package/dist/events/generated/combat-semantics.d.ts +7 -0
  11. package/dist/events/generated/combat-semantics.d.ts.map +1 -0
  12. package/dist/events/inference/recovery-style.d.ts +5 -0
  13. package/dist/events/inference/recovery-style.d.ts.map +1 -0
  14. package/dist/history/domain.d.ts +1 -1
  15. package/dist/history/domain.d.ts.map +1 -1
  16. package/dist/history/importer.d.ts.map +1 -1
  17. package/dist/history/store.d.ts +8 -4
  18. package/dist/history/store.d.ts.map +1 -1
  19. package/dist/index.d.ts +26 -20
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1057 -613
  22. package/dist/reducers/damage.d.ts +10 -2
  23. package/dist/reducers/damage.d.ts.map +1 -1
  24. package/dist/reducers/meter-group.d.ts +21 -0
  25. package/dist/reducers/meter-group.d.ts.map +1 -0
  26. package/dist/reducers/meter.d.ts +3 -3
  27. package/dist/reducers/meter.d.ts.map +1 -1
  28. package/dist/reducers/rows.d.ts +2 -2
  29. package/dist/reducers/rows.d.ts.map +1 -1
  30. package/dist/{snapshot.d.ts → reducers/snapshot.d.ts} +16 -10
  31. package/dist/reducers/snapshot.d.ts.map +1 -0
  32. package/dist/{live-log.d.ts → replay/live-log.d.ts} +4 -3
  33. package/dist/replay/live-log.d.ts.map +1 -0
  34. package/dist/{replay-capture.d.ts → replay/replay-capture.d.ts} +4 -7
  35. package/dist/replay/replay-capture.d.ts.map +1 -0
  36. package/dist/replay/replay-summary.d.ts.map +1 -0
  37. package/dist/{replay.d.ts → replay/replay.d.ts} +4 -4
  38. package/dist/replay/replay.d.ts.map +1 -0
  39. package/dist/{live-combat.d.ts → runtime/live-combat.d.ts} +6 -7
  40. package/dist/runtime/live-combat.d.ts.map +1 -0
  41. package/dist/testing/combat-packets.d.ts +28 -0
  42. package/dist/testing/combat-packets.d.ts.map +1 -0
  43. package/dist/{actor-directory.d.ts → tracking/actor-directory.d.ts} +18 -0
  44. package/dist/tracking/actor-directory.d.ts.map +1 -0
  45. package/dist/tracking/boss-catalog.d.ts +4 -0
  46. package/dist/tracking/boss-catalog.d.ts.map +1 -0
  47. package/dist/tracking/combat-tracker.d.ts +76 -0
  48. package/dist/tracking/combat-tracker.d.ts.map +1 -0
  49. package/dist/tracking/monster-identity.d.ts +32 -0
  50. package/dist/tracking/monster-identity.d.ts.map +1 -0
  51. package/dist/tracking/position-tracker.d.ts.map +1 -0
  52. package/dist/{status-tracker.d.ts → tracking/status-tracker.d.ts} +1 -1
  53. package/dist/tracking/status-tracker.d.ts.map +1 -0
  54. package/dist/tracking/summon-tracker.d.ts +47 -0
  55. package/dist/tracking/summon-tracker.d.ts.map +1 -0
  56. package/package.json +6 -6
  57. package/dist/actor-directory.d.ts.map +0 -1
  58. package/dist/boss-catalog.d.ts +0 -6
  59. package/dist/boss-catalog.d.ts.map +0 -1
  60. package/dist/combat-tracker.d.ts.map +0 -1
  61. package/dist/effect-display.d.ts.map +0 -1
  62. package/dist/live-combat.d.ts.map +0 -1
  63. package/dist/live-log.d.ts.map +0 -1
  64. package/dist/position-tracker.d.ts.map +0 -1
  65. package/dist/replay-capture.d.ts.map +0 -1
  66. package/dist/replay-summary.d.ts.map +0 -1
  67. package/dist/replay.d.ts.map +0 -1
  68. package/dist/snapshot.d.ts.map +0 -1
  69. package/dist/status-tracker.d.ts.map +0 -1
  70. /package/dist/{effect-display.d.ts → events/effect-display.d.ts} +0 -0
  71. /package/dist/{replay-summary.d.ts → replay/replay-summary.d.ts} +0 -0
  72. /package/dist/{position-tracker.d.ts → tracking/position-tracker.d.ts} +0 -0
@@ -0,0 +1,41 @@
1
+ import type { DecodedFishNetPacket, FishNetDecodedValue, FishNetRpcMap } from "@kar-mi/spirit-vale-tools-capture";
2
+ import type { FishNetCombatMonsterIdentityEvent, FishNetHealingTraits } from "./combat-events.ts";
3
+ export interface SummonCalibrationEntry {
4
+ skillId: string;
5
+ level: number;
6
+ }
7
+ export interface LoginEffectEntry {
8
+ statusId: string;
9
+ level: number;
10
+ remainingSeconds?: number;
11
+ stacks: number;
12
+ }
13
+ export interface BondSyncEntry {
14
+ otherId: number;
15
+ skillId: string;
16
+ caster: boolean;
17
+ }
18
+ export interface DamageSource {
19
+ sourceId: string;
20
+ sourceLabel: string;
21
+ }
22
+ export declare function matchesBehaviour(packet: DecodedFishNetPacket, expected: string): boolean;
23
+ export declare function stringField(packet: DecodedFishNetPacket, name: string): string | undefined;
24
+ export declare function requiredNumberField(packet: DecodedFishNetPacket, name: string): number;
25
+ export declare function requiredBooleanField(packet: DecodedFishNetPacket, name: string): boolean;
26
+ export declare function requiredVectorField(packet: DecodedFishNetPacket, name: string): number[];
27
+ export declare function decodedFieldRecord(packet: DecodedFishNetPacket): Record<string, FishNetDecodedValue>;
28
+ export declare function healthComponentIndices(map: FishNetRpcMap | undefined): ReadonlySet<number>;
29
+ export declare function isCompleteRecoverPacket(packet: DecodedFishNetPacket): boolean;
30
+ export declare function damageSignature(tick: number, targetId: number, actorId: number, sourceId: string, value: number, hitCode: number): string;
31
+ export declare function drainRecoverySource(traits: FishNetHealingTraits | undefined): DamageSource;
32
+ export declare function resolveDamageSource(rawSourceId: string | null | undefined, damageType: number, skillLabels: ReadonlyMap<string, string>): DamageSource;
33
+ export declare function uniqueMonsterIdentityEvents(events: FishNetCombatMonsterIdentityEvent[]): FishNetCombatMonsterIdentityEvent[];
34
+ export declare function barrierSyncValues(packet: DecodedFishNetPacket): number[];
35
+ export declare function bondSyncEntries(packet: DecodedFishNetPacket): BondSyncEntry[] | undefined;
36
+ export declare function decodeFloaterSettings(payload: Buffer, start: number): NonNullable<DecodedFishNetPacket["decodedFields"]> | undefined;
37
+ /** Reads only the generated nested-field shape; missing, partial, or trailing data fails closed. */
38
+ export declare function decodedSummonCalibration(packet: DecodedFishNetPacket): SummonCalibrationEntry[] | undefined;
39
+ /** Reads only the generated `State.Effects` nested-field shape; missing, partial, or trailing data fails closed. */
40
+ export declare function decodedLoginEffects(packet: DecodedFishNetPacket): LoginEffectEntry[] | undefined;
41
+ //# sourceMappingURL=combat-decoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combat-decoding.d.ts","sourceRoot":"","sources":["../../src/events/combat-decoding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EAEd,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAElG,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAItF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAIxF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAEpG;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAI1F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAO7E;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,MAAM,CAER;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,GAAG,YAAY,CAQ1F;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,YAAY,CAWd;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iCAAiC,EAAE,GAAG,iCAAiC,EAAE,CAE5H;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAiBxE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,EAAE,GAAG,SAAS,CA6BzF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,GAAG,SAAS,CAkBpI;AAED,oGAAoG;AACpG,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,sBAAsB,EAAE,GAAG,SAAS,CAe3G;AAED,oHAAoH;AACpH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAuBhG"}
@@ -1,5 +1,6 @@
1
- import type { DecodedFishNetPacket, FishNetDecodedValue, FishNetRecoveryStyle, FishNetSemanticMap } from "@kar-mi/spirit-vale-tools-capture";
1
+ import type { FishNetDecodedValue } from "@kar-mi/spirit-vale-tools-capture";
2
2
  import type { FishNetSkillCatalog } from "@kar-mi/spirit-vale-tools-skills";
3
+ import type { FishNetRecoveryStyle } from "./inference/recovery-style.ts";
3
4
  export type FishNetCombatActionKind = "skill" | "basicAttack" | "inferred";
4
5
  export type FishNetCombatActionPhase = "begin" | "complete" | "interrupt" | "cancel" | "inferred";
5
6
  export type FishNetDamageAttribution = "exact" | "ambiguous" | "inferred";
@@ -28,8 +29,6 @@ export interface FishNetCombatTrackerOptions {
28
29
  hitGraceTicks?: number;
29
30
  /** Maximum age of an activation that never completes. Defaults to 900 ticks. */
30
31
  activationMaxAgeTicks?: number;
31
- /** Semantic labels for skill wire identifiers. Defaults to the current bundled build. */
32
- semanticMap?: FishNetSemanticMap;
33
32
  /** Extracted public skill metadata. Defaults to the current bundled build when available. */
34
33
  skillCatalog?: FishNetSkillCatalog;
35
34
  buildFingerprint?: string;
@@ -37,8 +36,6 @@ export interface FishNetCombatTrackerOptions {
37
36
  actorIdentityResolver?: (actorId: number) => FishNetCombatActorIdentity | undefined;
38
37
  /** Resolves healing mechanics for actors whose local character build is visible. */
39
38
  healingTraitsResolver?: (actorId: number) => FishNetHealingTraits | undefined;
40
- /** @deprecated Summon packets now require a verified object id; retained as an unused compatibility option. */
41
- localActorIdResolver?: () => number | undefined;
42
39
  /** Names monsters seen spawning, emitting identity lifecycle events keyed by network object id. */
43
40
  monsterCatalog?: FishNetMonsterCatalog;
44
41
  /** Fallback names for otherwise-anonymous bosses; game-provided identities always win. */
@@ -171,7 +168,7 @@ export interface FishNetCombatSummonEvent {
171
168
  actorIdentity?: FishNetCombatActorIdentity;
172
169
  }
173
170
  /** A `PlayerController.FullHeal_C`, which restores an actor outright. */
174
- interface FishNetCombatFullHealEvent {
171
+ export interface FishNetCombatFullHealEvent {
175
172
  kind: "fullHeal";
176
173
  rpc: "FullHeal_C";
177
174
  tick: number;
@@ -205,110 +202,30 @@ export interface FishNetCombatHealEvent {
205
202
  candidateActivationIds?: string[];
206
203
  actorIdentity?: FishNetCombatActorIdentity;
207
204
  }
208
- export type FishNetCombatEvent = FishNetCombatMonsterIdentityEvent | FishNetCombatActivationEvent | FishNetCombatDamageEvent | FishNetCombatDeathEvent | FishNetCombatStatusEvent | FishNetCombatSummonEvent | FishNetCombatHealEvent | FishNetCombatFullHealEvent;
209
- /** Converts decoded FishNet RPCs into actor-grouped combat events and summaries. */
210
- export declare class FishNetCombatTracker {
211
- private readonly hitGraceTicks;
212
- private readonly activationMaxAgeTicks;
213
- private readonly skillLabels;
214
- private readonly actorIdentityResolver?;
215
- private readonly healingTraitsResolver?;
216
- private readonly monsterCatalog?;
217
- private readonly bossCatalog?;
218
- private readonly monsters?;
219
- private readonly semanticMap?;
220
- private readonly activations;
221
- /** Curated boss names are valid only for the lifetime of their network object id. */
222
- private readonly bossIdentities;
223
- private readonly activeRegenSources;
224
- private readonly summonStacks;
225
- /** Pending `SummonSkillSync`/`SummonerSync` state per summoned object's own network id, until both are known. */
226
- private readonly summonSkillSyncState;
227
- /** Actors for whom a `CalibrateSummons_T` snapshot has been seen; the `SummonSkillSync` fallback stops touching their stacks from then on, since the batch RPC now fully owns them. */
228
- private readonly authoritativeSummonActors;
229
- private readonly recentDamageSignatures;
230
- private recentDamageTick;
231
- private nextActivation;
232
- constructor(options?: FishNetCombatTrackerOptions);
233
- consume(packet: DecodedFishNetPacket): FishNetCombatEvent[];
234
- reset(): void;
235
- private monsterIdentity;
236
- /** Uses the normal monster-identity path so all consumers receive the curated boss name. */
237
- private bossIdentity;
238
- /**
239
- * FishNet may reuse an object id in a later zone. Drop a curated boss name at every object
240
- * lifetime boundary so the next boss cannot inherit the old one's identity before it casts.
241
- */
242
- private bossIdentityLifecycle;
243
- /**
244
- * Turns the observers-facing status broadcast into the same status events as the owner-only
245
- * `ApplyEffect_T`/`RemoveEffect_T` pair.
246
- *
247
- * This feed reports every actor in range rather than just the local player, and it repeats
248
- * periodically instead of only on change, so it both widens coverage and self-heals after a
249
- * dropped packet. It reports real remaining time, which the owner-only path can only approximate
250
- * from the catalog. It carries no level, so the events omit one and consumers keep whatever the
251
- * owner-only feed last reported.
252
- */
253
- private consumeEffectDisplays;
254
- /** Recovers only current-build payloads whose domain codec and component position both agree. */
255
- private recoverAmbiguousCombat;
256
- /**
257
- * Turns the skill-icon display feed into status events.
258
- *
259
- * `ApplySkillDisplay_O`/`RemoveSkillDisplay_O` announce a *skill* shown on an actor - stances and
260
- * auras such as `SilentEdge` that the effect feed does not report. Ids do overlap it in places
261
- * (`FlowState`, `AngelicBlessing` appear on both), and this feed carries no timing at all, so it
262
- * must never overwrite an expiry the effect feed established. `consumeStatus` enforces that by
263
- * keeping a known expiry when an event brings none.
264
- */
265
- private consumeSkillDisplay;
266
- /**
267
- * Login restores whichever effects were active at save time through `PlayerSave.LoadCharacter_T`'s
268
- * own `State.Effects` snapshot - no other packet reports them. Unlike `ApplyEffectDisplays_O`
269
- * (which repeats and self-heals), this fires once per login, so a status it lists that never gets
270
- * an explicit apply afterward would otherwise never appear at all.
271
- */
272
- private consumeLoginEffects;
273
- /**
274
- * Login restores an existing summon through `SummonSkillSync` (a `SummoningComponent` SyncType),
275
- * not `CalibrateSummons_T` - that RPC only fires on a later change, so without this the overlay
276
- * shows nothing for a summon that was already active when the client connected.
277
- *
278
- * `SummonSkillSync` lives on the summoned object's own `SummoningComponent`, not the owner's - the
279
- * packet's `objectId` names the summon (e.g. one skeleton), not the actor to credit. `SummonerSync`,
280
- * a sibling SyncType on that same component, is the owner reference. FishNet sends every dirty
281
- * SyncType on login together, so both usually arrive in the same packet, but not always in the same
282
- * order, and only a change re-sends a SyncType afterward - so `summonSkillSyncState` accumulates
283
- * whichever field arrives first, per summon object, until both are known. Each summon object
284
- * contributes its own +1 once (never more), so two objects reporting the same skill both count -
285
- * this is per-object state, not a "have I seen this skill" flag.
286
- */
287
- private consumeSummonSkillSync;
288
- /**
289
- * Clears a summon object's `SummonSkillSync` bookkeeping on despawn (or a respawn reusing the same
290
- * network object id), so a later reused id starts fresh rather than inheriting a stale owner/skill.
291
- * Also corrects the stack count for an object this tracker itself counted in, unless a
292
- * `CalibrateSummons_T` snapshot has since taken over that actor's stacks (which will correct the
293
- * count on its own).
294
- */
295
- private consumeSummonObjectLifecycle;
296
- /** Adjusts one actor's stack count for one skill by `delta` and reports the resulting total. */
297
- private applySummonDelta;
298
- private consumeSummonCalibration;
299
- /** Diffs one summon snapshot against the actor's last known stacks and emits only the changes. */
300
- private applySummonSnapshot;
301
- private consumeSkill;
302
- private beginAttack;
303
- private consumeDamage;
304
- private consumeRecover;
305
- private createSelfRecovery;
306
- private eligibleHealActivations;
307
- private consumeStatus;
308
- private createActivation;
309
- private findLifecycleActivation;
310
- private eligibleActivations;
311
- private pruneExpired;
205
+ export type FishNetShieldAction = "gained" | "absorbed" | "cleared" | "reduced";
206
+ export interface FishNetCombatShieldEvent {
207
+ kind: "shield";
208
+ rpc: "barrierSync";
209
+ tick: number;
210
+ payloadBytes: number;
211
+ fields: Record<string, FishNetDecodedValue>;
212
+ targetId: number;
213
+ /** The inferred shield applier. Absent when attribution is ambiguous or unavailable. */
214
+ actorId?: number;
215
+ sourceId?: string;
216
+ sourceLabel?: string;
217
+ value: number;
218
+ barrierBefore: number;
219
+ barrierAfter: number;
220
+ action: FishNetShieldAction;
221
+ /** For `absorbed`: the incoming hit that the barrier soaked, when the tick's damage packet was seen first. */
222
+ incomingActorId?: number;
223
+ incomingSourceId?: string;
224
+ incomingSourceLabel?: string;
225
+ attribution: FishNetHealAttribution;
226
+ activationId?: string;
227
+ candidateActivationIds?: string[];
228
+ actorIdentity?: FishNetCombatActorIdentity;
312
229
  }
313
- export {};
314
- //# sourceMappingURL=combat-tracker.d.ts.map
230
+ export type FishNetCombatEvent = FishNetCombatMonsterIdentityEvent | FishNetCombatActivationEvent | FishNetCombatDamageEvent | FishNetCombatDeathEvent | FishNetCombatStatusEvent | FishNetCombatSummonEvent | FishNetCombatHealEvent | FishNetCombatShieldEvent | FishNetCombatFullHealEvent;
231
+ //# sourceMappingURL=combat-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combat-events.d.ts","sourceRoot":"","sources":["../../src/events/combat-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DecodedFishNetPacket } from "@kar-mi/spirit-vale-tools-capture";
2
+ export interface FishNetDamageObservation {
3
+ kind: "damage" | "death";
4
+ tick: number;
5
+ actorId: number;
6
+ targetId: number;
7
+ value: number;
8
+ team: number;
9
+ }
10
+ /** Decodes only the authoritative hit identity needed by consumers that do not need attribution. */
11
+ export declare function observeFishNetDamagePacket(packet: DecodedFishNetPacket): FishNetDamageObservation | undefined;
12
+ //# sourceMappingURL=damage-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"damage-observer.d.ts","sourceRoot":"","sources":["../../src/events/damage-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG9E,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,wBAAwB,GAAG,SAAS,CAuB7G"}
@@ -0,0 +1,5 @@
1
+ import type { DecodedFishNetPacket, FishNetDecodedValue } from "@kar-mi/spirit-vale-tools-capture";
2
+ export declare function field(packet: DecodedFishNetPacket, name: string): FishNetDecodedValue | undefined;
3
+ export declare function numberField(packet: DecodedFishNetPacket, name: string): number | undefined;
4
+ export declare function nullableStringField(packet: DecodedFishNetPacket, name: string): string | null | undefined;
5
+ //# sourceMappingURL=decoded-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoded-fields.d.ts","sourceRoot":"","sources":["../../src/events/decoded-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAEnG,wBAAgB,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEjG;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAGzG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-display.d.ts","sourceRoot":"","sources":["../../src/events/effect-display.ts"],"names":[],"mappings":"AAGA,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CA2C/E"}
@@ -0,0 +1,7 @@
1
+ /** AUTO-GENERATED by scripts/generate-combat-semantics.ts. Do not hand-edit. */
2
+ export declare const COMBAT_SEMANTICS_BUILD_FINGERPRINT = "53305f369c4176d4b7644d06ad7f0cdc5c9bda6563144d0ce8cff3d12c520158";
3
+ export declare const DIRECT_HEALING_SKILL_IDS: Set<string>;
4
+ export declare const REGENERATION_SKILL_IDS: Set<string>;
5
+ export declare const BARRIER_SKILL_IDS: Set<string>;
6
+ export declare const BARRIER_STATUS_IDS: Set<string>;
7
+ //# sourceMappingURL=combat-semantics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combat-semantics.d.ts","sourceRoot":"","sources":["../../../src/events/generated/combat-semantics.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,kCAAkC,qEAAqE,CAAC;AACrH,eAAO,MAAM,wBAAwB,aAMnC,CAAC;AACH,eAAO,MAAM,sBAAsB,aAKjC,CAAC;AACH,eAAO,MAAM,iBAAiB,aAI5B,CAAC;AACH,eAAO,MAAM,kBAAkB,aAK7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { DecodedFishNetPacket } from "@kar-mi/spirit-vale-tools-capture";
2
+ export type FishNetRecoveryStyle = "standard" | "passive-regeneration" | "drain" | "unknown";
3
+ /** Classifies the generated, structurally decoded FloaterSettings on HealthComponent.Recover_C. */
4
+ export declare function classifyFishNetRecoveryStyle(packet: Pick<DecodedFishNetPacket, "networkBehaviourType" | "rpcName" | "decodedFields">): FishNetRecoveryStyle;
5
+ //# sourceMappingURL=recovery-style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-style.d.ts","sourceRoot":"","sources":["../../../src/events/inference/recovery-style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7F,mGAAmG;AACnG,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,sBAAsB,GAAG,SAAS,GAAG,eAAe,CAAC,GACvF,oBAAoB,CAatB"}
@@ -1,6 +1,6 @@
1
1
  import type { ReadModelDomain } from "@kar-mi/spirit-vale-tools-sqlite";
2
2
  /** Bump whenever the tables below change; only combat is dropped and re-indexed. */
3
- export declare const COMBAT_DOMAIN_VERSION = 7;
3
+ export declare const COMBAT_DOMAIN_VERSION = 8;
4
4
  export declare const COMBAT_DOMAIN_NAME = "combat";
5
5
  export declare function createCombatDomain(): ReadModelDomain;
6
6
  //# sourceMappingURL=domain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/history/domain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AA0J3C,wBAAgB,kBAAkB,IAAI,eAAe,CAwBpD"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/history/domain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AA8J3C,wBAAgB,kBAAkB,IAAI,eAAe,CAwBpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../src/history/importer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,iBAAiB,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAKzG,OAAO,KAAK,EAAkB,oBAAoB,EAAmD,MAAM,uBAAuB,CAAC;AAcnI,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,mBAAmB,CAAC;IAC7G,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,kDAAkD;AAClD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0GvH"}
1
+ {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../src/history/importer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,iBAAiB,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAKzG,OAAO,KAAK,EAAkB,oBAAoB,EAAmD,MAAM,uBAAuB,CAAC;AAWnI,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,mBAAmB,CAAC;IAC7G,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,kDAAkD;AAClD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkGvH"}
@@ -1,5 +1,5 @@
1
1
  import type { ReadModel } from "@kar-mi/spirit-vale-tools-sqlite";
2
- import type { FishNetDpsEncounterSnapshot } from "../snapshot.ts";
2
+ import type { CombatEncounterSnapshot } from "../reducers/snapshot.ts";
3
3
  import type { RenderOptions } from "../reducers/rows.ts";
4
4
  export interface Page<T> {
5
5
  items: T[];
@@ -74,8 +74,12 @@ export declare class CombatHistoryStore {
74
74
  /** Lines of this session's combat log that were not a valid record, across every indexing pass. */
75
75
  invalidLines(sessionId: string): number;
76
76
  listEncounters(query: ListEncountersQuery): Page<CombatEncounterSummary>;
77
- /** Per-attacker, per-enemy, per-skill damage for one encounter, with the enemy picker ordered by first sighting and duplicate monster names disambiguated. */
78
- getEnemyBreakdown(sessionId: string, encounterId: string): CombatEnemyBreakdown;
77
+ /**
78
+ * Per-attacker, per-enemy, per-skill damage for one encounter, with the enemy picker ordered by
79
+ * first sighting and duplicate monster names disambiguated. `meter` selects outgoing party damage
80
+ * (`"dps"`, the default) or incoming damage taken (`"tanked"`).
81
+ */
82
+ getEnemyBreakdown(sessionId: string, encounterId: string, meter?: "dps" | "tanked"): CombatEnemyBreakdown;
79
83
  /** Player deaths, newest first, paged so a long session never loads at once. */
80
84
  getDeathLog(query: DeathLogQuery): Page<CombatDeathRecord>;
81
85
  /**
@@ -84,7 +88,7 @@ export declare class CombatHistoryStore {
84
88
  * Tanked and healing rates divide by the encounter's own duration, taken from the encounter row,
85
89
  * so they stay comparable with the damage figure even when incoming hits span a shorter window.
86
90
  */
87
- getEncounter(sessionId: string, encounterId: string, options?: GetEncounterOptions): FishNetDpsEncounterSnapshot | undefined;
91
+ getEncounter(sessionId: string, encounterId: string, options?: GetEncounterOptions): CombatEncounterSnapshot | undefined;
88
92
  private loadEncounter;
89
93
  }
90
94
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/history/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/history/store.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,20 @@
1
- export { FishNetCombatTracker } from "./combat-tracker.ts";
2
- export { createBossCatalog, CURRENT_BOSS_SKILL_NAMES } from "./boss-catalog.ts";
3
- export { FishNetActorDirectory } from "./actor-directory.ts";
4
- export { FishNetStatusTracker } from "./status-tracker.ts";
5
- export type { FishNetActiveStatus, FishNetStatusTrackerOptions } from "./status-tracker.ts";
6
- export { loadDpsReplay, parseDpsLogRecord } from "./replay.ts";
7
- export type { DpsReplayResult } from "./replay.ts";
8
- export { decodeCombatCaptureJsonLines, replayCombatCapture, replayCombatCaptures } from "./replay-capture.ts";
9
- export type { CombatCaptureReplayOptions, CombatCaptureReplayResult } from "./replay-capture.ts";
10
- export { formatCombatReplaySummary, inspectCombatReplaySummary, readCombatReplaySummary } from "./replay-summary.ts";
11
- export type { CombatReplayInspection, CombatReplaySummary } from "./replay-summary.ts";
1
+ export { FishNetCombatTracker } from "./tracking/combat-tracker.ts";
2
+ export { FishNetMonsterIdentityTracker } from "./tracking/monster-identity.ts";
3
+ export type { FishNetMonsterIdentityTrackerOptions } from "./tracking/monster-identity.ts";
4
+ export { FishNetSummonTracker } from "./tracking/summon-tracker.ts";
5
+ export { observeFishNetDamagePacket } from "./events/damage-observer.ts";
6
+ export type { FishNetDamageObservation } from "./events/damage-observer.ts";
7
+ export type { FishNetRecoveryStyle } from "./events/inference/recovery-style.ts";
8
+ export { createBossCatalog } from "./tracking/boss-catalog.ts";
9
+ export { FishNetActorDirectory } from "./tracking/actor-directory.ts";
10
+ export { FishNetStatusTracker } from "./tracking/status-tracker.ts";
11
+ export type { FishNetActiveStatus, FishNetStatusTrackerOptions } from "./tracking/status-tracker.ts";
12
+ export { loadDpsReplay, parseDpsLogRecord } from "./replay/replay.ts";
13
+ export type { DpsReplayResult } from "./replay/replay.ts";
14
+ export { decodeCombatCaptureJsonLines, replayCombatCapture, replayCombatCaptures } from "./replay/replay-capture.ts";
15
+ export type { CombatCaptureReplayOptions, CombatCaptureReplayResult } from "./replay/replay-capture.ts";
16
+ export { formatCombatReplaySummary, inspectCombatReplaySummary, readCombatReplaySummary } from "./replay/replay-summary.ts";
17
+ export type { CombatReplayInspection, CombatReplaySummary } from "./replay/replay-summary.ts";
12
18
  export { COMBAT_DOMAIN_NAME, COMBAT_DOMAIN_VERSION, createCombatDomain } from "./history/domain.ts";
13
19
  export { indexCombatStream } from "./history/importer.ts";
14
20
  export type { IndexCombatStreamOptions } from "./history/importer.ts";
@@ -18,17 +24,17 @@ export { DamageReducer } from "./reducers/damage.ts";
18
24
  export type { ActorAggregate, CombatIdentity, DamageReducerOptions, EncounterAggregate, EnemySkillStats, SkillAggregate, } from "./reducers/damage.ts";
19
25
  export { MeterReducer } from "./reducers/meter.ts";
20
26
  export type { MeterKind, MeterReducerOptions } from "./reducers/meter.ts";
21
- export { LiveCombatService } from "./live-combat.ts";
22
- export type { CombatEncounterRecord, LiveCombatOptions, LiveCombatState, MeterEncounterSnapshot, MeterRow, } from "./live-combat.ts";
27
+ export { LiveCombatService } from "./runtime/live-combat.ts";
28
+ export type { CombatEncounterRecord, LiveCombatOptions, LiveCombatState, MeterEncounterSnapshot, MeterRow, } from "./runtime/live-combat.ts";
23
29
  export { actorRowId, displayActorAggregates, normalizeName, renderEncounter } from "./reducers/rows.ts";
24
30
  export type { DisplayActorAggregate, DisplayActorOptions, RenderOptions } from "./reducers/rows.ts";
25
31
  export { ANALYSIS_BUCKET_MS } from "./reducers/timeline.ts";
26
32
  export type { BucketSeries, TimelinePoint } from "./reducers/timeline.ts";
27
- export { DpsLogFollower, DpsSessionLogFollower } from "./live-log.ts";
28
- export type { DpsLogBatch, TimedDpsLogEvent } from "./live-log.ts";
29
- export type { FishNetDpsActorRow, FishNetDpsEncounterSnapshot, FishNetDpsSkillRow, FishNetDpsTimelinePoint, FishNetPersonalMatch, } from "./snapshot.ts";
30
- export type { FishNetActorDirectoryOptions, FishNetActorIdentity, FishNetActorIdentityEvent, FishNetActorIdentityRemoveEvent, FishNetActorIdentityResetEvent, FishNetActorIdentityUpsertEvent, FishNetKnownIdentity, FishNetLocalIdentity, } from "./actor-directory.ts";
31
- export type { FishNetCombatActionKind, FishNetCombatActionPhase, FishNetCombatActivationEvent, FishNetCombatDamageEvent, FishNetCombatDeathEvent, FishNetCombatEvent, FishNetCombatHealEvent, FishNetCombatMonsterIdentityEvent, FishNetCombatStatusEvent, FishNetCombatSummonEvent, FishNetCombatTrackerOptions, FishNetDamageAttribution, FishNetBossCatalog, FishNetMonsterCatalog, FishNetHealAttribution, FishNetHealingTraits, FishNetHitResult, } from "./combat-tracker.ts";
32
- export { FishNetPositionTracker } from "./position-tracker.ts";
33
- export type { FishNetPosition, FishNetPositionEvent, FishNetPositionTrackerOptions, } from "./position-tracker.ts";
33
+ export { DpsLogFollower, DpsSessionLogFollower } from "./replay/live-log.ts";
34
+ export type { DpsLogBatch, DpsSessionLogFollowerOptions, TimedDpsLogEvent } from "./replay/live-log.ts";
35
+ export type { CombatActorRow, CombatEncounterSnapshot, CombatPersonalMatch, CombatSkillRow, CombatTimelinePoint, } from "./reducers/snapshot.ts";
36
+ export type { FishNetActorDirectoryOptions, FishNetActorIdentity, FishNetActorIdentityEvent, FishNetActorIdentityRemoveEvent, FishNetActorIdentityResetEvent, FishNetActorIdentityUpsertEvent, FishNetKnownIdentity, FishNetLocalIdentity, } from "./tracking/actor-directory.ts";
37
+ export type { FishNetCombatActionKind, FishNetCombatActionPhase, FishNetCombatActivationEvent, FishNetCombatDamageEvent, FishNetCombatDeathEvent, FishNetCombatEvent, FishNetCombatFullHealEvent, FishNetCombatHealEvent, FishNetCombatShieldEvent, FishNetCombatMonsterIdentityEvent, FishNetCombatStatusEvent, FishNetCombatSummonEvent, FishNetCombatTrackerOptions, FishNetDamageAttribution, FishNetBossCatalog, FishNetMonsterCatalog, FishNetHealAttribution, FishNetHealingTraits, FishNetHitResult, FishNetShieldAction, } from "./events/combat-events.ts";
38
+ export { FishNetPositionTracker } from "./tracking/position-tracker.ts";
39
+ export type { FishNetPosition, FishNetPositionEvent, FishNetPositionTrackerOptions, } from "./tracking/position-tracker.ts";
34
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC9G,YAAY,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACrH,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,IAAI,EACJ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EACV,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxG,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,EACzB,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,iCAAiC,EACjC,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}