hyperspace-sdk-ts 2.0.0 → 2.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/client.d.ts CHANGED
@@ -18,6 +18,14 @@ export interface SearchResult {
18
18
  [key: string]: string;
19
19
  };
20
20
  }
21
+ export interface GraphNode {
22
+ id: number;
23
+ layer: number;
24
+ neighbors: number[];
25
+ metadata: {
26
+ [key: string]: string;
27
+ };
28
+ }
21
29
  export declare class HyperspaceClient {
22
30
  private client;
23
31
  private metadata;
@@ -46,5 +54,15 @@ export declare class HyperspaceClient {
46
54
  stateHash: number;
47
55
  count: number;
48
56
  }>;
57
+ getNode(id: number, layer?: number, collection?: string): Promise<GraphNode>;
58
+ getNeighbors(id: number, layer?: number, limit?: number, offset?: number, collection?: string): Promise<GraphNode[]>;
59
+ getConceptParents(id: number, layer?: number, limit?: number, collection?: string): Promise<GraphNode[]>;
60
+ traverse(startId: number, layer?: number, maxDepth?: number, maxNodes?: number, collection?: string, options?: {
61
+ filter?: {
62
+ [key: string]: string;
63
+ };
64
+ filters?: Filter[];
65
+ }): Promise<GraphNode[]>;
66
+ findSemanticClusters(layer?: number, minClusterSize?: number, maxClusters?: number, maxNodes?: number, collection?: string): Promise<number[][]>;
49
67
  close(): void;
50
68
  }
package/dist/client.js CHANGED
@@ -234,6 +234,163 @@ class HyperspaceClient {
234
234
  });
235
235
  });
236
236
  }
237
+ getNode(id, layer = 0, collection = '') {
238
+ return new Promise((resolve, reject) => {
239
+ const req = new hyperspace_pb_1.GetNodeRequest();
240
+ req.setCollection(collection);
241
+ req.setId(id);
242
+ req.setLayer(layer);
243
+ this.client.getNode(req, this.metadata, (err, resp) => {
244
+ if (err)
245
+ return reject(err);
246
+ const metaMap = resp.getMetadataMap();
247
+ const metadata = {};
248
+ if (metaMap.getLength() > 0) {
249
+ metaMap.forEach((entry, key) => {
250
+ metadata[key] = entry;
251
+ });
252
+ }
253
+ resolve({
254
+ id: resp.getId(),
255
+ layer: resp.getLayer(),
256
+ neighbors: resp.getNeighborsList(),
257
+ metadata
258
+ });
259
+ });
260
+ });
261
+ }
262
+ getNeighbors(id, layer = 0, limit = 64, offset = 0, collection = '') {
263
+ return new Promise((resolve, reject) => {
264
+ const req = new hyperspace_pb_1.GetNeighborsRequest();
265
+ req.setCollection(collection);
266
+ req.setId(id);
267
+ req.setLayer(layer);
268
+ req.setLimit(limit);
269
+ req.setOffset(offset);
270
+ this.client.getNeighbors(req, this.metadata, (err, resp) => {
271
+ if (err)
272
+ return reject(err);
273
+ const nodes = resp.getNeighborsList().map((n) => {
274
+ const metaMap = n.getMetadataMap();
275
+ const metadata = {};
276
+ if (metaMap.getLength() > 0) {
277
+ metaMap.forEach((entry, key) => {
278
+ metadata[key] = entry;
279
+ });
280
+ }
281
+ return {
282
+ id: n.getId(),
283
+ layer: n.getLayer(),
284
+ neighbors: n.getNeighborsList(),
285
+ metadata
286
+ };
287
+ });
288
+ resolve(nodes);
289
+ });
290
+ });
291
+ }
292
+ getConceptParents(id, layer = 0, limit = 32, collection = '') {
293
+ return new Promise((resolve, reject) => {
294
+ const req = new hyperspace_pb_1.GetConceptParentsRequest();
295
+ req.setCollection(collection);
296
+ req.setId(id);
297
+ req.setLayer(layer);
298
+ req.setLimit(limit);
299
+ this.client.getConceptParents(req, this.metadata, (err, resp) => {
300
+ if (err)
301
+ return reject(err);
302
+ const nodes = resp.getParentsList().map((n) => {
303
+ const metaMap = n.getMetadataMap();
304
+ const metadata = {};
305
+ if (metaMap.getLength() > 0) {
306
+ metaMap.forEach((entry, key) => {
307
+ metadata[key] = entry;
308
+ });
309
+ }
310
+ return {
311
+ id: n.getId(),
312
+ layer: n.getLayer(),
313
+ neighbors: n.getNeighborsList(),
314
+ metadata
315
+ };
316
+ });
317
+ resolve(nodes);
318
+ });
319
+ });
320
+ }
321
+ traverse(startId, layer = 0, maxDepth = 2, maxNodes = 256, collection = '', options) {
322
+ return new Promise((resolve, reject) => {
323
+ const req = new hyperspace_pb_1.TraverseRequest();
324
+ req.setCollection(collection);
325
+ req.setStartId(startId);
326
+ req.setLayer(layer);
327
+ req.setMaxDepth(maxDepth);
328
+ req.setMaxNodes(maxNodes);
329
+ if (options === null || options === void 0 ? void 0 : options.filter) {
330
+ const map = req.getFilterMap();
331
+ for (const k in options.filter) {
332
+ map.set(k, options.filter[k]);
333
+ }
334
+ }
335
+ if (options === null || options === void 0 ? void 0 : options.filters) {
336
+ const protoFilters = options.filters.map(f => {
337
+ const pf = new hyperspace_pb.Filter();
338
+ if (f.match) {
339
+ const m = new hyperspace_pb.Match();
340
+ m.setKey(f.match.key);
341
+ m.setValue(f.match.value);
342
+ pf.setMatch(m);
343
+ }
344
+ else if (f.range) {
345
+ const r = new hyperspace_pb.Range();
346
+ r.setKey(f.range.key);
347
+ if (f.range.gte !== undefined)
348
+ r.setGte(f.range.gte);
349
+ if (f.range.lte !== undefined)
350
+ r.setLte(f.range.lte);
351
+ pf.setRange(r);
352
+ }
353
+ return pf;
354
+ });
355
+ req.setFiltersList(protoFilters);
356
+ }
357
+ this.client.traverse(req, this.metadata, (err, resp) => {
358
+ if (err)
359
+ return reject(err);
360
+ const nodes = resp.getNodesList().map((n) => {
361
+ const metaMap = n.getMetadataMap();
362
+ const metadata = {};
363
+ if (metaMap.getLength() > 0) {
364
+ metaMap.forEach((entry, key) => {
365
+ metadata[key] = entry;
366
+ });
367
+ }
368
+ return {
369
+ id: n.getId(),
370
+ layer: n.getLayer(),
371
+ neighbors: n.getNeighborsList(),
372
+ metadata
373
+ };
374
+ });
375
+ resolve(nodes);
376
+ });
377
+ });
378
+ }
379
+ findSemanticClusters(layer = 0, minClusterSize = 3, maxClusters = 32, maxNodes = 10000, collection = '') {
380
+ return new Promise((resolve, reject) => {
381
+ const req = new hyperspace_pb_1.FindSemanticClustersRequest();
382
+ req.setCollection(collection);
383
+ req.setLayer(layer);
384
+ req.setMinClusterSize(minClusterSize);
385
+ req.setMaxClusters(maxClusters);
386
+ req.setMaxNodes(maxNodes);
387
+ this.client.findSemanticClusters(req, this.metadata, (err, resp) => {
388
+ if (err)
389
+ return reject(err);
390
+ resolve(resp.getClustersList().map((c) => c.getNodeIdsList()));
391
+ });
392
+ });
393
+ }
237
394
  close() {
238
395
  this.client.close();
239
396
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hyperspace-sdk-ts",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "Official TypeScript SDK for HyperspaceDB gRPC API",
5
5
  "main": "dist/client.js",
6
6
  "types": "dist/client.d.ts",