tf-logparser 0.1.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.
@@ -0,0 +1,3 @@
1
+ export { parseLog } from "./parser.js";
2
+ export type { TfLogEvent, Player } from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { parseLog } from "./parser.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TfLogEvent } from "./types.js";
2
+ export declare function parseLog(rawText: string): TfLogEvent[];
3
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CActD"}
package/dist/parser.js ADDED
@@ -0,0 +1,18 @@
1
+ import { parse } from "./generated/tf2-parser.js";
2
+ export function parseLog(rawText) {
3
+ const lines = rawText.split("\n").filter((line) => line.length > 0);
4
+ return lines.map((line) => {
5
+ try {
6
+ return parse(line);
7
+ }
8
+ catch {
9
+ return {
10
+ type: "unknown",
11
+ timestamp: Date.now(),
12
+ raw: line,
13
+ body: line,
14
+ };
15
+ }
16
+ });
17
+ }
18
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElD,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,IAAI,CAAe,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,IAAI,EAAE,SAAkB;gBACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,GAAG,EAAE,IAAI;gBACT,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TfLogEvent } from "./types.js";
2
+ export declare const validateTfLogEvent: import("ajv").ValidateFunction<TfLogEvent>;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAmEV,UAAU,EAEX,MAAM,YAAY,CAAC;AA+vBpB,eAAO,MAAM,kBAAkB,4CAA4C,CAAC"}
package/dist/schema.js ADDED
@@ -0,0 +1,429 @@
1
+ import Ajv from "ajv";
2
+ const ajv = new Ajv({ discriminator: true });
3
+ // ─── Shared definitions ──────────────────────────────────
4
+ const playerSchema = {
5
+ type: "object",
6
+ properties: {
7
+ name: { type: "string" },
8
+ entityId: { type: "integer" },
9
+ steamId: { type: "string" },
10
+ team: { type: "string" },
11
+ },
12
+ required: ["name", "entityId", "steamId", "team"],
13
+ additionalProperties: false,
14
+ };
15
+ const T = "string";
16
+ const N = "number";
17
+ const I = "integer";
18
+ const B = "boolean";
19
+ /** Build a single event sub-schema with base fields baked in. */
20
+ function eventSchema(typeConst, props, required) {
21
+ return {
22
+ type: "object",
23
+ properties: {
24
+ timestamp: { type: N },
25
+ raw: { type: T },
26
+ type: { type: T, const: typeConst },
27
+ ...props,
28
+ },
29
+ required: ["timestamp", "raw", "type", ...required],
30
+ additionalProperties: false,
31
+ };
32
+ }
33
+ // ─── Player-triggered events ─────────────────────────────
34
+ const changedRoleSchema = eventSchema("changedRole", {
35
+ player: playerSchema,
36
+ role: { type: T },
37
+ }, ["player", "role"]);
38
+ const damageSchema = eventSchema("damage", {
39
+ player: playerSchema,
40
+ victim: playerSchema,
41
+ damage: { type: I },
42
+ realdamage: { type: I, nullable: true },
43
+ weapon: { type: T },
44
+ crit: { type: T, enum: ["crit", "mini"], nullable: true },
45
+ headshot: { type: B, nullable: true },
46
+ airshot: { type: B, nullable: true },
47
+ height: { type: I, nullable: true },
48
+ healing: { type: I, nullable: true },
49
+ }, ["player", "victim", "damage", "weapon"]);
50
+ const shotFiredSchema = eventSchema("shotFired", {
51
+ player: playerSchema,
52
+ weapon: { type: T },
53
+ }, ["player", "weapon"]);
54
+ const shotHitSchema = eventSchema("shotHit", {
55
+ player: playerSchema,
56
+ weapon: { type: T },
57
+ }, ["player", "weapon"]);
58
+ const pickedUpItemSchema = eventSchema("pickedUpItem", {
59
+ player: playerSchema,
60
+ item: { type: T },
61
+ healing: { type: I, nullable: true },
62
+ }, ["player", "item"]);
63
+ const killSchema = eventSchema("kill", {
64
+ player: playerSchema,
65
+ victim: playerSchema,
66
+ weapon: { type: T },
67
+ customkill: { type: T, nullable: true },
68
+ attackerPosition: { type: T },
69
+ victimPosition: { type: T },
70
+ }, ["player", "victim", "weapon", "attackerPosition", "victimPosition"]);
71
+ const medicDeathSchema = eventSchema("medicDeath", {
72
+ player: playerSchema,
73
+ victim: playerSchema,
74
+ healing: { type: I },
75
+ ubercharge: { type: I },
76
+ }, ["player", "victim", "healing", "ubercharge"]);
77
+ const medicDeathExSchema = eventSchema("medicDeathEx", {
78
+ player: playerSchema,
79
+ uberpct: { type: I },
80
+ }, ["player", "uberpct"]);
81
+ const spawnedSchema = eventSchema("spawned", {
82
+ player: playerSchema,
83
+ role: { type: T },
84
+ }, ["player", "role"]);
85
+ const healedSchema = eventSchema("healed", {
86
+ player: playerSchema,
87
+ target: playerSchema,
88
+ healing: { type: I },
89
+ airshot: { type: B, nullable: true },
90
+ height: { type: I, nullable: true },
91
+ }, ["player", "target", "healing"]);
92
+ const emptyUberSchema = eventSchema("emptyUber", {
93
+ player: playerSchema,
94
+ }, ["player"]);
95
+ const chargeReadySchema = eventSchema("chargeReady", {
96
+ player: playerSchema,
97
+ }, ["player"]);
98
+ const chargeDeployedSchema = eventSchema("chargeDeployed", {
99
+ player: playerSchema,
100
+ medigun: { type: T },
101
+ }, ["player", "medigun"]);
102
+ const chargeEndedSchema = eventSchema("chargeEnded", {
103
+ player: playerSchema,
104
+ duration: { type: N },
105
+ }, ["player", "duration"]);
106
+ const firstHealAfterSpawnSchema = eventSchema("firstHealAfterSpawn", {
107
+ player: playerSchema,
108
+ time: { type: N },
109
+ }, ["player", "time"]);
110
+ const killAssistSchema = eventSchema("killAssist", {
111
+ player: playerSchema,
112
+ victim: playerSchema,
113
+ assisterPosition: { type: T },
114
+ attackerPosition: { type: T },
115
+ victimPosition: { type: T },
116
+ }, [
117
+ "player",
118
+ "victim",
119
+ "assisterPosition",
120
+ "attackerPosition",
121
+ "victimPosition",
122
+ ]);
123
+ const dominationSchema = eventSchema("domination", {
124
+ player: playerSchema,
125
+ victim: playerSchema,
126
+ assist: { type: B, nullable: true },
127
+ }, ["player", "victim"]);
128
+ const revengeSchema = eventSchema("revenge", {
129
+ player: playerSchema,
130
+ victim: playerSchema,
131
+ assist: { type: B, nullable: true },
132
+ }, ["player", "victim"]);
133
+ const captureBlockedSchema = eventSchema("captureBlocked", {
134
+ player: playerSchema,
135
+ cp: { type: I },
136
+ cpname: { type: T },
137
+ position: { type: T },
138
+ }, ["player", "cp", "cpname", "position"]);
139
+ const killedObjectSchema = eventSchema("killedObject", {
140
+ player: playerSchema,
141
+ object: { type: T },
142
+ weapon: { type: T },
143
+ objectowner: { type: T },
144
+ attackerPosition: { type: T },
145
+ assist: { type: B, nullable: true },
146
+ assisterPosition: { type: T, nullable: true },
147
+ }, ["player", "object", "weapon", "objectowner", "attackerPosition"]);
148
+ const playerBuiltObjectSchema = eventSchema("playerBuiltObject", {
149
+ player: playerSchema,
150
+ object: { type: T },
151
+ position: { type: T },
152
+ }, ["player", "object", "position"]);
153
+ const objectDetonatedSchema = eventSchema("objectDetonated", {
154
+ player: playerSchema,
155
+ object: { type: T },
156
+ position: { type: T },
157
+ }, ["player", "object", "position"]);
158
+ const playerCarryObjectSchema = eventSchema("playerCarryObject", {
159
+ player: playerSchema,
160
+ object: { type: T },
161
+ position: { type: T },
162
+ }, ["player", "object", "position"]);
163
+ const playerDropObjectSchema = eventSchema("playerDropObject", {
164
+ player: playerSchema,
165
+ object: { type: T },
166
+ position: { type: T },
167
+ }, ["player", "object", "position"]);
168
+ const playerExtinguishedSchema = eventSchema("playerExtinguished", {
169
+ player: playerSchema,
170
+ victim: playerSchema,
171
+ weapon: { type: T },
172
+ attackerPosition: { type: T },
173
+ victimPosition: { type: T },
174
+ }, ["player", "victim", "weapon", "attackerPosition", "victimPosition"]);
175
+ const lostUberAdvantageSchema = eventSchema("lostUberAdvantage", {
176
+ player: playerSchema,
177
+ time: { type: I },
178
+ }, ["player", "time"]);
179
+ // ─── Chat events ─────────────────────────────────────────
180
+ const saySchema = eventSchema("say", {
181
+ player: playerSchema,
182
+ message: { type: T },
183
+ }, ["player", "message"]);
184
+ const sayTeamSchema = eventSchema("sayTeam", {
185
+ player: playerSchema,
186
+ message: { type: T },
187
+ }, ["player", "message"]);
188
+ // ─── Non-triggered player events ─────────────────────────
189
+ const suicideSchema = eventSchema("suicide", {
190
+ player: playerSchema,
191
+ weapon: { type: T },
192
+ attackerPosition: { type: T },
193
+ }, ["player", "weapon", "attackerPosition"]);
194
+ const positionReportSchema = eventSchema("positionReport", {
195
+ player: playerSchema,
196
+ position: { type: T },
197
+ }, ["player", "position"]);
198
+ const joinedTeamSchema = eventSchema("joinedTeam", {
199
+ player: playerSchema,
200
+ newTeam: { type: T },
201
+ }, ["player", "newTeam"]);
202
+ const connectedSchema = eventSchema("connected", {
203
+ player: playerSchema,
204
+ address: { type: T },
205
+ }, ["player", "address"]);
206
+ const enteredGameSchema = eventSchema("enteredGame", {
207
+ player: playerSchema,
208
+ }, ["player"]);
209
+ const changedNameSchema = eventSchema("changedName", {
210
+ player: playerSchema,
211
+ newName: { type: T },
212
+ }, ["player", "newName"]);
213
+ // ─── World / round events ────────────────────────────────
214
+ const roundStartSchema = eventSchema("roundStart", {}, []);
215
+ const roundSetupBeginSchema = eventSchema("roundSetupBegin", {}, []);
216
+ const roundSetupEndSchema = eventSchema("roundSetupEnd", {}, []);
217
+ const roundOvertimeSchema = eventSchema("roundOvertime", {}, []);
218
+ const roundWinSchema = eventSchema("roundWin", {
219
+ winner: { type: T },
220
+ }, ["winner"]);
221
+ const roundLengthSchema = eventSchema("roundLength", {
222
+ seconds: { type: N },
223
+ }, ["seconds"]);
224
+ const gameOverSchema = eventSchema("gameOver", {
225
+ reason: { type: T },
226
+ }, ["reason"]);
227
+ // ─── Team events ─────────────────────────────────────────
228
+ const pointCapturedSchema = eventSchema("pointCaptured", {
229
+ team: { type: T },
230
+ cp: { type: I },
231
+ cpname: { type: T },
232
+ numcappers: { type: I },
233
+ players: {
234
+ type: "array",
235
+ items: {
236
+ type: "object",
237
+ properties: {
238
+ player: { type: T },
239
+ position: { type: T },
240
+ },
241
+ required: ["player", "position"],
242
+ additionalProperties: false,
243
+ },
244
+ },
245
+ }, ["team", "cp", "cpname", "numcappers", "players"]);
246
+ const currentScoreSchema = eventSchema("currentScore", {
247
+ team: { type: T },
248
+ score: { type: I },
249
+ numPlayers: { type: I },
250
+ }, ["team", "score", "numPlayers"]);
251
+ const finalScoreSchema = eventSchema("finalScore", {
252
+ team: { type: T },
253
+ score: { type: I },
254
+ numPlayers: { type: I },
255
+ }, ["team", "score", "numPlayers"]);
256
+ const intermissionWinLimitSchema = eventSchema("intermissionWinLimit", {
257
+ team: { type: T },
258
+ }, ["team"]);
259
+ // ─── Pause events ────────────────────────────────────────
260
+ const matchPauseSchema = eventSchema("matchPause", {
261
+ player: playerSchema,
262
+ }, ["player"]);
263
+ const matchUnpauseSchema = eventSchema("matchUnpause", {
264
+ player: playerSchema,
265
+ }, ["player"]);
266
+ const gamePausedSchema = eventSchema("gamePaused", {}, []);
267
+ const gameUnpausedSchema = eventSchema("gameUnpaused", {}, []);
268
+ const pauseLengthSchema = eventSchema("pauseLength", {
269
+ seconds: { type: N },
270
+ }, ["seconds"]);
271
+ // ─── Passtime events ─────────────────────────────────────
272
+ const passGetSchema = eventSchema("passGet", {
273
+ player: playerSchema,
274
+ firstcontact: { type: B },
275
+ position: { type: T },
276
+ }, ["player", "firstcontact", "position"]);
277
+ const passFreeSchema = eventSchema("passFree", {
278
+ player: playerSchema,
279
+ position: { type: T },
280
+ }, ["player", "position"]);
281
+ const passPassCaughtSchema = eventSchema("passPassCaught", {
282
+ player: playerSchema,
283
+ target: playerSchema,
284
+ interception: { type: B },
285
+ save: { type: B },
286
+ handoff: { type: B },
287
+ dist: { type: N },
288
+ duration: { type: N },
289
+ throwerPosition: { type: T },
290
+ catcherPosition: { type: T },
291
+ }, [
292
+ "player",
293
+ "target",
294
+ "interception",
295
+ "save",
296
+ "handoff",
297
+ "dist",
298
+ "duration",
299
+ "throwerPosition",
300
+ "catcherPosition",
301
+ ]);
302
+ const passScoreSchema = eventSchema("passScore", {
303
+ player: playerSchema,
304
+ points: { type: I },
305
+ panacea: { type: B },
306
+ winStrat: { type: B },
307
+ deathbomb: { type: B },
308
+ dist: { type: N },
309
+ position: { type: T },
310
+ }, ["player", "points", "panacea", "winStrat", "deathbomb", "dist", "position"]);
311
+ const passScoreAssistSchema = eventSchema("passScoreAssist", {
312
+ player: playerSchema,
313
+ position: { type: T },
314
+ }, ["player", "position"]);
315
+ const passBallStolenSchema = eventSchema("passBallStolen", {
316
+ player: playerSchema,
317
+ victim: playerSchema,
318
+ stealDefense: { type: B },
319
+ thiefPosition: { type: T },
320
+ victimPosition: { type: T },
321
+ }, ["player", "victim", "stealDefense", "thiefPosition", "victimPosition"]);
322
+ const catapultSchema = eventSchema("catapult", {
323
+ player: playerSchema,
324
+ catapult: { type: T },
325
+ position: { type: T },
326
+ }, ["player", "catapult", "position"]);
327
+ const passtimeBallSpawnedSchema = eventSchema("passtimeBallSpawned", {
328
+ location: { type: T },
329
+ }, ["location"]);
330
+ const passtimeBallDamageSchema = eventSchema("passtimeBallDamage", {
331
+ details: { type: T },
332
+ }, ["details"]);
333
+ const panaceaCheckSchema = eventSchema("panaceaCheck", {
334
+ details: { type: T },
335
+ }, ["details"]);
336
+ // ─── System / plugin events ──────────────────────────────
337
+ const demosTfSchema = eventSchema("demosTf", {
338
+ message: { type: T },
339
+ }, ["message"]);
340
+ const printingForClientSchema = eventSchema("printingForClient", {
341
+ client: { type: I },
342
+ }, ["client"]);
343
+ // ─── Spawn / name variants ───────────────────────────────
344
+ const spawnedMFilterSchema = eventSchema("spawnedMFilter", {
345
+ player: playerSchema,
346
+ role: { type: T, nullable: true },
347
+ }, ["player"]);
348
+ const chargedMFilterSchema = eventSchema("chargedMFilter", {
349
+ player: playerSchema,
350
+ role: { type: T },
351
+ }, ["player", "role"]);
352
+ // ─── Fallback ────────────────────────────────────────────
353
+ const unknownSchema = eventSchema("unknown", {
354
+ body: { type: T },
355
+ }, ["body"]);
356
+ // ─── Combined schema ─────────────────────────────────────
357
+ const tfLogEventSchema = {
358
+ type: "object",
359
+ discriminator: { propertyName: "type" },
360
+ oneOf: [
361
+ changedRoleSchema,
362
+ damageSchema,
363
+ shotFiredSchema,
364
+ shotHitSchema,
365
+ pickedUpItemSchema,
366
+ killSchema,
367
+ medicDeathSchema,
368
+ medicDeathExSchema,
369
+ spawnedSchema,
370
+ roundStartSchema,
371
+ roundSetupBeginSchema,
372
+ roundSetupEndSchema,
373
+ roundWinSchema,
374
+ roundLengthSchema,
375
+ roundOvertimeSchema,
376
+ gameOverSchema,
377
+ emptyUberSchema,
378
+ healedSchema,
379
+ saySchema,
380
+ sayTeamSchema,
381
+ killAssistSchema,
382
+ playerBuiltObjectSchema,
383
+ pointCapturedSchema,
384
+ currentScoreSchema,
385
+ finalScoreSchema,
386
+ suicideSchema,
387
+ positionReportSchema,
388
+ demosTfSchema,
389
+ chargeReadySchema,
390
+ chargeDeployedSchema,
391
+ chargeEndedSchema,
392
+ firstHealAfterSpawnSchema,
393
+ dominationSchema,
394
+ revengeSchema,
395
+ captureBlockedSchema,
396
+ killedObjectSchema,
397
+ objectDetonatedSchema,
398
+ playerCarryObjectSchema,
399
+ playerDropObjectSchema,
400
+ playerExtinguishedSchema,
401
+ lostUberAdvantageSchema,
402
+ joinedTeamSchema,
403
+ connectedSchema,
404
+ enteredGameSchema,
405
+ matchPauseSchema,
406
+ matchUnpauseSchema,
407
+ gamePausedSchema,
408
+ gameUnpausedSchema,
409
+ pauseLengthSchema,
410
+ passGetSchema,
411
+ passFreeSchema,
412
+ passPassCaughtSchema,
413
+ passScoreSchema,
414
+ passScoreAssistSchema,
415
+ passBallStolenSchema,
416
+ catapultSchema,
417
+ passtimeBallSpawnedSchema,
418
+ passtimeBallDamageSchema,
419
+ panaceaCheckSchema,
420
+ printingForClientSchema,
421
+ spawnedMFilterSchema,
422
+ chargedMFilterSchema,
423
+ changedNameSchema,
424
+ intermissionWinLimitSchema,
425
+ unknownSchema,
426
+ ],
427
+ };
428
+ export const validateTfLogEvent = ajv.compile(tfLogEventSchema);
429
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}