@vworlds/vecs-client 1.0.16

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 (81) hide show
  1. package/node_modules/@vworlds/vecs-protocol/package.json +14 -0
  2. package/node_modules/@vworlds/vecs-protocol/src/cid.d.ts +14 -0
  3. package/node_modules/@vworlds/vecs-protocol/src/cid.js +58 -0
  4. package/node_modules/@vworlds/vecs-protocol/src/cid.js.map +1 -0
  5. package/node_modules/@vworlds/vecs-protocol/src/index.d.ts +5 -0
  6. package/node_modules/@vworlds/vecs-protocol/src/index.js +5 -0
  7. package/node_modules/@vworlds/vecs-protocol/src/index.js.map +1 -0
  8. package/node_modules/@vworlds/vecs-protocol/src/messages.d.ts +42 -0
  9. package/node_modules/@vworlds/vecs-protocol/src/messages.js +149 -0
  10. package/node_modules/@vworlds/vecs-protocol/src/messages.js.map +1 -0
  11. package/node_modules/@vworlds/vecs-protocol/src/network_world.d.ts +18 -0
  12. package/node_modules/@vworlds/vecs-protocol/src/network_world.js +93 -0
  13. package/node_modules/@vworlds/vecs-protocol/src/network_world.js.map +1 -0
  14. package/node_modules/@vworlds/vecs-protocol/src/rpc.d.ts +36 -0
  15. package/node_modules/@vworlds/vecs-protocol/src/rpc.js +140 -0
  16. package/node_modules/@vworlds/vecs-protocol/src/rpc.js.map +1 -0
  17. package/node_modules/@vworlds/vecs-protocol/src/transport.d.ts +21 -0
  18. package/node_modules/@vworlds/vecs-protocol/src/transport.js +2 -0
  19. package/node_modules/@vworlds/vecs-protocol/src/transport.js.map +1 -0
  20. package/node_modules/@vworlds/vecs-wire/package.json +14 -0
  21. package/node_modules/@vworlds/vecs-wire/src/any.d.ts +27 -0
  22. package/node_modules/@vworlds/vecs-wire/src/any.js +43 -0
  23. package/node_modules/@vworlds/vecs-wire/src/any.js.map +1 -0
  24. package/node_modules/@vworlds/vecs-wire/src/decoder.d.ts +31 -0
  25. package/node_modules/@vworlds/vecs-wire/src/decoder.js +180 -0
  26. package/node_modules/@vworlds/vecs-wire/src/decoder.js.map +1 -0
  27. package/node_modules/@vworlds/vecs-wire/src/decorators.d.ts +4 -0
  28. package/node_modules/@vworlds/vecs-wire/src/decorators.js +139 -0
  29. package/node_modules/@vworlds/vecs-wire/src/decorators.js.map +1 -0
  30. package/node_modules/@vworlds/vecs-wire/src/encoder.d.ts +32 -0
  31. package/node_modules/@vworlds/vecs-wire/src/encoder.js +230 -0
  32. package/node_modules/@vworlds/vecs-wire/src/encoder.js.map +1 -0
  33. package/node_modules/@vworlds/vecs-wire/src/index.d.ts +5 -0
  34. package/node_modules/@vworlds/vecs-wire/src/index.js +5 -0
  35. package/node_modules/@vworlds/vecs-wire/src/index.js.map +1 -0
  36. package/package.json +28 -0
  37. package/vecs-client/src/client_world.d.ts +46 -0
  38. package/vecs-client/src/client_world.js +129 -0
  39. package/vecs-client/src/client_world.js.map +1 -0
  40. package/vecs-client/src/index.d.ts +4 -0
  41. package/vecs-client/src/index.js +4 -0
  42. package/vecs-client/src/index.js.map +1 -0
  43. package/vecs-client/src/interpolator.d.ts +51 -0
  44. package/vecs-client/src/interpolator.js +305 -0
  45. package/vecs-client/src/interpolator.js.map +1 -0
  46. package/vecs-client/src/world_path.d.ts +1 -0
  47. package/vecs-client/src/world_path.js +4 -0
  48. package/vecs-client/src/world_path.js.map +1 -0
  49. package/vecs-protocol/src/cid.d.ts +14 -0
  50. package/vecs-protocol/src/cid.js +58 -0
  51. package/vecs-protocol/src/cid.js.map +1 -0
  52. package/vecs-protocol/src/index.d.ts +5 -0
  53. package/vecs-protocol/src/index.js +5 -0
  54. package/vecs-protocol/src/index.js.map +1 -0
  55. package/vecs-protocol/src/messages.d.ts +42 -0
  56. package/vecs-protocol/src/messages.js +149 -0
  57. package/vecs-protocol/src/messages.js.map +1 -0
  58. package/vecs-protocol/src/network_world.d.ts +18 -0
  59. package/vecs-protocol/src/network_world.js +93 -0
  60. package/vecs-protocol/src/network_world.js.map +1 -0
  61. package/vecs-protocol/src/rpc.d.ts +36 -0
  62. package/vecs-protocol/src/rpc.js +140 -0
  63. package/vecs-protocol/src/rpc.js.map +1 -0
  64. package/vecs-protocol/src/transport.d.ts +21 -0
  65. package/vecs-protocol/src/transport.js +2 -0
  66. package/vecs-protocol/src/transport.js.map +1 -0
  67. package/vecs-wire/src/any.d.ts +27 -0
  68. package/vecs-wire/src/any.js +43 -0
  69. package/vecs-wire/src/any.js.map +1 -0
  70. package/vecs-wire/src/decoder.d.ts +31 -0
  71. package/vecs-wire/src/decoder.js +180 -0
  72. package/vecs-wire/src/decoder.js.map +1 -0
  73. package/vecs-wire/src/decorators.d.ts +4 -0
  74. package/vecs-wire/src/decorators.js +139 -0
  75. package/vecs-wire/src/decorators.js.map +1 -0
  76. package/vecs-wire/src/encoder.d.ts +32 -0
  77. package/vecs-wire/src/encoder.js +230 -0
  78. package/vecs-wire/src/encoder.js.map +1 -0
  79. package/vecs-wire/src/index.d.ts +5 -0
  80. package/vecs-wire/src/index.js +5 -0
  81. package/vecs-wire/src/index.js.map +1 -0
@@ -0,0 +1,93 @@
1
+ import { World } from "@vworlds/vecs";
2
+ import { cid_pack, setLocalComponentMin } from "./cid.js";
3
+ const DEFAULT_ENTITY_ID_START = 1000;
4
+ const MODULE_ID_RANGE_SIZE = 100;
5
+ let configuredLocalComponentMin;
6
+ export class NetworkWorld extends World {
7
+ constructor(options = {}) {
8
+ const networkComponents = options.networkComponents ?? [];
9
+ const localComponentMin = getLocalComponentMinFor(networkComponents.length);
10
+ configureLocalComponentMin(localComponentMin);
11
+ super({
12
+ idPools: buildNetworkIdPools(localComponentMin, options),
13
+ });
14
+ this._networkComponentsByType = new Map();
15
+ this.localComponentMin = localComponentMin;
16
+ this.networkComponents = networkComponents.map((Class, index) => {
17
+ const type = index + 1;
18
+ cid_pack(0, type);
19
+ this.component(Class, type);
20
+ const registered = { Class, type };
21
+ this._networkComponentsByType.set(type, registered);
22
+ return registered;
23
+ });
24
+ }
25
+ getNetworkComponent(type) {
26
+ return this._networkComponentsByType.get(type);
27
+ }
28
+ }
29
+ function configureLocalComponentMin(localComponentMin) {
30
+ if (configuredLocalComponentMin === undefined) {
31
+ configuredLocalComponentMin = localComponentMin;
32
+ setLocalComponentMin(localComponentMin);
33
+ return;
34
+ }
35
+ if (configuredLocalComponentMin !== localComponentMin) {
36
+ throw new Error(`NetworkWorld localComponentMin ${localComponentMin} does not match existing value ${configuredLocalComponentMin}`);
37
+ }
38
+ setLocalComponentMin(localComponentMin);
39
+ }
40
+ function buildNetworkIdPools(localComponentMin, options) {
41
+ const entityIdStart = options.entityIdStart ?? DEFAULT_ENTITY_ID_START;
42
+ validateEntityStart("entityIdStart", entityIdStart);
43
+ if (entityIdStart <= localComponentMin) {
44
+ throw new Error("entityIdStart must leave room for local component ids");
45
+ }
46
+ const moduleIdStart = entityIdStart - MODULE_ID_RANGE_SIZE;
47
+ if (moduleIdStart <= localComponentMin) {
48
+ throw new Error("entityIdStart must leave room for local component and module ids");
49
+ }
50
+ const pools = [
51
+ { name: "network", min: 1, max: localComponentMin - 1 },
52
+ { name: "component", min: localComponentMin, max: moduleIdStart - 1 },
53
+ { name: "module", min: moduleIdStart, max: entityIdStart - 1 },
54
+ ];
55
+ if (options.localEntityIdStart === undefined) {
56
+ pools.push({ name: "entity", min: entityIdStart });
57
+ return pools;
58
+ }
59
+ const localEntityIdStart = options.localEntityIdStart;
60
+ validateEntityStart("localEntityIdStart", localEntityIdStart);
61
+ if (localEntityIdStart <= entityIdStart) {
62
+ throw new Error("localEntityIdStart must be greater than entityIdStart");
63
+ }
64
+ const networkEntityPool = {
65
+ name: "network_entity",
66
+ min: entityIdStart,
67
+ max: localEntityIdStart - 1,
68
+ };
69
+ if (options.networkEntityReuseWaitFrames !== undefined) {
70
+ networkEntityPool.reuseWaitFrames = options.networkEntityReuseWaitFrames;
71
+ }
72
+ pools.push(networkEntityPool, { name: "entity", min: localEntityIdStart });
73
+ return pools;
74
+ }
75
+ function getLocalComponentMinFor(networkComponentCount) {
76
+ return nextPowerOfTwo(Math.max(2, networkComponentCount + 1));
77
+ }
78
+ function nextPowerOfTwo(value) {
79
+ if (!Number.isSafeInteger(value) || value <= 0) {
80
+ throw new Error("Network component count must be a positive safe integer");
81
+ }
82
+ let power = 1;
83
+ while (power < value) {
84
+ power *= 2;
85
+ }
86
+ return power;
87
+ }
88
+ function validateEntityStart(name, value) {
89
+ if (!Number.isSafeInteger(value) || value <= 0) {
90
+ throw new Error(`${name} must be a positive safe integer`);
91
+ }
92
+ }
93
+ //# sourceMappingURL=network_world.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network_world.js","sourceRoot":"","sources":["../../../../vecs-protocol/src/network_world.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Decoder, Encoder, type IEncodable } from "@vworlds/vecs-wire";
2
+ export declare const RPC_RESPONSE_ID = 0;
3
+ export declare const FIRST_USER_RPC_ID = 101;
4
+ export declare class RPC implements IEncodable {
5
+ rpcId: number;
6
+ callId: number;
7
+ params: unknown[];
8
+ error: number;
9
+ message: string;
10
+ constructor(values?: Partial<RPC>);
11
+ wireEncode(encoder: Encoder): void;
12
+ static wireDecode(decoder: Decoder): RPC;
13
+ }
14
+ export type RPCHandler = (params: unknown[], request: RPC) => Promise<unknown[] | unknown> | unknown[] | unknown;
15
+ export declare const RPC_TIMEOUT_ERROR: {
16
+ error: number;
17
+ message: string;
18
+ };
19
+ export declare class SessionRPC {
20
+ private readonly _defaultTTL;
21
+ private _nextCallId;
22
+ private readonly _pending;
23
+ private readonly _outbox;
24
+ private readonly _cachedReplies;
25
+ private readonly _handlers;
26
+ constructor(_defaultTTL?: number);
27
+ listen(rpcId: number, handler: RPCHandler): void;
28
+ invoke(rpcId: number, params?: unknown[], ttl?: number): Promise<RPC>;
29
+ process(messages: RPC[]): void;
30
+ private _processResponse;
31
+ private _processRequest;
32
+ private _queueResponse;
33
+ timeoutTick(elapsed: number): void;
34
+ get pendingTotal(): number;
35
+ getOutgoing(): RPC[];
36
+ }
@@ -0,0 +1,140 @@
1
+ export const RPC_RESPONSE_ID = 0;
2
+ export const FIRST_USER_RPC_ID = 101;
3
+ export class RPC {
4
+ constructor(values) {
5
+ this.rpcId = 0;
6
+ this.callId = 0;
7
+ this.params = [];
8
+ this.error = 0;
9
+ this.message = "";
10
+ if (values) {
11
+ Object.assign(this, values);
12
+ }
13
+ }
14
+ wireEncode(encoder) {
15
+ encoder.write_u32(this.rpcId);
16
+ encoder.write_u32(this.callId);
17
+ encoder.write_u32(this.error);
18
+ encoder.write_string(this.message);
19
+ encoder.write_u32(this.params.length);
20
+ this.params.forEach((param) => encoder.write_any(param));
21
+ }
22
+ static wireDecode(decoder) {
23
+ const rpc = new RPC({
24
+ rpcId: decoder.read_u32(),
25
+ callId: decoder.read_u32(),
26
+ error: decoder.read_u32(),
27
+ message: decoder.read_string(),
28
+ });
29
+ const count = decoder.read_u32();
30
+ for (let i = 0; i < count; i++) {
31
+ rpc.params.push(decoder.read_any());
32
+ }
33
+ return rpc;
34
+ }
35
+ }
36
+ export const RPC_TIMEOUT_ERROR = { error: -1, message: "Timeout" };
37
+ export class SessionRPC {
38
+ constructor(_defaultTTL = 5000) {
39
+ this._defaultTTL = _defaultTTL;
40
+ this._nextCallId = 0;
41
+ this._pending = new Map();
42
+ this._outbox = new Map();
43
+ this._cachedReplies = new Map();
44
+ this._handlers = new Map();
45
+ }
46
+ listen(rpcId, handler) {
47
+ if (rpcId <= RPC_RESPONSE_ID) {
48
+ throw new Error("RPC handler ids must be positive request ids");
49
+ }
50
+ this._handlers.set(rpcId, handler);
51
+ }
52
+ invoke(rpcId, params = [], ttl = this._defaultTTL) {
53
+ if (rpcId < FIRST_USER_RPC_ID) {
54
+ throw new Error(`RPC ids 0-${FIRST_USER_RPC_ID - 1} are reserved`);
55
+ }
56
+ const callId = this._nextCallId++;
57
+ const request = new RPC({ rpcId, callId, params });
58
+ return new Promise((resolve, reject) => {
59
+ this._pending.set(callId, { request, resolve, reject, ttl });
60
+ });
61
+ }
62
+ process(messages) {
63
+ messages.forEach((message) => {
64
+ if (message.rpcId === RPC_RESPONSE_ID) {
65
+ this._processResponse(message);
66
+ }
67
+ else {
68
+ void this._processRequest(message);
69
+ }
70
+ });
71
+ }
72
+ _processResponse(message) {
73
+ const pending = this._pending.get(message.callId);
74
+ if (!pending) {
75
+ return;
76
+ }
77
+ this._pending.delete(message.callId);
78
+ if (message.error) {
79
+ pending.reject({ error: message.error, message: message.message });
80
+ return;
81
+ }
82
+ pending.resolve(message);
83
+ }
84
+ async _processRequest(message) {
85
+ const cached = this._cachedReplies.get(message.callId);
86
+ if (cached) {
87
+ this._outbox.set(message.callId, cached.response);
88
+ return;
89
+ }
90
+ const response = new RPC({ rpcId: RPC_RESPONSE_ID, callId: message.callId });
91
+ const handler = this._handlers.get(message.rpcId);
92
+ if (!handler) {
93
+ response.error = 1;
94
+ response.message = `Unknown RPC id ${message.rpcId}`;
95
+ this._queueResponse(response);
96
+ return;
97
+ }
98
+ try {
99
+ const result = await handler(message.params, message);
100
+ response.params = Array.isArray(result) ? result : result === undefined ? [] : [result];
101
+ }
102
+ catch (err) {
103
+ response.error =
104
+ typeof err?.error === "number"
105
+ ? err.error
106
+ : 1;
107
+ response.message = err instanceof Error ? err.message : String(err);
108
+ }
109
+ this._queueResponse(response);
110
+ }
111
+ _queueResponse(response) {
112
+ this._cachedReplies.set(response.callId, { response, ttl: this._defaultTTL });
113
+ this._outbox.set(response.callId, response);
114
+ }
115
+ timeoutTick(elapsed) {
116
+ this._pending.forEach((pending, callId) => {
117
+ pending.ttl -= elapsed;
118
+ if (pending.ttl <= 0) {
119
+ this._pending.delete(callId);
120
+ pending.reject(RPC_TIMEOUT_ERROR);
121
+ }
122
+ });
123
+ this._cachedReplies.forEach((reply, callId) => {
124
+ reply.ttl -= elapsed;
125
+ if (reply.ttl <= 0) {
126
+ this._cachedReplies.delete(callId);
127
+ }
128
+ });
129
+ }
130
+ get pendingTotal() {
131
+ return this._pending.size + this._outbox.size;
132
+ }
133
+ getOutgoing() {
134
+ const outgoing = [...this._pending.values()].map((pending) => pending.request);
135
+ outgoing.push(...this._outbox.values());
136
+ this._outbox.clear();
137
+ return outgoing;
138
+ }
139
+ }
140
+ //# sourceMappingURL=rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../vecs-protocol/src/rpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface ConnectionError extends Error {
2
+ status: number;
3
+ statusText: string;
4
+ }
5
+ export interface VecsSocketEvents {
6
+ receive: (data: Uint8Array) => void;
7
+ disconnect: () => void;
8
+ connect: (err?: ConnectionError) => void;
9
+ }
10
+ export interface VecsSocket {
11
+ readonly id: string;
12
+ on<K extends keyof VecsSocketEvents>(event: K, handler: VecsSocketEvents[K]): unknown;
13
+ send(data: Uint8Array): void;
14
+ close(): void;
15
+ }
16
+ export interface VecsSocketListenerEvents {
17
+ new: (socket: VecsSocket) => void;
18
+ }
19
+ export interface VecsSocketListener {
20
+ on<K extends keyof VecsSocketListenerEvents>(event: K, handler: VecsSocketListenerEvents[K]): unknown;
21
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../vecs-protocol/src/transport.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { Decoder } from "./decoder.js";
2
+ import { Encoder } from "./encoder.js";
3
+ export declare enum AnyType {
4
+ null = 0,
5
+ boolean = 1,
6
+ undefined = 2,
7
+ object = 3,
8
+ empty_object = 4,
9
+ array = 5,
10
+ empty_array = 6,
11
+ bigint_integer = 7,
12
+ string = 8,
13
+ empty_string = 9,
14
+ number_integer = 10,
15
+ number_unsigned = 11,
16
+ number_float = 12,
17
+ binary = 13,
18
+ empty_binary = 14,
19
+ bigint_unsigned = 15
20
+ }
21
+ export declare class TagSize {
22
+ tag: AnyType;
23
+ size: number;
24
+ constructor(tag: AnyType, size: number);
25
+ wireEncode(encoder: Encoder): void;
26
+ static wireDecode(decoder: Decoder): TagSize;
27
+ }
@@ -0,0 +1,43 @@
1
+ export var AnyType;
2
+ (function (AnyType) {
3
+ AnyType[AnyType["null"] = 0] = "null";
4
+ AnyType[AnyType["boolean"] = 1] = "boolean";
5
+ AnyType[AnyType["undefined"] = 2] = "undefined";
6
+ AnyType[AnyType["object"] = 3] = "object";
7
+ AnyType[AnyType["empty_object"] = 4] = "empty_object";
8
+ AnyType[AnyType["array"] = 5] = "array";
9
+ AnyType[AnyType["empty_array"] = 6] = "empty_array";
10
+ AnyType[AnyType["bigint_integer"] = 7] = "bigint_integer";
11
+ AnyType[AnyType["string"] = 8] = "string";
12
+ AnyType[AnyType["empty_string"] = 9] = "empty_string";
13
+ AnyType[AnyType["number_integer"] = 10] = "number_integer";
14
+ AnyType[AnyType["number_unsigned"] = 11] = "number_unsigned";
15
+ AnyType[AnyType["number_float"] = 12] = "number_float";
16
+ AnyType[AnyType["binary"] = 13] = "binary";
17
+ AnyType[AnyType["empty_binary"] = 14] = "empty_binary";
18
+ AnyType[AnyType["bigint_unsigned"] = 15] = "bigint_unsigned";
19
+ })(AnyType || (AnyType = {}));
20
+ export class TagSize {
21
+ constructor(tag, size) {
22
+ this.tag = tag;
23
+ this.size = size;
24
+ }
25
+ wireEncode(encoder) {
26
+ if (this.size > 15) {
27
+ encoder.write_u8(this.tag << 4);
28
+ encoder.write_u32(this.size - 16);
29
+ }
30
+ else {
31
+ encoder.write_u8((this.tag << 4) + this.size);
32
+ }
33
+ }
34
+ static wireDecode(decoder) {
35
+ const byte = decoder.read_u8();
36
+ const ts = new TagSize(byte >> 4, byte & 0x0f);
37
+ if (ts.size === 0) {
38
+ ts.size = decoder.read_u32() + 16;
39
+ }
40
+ return ts;
41
+ }
42
+ }
43
+ //# sourceMappingURL=any.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"any.js","sourceRoot":"","sources":["../../../../vecs-wire/src/any.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,OAiBX;AAjBD,WAAY,OAAO;IACjB,qCAAQ,CAAA;IACR,2CAAW,CAAA;IACX,+CAAa,CAAA;IACb,yCAAU,CAAA;IACV,qDAAgB,CAAA;IAChB,uCAAS,CAAA;IACT,mDAAe,CAAA;IACf,yDAAkB,CAAA;IAClB,yCAAU,CAAA;IACV,qDAAgB,CAAA;IAChB,0DAAmB,CAAA;IACnB,4DAAoB,CAAA;IACpB,sDAAiB,CAAA;IACjB,0CAAW,CAAA;IACX,sDAAiB,CAAA;IACjB,4DAAoB,CAAA;AACtB,CAAC,EAjBW,OAAO,KAAP,OAAO,QAiBlB;AAED,MAAM,OAAO,OAAO;IAClB,YACS,GAAY,EACZ,IAAY;QADZ,QAAG,GAAH,GAAG,CAAS;QACZ,SAAI,GAAJ,IAAI,CAAQ;IAClB,CAAC;IAEJ,UAAU,CAAC,OAAgB;QACzB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAChC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,OAAgB;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClB,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ export interface IDecodable<T> {
2
+ wireDecode(decoder: Decoder): T;
3
+ }
4
+ export type DecodableType<T> = IDecodable<T> | (new () => T);
5
+ export declare class Decoder {
6
+ private readonly _buffer;
7
+ private _cursor;
8
+ constructor(buffer: Uint8Array);
9
+ get EOF(): boolean;
10
+ read_varint_u32(): number;
11
+ read_varint_u64(): bigint;
12
+ decode_zz_u32(value: number): number;
13
+ decode_zz_u64(value: bigint): bigint;
14
+ read_u8(): number;
15
+ read_i8(): number;
16
+ read_bool(): boolean;
17
+ read_u16(): number;
18
+ read_u32(): number;
19
+ read_u64(): bigint;
20
+ read_i16(): number;
21
+ read_i32(): number;
22
+ read_enum(): number;
23
+ read_i64(): bigint;
24
+ read_f32(): number;
25
+ read_f64(): number;
26
+ read_buffer_raw(len: number): Uint8Array;
27
+ read_string(): string;
28
+ read_bytes(): Uint8Array;
29
+ read_any(): unknown;
30
+ read<T>(C: DecodableType<T>): T;
31
+ }
@@ -0,0 +1,180 @@
1
+ import { AnyType, TagSize } from "./any.js";
2
+ const maxSafeBigInt = BigInt(Number.MAX_SAFE_INTEGER);
3
+ const minSafeBigInt = BigInt(Number.MIN_SAFE_INTEGER);
4
+ function canConvertToNumber(bigintValue) {
5
+ return bigintValue <= maxSafeBigInt && bigintValue >= minSafeBigInt;
6
+ }
7
+ export class Decoder {
8
+ constructor(buffer) {
9
+ this._cursor = 0;
10
+ this._buffer = buffer;
11
+ }
12
+ get EOF() {
13
+ return this._cursor >= this._buffer.length;
14
+ }
15
+ read_varint_u32() {
16
+ let result = 0;
17
+ let shift = 0;
18
+ let byte;
19
+ do {
20
+ if (this._cursor >= this._buffer.length) {
21
+ throw new RangeError("vecs-wire/decoder read_u32: Attempt to read beyond buffer size");
22
+ }
23
+ byte = this._buffer[this._cursor++];
24
+ result |= (byte & 0x7f) << shift;
25
+ shift += 7;
26
+ } while (byte & 0x80);
27
+ return result >>> 0;
28
+ }
29
+ read_varint_u64() {
30
+ let result = BigInt(0);
31
+ let shift = 0;
32
+ let byte;
33
+ do {
34
+ if (this._cursor >= this._buffer.length) {
35
+ throw new RangeError("vecs-wire/decoder read_u64: Attempt to read beyond buffer size");
36
+ }
37
+ byte = this._buffer[this._cursor++];
38
+ result |= BigInt(byte & 0x7f) << BigInt(shift);
39
+ shift += 7;
40
+ } while (byte & 0x80);
41
+ return result;
42
+ }
43
+ decode_zz_u32(value) {
44
+ return (value >>> 1) ^ -(value & 1);
45
+ }
46
+ decode_zz_u64(value) {
47
+ return (value >> BigInt(1)) ^ -(value & BigInt(1));
48
+ }
49
+ read_u8() {
50
+ if (this._cursor >= this._buffer.length) {
51
+ throw new RangeError("vecs-wire/decoder read_u8: Attempt to read beyond buffer size");
52
+ }
53
+ return this._buffer[this._cursor++];
54
+ }
55
+ read_i8() {
56
+ return (this.read_u8() << 24) >> 24;
57
+ }
58
+ read_bool() {
59
+ return this.read_u8() !== 0;
60
+ }
61
+ read_u16() {
62
+ return this.read_varint_u32();
63
+ }
64
+ read_u32() {
65
+ return this.read_varint_u32();
66
+ }
67
+ read_u64() {
68
+ return this.read_varint_u64();
69
+ }
70
+ read_i16() {
71
+ return this.decode_zz_u32(this.read_varint_u32());
72
+ }
73
+ read_i32() {
74
+ return this.decode_zz_u32(this.read_varint_u32());
75
+ }
76
+ read_enum() {
77
+ return this.read_i32();
78
+ }
79
+ read_i64() {
80
+ return this.decode_zz_u64(this.read_varint_u64());
81
+ }
82
+ read_f32() {
83
+ if (this._cursor + 4 > this._buffer.length) {
84
+ throw new RangeError("vecs-wire/decoder read_f32: Attempt to read beyond buffer size");
85
+ }
86
+ const value = new DataView(this._buffer.buffer, this._buffer.byteOffset + this._cursor, 4).getFloat32(0, true);
87
+ this._cursor += 4;
88
+ return value;
89
+ }
90
+ read_f64() {
91
+ if (this._cursor + 8 > this._buffer.length) {
92
+ throw new RangeError("vecs-wire/decoder read_f64: Attempt to read beyond buffer size");
93
+ }
94
+ const value = new DataView(this._buffer.buffer, this._buffer.byteOffset + this._cursor, 8).getFloat64(0, true);
95
+ this._cursor += 8;
96
+ return value;
97
+ }
98
+ read_buffer_raw(len) {
99
+ if (this._cursor + len > this._buffer.length) {
100
+ throw new RangeError("vecs-wire/decoder read_buffer_raw: Attempt to read beyond buffer size");
101
+ }
102
+ const buf = this._buffer.subarray(this._cursor, this._cursor + len);
103
+ this._cursor += len;
104
+ return buf;
105
+ }
106
+ read_string() {
107
+ const len = this.read_u32();
108
+ if (len === 0) {
109
+ return "";
110
+ }
111
+ return new TextDecoder().decode(this.read_buffer_raw(len));
112
+ }
113
+ read_bytes() {
114
+ const len = this.read_u32();
115
+ return this.read_buffer_raw(len);
116
+ }
117
+ read_any() {
118
+ const ts = this.read(TagSize);
119
+ switch (ts.tag) {
120
+ case AnyType.null:
121
+ return null;
122
+ case AnyType.undefined:
123
+ return undefined;
124
+ case AnyType.boolean:
125
+ return ts.size === 1;
126
+ case AnyType.empty_object:
127
+ return {};
128
+ case AnyType.object: {
129
+ const obj = {};
130
+ for (let i = 0; i < ts.size; i++) {
131
+ const key = this.read_string();
132
+ const value = this.read_any();
133
+ obj[key] = value;
134
+ }
135
+ return obj;
136
+ }
137
+ case AnyType.empty_array:
138
+ return [];
139
+ case AnyType.array: {
140
+ const arr = [];
141
+ for (let i = 0; i < ts.size; i++) {
142
+ arr.push(this.read_any());
143
+ }
144
+ return arr;
145
+ }
146
+ case AnyType.empty_string:
147
+ return "";
148
+ case AnyType.string:
149
+ return new TextDecoder().decode(this.read_buffer_raw(ts.size));
150
+ case AnyType.number_integer: {
151
+ const bi = this.read_i64();
152
+ return canConvertToNumber(bi) ? Number(bi) : bi;
153
+ }
154
+ case AnyType.number_unsigned: {
155
+ const bi = this.read_u64();
156
+ return canConvertToNumber(bi) ? Number(bi) : bi;
157
+ }
158
+ case AnyType.number_float:
159
+ return ts.size === 4 ? this.read_f32() : this.read_f64();
160
+ case AnyType.bigint_integer:
161
+ return this.read_i64();
162
+ case AnyType.bigint_unsigned:
163
+ return this.read_u64();
164
+ case AnyType.empty_binary:
165
+ return this.read_buffer_raw(0);
166
+ case AnyType.binary:
167
+ return this.read_buffer_raw(ts.size);
168
+ default:
169
+ throw new Error(`Unsupported any tag ${ts.tag}`);
170
+ }
171
+ }
172
+ read(C) {
173
+ const decodable = C;
174
+ if (typeof decodable.wireDecode !== "function") {
175
+ throw new TypeError("vecs-wire/decoder read requires a wireDecode method");
176
+ }
177
+ return decodable.wireDecode(this);
178
+ }
179
+ }
180
+ //# sourceMappingURL=decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../../../vecs-wire/src/decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export type WireScalarType = "bool" | "u8" | "i8" | "u16" | "i16" | "u32" | "i32" | "u64" | "i64" | "enum" | "f32" | "f64" | "string" | "bytes" | "any";
2
+ export type WireConstructor<T = unknown> = new () => T;
3
+ export type WireTypeSpec = WireScalarType | WireConstructor | readonly [WireScalarType | WireConstructor];
4
+ export declare function type(spec: WireTypeSpec): PropertyDecorator;