@_linked/core 2.0.0 → 2.0.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +50 -24
  3. package/lib/cjs/queries/DeleteBuilder.d.ts +17 -20
  4. package/lib/cjs/queries/DeleteBuilder.js +46 -19
  5. package/lib/cjs/queries/DeleteBuilder.js.map +1 -1
  6. package/lib/cjs/queries/DeleteQuery.d.ts +2 -2
  7. package/lib/cjs/queries/DeleteQuery.js.map +1 -1
  8. package/lib/cjs/queries/IRCanonicalize.d.ts +9 -2
  9. package/lib/cjs/queries/IRCanonicalize.js +6 -1
  10. package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
  11. package/lib/cjs/queries/IRDesugar.d.ts +19 -0
  12. package/lib/cjs/queries/IRDesugar.js +15 -9
  13. package/lib/cjs/queries/IRDesugar.js.map +1 -1
  14. package/lib/cjs/queries/IRLower.d.ts +10 -2
  15. package/lib/cjs/queries/IRLower.js +104 -2
  16. package/lib/cjs/queries/IRLower.js.map +1 -1
  17. package/lib/cjs/queries/IRMutation.d.ts +21 -1
  18. package/lib/cjs/queries/IRMutation.js +30 -1
  19. package/lib/cjs/queries/IRMutation.js.map +1 -1
  20. package/lib/cjs/queries/IntermediateRepresentation.d.ts +24 -2
  21. package/lib/cjs/queries/QueryBuilder.d.ts +14 -1
  22. package/lib/cjs/queries/QueryBuilder.js +59 -2
  23. package/lib/cjs/queries/QueryBuilder.js.map +1 -1
  24. package/lib/cjs/queries/UpdateBuilder.d.ts +20 -13
  25. package/lib/cjs/queries/UpdateBuilder.js +61 -11
  26. package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
  27. package/lib/cjs/queries/UpdateQuery.d.ts +2 -2
  28. package/lib/cjs/shapes/Shape.d.ts +6 -2
  29. package/lib/cjs/shapes/Shape.js +9 -5
  30. package/lib/cjs/shapes/Shape.js.map +1 -1
  31. package/lib/cjs/sparql/SparqlStore.js +15 -0
  32. package/lib/cjs/sparql/SparqlStore.js.map +1 -1
  33. package/lib/cjs/sparql/irToAlgebra.d.ts +34 -3
  34. package/lib/cjs/sparql/irToAlgebra.js +294 -35
  35. package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
  36. package/lib/cjs/test-helpers/query-fixtures.d.ts +1464 -16
  37. package/lib/cjs/test-helpers/query-fixtures.js +31 -2
  38. package/lib/cjs/test-helpers/query-fixtures.js.map +1 -1
  39. package/lib/esm/queries/DeleteBuilder.d.ts +17 -20
  40. package/lib/esm/queries/DeleteBuilder.js +46 -19
  41. package/lib/esm/queries/DeleteBuilder.js.map +1 -1
  42. package/lib/esm/queries/DeleteQuery.d.ts +2 -2
  43. package/lib/esm/queries/DeleteQuery.js.map +1 -1
  44. package/lib/esm/queries/IRCanonicalize.d.ts +9 -2
  45. package/lib/esm/queries/IRCanonicalize.js +6 -1
  46. package/lib/esm/queries/IRCanonicalize.js.map +1 -1
  47. package/lib/esm/queries/IRDesugar.d.ts +19 -0
  48. package/lib/esm/queries/IRDesugar.js +7 -2
  49. package/lib/esm/queries/IRDesugar.js.map +1 -1
  50. package/lib/esm/queries/IRLower.d.ts +10 -2
  51. package/lib/esm/queries/IRLower.js +102 -1
  52. package/lib/esm/queries/IRLower.js.map +1 -1
  53. package/lib/esm/queries/IRMutation.d.ts +21 -1
  54. package/lib/esm/queries/IRMutation.js +26 -0
  55. package/lib/esm/queries/IRMutation.js.map +1 -1
  56. package/lib/esm/queries/IntermediateRepresentation.d.ts +24 -2
  57. package/lib/esm/queries/QueryBuilder.d.ts +14 -1
  58. package/lib/esm/queries/QueryBuilder.js +59 -2
  59. package/lib/esm/queries/QueryBuilder.js.map +1 -1
  60. package/lib/esm/queries/UpdateBuilder.d.ts +20 -13
  61. package/lib/esm/queries/UpdateBuilder.js +61 -11
  62. package/lib/esm/queries/UpdateBuilder.js.map +1 -1
  63. package/lib/esm/queries/UpdateQuery.d.ts +2 -2
  64. package/lib/esm/shapes/Shape.d.ts +6 -2
  65. package/lib/esm/shapes/Shape.js +9 -5
  66. package/lib/esm/shapes/Shape.js.map +1 -1
  67. package/lib/esm/sparql/SparqlStore.js +16 -1
  68. package/lib/esm/sparql/SparqlStore.js.map +1 -1
  69. package/lib/esm/sparql/irToAlgebra.d.ts +34 -3
  70. package/lib/esm/sparql/irToAlgebra.js +288 -35
  71. package/lib/esm/sparql/irToAlgebra.js.map +1 -1
  72. package/lib/esm/test-helpers/query-fixtures.d.ts +1464 -16
  73. package/lib/esm/test-helpers/query-fixtures.js +31 -2
  74. package/lib/esm/test-helpers/query-fixtures.js.map +1 -1
  75. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#27](https://github.com/Semantu/linked/pull/27) [`d3c1e91`](https://github.com/Semantu/linked/commit/d3c1e918b2a63240ddbf3cb550ec43fa1e019c35) Thanks [@flyon](https://github.com/flyon)! - Add MINUS support on QueryBuilder with multiple call styles:
8
+
9
+ - `.minus(Shape)` — exclude by shape type
10
+ - `.minus(p => p.prop.equals(val))` — exclude by condition
11
+ - `.minus(p => p.prop)` — exclude by property existence
12
+ - `.minus(p => [p.prop1, p.nested.prop2])` — exclude by multi-property existence with nested path support
13
+
14
+ Add bulk delete operations:
15
+
16
+ - `Shape.deleteAll()` / `DeleteBuilder.from(Shape).all()` — delete all instances with schema-aware blank node cleanup
17
+ - `Shape.deleteWhere(fn)` / `DeleteBuilder.from(Shape).where(fn)` — conditional delete
18
+
19
+ Add conditional update operations:
20
+
21
+ - `.update(data).where(fn)` — update matching instances
22
+ - `.update(data).forAll()` — update all instances
23
+
24
+ API cleanup:
25
+
26
+ - Deprecate `sortBy()` in favor of `orderBy()`
27
+ - Remove `DeleteBuilder.for()` — use `DeleteBuilder.from(shape, ids)` instead
28
+ - Require `data` parameter in `Shape.update(data)`
29
+
3
30
  ## 2.0.0
4
31
 
5
32
  ### Major Changes
package/README.md CHANGED
@@ -246,9 +246,7 @@ const allFriends = await Person.select((p) => p.knows.selectAll());
246
246
 
247
247
  **3) Apply a simple mutation**
248
248
  ```typescript
249
- const updated = await Person.update({
250
- name: 'Alicia',
251
- }).for({id: 'https://my.app/node1'});
249
+ const updated = await Person.update({name: 'Alicia'}).for({id: 'https://my.app/node1'});
252
250
  /* updated: {id: string} & UpdatePartial<Person> */
253
251
  ```
254
252
 
@@ -291,10 +289,11 @@ The query DSL is schema-parameterized: you define your own SHACL shapes, and Lin
291
289
  - Counting with `.size()`
292
290
  - Custom result formats (object mapping)
293
291
  - Type casting with `.as(Shape)`
292
+ - MINUS exclusion (by shape, property, condition, multi-property, nested path)
294
293
  - Sorting, limiting, and `.one()`
295
294
  - Query context variables
296
295
  - Preloading (`preloadFor`) for component-like queries
297
- - Create / Update / Delete mutations
296
+ - Create / Update / Delete mutations (including bulk and conditional)
298
297
  - Dynamic query building with `QueryBuilder`
299
298
  - Composable field sets with `FieldSet`
300
299
  - Mutation builders (`CreateBuilder`, `UpdateBuilder`, `DeleteBuilder`)
@@ -410,9 +409,27 @@ And you want to select properties of those pets that are dogs:
410
409
  const guards = await Person.select((p) => p.pets.as(Dog).guardDogLevel);
411
410
  ```
412
411
 
412
+ #### MINUS (exclusion)
413
+ ```typescript
414
+ // Exclude by shape — all Persons that are NOT also Employees
415
+ const nonEmployees = await Person.select((p) => p.name).minus(Employee);
416
+
417
+ // Exclude by property existence — Persons that do NOT have a hobby
418
+ const noHobby = await Person.select((p) => p.name).minus((p) => p.hobby);
419
+
420
+ // Exclude by multiple properties — Persons missing BOTH hobby AND nickNames
421
+ const sparse = await Person.select((p) => p.name).minus((p) => [p.hobby, p.nickNames]);
422
+
423
+ // Exclude by nested path — Persons whose bestFriend does NOT have a name
424
+ const unnamed = await Person.select((p) => p.name).minus((p) => [p.bestFriend.name]);
425
+
426
+ // Exclude by condition — Persons whose hobby is NOT 'Chess'
427
+ const noChess = await Person.select((p) => p.name).minus((p) => p.hobby.equals('Chess'));
428
+ ```
429
+
413
430
  #### Sorting, limiting, one
414
431
  ```typescript
415
- const sorted = await Person.select((p) => p.name).sortBy((p) => p.name, 'ASC');
432
+ const sorted = await Person.select((p) => p.name).orderBy((p) => p.name, 'ASC');
416
433
  const limited = await Person.select((p) => p.name).limit(1);
417
434
  const single = await Person.select((p) => p.name).one();
418
435
  ```
@@ -447,8 +464,10 @@ Where UpdatePartial<Shape> reflects the created properties.
447
464
 
448
465
  #### Update
449
466
 
450
- Update will patch any property that you send as payload and leave the rest untouched. Chain `.for(id)` to target the entity:
467
+ Update will patch any property that you send as payload and leave the rest untouched. The data to update is required:
468
+
451
469
  ```typescript
470
+ // Target a specific entity with .for(id)
452
471
  /* Result: {id: string} & UpdatePartial<Person> */
453
472
  const updated = await Person.update({name: 'Alicia'}).for({id: 'https://my.app/node1'});
454
473
  ```
@@ -460,6 +479,15 @@ Returns:
460
479
  }
461
480
  ```
462
481
 
482
+ **Conditional and bulk updates:**
483
+ ```typescript
484
+ // Update all matching entities
485
+ const archived = await Person.update({status: 'archived'}).where(p => p.status.equals('inactive'));
486
+
487
+ // Update all instances of a shape
488
+ await Person.update({verified: true}).forAll();
489
+ ```
490
+
463
491
  **Updating multi-value properties**
464
492
  When updating a property that holds multiple values (one that returns an array in the results), you can either overwrite all the values with a new explicit array of values, or delete from/add to the current values.
465
493
 
@@ -503,27 +531,19 @@ This returns an object with the added and removed items
503
531
 
504
532
 
505
533
  #### Delete
506
- To delete a node entirely:
507
534
 
508
535
  ```typescript
509
- /* Result: {deleted: Array<{id: string}>, count: number} */
536
+ // Delete a single node
510
537
  const deleted = await Person.delete({id: 'https://my.app/node1'});
511
- ```
512
- Returns
513
- ```json
514
- {
515
- deleted:[
516
- {id:"https://my.app/node1"}
517
- ],
518
- count:1
519
- }
520
- ```
521
538
 
522
- To delete multiple nodes pass an array:
539
+ // Delete multiple nodes
540
+ const deleted = await Person.delete([{id: 'https://my.app/node1'}, {id: 'https://my.app/node2'}]);
523
541
 
524
- ```typescript
525
- /* Result: {deleted: Array<{id: string}>, count: number} */
526
- const deleted = await Person.delete([{id: 'https://my.app/node1'},{id: 'https://my.app/node2'}]);
542
+ // Delete all instances of a shape (with blank node cleanup)
543
+ await Person.deleteAll();
544
+
545
+ // Conditional delete
546
+ await Person.deleteWhere(p => p.status.equals('inactive'));
527
547
  ```
528
548
 
529
549
 
@@ -716,8 +736,14 @@ const updated = await UpdateBuilder.from(Person)
716
736
  .for({id: 'https://my.app/alice'})
717
737
  .set({name: 'Alicia'});
718
738
 
719
- // Delete — equivalent to Person.delete({id: '...'})
720
- const deleted = await DeleteBuilder.from(Person).for({id: 'https://my.app/alice'});
739
+ // Delete by ID — equivalent to Person.delete({id: '...'})
740
+ const deleted = await DeleteBuilder.from(Person, {id: 'https://my.app/alice'});
741
+
742
+ // Delete all — equivalent to Person.deleteAll()
743
+ await DeleteBuilder.from(Person).all();
744
+
745
+ // Conditional update — equivalent to Person.update({...}).where(fn)
746
+ await UpdateBuilder.from(Person).set({verified: true}).forAll();
721
747
 
722
748
  // All builders are PromiseLike — await them or call .build() for the IR
723
749
  const ir = CreateBuilder.from(Person).set({name: 'Alice'}).build();
@@ -1,39 +1,36 @@
1
1
  import { Shape, ShapeConstructor } from '../shapes/Shape.js';
2
2
  import { DeleteQuery, DeleteResponse } from './DeleteQuery.js';
3
3
  import { NodeId } from './MutationQuery.js';
4
+ import { WhereClause } from './SelectQuery.js';
4
5
  /**
5
6
  * An immutable, fluent builder for delete mutations.
6
7
  *
7
8
  * Implements PromiseLike so mutations execute on `await`:
8
9
  * ```ts
9
- * const result = await DeleteBuilder.from(Person).for({id: '...'});
10
+ * const result = await DeleteBuilder.from(Person, {id: '...'});
11
+ * await DeleteBuilder.from(Person).all(); // returns void
10
12
  * ```
11
13
  *
12
- * Internally delegates to DeleteQueryFactory for IR generation.
14
+ * R is the resolved type: DeleteResponse for ID-based, void for bulk operations.
13
15
  */
14
- export declare class DeleteBuilder<S extends Shape = Shape> implements PromiseLike<DeleteResponse>, Promise<DeleteResponse> {
16
+ export declare class DeleteBuilder<S extends Shape = Shape, R = DeleteResponse> implements PromiseLike<R>, Promise<R> {
15
17
  private readonly _shape;
16
18
  private readonly _ids?;
19
+ private readonly _mode?;
20
+ private readonly _whereFn?;
17
21
  private constructor();
18
22
  private clone;
19
- /**
20
- * Create a DeleteBuilder for the given shape.
21
- *
22
- * Optionally accepts IDs inline for backwards compatibility:
23
- * ```ts
24
- * DeleteBuilder.from(Person).for({id: '...'}) // preferred
25
- * DeleteBuilder.from(Person, {id: '...'}) // also supported
26
- * ```
27
- */
28
- static from<S extends Shape>(shape: ShapeConstructor<S> | string, ids?: NodeId | NodeId[]): DeleteBuilder<S>;
29
- /** Specify the target IDs to delete. */
30
- for(ids: NodeId | NodeId[]): DeleteBuilder<S>;
31
- /** Build the IR mutation. Throws if no IDs were specified via .for(). */
23
+ static from<S extends Shape>(shape: ShapeConstructor<S> | string, ids?: NodeId | NodeId[]): DeleteBuilder<S, DeleteResponse>;
24
+ /** Delete all instances of this shape type. Returns void. */
25
+ all(): DeleteBuilder<S, void>;
26
+ /** Delete instances matching a condition. Returns void. */
27
+ where(fn: WhereClause<S>): DeleteBuilder<S, void>;
28
+ /** Build the IR mutation. */
32
29
  build(): DeleteQuery;
33
30
  /** Execute the mutation. */
34
- exec(): Promise<DeleteResponse>;
35
- then<TResult1 = DeleteResponse, TResult2 = never>(onfulfilled?: ((value: DeleteResponse) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
36
- catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<DeleteResponse | TResult>;
37
- finally(onfinally?: (() => void) | null): Promise<DeleteResponse>;
31
+ exec(): Promise<R>;
32
+ then<TResult1 = R, TResult2 = never>(onfulfilled?: ((value: R) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
33
+ catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<R | TResult>;
34
+ finally(onfinally?: (() => void) | null): Promise<R>;
38
35
  get [Symbol.toStringTag](): string;
39
36
  }
@@ -4,65 +4,92 @@ exports.DeleteBuilder = void 0;
4
4
  const resolveShape_js_1 = require("./resolveShape.js");
5
5
  const DeleteQuery_js_1 = require("./DeleteQuery.js");
6
6
  const queryDispatch_js_1 = require("./queryDispatch.js");
7
+ const SelectQuery_js_1 = require("./SelectQuery.js");
8
+ const IRMutation_js_1 = require("./IRMutation.js");
9
+ const IRDesugar_js_1 = require("./IRDesugar.js");
10
+ const IRCanonicalize_js_1 = require("./IRCanonicalize.js");
11
+ const IRLower_js_1 = require("./IRLower.js");
7
12
  /**
8
13
  * An immutable, fluent builder for delete mutations.
9
14
  *
10
15
  * Implements PromiseLike so mutations execute on `await`:
11
16
  * ```ts
12
- * const result = await DeleteBuilder.from(Person).for({id: '...'});
17
+ * const result = await DeleteBuilder.from(Person, {id: '...'});
18
+ * await DeleteBuilder.from(Person).all(); // returns void
13
19
  * ```
14
20
  *
15
- * Internally delegates to DeleteQueryFactory for IR generation.
21
+ * R is the resolved type: DeleteResponse for ID-based, void for bulk operations.
16
22
  */
17
23
  class DeleteBuilder {
18
24
  constructor(init) {
19
25
  this._shape = init.shape;
20
26
  this._ids = init.ids;
27
+ this._mode = init.mode;
28
+ this._whereFn = init.whereFn;
21
29
  }
22
30
  clone(overrides = {}) {
23
- return new DeleteBuilder(Object.assign({ shape: this._shape, ids: this._ids }, overrides));
31
+ return new DeleteBuilder(Object.assign({ shape: this._shape, ids: this._ids, mode: this._mode, whereFn: this._whereFn }, overrides));
24
32
  }
25
33
  // ---------------------------------------------------------------------------
26
34
  // Static constructors
27
35
  // ---------------------------------------------------------------------------
28
- /**
29
- * Create a DeleteBuilder for the given shape.
30
- *
31
- * Optionally accepts IDs inline for backwards compatibility:
32
- * ```ts
33
- * DeleteBuilder.from(Person).for({id: '...'}) // preferred
34
- * DeleteBuilder.from(Person, {id: '...'}) // also supported
35
- * ```
36
- */
37
36
  static from(shape, ids) {
38
37
  const resolved = (0, resolveShape_js_1.resolveShape)(shape);
39
38
  if (ids !== undefined) {
40
39
  const idsArray = Array.isArray(ids) ? ids : [ids];
41
- return new DeleteBuilder({ shape: resolved, ids: idsArray });
40
+ return new DeleteBuilder({ shape: resolved, ids: idsArray, mode: 'ids' });
42
41
  }
43
42
  return new DeleteBuilder({ shape: resolved });
44
43
  }
45
44
  // ---------------------------------------------------------------------------
46
45
  // Fluent API
47
46
  // ---------------------------------------------------------------------------
48
- /** Specify the target IDs to delete. */
49
- for(ids) {
50
- const idsArray = Array.isArray(ids) ? ids : [ids];
51
- return this.clone({ ids: idsArray });
47
+ /** Delete all instances of this shape type. Returns void. */
48
+ all() {
49
+ return this.clone({ mode: 'all', ids: undefined, whereFn: undefined });
50
+ }
51
+ /** Delete instances matching a condition. Returns void. */
52
+ where(fn) {
53
+ return this.clone({ mode: 'where', whereFn: fn, ids: undefined });
52
54
  }
53
55
  // ---------------------------------------------------------------------------
54
56
  // Build & execute
55
57
  // ---------------------------------------------------------------------------
56
- /** Build the IR mutation. Throws if no IDs were specified via .for(). */
58
+ /** Build the IR mutation. */
57
59
  build() {
60
+ const mode = this._mode || (this._ids ? 'ids' : undefined);
61
+ if (mode === 'all') {
62
+ return (0, IRMutation_js_1.buildCanonicalDeleteAllMutationIR)({
63
+ shape: this._shape.shape,
64
+ });
65
+ }
66
+ if (mode === 'where') {
67
+ if (!this._whereFn) {
68
+ throw new Error('DeleteBuilder.where() requires a condition callback.');
69
+ }
70
+ const wherePath = (0, SelectQuery_js_1.processWhereClause)(this._whereFn, this._shape);
71
+ const desugared = (0, IRDesugar_js_1.toWhere)(wherePath);
72
+ const canonical = (0, IRCanonicalize_js_1.canonicalizeWhere)(desugared);
73
+ const { where, wherePatterns } = (0, IRLower_js_1.lowerWhereToIR)(canonical);
74
+ return (0, IRMutation_js_1.buildCanonicalDeleteWhereMutationIR)({
75
+ shape: this._shape.shape,
76
+ where,
77
+ wherePatterns,
78
+ });
79
+ }
80
+ // Default: ID-based delete
58
81
  if (!this._ids || this._ids.length === 0) {
59
- throw new Error('DeleteBuilder requires at least one ID to delete. Specify targets with .for(ids).');
82
+ throw new Error('DeleteBuilder requires at least one ID to delete. Use DeleteBuilder.from(shape, ids), .all(), or .where().');
60
83
  }
61
84
  const factory = new DeleteQuery_js_1.DeleteQueryFactory(this._shape, this._ids);
62
85
  return factory.build();
63
86
  }
64
87
  /** Execute the mutation. */
65
88
  exec() {
89
+ const mode = this._mode || (this._ids ? 'ids' : undefined);
90
+ if (mode === 'all' || mode === 'where') {
91
+ return (0, queryDispatch_js_1.getQueryDispatch)().deleteQuery(this.build()).then(() => undefined);
92
+ }
66
93
  return (0, queryDispatch_js_1.getQueryDispatch)().deleteQuery(this.build());
67
94
  }
68
95
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteBuilder.js","sourceRoot":"","sources":["../../../src/queries/DeleteBuilder.ts"],"names":[],"mappings":";;;AACA,uDAA+C;AAC/C,qDAAiF;AAEjF,yDAAoD;AAUpD;;;;;;;;;GASG;AACH,MAAa,aAAa;IAMxB,YAAoB,IAA0B;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,YAA2C,EAAE;QACzD,OAAO,IAAI,aAAa,iBACtB,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,GAAG,EAAE,IAAI,CAAC,IAAI,IACX,SAAS,EACZ,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAE9E;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,CACT,KAAmC,EACnC,GAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAA,8BAAY,EAAI,KAAK,CAAC,CAAC;QACxC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,OAAO,IAAI,aAAa,CAAI,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,aAAa,CAAI,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;IACjD,CAAC;IAED,8EAA8E;IAC9E,aAAa;IACb,8EAA8E;IAE9E,wCAAwC;IACxC,GAAG,CAAC,GAAsB;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAC,CAAC,CAAC;IACrC,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAE9E,yEAAyE;IACzE,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,mCAAkB,CACpC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,CACV,CAAC;QACF,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,4BAA4B;IAC5B,IAAI;QACF,OAAO,IAAA,mCAAgB,GAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,8EAA8E;IAC9E,oBAAoB;IACpB,8EAA8E;IAE9E,IAAI,CACF,WAAkF,EAClF,UAAuE;QAEvE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CACH,UAAqE;QAErE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,SAA+B;QACrC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AArGD,sCAqGC"}
1
+ {"version":3,"file":"DeleteBuilder.js","sourceRoot":"","sources":["../../../src/queries/DeleteBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { Shape, ShapeConstructor } from '../shapes/Shape.js';
2
2
  import { NodeReferenceValue, UpdatePartial } from './QueryFactory.js';
3
3
  import { MutationQueryFactory, NodeId } from './MutationQuery.js';
4
- import { IRDeleteMutation } from './IntermediateRepresentation.js';
4
+ import { IRDeleteMutation, IRDeleteAllMutation, IRDeleteWhereMutation } from './IntermediateRepresentation.js';
5
5
  /**
6
6
  * The canonical DeleteQuery type — an IR AST node representing a delete mutation.
7
7
  * This is the type received by IQuadStore.deleteQuery().
8
8
  */
9
- export type DeleteQuery = IRDeleteMutation;
9
+ export type DeleteQuery = IRDeleteMutation | IRDeleteAllMutation | IRDeleteWhereMutation;
10
10
  export type DeleteResponse = {
11
11
  /**
12
12
  * The IDs of the items that were successfully deleted.
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteQuery.js","sourceRoot":"","sources":["../../../src/queries/DeleteQuery.ts"],"names":[],"mappings":";;;AAEA,yDAAgE;AAEhE,mDAA+D;AA2B/D,MAAa,kBAGX,SAAQ,uCAAoB;IAI5B,YACS,UAAuC,EAC9C,GAAsB;QAEtB,KAAK,EAAE,CAAC;QAHD,eAAU,GAAV,UAAU,CAA6B;QAI9C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK;QACH,OAAO,IAAA,8CAA8B,EAAC;YACpC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;IACL,CAAC;CACF;AArBD,gDAqBC"}
1
+ {"version":3,"file":"DeleteQuery.js","sourceRoot":"","sources":["../../../src/queries/DeleteQuery.ts"],"names":[],"mappings":";;;AAEA,yDAAgE;AAMhE,mDAA+D;AA2B/D,MAAa,kBAGX,SAAQ,uCAAoB;IAI5B,YACS,UAAuC,EAC9C,GAAsB;QAEtB,KAAK,EAAE,CAAC;QAHD,eAAU,GAAV,UAAU,CAA6B;QAI9C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK;QACH,OAAO,IAAA,8CAA8B,EAAC;YACpC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;IACL,CAAC;CACF;AArBD,gDAqBC"}
@@ -1,4 +1,4 @@
1
- import { DesugaredSelectionPath, DesugaredSelectQuery, DesugaredWhere, DesugaredWhereArg } from './IRDesugar.js';
1
+ import { DesugaredSelectionPath, DesugaredSelectQuery, DesugaredWhere, DesugaredWhereArg, PropertyPathSegment } from './IRDesugar.js';
2
2
  import { WhereMethods } from './SelectQuery.js';
3
3
  export type CanonicalWhereComparison = {
4
4
  kind: 'where_binary';
@@ -21,8 +21,15 @@ export type CanonicalWhereNot = {
21
21
  expression: CanonicalWhereExpression;
22
22
  };
23
23
  export type CanonicalWhereExpression = CanonicalWhereComparison | CanonicalWhereLogical | CanonicalWhereExists | CanonicalWhereNot;
24
- export type CanonicalDesugaredSelectQuery = Omit<DesugaredSelectQuery, 'where'> & {
24
+ /** A canonicalized MINUS entry. */
25
+ export type CanonicalMinusEntry = {
26
+ shapeId?: string;
25
27
  where?: CanonicalWhereExpression;
28
+ propertyPaths?: PropertyPathSegment[][];
29
+ };
30
+ export type CanonicalDesugaredSelectQuery = Omit<DesugaredSelectQuery, 'where' | 'minusEntries'> & {
31
+ where?: CanonicalWhereExpression;
32
+ minusEntries?: CanonicalMinusEntry[];
26
33
  };
27
34
  /**
28
35
  * Recursively rewrites a desugared where-clause into canonical form:
@@ -115,7 +115,12 @@ exports.canonicalizeWhere = canonicalizeWhere;
115
115
  * All other fields pass through unchanged.
116
116
  */
117
117
  const canonicalizeDesugaredSelectQuery = (query) => {
118
- return Object.assign(Object.assign({}, query), { where: query.where ? (0, exports.canonicalizeWhere)(query.where) : undefined });
118
+ var _a;
119
+ return Object.assign(Object.assign({}, query), { where: query.where ? (0, exports.canonicalizeWhere)(query.where) : undefined, minusEntries: (_a = query.minusEntries) === null || _a === void 0 ? void 0 : _a.map((entry) => ({
120
+ shapeId: entry.shapeId,
121
+ where: entry.where ? (0, exports.canonicalizeWhere)(entry.where) : undefined,
122
+ propertyPaths: entry.propertyPaths,
123
+ })) });
119
124
  };
120
125
  exports.canonicalizeDesugaredSelectQuery = canonicalizeDesugaredSelectQuery;
121
126
  //# sourceMappingURL=IRCanonicalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IRCanonicalize.js","sourceRoot":"","sources":["../../../src/queries/IRCanonicalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IRCanonicalize.js","sourceRoot":"","sources":["../../../src/queries/IRCanonicalize.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,16 @@ import type { FieldSetEntry } from './FieldSet.js';
4
4
  /**
5
5
  * Pipeline input type — accepts FieldSet entries directly.
6
6
  */
7
+ /** A single segment in a property path (used for MINUS property existence). */
8
+ export type PropertyPathSegment = {
9
+ propertyShapeId: string;
10
+ };
11
+ /** A raw MINUS entry before desugaring. */
12
+ export type RawMinusEntry = {
13
+ shapeId?: string;
14
+ where?: WherePath;
15
+ propertyPaths?: PropertyPathSegment[][];
16
+ };
7
17
  export type RawSelectInput = {
8
18
  entries: readonly FieldSetEntry[];
9
19
  where?: WherePath;
@@ -19,6 +29,7 @@ export type RawSelectInput = {
19
29
  limit?: number;
20
30
  offset?: number;
21
31
  singleResult?: boolean;
32
+ minusEntries?: RawMinusEntry[];
22
33
  };
23
34
  export type DesugaredPropertyStep = {
24
35
  kind: 'property_step';
@@ -85,6 +96,12 @@ export type DesugaredWhereArg = JSNonNullPrimitive | NodeReferenceValue | ShapeR
85
96
  subject?: ShapeReferenceValue;
86
97
  path: DesugaredSelectionPath;
87
98
  } | DesugaredWhere;
99
+ /** A desugared MINUS entry. */
100
+ export type DesugaredMinusEntry = {
101
+ shapeId?: string;
102
+ where?: DesugaredWhere;
103
+ propertyPaths?: PropertyPathSegment[][];
104
+ };
88
105
  export type DesugaredSelectQuery = {
89
106
  kind: 'desugared_select';
90
107
  shapeId?: string;
@@ -96,7 +113,9 @@ export type DesugaredSelectQuery = {
96
113
  selections: DesugaredSelection[];
97
114
  sortBy?: DesugaredSortBy;
98
115
  where?: DesugaredWhere;
116
+ minusEntries?: DesugaredMinusEntry[];
99
117
  };
118
+ export declare const toWhere: (path: WherePath) => DesugaredWhere;
100
119
  /**
101
120
  * Converts a RawSelectInput (FieldSet entries + where/sort) into a DesugaredSelectQuery.
102
121
  */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.desugarSelectQuery = void 0;
3
+ exports.desugarSelectQuery = exports.toWhere = void 0;
4
4
  const SelectQuery_js_1 = require("./SelectQuery.js");
5
5
  const isShapeRef = (value) => !!value && typeof value === 'object' && 'id' in value && 'shape' in value;
6
6
  const isNodeRef = (value) => typeof value === 'object' && value !== null && 'id' in value;
@@ -20,7 +20,7 @@ const desugarEntry = (entry) => {
20
20
  if (entry.evaluation) {
21
21
  return {
22
22
  kind: 'evaluation_select',
23
- where: toWhere(entry.evaluation.wherePath),
23
+ where: (0, exports.toWhere)(entry.evaluation.wherePath),
24
24
  };
25
25
  }
26
26
  // Count aggregation → DesugaredCountStep
@@ -51,7 +51,7 @@ const desugarEntry = (entry) => {
51
51
  propertyShapeId: segment.id,
52
52
  };
53
53
  if (entry.scopedFilter && i === segments.length - 1) {
54
- step.where = toWhere(entry.scopedFilter);
54
+ step.where = (0, exports.toWhere)(entry.scopedFilter);
55
55
  }
56
56
  return step;
57
57
  });
@@ -143,7 +143,7 @@ const toSelectionPath = (path) => ({
143
143
  propertyShapeId: step.property.id,
144
144
  };
145
145
  if (step.where) {
146
- result.where = toWhere(step.where);
146
+ result.where = (0, exports.toWhere)(step.where);
147
147
  }
148
148
  return result;
149
149
  }
@@ -166,7 +166,7 @@ const toWhereArg = (arg) => {
166
166
  }
167
167
  if (arg && typeof arg === 'object') {
168
168
  if ((0, SelectQuery_js_1.isWhereEvaluationPath)(arg) || 'firstPath' in arg) {
169
- return toWhere(arg);
169
+ return (0, exports.toWhere)(arg);
170
170
  }
171
171
  if (isArgPath(arg)) {
172
172
  return {
@@ -196,13 +196,14 @@ const toWhere = (path) => {
196
196
  kind: 'where_boolean',
197
197
  first: toWhereComparison(grouped.firstPath),
198
198
  andOr: grouped.andOr.map((token) => ({
199
- and: token.and ? toWhere(token.and) : undefined,
200
- or: token.or ? toWhere(token.or) : undefined,
199
+ and: token.and ? (0, exports.toWhere)(token.and) : undefined,
200
+ or: token.or ? (0, exports.toWhere)(token.or) : undefined,
201
201
  })),
202
202
  };
203
203
  }
204
204
  return toWhereComparison(path);
205
205
  };
206
+ exports.toWhere = toWhere;
206
207
  const toSortBy = (query) => {
207
208
  if (!query.sortBy) {
208
209
  return undefined;
@@ -222,7 +223,7 @@ const toSortBy = (query) => {
222
223
  * Converts a RawSelectInput (FieldSet entries + where/sort) into a DesugaredSelectQuery.
223
224
  */
224
225
  const desugarSelectQuery = (query) => {
225
- var _a, _b, _c;
226
+ var _a, _b, _c, _d;
226
227
  const selections = desugarFieldSetEntries(query.entries);
227
228
  const subjectId = query.subject && typeof query.subject === 'object' && 'id' in query.subject
228
229
  ? query.subject.id
@@ -248,7 +249,12 @@ const desugarSelectQuery = (query) => {
248
249
  offset: query.offset,
249
250
  selections,
250
251
  sortBy: toSortBy(query),
251
- where: query.where ? toWhere(query.where) : undefined,
252
+ where: query.where ? (0, exports.toWhere)(query.where) : undefined,
253
+ minusEntries: (_d = query.minusEntries) === null || _d === void 0 ? void 0 : _d.map((entry) => ({
254
+ shapeId: entry.shapeId,
255
+ where: entry.where ? (0, exports.toWhere)(entry.where) : undefined,
256
+ propertyPaths: entry.propertyPaths,
257
+ })),
252
258
  };
253
259
  };
254
260
  exports.desugarSelectQuery = desugarSelectQuery;
@@ -1 +1 @@
1
- {"version":3,"file":"IRDesugar.js","sourceRoot":"","sources":["../../../src/queries/IRDesugar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IRDesugar.js","sourceRoot":"","sources":["../../../src/queries/IRDesugar.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,16 @@
1
- import { CanonicalDesugaredSelectQuery } from './IRCanonicalize.js';
2
- import { IRSelectQuery } from './IntermediateRepresentation.js';
1
+ import { CanonicalDesugaredSelectQuery, CanonicalWhereExpression } from './IRCanonicalize.js';
2
+ import { IRExpression, IRGraphPattern, IRSelectQuery } from './IntermediateRepresentation.js';
3
3
  /**
4
4
  * Lowers a canonical desugared select query into the final IRSelectQuery.
5
5
  * Introduces aliases, graph patterns (shape scans, traversals), and
6
6
  * converts selection paths and where-clauses into IR expressions.
7
7
  */
8
8
  export declare const lowerSelectQuery: (canonical: CanonicalDesugaredSelectQuery) => IRSelectQuery;
9
+ /**
10
+ * Standalone WHERE lowering — converts a CanonicalWhereExpression to IR expression + patterns.
11
+ * Used by mutation builders (DeleteBuilder, UpdateBuilder) that don't go through the select pipeline.
12
+ */
13
+ export declare const lowerWhereToIR: (where: CanonicalWhereExpression, rootAlias?: string) => {
14
+ where: IRExpression;
15
+ wherePatterns: IRGraphPattern[];
16
+ };