@nicia-ai/typegraph 0.47.0 → 0.48.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 (207) hide show
  1. package/dist/backend/drizzle/indexes.d.cts +1 -1
  2. package/dist/backend/drizzle/indexes.d.ts +1 -1
  3. package/dist/backend/index.cjs +27 -19
  4. package/dist/backend/index.d.cts +37 -55
  5. package/dist/backend/index.d.ts +37 -55
  6. package/dist/backend/index.js +4 -4
  7. package/dist/backend/postgres/index.cjs +7 -7
  8. package/dist/backend/postgres/index.d.cts +21 -7
  9. package/dist/backend/postgres/index.d.ts +21 -7
  10. package/dist/backend/postgres/index.js +6 -6
  11. package/dist/backend/postgres/pglite-store.cjs +17 -17
  12. package/dist/backend/postgres/pglite-store.d.cts +8 -8
  13. package/dist/backend/postgres/pglite-store.d.ts +8 -8
  14. package/dist/backend/postgres/pglite-store.js +14 -14
  15. package/dist/backend/postgres/pglite.cjs +8 -8
  16. package/dist/backend/postgres/pglite.d.cts +3 -3
  17. package/dist/backend/postgres/pglite.d.ts +3 -3
  18. package/dist/backend/postgres/pglite.js +7 -7
  19. package/dist/backend/sqlite/index.cjs +7 -7
  20. package/dist/backend/sqlite/index.d.cts +20 -7
  21. package/dist/backend/sqlite/index.d.ts +20 -7
  22. package/dist/backend/sqlite/index.js +6 -6
  23. package/dist/backend/sqlite/libsql.cjs +8 -8
  24. package/dist/backend/sqlite/libsql.d.cts +3 -3
  25. package/dist/backend/sqlite/libsql.d.ts +3 -3
  26. package/dist/backend/sqlite/libsql.js +6 -6
  27. package/dist/backend/sqlite/local-store.cjs +18 -18
  28. package/dist/backend/sqlite/local-store.d.cts +8 -8
  29. package/dist/backend/sqlite/local-store.d.ts +8 -8
  30. package/dist/backend/sqlite/local-store.js +15 -15
  31. package/dist/backend/sqlite/local.cjs +9 -9
  32. package/dist/backend/sqlite/local.d.cts +3 -3
  33. package/dist/backend/sqlite/local.d.ts +3 -3
  34. package/dist/backend/sqlite/local.js +7 -7
  35. package/dist/{chunk-EMIB2RXD.cjs → chunk-2HIYYMWY.cjs} +99 -96
  36. package/dist/chunk-2HIYYMWY.cjs.map +1 -0
  37. package/dist/{chunk-6KFLYYOC.cjs → chunk-2QGYQBS2.cjs} +5 -5
  38. package/dist/{chunk-6KFLYYOC.cjs.map → chunk-2QGYQBS2.cjs.map} +1 -1
  39. package/dist/{chunk-5FT3TLPK.js → chunk-2SYZXD54.js} +16 -13
  40. package/dist/chunk-2SYZXD54.js.map +1 -0
  41. package/dist/{chunk-XYBQI6LE.js → chunk-2TYSSBU5.js} +6 -6
  42. package/dist/{chunk-XYBQI6LE.js.map → chunk-2TYSSBU5.js.map} +1 -1
  43. package/dist/{chunk-6JVZSOHQ.cjs → chunk-3FPR224C.cjs} +26 -26
  44. package/dist/{chunk-6JVZSOHQ.cjs.map → chunk-3FPR224C.cjs.map} +1 -1
  45. package/dist/{chunk-MFZR4QKM.cjs → chunk-3KOY4FH3.cjs} +181 -4
  46. package/dist/chunk-3KOY4FH3.cjs.map +1 -0
  47. package/dist/{chunk-6FWSNSRE.js → chunk-4WMMBDS5.js} +4 -4
  48. package/dist/chunk-4WMMBDS5.js.map +1 -0
  49. package/dist/{chunk-NG2RB5WL.js → chunk-5K2BKEBD.js} +18 -3
  50. package/dist/chunk-5K2BKEBD.js.map +1 -0
  51. package/dist/chunk-5PRKMB24.cjs +124 -0
  52. package/dist/chunk-5PRKMB24.cjs.map +1 -0
  53. package/dist/chunk-6LN7FIVU.js +107 -0
  54. package/dist/chunk-6LN7FIVU.js.map +1 -0
  55. package/dist/{chunk-I4G3SQPF.cjs → chunk-7XUYFFR4.cjs} +7 -7
  56. package/dist/chunk-7XUYFFR4.cjs.map +1 -0
  57. package/dist/{chunk-KH7XW7VV.js → chunk-ACGSAMD3.js} +24 -27
  58. package/dist/chunk-ACGSAMD3.js.map +1 -0
  59. package/dist/{chunk-QS3NQZVC.js → chunk-AX6JGVTZ.js} +16 -11
  60. package/dist/chunk-AX6JGVTZ.js.map +1 -0
  61. package/dist/{chunk-DJZTXBWY.js → chunk-BRRP76WO.js} +71 -30
  62. package/dist/chunk-BRRP76WO.js.map +1 -0
  63. package/dist/{chunk-5UMTUOM5.js → chunk-CT3ZKTOF.js} +5 -4
  64. package/dist/chunk-CT3ZKTOF.js.map +1 -0
  65. package/dist/{chunk-XY5OMOJD.js → chunk-DZAICA5J.js} +3 -3
  66. package/dist/{chunk-XY5OMOJD.js.map → chunk-DZAICA5J.js.map} +1 -1
  67. package/dist/{chunk-OIFSOPSR.cjs → chunk-EZEEWCFJ.cjs} +38 -156
  68. package/dist/chunk-EZEEWCFJ.cjs.map +1 -0
  69. package/dist/{chunk-AMMWA76F.cjs → chunk-FA2AFWLP.cjs} +6 -6
  70. package/dist/{chunk-AMMWA76F.cjs.map → chunk-FA2AFWLP.cjs.map} +1 -1
  71. package/dist/{chunk-FNOMT74T.js → chunk-I4GAZH5Z.js} +180 -5
  72. package/dist/chunk-I4GAZH5Z.js.map +1 -0
  73. package/dist/{chunk-WGX7JH7E.cjs → chunk-JB6T4GLL.cjs} +106 -134
  74. package/dist/chunk-JB6T4GLL.cjs.map +1 -0
  75. package/dist/{chunk-MX4DHSQP.cjs → chunk-JFRT7S3B.cjs} +92 -98
  76. package/dist/chunk-JFRT7S3B.cjs.map +1 -0
  77. package/dist/{chunk-SE6EGQSD.js → chunk-KF6K7TGH.js} +38 -66
  78. package/dist/chunk-KF6K7TGH.js.map +1 -0
  79. package/dist/{chunk-ZHNXLS3C.js → chunk-NACVVDWB.js} +208 -8
  80. package/dist/chunk-NACVVDWB.js.map +1 -0
  81. package/dist/{chunk-M35DF33T.js → chunk-OD4SSY2U.js} +29 -16
  82. package/dist/chunk-OD4SSY2U.js.map +1 -0
  83. package/dist/{chunk-U5EDAVOJ.cjs → chunk-OTUPEF2W.cjs} +54 -49
  84. package/dist/chunk-OTUPEF2W.cjs.map +1 -0
  85. package/dist/{chunk-BCQ76AXA.cjs → chunk-PFBRJBUL.cjs} +107 -94
  86. package/dist/chunk-PFBRJBUL.cjs.map +1 -0
  87. package/dist/{chunk-AVGUJWVX.js → chunk-S5TERQVW.js} +15 -132
  88. package/dist/chunk-S5TERQVW.js.map +1 -0
  89. package/dist/chunk-SIT26LAZ.cjs +614 -0
  90. package/dist/chunk-SIT26LAZ.cjs.map +1 -0
  91. package/dist/{chunk-BR7SHKGM.cjs → chunk-SR725PWF.cjs} +548 -507
  92. package/dist/chunk-SR725PWF.cjs.map +1 -0
  93. package/dist/{chunk-5FBRVORR.cjs → chunk-TKZXMWQF.cjs} +8 -7
  94. package/dist/chunk-TKZXMWQF.cjs.map +1 -0
  95. package/dist/{chunk-425IZOQ5.cjs → chunk-TQHGE7UC.cjs} +20 -2
  96. package/dist/chunk-TQHGE7UC.cjs.map +1 -0
  97. package/dist/{chunk-GYUJZARH.cjs → chunk-TUNPBZY3.cjs} +4 -4
  98. package/dist/{chunk-GYUJZARH.cjs.map → chunk-TUNPBZY3.cjs.map} +1 -1
  99. package/dist/chunk-UGHG7PGX.js +592 -0
  100. package/dist/chunk-UGHG7PGX.js.map +1 -0
  101. package/dist/{chunk-KABFHAL7.cjs → chunk-UMGZDVOA.cjs} +213 -12
  102. package/dist/chunk-UMGZDVOA.cjs.map +1 -0
  103. package/dist/{chunk-UPAJHMW3.cjs → chunk-WCCATHMB.cjs} +54 -57
  104. package/dist/chunk-WCCATHMB.cjs.map +1 -0
  105. package/dist/{chunk-LEWHMOUY.js → chunk-YIURNGXI.js} +4 -4
  106. package/dist/{chunk-LEWHMOUY.js.map → chunk-YIURNGXI.js.map} +1 -1
  107. package/dist/{chunk-EP4RUYD6.js → chunk-YVF2EM7B.js} +3 -3
  108. package/dist/{chunk-EP4RUYD6.js.map → chunk-YVF2EM7B.js.map} +1 -1
  109. package/dist/{chunk-NNQ6A3RM.js → chunk-ZFMCDJGB.js} +7 -12
  110. package/dist/chunk-ZFMCDJGB.js.map +1 -0
  111. package/dist/core/index.cjs +6 -6
  112. package/dist/core/index.d.cts +4 -4
  113. package/dist/core/index.d.ts +4 -4
  114. package/dist/core/index.js +2 -2
  115. package/dist/ddl-BL1NZLMY.d.cts +78 -0
  116. package/dist/ddl-D_oW-EVO.d.ts +78 -0
  117. package/dist/graph-extension/index.d.cts +4 -4
  118. package/dist/graph-extension/index.d.ts +4 -4
  119. package/dist/graph-merge/index.cjs +334 -191
  120. package/dist/graph-merge/index.cjs.map +1 -1
  121. package/dist/graph-merge/index.d.cts +65 -15
  122. package/dist/graph-merge/index.d.ts +65 -15
  123. package/dist/graph-merge/index.js +174 -32
  124. package/dist/graph-merge/index.js.map +1 -1
  125. package/dist/{index-CHTv4XMZ.d.cts → index-COs_z6nV.d.cts} +2 -2
  126. package/dist/{index-CzoJ3MUw.d.ts → index-D7d1u2gr.d.ts} +2 -2
  127. package/dist/index.cjs +90 -86
  128. package/dist/index.d.cts +12 -12
  129. package/dist/index.d.ts +12 -12
  130. package/dist/index.js +13 -13
  131. package/dist/indexes/index.d.cts +4 -4
  132. package/dist/indexes/index.d.ts +4 -4
  133. package/dist/interchange/index.cjs +38 -38
  134. package/dist/interchange/index.d.cts +7 -7
  135. package/dist/interchange/index.d.ts +7 -7
  136. package/dist/interchange/index.js +10 -10
  137. package/dist/{manager-DlY1vlla.d.cts → manager-CYaff3n3.d.cts} +2 -2
  138. package/dist/{manager-B6sOQzcQ.d.ts → manager-D9eRT_ns.d.ts} +2 -2
  139. package/dist/{materialize-indexes-DQL4xcpf.d.ts → materialize-indexes-DJ3ykH59.d.ts} +1 -1
  140. package/dist/{materialize-indexes-sskhp-c_.d.cts → materialize-indexes-DTtAnvfY.d.cts} +1 -1
  141. package/dist/{postgres-BXy_nyMs.d.cts → postgres-CcL4bAHS.d.ts} +1 -1
  142. package/dist/{postgres-B6YOUcaK.d.ts → postgres-DMj39MEu.d.cts} +1 -1
  143. package/dist/profiler/index.d.cts +9 -9
  144. package/dist/profiler/index.d.ts +9 -9
  145. package/dist/provenance/index.cjs +25 -26
  146. package/dist/provenance/index.cjs.map +1 -1
  147. package/dist/provenance/index.d.cts +7 -7
  148. package/dist/provenance/index.d.ts +7 -7
  149. package/dist/provenance/index.js +9 -10
  150. package/dist/provenance/index.js.map +1 -1
  151. package/dist/repair-validity-windows-BFNZvd_H.d.cts +166 -0
  152. package/dist/repair-validity-windows-DlUSqwCg.d.ts +166 -0
  153. package/dist/schema/index.cjs +35 -35
  154. package/dist/schema/index.d.cts +6 -6
  155. package/dist/schema/index.d.ts +6 -6
  156. package/dist/schema/index.js +8 -8
  157. package/dist/{searchable-D9gMiwcS.d.ts → searchable-DHJMh_nj.d.cts} +1 -1
  158. package/dist/{searchable-0Cn_lY8U.d.cts → searchable-bpE1bBfc.d.ts} +1 -1
  159. package/dist/{sqlite-DioSxaPe.d.cts → sqlite-D7Oz0SQh.d.ts} +1 -1
  160. package/dist/{sqlite-ClXuBYAj.d.ts → sqlite-YppHrNFb.d.cts} +1 -1
  161. package/dist/{store-5j-w5onJ.d.ts → store-JUVvtmR4.d.cts} +113 -26
  162. package/dist/{store-CFedKGU5.d.cts → store-UzrGvZOo.d.ts} +113 -26
  163. package/dist/{temporal-CjO9FH1l.d.ts → temporal-5GqpYCk2.d.cts} +1 -1
  164. package/dist/{temporal-Ce1pG0S1.d.cts → temporal-CbnLzTmM.d.ts} +1 -1
  165. package/dist/{types-DKkMJZjR.d.cts → types-BqFZTQmV.d.cts} +29 -4
  166. package/dist/{types-DKkMJZjR.d.ts → types-BqFZTQmV.d.ts} +29 -4
  167. package/dist/{types-BrdOFu48.d.ts → types-Bx74kaTt.d.ts} +1 -1
  168. package/dist/{types-oj_OGAaZ.d.cts → types-CXAhpW-c.d.cts} +1 -1
  169. package/dist/{where-D1wKCJ4Q.d.cts → where-DI_Fqz-X.d.cts} +1 -1
  170. package/dist/{where-C8w2627G.d.ts → where-O-k2wgYm.d.ts} +1 -1
  171. package/package.json +1 -1
  172. package/dist/chunk-3HGRTCDU.cjs +0 -269
  173. package/dist/chunk-3HGRTCDU.cjs.map +0 -1
  174. package/dist/chunk-425IZOQ5.cjs.map +0 -1
  175. package/dist/chunk-5FBRVORR.cjs.map +0 -1
  176. package/dist/chunk-5FT3TLPK.js.map +0 -1
  177. package/dist/chunk-5UMTUOM5.js.map +0 -1
  178. package/dist/chunk-6FWSNSRE.js.map +0 -1
  179. package/dist/chunk-AVGUJWVX.js.map +0 -1
  180. package/dist/chunk-BCQ76AXA.cjs.map +0 -1
  181. package/dist/chunk-BR7SHKGM.cjs.map +0 -1
  182. package/dist/chunk-DJZTXBWY.js.map +0 -1
  183. package/dist/chunk-EMIB2RXD.cjs.map +0 -1
  184. package/dist/chunk-FNOMT74T.js.map +0 -1
  185. package/dist/chunk-I4G3SQPF.cjs.map +0 -1
  186. package/dist/chunk-JR6SX5RH.cjs +0 -268
  187. package/dist/chunk-JR6SX5RH.cjs.map +0 -1
  188. package/dist/chunk-KABFHAL7.cjs.map +0 -1
  189. package/dist/chunk-KH7XW7VV.js.map +0 -1
  190. package/dist/chunk-M35DF33T.js.map +0 -1
  191. package/dist/chunk-MFZR4QKM.cjs.map +0 -1
  192. package/dist/chunk-MX4DHSQP.cjs.map +0 -1
  193. package/dist/chunk-NAZ2RA4L.js +0 -254
  194. package/dist/chunk-NAZ2RA4L.js.map +0 -1
  195. package/dist/chunk-NG2RB5WL.js.map +0 -1
  196. package/dist/chunk-NNQ6A3RM.js.map +0 -1
  197. package/dist/chunk-OIFSOPSR.cjs.map +0 -1
  198. package/dist/chunk-QS3NQZVC.js.map +0 -1
  199. package/dist/chunk-SE6EGQSD.js.map +0 -1
  200. package/dist/chunk-SHSSRCFR.js +0 -246
  201. package/dist/chunk-SHSSRCFR.js.map +0 -1
  202. package/dist/chunk-U5EDAVOJ.cjs.map +0 -1
  203. package/dist/chunk-UPAJHMW3.cjs.map +0 -1
  204. package/dist/chunk-WGX7JH7E.cjs.map +0 -1
  205. package/dist/chunk-ZHNXLS3C.js.map +0 -1
  206. package/dist/ddl-CprnMXJ-.d.ts +0 -38
  207. package/dist/ddl-DJA7Lci5.d.cts +0 -38
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk3HGRTCDU_cjs = require('./chunk-3HGRTCDU.cjs');
3
+ var chunkEZEEWCFJ_cjs = require('./chunk-EZEEWCFJ.cjs');
4
+ var chunk5PRKMB24_cjs = require('./chunk-5PRKMB24.cjs');
4
5
  var chunkFQPEMEWX_cjs = require('./chunk-FQPEMEWX.cjs');
5
6
  var chunkEDN4Y4ZG_cjs = require('./chunk-EDN4Y4ZG.cjs');
6
7
  var chunkHAHNRASW_cjs = require('./chunk-HAHNRASW.cjs');
@@ -301,6 +302,180 @@ async function deleteNodeFulltext(ctx, schema) {
301
302
  function createUniquenessContext(graphId, registry, backend) {
302
303
  return { graphId, registry, backend };
303
304
  }
305
+ function nodeIdentityKey(reference) {
306
+ return chunkEZEEWCFJ_cjs.encodeTupleKey([reference.kind, reference.id]);
307
+ }
308
+ function proposedUniqueClaims(ctx, upserts) {
309
+ const claims = [];
310
+ const claimsByCheckedKind = /* @__PURE__ */ new Map();
311
+ const claimsByOwnKind = /* @__PURE__ */ new Map();
312
+ const orderedConstraints = [];
313
+ const seenConstraints = /* @__PURE__ */ new Set();
314
+ for (const upsert of upserts) {
315
+ for (const constraint of upsert.constraints) {
316
+ if (seenConstraints.has(constraint)) continue;
317
+ seenConstraints.add(constraint);
318
+ orderedConstraints.push(constraint);
319
+ }
320
+ }
321
+ for (const constraint of orderedConstraints) {
322
+ for (const upsert of upserts) {
323
+ if (!upsert.constraints.includes(constraint)) continue;
324
+ if (!chunkFQPEMEWX_cjs.checkWherePredicate(constraint, upsert.props)) continue;
325
+ const claim = {
326
+ kind: upsert.kind,
327
+ id: upsert.id,
328
+ constraint,
329
+ key: chunkFQPEMEWX_cjs.computeUniqueKey(
330
+ upsert.props,
331
+ constraint.fields,
332
+ constraint.collation
333
+ ),
334
+ kindsToCheck: chunkFQPEMEWX_cjs.getKindsForUniquenessCheck(
335
+ upsert.kind,
336
+ constraint.scope,
337
+ ctx.registry
338
+ )
339
+ };
340
+ const identity = nodeIdentityKey(claim);
341
+ const candidateGroups = [
342
+ claimsByCheckedKind.get(
343
+ chunkEZEEWCFJ_cjs.encodeTupleKey([constraint.name, claim.key, claim.kind])
344
+ ) ?? [],
345
+ ...claim.kindsToCheck.map(
346
+ (kind) => claimsByOwnKind.get(
347
+ chunkEZEEWCFJ_cjs.encodeTupleKey([constraint.name, claim.key, kind])
348
+ ) ?? []
349
+ )
350
+ ];
351
+ const collision = candidateGroups.flat().find((existing) => nodeIdentityKey(existing) !== identity);
352
+ if (collision !== void 0) {
353
+ throw new chunkMRDBBHIZ_cjs.UniquenessError({
354
+ constraintName: constraint.name,
355
+ kind: collision.kind,
356
+ existingId: collision.id,
357
+ newId: upsert.id,
358
+ fields: constraint.fields
359
+ });
360
+ }
361
+ claims.push(claim);
362
+ const ownKindKey = chunkEZEEWCFJ_cjs.encodeTupleKey([
363
+ constraint.name,
364
+ claim.key,
365
+ claim.kind
366
+ ]);
367
+ const sameKindClaims = claimsByOwnKind.get(ownKindKey);
368
+ if (sameKindClaims === void 0) {
369
+ claimsByOwnKind.set(ownKindKey, [claim]);
370
+ } else {
371
+ sameKindClaims.push(claim);
372
+ }
373
+ for (const kind of claim.kindsToCheck) {
374
+ const checkedKindKey = chunkEZEEWCFJ_cjs.encodeTupleKey([
375
+ constraint.name,
376
+ claim.key,
377
+ kind
378
+ ]);
379
+ const sameDomainClaims = claimsByCheckedKind.get(checkedKindKey);
380
+ if (sameDomainClaims === void 0) {
381
+ claimsByCheckedKind.set(checkedKindKey, [claim]);
382
+ } else {
383
+ sameDomainClaims.push(claim);
384
+ }
385
+ }
386
+ }
387
+ }
388
+ return claims;
389
+ }
390
+ function groupUniqueClaimsForBatchProbe(claims) {
391
+ const groups = /* @__PURE__ */ new Map();
392
+ for (const claim of claims) {
393
+ for (const nodeKind of claim.kindsToCheck) {
394
+ const groupKey = chunkEZEEWCFJ_cjs.encodeTupleKey([nodeKind, claim.constraint.name]);
395
+ const existing = groups.get(groupKey);
396
+ if (existing === void 0) {
397
+ groups.set(groupKey, {
398
+ nodeKind,
399
+ constraintName: claim.constraint.name,
400
+ claimsByKey: /* @__PURE__ */ new Map([[claim.key, claim]])
401
+ });
402
+ continue;
403
+ }
404
+ existing.claimsByKey.set(claim.key, claim);
405
+ }
406
+ }
407
+ return [...groups.values()];
408
+ }
409
+ async function validateResolvedNodeUniqueness(ctx, upserts, releases = []) {
410
+ const checkUniqueBatch = ctx.backend.checkUniqueBatch;
411
+ if (checkUniqueBatch === void 0) {
412
+ throw new chunkMRDBBHIZ_cjs.ConfigurationError(
413
+ "Resolved node writes require batched uniqueness probes",
414
+ { code: "RESOLVED_NODE_UNIQUENESS_UNSUPPORTED" }
415
+ );
416
+ }
417
+ const claims = proposedUniqueClaims(ctx, upserts);
418
+ if (claims.length === 0) return;
419
+ const affectedOwners = new Set(
420
+ [...upserts, ...releases].map((reference) => nodeIdentityKey(reference))
421
+ );
422
+ for (const group of groupUniqueClaimsForBatchProbe(claims)) {
423
+ const existingRows = await checkUniqueBatch({
424
+ graphId: ctx.graphId,
425
+ nodeKind: group.nodeKind,
426
+ constraintName: group.constraintName,
427
+ keys: [...group.claimsByKey.keys()]
428
+ });
429
+ for (const existing of existingRows) {
430
+ if (affectedOwners.has(
431
+ nodeIdentityKey({
432
+ kind: existing.concrete_kind,
433
+ id: existing.node_id
434
+ })
435
+ )) {
436
+ continue;
437
+ }
438
+ const claim = group.claimsByKey.get(existing.key);
439
+ if (claim === void 0) continue;
440
+ throw new chunkMRDBBHIZ_cjs.UniquenessError({
441
+ constraintName: group.constraintName,
442
+ kind: group.nodeKind,
443
+ existingId: existing.node_id,
444
+ newId: claim.id,
445
+ fields: claim.constraint.fields
446
+ });
447
+ }
448
+ }
449
+ }
450
+ async function prepareResolvedNodeUniqueness(ctx, upserts, releases) {
451
+ const hardDeleteUniquesByNodeIds = ctx.backend.hardDeleteUniquesByNodeIds;
452
+ if (ctx.backend.checkUniqueBatch === void 0 || ctx.backend.insertUniqueBatch === void 0 || hardDeleteUniquesByNodeIds === void 0) {
453
+ throw new chunkMRDBBHIZ_cjs.ConfigurationError(
454
+ "Resolved node writes require batched uniqueness operations",
455
+ { code: "RESOLVED_NODE_UNIQUENESS_UNSUPPORTED" }
456
+ );
457
+ }
458
+ await validateResolvedNodeUniqueness(ctx, upserts, releases);
459
+ const idsByKind = /* @__PURE__ */ new Map();
460
+ for (const reference of [...upserts, ...releases]) {
461
+ const ids = idsByKind.get(reference.kind) ?? /* @__PURE__ */ new Set();
462
+ ids.add(reference.id);
463
+ idsByKind.set(reference.kind, ids);
464
+ }
465
+ for (const [concreteKind, nodeIds] of idsByKind) {
466
+ await hardDeleteUniquesByNodeIds({
467
+ graphId: ctx.graphId,
468
+ concreteKind,
469
+ nodeIds: [...nodeIds]
470
+ });
471
+ }
472
+ }
473
+ async function applyResolvedNodeUniqueness(ctx, upserts, releases, apply) {
474
+ await prepareResolvedNodeUniqueness(ctx, upserts, releases);
475
+ const result = await apply();
476
+ await insertUniquenessEntriesBatch(ctx, upserts);
477
+ return result;
478
+ }
304
479
  async function probeUniqueKey(ctx, kind, id, constraint, key) {
305
480
  const kindsToCheck = chunkFQPEMEWX_cjs.getKindsForUniquenessCheck(
306
481
  kind,
@@ -591,7 +766,7 @@ async function applyNodeInsertSideEffectsBatch(ctx, items, backend) {
591
766
  );
592
767
  }
593
768
  function parseRowProps(row) {
594
- return chunk3HGRTCDU_cjs.rowPropsToObject(row.props);
769
+ return chunk5PRKMB24_cjs.rowPropsToObject(row.props);
595
770
  }
596
771
  async function planNodeUpdateUniqueness(ctx, args, backend) {
597
772
  const { kind, id } = args.existing;
@@ -744,6 +919,7 @@ exports.applyNodeInsertSideEffectsBatch = applyNodeInsertSideEffectsBatch;
744
919
  exports.applyNodeResurrect = applyNodeResurrect;
745
920
  exports.applyNodeSoftDelete = applyNodeSoftDelete;
746
921
  exports.applyNodeUpdate = applyNodeUpdate;
922
+ exports.applyResolvedNodeUniqueness = applyResolvedNodeUniqueness;
747
923
  exports.checkUniquenessConstraints = checkUniquenessConstraints;
748
924
  exports.computeFulltextContent = computeFulltextContent;
749
925
  exports.createNodeWriteContext = createNodeWriteContext;
@@ -753,5 +929,6 @@ exports.storeBackend = storeBackend;
753
929
  exports.storeRuntime = storeRuntime;
754
930
  exports.transactionBackend = transactionBackend;
755
931
  exports.transactionNodeOperationHookRunner = transactionNodeOperationHookRunner;
756
- //# sourceMappingURL=chunk-MFZR4QKM.cjs.map
757
- //# sourceMappingURL=chunk-MFZR4QKM.cjs.map
932
+ exports.validateResolvedNodeUniqueness = validateResolvedNodeUniqueness;
933
+ //# sourceMappingURL=chunk-3KOY4FH3.cjs.map
934
+ //# sourceMappingURL=chunk-3KOY4FH3.cjs.map