t2-demo-parser 2.2.0 → 3.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/README.md +170 -7
- package/dist/BitStream.d.ts +14 -3
- package/dist/BitStream.d.ts.map +1 -1
- package/dist/BitStream.js +28 -6
- package/dist/BitStream.js.map +1 -1
- package/dist/BitWriter.d.ts +29 -0
- package/dist/BitWriter.d.ts.map +1 -0
- package/dist/BitWriter.js +76 -0
- package/dist/BitWriter.js.map +1 -0
- package/dist/ClassRegistry.d.ts +23 -28
- package/dist/ClassRegistry.d.ts.map +1 -1
- package/dist/ClassRegistry.js +75 -84
- package/dist/ClassRegistry.js.map +1 -1
- package/dist/DataBlockParsers.d.ts.map +1 -1
- package/dist/DataBlockParsers.js +51 -76
- package/dist/DataBlockParsers.js.map +1 -1
- package/dist/DemoParser.d.ts +23 -22
- package/dist/DemoParser.d.ts.map +1 -1
- package/dist/DemoParser.js +218 -266
- package/dist/DemoParser.js.map +1 -1
- package/dist/EventParsers.d.ts.map +1 -1
- package/dist/EventParsers.js +87 -58
- package/dist/EventParsers.js.map +1 -1
- package/dist/GhostManager.d.ts +7 -1
- package/dist/GhostManager.d.ts.map +1 -1
- package/dist/GhostManager.js +231 -146
- package/dist/GhostManager.js.map +1 -1
- package/dist/HuffmanProcessor.d.ts +15 -0
- package/dist/HuffmanProcessor.d.ts.map +1 -1
- package/dist/HuffmanProcessor.js +45 -0
- package/dist/HuffmanProcessor.js.map +1 -1
- package/dist/LiveParser.d.ts +20 -1
- package/dist/LiveParser.d.ts.map +1 -1
- package/dist/LiveParser.js +31 -12
- package/dist/LiveParser.js.map +1 -1
- package/dist/PacketParser.d.ts +22 -2
- package/dist/PacketParser.d.ts.map +1 -1
- package/dist/PacketParser.js +111 -48
- package/dist/PacketParser.js.map +1 -1
- package/dist/Timeline.d.ts +5 -2
- package/dist/Timeline.d.ts.map +1 -1
- package/dist/Timeline.js +25 -12
- package/dist/Timeline.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/dataBlockDataTypes.d.ts +111 -112
- package/dist/dataBlockDataTypes.d.ts.map +1 -1
- package/dist/dataBlockDataTypes.js.map +1 -1
- package/dist/defaultRegistry.d.ts +9 -0
- package/dist/defaultRegistry.d.ts.map +1 -0
- package/dist/defaultRegistry.js +43 -0
- package/dist/defaultRegistry.js.map +1 -0
- package/dist/eventDataTypes.d.ts +74 -72
- package/dist/eventDataTypes.d.ts.map +1 -1
- package/dist/eventDataTypes.js.map +1 -1
- package/dist/ghostDataTypes.d.ts +125 -131
- package/dist/ghostDataTypes.d.ts.map +1 -1
- package/dist/ghostDataTypes.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +51 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -1
- package/package.json +4 -1
- package/dist/BitStream.test.d.ts +0 -2
- package/dist/BitStream.test.d.ts.map +0 -1
- package/dist/BitStream.test.js +0 -419
- package/dist/BitStream.test.js.map +0 -1
- package/dist/ClassRegistry.test.d.ts +0 -2
- package/dist/ClassRegistry.test.d.ts.map +0 -1
- package/dist/ClassRegistry.test.js +0 -83
- package/dist/ClassRegistry.test.js.map +0 -1
- package/dist/DataBlockParsers.test.d.ts +0 -2
- package/dist/DataBlockParsers.test.d.ts.map +0 -1
- package/dist/DataBlockParsers.test.js +0 -294
- package/dist/DataBlockParsers.test.js.map +0 -1
- package/dist/DemoParser.test.d.ts +0 -2
- package/dist/DemoParser.test.d.ts.map +0 -1
- package/dist/DemoParser.test.js +0 -472
- package/dist/DemoParser.test.js.map +0 -1
- package/dist/GhostStateAccumulator.test.d.ts +0 -2
- package/dist/GhostStateAccumulator.test.d.ts.map +0 -1
- package/dist/GhostStateAccumulator.test.js +0 -201
- package/dist/GhostStateAccumulator.test.js.map +0 -1
- package/dist/GhostTracker.test.d.ts +0 -2
- package/dist/GhostTracker.test.d.ts.map +0 -1
- package/dist/GhostTracker.test.js +0 -64
- package/dist/GhostTracker.test.js.map +0 -1
- package/dist/IncrementalParser.test.d.ts +0 -2
- package/dist/IncrementalParser.test.d.ts.map +0 -1
- package/dist/IncrementalParser.test.js +0 -226
- package/dist/IncrementalParser.test.js.map +0 -1
package/dist/DemoParser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PacketParser } from "./PacketParser.js";
|
|
2
|
-
import { ClassRegistry } from "./ClassRegistry.js";
|
|
2
|
+
import type { ClassRegistry } from "./ClassRegistry.js";
|
|
3
3
|
import { GhostTracker } from "./GhostManager.js";
|
|
4
4
|
import type { DemoHeader, DemoFile, DemoBlock, InitialBlockData, LoadResult } from "./types.js";
|
|
5
5
|
export declare class DemoParser {
|
|
@@ -30,8 +30,19 @@ export declare class DemoParser {
|
|
|
30
30
|
private _decompressedLength;
|
|
31
31
|
private _scanOffset;
|
|
32
32
|
private _bufferedMoveTicks;
|
|
33
|
+
private readonly _ignoreProtocolVersion;
|
|
34
|
+
private readonly _haltOnFault;
|
|
33
35
|
constructor(buffer: Uint8Array, options?: {
|
|
36
|
+
/** Feed the compressed block stream in chunks via push()/finish(). */
|
|
34
37
|
incremental?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Parse demos whose protocol version differs from build 25034's
|
|
40
|
+
* (0x330004). The game itself refuses to play them, and the block
|
|
41
|
+
* formats are not guaranteed to match, so expect faults.
|
|
42
|
+
*/
|
|
43
|
+
ignoreProtocolVersion?: boolean;
|
|
44
|
+
/** Passed to PacketParser; see its `haltOnFault` option. */
|
|
45
|
+
haltOnFault?: boolean;
|
|
35
46
|
});
|
|
36
47
|
getRegistry(): ClassRegistry;
|
|
37
48
|
getGhostTracker(): GhostTracker;
|
|
@@ -40,6 +51,12 @@ export declare class DemoParser {
|
|
|
40
51
|
get header(): DemoHeader;
|
|
41
52
|
get initialBlock(): InitialBlockData;
|
|
42
53
|
get blockCount(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Walk complete block headers from byte offset `from`, calling `visit`
|
|
56
|
+
* for each; returns the offset of the first incomplete block (or the
|
|
57
|
+
* end of the data).
|
|
58
|
+
*/
|
|
59
|
+
private _walkBlockHeaders;
|
|
43
60
|
get blockCursor(): number;
|
|
44
61
|
/**
|
|
45
62
|
* Async load: parses header, initial block (DataBlocks, events,
|
|
@@ -127,6 +144,11 @@ export declare class DemoParser {
|
|
|
127
144
|
* Full parse: async load + drain all blocks.
|
|
128
145
|
*/
|
|
129
146
|
parseFullDemo(): Promise<DemoFile>;
|
|
147
|
+
/**
|
|
148
|
+
* Read and validate the header the way GameConnection's demo playback
|
|
149
|
+
* does: the ident string must match and the protocol version must be
|
|
150
|
+
* the one this build speaks (unless `ignoreProtocolVersion` is set).
|
|
151
|
+
*/
|
|
130
152
|
private readHeader;
|
|
131
153
|
/** Parse the initial block: DataBlocks, scores, targets, connection state,
|
|
132
154
|
* events, ghosts, control object, and mission name. */
|
|
@@ -172,27 +194,6 @@ export declare class DemoParser {
|
|
|
172
194
|
private readConnectionProtocol;
|
|
173
195
|
private readEventStartBlock;
|
|
174
196
|
private readGhostStartBlock;
|
|
175
|
-
/**
|
|
176
|
-
* Try parsing a ghost with a given parser and validate alignment.
|
|
177
|
-
* Returns true if parsing succeeded and alignment is valid.
|
|
178
|
-
* On success, the BitStream is positioned after the parsed ghost data.
|
|
179
|
-
* On failure, the BitStream is restored to updateBitsStart.
|
|
180
|
-
*/
|
|
181
|
-
private tryGhostParser;
|
|
182
|
-
/**
|
|
183
|
-
* Peek at the GameBase DataBlock prefix to identify a ghost's parser.
|
|
184
|
-
* GameBase subclass ghost creates always start with:
|
|
185
|
-
* flag(1b) + if flag: DataBlockId(11b)
|
|
186
|
-
* The DataBlock type (e.g., "PlayerData") maps to the ghost parser
|
|
187
|
-
* (e.g., "Player") by stripping the "Data" suffix.
|
|
188
|
-
*
|
|
189
|
-
* Returns { entry, dbFlag } where entry is the parser (if found) and
|
|
190
|
-
* dbFlag indicates whether the first bit was 1 (DataBlock flag set).
|
|
191
|
-
* In the initial block (mask=0xFFFFFFFF), dbFlag=false means the ghost
|
|
192
|
-
* is definitely NOT a GameBase subclass.
|
|
193
|
-
* The BitStream position is always restored after peeking.
|
|
194
|
-
*/
|
|
195
|
-
private identifyGhostViaDataBlock;
|
|
196
197
|
/**
|
|
197
198
|
* Parse a raw 64-byte Move struct from a type 2 block.
|
|
198
199
|
*
|
package/dist/DemoParser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DemoParser.d.ts","sourceRoot":"","sources":["../src/DemoParser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"DemoParser.d.ts","sourceRoot":"","sources":["../src/DemoParser.ts"],"names":[],"mappings":"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"}
|