@nicia-ai/typegraph 0.16.2 → 0.18.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 (39) hide show
  1. package/dist/backend/postgres/index.cjs +27 -27
  2. package/dist/backend/postgres/index.js +2 -2
  3. package/dist/backend/sqlite/index.cjs +12 -12
  4. package/dist/backend/sqlite/index.js +2 -2
  5. package/dist/backend/sqlite/libsql.cjs +28 -0
  6. package/dist/backend/sqlite/libsql.cjs.map +1 -0
  7. package/dist/backend/sqlite/libsql.d.cts +86 -0
  8. package/dist/backend/sqlite/libsql.d.ts +86 -0
  9. package/dist/backend/sqlite/libsql.js +26 -0
  10. package/dist/backend/sqlite/libsql.js.map +1 -0
  11. package/dist/backend/sqlite/local.cjs +7 -12
  12. package/dist/backend/sqlite/local.cjs.map +1 -1
  13. package/dist/backend/sqlite/local.js +4 -9
  14. package/dist/backend/sqlite/local.js.map +1 -1
  15. package/dist/{chunk-5H74QKKF.cjs → chunk-HXJXTOXR.cjs} +23 -27
  16. package/dist/chunk-HXJXTOXR.cjs.map +1 -0
  17. package/dist/{chunk-2UTJRP4F.cjs → chunk-IYWWXOVK.cjs} +40 -28
  18. package/dist/chunk-IYWWXOVK.cjs.map +1 -0
  19. package/dist/{chunk-IRS2C6GN.js → chunk-LLHFS53Q.js} +10 -14
  20. package/dist/chunk-LLHFS53Q.js.map +1 -0
  21. package/dist/{chunk-7ZVPFJLQ.js → chunk-QFZQGEQ3.js} +40 -29
  22. package/dist/chunk-QFZQGEQ3.js.map +1 -0
  23. package/dist/index.cjs +63 -24
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +2 -2
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.js +63 -24
  28. package/dist/index.js.map +1 -1
  29. package/dist/interchange/index.d.cts +1 -1
  30. package/dist/interchange/index.d.ts +1 -1
  31. package/dist/profiler/index.d.cts +1 -1
  32. package/dist/profiler/index.d.ts +1 -1
  33. package/dist/{store-BZ7BexR1.d.cts → store-B_JzzHwb.d.cts} +2 -2
  34. package/dist/{store--7Nft1Ii.d.ts → store-DkY1pDfu.d.ts} +2 -2
  35. package/package.json +16 -1
  36. package/dist/chunk-2UTJRP4F.cjs.map +0 -1
  37. package/dist/chunk-5H74QKKF.cjs.map +0 -1
  38. package/dist/chunk-7ZVPFJLQ.js.map +0 -1
  39. package/dist/chunk-IRS2C6GN.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -2185,14 +2185,18 @@ function buildStandardProjection(input) {
2185
2185
  });
2186
2186
  return drizzleOrm.sql.join(projectedFields, drizzleOrm.sql`, `);
2187
2187
  }
2188
- function compileSelectiveProjection(fields, dialect, ast, collapsedTraversalCteAlias) {
2189
- const aliasToCte = /* @__PURE__ */ new Map([
2188
+ function buildAliasToCteMap(ast) {
2189
+ const map = /* @__PURE__ */ new Map([
2190
2190
  [ast.start.alias, `cte_${ast.start.alias}`]
2191
2191
  ]);
2192
2192
  for (const traversal of ast.traversals) {
2193
- aliasToCte.set(traversal.nodeAlias, `cte_${traversal.nodeAlias}`);
2194
- aliasToCte.set(traversal.edgeAlias, `cte_${traversal.nodeAlias}`);
2193
+ map.set(traversal.nodeAlias, `cte_${traversal.nodeAlias}`);
2194
+ map.set(traversal.edgeAlias, `cte_${traversal.nodeAlias}`);
2195
2195
  }
2196
+ return map;
2197
+ }
2198
+ function compileSelectiveProjection(fields, dialect, ast, collapsedTraversalCteAlias) {
2199
+ const aliasToCte = buildAliasToCteMap(ast);
2196
2200
  const columns = fields.map((field2) => {
2197
2201
  const cteAlias = collapsedTraversalCteAlias ?? aliasToCte.get(field2.alias) ?? `cte_${field2.alias}`;
2198
2202
  if (field2.isSystemField) {
@@ -2241,6 +2245,7 @@ function buildStandardOrderBy(input) {
2241
2245
  if (!ast.orderBy || ast.orderBy.length === 0) {
2242
2246
  return void 0;
2243
2247
  }
2248
+ const aliasToCte = buildAliasToCteMap(ast);
2244
2249
  const parts = [];
2245
2250
  for (const orderSpec of ast.orderBy) {
2246
2251
  const valueType = orderSpec.field.valueType;
@@ -2249,7 +2254,7 @@ function buildStandardOrderBy(input) {
2249
2254
  "Ordering by JSON arrays or objects is not supported"
2250
2255
  );
2251
2256
  }
2252
- const cteAlias = collapsedTraversalCteAlias ?? `cte_${orderSpec.field.alias}`;
2257
+ const cteAlias = collapsedTraversalCteAlias ?? aliasToCte.get(orderSpec.field.alias) ?? `cte_${orderSpec.field.alias}`;
2253
2258
  const field2 = compileFieldValue(
2254
2259
  orderSpec.field,
2255
2260
  dialect,
@@ -2296,8 +2301,14 @@ function buildStandardGroupBy(input) {
2296
2301
  if (allFields.length === 0) {
2297
2302
  return void 0;
2298
2303
  }
2304
+ const aliasToCte = buildAliasToCteMap(ast);
2299
2305
  const parts = allFields.map(
2300
- (field2) => compileFieldValue(field2, dialect, field2.valueType, `cte_${field2.alias}`)
2306
+ (field2) => compileFieldValue(
2307
+ field2,
2308
+ dialect,
2309
+ field2.valueType,
2310
+ aliasToCte.get(field2.alias) ?? `cte_${field2.alias}`
2311
+ )
2301
2312
  );
2302
2313
  return drizzleOrm.sql`GROUP BY ${drizzleOrm.sql.join(parts, drizzleOrm.sql`, `)}`;
2303
2314
  }
@@ -2372,6 +2383,7 @@ function buildStandardVectorOrderBy(input) {
2372
2383
  const distanceOrder = drizzleOrm.sql`cte_embeddings.distance ASC`;
2373
2384
  const additionalOrders = [];
2374
2385
  if (ast.orderBy && ast.orderBy.length > 0) {
2386
+ const aliasToCte = buildAliasToCteMap(ast);
2375
2387
  for (const orderSpec of ast.orderBy) {
2376
2388
  const valueType = orderSpec.field.valueType;
2377
2389
  if (valueType === "array" || valueType === "object") {
@@ -2379,7 +2391,7 @@ function buildStandardVectorOrderBy(input) {
2379
2391
  "Ordering by JSON arrays or objects is not supported"
2380
2392
  );
2381
2393
  }
2382
- const cteAlias = `cte_${orderSpec.field.alias}`;
2394
+ const cteAlias = aliasToCte.get(orderSpec.field.alias) ?? `cte_${orderSpec.field.alias}`;
2383
2395
  const field2 = compileFieldValue(
2384
2396
  orderSpec.field,
2385
2397
  dialect,
@@ -3849,6 +3861,16 @@ function mapSubgraphEdgeRow(row, projectionPlan) {
3849
3861
  applyProjectedFields(projectedEdge, row, kindPlan);
3850
3862
  return projectedEdge;
3851
3863
  }
3864
+
3865
+ // src/query/ast.ts
3866
+ function mergeEdgeKinds(traversal) {
3867
+ const inverse = traversal.inverseEdgeKinds;
3868
+ if (inverse === void 0 || inverse.length === 0) return traversal.edgeKinds;
3869
+ return [
3870
+ ...traversal.edgeKinds,
3871
+ ...inverse.filter((kind) => !traversal.edgeKinds.includes(kind))
3872
+ ];
3873
+ }
3852
3874
  var OPERATOR_MAP = {
3853
3875
  union: "UNION",
3854
3876
  unionAll: "UNION ALL",
@@ -5431,16 +5453,6 @@ function getStreamBatchSize(options) {
5431
5453
  return options?.batchSize ?? chunkMME3H4ZF_cjs.DEFAULT_STREAM_BATCH_SIZE;
5432
5454
  }
5433
5455
 
5434
- // src/query/ast.ts
5435
- function mergeEdgeKinds(traversal) {
5436
- const inverse = traversal.inverseEdgeKinds;
5437
- if (inverse === void 0 || inverse.length === 0) return traversal.edgeKinds;
5438
- return [
5439
- ...traversal.edgeKinds,
5440
- ...inverse.filter((kind) => !traversal.edgeKinds.includes(kind))
5441
- ];
5442
- }
5443
-
5444
5456
  // src/query/execution/field-tracker.ts
5445
5457
  var OBJECT_PROTOTYPE_PROPERTIES = /* @__PURE__ */ new Set([
5446
5458
  "__proto__",
@@ -6560,11 +6572,33 @@ var ExecutableQuery = class _ExecutableQuery {
6560
6572
  * Orders results.
6561
6573
  */
6562
6574
  orderBy(alias, field2, direction = "asc") {
6563
- const kindNames = alias === this.#state.startAlias ? this.#state.startKinds : this.#state.traversals.find(
6564
- (traversal) => traversal.nodeAlias === alias
6565
- )?.nodeKinds;
6566
- const typeInfo = kindNames ? this.#config.schemaIntrospector.getSharedFieldTypeInfo(kindNames, field2) : void 0;
6567
- const orderSpec = {
6575
+ const edgeTraversal = this.#state.traversals.find(
6576
+ (traversal) => traversal.edgeAlias === alias
6577
+ );
6578
+ const isEdge = edgeTraversal !== void 0;
6579
+ const isSystem = field2 === "id" || field2 === "kind" || isEdge && (field2 === "from_id" || field2 === "to_id");
6580
+ let typeInfo;
6581
+ if (!isSystem) {
6582
+ if (isEdge) {
6583
+ const edgeKindNames = mergeEdgeKinds(edgeTraversal);
6584
+ typeInfo = this.#config.schemaIntrospector.getSharedEdgeFieldTypeInfo(
6585
+ edgeKindNames,
6586
+ field2
6587
+ );
6588
+ } else {
6589
+ const kindNames = alias === this.#state.startAlias ? this.#state.startKinds : this.#state.traversals.find(
6590
+ (traversal) => traversal.nodeAlias === alias
6591
+ )?.nodeKinds;
6592
+ typeInfo = kindNames ? this.#config.schemaIntrospector.getSharedFieldTypeInfo(
6593
+ kindNames,
6594
+ field2
6595
+ ) : void 0;
6596
+ }
6597
+ }
6598
+ const orderSpec = isSystem ? {
6599
+ field: fieldRef(alias, [field2], { valueType: "string" }),
6600
+ direction
6601
+ } : {
6568
6602
  field: fieldRef(alias, ["props"], {
6569
6603
  jsonPointer: chunkP5CNM325_cjs.jsonPointer([field2]),
6570
6604
  valueType: typeInfo?.valueType,
@@ -8108,8 +8142,13 @@ var QueryBuilder = class _QueryBuilder {
8108
8142
  * Orders results.
8109
8143
  */
8110
8144
  orderBy(alias, field2, direction = "asc") {
8111
- const isSystem = field2 === "id" || field2 === "kind";
8112
- const typeInfo = isSystem ? void 0 : this.#getOrderByTypeInfo(alias, field2);
8145
+ const edgeKindNames = this.#getEdgeKindNamesForAlias(alias);
8146
+ const isEdge = edgeKindNames !== void 0;
8147
+ const isSystem = field2 === "id" || field2 === "kind" || isEdge && (field2 === "from_id" || field2 === "to_id");
8148
+ const typeInfo = isSystem ? void 0 : isEdge ? this.#config.schemaIntrospector.getSharedEdgeFieldTypeInfo(
8149
+ edgeKindNames,
8150
+ field2
8151
+ ) : this.#getOrderByTypeInfo(alias, field2);
8113
8152
  const orderSpec = isSystem ? {
8114
8153
  field: fieldRef(alias, [field2], { valueType: "string" }),
8115
8154
  direction