@lagless/net-wire 0.0.46 → 0.0.50
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/lib/protocol.d.ts +29 -1
- package/dist/lib/protocol.d.ts.map +1 -1
- package/dist/lib/protocol.js +55 -0
- package/dist/lib/protocol.js.map +1 -1
- package/package.json +3 -3
package/dist/lib/protocol.d.ts
CHANGED
|
@@ -10,7 +10,9 @@ export declare const enum MsgType {
|
|
|
10
10
|
StateRequest = 6,
|
|
11
11
|
StateResponse = 7,
|
|
12
12
|
PlayerFinished = 8,
|
|
13
|
-
TickInputBatch = 9
|
|
13
|
+
TickInputBatch = 9,
|
|
14
|
+
HashReport = 10,
|
|
15
|
+
HashMismatch = 11
|
|
14
16
|
}
|
|
15
17
|
export declare const enum TickInputKind {
|
|
16
18
|
Client = 0,
|
|
@@ -74,6 +76,17 @@ export declare const PlayerFinishedSchema: BinarySchema<{
|
|
|
74
76
|
playerSlot: FieldType.Uint8;
|
|
75
77
|
payloadLength: FieldType.Uint16;
|
|
76
78
|
}>;
|
|
79
|
+
export declare const HashReportSchema: BinarySchema<{
|
|
80
|
+
hash: FieldType.Uint32;
|
|
81
|
+
atTick: FieldType.Uint32;
|
|
82
|
+
}>;
|
|
83
|
+
export declare const HashMismatchSchema: BinarySchema<{
|
|
84
|
+
slotA: FieldType.Uint8;
|
|
85
|
+
slotB: FieldType.Uint8;
|
|
86
|
+
hashA: FieldType.Uint32;
|
|
87
|
+
hashB: FieldType.Uint32;
|
|
88
|
+
atTick: FieldType.Uint32;
|
|
89
|
+
}>;
|
|
77
90
|
export interface ServerHelloPlayer {
|
|
78
91
|
readonly playerId: Uint8Array;
|
|
79
92
|
readonly slot: number;
|
|
@@ -122,6 +135,17 @@ export interface PlayerFinishedData {
|
|
|
122
135
|
readonly playerSlot: number;
|
|
123
136
|
readonly payload: Uint8Array;
|
|
124
137
|
}
|
|
138
|
+
export interface HashReportData {
|
|
139
|
+
readonly hash: number;
|
|
140
|
+
readonly atTick: number;
|
|
141
|
+
}
|
|
142
|
+
export interface HashMismatchData {
|
|
143
|
+
readonly slotA: number;
|
|
144
|
+
readonly slotB: number;
|
|
145
|
+
readonly hashA: number;
|
|
146
|
+
readonly hashB: number;
|
|
147
|
+
readonly atTick: number;
|
|
148
|
+
}
|
|
125
149
|
export declare function packServerHello(data: ServerHelloData): Uint8Array;
|
|
126
150
|
export declare function packTickInput(data: TickInputData): Uint8Array;
|
|
127
151
|
export declare function packTickInputFanout(data: FanoutData): Uint8Array;
|
|
@@ -131,6 +155,8 @@ export declare function packPing(cSend: number): Uint8Array;
|
|
|
131
155
|
export declare function packPong(data: PongData): Uint8Array;
|
|
132
156
|
export declare function packStateRequest(requestId: number): Uint8Array;
|
|
133
157
|
export declare function packStateResponse(data: StateResponseData): Uint8Array;
|
|
158
|
+
export declare function packHashReport(data: HashReportData): Uint8Array;
|
|
159
|
+
export declare function packHashMismatch(data: HashMismatchData): Uint8Array;
|
|
134
160
|
export declare function packPlayerFinished(data: PlayerFinishedData): Uint8Array;
|
|
135
161
|
export declare function unpackHeader(data: ArrayBuffer): {
|
|
136
162
|
version: number;
|
|
@@ -144,5 +170,7 @@ export declare function unpackPong(data: ArrayBuffer): PongData;
|
|
|
144
170
|
export declare function unpackStateRequest(data: ArrayBuffer): number;
|
|
145
171
|
export declare function unpackStateResponse(data: ArrayBuffer): StateResponseData;
|
|
146
172
|
export declare function unpackPlayerFinished(data: ArrayBuffer): PlayerFinishedData;
|
|
173
|
+
export declare function unpackHashReport(data: ArrayBuffer): HashReportData;
|
|
174
|
+
export declare function unpackHashMismatch(data: ArrayBuffer): HashMismatchData;
|
|
147
175
|
export declare function unpackTickInputFanout(data: ArrayBuffer): FanoutData;
|
|
148
176
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,SAAS,EAEV,MAAM,iBAAiB,CAAC;AAMzB,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,0BAAkB,OAAO;IACvB,WAAW,IAAS;IACpB,SAAS,IAAW;IACpB,eAAe,IAAK;IACpB,WAAW,IAAS;IACpB,IAAI,IAAgB;IACpB,IAAI,IAAgB;IACpB,YAAY,IAAQ;IACpB,aAAa,IAAO;IACpB,cAAc,IAAM;IACpB,cAAc,IAAM;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/protocol.js
CHANGED
|
@@ -15,6 +15,8 @@ export var MsgType;
|
|
|
15
15
|
MsgType[MsgType["StateResponse"] = 7] = "StateResponse";
|
|
16
16
|
MsgType[MsgType["PlayerFinished"] = 8] = "PlayerFinished";
|
|
17
17
|
MsgType[MsgType["TickInputBatch"] = 9] = "TickInputBatch";
|
|
18
|
+
MsgType[MsgType["HashReport"] = 10] = "HashReport";
|
|
19
|
+
MsgType[MsgType["HashMismatch"] = 11] = "HashMismatch";
|
|
18
20
|
})(MsgType || (MsgType = {}));
|
|
19
21
|
export var TickInputKind;
|
|
20
22
|
(function(TickInputKind) {
|
|
@@ -83,6 +85,17 @@ export const PlayerFinishedSchema = new BinarySchema({
|
|
|
83
85
|
playerSlot: FieldType.Uint8,
|
|
84
86
|
payloadLength: FieldType.Uint16
|
|
85
87
|
});
|
|
88
|
+
export const HashReportSchema = new BinarySchema({
|
|
89
|
+
hash: FieldType.Uint32,
|
|
90
|
+
atTick: FieldType.Uint32
|
|
91
|
+
});
|
|
92
|
+
export const HashMismatchSchema = new BinarySchema({
|
|
93
|
+
slotA: FieldType.Uint8,
|
|
94
|
+
slotB: FieldType.Uint8,
|
|
95
|
+
hashA: FieldType.Uint32,
|
|
96
|
+
hashB: FieldType.Uint32,
|
|
97
|
+
atTick: FieldType.Uint32
|
|
98
|
+
});
|
|
86
99
|
// ─────────────────────────────────────────────────────────────
|
|
87
100
|
// Packing
|
|
88
101
|
// ─────────────────────────────────────────────────────────────
|
|
@@ -222,6 +235,27 @@ export function packStateResponse(data) {
|
|
|
222
235
|
pipeline.appendBuffer(data.state);
|
|
223
236
|
return pipeline.toUint8Array();
|
|
224
237
|
}
|
|
238
|
+
export function packHashReport(data) {
|
|
239
|
+
const pipeline = new BinarySchemaPackPipeline();
|
|
240
|
+
packHeader(pipeline, 10);
|
|
241
|
+
pipeline.pack(HashReportSchema, {
|
|
242
|
+
hash: data.hash,
|
|
243
|
+
atTick: data.atTick
|
|
244
|
+
});
|
|
245
|
+
return pipeline.toUint8Array();
|
|
246
|
+
}
|
|
247
|
+
export function packHashMismatch(data) {
|
|
248
|
+
const pipeline = new BinarySchemaPackPipeline();
|
|
249
|
+
packHeader(pipeline, 11);
|
|
250
|
+
pipeline.pack(HashMismatchSchema, {
|
|
251
|
+
slotA: data.slotA,
|
|
252
|
+
slotB: data.slotB,
|
|
253
|
+
hashA: data.hashA,
|
|
254
|
+
hashB: data.hashB,
|
|
255
|
+
atTick: data.atTick
|
|
256
|
+
});
|
|
257
|
+
return pipeline.toUint8Array();
|
|
258
|
+
}
|
|
225
259
|
export function packPlayerFinished(data) {
|
|
226
260
|
const pipeline = new BinarySchemaPackPipeline();
|
|
227
261
|
packHeader(pipeline, 8);
|
|
@@ -357,6 +391,27 @@ export function unpackPlayerFinished(data) {
|
|
|
357
391
|
payload
|
|
358
392
|
};
|
|
359
393
|
}
|
|
394
|
+
export function unpackHashReport(data) {
|
|
395
|
+
const pipeline = new BinarySchemaUnpackPipeline(data);
|
|
396
|
+
pipeline.unpack(HeaderSchema);
|
|
397
|
+
const report = pipeline.unpack(HashReportSchema);
|
|
398
|
+
return {
|
|
399
|
+
hash: report.hash,
|
|
400
|
+
atTick: report.atTick
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
export function unpackHashMismatch(data) {
|
|
404
|
+
const pipeline = new BinarySchemaUnpackPipeline(data);
|
|
405
|
+
pipeline.unpack(HeaderSchema);
|
|
406
|
+
const mismatch = pipeline.unpack(HashMismatchSchema);
|
|
407
|
+
return {
|
|
408
|
+
slotA: mismatch.slotA,
|
|
409
|
+
slotB: mismatch.slotB,
|
|
410
|
+
hashA: mismatch.hashA,
|
|
411
|
+
hashB: mismatch.hashB,
|
|
412
|
+
atTick: mismatch.atTick
|
|
413
|
+
};
|
|
414
|
+
}
|
|
360
415
|
export function unpackTickInputFanout(data) {
|
|
361
416
|
const view = new DataView(data);
|
|
362
417
|
let offset = HeaderSchema.byteLength; // skip header
|
package/dist/lib/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/protocol.ts"],"sourcesContent":["import {\n BinarySchema,\n BinarySchemaPackPipeline,\n BinarySchemaUnpackPipeline,\n FieldType,\n LE,\n} from '@lagless/binary';\n\n// ─────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────\n\nexport const WIRE_VERSION = 1;\n\nexport const enum MsgType {\n ServerHello = 0,\n TickInput = 1,\n TickInputFanout = 2,\n CancelInput = 3,\n Ping = 4,\n Pong = 5,\n StateRequest = 6,\n StateResponse = 7,\n PlayerFinished = 8,\n TickInputBatch = 9,\n}\n\nexport const enum TickInputKind {\n Client = 0,\n Server = 1,\n}\n\nexport const enum CancelReason {\n TooOld = 0,\n TooFarFuture = 1,\n InvalidSlot = 2,\n}\n\n// ─────────────────────────────────────────────────────────────\n// Schemas\n// ─────────────────────────────────────────────────────────────\n\nexport const HeaderSchema = new BinarySchema({\n version: FieldType.Uint8,\n type: FieldType.Uint8,\n});\n\nexport const ServerHelloSchema = new BinarySchema({\n playerSlot: FieldType.Uint8,\n serverTick: FieldType.Uint32,\n maxPlayers: FieldType.Uint8,\n playerCount: FieldType.Uint8,\n});\n\nexport const TickInputSchema = new BinarySchema({\n tick: FieldType.Uint32,\n playerSlot: FieldType.Uint8,\n seq: FieldType.Uint32,\n kind: FieldType.Uint8,\n payloadLength: FieldType.Uint16,\n});\n\nexport const TickInputFanoutSchema = new BinarySchema({\n serverTick: FieldType.Uint32,\n inputCount: FieldType.Uint8,\n});\n\nexport const TickInputBatchSchema = new BinarySchema({\n inputCount: FieldType.Uint8,\n});\n\nexport const CancelInputSchema = new BinarySchema({\n tick: FieldType.Uint32,\n playerSlot: FieldType.Uint8,\n seq: FieldType.Uint32,\n reason: FieldType.Uint8,\n});\n\nexport const PingSchema = new BinarySchema({\n cSend: FieldType.Float64,\n});\n\nexport const PongSchema = new BinarySchema({\n cSend: FieldType.Float64,\n sRecv: FieldType.Float64,\n sSend: FieldType.Float64,\n sTick: FieldType.Uint32,\n});\n\nexport const StateRequestSchema = new BinarySchema({\n requestId: FieldType.Uint32,\n});\n\nexport const StateResponseHeaderSchema = new BinarySchema({\n requestId: FieldType.Uint32,\n tick: FieldType.Uint32,\n hash: FieldType.Uint32,\n stateLength: FieldType.Uint32,\n});\n\nexport const PlayerFinishedSchema = new BinarySchema({\n tick: FieldType.Uint32,\n playerSlot: FieldType.Uint8,\n payloadLength: FieldType.Uint16,\n});\n\n// ─────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────\n\nexport interface ServerHelloPlayer {\n readonly playerId: Uint8Array; // 16 bytes UUID\n readonly slot: number;\n readonly isBot: boolean;\n readonly metadataJson: string; // JSON-encoded metadata\n}\n\nexport interface ServerHelloData {\n readonly seed: Uint8Array; // 16-byte PRNG seed\n readonly playerSlot: number;\n readonly serverTick: number;\n readonly maxPlayers: number;\n readonly players: ReadonlyArray<ServerHelloPlayer>;\n readonly scopeJson: string;\n}\n\nexport interface TickInputData {\n readonly tick: number;\n readonly playerSlot: number;\n readonly seq: number;\n readonly kind: TickInputKind;\n readonly payload: Uint8Array;\n}\n\nexport interface FanoutData {\n readonly serverTick: number;\n readonly inputs: ReadonlyArray<TickInputData>;\n}\n\nexport interface CancelInputData {\n readonly tick: number;\n readonly playerSlot: number;\n readonly seq: number;\n readonly reason: CancelReason;\n}\n\nexport interface PongData {\n readonly cSend: number;\n readonly sRecv: number;\n readonly sSend: number;\n readonly sTick: number;\n}\n\nexport interface StateResponseData {\n readonly requestId: number;\n readonly tick: number;\n readonly hash: number;\n readonly state: ArrayBuffer;\n}\n\nexport interface PlayerFinishedData {\n readonly tick: number;\n readonly playerSlot: number;\n readonly payload: Uint8Array;\n}\n\n// ─────────────────────────────────────────────────────────────\n// Packing\n// ─────────────────────────────────────────────────────────────\n\nfunction packHeader(pipeline: BinarySchemaPackPipeline, type: MsgType): void {\n pipeline.pack(HeaderSchema, { version: WIRE_VERSION, type });\n}\n\nexport function packServerHello(data: ServerHelloData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n\n packHeader(pipeline, MsgType.ServerHello);\n pipeline.appendView(data.seed); // 16-byte PRNG seed\n pipeline.pack(ServerHelloSchema, {\n playerSlot: data.playerSlot,\n serverTick: data.serverTick,\n maxPlayers: data.maxPlayers,\n playerCount: data.players.length,\n });\n\n // Pack players: for each player: playerId (16 bytes) + slot (u8) + isBot (u8) + metadataJsonLen (u16) + metadataJson\n const playerChunks: ArrayBuffer[] = [];\n for (const player of data.players) {\n const metadataBytes = new TextEncoder().encode(player.metadataJson);\n const chunk = new ArrayBuffer(16 + 1 + 1 + 2 + metadataBytes.length);\n const view = new DataView(chunk);\n const uint8 = new Uint8Array(chunk);\n uint8.set(player.playerId, 0);\n view.setUint8(16, player.slot);\n view.setUint8(17, player.isBot ? 1 : 0);\n view.setUint16(18, metadataBytes.length, LE);\n uint8.set(metadataBytes, 20);\n playerChunks.push(chunk);\n }\n for (const chunk of playerChunks) {\n pipeline.appendBuffer(chunk);\n }\n\n // Pack scope JSON\n const scopeBytes = new TextEncoder().encode(data.scopeJson);\n const scopeHeader = new ArrayBuffer(2);\n new DataView(scopeHeader).setUint16(0, scopeBytes.length, LE);\n pipeline.appendBuffer(scopeHeader);\n pipeline.appendView(scopeBytes);\n\n return pipeline.toUint8Array();\n}\n\nexport function packTickInput(data: TickInputData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.TickInput);\n pipeline.pack(TickInputSchema, {\n tick: data.tick,\n playerSlot: data.playerSlot,\n seq: data.seq,\n kind: data.kind,\n payloadLength: data.payload.byteLength,\n });\n pipeline.appendView(data.payload);\n return pipeline.toUint8Array();\n}\n\nexport function packTickInputFanout(data: FanoutData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.TickInputFanout);\n pipeline.pack(TickInputFanoutSchema, {\n serverTick: data.serverTick,\n inputCount: data.inputs.length,\n });\n\n for (const input of data.inputs) {\n pipeline.pack(TickInputSchema, {\n tick: input.tick,\n playerSlot: input.playerSlot,\n seq: input.seq,\n kind: input.kind,\n payloadLength: input.payload.byteLength,\n });\n pipeline.appendView(input.payload);\n }\n\n return pipeline.toUint8Array();\n}\n\nexport function packTickInputBatch(inputs: ReadonlyArray<TickInputData>): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.TickInputBatch);\n pipeline.pack(TickInputBatchSchema, { inputCount: inputs.length });\n\n for (const input of inputs) {\n pipeline.pack(TickInputSchema, {\n tick: input.tick,\n playerSlot: input.playerSlot,\n seq: input.seq,\n kind: input.kind,\n payloadLength: input.payload.byteLength,\n });\n pipeline.appendView(input.payload);\n }\n\n return pipeline.toUint8Array();\n}\n\nexport function packCancelInput(data: CancelInputData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.CancelInput);\n pipeline.pack(CancelInputSchema, {\n tick: data.tick,\n playerSlot: data.playerSlot,\n seq: data.seq,\n reason: data.reason,\n });\n return pipeline.toUint8Array();\n}\n\nexport function packPing(cSend: number): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.Ping);\n pipeline.pack(PingSchema, { cSend });\n return pipeline.toUint8Array();\n}\n\nexport function packPong(data: PongData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.Pong);\n pipeline.pack(PongSchema, data);\n return pipeline.toUint8Array();\n}\n\nexport function packStateRequest(requestId: number): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.StateRequest);\n pipeline.pack(StateRequestSchema, { requestId });\n return pipeline.toUint8Array();\n}\n\nexport function packStateResponse(data: StateResponseData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.StateResponse);\n pipeline.pack(StateResponseHeaderSchema, {\n requestId: data.requestId,\n tick: data.tick,\n hash: data.hash,\n stateLength: data.state.byteLength,\n });\n pipeline.appendBuffer(data.state);\n return pipeline.toUint8Array();\n}\n\nexport function packPlayerFinished(data: PlayerFinishedData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.PlayerFinished);\n pipeline.pack(PlayerFinishedSchema, {\n tick: data.tick,\n playerSlot: data.playerSlot,\n payloadLength: data.payload.byteLength,\n });\n pipeline.appendView(data.payload);\n return pipeline.toUint8Array();\n}\n\n// ─────────────────────────────────────────────────────────────\n// Unpacking\n// ─────────────────────────────────────────────────────────────\n\nexport function unpackHeader(data: ArrayBuffer): { version: number; type: MsgType } {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n const header = pipeline.unpack(HeaderSchema);\n return { version: header.version, type: header.type as MsgType };\n}\n\nexport function unpackServerHello(data: ArrayBuffer): ServerHelloData {\n const uint8 = new Uint8Array(data);\n const view = new DataView(data);\n let offset = HeaderSchema.byteLength; // skip header (2B)\n\n // Read 16-byte seed\n const seed = uint8.slice(offset, offset + 16);\n offset += 16;\n\n // Read schema fields manually (matches ServerHelloSchema field order)\n const playerSlot = view.getUint8(offset); offset += 1;\n const serverTick = view.getUint32(offset, LE); offset += 4;\n const maxPlayers = view.getUint8(offset); offset += 1;\n const playerCount = view.getUint8(offset); offset += 1;\n\n // Players\n const players: ServerHelloPlayer[] = [];\n for (let i = 0; i < playerCount; i++) {\n const playerId = uint8.slice(offset, offset + 16);\n offset += 16;\n const slot = uint8[offset++];\n const isBot = uint8[offset++] === 1;\n const metadataLen = view.getUint16(offset, LE);\n offset += 2;\n const metadataJson = new TextDecoder().decode(uint8.slice(offset, offset + metadataLen));\n offset += metadataLen;\n players.push({ playerId, slot, isBot, metadataJson });\n }\n\n // Scope JSON\n const scopeLen = view.getUint16(offset, LE);\n offset += 2;\n const scopeJson = new TextDecoder().decode(uint8.slice(offset, offset + scopeLen));\n\n return {\n seed,\n playerSlot,\n serverTick,\n maxPlayers,\n players,\n scopeJson,\n };\n}\n\nexport function unpackTickInput(data: ArrayBuffer): TickInputData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema); // skip header\n const input = pipeline.unpack(TickInputSchema);\n const payload = new Uint8Array(pipeline.sliceRemaining()).slice(0, input.payloadLength);\n return {\n tick: input.tick,\n playerSlot: input.playerSlot,\n seq: input.seq,\n kind: input.kind as TickInputKind,\n payload,\n };\n}\n\nexport function unpackCancelInput(data: ArrayBuffer): CancelInputData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const cancel = pipeline.unpack(CancelInputSchema);\n return {\n tick: cancel.tick,\n playerSlot: cancel.playerSlot,\n seq: cancel.seq,\n reason: cancel.reason as CancelReason,\n };\n}\n\nexport function unpackPing(data: ArrayBuffer): number {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const ping = pipeline.unpack(PingSchema);\n return ping.cSend;\n}\n\nexport function unpackPong(data: ArrayBuffer): PongData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n return pipeline.unpack(PongSchema);\n}\n\nexport function unpackStateRequest(data: ArrayBuffer): number {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const req = pipeline.unpack(StateRequestSchema);\n return req.requestId;\n}\n\nexport function unpackStateResponse(data: ArrayBuffer): StateResponseData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const header = pipeline.unpack(StateResponseHeaderSchema);\n const remaining = pipeline.sliceRemaining();\n const state = remaining.slice(0, header.stateLength);\n return {\n requestId: header.requestId,\n tick: header.tick,\n hash: header.hash,\n state,\n };\n}\n\nexport function unpackPlayerFinished(data: ArrayBuffer): PlayerFinishedData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const pf = pipeline.unpack(PlayerFinishedSchema);\n const remaining = new Uint8Array(pipeline.sliceRemaining());\n const payload = remaining.slice(0, pf.payloadLength);\n return {\n tick: pf.tick,\n playerSlot: pf.playerSlot,\n payload,\n };\n}\n\nexport function unpackTickInputFanout(data: ArrayBuffer): FanoutData {\n const view = new DataView(data);\n let offset = HeaderSchema.byteLength; // skip header\n\n const serverTick = view.getUint32(offset, LE); offset += 4;\n const inputCount = view.getUint8(offset); offset += 1;\n\n const inputs: TickInputData[] = [];\n for (let i = 0; i < inputCount; i++) {\n const tick = view.getUint32(offset, LE); offset += 4;\n const playerSlot = view.getUint8(offset); offset += 1;\n const seq = view.getUint32(offset, LE); offset += 4;\n const kind = view.getUint8(offset) as TickInputKind; offset += 1;\n const payloadLength = view.getUint16(offset, LE); offset += 2;\n const payload = new Uint8Array(data.slice(offset, offset + payloadLength));\n offset += payloadLength;\n\n inputs.push({ tick, playerSlot, seq, kind, payload });\n }\n\n return { serverTick, inputs };\n}\n"],"names":["BinarySchema","BinarySchemaPackPipeline","BinarySchemaUnpackPipeline","FieldType","LE","WIRE_VERSION","MsgType","TickInputKind","CancelReason","HeaderSchema","version","Uint8","type","ServerHelloSchema","playerSlot","serverTick","Uint32","maxPlayers","playerCount","TickInputSchema","tick","seq","kind","payloadLength","Uint16","TickInputFanoutSchema","inputCount","TickInputBatchSchema","CancelInputSchema","reason","PingSchema","cSend","Float64","PongSchema","sRecv","sSend","sTick","StateRequestSchema","requestId","StateResponseHeaderSchema","hash","stateLength","PlayerFinishedSchema","packHeader","pipeline","pack","packServerHello","data","appendView","seed","players","length","playerChunks","player","metadataBytes","TextEncoder","encode","metadataJson","chunk","ArrayBuffer","view","DataView","uint8","Uint8Array","set","playerId","setUint8","slot","isBot","setUint16","push","appendBuffer","scopeBytes","scopeJson","scopeHeader","toUint8Array","packTickInput","payload","byteLength","packTickInputFanout","inputs","input","packTickInputBatch","packCancelInput","packPing","packPong","packStateRequest","packStateResponse","state","packPlayerFinished","unpackHeader","header","unpack","unpackServerHello","offset","slice","getUint8","getUint32","i","metadataLen","getUint16","TextDecoder","decode","scopeLen","unpackTickInput","sliceRemaining","unpackCancelInput","cancel","unpackPing","ping","unpackPong","unpackStateRequest","req","unpackStateResponse","remaining","unpackPlayerFinished","pf","unpackTickInputFanout"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/protocol.ts"],"sourcesContent":["import {\n BinarySchema,\n BinarySchemaPackPipeline,\n BinarySchemaUnpackPipeline,\n FieldType,\n LE,\n} from '@lagless/binary';\n\n// ─────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────\n\nexport const WIRE_VERSION = 1;\n\nexport const enum MsgType {\n ServerHello = 0,\n TickInput = 1,\n TickInputFanout = 2,\n CancelInput = 3,\n Ping = 4,\n Pong = 5,\n StateRequest = 6,\n StateResponse = 7,\n PlayerFinished = 8,\n TickInputBatch = 9,\n HashReport = 10,\n HashMismatch = 11,\n}\n\nexport const enum TickInputKind {\n Client = 0,\n Server = 1,\n}\n\nexport const enum CancelReason {\n TooOld = 0,\n TooFarFuture = 1,\n InvalidSlot = 2,\n}\n\n// ─────────────────────────────────────────────────────────────\n// Schemas\n// ─────────────────────────────────────────────────────────────\n\nexport const HeaderSchema = new BinarySchema({\n version: FieldType.Uint8,\n type: FieldType.Uint8,\n});\n\nexport const ServerHelloSchema = new BinarySchema({\n playerSlot: FieldType.Uint8,\n serverTick: FieldType.Uint32,\n maxPlayers: FieldType.Uint8,\n playerCount: FieldType.Uint8,\n});\n\nexport const TickInputSchema = new BinarySchema({\n tick: FieldType.Uint32,\n playerSlot: FieldType.Uint8,\n seq: FieldType.Uint32,\n kind: FieldType.Uint8,\n payloadLength: FieldType.Uint16,\n});\n\nexport const TickInputFanoutSchema = new BinarySchema({\n serverTick: FieldType.Uint32,\n inputCount: FieldType.Uint8,\n});\n\nexport const TickInputBatchSchema = new BinarySchema({\n inputCount: FieldType.Uint8,\n});\n\nexport const CancelInputSchema = new BinarySchema({\n tick: FieldType.Uint32,\n playerSlot: FieldType.Uint8,\n seq: FieldType.Uint32,\n reason: FieldType.Uint8,\n});\n\nexport const PingSchema = new BinarySchema({\n cSend: FieldType.Float64,\n});\n\nexport const PongSchema = new BinarySchema({\n cSend: FieldType.Float64,\n sRecv: FieldType.Float64,\n sSend: FieldType.Float64,\n sTick: FieldType.Uint32,\n});\n\nexport const StateRequestSchema = new BinarySchema({\n requestId: FieldType.Uint32,\n});\n\nexport const StateResponseHeaderSchema = new BinarySchema({\n requestId: FieldType.Uint32,\n tick: FieldType.Uint32,\n hash: FieldType.Uint32,\n stateLength: FieldType.Uint32,\n});\n\nexport const PlayerFinishedSchema = new BinarySchema({\n tick: FieldType.Uint32,\n playerSlot: FieldType.Uint8,\n payloadLength: FieldType.Uint16,\n});\n\nexport const HashReportSchema = new BinarySchema({\n hash: FieldType.Uint32,\n atTick: FieldType.Uint32,\n});\n\nexport const HashMismatchSchema = new BinarySchema({\n slotA: FieldType.Uint8,\n slotB: FieldType.Uint8,\n hashA: FieldType.Uint32,\n hashB: FieldType.Uint32,\n atTick: FieldType.Uint32,\n});\n\n// ─────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────\n\nexport interface ServerHelloPlayer {\n readonly playerId: Uint8Array; // 16 bytes UUID\n readonly slot: number;\n readonly isBot: boolean;\n readonly metadataJson: string; // JSON-encoded metadata\n}\n\nexport interface ServerHelloData {\n readonly seed: Uint8Array; // 16-byte PRNG seed\n readonly playerSlot: number;\n readonly serverTick: number;\n readonly maxPlayers: number;\n readonly players: ReadonlyArray<ServerHelloPlayer>;\n readonly scopeJson: string;\n}\n\nexport interface TickInputData {\n readonly tick: number;\n readonly playerSlot: number;\n readonly seq: number;\n readonly kind: TickInputKind;\n readonly payload: Uint8Array;\n}\n\nexport interface FanoutData {\n readonly serverTick: number;\n readonly inputs: ReadonlyArray<TickInputData>;\n}\n\nexport interface CancelInputData {\n readonly tick: number;\n readonly playerSlot: number;\n readonly seq: number;\n readonly reason: CancelReason;\n}\n\nexport interface PongData {\n readonly cSend: number;\n readonly sRecv: number;\n readonly sSend: number;\n readonly sTick: number;\n}\n\nexport interface StateResponseData {\n readonly requestId: number;\n readonly tick: number;\n readonly hash: number;\n readonly state: ArrayBuffer;\n}\n\nexport interface PlayerFinishedData {\n readonly tick: number;\n readonly playerSlot: number;\n readonly payload: Uint8Array;\n}\n\nexport interface HashReportData {\n readonly hash: number;\n readonly atTick: number;\n}\n\nexport interface HashMismatchData {\n readonly slotA: number;\n readonly slotB: number;\n readonly hashA: number;\n readonly hashB: number;\n readonly atTick: number;\n}\n\n// ─────────────────────────────────────────────────────────────\n// Packing\n// ─────────────────────────────────────────────────────────────\n\nfunction packHeader(pipeline: BinarySchemaPackPipeline, type: MsgType): void {\n pipeline.pack(HeaderSchema, { version: WIRE_VERSION, type });\n}\n\nexport function packServerHello(data: ServerHelloData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n\n packHeader(pipeline, MsgType.ServerHello);\n pipeline.appendView(data.seed); // 16-byte PRNG seed\n pipeline.pack(ServerHelloSchema, {\n playerSlot: data.playerSlot,\n serverTick: data.serverTick,\n maxPlayers: data.maxPlayers,\n playerCount: data.players.length,\n });\n\n // Pack players: for each player: playerId (16 bytes) + slot (u8) + isBot (u8) + metadataJsonLen (u16) + metadataJson\n const playerChunks: ArrayBuffer[] = [];\n for (const player of data.players) {\n const metadataBytes = new TextEncoder().encode(player.metadataJson);\n const chunk = new ArrayBuffer(16 + 1 + 1 + 2 + metadataBytes.length);\n const view = new DataView(chunk);\n const uint8 = new Uint8Array(chunk);\n uint8.set(player.playerId, 0);\n view.setUint8(16, player.slot);\n view.setUint8(17, player.isBot ? 1 : 0);\n view.setUint16(18, metadataBytes.length, LE);\n uint8.set(metadataBytes, 20);\n playerChunks.push(chunk);\n }\n for (const chunk of playerChunks) {\n pipeline.appendBuffer(chunk);\n }\n\n // Pack scope JSON\n const scopeBytes = new TextEncoder().encode(data.scopeJson);\n const scopeHeader = new ArrayBuffer(2);\n new DataView(scopeHeader).setUint16(0, scopeBytes.length, LE);\n pipeline.appendBuffer(scopeHeader);\n pipeline.appendView(scopeBytes);\n\n return pipeline.toUint8Array();\n}\n\nexport function packTickInput(data: TickInputData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.TickInput);\n pipeline.pack(TickInputSchema, {\n tick: data.tick,\n playerSlot: data.playerSlot,\n seq: data.seq,\n kind: data.kind,\n payloadLength: data.payload.byteLength,\n });\n pipeline.appendView(data.payload);\n return pipeline.toUint8Array();\n}\n\nexport function packTickInputFanout(data: FanoutData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.TickInputFanout);\n pipeline.pack(TickInputFanoutSchema, {\n serverTick: data.serverTick,\n inputCount: data.inputs.length,\n });\n\n for (const input of data.inputs) {\n pipeline.pack(TickInputSchema, {\n tick: input.tick,\n playerSlot: input.playerSlot,\n seq: input.seq,\n kind: input.kind,\n payloadLength: input.payload.byteLength,\n });\n pipeline.appendView(input.payload);\n }\n\n return pipeline.toUint8Array();\n}\n\nexport function packTickInputBatch(inputs: ReadonlyArray<TickInputData>): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.TickInputBatch);\n pipeline.pack(TickInputBatchSchema, { inputCount: inputs.length });\n\n for (const input of inputs) {\n pipeline.pack(TickInputSchema, {\n tick: input.tick,\n playerSlot: input.playerSlot,\n seq: input.seq,\n kind: input.kind,\n payloadLength: input.payload.byteLength,\n });\n pipeline.appendView(input.payload);\n }\n\n return pipeline.toUint8Array();\n}\n\nexport function packCancelInput(data: CancelInputData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.CancelInput);\n pipeline.pack(CancelInputSchema, {\n tick: data.tick,\n playerSlot: data.playerSlot,\n seq: data.seq,\n reason: data.reason,\n });\n return pipeline.toUint8Array();\n}\n\nexport function packPing(cSend: number): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.Ping);\n pipeline.pack(PingSchema, { cSend });\n return pipeline.toUint8Array();\n}\n\nexport function packPong(data: PongData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.Pong);\n pipeline.pack(PongSchema, data);\n return pipeline.toUint8Array();\n}\n\nexport function packStateRequest(requestId: number): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.StateRequest);\n pipeline.pack(StateRequestSchema, { requestId });\n return pipeline.toUint8Array();\n}\n\nexport function packStateResponse(data: StateResponseData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.StateResponse);\n pipeline.pack(StateResponseHeaderSchema, {\n requestId: data.requestId,\n tick: data.tick,\n hash: data.hash,\n stateLength: data.state.byteLength,\n });\n pipeline.appendBuffer(data.state);\n return pipeline.toUint8Array();\n}\n\nexport function packHashReport(data: HashReportData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.HashReport);\n pipeline.pack(HashReportSchema, { hash: data.hash, atTick: data.atTick });\n return pipeline.toUint8Array();\n}\n\nexport function packHashMismatch(data: HashMismatchData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.HashMismatch);\n pipeline.pack(HashMismatchSchema, {\n slotA: data.slotA,\n slotB: data.slotB,\n hashA: data.hashA,\n hashB: data.hashB,\n atTick: data.atTick,\n });\n return pipeline.toUint8Array();\n}\n\nexport function packPlayerFinished(data: PlayerFinishedData): Uint8Array {\n const pipeline = new BinarySchemaPackPipeline();\n packHeader(pipeline, MsgType.PlayerFinished);\n pipeline.pack(PlayerFinishedSchema, {\n tick: data.tick,\n playerSlot: data.playerSlot,\n payloadLength: data.payload.byteLength,\n });\n pipeline.appendView(data.payload);\n return pipeline.toUint8Array();\n}\n\n// ─────────────────────────────────────────────────────────────\n// Unpacking\n// ─────────────────────────────────────────────────────────────\n\nexport function unpackHeader(data: ArrayBuffer): { version: number; type: MsgType } {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n const header = pipeline.unpack(HeaderSchema);\n return { version: header.version, type: header.type as MsgType };\n}\n\nexport function unpackServerHello(data: ArrayBuffer): ServerHelloData {\n const uint8 = new Uint8Array(data);\n const view = new DataView(data);\n let offset = HeaderSchema.byteLength; // skip header (2B)\n\n // Read 16-byte seed\n const seed = uint8.slice(offset, offset + 16);\n offset += 16;\n\n // Read schema fields manually (matches ServerHelloSchema field order)\n const playerSlot = view.getUint8(offset); offset += 1;\n const serverTick = view.getUint32(offset, LE); offset += 4;\n const maxPlayers = view.getUint8(offset); offset += 1;\n const playerCount = view.getUint8(offset); offset += 1;\n\n // Players\n const players: ServerHelloPlayer[] = [];\n for (let i = 0; i < playerCount; i++) {\n const playerId = uint8.slice(offset, offset + 16);\n offset += 16;\n const slot = uint8[offset++];\n const isBot = uint8[offset++] === 1;\n const metadataLen = view.getUint16(offset, LE);\n offset += 2;\n const metadataJson = new TextDecoder().decode(uint8.slice(offset, offset + metadataLen));\n offset += metadataLen;\n players.push({ playerId, slot, isBot, metadataJson });\n }\n\n // Scope JSON\n const scopeLen = view.getUint16(offset, LE);\n offset += 2;\n const scopeJson = new TextDecoder().decode(uint8.slice(offset, offset + scopeLen));\n\n return {\n seed,\n playerSlot,\n serverTick,\n maxPlayers,\n players,\n scopeJson,\n };\n}\n\nexport function unpackTickInput(data: ArrayBuffer): TickInputData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema); // skip header\n const input = pipeline.unpack(TickInputSchema);\n const payload = new Uint8Array(pipeline.sliceRemaining()).slice(0, input.payloadLength);\n return {\n tick: input.tick,\n playerSlot: input.playerSlot,\n seq: input.seq,\n kind: input.kind as TickInputKind,\n payload,\n };\n}\n\nexport function unpackCancelInput(data: ArrayBuffer): CancelInputData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const cancel = pipeline.unpack(CancelInputSchema);\n return {\n tick: cancel.tick,\n playerSlot: cancel.playerSlot,\n seq: cancel.seq,\n reason: cancel.reason as CancelReason,\n };\n}\n\nexport function unpackPing(data: ArrayBuffer): number {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const ping = pipeline.unpack(PingSchema);\n return ping.cSend;\n}\n\nexport function unpackPong(data: ArrayBuffer): PongData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n return pipeline.unpack(PongSchema);\n}\n\nexport function unpackStateRequest(data: ArrayBuffer): number {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const req = pipeline.unpack(StateRequestSchema);\n return req.requestId;\n}\n\nexport function unpackStateResponse(data: ArrayBuffer): StateResponseData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const header = pipeline.unpack(StateResponseHeaderSchema);\n const remaining = pipeline.sliceRemaining();\n const state = remaining.slice(0, header.stateLength);\n return {\n requestId: header.requestId,\n tick: header.tick,\n hash: header.hash,\n state,\n };\n}\n\nexport function unpackPlayerFinished(data: ArrayBuffer): PlayerFinishedData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const pf = pipeline.unpack(PlayerFinishedSchema);\n const remaining = new Uint8Array(pipeline.sliceRemaining());\n const payload = remaining.slice(0, pf.payloadLength);\n return {\n tick: pf.tick,\n playerSlot: pf.playerSlot,\n payload,\n };\n}\n\nexport function unpackHashReport(data: ArrayBuffer): HashReportData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const report = pipeline.unpack(HashReportSchema);\n return { hash: report.hash, atTick: report.atTick };\n}\n\nexport function unpackHashMismatch(data: ArrayBuffer): HashMismatchData {\n const pipeline = new BinarySchemaUnpackPipeline(data);\n pipeline.unpack(HeaderSchema);\n const mismatch = pipeline.unpack(HashMismatchSchema);\n return {\n slotA: mismatch.slotA,\n slotB: mismatch.slotB,\n hashA: mismatch.hashA,\n hashB: mismatch.hashB,\n atTick: mismatch.atTick,\n };\n}\n\nexport function unpackTickInputFanout(data: ArrayBuffer): FanoutData {\n const view = new DataView(data);\n let offset = HeaderSchema.byteLength; // skip header\n\n const serverTick = view.getUint32(offset, LE); offset += 4;\n const inputCount = view.getUint8(offset); offset += 1;\n\n const inputs: TickInputData[] = [];\n for (let i = 0; i < inputCount; i++) {\n const tick = view.getUint32(offset, LE); offset += 4;\n const playerSlot = view.getUint8(offset); offset += 1;\n const seq = view.getUint32(offset, LE); offset += 4;\n const kind = view.getUint8(offset) as TickInputKind; offset += 1;\n const payloadLength = view.getUint16(offset, LE); offset += 2;\n const payload = new Uint8Array(data.slice(offset, offset + payloadLength));\n offset += payloadLength;\n\n inputs.push({ tick, playerSlot, seq, kind, payload });\n }\n\n return { serverTick, inputs };\n}\n"],"names":["BinarySchema","BinarySchemaPackPipeline","BinarySchemaUnpackPipeline","FieldType","LE","WIRE_VERSION","MsgType","TickInputKind","CancelReason","HeaderSchema","version","Uint8","type","ServerHelloSchema","playerSlot","serverTick","Uint32","maxPlayers","playerCount","TickInputSchema","tick","seq","kind","payloadLength","Uint16","TickInputFanoutSchema","inputCount","TickInputBatchSchema","CancelInputSchema","reason","PingSchema","cSend","Float64","PongSchema","sRecv","sSend","sTick","StateRequestSchema","requestId","StateResponseHeaderSchema","hash","stateLength","PlayerFinishedSchema","HashReportSchema","atTick","HashMismatchSchema","slotA","slotB","hashA","hashB","packHeader","pipeline","pack","packServerHello","data","appendView","seed","players","length","playerChunks","player","metadataBytes","TextEncoder","encode","metadataJson","chunk","ArrayBuffer","view","DataView","uint8","Uint8Array","set","playerId","setUint8","slot","isBot","setUint16","push","appendBuffer","scopeBytes","scopeJson","scopeHeader","toUint8Array","packTickInput","payload","byteLength","packTickInputFanout","inputs","input","packTickInputBatch","packCancelInput","packPing","packPong","packStateRequest","packStateResponse","state","packHashReport","packHashMismatch","packPlayerFinished","unpackHeader","header","unpack","unpackServerHello","offset","slice","getUint8","getUint32","i","metadataLen","getUint16","TextDecoder","decode","scopeLen","unpackTickInput","sliceRemaining","unpackCancelInput","cancel","unpackPing","ping","unpackPong","unpackStateRequest","req","unpackStateResponse","remaining","unpackPlayerFinished","pf","unpackHashReport","report","unpackHashMismatch","mismatch","unpackTickInputFanout"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lagless/net-wire",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.50",
|
|
4
4
|
"license": "CC-BY-NC-4.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@swc/helpers": "~0.5.11",
|
|
42
|
-
"@lagless/
|
|
43
|
-
"@lagless/
|
|
42
|
+
"@lagless/binary": "0.0.50",
|
|
43
|
+
"@lagless/misc": "0.0.50"
|
|
44
44
|
},
|
|
45
45
|
"files": [
|
|
46
46
|
"dist",
|