@reifydb/client 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -0
- package/dist/index.js +27 -12
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -57,6 +57,12 @@ declare class WsClient {
|
|
|
57
57
|
query<const S extends readonly SchemaNode[]>(statements: string | string[], params: any, schemas: S): Promise<FrameResults<S>>;
|
|
58
58
|
send(req: CommandRequest | QueryRequest): Promise<any>;
|
|
59
59
|
private transformResult;
|
|
60
|
+
/**
|
|
61
|
+
* Coerce a value to the expected primitive type based on schema.
|
|
62
|
+
* This handles cases where the server returns a smaller integer type
|
|
63
|
+
* but the schema expects a bigint type (Int8, Int16, Uint8, Uint16).
|
|
64
|
+
*/
|
|
65
|
+
private coerceToPrimitiveType;
|
|
60
66
|
disconnect(): void;
|
|
61
67
|
private handleDisconnect;
|
|
62
68
|
private attemptReconnect;
|
package/dist/index.js
CHANGED
|
@@ -236,13 +236,9 @@ var WsClient = class _WsClient {
|
|
|
236
236
|
if (propertySchema && propertySchema.kind === "primitive") {
|
|
237
237
|
if (value && typeof value === "object" && typeof value.valueOf === "function") {
|
|
238
238
|
const rawValue = value.valueOf();
|
|
239
|
-
|
|
240
|
-
transformedRow[key] = BigInt(rawValue);
|
|
241
|
-
} else {
|
|
242
|
-
transformedRow[key] = rawValue;
|
|
243
|
-
}
|
|
239
|
+
transformedRow[key] = this.coerceToPrimitiveType(rawValue, propertySchema.type);
|
|
244
240
|
} else {
|
|
245
|
-
transformedRow[key] = value;
|
|
241
|
+
transformedRow[key] = this.coerceToPrimitiveType(value, propertySchema.type);
|
|
246
242
|
}
|
|
247
243
|
} else if (propertySchema && propertySchema.kind === "value") {
|
|
248
244
|
transformedRow[key] = value;
|
|
@@ -254,13 +250,9 @@ var WsClient = class _WsClient {
|
|
|
254
250
|
}
|
|
255
251
|
if (resultSchema && resultSchema.kind === "primitive") {
|
|
256
252
|
if (row && typeof row === "object" && typeof row.valueOf === "function") {
|
|
257
|
-
|
|
258
|
-
if (resultSchema.type === "RowNumber" && typeof rawValue === "number") {
|
|
259
|
-
return BigInt(rawValue);
|
|
260
|
-
}
|
|
261
|
-
return rawValue;
|
|
253
|
+
return this.coerceToPrimitiveType(row.valueOf(), resultSchema.type);
|
|
262
254
|
}
|
|
263
|
-
return row;
|
|
255
|
+
return this.coerceToPrimitiveType(row, resultSchema.type);
|
|
264
256
|
}
|
|
265
257
|
if (resultSchema && resultSchema.kind === "value") {
|
|
266
258
|
return row;
|
|
@@ -279,6 +271,29 @@ var WsClient = class _WsClient {
|
|
|
279
271
|
}
|
|
280
272
|
return row;
|
|
281
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Coerce a value to the expected primitive type based on schema.
|
|
276
|
+
* This handles cases where the server returns a smaller integer type
|
|
277
|
+
* but the schema expects a bigint type (Int8, Int16, Uint8, Uint16).
|
|
278
|
+
*/
|
|
279
|
+
coerceToPrimitiveType(value, schemaType) {
|
|
280
|
+
if (value === void 0 || value === null) {
|
|
281
|
+
return value;
|
|
282
|
+
}
|
|
283
|
+
const bigintTypes = ["Int8", "Int16", "Uint8", "Uint16"];
|
|
284
|
+
if (bigintTypes.includes(schemaType)) {
|
|
285
|
+
if (typeof value === "bigint") {
|
|
286
|
+
return value;
|
|
287
|
+
}
|
|
288
|
+
if (typeof value === "number") {
|
|
289
|
+
return BigInt(Math.trunc(value));
|
|
290
|
+
}
|
|
291
|
+
if (typeof value === "string") {
|
|
292
|
+
return BigInt(value);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return value;
|
|
296
|
+
}
|
|
282
297
|
disconnect() {
|
|
283
298
|
this.shouldReconnect = false;
|
|
284
299
|
this.socket.close();
|
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} 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 console.log(`Connecting to WebSocket at ${options.url}`);\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 console.log(\"Connected successfully to WebSocket\");\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 const maxAttempts = this.options.maxReconnectAttempts ?? 5;\n\n console.log(`Attempting reconnection (${this.reconnectAttempts}/${maxAttempts}): waiting ${delay}ms with exponential backoff`);\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 console.log(\"Successfully reconnected to WebSocket\");\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 \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"]}
|
|
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 console.log(`Connecting to WebSocket at ${options.url}`);\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 console.log(\"Connected successfully to WebSocket\");\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 transformedRow[key] = this.coerceToPrimitiveType(rawValue, propertySchema.type);\n } else {\n transformedRow[key] = this.coerceToPrimitiveType(value, propertySchema.type);\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 return this.coerceToPrimitiveType(row.valueOf(), resultSchema.type);\n }\n return this.coerceToPrimitiveType(row, resultSchema.type);\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 /**\n * Coerce a value to the expected primitive type based on schema.\n * This handles cases where the server returns a smaller integer type\n * but the schema expects a bigint type (Int8, Int16, Uint8, Uint16).\n */\n private coerceToPrimitiveType(value: any, schemaType: string): any {\n if (value === undefined || value === null) {\n return value;\n }\n\n // Bigint types: Int8, Int16, Uint8, Uint16\n const bigintTypes = ['Int8', 'Int16', 'Uint8', 'Uint16'];\n if (bigintTypes.includes(schemaType)) {\n if (typeof value === 'bigint') {\n return value;\n }\n if (typeof value === 'number') {\n return BigInt(Math.trunc(value));\n }\n if (typeof value === 'string') {\n return BigInt(value);\n }\n }\n\n return value;\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 const maxAttempts = this.options.maxReconnectAttempts ?? 5;\n\n console.log(`Attempting reconnection (${this.reconnectAttempts}/${maxAttempts}): waiting ${delay}ms with exponential backoff`);\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 console.log(\"Successfully reconnected to WebSocket\");\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 \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.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"uuid": "^11.1.0",
|
|
9
9
|
"ws": "^8.18.3",
|
|
10
|
-
"@reifydb/core": "0.
|
|
10
|
+
"@reifydb/core": "0.2.0"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@types/node": "^24.0.10",
|