leangraph 1.1.8 → 1.2.1

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.
@@ -46,6 +46,17 @@ export declare class Translator {
46
46
  * Translate DROP INDEX to SQL.
47
47
  */
48
48
  private translateDropIndex;
49
+ /**
50
+ * Translate CREATE CONSTRAINT to SQL.
51
+ * Creates a partial unique index on a JSON property filtered by label.
52
+ *
53
+ * Syntax: CREATE CONSTRAINT [name] ON (n:Label) ASSERT n.property IS UNIQUE
54
+ */
55
+ private translateCreateConstraint;
56
+ /**
57
+ * Translate DROP CONSTRAINT to SQL.
58
+ */
59
+ private translateDropConstraint;
49
60
  private translateMatch;
50
61
  private registerPathExpression;
51
62
  private registerNodePattern;
@@ -1 +1 @@
1
- {"version":3,"file":"translator.d.ts","sourceRoot":"","sources":["../src/translator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translator.d.ts","sourceRoot":"","sources":["../src/translator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EASL,UAAU,EAuBX,MAAM,aAAa,CAAC;AAqFrB,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAGjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/H,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAqB;gBAEpB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAQrD,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB;IAwD1C;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,eAAe;IA2CvB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,8BAA8B;IAwBtC,OAAO,CAAC,2BAA2B;IA8EnC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,cAAc;IAqDtB,OAAO,CAAC,sBAAsB;IAuG9B,OAAO,CAAC,mBAAmB;IA4E3B,OAAO,CAAC,2BAA2B;IA0MnC,OAAO,CAAC,cAAc;IAoGtB,OAAO,CAAC,YAAY;IAoJpB,OAAO,CAAC,kCAAkC;IAsD1C;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,eAAe;IA+CvB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,eAAe;IA2vDvB,OAAO,CAAC,aAAa;IAiUrB,OAAO,CAAC,uBAAuB;IAuG/B,OAAO,CAAC,2BAA2B;IAi7BnC,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,eAAe;IAmGvB,OAAO,CAAC,aAAa;IA6DrB,OAAO,CAAC,kBAAkB;IAsD1B,OAAO,CAAC,0BAA0B;IAwClC,OAAO,CAAC,yBAAyB;IAiBjC;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAoGzC,OAAO,CAAC,mBAAmB;IAsiL3B,OAAO,CAAC,uBAAuB;IA4E/B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAkDlC,OAAO,CAAC,yBAAyB;IAoRjC,OAAO,CAAC,sCAAsC;IAigB9C,OAAO,CAAC,gBAAgB;IAmDxB,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAkB7B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,iBAAiB;IAYzB;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IAiEzC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,6BAA6B;IAmMrC,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,qBAAqB;IAyC7B;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAoFlC;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAqFjC;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAoCjC;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAoClC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkF/B;;;;;;;;OAQG;IACH,OAAO,CAAC,6BAA6B;IA2KrC;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IA2H9B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAyH5B;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAiEzC;;OAEG;IACH,OAAO,CAAC,sCAAsC;IAgD9C;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IA0JtC;;;OAGG;IACH,OAAO,CAAC,mCAAmC;IA+H3C;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,sBAAsB;IA4F9B;;;;;;;OAOG;IACH,OAAO,CAAC,4BAA4B;IAyEpC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAqE/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IAqBzC;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IA2B1C;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAsBpC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAiBlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,cAAc;IAoMtB,OAAO,CAAC,wBAAwB;IAwE/B,OAAO,CAAC,yBAAyB;IAgRjC,OAAO,CAAC,oBAAoB;IA6E7B,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,8BAA8B;IA6BtC,OAAO,CAAC,0BAA0B;IAoMlC;;OAEG;IACH,OAAO,CAAC,iCAAiC;IA6FzC,OAAO,CAAC,wBAAwB;IAkMhC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA8H5B;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;IA0HvC,OAAO,CAAC,qBAAqB;IAI7B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAsBnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,kCAAkC;IAyB1C,OAAO,CAAC,yBAAyB;IAyEjC;;;;OAIG;IACH,OAAO,CAAC,gCAAgC;IA6BxC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,wBAAwB;IAgChC,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAsBxC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;;OAGG;IACH,OAAO,CAAC,6CAA6C;IAiDrD;;;;;OAKG;IACH,OAAO,CAAC,mDAAmD;IA0F3D;;;OAGG;IACH,OAAO,CAAC,sCAAsC;IAgD9C,OAAO,CAAC,mBAAmB;IAsE3B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,qBAAqB;IAwQ7B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;IAmQzB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAoBjC;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAiD/B;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IAqClC;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IA0CjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAwFjC,OAAO,CAAC,qBAAqB;IAoF7B,OAAO,CAAC,yBAAyB;IAwMjC,OAAO,CAAC,8BAA8B;IAmKtC,OAAO,CAAC,qBAAqB;IA8J7B,OAAO,CAAC,0BAA0B;IAsHlC,OAAO,CAAC,UAAU;CAGnB;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,iBAAiB,CAE/F"}
@@ -174,6 +174,10 @@ export class Translator {
174
174
  return { statements: this.translateCreateIndex(clause) };
175
175
  case "DROP_INDEX":
176
176
  return { statements: this.translateDropIndex(clause) };
177
+ case "CREATE_CONSTRAINT":
178
+ return { statements: this.translateCreateConstraint(clause) };
179
+ case "DROP_CONSTRAINT":
180
+ return { statements: this.translateDropConstraint(clause) };
177
181
  default:
178
182
  throw new Error(`Unknown clause type: ${clause.type}`);
179
183
  }
@@ -339,6 +343,34 @@ export class Translator {
339
343
  return [{ sql, params: [] }];
340
344
  }
341
345
  // ============================================================================
346
+ // CREATE CONSTRAINT / DROP CONSTRAINT
347
+ // ============================================================================
348
+ /**
349
+ * Translate CREATE CONSTRAINT to SQL.
350
+ * Creates a partial unique index on a JSON property filtered by label.
351
+ *
352
+ * Syntax: CREATE CONSTRAINT [name] ON (n:Label) ASSERT n.property IS UNIQUE
353
+ */
354
+ translateCreateConstraint(clause) {
355
+ const rawName = clause.constraintName || `constraint_${clause.label}_${clause.property}_unique`;
356
+ // Quote constraint name as a SQL identifier to prevent injection
357
+ const constraintName = `"${rawName.replace(/"/g, '""')}"`;
358
+ const escapedProperty = escSqlStr(clause.property);
359
+ const escapedLabel = escSqlStr(clause.label);
360
+ // Create a partial unique index: unique on (property) where primary label matches
361
+ const sql = `CREATE UNIQUE INDEX IF NOT EXISTS ${constraintName} ON nodes(json_extract(properties, '$.${escapedProperty}')) WHERE json_extract(label, '$[0]') = '${escapedLabel}'`;
362
+ return [{ sql, params: [] }];
363
+ }
364
+ /**
365
+ * Translate DROP CONSTRAINT to SQL.
366
+ */
367
+ translateDropConstraint(clause) {
368
+ // Quote constraint name as a SQL identifier to prevent injection
369
+ const constraintName = `"${clause.constraintName.replace(/"/g, '""')}"`;
370
+ const sql = `DROP INDEX IF EXISTS ${constraintName}`;
371
+ return [{ sql, params: [] }];
372
+ }
373
+ // ============================================================================
342
374
  // MATCH
343
375
  // ============================================================================
344
376
  translateMatch(clause, optional = false) {