@anvailabs/proximadb-client 0.3.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.
Files changed (65) hide show
  1. package/README.md +160 -0
  2. package/dist/client.d.ts +319 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +681 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/collection.d.ts +227 -0
  7. package/dist/collection.d.ts.map +1 -0
  8. package/dist/collection.js +436 -0
  9. package/dist/collection.js.map +1 -0
  10. package/dist/esm/client.js +674 -0
  11. package/dist/esm/client.js.map +1 -0
  12. package/dist/esm/collection.js +428 -0
  13. package/dist/esm/collection.js.map +1 -0
  14. package/dist/esm/filter.js +228 -0
  15. package/dist/esm/filter.js.map +1 -0
  16. package/dist/esm/generated/schema.js +6 -0
  17. package/dist/esm/generated/schema.js.map +1 -0
  18. package/dist/esm/graph.js +678 -0
  19. package/dist/esm/graph.js.map +1 -0
  20. package/dist/esm/index.js +86 -0
  21. package/dist/esm/index.js.map +1 -0
  22. package/dist/esm/search.js +317 -0
  23. package/dist/esm/search.js.map +1 -0
  24. package/dist/esm/transport.js +33 -0
  25. package/dist/esm/transport.js.map +1 -0
  26. package/dist/esm/types.js +181 -0
  27. package/dist/esm/types.js.map +1 -0
  28. package/dist/filter.d.ts +51 -0
  29. package/dist/filter.d.ts.map +1 -0
  30. package/dist/filter.js +241 -0
  31. package/dist/filter.js.map +1 -0
  32. package/dist/generated/schema.d.ts +4271 -0
  33. package/dist/generated/schema.d.ts.map +1 -0
  34. package/dist/generated/schema.js +7 -0
  35. package/dist/generated/schema.js.map +1 -0
  36. package/dist/graph.d.ts +350 -0
  37. package/dist/graph.d.ts.map +1 -0
  38. package/dist/graph.js +690 -0
  39. package/dist/graph.js.map +1 -0
  40. package/dist/index.d.ts +58 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +126 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/search.d.ts +160 -0
  45. package/dist/search.d.ts.map +1 -0
  46. package/dist/search.js +322 -0
  47. package/dist/search.js.map +1 -0
  48. package/dist/transport.d.ts +40 -0
  49. package/dist/transport.d.ts.map +1 -0
  50. package/dist/transport.js +39 -0
  51. package/dist/transport.js.map +1 -0
  52. package/dist/types.d.ts +632 -0
  53. package/dist/types.d.ts.map +1 -0
  54. package/dist/types.js +185 -0
  55. package/dist/types.js.map +1 -0
  56. package/package.json +72 -0
  57. package/src/client.ts +856 -0
  58. package/src/collection.ts +578 -0
  59. package/src/filter.ts +280 -0
  60. package/src/generated/schema.ts +4271 -0
  61. package/src/graph.ts +811 -0
  62. package/src/index.ts +184 -0
  63. package/src/search.ts +401 -0
  64. package/src/transport.ts +52 -0
  65. package/src/types.ts +726 -0
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # ProximaDB Embedded for Node.js
2
+
3
+ Zero-overhead embedded vector database for Node.js using NAPI-RS bindings to ProximaDB's Rust core.
4
+
5
+ ## Features
6
+
7
+ - **Zero Network Overhead** - Direct in-process access to Rust core
8
+ - **Multi-Disk Support** - Configure multiple storage locations with weighted distribution
9
+ - **SIMD Acceleration** - Automatic AVX2/NEON optimization
10
+ - **Full Persistence** - WAL with configurable sync modes
11
+ - **TypeScript Support** - Full type definitions included
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install proximadb-embedded
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ```javascript
22
+ const { ProximaDB } = require('proximadb-embedded');
23
+
24
+ // Create database with simple configuration
25
+ const db = new ProximaDB({ dataDir: './my_database' });
26
+
27
+ // Or with multi-disk support
28
+ const dbMulti = new ProximaDB({
29
+ dataDirs: [
30
+ { path: '/nvme/data', weight: 2 }, // Fast SSD - gets more data
31
+ { path: '/hdd/data', weight: 1 }, // Slower HDD
32
+ ],
33
+ metadataDir: '/nvme/metadata',
34
+ cacheSizeMb: 2048,
35
+ });
36
+
37
+ // Create collection
38
+ db.createCollection('embeddings', 768, 'sst');
39
+
40
+ // Insert vectors
41
+ const ids = ['doc_0', 'doc_1', 'doc_2'];
42
+ const vectors = [
43
+ [0.1, 0.2, /* ... 768 dimensions */],
44
+ [0.3, 0.4, /* ... */],
45
+ [0.5, 0.6, /* ... */],
46
+ ];
47
+ const metadata = [
48
+ { category: 'tech' },
49
+ { category: 'science' },
50
+ { category: 'tech' },
51
+ ];
52
+
53
+ db.insert('embeddings', ids, vectors, metadata);
54
+
55
+ // Search for similar vectors
56
+ const query = [0.1, 0.2, /* ... */];
57
+ const results = db.search('embeddings', query, 10);
58
+
59
+ for (const r of results) {
60
+ console.log(`${r.id}: score=${r.score.toFixed(4)}`);
61
+ }
62
+
63
+ // Flush to ensure durability
64
+ db.flush();
65
+ ```
66
+
67
+ ## TypeScript
68
+
69
+ ```typescript
70
+ import { ProximaDB, SearchResult, CollectionInfo } from 'proximadb-embedded';
71
+
72
+ const db = new ProximaDB({ dataDir: './data' });
73
+
74
+ db.createCollection('vectors', 128);
75
+
76
+ const results: SearchResult[] = db.search('vectors', query, 10);
77
+ const info: CollectionInfo | null = db.getCollection('vectors');
78
+ ```
79
+
80
+ ## API Reference
81
+
82
+ ### Constructor
83
+
84
+ ```javascript
85
+ new ProximaDB(config?: ProximaDBConfig)
86
+ ```
87
+
88
+ Configuration options:
89
+ - `dataDir` - Single data directory path
90
+ - `dataDirs` - Array of disk configurations for multi-disk
91
+ - `metadataDir` - Metadata storage path
92
+ - `cacheSizeMb` - Cache size in MB (default: 512)
93
+ - `defaultEngine` - Storage engine: "sst" (recommended), "nova", "helix", etc. (`viper` is DEPRECATED — see ADR-093, do not select for new collections)
94
+ - `enableWal` - Enable write-ahead logging (default: true)
95
+ - `walSyncMode` - WAL sync: "immediate", "batch", "async"
96
+
97
+ ### Methods
98
+
99
+ #### createCollection(name, dimension, engine?)
100
+ Create a new vector collection.
101
+
102
+ #### deleteCollection(name)
103
+ Delete a collection.
104
+
105
+ #### getCollection(name)
106
+ Get collection information or null.
107
+
108
+ #### listCollections()
109
+ List all collections.
110
+
111
+ #### insert(collection, ids, vectors, metadata?)
112
+ Insert vectors. Returns count inserted.
113
+
114
+ #### search(collection, query, topK?, filter?)
115
+ Search for similar vectors. Returns array of results.
116
+
117
+ #### flush()
118
+ Flush pending writes to disk.
119
+
120
+ #### stats()
121
+ Get storage statistics.
122
+
123
+ ### Storage Engines
124
+
125
+ | Engine | Best For |
126
+ |--------|----------|
127
+ | `sst` | OLTP, real-time queries (default) |
128
+ | `nova` | Mixed workloads, columnar analytics |
129
+ | `swift` | Hot data, low latency |
130
+ | `raptor` | Adaptive, multi-tenant |
131
+ | `helix` | High-dimensional vectors |
132
+
133
+ ## Building from Source
134
+
135
+ ### Prerequisites
136
+
137
+ - Node.js 16+
138
+ - Rust 1.88+
139
+ - @napi-rs/cli
140
+
141
+ ### Build Steps
142
+
143
+ ```bash
144
+ # Install NAPI CLI
145
+ npm install -g @napi-rs/cli
146
+
147
+ # Build the package
148
+ cd clients/nodejs-embedded
149
+ npm install
150
+ npm run build
151
+ ```
152
+
153
+ ## License
154
+
155
+ Apache License 2.0
156
+
157
+ ## Links
158
+
159
+ - [ProximaDB Repository](https://github.com/anvai-labs/proximaDB)
160
+ - [Documentation](https://github.com/anvai-labs/proximaDB#readme)
@@ -0,0 +1,319 @@
1
+ /**
2
+ * ProximaDB TypeScript SDK - Client
3
+ *
4
+ * Main entry point for connecting to ProximaDB servers.
5
+ *
6
+ * Copyright 2025 ProximaDB Contributors
7
+ * Licensed under the Apache License, Version 2.0
8
+ */
9
+ import { ClientConfig, HealthStatus, CollectionInfo, GraphInfo, ProbeResponse, SchemaResponse, UpdateSchemaRequest, UpdateSchemaResponse, QueryRequest, ExplainQueryRequest, QueryResponse } from "./types";
10
+ import { CollectionBuilder, CollectionHandle, CollectionHttpClient } from "./collection";
11
+ import { GraphBuilder, GraphHandle, GraphHttpClient } from "./graph";
12
+ /**
13
+ * ProximaDB client for connecting to a remote server
14
+ */
15
+ export declare class ProximaDBClient implements CollectionHttpClient, GraphHttpClient {
16
+ private config;
17
+ private fetchFn;
18
+ /**
19
+ * Generated typed REST transport (TD-126 Phase 4). Core collection / record
20
+ * / search operations route through this; it owns URL/path/query/body
21
+ * encoding per the OpenAPI spec. Auth, retries, and error mapping are
22
+ * injected via the facade's own fetch (see `transportFetch`).
23
+ */
24
+ private gen;
25
+ /**
26
+ * Create a new client with the given URL
27
+ */
28
+ static connect(url: string): ProximaDBClient;
29
+ /**
30
+ * Create a new client builder
31
+ */
32
+ static builder(): ClientBuilder;
33
+ /**
34
+ * Create a client with configuration
35
+ */
36
+ constructor(config?: Partial<ClientConfig>);
37
+ /**
38
+ * Transport `fetch` handed to the generated client.
39
+ *
40
+ * The generated client assembles a resolved `Request` (URL + method + body);
41
+ * this normalizes it back to the facade's `(url, init)` retry/auth/error
42
+ * pipeline so the wire plumbing and transport policy compose. The returned
43
+ * value is a `Response`-shaped object the generated client parses; on an
44
+ * unsuccessful response a `ProximaDBError` is thrown (matching the generic
45
+ * path), so callers never see a non-2xx body.
46
+ */
47
+ private transportFetch;
48
+ /**
49
+ * Get the server URL
50
+ */
51
+ url(): string;
52
+ /**
53
+ * Get the client configuration
54
+ */
55
+ getConfig(): ClientConfig;
56
+ /**
57
+ * Make a GET request
58
+ */
59
+ get<T>(requestUrl: string): Promise<T>;
60
+ /**
61
+ * Make a POST request
62
+ */
63
+ post<T>(requestUrl: string, body: unknown): Promise<T>;
64
+ /**
65
+ * Make a PUT request
66
+ */
67
+ put<T>(requestUrl: string, body: unknown): Promise<T>;
68
+ /**
69
+ * Make a DELETE request
70
+ */
71
+ delete<T>(requestUrl: string): Promise<T>;
72
+ /**
73
+ * Make an HTTP request with retry logic
74
+ */
75
+ private request;
76
+ /**
77
+ * Handle HTTP response
78
+ */
79
+ private handleResponse;
80
+ /**
81
+ * Get a handle to a collection for fluent operations
82
+ */
83
+ collection(name: string): CollectionHandle;
84
+ /**
85
+ * Create a collection builder
86
+ */
87
+ createCollection(name: string): CollectionBuilder;
88
+ /**
89
+ * Delete a collection
90
+ *
91
+ * Routed through the generated typed transport (TD-126 Phase 4).
92
+ * Wire endpoint: DELETE /api/v2/collections/{collection_id}
93
+ * OpenAPI operationId: deleteCollection
94
+ */
95
+ deleteCollection(name: string): Promise<void>;
96
+ /**
97
+ * List all collections
98
+ *
99
+ * Routed through the generated typed transport (TD-126 Phase 4).
100
+ * Wire endpoint: GET /api/v2/collections
101
+ * OpenAPI operationId: listCollections
102
+ */
103
+ listCollections(): Promise<CollectionInfo[]>;
104
+ /**
105
+ * Get the schema for a collection
106
+ *
107
+ * Routed through the generated typed transport (TD-126 Phase 4).
108
+ * Wire endpoint: GET /api/v2/collections/{collection_id}/schema
109
+ * OpenAPI operationId: getCollectionSchema
110
+ */
111
+ getCollectionSchema(collectionId: string): Promise<SchemaResponse>;
112
+ /**
113
+ * Update the schema for a collection
114
+ *
115
+ * Routed through the generated typed transport (TD-126 Phase 4).
116
+ * Wire endpoint: PUT /api/v2/collections/{collection_id}/schema
117
+ * OpenAPI operationId: updateCollectionSchema
118
+ */
119
+ updateCollectionSchema(collectionId: string, schema: UpdateSchemaRequest): Promise<UpdateSchemaResponse>;
120
+ /**
121
+ * Execute an AQL or UQL query through the shared query facade
122
+ *
123
+ * Wire endpoint: POST /api/v2/query
124
+ * OpenAPI operationId: executeQuery
125
+ */
126
+ executeQuery(req: QueryRequest): Promise<QueryResponse>;
127
+ /**
128
+ * Explain an AQL or UQL query through the shared query facade
129
+ *
130
+ * Wire endpoint: POST /api/v2/query/explain
131
+ * OpenAPI operationId: explainQuery
132
+ */
133
+ explainQuery(req: ExplainQueryRequest): Promise<QueryResponse>;
134
+ /**
135
+ * Create a collection.
136
+ * Wire endpoint: POST /api/v2/collections (createCollection)
137
+ */
138
+ createCollectionRequest(body: Record<string, unknown>): Promise<unknown>;
139
+ /**
140
+ * Get collection details.
141
+ * Wire endpoint: GET /api/v2/collections/{collection_id} (getCollection)
142
+ */
143
+ getCollectionRequest(collectionId: string): Promise<unknown>;
144
+ /**
145
+ * Insert / upsert records in a batch.
146
+ * Wire endpoint: POST /api/v2/collections/{collection_id}/records/batch (insertRecords)
147
+ */
148
+ insertRecordsRequest(collectionId: string, body: Record<string, unknown>): Promise<unknown>;
149
+ /**
150
+ * Get a single record by ID.
151
+ * Wire endpoint: GET /api/v2/collections/{collection_id}/records/{record_id} (getRecord)
152
+ */
153
+ getRecordRequest(collectionId: string, recordId: string, includeVector: boolean, includeText: boolean): Promise<unknown>;
154
+ /**
155
+ * Delete a single record by ID.
156
+ * Wire endpoint: DELETE /api/v2/collections/{collection_id}/records/{record_id} (deleteRecord)
157
+ */
158
+ deleteRecordRequest(collectionId: string, recordId: string): Promise<void>;
159
+ /**
160
+ * Vector similarity search.
161
+ * Wire endpoint: POST /api/v2/collections/{collection_id}/search (searchRecords)
162
+ */
163
+ searchRecordsRequest(collectionId: string, body: Record<string, unknown>): Promise<unknown>;
164
+ /**
165
+ * Get a handle to a graph for fluent operations
166
+ */
167
+ graph(name: string): GraphHandle;
168
+ /**
169
+ * Create a graph builder.
170
+ *
171
+ * Wire endpoint: POST /api/v2/graphs
172
+ * OpenAPI operationId: createGraph
173
+ *
174
+ * The argument is the server-true `graph_id` (unique identifier). Use
175
+ * `.name(...)` on the returned builder to set the optional display name.
176
+ */
177
+ createGraph(graphId: string): GraphBuilder;
178
+ /**
179
+ * Delete a graph
180
+ *
181
+ * Routed through the generated typed transport (TD-126 Phase 4).
182
+ * Wire endpoint: DELETE /api/v2/graphs/{graph_id}
183
+ * OpenAPI operationId: deleteGraph
184
+ */
185
+ deleteGraph(name: string): Promise<void>;
186
+ /**
187
+ * List all graphs
188
+ *
189
+ * Routed through the generated typed transport (TD-126 Phase 4).
190
+ * Wire endpoint: GET /api/v2/graphs
191
+ * OpenAPI operationId: listGraphs
192
+ */
193
+ listGraphs(): Promise<GraphInfo[]>;
194
+ /**
195
+ * Create a graph collection.
196
+ * Wire endpoint: POST /api/v2/graphs (createGraph)
197
+ */
198
+ createGraphRequest(body: Record<string, unknown>): Promise<unknown>;
199
+ /**
200
+ * Get a graph collection by id.
201
+ * Wire endpoint: GET /api/v2/graphs/{graph_id} (getGraph)
202
+ */
203
+ getGraphRequest(graphId: string): Promise<unknown>;
204
+ /**
205
+ * Get graph statistics.
206
+ * Wire endpoint: GET /api/v2/graphs/{graph_id}/stats (getGraphStats)
207
+ */
208
+ getGraphStatsRequest(graphId: string): Promise<unknown>;
209
+ /**
210
+ * Create a node in a graph.
211
+ * Wire endpoint: POST /api/v2/graphs/{graph_id}/nodes (createNode)
212
+ */
213
+ createNodeRequest(graphId: string, body: Record<string, unknown>): Promise<unknown>;
214
+ /**
215
+ * Create multiple nodes in a single call.
216
+ * Wire endpoint: POST /api/v2/graphs/{graph_id}/nodes/batch (batchCreateNodes)
217
+ */
218
+ batchCreateNodesRequest(graphId: string, body: Record<string, unknown>): Promise<unknown>;
219
+ /**
220
+ * Get a node by id.
221
+ * Wire endpoint: GET /api/v2/graphs/{graph_id}/nodes/{node_id} (getNode)
222
+ */
223
+ getNodeRequest(graphId: string, nodeId: string): Promise<unknown>;
224
+ /**
225
+ * Delete a node by id.
226
+ * Wire endpoint: DELETE /api/v2/graphs/{graph_id}/nodes/{node_id} (deleteNode)
227
+ */
228
+ deleteNodeRequest(graphId: string, nodeId: string): Promise<void>;
229
+ /**
230
+ * Create an edge in a graph.
231
+ * Wire endpoint: POST /api/v2/graphs/{graph_id}/edges (createEdge)
232
+ */
233
+ createEdgeRequest(graphId: string, body: Record<string, unknown>): Promise<unknown>;
234
+ /**
235
+ * Create multiple edges in a single call.
236
+ * Wire endpoint: POST /api/v2/graphs/{graph_id}/edges/batch (batchCreateEdges)
237
+ */
238
+ batchCreateEdgesRequest(graphId: string, body: Record<string, unknown>): Promise<unknown>;
239
+ /**
240
+ * Traverse a graph from a start node.
241
+ * Wire endpoint: POST /api/v2/graphs/{graph_id}/traverse (traverseGraph)
242
+ */
243
+ traverseGraphRequest(graphId: string, body: Record<string, unknown>): Promise<unknown>;
244
+ /**
245
+ * Check if the server is healthy
246
+ *
247
+ * Routed through the generated typed transport (TD-126 Phase 4).
248
+ * Wire endpoint: GET /health
249
+ * OpenAPI operationId: getHealth
250
+ */
251
+ health(): Promise<HealthStatus>;
252
+ /**
253
+ * Kubernetes-style liveness probe
254
+ *
255
+ * Routed through the generated typed transport (TD-126 Phase 4).
256
+ * Wire endpoint: GET /health/live
257
+ * OpenAPI operationId: getLiveness
258
+ */
259
+ healthLive(): Promise<ProbeResponse>;
260
+ /**
261
+ * Kubernetes-style readiness probe
262
+ *
263
+ * Routed through the generated typed transport (TD-126 Phase 4).
264
+ * Wire endpoint: GET /health/ready
265
+ * OpenAPI operationId: getReadiness
266
+ */
267
+ healthReady(): Promise<ProbeResponse>;
268
+ /**
269
+ * Check if the server is reachable
270
+ */
271
+ ping(): Promise<boolean>;
272
+ }
273
+ /**
274
+ * Builder for creating a ProximaDB client with custom configuration
275
+ */
276
+ export declare class ClientBuilder {
277
+ private config;
278
+ /**
279
+ * Set the server URL
280
+ */
281
+ url(serverUrl: string): ClientBuilder;
282
+ /**
283
+ * Set the request timeout in milliseconds
284
+ */
285
+ timeoutMs(timeout: number): ClientBuilder;
286
+ /**
287
+ * Set the maximum number of retries
288
+ */
289
+ maxRetries(retries: number): ClientBuilder;
290
+ /**
291
+ * Set the API key for authentication
292
+ */
293
+ apiKey(key: string): ClientBuilder;
294
+ /**
295
+ * Enable or disable connection pooling
296
+ */
297
+ poolConnections(enable: boolean): ClientBuilder;
298
+ /**
299
+ * Set maximum idle connections in pool
300
+ */
301
+ maxIdleConnections(max: number): ClientBuilder;
302
+ /**
303
+ * Build the ProximaDB client
304
+ */
305
+ build(): ProximaDBClient;
306
+ /**
307
+ * Connect to the server (alias for build)
308
+ */
309
+ connect(): ProximaDBClient;
310
+ }
311
+ /**
312
+ * Create a ProximaDB client connected to the given URL
313
+ */
314
+ export declare function connect(url?: string): ProximaDBClient;
315
+ /**
316
+ * Create a ProximaDB client with REST protocol
317
+ */
318
+ export declare function connectRest(url?: string): ProximaDBClient;
319
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}