@reifydb/client 0.0.1-alpha.1 → 0.0.1-alpha.11

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Params, SchemaNode, FrameResults } from '@reifydb/core';
2
- export { Diagnostic, DiagnosticColumn, FrameResults, ReifyError, SingleFrameResult, Span, asFrameResults } from '@reifydb/core';
2
+ export { Diagnostic, DiagnosticColumn, Fragment, FrameResults, ReifyError, SingleFrameResult, asFrameResults } from '@reifydb/core';
3
3
 
4
4
  /**
5
5
  * MIT License
@@ -28,12 +28,17 @@ interface WsClientOptions {
28
28
  url: string;
29
29
  timeoutMs?: number;
30
30
  token?: string;
31
+ maxReconnectAttempts?: number;
32
+ reconnectDelayMs?: number;
31
33
  }
32
34
  declare class WsClient {
33
35
  private options;
34
36
  private nextId;
35
37
  private socket;
36
38
  private pending;
39
+ private reconnectAttempts;
40
+ private shouldReconnect;
41
+ private isReconnecting;
37
42
  private constructor();
38
43
  static connect(options: WsClientOptions): Promise<WsClient>;
39
44
  /**
@@ -53,6 +58,10 @@ declare class WsClient {
53
58
  send(req: CommandRequest | QueryRequest): Promise<any>;
54
59
  private transformResult;
55
60
  disconnect(): void;
61
+ private handleDisconnect;
62
+ private attemptReconnect;
63
+ private setupSocketHandlers;
64
+ private rejectAllPendingRequests;
56
65
  }
57
66
 
58
67
  /**
package/dist/index.js CHANGED
@@ -4,16 +4,7 @@ import {
4
4
  } from "@reifydb/core";
5
5
 
6
6
  // src/types.ts
7
- import {
8
- Params,
9
- Frame,
10
- DiagnosticColumn,
11
- Span,
12
- Diagnostic,
13
- Column,
14
- ErrorResponse,
15
- ReifyError
16
- } from "@reifydb/core";
7
+ import { ReifyError } from "@reifydb/core";
17
8
 
18
9
  // src/encoder.ts
19
10
  import { UNDEFINED_VALUE } from "@reifydb/core";
@@ -25,7 +16,7 @@ function encodeValue(value) {
25
16
  return value.encode();
26
17
  }
27
18
  if (typeof value === "boolean") {
28
- return { type: "Bool", value: value.toString() };
19
+ return { type: "Boolean", value: value.toString() };
29
20
  }
30
21
  if (typeof value === "number") {
31
22
  if (Number.isInteger(value)) {
@@ -116,26 +107,17 @@ async function createWebSocket(url) {
116
107
  var WsClient = class _WsClient {
117
108
  constructor(socket, options) {
118
109
  this.pending = /* @__PURE__ */ new Map();
110
+ this.reconnectAttempts = 0;
111
+ this.shouldReconnect = true;
112
+ this.isReconnecting = false;
119
113
  this.options = options;
120
114
  this.nextId = 1;
121
115
  this.socket = socket;
122
- this.socket.onmessage = (event) => {
123
- const msg = JSON.parse(event.data);
124
- const { id, type, payload } = msg;
125
- const handler = this.pending.get(id);
126
- if (!handler) {
127
- return;
128
- }
129
- this.pending.delete(id);
130
- handler({ id, type, payload });
131
- };
132
- this.socket.onerror = (err) => {
133
- console.error("WebSocket error", err);
134
- };
116
+ this.setupSocketHandlers();
135
117
  }
136
118
  static async connect(options) {
137
119
  const socket = await createWebSocket(options.url);
138
- if (socket.readyState !== socket.OPEN) {
120
+ if (socket.readyState !== 1) {
139
121
  await new Promise((resolve, reject) => {
140
122
  const onOpen = () => {
141
123
  socket.removeEventListener("open", onOpen);
@@ -151,7 +133,7 @@ var WsClient = class _WsClient {
151
133
  socket.addEventListener("error", onError);
152
134
  });
153
135
  }
154
- socket.send('{"id":"reifydb-auth-1","type":"Auth","payload":{"token":"mysecrettoken"}}');
136
+ socket.send('{"id":"auth-1","type":"Auth","payload":{"token":"mysecrettoken"}}');
155
137
  return new _WsClient(socket, options);
156
138
  }
157
139
  /**
@@ -210,6 +192,19 @@ var WsClient = class _WsClient {
210
192
  }
211
193
  async send(req) {
212
194
  const id = req.id;
195
+ if (this.socket.readyState !== 1) {
196
+ throw new ReifyError({
197
+ id: "connection-error",
198
+ type: "Err",
199
+ payload: {
200
+ diagnostic: {
201
+ code: "CONNECTION_LOST",
202
+ message: "Connection lost",
203
+ notes: []
204
+ }
205
+ }
206
+ });
207
+ }
213
208
  const response = await new Promise((resolve, reject) => {
214
209
  const timeout = setTimeout(() => {
215
210
  this.pending.delete(id);
@@ -237,8 +232,8 @@ var WsClient = class _WsClient {
237
232
  for (const [key, value] of Object.entries(row)) {
238
233
  const propertySchema = resultSchema.properties[key];
239
234
  if (propertySchema && propertySchema.kind === "primitive") {
240
- if (value && typeof value === "object" && "value" in value) {
241
- const rawValue = value.value;
235
+ if (value && typeof value === "object" && typeof value.valueOf === "function") {
236
+ const rawValue = value.valueOf();
242
237
  if (propertySchema.type === "RowNumber" && typeof rawValue === "number") {
243
238
  transformedRow[key] = BigInt(rawValue);
244
239
  } else {
@@ -256,8 +251,8 @@ var WsClient = class _WsClient {
256
251
  return transformedRow;
257
252
  }
258
253
  if (resultSchema && resultSchema.kind === "primitive") {
259
- if (row && typeof row === "object" && "value" in row) {
260
- const rawValue = row.value;
254
+ if (row && typeof row === "object" && typeof row.valueOf === "function") {
255
+ const rawValue = row.valueOf();
261
256
  if (resultSchema.type === "RowNumber" && typeof rawValue === "number") {
262
257
  return BigInt(rawValue);
263
258
  }
@@ -283,23 +278,107 @@ var WsClient = class _WsClient {
283
278
  return row;
284
279
  }
285
280
  disconnect() {
281
+ this.shouldReconnect = false;
286
282
  this.socket.close();
287
283
  }
284
+ handleDisconnect() {
285
+ this.rejectAllPendingRequests();
286
+ if (!this.shouldReconnect || this.isReconnecting) {
287
+ return;
288
+ }
289
+ const maxAttempts = this.options.maxReconnectAttempts ?? 5;
290
+ if (this.reconnectAttempts >= maxAttempts) {
291
+ console.error(`Max reconnection attempts (${maxAttempts}) reached`);
292
+ return;
293
+ }
294
+ this.attemptReconnect();
295
+ }
296
+ async attemptReconnect() {
297
+ this.isReconnecting = true;
298
+ this.reconnectAttempts++;
299
+ const baseDelay = this.options.reconnectDelayMs ?? 1e3;
300
+ const delay = baseDelay * Math.pow(2, this.reconnectAttempts - 1);
301
+ console.log(`Attempting reconnection ${this.reconnectAttempts} after ${delay}ms...`);
302
+ await new Promise((resolve) => setTimeout(resolve, delay));
303
+ try {
304
+ const socket = await createWebSocket(this.options.url);
305
+ if (socket.readyState !== 1) {
306
+ await new Promise((resolve, reject) => {
307
+ const onOpen = () => {
308
+ socket.removeEventListener("open", onOpen);
309
+ socket.removeEventListener("error", onError);
310
+ resolve();
311
+ };
312
+ const onError = () => {
313
+ socket.removeEventListener("open", onOpen);
314
+ socket.removeEventListener("error", onError);
315
+ reject(new Error("WebSocket connection failed"));
316
+ };
317
+ socket.addEventListener("open", onOpen);
318
+ socket.addEventListener("error", onError);
319
+ });
320
+ }
321
+ socket.send('{"id":"auth-1","type":"Auth","payload":{"token":"mysecrettoken"}}');
322
+ this.socket = socket;
323
+ this.setupSocketHandlers();
324
+ this.reconnectAttempts = 0;
325
+ this.isReconnecting = false;
326
+ console.log("Reconnection successful");
327
+ } catch (error) {
328
+ console.error("Reconnection attempt failed:", error);
329
+ this.isReconnecting = false;
330
+ this.handleDisconnect();
331
+ }
332
+ }
333
+ setupSocketHandlers() {
334
+ this.socket.onmessage = (event) => {
335
+ const msg = JSON.parse(event.data);
336
+ const { id, type, payload } = msg;
337
+ const handler = this.pending.get(id);
338
+ if (!handler) {
339
+ return;
340
+ }
341
+ this.pending.delete(id);
342
+ handler({ id, type, payload });
343
+ };
344
+ this.socket.onerror = (err) => {
345
+ console.error("WebSocket error", err);
346
+ };
347
+ this.socket.onclose = () => {
348
+ this.handleDisconnect();
349
+ };
350
+ }
351
+ rejectAllPendingRequests() {
352
+ const error = {
353
+ id: "connection-error",
354
+ type: "Err",
355
+ payload: {
356
+ diagnostic: {
357
+ code: "CONNECTION_LOST",
358
+ message: "Connection lost",
359
+ notes: []
360
+ }
361
+ }
362
+ };
363
+ for (const handler of this.pending.values()) {
364
+ handler(error);
365
+ }
366
+ this.pending.clear();
367
+ }
288
368
  };
289
369
  function columnsToRows(columns) {
290
370
  const rowCount = columns[0]?.data.length ?? 0;
291
371
  return Array.from({ length: rowCount }, (_, i) => {
292
372
  const row = {};
293
373
  for (const col of columns) {
294
- row[col.name] = decode({ type: col.ty, value: col.data[i] });
374
+ row[col.name] = decode({ type: col.type, value: col.data[i] });
295
375
  }
296
376
  return row;
297
377
  });
298
378
  }
299
379
 
300
380
  // src/index.ts
301
- import { ReifyError as ReifyError2, Diagnostic as Diagnostic2, Span as Span2, DiagnosticColumn as DiagnosticColumn2 } from "@reifydb/core";
302
- import { FrameResults as FrameResults2, SingleFrameResult, asFrameResults } from "@reifydb/core";
381
+ import { ReifyError as ReifyError2, asFrameResults } from "@reifydb/core";
303
382
  var Client = class {
304
383
  /**
305
384
  * Connect to ReifyDB via WebSocket
@@ -313,12 +392,7 @@ var Client = class {
313
392
  };
314
393
  export {
315
394
  Client,
316
- Diagnostic2 as Diagnostic,
317
- DiagnosticColumn2 as DiagnosticColumn,
318
- FrameResults2 as FrameResults,
319
395
  ReifyError2 as ReifyError,
320
- SingleFrameResult,
321
- Span2 as Span,
322
396
  WsClient,
323
397
  asFrameResults
324
398
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ws.ts","../src/types.ts","../src/encoder.ts","../src/index.ts"],"sourcesContent":["/*\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\nimport {\n decode,\n Value,\n SchemaNode,\n InferSchemas,\n FrameResults\n} from \"@reifydb/core\";\n\nimport {\n CommandRequest,\n CommandResponse,\n ErrorResponse,\n QueryRequest,\n QueryResponse,\n ReifyError,\n Column,\n Params\n} from \"./types\";\nimport {encodeParams} from \"./encoder\";\n\nexport interface WsClientOptions {\n url: string;\n timeoutMs?: number;\n token?: string;\n}\n\ntype ResponsePayload = ErrorResponse | CommandResponse | QueryResponse;\n\nasync function createWebSocket(url: string): Promise<WebSocket> {\n if (typeof window !== \"undefined\" && typeof window.WebSocket !== \"undefined\") {\n return new WebSocket(url);\n } else {\n //@ts-ignore\n const wsModule = await import(\"ws\");\n return new wsModule.WebSocket(url);\n }\n}\n\n\nexport class WsClient {\n private options: WsClientOptions;\n private nextId: number;\n private socket: WebSocket;\n private pending = new Map<string, (response: ResponsePayload) => void>();\n\n private constructor(socket: WebSocket, options: WsClientOptions) {\n this.options = options;\n this.nextId = 1;\n this.socket = socket;\n\n this.socket.onmessage = (event) => {\n const msg = JSON.parse(event.data);\n const {id, type, payload} = msg;\n\n const handler = this.pending.get(id);\n if (!handler) {\n return;\n }\n\n this.pending.delete(id);\n handler({id, type, payload});\n };\n\n this.socket.onerror = (err) => {\n console.error(\"WebSocket error\", err);\n };\n }\n\n static async connect(options: WsClientOptions): Promise<WsClient> {\n const socket = await createWebSocket(options.url);\n\n // Wait for connection to open if not already open\n if (socket.readyState !== socket.OPEN) {\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n socket.removeEventListener(\"open\", onOpen);\n socket.removeEventListener(\"error\", onError);\n resolve();\n };\n\n const onError = () => {\n socket.removeEventListener(\"open\", onOpen);\n socket.removeEventListener(\"error\", onError);\n reject(new Error(\"WebSocket connection failed\"));\n };\n\n socket.addEventListener(\"open\", onOpen);\n socket.addEventListener(\"error\", onError);\n });\n }\n\n socket.send(\"{\\\"id\\\":\\\"reifydb-auth-1\\\",\\\"type\\\":\\\"Auth\\\",\\\"payload\\\":{\\\"token\\\":\\\"mysecrettoken\\\"}}\");\n\n return new WsClient(socket, options);\n }\n\n /**\n * Execute command(s) with schemas for each statement for proper type inference\n * @param statements - Single statement or array of RQL commands\n * @param params - Parameters for the commands (use null or {} if no params)\n * @param schemas - Schema for each statement's result\n */\n async command<const S extends readonly SchemaNode[]>(\n statements: string | string[],\n params: any,\n schemas: S\n ): Promise<FrameResults<S>> {\n const id = `req-${this.nextId++}`;\n\n // Normalize statements to array\n const statementArray = Array.isArray(statements) ? statements : [statements];\n\n // Encode params without schema assumptions\n const encodedParams = params !== undefined && params !== null\n ? encodeParams(params)\n : undefined;\n\n const result = await this.send({\n id,\n type: \"Command\",\n payload: {\n statements: statementArray,\n params: encodedParams\n },\n });\n\n // Transform each frame with its corresponding schema\n const transformedFrames = result.map((frame: any, frameIndex: number) => {\n const frameSchema = schemas[frameIndex];\n if (!frameSchema) {\n return frame; // No schema for this frame, return as-is\n }\n return frame.map((row: any) => this.transformResult(row, frameSchema));\n });\n\n return transformedFrames as FrameResults<S>;\n }\n\n\n /**\n * Execute query(s) with schemas for each statement for proper type inference\n * @param statements - Single statement or array of RQL queries\n * @param params - Parameters for the queries (use null or {} if no params)\n * @param schemas - Schema for each statement's result\n */\n async query<const S extends readonly SchemaNode[]>(\n statements: string | string[],\n params: any,\n schemas: S\n ): Promise<FrameResults<S>> {\n const id = `req-${this.nextId++}`;\n\n // Normalize statements to array\n const statementArray = Array.isArray(statements) ? statements : [statements];\n\n // Encode params without schema assumptions\n const encodedParams = params !== undefined && params !== null\n ? encodeParams(params)\n : undefined;\n\n const result = await this.send({\n id,\n type: \"Query\",\n payload: {\n statements: statementArray,\n params: encodedParams\n },\n });\n\n // Transform each frame with its corresponding schema\n const transformedFrames = result.map((frame: any, frameIndex: number) => {\n const frameSchema = schemas[frameIndex];\n if (!frameSchema) {\n return frame; // No schema for this frame, return as-is\n }\n return frame.map((row: any) => this.transformResult(row, frameSchema));\n });\n\n return transformedFrames as FrameResults<S>;\n }\n\n async send(req: CommandRequest | QueryRequest): Promise<any> {\n const id = req.id;\n\n const response = await new Promise<ResponsePayload>((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(id);\n reject(new Error(\"ReifyDB query timeout\"));\n }, this.options.timeoutMs);\n\n this.pending.set(id, (res) => {\n clearTimeout(timeout);\n resolve(res);\n });\n\n this.socket.send(JSON.stringify(req));\n });\n\n if (response.type === \"Err\") {\n throw new ReifyError(response);\n\n }\n\n if (response.type !== req.type) {\n throw new Error(`Unexpected response type: ${response.type}`);\n }\n\n return response.payload.frames.map((frame) =>\n columnsToRows(frame.columns)\n );\n }\n\n\n private transformResult(row: any, resultSchema: any): any {\n // Handle object schema with primitive or value properties\n if (resultSchema && resultSchema.kind === 'object' && resultSchema.properties) {\n const transformedRow: any = {};\n for (const [key, value] of Object.entries(row)) {\n const propertySchema = resultSchema.properties[key];\n if (propertySchema && propertySchema.kind === 'primitive') {\n // Convert Value objects to primitives for primitive schema properties\n if (value && typeof value === 'object' && 'value' in value) {\n const rawValue = (value as any).value;\n // Special handling for RowNumber - ensure it's returned as bigint\n if (propertySchema.type === 'RowNumber' && typeof rawValue === 'number') {\n transformedRow[key] = BigInt(rawValue);\n } else {\n transformedRow[key] = rawValue;\n }\n } else {\n transformedRow[key] = value;\n }\n } else if (propertySchema && propertySchema.kind === 'value') {\n // Keep Value objects as-is for value schema properties\n transformedRow[key] = value;\n } else {\n // Recursively transform nested structures\n transformedRow[key] = propertySchema ? this.transformResult(value, propertySchema) : value;\n }\n }\n return transformedRow;\n }\n\n // Handle primitive schema transformation\n if (resultSchema && resultSchema.kind === 'primitive') {\n // Single primitive value - extract from Value object if needed\n if (row && typeof row === 'object' && 'value' in row) {\n const rawValue = row.value;\n // Special handling for RowNumber - ensure it's returned as bigint\n if (resultSchema.type === 'RowNumber' && typeof rawValue === 'number') {\n return BigInt(rawValue);\n }\n return rawValue;\n }\n return row;\n }\n\n // Handle value schema transformation - keep Value objects as-is\n if (resultSchema && resultSchema.kind === 'value') {\n return row;\n }\n\n // Handle array schema\n if (resultSchema && resultSchema.kind === 'array') {\n if (Array.isArray(row)) {\n return row.map((item: any) => this.transformResult(item, resultSchema.items));\n }\n return row;\n }\n\n // Handle optional schema\n if (resultSchema && resultSchema.kind === 'optional') {\n if (row === undefined || row === null) {\n return undefined;\n }\n return this.transformResult(row, resultSchema.schema);\n }\n\n // Default: return as-is\n return row;\n }\n\n disconnect() {\n this.socket.close();\n }\n}\n\n\nfunction columnsToRows(columns: Column[]): Record<string, Value>[] {\n const rowCount = columns[0]?.data.length ?? 0;\n return Array.from({length: rowCount}, (_, i) => {\n const row: Record<string, Value> = {};\n for (const col of columns) {\n row[col.name] = decode({type: col.ty, value: col.data[i]});\n }\n return row;\n });\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport { Params, Frame } from \"@reifydb/core\";\n\n// Re-export common types from core\nexport {\n Params,\n Frame,\n DiagnosticColumn,\n Span,\n Diagnostic,\n Column,\n ErrorResponse,\n ReifyError\n} from \"@reifydb/core\";\n\nexport interface CommandRequest {\n id: string;\n type: \"Command\";\n payload: {\n statements: string[];\n params?: Params;\n }\n}\n\nexport interface CommandResponse {\n id: string;\n type: \"Command\";\n payload: {\n frames: Frame[];\n };\n}\n\nexport interface QueryRequest {\n id: string;\n type: \"Query\";\n payload: {\n statements: string[];\n params?: Params;\n }\n}\n\nexport interface QueryResponse {\n id: string;\n type: \"Query\";\n payload: {\n frames: Frame[];\n };\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, UNDEFINED_VALUE} from \"@reifydb/core\";\n\nexport interface TypeValuePair {\n type: Type;\n value: string;\n}\n\nexport function encodeValue(value: any): TypeValuePair {\n\n if (value === null || value === undefined) {\n return { type: 'Undefined', value: UNDEFINED_VALUE };\n }\n \n if (value && typeof value === 'object' && 'encode' in value && typeof value.encode === 'function') {\n return value.encode();\n }\n \n if (typeof value === 'boolean') {\n return { type: 'Bool', value: value.toString() };\n }\n \n if (typeof value === 'number') {\n if (Number.isInteger(value)) {\n // Choose appropriate integer type based on value range\n if (value >= -128 && value <= 127) {\n return { type: 'Int1', value: value.toString() };\n } else if (value >= -32768 && value <= 32767) {\n return { type: 'Int2', value: value.toString() };\n } else if (value >= -2147483648 && value <= 2147483647) {\n return { type: 'Int4', value: value.toString() };\n } else {\n return { type: 'Int8', value: value.toString() };\n }\n } else {\n // Floating point number\n return { type: 'Float8', value: value.toString() };\n }\n }\n \n if (typeof value === 'string') {\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[47][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value)) {\n const version = value[14];\n if (version === '4') {\n return { type: 'Uuid4', value: value };\n } else if (version === '7') {\n return { type: 'Uuid7', value: value };\n }\n }\n return { type: 'Utf8', value: value };\n }\n \n if (typeof value === 'bigint') {\n if (value >= BigInt(0)) {\n if (value <= BigInt(255)) {\n return { type: 'Uint1', value: value.toString() };\n } else if (value <= BigInt(65535)) {\n return { type: 'Uint2', value: value.toString() };\n } else if (value <= BigInt(4294967295)) {\n return { type: 'Uint4', value: value.toString() };\n } else if (value <= BigInt('18446744073709551615')) {\n return { type: 'Uint8', value: value.toString() };\n } else {\n return { type: 'Uint16', value: value.toString() };\n }\n } else {\n if (value >= BigInt('-9223372036854775808')) {\n return { type: 'Int8', value: value.toString() };\n } else {\n return { type: 'Int16', value: value.toString() };\n }\n }\n }\n \n if (value instanceof Date) {\n return { type: 'DateTime', value: value.toISOString() };\n }\n \n if (value instanceof Uint8Array) {\n const hex = Array.from(value)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n return { type: 'Blob', value: '0x' + hex };\n }\n \n if (value instanceof ArrayBuffer) {\n const uint8Array = new Uint8Array(value);\n const hex = Array.from(uint8Array)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n return { type: 'Blob', value: '0x' + hex };\n }\n \n throw new Error(`Cannot encode value of type ${typeof value}: ${value}`);\n}\n\nexport function encodeParams(params: any): TypeValuePair[] | Record<string, TypeValuePair> {\n if (params === undefined || params === null) {\n return [];\n }\n \n if (Array.isArray(params)) {\n return params.map(param => encodeValue(param));\n } else if (typeof params === 'object') {\n const encoded: Record<string, TypeValuePair> = {};\n for (const [key, value] of Object.entries(params)) {\n encoded[key] = encodeValue(value);\n }\n return encoded;\n }\n \n throw new Error(`Invalid parameters type: expected array or object, got ${typeof params}`);\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {WsClient, WsClientOptions} from \"./ws\";\n\nexport class Client {\n /**\n * Connect to ReifyDB via WebSocket\n * @param url WebSocket URL\n * @param options Optional configuration\n * @returns Connected WebSocket client\n */\n static async connect_ws(url: string, options: Omit<WsClientOptions, 'url'> = {}): Promise<WsClient> {\n return WsClient.connect({url, ...options});\n }\n}\n\nexport {ReifyError, Diagnostic, Span, DiagnosticColumn} from \"@reifydb/core\";\nexport {WsClient, WsClientOptions} from \"./ws\";\nexport {FrameResults, SingleFrameResult, asFrameResults} from \"@reifydb/core\";"],"mappings":";AAKA;AAAA,EACI;AAAA,OAKG;;;ACFP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;;;ACZP,SAAc,uBAAsB;AAO7B,SAAS,YAAY,OAA2B;AAEnD,MAAI,UAAU,QAAQ,UAAU,QAAW;AACvC,WAAO,EAAE,MAAM,aAAa,OAAO,gBAAgB;AAAA,EACvD;AAEA,MAAI,SAAS,OAAO,UAAU,YAAY,YAAY,SAAS,OAAO,MAAM,WAAW,YAAY;AAC/F,WAAO,MAAM,OAAO;AAAA,EACxB;AAEA,MAAI,OAAO,UAAU,WAAW;AAC5B,WAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AAAA,EACnD;AAEA,MAAI,OAAO,UAAU,UAAU;AAC3B,QAAI,OAAO,UAAU,KAAK,GAAG;AAEzB,UAAI,SAAS,QAAQ,SAAS,KAAK;AAC/B,eAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AAAA,MACnD,WAAW,SAAS,UAAU,SAAS,OAAO;AAC1C,eAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AAAA,MACnD,WAAW,SAAS,eAAe,SAAS,YAAY;AACpD,eAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AAAA,MACnD,OAAO;AACH,eAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AAAA,MACnD;AAAA,IACJ,OAAO;AAEH,aAAO,EAAE,MAAM,UAAU,OAAO,MAAM,SAAS,EAAE;AAAA,IACrD;AAAA,EACJ;AAEA,MAAI,OAAO,UAAU,UAAU;AAC3B,QAAI,4EAA4E,KAAK,KAAK,GAAG;AACzF,YAAM,UAAU,MAAM,EAAE;AACxB,UAAI,YAAY,KAAK;AACjB,eAAO,EAAE,MAAM,SAAS,MAAa;AAAA,MACzC,WAAW,YAAY,KAAK;AACxB,eAAO,EAAE,MAAM,SAAS,MAAa;AAAA,MACzC;AAAA,IACJ;AACA,WAAO,EAAE,MAAM,QAAQ,MAAa;AAAA,EACxC;AAEA,MAAI,OAAO,UAAU,UAAU;AAC3B,QAAI,SAAS,OAAO,CAAC,GAAG;AACpB,UAAI,SAAS,OAAO,GAAG,GAAG;AACtB,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,EAAE;AAAA,MACpD,WAAW,SAAS,OAAO,KAAK,GAAG;AAC/B,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,EAAE;AAAA,MACpD,WAAW,SAAS,OAAO,UAAU,GAAG;AACpC,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,EAAE;AAAA,MACpD,WAAW,SAAS,OAAO,sBAAsB,GAAG;AAChD,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,EAAE;AAAA,MACpD,OAAO;AACH,eAAO,EAAE,MAAM,UAAU,OAAO,MAAM,SAAS,EAAE;AAAA,MACrD;AAAA,IACJ,OAAO;AACH,UAAI,SAAS,OAAO,sBAAsB,GAAG;AACzC,eAAO,EAAE,MAAM,QAAQ,OAAO,MAAM,SAAS,EAAE;AAAA,MACnD,OAAO;AACH,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,EAAE;AAAA,MACpD;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,iBAAiB,MAAM;AACvB,WAAO,EAAE,MAAM,YAAY,OAAO,MAAM,YAAY,EAAE;AAAA,EAC1D;AAEA,MAAI,iBAAiB,YAAY;AAC7B,UAAM,MAAM,MAAM,KAAK,KAAK,EACvB,IAAI,OAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EACxC,KAAK,EAAE;AACZ,WAAO,EAAE,MAAM,QAAQ,OAAO,OAAO,IAAI;AAAA,EAC7C;AAEA,MAAI,iBAAiB,aAAa;AAC9B,UAAM,aAAa,IAAI,WAAW,KAAK;AACvC,UAAM,MAAM,MAAM,KAAK,UAAU,EAC5B,IAAI,OAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EACxC,KAAK,EAAE;AACZ,WAAO,EAAE,MAAM,QAAQ,OAAO,OAAO,IAAI;AAAA,EAC7C;AAEA,QAAM,IAAI,MAAM,+BAA+B,OAAO,KAAK,KAAK,KAAK,EAAE;AAC3E;AAEO,SAAS,aAAa,QAA8D;AACvF,MAAI,WAAW,UAAa,WAAW,MAAM;AACzC,WAAO,CAAC;AAAA,EACZ;AAEA,MAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,WAAO,OAAO,IAAI,WAAS,YAAY,KAAK,CAAC;AAAA,EACjD,WAAW,OAAO,WAAW,UAAU;AACnC,UAAM,UAAyC,CAAC;AAChD,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAC/C,cAAQ,GAAG,IAAI,YAAY,KAAK;AAAA,IACpC;AACA,WAAO;AAAA,EACX;AAEA,QAAM,IAAI,MAAM,0DAA0D,OAAO,MAAM,EAAE;AAC7F;;;AFpFA,eAAe,gBAAgB,KAAiC;AAC5D,MAAI,OAAO,WAAW,eAAe,OAAO,OAAO,cAAc,aAAa;AAC1E,WAAO,IAAI,UAAU,GAAG;AAAA,EAC5B,OAAO;AAEH,UAAM,WAAW,MAAM,OAAO,IAAI;AAClC,WAAO,IAAI,SAAS,UAAU,GAAG;AAAA,EACrC;AACJ;AAGO,IAAM,WAAN,MAAM,UAAS;AAAA,EAMV,YAAY,QAAmB,SAA0B;AAFjE,SAAQ,UAAU,oBAAI,IAAiD;AAGnE,SAAK,UAAU;AACf,SAAK,SAAS;AACd,SAAK,SAAS;AAEd,SAAK,OAAO,YAAY,CAAC,UAAU;AAC/B,YAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AACjC,YAAM,EAAC,IAAI,MAAM,QAAO,IAAI;AAE5B,YAAM,UAAU,KAAK,QAAQ,IAAI,EAAE;AACnC,UAAI,CAAC,SAAS;AACV;AAAA,MACJ;AAEA,WAAK,QAAQ,OAAO,EAAE;AACtB,cAAQ,EAAC,IAAI,MAAM,QAAO,CAAC;AAAA,IAC/B;AAEA,SAAK,OAAO,UAAU,CAAC,QAAQ;AAC3B,cAAQ,MAAM,mBAAmB,GAAG;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,aAAa,QAAQ,SAA6C;AAC9D,UAAM,SAAS,MAAM,gBAAgB,QAAQ,GAAG;AAGhD,QAAI,OAAO,eAAe,OAAO,MAAM;AACnC,YAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AACzC,cAAM,SAAS,MAAM;AACjB,iBAAO,oBAAoB,QAAQ,MAAM;AACzC,iBAAO,oBAAoB,SAAS,OAAO;AAC3C,kBAAQ;AAAA,QACZ;AAEA,cAAM,UAAU,MAAM;AAClB,iBAAO,oBAAoB,QAAQ,MAAM;AACzC,iBAAO,oBAAoB,SAAS,OAAO;AAC3C,iBAAO,IAAI,MAAM,6BAA6B,CAAC;AAAA,QACnD;AAEA,eAAO,iBAAiB,QAAQ,MAAM;AACtC,eAAO,iBAAiB,SAAS,OAAO;AAAA,MAC5C,CAAC;AAAA,IACL;AAEA,WAAO,KAAK,2EAAyF;AAErG,WAAO,IAAI,UAAS,QAAQ,OAAO;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,QACF,YACA,QACA,SACwB;AACxB,UAAM,KAAK,OAAO,KAAK,QAAQ;AAG/B,UAAM,iBAAiB,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;AAG3E,UAAM,gBAAgB,WAAW,UAAa,WAAW,OACnD,aAAa,MAAM,IACnB;AAEN,UAAM,SAAS,MAAM,KAAK,KAAK;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAGD,UAAM,oBAAoB,OAAO,IAAI,CAAC,OAAY,eAAuB;AACrE,YAAM,cAAc,QAAQ,UAAU;AACtC,UAAI,CAAC,aAAa;AACd,eAAO;AAAA,MACX;AACA,aAAO,MAAM,IAAI,CAAC,QAAa,KAAK,gBAAgB,KAAK,WAAW,CAAC;AAAA,IACzE,CAAC;AAED,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,MACF,YACA,QACA,SACwB;AACxB,UAAM,KAAK,OAAO,KAAK,QAAQ;AAG/B,UAAM,iBAAiB,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;AAG3E,UAAM,gBAAgB,WAAW,UAAa,WAAW,OACnD,aAAa,MAAM,IACnB;AAEN,UAAM,SAAS,MAAM,KAAK,KAAK;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAGD,UAAM,oBAAoB,OAAO,IAAI,CAAC,OAAY,eAAuB;AACrE,YAAM,cAAc,QAAQ,UAAU;AACtC,UAAI,CAAC,aAAa;AACd,eAAO;AAAA,MACX;AACA,aAAO,MAAM,IAAI,CAAC,QAAa,KAAK,gBAAgB,KAAK,WAAW,CAAC;AAAA,IACzE,CAAC;AAED,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,KAAK,KAAkD;AACzD,UAAM,KAAK,IAAI;AAEf,UAAM,WAAW,MAAM,IAAI,QAAyB,CAAC,SAAS,WAAW;AACrE,YAAM,UAAU,WAAW,MAAM;AAC7B,aAAK,QAAQ,OAAO,EAAE;AACtB,eAAO,IAAI,MAAM,uBAAuB,CAAC;AAAA,MAC7C,GAAG,KAAK,QAAQ,SAAS;AAEzB,WAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAC1B,qBAAa,OAAO;AACpB,gBAAQ,GAAG;AAAA,MACf,CAAC;AAED,WAAK,OAAO,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,IACxC,CAAC;AAED,QAAI,SAAS,SAAS,OAAO;AACzB,YAAM,IAAI,WAAW,QAAQ;AAAA,IAEjC;AAEA,QAAI,SAAS,SAAS,IAAI,MAAM;AAC5B,YAAM,IAAI,MAAM,6BAA6B,SAAS,IAAI,EAAE;AAAA,IAChE;AAEA,WAAO,SAAS,QAAQ,OAAO;AAAA,MAAI,CAAC,UAChC,cAAc,MAAM,OAAO;AAAA,IAC/B;AAAA,EACJ;AAAA,EAGQ,gBAAgB,KAAU,cAAwB;AAEtD,QAAI,gBAAgB,aAAa,SAAS,YAAY,aAAa,YAAY;AAC3E,YAAM,iBAAsB,CAAC;AAC7B,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5C,cAAM,iBAAiB,aAAa,WAAW,GAAG;AAClD,YAAI,kBAAkB,eAAe,SAAS,aAAa;AAEvD,cAAI,SAAS,OAAO,UAAU,YAAY,WAAW,OAAO;AACxD,kBAAM,WAAY,MAAc;AAEhC,gBAAI,eAAe,SAAS,eAAe,OAAO,aAAa,UAAU;AACrE,6BAAe,GAAG,IAAI,OAAO,QAAQ;AAAA,YACzC,OAAO;AACH,6BAAe,GAAG,IAAI;AAAA,YAC1B;AAAA,UACJ,OAAO;AACH,2BAAe,GAAG,IAAI;AAAA,UAC1B;AAAA,QACJ,WAAW,kBAAkB,eAAe,SAAS,SAAS;AAE1D,yBAAe,GAAG,IAAI;AAAA,QAC1B,OAAO;AAEH,yBAAe,GAAG,IAAI,iBAAiB,KAAK,gBAAgB,OAAO,cAAc,IAAI;AAAA,QACzF;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAGA,QAAI,gBAAgB,aAAa,SAAS,aAAa;AAEnD,UAAI,OAAO,OAAO,QAAQ,YAAY,WAAW,KAAK;AAClD,cAAM,WAAW,IAAI;AAErB,YAAI,aAAa,SAAS,eAAe,OAAO,aAAa,UAAU;AACnE,iBAAO,OAAO,QAAQ;AAAA,QAC1B;AACA,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AAGA,QAAI,gBAAgB,aAAa,SAAS,SAAS;AAC/C,aAAO;AAAA,IACX;AAGA,QAAI,gBAAgB,aAAa,SAAS,SAAS;AAC/C,UAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,eAAO,IAAI,IAAI,CAAC,SAAc,KAAK,gBAAgB,MAAM,aAAa,KAAK,CAAC;AAAA,MAChF;AACA,aAAO;AAAA,IACX;AAGA,QAAI,gBAAgB,aAAa,SAAS,YAAY;AAClD,UAAI,QAAQ,UAAa,QAAQ,MAAM;AACnC,eAAO;AAAA,MACX;AACA,aAAO,KAAK,gBAAgB,KAAK,aAAa,MAAM;AAAA,IACxD;AAGA,WAAO;AAAA,EACX;AAAA,EAEA,aAAa;AACT,SAAK,OAAO,MAAM;AAAA,EACtB;AACJ;AAGA,SAAS,cAAc,SAA4C;AAC/D,QAAM,WAAW,QAAQ,CAAC,GAAG,KAAK,UAAU;AAC5C,SAAO,MAAM,KAAK,EAAC,QAAQ,SAAQ,GAAG,CAAC,GAAG,MAAM;AAC5C,UAAM,MAA6B,CAAC;AACpC,eAAW,OAAO,SAAS;AACvB,UAAI,IAAI,IAAI,IAAI,OAAO,EAAC,MAAM,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC,EAAC,CAAC;AAAA,IAC7D;AACA,WAAO;AAAA,EACX,CAAC;AACL;;;AG1RA,SAAQ,cAAAA,aAAY,cAAAC,aAAY,QAAAC,OAAM,oBAAAC,yBAAuB;AAE7D,SAAQ,gBAAAC,eAAc,mBAAmB,sBAAqB;AAdvD,IAAM,SAAN,MAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhB,aAAa,WAAW,KAAa,UAAwC,CAAC,GAAsB;AAChG,WAAO,SAAS,QAAQ,EAAC,KAAK,GAAG,QAAO,CAAC;AAAA,EAC7C;AACJ;","names":["ReifyError","Diagnostic","Span","DiagnosticColumn","FrameResults"]}
1
+ {"version":3,"sources":["../src/ws.ts","../src/types.ts","../src/encoder.ts","../src/index.ts"],"sourcesContent":["/*\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\nimport {\n decode,\n Value\n} from \"@reifydb/core\";\nimport type {\n SchemaNode,\n InferSchemas,\n FrameResults\n} from \"@reifydb/core\";\n\nimport type {\n CommandRequest,\n CommandResponse,\n QueryRequest,\n QueryResponse,\n Column,\n Params,\n ErrorResponse\n} from \"./types\";\nimport {\n ReifyError\n} from \"./types\";\nimport {encodeParams} from \"./encoder\";\n\nexport interface WsClientOptions {\n url: string;\n timeoutMs?: number;\n token?: string;\n maxReconnectAttempts?: number;\n reconnectDelayMs?: number;\n}\n\ntype ResponsePayload = ErrorResponse | CommandResponse | QueryResponse;\n\nasync function createWebSocket(url: string): Promise<WebSocket> {\n if (typeof window !== \"undefined\" && typeof window.WebSocket !== \"undefined\") {\n return new WebSocket(url);\n } else {\n //@ts-ignore\n const wsModule = await import(\"ws\");\n return new wsModule.WebSocket(url);\n }\n}\n\n\nexport class WsClient {\n private options: WsClientOptions;\n private nextId: number;\n private socket: WebSocket;\n private pending = new Map<string, (response: ResponsePayload) => void>();\n private reconnectAttempts: number = 0;\n private shouldReconnect: boolean = true;\n private isReconnecting: boolean = false;\n\n private constructor(socket: WebSocket, options: WsClientOptions) {\n this.options = options;\n this.nextId = 1;\n this.socket = socket;\n\n this.setupSocketHandlers();\n }\n\n static async connect(options: WsClientOptions): Promise<WsClient> {\n const socket = await createWebSocket(options.url);\n\n // Wait for connection to open if not already open\n if (socket.readyState !== 1) {\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n socket.removeEventListener(\"open\", onOpen);\n socket.removeEventListener(\"error\", onError);\n resolve();\n };\n\n const onError = () => {\n socket.removeEventListener(\"open\", onOpen);\n socket.removeEventListener(\"error\", onError);\n reject(new Error(\"WebSocket connection failed\"));\n };\n\n socket.addEventListener(\"open\", onOpen);\n socket.addEventListener(\"error\", onError);\n });\n }\n\n socket.send(\"{\\\"id\\\":\\\"auth-1\\\",\\\"type\\\":\\\"Auth\\\",\\\"payload\\\":{\\\"token\\\":\\\"mysecrettoken\\\"}}\");\n\n return new WsClient(socket, options);\n }\n\n /**\n * Execute command(s) with schemas for each statement for proper type inference\n * @param statements - Single statement or array of RQL commands\n * @param params - Parameters for the commands (use null or {} if no params)\n * @param schemas - Schema for each statement's result\n */\n async command<const S extends readonly SchemaNode[]>(\n statements: string | string[],\n params: any,\n schemas: S\n ): Promise<FrameResults<S>> {\n const id = `req-${this.nextId++}`;\n\n // Normalize statements to array\n const statementArray = Array.isArray(statements) ? statements : [statements];\n\n // Encode params without schema assumptions\n const encodedParams = params !== undefined && params !== null\n ? encodeParams(params)\n : undefined;\n\n const result = await this.send({\n id,\n type: \"Command\",\n payload: {\n statements: statementArray,\n params: encodedParams\n },\n });\n\n // Transform each frame with its corresponding schema\n const transformedFrames = result.map((frame: any, frameIndex: number) => {\n const frameSchema = schemas[frameIndex];\n if (!frameSchema) {\n return frame; // No schema for this frame, return as-is\n }\n return frame.map((row: any) => this.transformResult(row, frameSchema));\n });\n\n return transformedFrames as FrameResults<S>;\n }\n\n\n /**\n * Execute query(s) with schemas for each statement for proper type inference\n * @param statements - Single statement or array of RQL queries\n * @param params - Parameters for the queries (use null or {} if no params)\n * @param schemas - Schema for each statement's result\n */\n async query<const S extends readonly SchemaNode[]>(\n statements: string | string[],\n params: any,\n schemas: S\n ): Promise<FrameResults<S>> {\n const id = `req-${this.nextId++}`;\n\n // Normalize statements to array\n const statementArray = Array.isArray(statements) ? statements : [statements];\n\n // Encode params without schema assumptions\n const encodedParams = params !== undefined && params !== null\n ? encodeParams(params)\n : undefined;\n\n const result = await this.send({\n id,\n type: \"Query\",\n payload: {\n statements: statementArray,\n params: encodedParams\n },\n });\n\n // Transform each frame with its corresponding schema\n const transformedFrames = result.map((frame: any, frameIndex: number) => {\n const frameSchema = schemas[frameIndex];\n if (!frameSchema) {\n return frame; // No schema for this frame, return as-is\n }\n return frame.map((row: any) => this.transformResult(row, frameSchema));\n });\n\n return transformedFrames as FrameResults<S>;\n }\n\n async send(req: CommandRequest | QueryRequest): Promise<any> {\n const id = req.id;\n\n if (this.socket.readyState !== 1) {\n throw new ReifyError({\n id: \"connection-error\",\n type: \"Err\",\n payload: {\n diagnostic: {\n code: \"CONNECTION_LOST\",\n message: \"Connection lost\",\n notes: []\n }\n }\n });\n }\n\n const response = await new Promise<ResponsePayload>((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(id);\n reject(new Error(\"ReifyDB query timeout\"));\n }, this.options.timeoutMs);\n\n this.pending.set(id, (res) => {\n clearTimeout(timeout);\n resolve(res);\n });\n\n this.socket.send(JSON.stringify(req));\n });\n\n if (response.type === \"Err\") {\n throw new ReifyError(response);\n\n }\n\n if (response.type !== req.type) {\n throw new Error(`Unexpected response type: ${response.type}`);\n }\n\n return response.payload.frames.map((frame) =>\n columnsToRows(frame.columns)\n );\n }\n\n\n private transformResult(row: any, resultSchema: any): any {\n // Handle object schema with primitive or value properties\n if (resultSchema && resultSchema.kind === 'object' && resultSchema.properties) {\n const transformedRow: any = {};\n for (const [key, value] of Object.entries(row)) {\n const propertySchema = resultSchema.properties[key];\n if (propertySchema && propertySchema.kind === 'primitive') {\n // Convert Value objects to primitives for primitive schema properties\n // Check if it's a Value instance by checking for valueOf method\n if (value && typeof value === 'object' && typeof (value as any).valueOf === 'function') {\n const rawValue = (value as any).valueOf();\n // Special handling for RowNumber - ensure it's returned as bigint\n if (propertySchema.type === 'RowNumber' && typeof rawValue === 'number') {\n transformedRow[key] = BigInt(rawValue);\n } else {\n transformedRow[key] = rawValue;\n }\n } else {\n transformedRow[key] = value;\n }\n } else if (propertySchema && propertySchema.kind === 'value') {\n // Keep Value objects as-is for value schema properties\n transformedRow[key] = value;\n } else {\n // Recursively transform nested structures\n transformedRow[key] = propertySchema ? this.transformResult(value, propertySchema) : value;\n }\n }\n return transformedRow;\n }\n\n // Handle primitive schema transformation\n if (resultSchema && resultSchema.kind === 'primitive') {\n // Single primitive value - extract from Value object if needed\n // Check if it's a Value instance by checking for valueOf method\n if (row && typeof row === 'object' && typeof row.valueOf === 'function') {\n const rawValue = row.valueOf();\n // Special handling for RowNumber - ensure it's returned as bigint\n if (resultSchema.type === 'RowNumber' && typeof rawValue === 'number') {\n return BigInt(rawValue);\n }\n return rawValue;\n }\n return row;\n }\n\n // Handle value schema transformation - keep Value objects as-is\n if (resultSchema && resultSchema.kind === 'value') {\n return row;\n }\n\n // Handle array schema\n if (resultSchema && resultSchema.kind === 'array') {\n if (Array.isArray(row)) {\n return row.map((item: any) => this.transformResult(item, resultSchema.items));\n }\n return row;\n }\n\n // Handle optional schema\n if (resultSchema && resultSchema.kind === 'optional') {\n if (row === undefined || row === null) {\n return undefined;\n }\n return this.transformResult(row, resultSchema.schema);\n }\n\n // Default: return as-is\n return row;\n }\n\n disconnect() {\n this.shouldReconnect = false;\n this.socket.close();\n }\n\n private handleDisconnect() {\n this.rejectAllPendingRequests();\n\n if (!this.shouldReconnect || this.isReconnecting) {\n return;\n }\n\n const maxAttempts = this.options.maxReconnectAttempts ?? 5;\n if (this.reconnectAttempts >= maxAttempts) {\n console.error(`Max reconnection attempts (${maxAttempts}) reached`);\n return;\n }\n\n this.attemptReconnect();\n }\n\n private async attemptReconnect() {\n this.isReconnecting = true;\n this.reconnectAttempts++;\n\n const baseDelay = this.options.reconnectDelayMs ?? 1000;\n const delay = baseDelay * Math.pow(2, this.reconnectAttempts - 1);\n\n console.log(`Attempting reconnection ${this.reconnectAttempts} after ${delay}ms...`);\n\n await new Promise(resolve => setTimeout(resolve, delay));\n\n try {\n const socket = await createWebSocket(this.options.url);\n\n if (socket.readyState !== 1) {\n await new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n socket.removeEventListener(\"open\", onOpen);\n socket.removeEventListener(\"error\", onError);\n resolve();\n };\n\n const onError = () => {\n socket.removeEventListener(\"open\", onOpen);\n socket.removeEventListener(\"error\", onError);\n reject(new Error(\"WebSocket connection failed\"));\n };\n\n socket.addEventListener(\"open\", onOpen);\n socket.addEventListener(\"error\", onError);\n });\n }\n\n socket.send(\"{\\\"id\\\":\\\"auth-1\\\",\\\"type\\\":\\\"Auth\\\",\\\"payload\\\":{\\\"token\\\":\\\"mysecrettoken\\\"}}\");\n\n this.socket = socket;\n this.setupSocketHandlers();\n this.reconnectAttempts = 0;\n this.isReconnecting = false;\n\n console.log(\"Reconnection successful\");\n } catch (error) {\n console.error(\"Reconnection attempt failed:\", error);\n this.isReconnecting = false;\n this.handleDisconnect();\n }\n }\n\n private setupSocketHandlers() {\n this.socket.onmessage = (event) => {\n const msg = JSON.parse(event.data);\n const {id, type, payload} = msg;\n\n const handler = this.pending.get(id);\n if (!handler) {\n return;\n }\n\n this.pending.delete(id);\n handler({id, type, payload});\n };\n\n this.socket.onerror = (err) => {\n console.error(\"WebSocket error\", err);\n };\n\n this.socket.onclose = () => {\n this.handleDisconnect();\n };\n }\n\n private rejectAllPendingRequests() {\n const error: ErrorResponse = {\n id: \"connection-error\",\n type: \"Err\",\n payload: {\n diagnostic: {\n code: \"CONNECTION_LOST\",\n message: \"Connection lost\",\n notes: []\n }\n }\n };\n\n for (const handler of this.pending.values()) {\n handler(error);\n }\n this.pending.clear();\n }\n}\n\n\nfunction columnsToRows(columns: Column[]): Record<string, Value>[] {\n const rowCount = columns[0]?.data.length ?? 0;\n return Array.from({length: rowCount}, (_, i) => {\n const row: Record<string, Value> = {};\n for (const col of columns) {\n row[col.name] = decode({type: col.type, value: col.data[i]});\n }\n return row;\n });\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport type { Params, Frame, Column, ErrorResponse } from \"@reifydb/core\";\nimport { ReifyError } from \"@reifydb/core\";\n\n// Re-export types that are actually available in flow\nexport type { Params, Frame, Column, ErrorResponse } from \"@reifydb/core\";\nexport { ReifyError } from \"@reifydb/core\";\n\nexport interface CommandRequest {\n id: string;\n type: \"Command\";\n payload: {\n statements: string[];\n params?: Params;\n }\n}\n\nexport interface CommandResponse {\n id: string;\n type: \"Command\";\n payload: {\n frames: Frame[];\n };\n}\n\nexport interface QueryRequest {\n id: string;\n type: \"Query\";\n payload: {\n statements: string[];\n params?: Params;\n }\n}\n\nexport interface QueryResponse {\n id: string;\n type: \"Query\";\n payload: {\n frames: Frame[];\n };\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {Type, UNDEFINED_VALUE} from \"@reifydb/core\";\n\nexport interface TypeValuePair {\n type: Type;\n value: string;\n}\n\nexport function encodeValue(value: any): TypeValuePair {\n\n if (value === null || value === undefined) {\n return { type: 'Undefined', value: UNDEFINED_VALUE };\n }\n \n if (value && typeof value === 'object' && 'encode' in value && typeof value.encode === 'function') {\n return value.encode();\n }\n \n if (typeof value === 'boolean') {\n return { type: 'Boolean', value: value.toString() };\n }\n \n if (typeof value === 'number') {\n if (Number.isInteger(value)) {\n // Choose appropriate integer type based on value range\n if (value >= -128 && value <= 127) {\n return { type: 'Int1', value: value.toString() };\n } else if (value >= -32768 && value <= 32767) {\n return { type: 'Int2', value: value.toString() };\n } else if (value >= -2147483648 && value <= 2147483647) {\n return { type: 'Int4', value: value.toString() };\n } else {\n return { type: 'Int8', value: value.toString() };\n }\n } else {\n // Floating point number\n return { type: 'Float8', value: value.toString() };\n }\n }\n \n if (typeof value === 'string') {\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[47][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value)) {\n const version = value[14];\n if (version === '4') {\n return { type: 'Uuid4', value: value };\n } else if (version === '7') {\n return { type: 'Uuid7', value: value };\n }\n }\n return { type: 'Utf8', value: value };\n }\n \n if (typeof value === 'bigint') {\n if (value >= BigInt(0)) {\n if (value <= BigInt(255)) {\n return { type: 'Uint1', value: value.toString() };\n } else if (value <= BigInt(65535)) {\n return { type: 'Uint2', value: value.toString() };\n } else if (value <= BigInt(4294967295)) {\n return { type: 'Uint4', value: value.toString() };\n } else if (value <= BigInt('18446744073709551615')) {\n return { type: 'Uint8', value: value.toString() };\n } else {\n return { type: 'Uint16', value: value.toString() };\n }\n } else {\n if (value >= BigInt('-9223372036854775808')) {\n return { type: 'Int8', value: value.toString() };\n } else {\n return { type: 'Int16', value: value.toString() };\n }\n }\n }\n \n if (value instanceof Date) {\n return { type: 'DateTime', value: value.toISOString() };\n }\n \n if (value instanceof Uint8Array) {\n const hex = Array.from(value)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n return { type: 'Blob', value: '0x' + hex };\n }\n \n if (value instanceof ArrayBuffer) {\n const uint8Array = new Uint8Array(value);\n const hex = Array.from(uint8Array)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n return { type: 'Blob', value: '0x' + hex };\n }\n \n throw new Error(`Cannot encode value of type ${typeof value}: ${value}`);\n}\n\nexport function encodeParams(params: any): TypeValuePair[] | Record<string, TypeValuePair> {\n if (params === undefined || params === null) {\n return [];\n }\n \n if (Array.isArray(params)) {\n return params.map(param => encodeValue(param));\n } else if (typeof params === 'object') {\n const encoded: Record<string, TypeValuePair> = {};\n for (const [key, value] of Object.entries(params)) {\n encoded[key] = encodeValue(value);\n }\n return encoded;\n }\n \n throw new Error(`Invalid parameters type: expected array or object, got ${typeof params}`);\n}","/**\n * MIT License\n * Copyright (c) 2025 ReifyDB\n * See license.md file for full license text\n */\n\nimport {WsClient, WsClientOptions} from \"./ws\";\n\nexport class Client {\n /**\n * Connect to ReifyDB via WebSocket\n * @param url WebSocket URL\n * @param options Optional configuration\n * @returns Connected WebSocket client\n */\n static async connect_ws(url: string, options: Omit<WsClientOptions, 'url'> = {}): Promise<WsClient> {\n return WsClient.connect({url, ...options});\n }\n}\n\nexport {ReifyError, asFrameResults} from \"@reifydb/core\";\nexport type {FrameResults, SingleFrameResult, Diagnostic, Fragment, DiagnosticColumn} from \"@reifydb/core\";\nexport {WsClient} from \"./ws\";\nexport type {WsClientOptions} from \"./ws\";"],"mappings":"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","names":["ReifyError"]}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@reifydb/client",
3
+ "version": "0.0.1-alpha.11",
3
4
  "type": "module",
4
- "version": "0.0.1-alpha.1",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "dependencies": {
8
- "@reifydb/core": "^0.0.1",
9
8
  "uuid": "^11.1.0",
10
- "ws": "^8.18.3"
9
+ "ws": "^8.18.3",
10
+ "@reifydb/core": "0.0.1-alpha.11"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@types/node": "^24.0.10",
@@ -48,9 +48,9 @@
48
48
  "scripts": {
49
49
  "build": "tsup src/index.ts --dts --format esm --sourcemap",
50
50
  "test": "pnpm test:integration",
51
- "test:integration": "vitest run --config vitest.integration.config.ts",
52
- "test:integration:watch": "vitest --config vitest.integration.config.ts",
53
- "test:integration:coverage": "vitest run --coverage --config vitest.integration.config.ts",
51
+ "test:integration": "vitest run --config vitest.config.ts",
52
+ "test:integration:watch": "vitest --config vitest.config.ts",
53
+ "test:integration:coverage": "vitest run --coverage --config vitest.config.ts",
54
54
  "test:coverage": "pnpm test:integration:coverage",
55
55
  "pretest:integration": "pnpm build",
56
56
  "publish:npm": "pnpm publish --access public"