@wiscale/velesdb-wasm 1.15.0 → 1.17.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/README.md CHANGED
@@ -280,16 +280,28 @@ The WASM build is optimized for client-side use cases but has some limitations c
280
280
  | Knowledge Graph (nodes, edges, traversal) | ✅ | ✅ |
281
281
  | Agent Memory (SemanticMemory) | ✅ | ✅ |
282
282
  | VelesQL parsing and validation | ✅ | ✅ |
283
- | VelesQL query execution | | ✅ |
283
+ | VelesQL query execution | | ✅ |
284
+ | JOIN operations | ✅ (INNER, LEFT) | ✅ |
285
+ | Aggregations (GROUP BY / HAVING) | ✅ | ✅ |
286
+ | Set operations (UNION / INTERSECT / EXCEPT) | ✅ | ✅ |
287
+ | MATCH (graph traversal) | ✅ (1–2 hop) | ✅ |
284
288
  | Cross-collection MATCH (`@collection`) | ❌ | ✅ |
285
- | JOIN operations | ❌ | ✅ |
286
- | Aggregations (GROUP BY) | ❌ | ✅ |
287
289
  | Persistence | IndexedDB | Disk (mmap) |
288
290
  | Max vectors | ~100K (browser RAM) | Millions |
289
291
 
290
- ### VelesQL (Parser Only)
292
+ ### VelesQL (Parser + Execution)
291
293
 
292
- VelesQL parsing and validation are available in WASM. You can parse queries, inspect their AST, and validate syntax client-side. However, query **execution** (running queries against data) requires the REST server.
294
+ VelesQL parsing, validation, **and execution** are all available in WASM. You can
295
+ parse queries and inspect their AST client-side, and you can run queries against
296
+ a `WasmDatabase` via `executeQuery()`. The single-collection executor supports
297
+ `SELECT` (with `WHERE`, `NEAR`, `similarity()`), `GROUP BY`/`HAVING`,
298
+ aggregations, `ORDER BY`, `UNION`/`INTERSECT`/`EXCEPT`, `INNER`/`LEFT JOIN`,
299
+ `INSERT`/`UPSERT`/`UPDATE`/`DELETE`, DDL, and 1–2 hop `MATCH` graph traversal.
300
+
301
+ The only VelesQL features that still require the REST server are
302
+ **cross-collection `MATCH` (`@collection`)** — which needs Database-level query
303
+ routing — and `MATCH` traversals beyond 2 hops. `RIGHT`/`FULL JOIN` and
304
+ `TRAIN QUANTIZER` are rejected with a descriptive error.
293
305
 
294
306
  ```javascript
295
307
  import { VelesQL } from '@wiscale/velesdb-wasm';
@@ -384,8 +396,8 @@ const fused = hybrid_search_fuse(denseResults, sparseResults, 60, 10);
384
396
 
385
397
  Consider using the [REST server](https://github.com/cyberlife-coder/VelesDB) if you need:
386
398
 
387
- - **VelesQL query execution** - Running queries against data (JOINs, aggregations, server-side filtering)
388
399
  - **Cross-collection MATCH** - The `@collection` annotation requires Database-level query routing, which is only available on the server (WASM operates on a single collection)
400
+ - **Multi-hop MATCH** - Graph traversals beyond 2 hops (WASM supports 1–2 hop MATCH)
389
401
  - **Large datasets** - More than 100K vectors
390
402
  - **Server-side processing** - Centralized vector database
391
403
 
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "Julien Lange <contact@wiscale.fr>"
6
6
  ],
7
7
  "description": "VelesDB for WebAssembly - Vector search in the browser",
8
- "version": "1.15.0",
8
+ "version": "1.17.0",
9
9
  "license": "MIT",
10
10
  "repository": {
11
11
  "type": "git",
package/velesdb_wasm.d.ts CHANGED
@@ -1328,18 +1328,18 @@ export interface InitOutput {
1328
1328
  readonly wasmdatabase_get_collection: (a: number, b: number, c: number, d: number) => void;
1329
1329
  readonly wasmdatabase_list_collections: (a: number) => number;
1330
1330
  readonly wasmdatabase_new: () => number;
1331
- readonly __wbg_set_traversalprogress_current_depth: (a: number, b: number) => void;
1332
- readonly __wbg_set_traversalprogress_estimated_total: (a: number, b: number) => void;
1333
- readonly __wbg_set_traversalprogress_visited_count: (a: number, b: number) => void;
1331
+ readonly parsedquery_tableName: (a: number, b: number) => void;
1334
1332
  readonly __wbg_get_traversalprogress_current_depth: (a: number) => number;
1335
1333
  readonly __wbg_get_traversalprogress_estimated_total: (a: number) => number;
1336
1334
  readonly __wbg_get_traversalprogress_visited_count: (a: number) => number;
1335
+ readonly __wbg_set_traversalprogress_current_depth: (a: number, b: number) => void;
1336
+ readonly __wbg_set_traversalprogress_estimated_total: (a: number, b: number) => void;
1337
+ readonly __wbg_set_traversalprogress_visited_count: (a: number, b: number) => void;
1337
1338
  readonly graphnode_id: (a: number) => bigint;
1338
1339
  readonly wasmdatabase_collection_count: (a: number) => number;
1339
- readonly parsedquery_tableName: (a: number, b: number) => void;
1340
- readonly __wasm_bindgen_func_elem_1864: (a: number, b: number, c: number, d: number) => void;
1341
- readonly __wasm_bindgen_func_elem_1878: (a: number, b: number, c: number, d: number) => void;
1342
- readonly __wasm_bindgen_func_elem_396: (a: number, b: number, c: number) => void;
1340
+ readonly __wasm_bindgen_func_elem_1860: (a: number, b: number, c: number, d: number) => void;
1341
+ readonly __wasm_bindgen_func_elem_1872: (a: number, b: number, c: number, d: number) => void;
1342
+ readonly __wasm_bindgen_func_elem_404: (a: number, b: number, c: number) => void;
1343
1343
  readonly __wbindgen_export: (a: number, b: number) => number;
1344
1344
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
1345
1345
  readonly __wbindgen_export3: (a: number) => void;
package/velesdb_wasm.js CHANGED
@@ -3191,7 +3191,7 @@ function __wbg_get_imports() {
3191
3191
  const a = state0.a;
3192
3192
  state0.a = 0;
3193
3193
  try {
3194
- return __wasm_bindgen_func_elem_1878(a, state0.b, arg0, arg1);
3194
+ return __wasm_bindgen_func_elem_1872(a, state0.b, arg0, arg1);
3195
3195
  } finally {
3196
3196
  state0.a = a;
3197
3197
  }
@@ -3213,7 +3213,7 @@ function __wbg_get_imports() {
3213
3213
  const a = state0.a;
3214
3214
  state0.a = 0;
3215
3215
  try {
3216
- return __wasm_bindgen_func_elem_1878(a, state0.b, arg0, arg1);
3216
+ return __wasm_bindgen_func_elem_1872(a, state0.b, arg0, arg1);
3217
3217
  } finally {
3218
3218
  state0.a = a;
3219
3219
  }
@@ -3347,12 +3347,12 @@ function __wbg_get_imports() {
3347
3347
  },
3348
3348
  __wbindgen_cast_0000000000000001: function(arg0, arg1) {
3349
3349
  // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 332, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3350
- const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_1864);
3350
+ const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_1860);
3351
3351
  return addHeapObject(ret);
3352
3352
  },
3353
3353
  __wbindgen_cast_0000000000000002: function(arg0, arg1) {
3354
3354
  // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Event")], shim_idx: 7, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3355
- const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_396);
3355
+ const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_404);
3356
3356
  return addHeapObject(ret);
3357
3357
  },
3358
3358
  __wbindgen_cast_0000000000000003: function(arg0) {
@@ -3389,14 +3389,14 @@ function __wbg_get_imports() {
3389
3389
  };
3390
3390
  }
3391
3391
 
3392
- function __wasm_bindgen_func_elem_396(arg0, arg1, arg2) {
3393
- wasm.__wasm_bindgen_func_elem_396(arg0, arg1, addHeapObject(arg2));
3392
+ function __wasm_bindgen_func_elem_404(arg0, arg1, arg2) {
3393
+ wasm.__wasm_bindgen_func_elem_404(arg0, arg1, addHeapObject(arg2));
3394
3394
  }
3395
3395
 
3396
- function __wasm_bindgen_func_elem_1864(arg0, arg1, arg2) {
3396
+ function __wasm_bindgen_func_elem_1860(arg0, arg1, arg2) {
3397
3397
  try {
3398
3398
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3399
- wasm.__wasm_bindgen_func_elem_1864(retptr, arg0, arg1, addHeapObject(arg2));
3399
+ wasm.__wasm_bindgen_func_elem_1860(retptr, arg0, arg1, addHeapObject(arg2));
3400
3400
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3401
3401
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3402
3402
  if (r1) {
@@ -3407,8 +3407,8 @@ function __wasm_bindgen_func_elem_1864(arg0, arg1, arg2) {
3407
3407
  }
3408
3408
  }
3409
3409
 
3410
- function __wasm_bindgen_func_elem_1878(arg0, arg1, arg2, arg3) {
3411
- wasm.__wasm_bindgen_func_elem_1878(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
3410
+ function __wasm_bindgen_func_elem_1872(arg0, arg1, arg2, arg3) {
3411
+ wasm.__wasm_bindgen_func_elem_1872(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
3412
3412
  }
3413
3413
 
3414
3414
 
Binary file