t2-demo-parser 1.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.
- package/LICENSE +21 -0
- package/README.md +823 -0
- package/dist/BitStream.d.ts +143 -0
- package/dist/BitStream.d.ts.map +1 -0
- package/dist/BitStream.js +369 -0
- package/dist/BitStream.js.map +1 -0
- package/dist/BitStream.test.d.ts +2 -0
- package/dist/BitStream.test.d.ts.map +1 -0
- package/dist/BitStream.test.js +419 -0
- package/dist/BitStream.test.js.map +1 -0
- package/dist/ClassRegistry.d.ts +100 -0
- package/dist/ClassRegistry.d.ts.map +1 -0
- package/dist/ClassRegistry.js +118 -0
- package/dist/ClassRegistry.js.map +1 -0
- package/dist/ClassRegistry.test.d.ts +2 -0
- package/dist/ClassRegistry.test.d.ts.map +1 -0
- package/dist/ClassRegistry.test.js +83 -0
- package/dist/ClassRegistry.test.js.map +1 -0
- package/dist/DataBlockParsers.d.ts +3 -0
- package/dist/DataBlockParsers.d.ts.map +1 -0
- package/dist/DataBlockParsers.js +2041 -0
- package/dist/DataBlockParsers.js.map +1 -0
- package/dist/DemoParser.d.ts +155 -0
- package/dist/DemoParser.d.ts.map +1 -0
- package/dist/DemoParser.js +943 -0
- package/dist/DemoParser.js.map +1 -0
- package/dist/DemoParser.test.d.ts +2 -0
- package/dist/DemoParser.test.d.ts.map +1 -0
- package/dist/DemoParser.test.js +472 -0
- package/dist/DemoParser.test.js.map +1 -0
- package/dist/EventParsers.d.ts +3 -0
- package/dist/EventParsers.d.ts.map +1 -0
- package/dist/EventParsers.js +603 -0
- package/dist/EventParsers.js.map +1 -0
- package/dist/GhostManager.d.ts +13 -0
- package/dist/GhostManager.d.ts.map +1 -0
- package/dist/GhostManager.js +2002 -0
- package/dist/GhostManager.js.map +1 -0
- package/dist/GhostTracker.test.d.ts +2 -0
- package/dist/GhostTracker.test.d.ts.map +1 -0
- package/dist/GhostTracker.test.js +64 -0
- package/dist/GhostTracker.test.js.map +1 -0
- package/dist/HuffmanProcessor.d.ts +12 -0
- package/dist/HuffmanProcessor.d.ts.map +1 -0
- package/dist/HuffmanProcessor.js +163 -0
- package/dist/HuffmanProcessor.js.map +1 -0
- package/dist/LiveParser.d.ts +16 -0
- package/dist/LiveParser.d.ts.map +1 -0
- package/dist/LiveParser.js +29 -0
- package/dist/LiveParser.js.map +1 -0
- package/dist/PacketParser.d.ts +104 -0
- package/dist/PacketParser.d.ts.map +1 -0
- package/dist/PacketParser.js +713 -0
- package/dist/PacketParser.js.map +1 -0
- package/dist/Timeline.d.ts +101 -0
- package/dist/Timeline.d.ts.map +1 -0
- package/dist/Timeline.js +251 -0
- package/dist/Timeline.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +372 -0
- package/dist/cli.js.map +1 -0
- package/dist/dataBlockDataTypes.d.ts +877 -0
- package/dist/dataBlockDataTypes.d.ts.map +1 -0
- package/dist/dataBlockDataTypes.js +2 -0
- package/dist/dataBlockDataTypes.js.map +1 -0
- package/dist/dataTypes.d.ts +31 -0
- package/dist/dataTypes.d.ts.map +1 -0
- package/dist/dataTypes.js +5 -0
- package/dist/dataTypes.js.map +1 -0
- package/dist/dump.d.ts +3 -0
- package/dist/dump.d.ts.map +1 -0
- package/dist/dump.js +36 -0
- package/dist/dump.js.map +1 -0
- package/dist/eventDataTypes.d.ts +199 -0
- package/dist/eventDataTypes.d.ts.map +1 -0
- package/dist/eventDataTypes.js +2 -0
- package/dist/eventDataTypes.js.map +1 -0
- package/dist/ghostDataTypes.d.ts +573 -0
- package/dist/ghostDataTypes.d.ts.map +1 -0
- package/dist/ghostDataTypes.js +2 -0
- package/dist/ghostDataTypes.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +261 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +204 -0
- package/dist/types.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry mapping classIds to parser functions.
|
|
3
|
+
* ClassIds are assigned deterministically by alphabetical sort (C strcmp)
|
|
4
|
+
* at engine link time. Parsers are cataloged by name and bound to classIds
|
|
5
|
+
* via bindDeterministicGhosts/Events/DataBlocks.
|
|
6
|
+
*/
|
|
7
|
+
export class ClassRegistry {
|
|
8
|
+
eventParsers = new Map();
|
|
9
|
+
ghostParsers = new Map();
|
|
10
|
+
dataBlockParsers = new Map();
|
|
11
|
+
// Named parser catalog (classId-independent)
|
|
12
|
+
eventCatalog = new Map();
|
|
13
|
+
ghostCatalog = new Map();
|
|
14
|
+
dataBlockCatalog = new Map();
|
|
15
|
+
// --- Catalog registration (name → parser, no classId yet) ---
|
|
16
|
+
catalogEvent(entry) {
|
|
17
|
+
this.eventCatalog.set(entry.name, entry);
|
|
18
|
+
}
|
|
19
|
+
catalogGhost(entry) {
|
|
20
|
+
this.ghostCatalog.set(entry.name, entry);
|
|
21
|
+
}
|
|
22
|
+
catalogDataBlock(entry) {
|
|
23
|
+
this.dataBlockCatalog.set(entry.name, entry);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Bind all DataBlock parsers deterministically using the known class name
|
|
27
|
+
* mapping. For each class name in the sorted list, if we have a parser
|
|
28
|
+
* in the catalog, bind it to classId = DataBlockClassFirst + index.
|
|
29
|
+
*/
|
|
30
|
+
bindDeterministicDataBlocks(classNames, classFirst) {
|
|
31
|
+
let bound = 0;
|
|
32
|
+
const missing = [];
|
|
33
|
+
for (let i = 0; i < classNames.length; i++) {
|
|
34
|
+
const name = classNames[i];
|
|
35
|
+
const entry = this.dataBlockCatalog.get(name);
|
|
36
|
+
if (entry) {
|
|
37
|
+
this.dataBlockParsers.set(classFirst + i, entry);
|
|
38
|
+
bound++;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
missing.push(name);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { bound, missing };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Bind all event (NetEvent) parsers deterministically using the known
|
|
48
|
+
* class name mapping. For each class name in the sorted list, if we have
|
|
49
|
+
* a parser in the catalog, bind it to classId = classFirst + index.
|
|
50
|
+
*/
|
|
51
|
+
bindDeterministicEvents(classNames, classFirst) {
|
|
52
|
+
let bound = 0;
|
|
53
|
+
const missing = [];
|
|
54
|
+
for (let i = 0; i < classNames.length; i++) {
|
|
55
|
+
const name = classNames[i];
|
|
56
|
+
const entry = this.eventCatalog.get(name);
|
|
57
|
+
if (entry) {
|
|
58
|
+
this.eventParsers.set(classFirst + i, entry);
|
|
59
|
+
bound++;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
missing.push(name);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { bound, missing };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Bind all ghost (NetObject) parsers deterministically using the known
|
|
69
|
+
* class name mapping. For each class name in the sorted list, if we have
|
|
70
|
+
* a parser in the catalog, bind it to classId = classFirst + index.
|
|
71
|
+
*/
|
|
72
|
+
bindDeterministicGhosts(classNames, classFirst) {
|
|
73
|
+
let bound = 0;
|
|
74
|
+
const missing = [];
|
|
75
|
+
for (let i = 0; i < classNames.length; i++) {
|
|
76
|
+
const name = classNames[i];
|
|
77
|
+
const entry = this.ghostCatalog.get(name);
|
|
78
|
+
if (entry) {
|
|
79
|
+
this.ghostParsers.set(classFirst + i, entry);
|
|
80
|
+
bound++;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
missing.push(name);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { bound, missing };
|
|
87
|
+
}
|
|
88
|
+
// --- Lookup ---
|
|
89
|
+
getEventParser(classId) {
|
|
90
|
+
return this.eventParsers.get(classId);
|
|
91
|
+
}
|
|
92
|
+
getGhostParser(classId) {
|
|
93
|
+
return this.ghostParsers.get(classId);
|
|
94
|
+
}
|
|
95
|
+
getDataBlockParser(classId) {
|
|
96
|
+
return this.dataBlockParsers.get(classId);
|
|
97
|
+
}
|
|
98
|
+
// --- Catalog access ---
|
|
99
|
+
getGhostCatalog() {
|
|
100
|
+
return this.ghostCatalog;
|
|
101
|
+
}
|
|
102
|
+
// --- Debug ---
|
|
103
|
+
getEventBindings() {
|
|
104
|
+
const bindings = new Map();
|
|
105
|
+
for (const [id, entry] of this.eventParsers) {
|
|
106
|
+
bindings.set(id, entry.name);
|
|
107
|
+
}
|
|
108
|
+
return bindings;
|
|
109
|
+
}
|
|
110
|
+
getGhostBindings() {
|
|
111
|
+
const bindings = new Map();
|
|
112
|
+
for (const [id, entry] of this.ghostParsers) {
|
|
113
|
+
bindings.set(id, entry.name);
|
|
114
|
+
}
|
|
115
|
+
return bindings;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=ClassRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassRegistry.js","sourceRoot":"","sources":["../src/ClassRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassRegistry.test.d.ts","sourceRoot":"","sources":["../src/ClassRegistry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { ClassRegistry } from "./ClassRegistry.js";
|
|
3
|
+
/** Stub parser that reads nothing. */
|
|
4
|
+
const stubParser = (bs) => ({});
|
|
5
|
+
describe("ClassRegistry", () => {
|
|
6
|
+
describe("catalog and bind", () => {
|
|
7
|
+
it("catalogs a ghost parser by name", () => {
|
|
8
|
+
const reg = new ClassRegistry();
|
|
9
|
+
reg.catalogGhost({ name: "Player", unpackUpdate: stubParser });
|
|
10
|
+
expect(reg.getGhostCatalog().has("Player")).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
describe("deterministic binding", () => {
|
|
14
|
+
it("binds ghost parsers alphabetically by C strcmp", () => {
|
|
15
|
+
const reg = new ClassRegistry();
|
|
16
|
+
// Register in non-alphabetical order
|
|
17
|
+
reg.catalogGhost({ name: "WheeledVehicle", unpackUpdate: stubParser });
|
|
18
|
+
reg.catalogGhost({ name: "Camera", unpackUpdate: stubParser });
|
|
19
|
+
reg.catalogGhost({ name: "Player", unpackUpdate: stubParser });
|
|
20
|
+
reg.catalogGhost({ name: "AIObjective", unpackUpdate: stubParser });
|
|
21
|
+
// Bind using alphabetically sorted list (C strcmp = case-sensitive ASCII)
|
|
22
|
+
const classNames = [
|
|
23
|
+
"AIObjective",
|
|
24
|
+
"Camera",
|
|
25
|
+
"Player",
|
|
26
|
+
"WheeledVehicle",
|
|
27
|
+
];
|
|
28
|
+
const result = reg.bindDeterministicGhosts(classNames, 0);
|
|
29
|
+
expect(result.bound).toBe(4);
|
|
30
|
+
expect(result.missing).toEqual([]);
|
|
31
|
+
expect(reg.getGhostParser(0)?.name).toBe("AIObjective");
|
|
32
|
+
expect(reg.getGhostParser(1)?.name).toBe("Camera");
|
|
33
|
+
expect(reg.getGhostParser(2)?.name).toBe("Player");
|
|
34
|
+
expect(reg.getGhostParser(3)?.name).toBe("WheeledVehicle");
|
|
35
|
+
});
|
|
36
|
+
it("reports missing parsers", () => {
|
|
37
|
+
const reg = new ClassRegistry();
|
|
38
|
+
reg.catalogGhost({ name: "Player", unpackUpdate: stubParser });
|
|
39
|
+
const classNames = ["Camera", "Player", "Sky"];
|
|
40
|
+
const result = reg.bindDeterministicGhosts(classNames, 0);
|
|
41
|
+
expect(result.bound).toBe(1);
|
|
42
|
+
expect(result.missing).toEqual(["Camera", "Sky"]);
|
|
43
|
+
expect(reg.getGhostParser(0)).toBeUndefined(); // Camera not cataloged
|
|
44
|
+
expect(reg.getGhostParser(1)?.name).toBe("Player");
|
|
45
|
+
expect(reg.getGhostParser(2)).toBeUndefined(); // Sky not cataloged
|
|
46
|
+
});
|
|
47
|
+
it("applies classFirst offset", () => {
|
|
48
|
+
const reg = new ClassRegistry();
|
|
49
|
+
reg.catalogEvent({
|
|
50
|
+
name: "TestEvent",
|
|
51
|
+
unpack: (bs, conn) => ({ type: "TestEvent" }),
|
|
52
|
+
});
|
|
53
|
+
const result = reg.bindDeterministicEvents(["TestEvent"], 255);
|
|
54
|
+
expect(result.bound).toBe(1);
|
|
55
|
+
expect(reg.getEventParser(255)?.name).toBe("TestEvent");
|
|
56
|
+
});
|
|
57
|
+
it("binds DataBlock parsers with offset 128", () => {
|
|
58
|
+
const reg = new ClassRegistry();
|
|
59
|
+
reg.catalogDataBlock({
|
|
60
|
+
name: "AudioDescription",
|
|
61
|
+
unpackData: stubParser,
|
|
62
|
+
});
|
|
63
|
+
reg.catalogDataBlock({
|
|
64
|
+
name: "PlayerData",
|
|
65
|
+
unpackData: stubParser,
|
|
66
|
+
});
|
|
67
|
+
const result = reg.bindDeterministicDataBlocks(["AudioDescription", "PlayerData"], 128);
|
|
68
|
+
expect(result.bound).toBe(2);
|
|
69
|
+
expect(reg.getDataBlockParser(128)?.name).toBe("AudioDescription");
|
|
70
|
+
expect(reg.getDataBlockParser(129)?.name).toBe("PlayerData");
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe("C strcmp sort order", () => {
|
|
74
|
+
it("sorts uppercase before lowercase (ASCII order)", () => {
|
|
75
|
+
// C strcmp sorts by byte value: 'A'=0x41 < 'Z'=0x5A < 'a'=0x61
|
|
76
|
+
// This is critical for matching the Tribes 2 binary's deterministic classIds
|
|
77
|
+
const names = ["Zebra", "apple", "Ant"];
|
|
78
|
+
const sorted = [...names].sort(); // JS default sort is already by code point
|
|
79
|
+
expect(sorted).toEqual(["Ant", "Zebra", "apple"]);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=ClassRegistry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassRegistry.test.js","sourceRoot":"","sources":["../src/ClassRegistry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataBlockParsers.d.ts","sourceRoot":"","sources":["../src/DataBlockParsers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAutExD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CA2NtE"}
|