@_linked/core 2.0.0 → 2.2.0-next.20260313111019
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/CHANGELOG.md +33 -171
- package/README.md +197 -45
- package/lib/cjs/expressions/Expr.d.ts +58 -0
- package/lib/cjs/expressions/Expr.js +217 -0
- package/lib/cjs/expressions/Expr.js.map +1 -0
- package/lib/cjs/expressions/ExpressionMethods.d.ts +81 -0
- package/lib/cjs/expressions/ExpressionMethods.js +3 -0
- package/lib/cjs/expressions/ExpressionMethods.js.map +1 -0
- package/lib/cjs/expressions/ExpressionNode.d.ts +95 -0
- package/lib/cjs/expressions/ExpressionNode.js +349 -0
- package/lib/cjs/expressions/ExpressionNode.js.map +1 -0
- package/lib/cjs/index.d.ts +4 -0
- package/lib/cjs/index.js +6 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/queries/DeleteBuilder.d.ts +17 -20
- package/lib/cjs/queries/DeleteBuilder.js +46 -19
- package/lib/cjs/queries/DeleteBuilder.js.map +1 -1
- package/lib/cjs/queries/DeleteQuery.d.ts +2 -2
- package/lib/cjs/queries/DeleteQuery.js.map +1 -1
- package/lib/cjs/queries/FieldSet.d.ts +3 -0
- package/lib/cjs/queries/FieldSet.js +16 -0
- package/lib/cjs/queries/FieldSet.js.map +1 -1
- package/lib/cjs/queries/IRCanonicalize.d.ts +10 -3
- package/lib/cjs/queries/IRCanonicalize.js +10 -1
- package/lib/cjs/queries/IRCanonicalize.js.map +1 -1
- package/lib/cjs/queries/IRDesugar.d.ts +30 -2
- package/lib/cjs/queries/IRDesugar.js +29 -9
- package/lib/cjs/queries/IRDesugar.js.map +1 -1
- package/lib/cjs/queries/IRLower.d.ts +19 -2
- package/lib/cjs/queries/IRLower.js +104 -20
- package/lib/cjs/queries/IRLower.js.map +1 -1
- package/lib/cjs/queries/IRMutation.d.ts +31 -1
- package/lib/cjs/queries/IRMutation.js +68 -15
- package/lib/cjs/queries/IRMutation.js.map +1 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +33 -4
- package/lib/cjs/queries/MutationQuery.js +16 -2
- package/lib/cjs/queries/MutationQuery.js.map +1 -1
- package/lib/cjs/queries/QueryBuilder.d.ts +14 -1
- package/lib/cjs/queries/QueryBuilder.js +59 -2
- package/lib/cjs/queries/QueryBuilder.js.map +1 -1
- package/lib/cjs/queries/QueryFactory.d.ts +2 -1
- package/lib/cjs/queries/QueryFactory.js.map +1 -1
- package/lib/cjs/queries/SelectQuery.d.ts +6 -2
- package/lib/cjs/queries/SelectQuery.js +51 -7
- package/lib/cjs/queries/SelectQuery.js.map +1 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +22 -13
- package/lib/cjs/queries/UpdateBuilder.js +60 -11
- package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
- package/lib/cjs/queries/UpdateQuery.d.ts +2 -2
- package/lib/cjs/shapes/Shape.d.ts +8 -2
- package/lib/cjs/shapes/Shape.js +9 -13
- package/lib/cjs/shapes/Shape.js.map +1 -1
- package/lib/cjs/sparql/SparqlStore.js +15 -0
- package/lib/cjs/sparql/SparqlStore.js.map +1 -1
- package/lib/cjs/sparql/irToAlgebra.d.ts +34 -3
- package/lib/cjs/sparql/irToAlgebra.js +380 -31
- package/lib/cjs/sparql/irToAlgebra.js.map +1 -1
- package/lib/cjs/test-helpers/query-fixtures.d.ts +96 -208
- package/lib/cjs/test-helpers/query-fixtures.js +96 -19
- package/lib/cjs/test-helpers/query-fixtures.js.map +1 -1
- package/lib/esm/expressions/Expr.d.ts +58 -0
- package/lib/esm/expressions/Expr.js +214 -0
- package/lib/esm/expressions/Expr.js.map +1 -0
- package/lib/esm/expressions/ExpressionMethods.d.ts +81 -0
- package/lib/esm/expressions/ExpressionMethods.js +2 -0
- package/lib/esm/expressions/ExpressionMethods.js.map +1 -0
- package/lib/esm/expressions/ExpressionNode.d.ts +95 -0
- package/lib/esm/expressions/ExpressionNode.js +341 -0
- package/lib/esm/expressions/ExpressionNode.js.map +1 -0
- package/lib/esm/index.d.ts +4 -0
- package/lib/esm/index.js +3 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/queries/DeleteBuilder.d.ts +17 -20
- package/lib/esm/queries/DeleteBuilder.js +46 -19
- package/lib/esm/queries/DeleteBuilder.js.map +1 -1
- package/lib/esm/queries/DeleteQuery.d.ts +2 -2
- package/lib/esm/queries/DeleteQuery.js.map +1 -1
- package/lib/esm/queries/FieldSet.d.ts +3 -0
- package/lib/esm/queries/FieldSet.js +16 -0
- package/lib/esm/queries/FieldSet.js.map +1 -1
- package/lib/esm/queries/IRCanonicalize.d.ts +10 -3
- package/lib/esm/queries/IRCanonicalize.js +10 -1
- package/lib/esm/queries/IRCanonicalize.js.map +1 -1
- package/lib/esm/queries/IRDesugar.d.ts +30 -2
- package/lib/esm/queries/IRDesugar.js +21 -2
- package/lib/esm/queries/IRDesugar.js.map +1 -1
- package/lib/esm/queries/IRLower.d.ts +19 -2
- package/lib/esm/queries/IRLower.js +101 -19
- package/lib/esm/queries/IRLower.js.map +1 -1
- package/lib/esm/queries/IRMutation.d.ts +31 -1
- package/lib/esm/queries/IRMutation.js +63 -14
- package/lib/esm/queries/IRMutation.js.map +1 -1
- package/lib/esm/queries/IntermediateRepresentation.d.ts +33 -4
- package/lib/esm/queries/MutationQuery.js +16 -2
- package/lib/esm/queries/MutationQuery.js.map +1 -1
- package/lib/esm/queries/QueryBuilder.d.ts +14 -1
- package/lib/esm/queries/QueryBuilder.js +59 -2
- package/lib/esm/queries/QueryBuilder.js.map +1 -1
- package/lib/esm/queries/QueryFactory.d.ts +2 -1
- package/lib/esm/queries/QueryFactory.js.map +1 -1
- package/lib/esm/queries/SelectQuery.d.ts +6 -2
- package/lib/esm/queries/SelectQuery.js +51 -7
- package/lib/esm/queries/SelectQuery.js.map +1 -1
- package/lib/esm/queries/UpdateBuilder.d.ts +22 -13
- package/lib/esm/queries/UpdateBuilder.js +60 -11
- package/lib/esm/queries/UpdateBuilder.js.map +1 -1
- package/lib/esm/queries/UpdateQuery.d.ts +2 -2
- package/lib/esm/shapes/Shape.d.ts +8 -2
- package/lib/esm/shapes/Shape.js +9 -13
- package/lib/esm/shapes/Shape.js.map +1 -1
- package/lib/esm/sparql/SparqlStore.js +16 -1
- package/lib/esm/sparql/SparqlStore.js.map +1 -1
- package/lib/esm/sparql/irToAlgebra.d.ts +34 -3
- package/lib/esm/sparql/irToAlgebra.js +374 -31
- package/lib/esm/sparql/irToAlgebra.js.map +1 -1
- package/lib/esm/test-helpers/query-fixtures.d.ts +96 -208
- package/lib/esm/test-helpers/query-fixtures.js +96 -19
- package/lib/esm/test-helpers/query-fixtures.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NodeShape } from '../shapes/SHACL.js';
|
|
2
2
|
import { NodeDescriptionValue, NodeReferenceValue } from './QueryFactory.js';
|
|
3
|
-
import { IRCreateMutation, IRDeleteMutation, IRUpdateMutation } from './IntermediateRepresentation.js';
|
|
3
|
+
import { IRCreateMutation, IRDeleteMutation, IRDeleteAllMutation, IRDeleteWhereMutation, IRUpdateWhereMutation, IRUpdateMutation, IRExpression, IRGraphPattern, IRTraversalPattern } from './IntermediateRepresentation.js';
|
|
4
4
|
type CreateMutationInput = {
|
|
5
5
|
shape: NodeShape;
|
|
6
6
|
description: NodeDescriptionValue;
|
|
@@ -14,10 +14,40 @@ type DeleteMutationInput = {
|
|
|
14
14
|
shape: NodeShape;
|
|
15
15
|
ids: NodeReferenceValue[];
|
|
16
16
|
};
|
|
17
|
+
export type TraversalCollector = {
|
|
18
|
+
resolve: (fromAlias: string, propertyShapeId: string) => string;
|
|
19
|
+
patterns: IRTraversalPattern[];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Create a traversal collector for mutation expressions. Uses `__trav_N__` alias
|
|
23
|
+
* prefixes to avoid collision with query aliases (a0, a1...) and the mutation
|
|
24
|
+
* subject placeholder. Delegates to the shared createTraversalResolver factory.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createTraversalCollector(): TraversalCollector;
|
|
17
27
|
/** Builds an IRCreateMutation from a create factory's internal description. */
|
|
18
28
|
export declare const buildCanonicalCreateMutationIR: (query: CreateMutationInput) => IRCreateMutation;
|
|
19
29
|
/** Builds an IRUpdateMutation from an update factory's internal description. */
|
|
20
30
|
export declare const buildCanonicalUpdateMutationIR: (query: UpdateMutationInput) => IRUpdateMutation;
|
|
21
31
|
/** Builds an IRDeleteMutation from a delete factory's internal description. */
|
|
22
32
|
export declare const buildCanonicalDeleteMutationIR: (query: DeleteMutationInput) => IRDeleteMutation;
|
|
33
|
+
type DeleteAllMutationInput = {
|
|
34
|
+
shape: NodeShape;
|
|
35
|
+
};
|
|
36
|
+
/** Builds an IRDeleteAllMutation — delete all instances of a shape type. */
|
|
37
|
+
export declare const buildCanonicalDeleteAllMutationIR: (query: DeleteAllMutationInput) => IRDeleteAllMutation;
|
|
38
|
+
type DeleteWhereMutationInput = {
|
|
39
|
+
shape: NodeShape;
|
|
40
|
+
where: IRExpression;
|
|
41
|
+
wherePatterns: IRGraphPattern[];
|
|
42
|
+
};
|
|
43
|
+
/** Builds an IRDeleteWhereMutation — delete instances matching a condition. */
|
|
44
|
+
export declare const buildCanonicalDeleteWhereMutationIR: (query: DeleteWhereMutationInput) => IRDeleteWhereMutation;
|
|
45
|
+
type UpdateWhereMutationInput = {
|
|
46
|
+
shape: NodeShape;
|
|
47
|
+
updates: NodeDescriptionValue;
|
|
48
|
+
where?: IRExpression;
|
|
49
|
+
wherePatterns?: IRGraphPattern[];
|
|
50
|
+
};
|
|
51
|
+
/** Builds an IRUpdateWhereMutation — update instances matching a condition or all. */
|
|
52
|
+
export declare const buildCanonicalUpdateWhereMutationIR: (query: UpdateWhereMutationInput) => IRUpdateWhereMutation;
|
|
23
53
|
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { isSetModificationValue, } from './QueryFactory.js';
|
|
2
|
+
import { isExpressionNode, resolveExpressionRefs } from '../expressions/ExpressionNode.js';
|
|
3
|
+
import { createTraversalResolver } from './IRLower.js';
|
|
2
4
|
const toNodeReference = (value) => ({
|
|
3
5
|
id: value.id,
|
|
4
6
|
});
|
|
@@ -10,10 +12,34 @@ const toSetModification = (value) => {
|
|
|
10
12
|
remove: value.$remove ? value.$remove.map((item) => toNodeReference(item)) : undefined,
|
|
11
13
|
};
|
|
12
14
|
};
|
|
13
|
-
|
|
15
|
+
/** Alias used as the mutation subject for expression ref resolution. */
|
|
16
|
+
const MUTATION_SUBJECT_ALIAS = '__mutation_subject__';
|
|
17
|
+
/**
|
|
18
|
+
* Create a traversal collector for mutation expressions. Uses `__trav_N__` alias
|
|
19
|
+
* prefixes to avoid collision with query aliases (a0, a1...) and the mutation
|
|
20
|
+
* subject placeholder. Delegates to the shared createTraversalResolver factory.
|
|
21
|
+
*/
|
|
22
|
+
export function createTraversalCollector() {
|
|
23
|
+
let counter = 0;
|
|
24
|
+
return createTraversalResolver(() => `__trav_${counter++}__`, (from, to, property) => ({ from, property, to }));
|
|
25
|
+
}
|
|
26
|
+
const toSingleFieldValue = (value, collector) => {
|
|
14
27
|
if (value === undefined) {
|
|
15
28
|
return undefined;
|
|
16
29
|
}
|
|
30
|
+
// ExpressionNode → resolve refs and extract IRExpression
|
|
31
|
+
if (isExpressionNode(value)) {
|
|
32
|
+
return resolveExpressionRefs(value.ir, value._refs, MUTATION_SUBJECT_ALIAS,
|
|
33
|
+
// In mutation context, all property segments are on the subject entity.
|
|
34
|
+
// For single-segment refs (e.g. p.age), the property_expr already has the property as its .property.
|
|
35
|
+
// For multi-segment refs (e.g. p.bestFriend.name), this creates intermediate traversals.
|
|
36
|
+
collector
|
|
37
|
+
? collector.resolve
|
|
38
|
+
: (_fromAlias, _propertyShapeId) => {
|
|
39
|
+
// No collector provided — multi-segment traversals cannot be resolved.
|
|
40
|
+
return MUTATION_SUBJECT_ALIAS;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
17
43
|
if (typeof value === 'string' ||
|
|
18
44
|
typeof value === 'number' ||
|
|
19
45
|
typeof value === 'boolean' ||
|
|
@@ -25,23 +51,23 @@ const toSingleFieldValue = (value) => {
|
|
|
25
51
|
}
|
|
26
52
|
return toNodeData(value);
|
|
27
53
|
};
|
|
28
|
-
const toFieldValue = (value) => {
|
|
54
|
+
const toFieldValue = (value, collector) => {
|
|
29
55
|
if (Array.isArray(value)) {
|
|
30
|
-
return value.map((item) => toSingleFieldValue(item));
|
|
56
|
+
return value.map((item) => toSingleFieldValue(item, collector));
|
|
31
57
|
}
|
|
32
58
|
if (isSetModificationValue(value)) {
|
|
33
59
|
return toSetModification(value);
|
|
34
60
|
}
|
|
35
|
-
return toSingleFieldValue(value);
|
|
61
|
+
return toSingleFieldValue(value, collector);
|
|
36
62
|
};
|
|
37
|
-
const toFieldUpdate = (field) => {
|
|
63
|
+
const toFieldUpdate = (field, collector) => {
|
|
38
64
|
return {
|
|
39
65
|
property: field.prop.id,
|
|
40
|
-
value: toFieldValue(field.val),
|
|
66
|
+
value: toFieldValue(field.val, collector),
|
|
41
67
|
};
|
|
42
68
|
};
|
|
43
|
-
const toNodeData = (description) => {
|
|
44
|
-
return Object.assign({ shape: description.shape.id, fields: description.fields.map(toFieldUpdate) }, (description.__id ? { id: description.__id } : {}));
|
|
69
|
+
const toNodeData = (description, collector) => {
|
|
70
|
+
return Object.assign({ shape: description.shape.id, fields: description.fields.map((f) => toFieldUpdate(f, collector)) }, (description.__id ? { id: description.__id } : {}));
|
|
45
71
|
};
|
|
46
72
|
/** Builds an IRCreateMutation from a create factory's internal description. */
|
|
47
73
|
export const buildCanonicalCreateMutationIR = (query) => {
|
|
@@ -53,12 +79,11 @@ export const buildCanonicalCreateMutationIR = (query) => {
|
|
|
53
79
|
};
|
|
54
80
|
/** Builds an IRUpdateMutation from an update factory's internal description. */
|
|
55
81
|
export const buildCanonicalUpdateMutationIR = (query) => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
};
|
|
82
|
+
const collector = createTraversalCollector();
|
|
83
|
+
const data = toNodeData(query.updates, collector);
|
|
84
|
+
return Object.assign({ kind: 'update', shape: query.shape.id, id: query.id, data }, (collector.patterns.length > 0
|
|
85
|
+
? { traversalPatterns: collector.patterns }
|
|
86
|
+
: {}));
|
|
62
87
|
};
|
|
63
88
|
/** Builds an IRDeleteMutation from a delete factory's internal description. */
|
|
64
89
|
export const buildCanonicalDeleteMutationIR = (query) => {
|
|
@@ -68,4 +93,28 @@ export const buildCanonicalDeleteMutationIR = (query) => {
|
|
|
68
93
|
ids: query.ids.map((id) => ({ id: id.id })),
|
|
69
94
|
};
|
|
70
95
|
};
|
|
96
|
+
/** Builds an IRDeleteAllMutation — delete all instances of a shape type. */
|
|
97
|
+
export const buildCanonicalDeleteAllMutationIR = (query) => {
|
|
98
|
+
return {
|
|
99
|
+
kind: 'delete_all',
|
|
100
|
+
shape: query.shape.id,
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
/** Builds an IRDeleteWhereMutation — delete instances matching a condition. */
|
|
104
|
+
export const buildCanonicalDeleteWhereMutationIR = (query) => {
|
|
105
|
+
return {
|
|
106
|
+
kind: 'delete_where',
|
|
107
|
+
shape: query.shape.id,
|
|
108
|
+
where: query.where,
|
|
109
|
+
wherePatterns: query.wherePatterns,
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
/** Builds an IRUpdateWhereMutation — update instances matching a condition or all. */
|
|
113
|
+
export const buildCanonicalUpdateWhereMutationIR = (query) => {
|
|
114
|
+
const collector = createTraversalCollector();
|
|
115
|
+
const data = toNodeData(query.updates, collector);
|
|
116
|
+
return Object.assign({ kind: 'update_where', shape: query.shape.id, data, where: query.where, wherePatterns: query.wherePatterns }, (collector.patterns.length > 0
|
|
117
|
+
? { traversalPatterns: collector.patterns }
|
|
118
|
+
: {}));
|
|
119
|
+
};
|
|
71
120
|
//# sourceMappingURL=IRMutation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRMutation.js","sourceRoot":"","sources":["../../../src/queries/IRMutation.ts"],"names":[],"mappings":"AACA,OAAO,EAML,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"IRMutation.js","sourceRoot":"","sources":["../../../src/queries/IRMutation.ts"],"names":[],"mappings":"AACA,OAAO,EAML,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,kCAAkC,CAAC;AAgBzF,OAAO,EAAC,uBAAuB,EAAC,MAAM,cAAc,CAAC;AAkBrD,MAAM,eAAe,GAAG,CAAC,KAAyB,EAAsB,EAAE,CAAC,CAAC;IAC1E,EAAE,EAAE,KAAK,CAAC,EAAE;CACb,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,KAA2B,EAA0B,EAAE;IAChF,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,IAAI;YACb,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAkC,CAAC,CAAC;YAC5E,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KACvF,CAAC;AACJ,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAOtD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,uBAAuB,CAC5B,GAAG,EAAE,CAAC,UAAU,OAAO,EAAE,IAAI,EAC7B,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAsB,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,CACzB,KAAgC,EAChC,SAA8B,EAChB,EAAE;IAChB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yDAAyD;IACzD,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,qBAAqB,CAC1B,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,KAAK,EACX,sBAAsB;QACtB,wEAAwE;QACxE,qGAAqG;QACrG,yFAAyF;QACzF,SAAS;YACP,CAAC,CAAC,SAAS,CAAC,OAAO;YACnB,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE;gBAC/B,uEAAuE;gBACvE,OAAO,sBAAsB,CAAC;YAChC,CAAC,CACN,CAAC;IACJ,CAAC;IAED,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,KAAK,YAAY,IAAI,EACrB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,IAAK,KAA4B,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC,KAA2B,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,UAAU,CAAC,KAA6B,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,KAAsB,EACtB,SAA8B,EAChB,EAAE;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,KAA6C,EAC7C,SAA8B,EACf,EAAE;IACjB,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;QACvB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,WAAiC,EACjC,SAA8B,EAClB,EAAE;IACd,uBACE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,EAC3B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAC/D,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACnD;AACJ,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,KAA0B,EACR,EAAE;IACpB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QACrB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;KACpC,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,KAA0B,EACR,EAAE;IACpB,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClD,uBACE,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EACrB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,IACD,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,EAAC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,EAAC;QACzC,CAAC,CAAC,EAAE,CAAC,EACP;AACJ,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,KAA0B,EACR,EAAE;IACpB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QACrB,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAC,CAAC,CAAC;KAC1C,CAAC;AACJ,CAAC,CAAC;AAMF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,KAA6B,EACR,EAAE;IACvB,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;KACtB,CAAC;AACJ,CAAC,CAAC;AAQF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,KAA+B,EACR,EAAE;IACzB,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QACrB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC;AACJ,CAAC,CAAC;AASF,sFAAsF;AACtF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,KAA+B,EACR,EAAE;IACzB,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClD,uBACE,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EACrB,IAAI,EACJ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,aAAa,EAAE,KAAK,CAAC,aAAa,IAC/B,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,EAAC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,EAAC;QACzC,CAAC,CAAC,EAAE,CAAC,EACP;AACJ,CAAC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { NodeReferenceValue } from './QueryFactory.js';
|
|
|
2
2
|
export type IRDirection = 'ASC' | 'DESC';
|
|
3
3
|
export type IRAlias = string;
|
|
4
4
|
export type IRValue = string | number | boolean | null;
|
|
5
|
-
export type IRQuery = IRSelectQuery | IRCreateMutation | IRUpdateMutation | IRDeleteMutation;
|
|
5
|
+
export type IRQuery = IRSelectQuery | IRCreateMutation | IRUpdateMutation | IRDeleteMutation | IRDeleteAllMutation | IRDeleteWhereMutation | IRUpdateWhereMutation;
|
|
6
6
|
export type IRSelectQuery = {
|
|
7
7
|
kind: 'select';
|
|
8
8
|
root: IRShapeScanPattern;
|
|
@@ -29,7 +29,7 @@ export type IRResultMapEntry = {
|
|
|
29
29
|
key: string;
|
|
30
30
|
alias: IRAlias;
|
|
31
31
|
};
|
|
32
|
-
export type IRGraphPattern = IRShapeScanPattern | IRTraversePattern | IRJoinPattern | IROptionalPattern | IRUnionPattern | IRExistsPattern;
|
|
32
|
+
export type IRGraphPattern = IRShapeScanPattern | IRTraversePattern | IRJoinPattern | IROptionalPattern | IRUnionPattern | IRExistsPattern | IRMinusPattern;
|
|
33
33
|
export type IRShapeScanPattern = {
|
|
34
34
|
kind: 'shape_scan';
|
|
35
35
|
shape: string;
|
|
@@ -58,6 +58,11 @@ export type IRExistsPattern = {
|
|
|
58
58
|
kind: 'exists';
|
|
59
59
|
pattern: IRGraphPattern;
|
|
60
60
|
};
|
|
61
|
+
export type IRMinusPattern = {
|
|
62
|
+
kind: 'minus';
|
|
63
|
+
pattern: IRGraphPattern;
|
|
64
|
+
filter?: IRExpression;
|
|
65
|
+
};
|
|
61
66
|
export type IRExpression = IRLiteralExpression | IRReferenceExpression | IRAliasExpression | IRPropertyExpression | IRContextPropertyExpression | IRBinaryExpression | IRLogicalExpression | IRNotExpression | IRFunctionExpression | IRAggregateExpression | IRExistsExpression;
|
|
62
67
|
export type IRLiteralExpression = {
|
|
63
68
|
kind: 'literal_expr';
|
|
@@ -81,7 +86,7 @@ export type IRContextPropertyExpression = {
|
|
|
81
86
|
contextIri: string;
|
|
82
87
|
property: string;
|
|
83
88
|
};
|
|
84
|
-
export type IRBinaryOperator = '=' | '!=' | '>' | '>=' | '<' | '<=';
|
|
89
|
+
export type IRBinaryOperator = '=' | '!=' | '>' | '>=' | '<' | '<=' | '+' | '-' | '*' | '/';
|
|
85
90
|
export type IRBinaryExpression = {
|
|
86
91
|
kind: 'binary_expr';
|
|
87
92
|
operator: IRBinaryOperator;
|
|
@@ -118,17 +123,41 @@ export type IRCreateMutation = {
|
|
|
118
123
|
shape: string;
|
|
119
124
|
data: IRNodeData;
|
|
120
125
|
};
|
|
126
|
+
export type IRTraversalPattern = {
|
|
127
|
+
from: string;
|
|
128
|
+
property: string;
|
|
129
|
+
to: string;
|
|
130
|
+
};
|
|
121
131
|
export type IRUpdateMutation = {
|
|
122
132
|
kind: 'update';
|
|
123
133
|
shape: string;
|
|
124
134
|
id: string;
|
|
125
135
|
data: IRNodeData;
|
|
136
|
+
traversalPatterns?: IRTraversalPattern[];
|
|
126
137
|
};
|
|
127
138
|
export type IRDeleteMutation = {
|
|
128
139
|
kind: 'delete';
|
|
129
140
|
shape: string;
|
|
130
141
|
ids: NodeReferenceValue[];
|
|
131
142
|
};
|
|
143
|
+
export type IRDeleteAllMutation = {
|
|
144
|
+
kind: 'delete_all';
|
|
145
|
+
shape: string;
|
|
146
|
+
};
|
|
147
|
+
export type IRDeleteWhereMutation = {
|
|
148
|
+
kind: 'delete_where';
|
|
149
|
+
shape: string;
|
|
150
|
+
where: IRExpression;
|
|
151
|
+
wherePatterns: IRGraphPattern[];
|
|
152
|
+
};
|
|
153
|
+
export type IRUpdateWhereMutation = {
|
|
154
|
+
kind: 'update_where';
|
|
155
|
+
shape: string;
|
|
156
|
+
data: IRNodeData;
|
|
157
|
+
where?: IRExpression;
|
|
158
|
+
wherePatterns?: IRGraphPattern[];
|
|
159
|
+
traversalPatterns?: IRTraversalPattern[];
|
|
160
|
+
};
|
|
132
161
|
export type IRNodeData = {
|
|
133
162
|
shape: string;
|
|
134
163
|
fields: IRFieldUpdate[];
|
|
@@ -142,7 +171,7 @@ export type IRSetModificationValue = {
|
|
|
142
171
|
add?: IRFieldValue[];
|
|
143
172
|
remove?: NodeReferenceValue[];
|
|
144
173
|
};
|
|
145
|
-
export type IRFieldValue = IRValue | Date | NodeReferenceValue | IRNodeData | IRSetModificationValue | IRFieldValue[] | undefined;
|
|
174
|
+
export type IRFieldValue = IRValue | Date | NodeReferenceValue | IRNodeData | IRSetModificationValue | IRFieldValue[] | IRExpression | undefined;
|
|
146
175
|
/**
|
|
147
176
|
* A single result row — an object with a node id and dynamic fields.
|
|
148
177
|
* Used in select and create results.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { QueryFactory, } from './QueryFactory.js';
|
|
2
2
|
import { NodeShape } from '../shapes/SHACL.js';
|
|
3
3
|
import { getShapeClass } from '../utils/ShapeClass.js';
|
|
4
|
+
import { isExpressionNode } from '../expressions/ExpressionNode.js';
|
|
5
|
+
import { createProxiedPathBuilder } from './ProxiedPathBuilder.js';
|
|
4
6
|
export class MutationQueryFactory extends QueryFactory {
|
|
5
7
|
convertUpdateObject(obj, shape, allowTopLevelId = false) {
|
|
6
8
|
if (typeof obj === 'object' && !(obj instanceof Date) && obj !== null) {
|
|
@@ -10,8 +12,16 @@ export class MutationQueryFactory extends QueryFactory {
|
|
|
10
12
|
return this.convertNodeDescription(obj, shape);
|
|
11
13
|
}
|
|
12
14
|
else if (typeof obj === 'function') {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
const shapeClass = shape.id ? getShapeClass(shape.id) : undefined;
|
|
16
|
+
if (!shapeClass) {
|
|
17
|
+
throw new Error(`Shape class not found for ${shape.id || 'unknown'}`);
|
|
18
|
+
}
|
|
19
|
+
const proxy = createProxiedPathBuilder(shapeClass);
|
|
20
|
+
const result = obj(proxy);
|
|
21
|
+
if (typeof result !== 'object' || result === null) {
|
|
22
|
+
throw new Error('Update function must return an object');
|
|
23
|
+
}
|
|
24
|
+
return this.convertNodeDescription(result, shape);
|
|
15
25
|
}
|
|
16
26
|
else {
|
|
17
27
|
throw new Error('Invalid update object');
|
|
@@ -105,6 +115,10 @@ export class MutationQueryFactory extends QueryFactory {
|
|
|
105
115
|
};
|
|
106
116
|
}
|
|
107
117
|
convertUpdateValue(value, propShape, allowArrays = true) {
|
|
118
|
+
// ExpressionNode → pass through as-is (will be converted to IRExpression by IRMutation)
|
|
119
|
+
if (isExpressionNode(value)) {
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
108
122
|
//single value which will
|
|
109
123
|
if (typeof value === 'string' ||
|
|
110
124
|
typeof value === 'number' ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutationQuery.js","sourceRoot":"","sources":["../../../src/queries/MutationQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,YAAY,GAMb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"MutationQuery.js","sourceRoot":"","sources":["../../../src/queries/MutationQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,7 @@ export declare class QueryBuilder<S extends Shape = Shape, R = any, Result = any
|
|
|
41
41
|
private readonly _selectAllLabels?;
|
|
42
42
|
private readonly _fieldSet?;
|
|
43
43
|
private readonly _preloads?;
|
|
44
|
+
private readonly _minusEntries?;
|
|
44
45
|
private constructor();
|
|
45
46
|
/** Create a shallow clone with overrides. */
|
|
46
47
|
private clone;
|
|
@@ -59,10 +60,22 @@ export declare class QueryBuilder<S extends Shape = Shape, R = any, Result = any
|
|
|
59
60
|
selectAll(): QueryBuilder<S, any, QueryResponseToResultType<SelectAllQueryResponse<S>, S>[]>;
|
|
60
61
|
/** Add a where clause. */
|
|
61
62
|
where(fn: WhereClause<S>): QueryBuilder<S, R, Result>;
|
|
63
|
+
/**
|
|
64
|
+
* Exclude results matching a MINUS pattern.
|
|
65
|
+
*
|
|
66
|
+
* Accepts:
|
|
67
|
+
* - A shape constructor to exclude by type: `.minus(Employee)`
|
|
68
|
+
* - A WHERE callback to exclude by condition: `.minus(p => p.hobby.equals('Chess'))`
|
|
69
|
+
* - A callback returning a property or array of properties for existence exclusion:
|
|
70
|
+
* `.minus(p => p.hobby)` or `.minus(p => [p.hobby, p.bestFriend.name])`
|
|
71
|
+
*
|
|
72
|
+
* Chainable: `.minus(A).minus(B)` produces two separate `MINUS { }` blocks.
|
|
73
|
+
*/
|
|
74
|
+
minus(shapeOrFn: ShapeConstructor<any> | WhereClause<S> | ((s: any) => any)): QueryBuilder<S, R, Result>;
|
|
62
75
|
/** Set sort order. */
|
|
63
76
|
orderBy<OR>(fn: QueryBuildFn<S, OR>, direction?: 'ASC' | 'DESC'): QueryBuilder<S, R, Result>;
|
|
64
77
|
/**
|
|
65
|
-
*
|
|
78
|
+
* @deprecated Use `orderBy()` instead.
|
|
66
79
|
*/
|
|
67
80
|
sortBy<OR>(fn: QueryBuildFn<S, OR>, direction?: 'ASC' | 'DESC'): QueryBuilder<S, R, Result>;
|
|
68
81
|
/** Set result limit. */
|
|
@@ -3,6 +3,7 @@ import { processWhereClause, evaluateSortCallback, } from './SelectQuery.js';
|
|
|
3
3
|
import { buildSelectQuery } from './IRPipeline.js';
|
|
4
4
|
import { getQueryDispatch } from './queryDispatch.js';
|
|
5
5
|
import { FieldSet } from './FieldSet.js';
|
|
6
|
+
import { createProxiedPathBuilder } from './ProxiedPathBuilder.js';
|
|
6
7
|
/**
|
|
7
8
|
* An immutable, fluent query builder for select queries.
|
|
8
9
|
*
|
|
@@ -31,10 +32,11 @@ export class QueryBuilder {
|
|
|
31
32
|
this._selectAllLabels = init.selectAllLabels;
|
|
32
33
|
this._fieldSet = init.fieldSet;
|
|
33
34
|
this._preloads = init.preloads;
|
|
35
|
+
this._minusEntries = init.minusEntries;
|
|
34
36
|
}
|
|
35
37
|
/** Create a shallow clone with overrides. */
|
|
36
38
|
clone(overrides = {}) {
|
|
37
|
-
return new QueryBuilder(Object.assign({ shape: this._shape, selectFn: this._selectFn, whereFn: this._whereFn, sortByFn: this._sortByFn, sortDirection: this._sortDirection, limit: this._limit, offset: this._offset, subject: this._subject, subjects: this._subjects, singleResult: this._singleResult, selectAllLabels: this._selectAllLabels, fieldSet: this._fieldSet, preloads: this._preloads }, overrides));
|
|
39
|
+
return new QueryBuilder(Object.assign({ shape: this._shape, selectFn: this._selectFn, whereFn: this._whereFn, sortByFn: this._sortByFn, sortDirection: this._sortDirection, limit: this._limit, offset: this._offset, subject: this._subject, subjects: this._subjects, singleResult: this._singleResult, selectAllLabels: this._selectAllLabels, fieldSet: this._fieldSet, preloads: this._preloads, minusEntries: this._minusEntries }, overrides));
|
|
38
40
|
}
|
|
39
41
|
// ---------------------------------------------------------------------------
|
|
40
42
|
// Static constructors
|
|
@@ -74,12 +76,37 @@ export class QueryBuilder {
|
|
|
74
76
|
where(fn) {
|
|
75
77
|
return this.clone({ whereFn: fn });
|
|
76
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Exclude results matching a MINUS pattern.
|
|
81
|
+
*
|
|
82
|
+
* Accepts:
|
|
83
|
+
* - A shape constructor to exclude by type: `.minus(Employee)`
|
|
84
|
+
* - A WHERE callback to exclude by condition: `.minus(p => p.hobby.equals('Chess'))`
|
|
85
|
+
* - A callback returning a property or array of properties for existence exclusion:
|
|
86
|
+
* `.minus(p => p.hobby)` or `.minus(p => [p.hobby, p.bestFriend.name])`
|
|
87
|
+
*
|
|
88
|
+
* Chainable: `.minus(A).minus(B)` produces two separate `MINUS { }` blocks.
|
|
89
|
+
*/
|
|
90
|
+
minus(shapeOrFn) {
|
|
91
|
+
var _a;
|
|
92
|
+
const entry = {};
|
|
93
|
+
if (typeof shapeOrFn === 'function' && 'shape' in shapeOrFn) {
|
|
94
|
+
// ShapeConstructor — has a static .shape property
|
|
95
|
+
entry.shapeId = (_a = shapeOrFn.shape) === null || _a === void 0 ? void 0 : _a.id;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// WhereClause callback
|
|
99
|
+
entry.whereFn = shapeOrFn;
|
|
100
|
+
}
|
|
101
|
+
const existing = this._minusEntries || [];
|
|
102
|
+
return this.clone({ minusEntries: [...existing, entry] });
|
|
103
|
+
}
|
|
77
104
|
/** Set sort order. */
|
|
78
105
|
orderBy(fn, direction = 'ASC') {
|
|
79
106
|
return this.clone({ sortByFn: fn, sortDirection: direction });
|
|
80
107
|
}
|
|
81
108
|
/**
|
|
82
|
-
*
|
|
109
|
+
* @deprecated Use `orderBy()` instead.
|
|
83
110
|
*/
|
|
84
111
|
sortBy(fn, direction = 'ASC') {
|
|
85
112
|
return this.orderBy(fn, direction);
|
|
@@ -298,6 +325,36 @@ export class QueryBuilder {
|
|
|
298
325
|
if (this._subjects && this._subjects.length > 0) {
|
|
299
326
|
input.subjects = this._subjects;
|
|
300
327
|
}
|
|
328
|
+
// Process minus entries → convert callbacks to WherePaths or property paths
|
|
329
|
+
if (this._minusEntries && this._minusEntries.length > 0) {
|
|
330
|
+
input.minusEntries = this._minusEntries.map((entry) => {
|
|
331
|
+
if (entry.shapeId) {
|
|
332
|
+
return { shapeId: entry.shapeId };
|
|
333
|
+
}
|
|
334
|
+
if (entry.whereFn) {
|
|
335
|
+
// Call the callback through the proxy and inspect the result type
|
|
336
|
+
const proxy = createProxiedPathBuilder(this._shape);
|
|
337
|
+
const result = entry.whereFn(proxy);
|
|
338
|
+
// Array of QBOs → property existence paths
|
|
339
|
+
if (Array.isArray(result)) {
|
|
340
|
+
const propertyPaths = result.map((item) => {
|
|
341
|
+
const segments = FieldSet.collectPropertySegments(item);
|
|
342
|
+
return segments.map((seg) => ({ propertyShapeId: seg.id }));
|
|
343
|
+
});
|
|
344
|
+
return { propertyPaths };
|
|
345
|
+
}
|
|
346
|
+
// Single QBO (has .property field) → single property existence path
|
|
347
|
+
if (result && typeof result === 'object' && 'property' in result && 'subject' in result) {
|
|
348
|
+
const segments = FieldSet.collectPropertySegments(result);
|
|
349
|
+
const propertyPaths = [segments.map((seg) => ({ propertyShapeId: seg.id }))];
|
|
350
|
+
return { propertyPaths };
|
|
351
|
+
}
|
|
352
|
+
// Evaluation → existing WHERE-based path
|
|
353
|
+
return { where: processWhereClause(entry.whereFn, this._shape) };
|
|
354
|
+
}
|
|
355
|
+
return {};
|
|
356
|
+
});
|
|
357
|
+
}
|
|
301
358
|
return input;
|
|
302
359
|
}
|
|
303
360
|
/** Build the IR (run the full pipeline: desugar → canonicalize → lower). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/queries/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/queries/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { NodeShape, PropertyShape } from '../shapes/SHACL.js';
|
|
|
2
2
|
import { Shape } from '../shapes/Shape.js';
|
|
3
3
|
import { ShapeSet } from '../collections/ShapeSet.js';
|
|
4
4
|
import { NodeReferenceValue } from '../utils/NodeReference.js';
|
|
5
|
+
import { ExpressionNode } from '../expressions/ExpressionNode.js';
|
|
5
6
|
export type Prettify<T> = T extends infer R ? {
|
|
6
7
|
[K in keyof R]: R[K];
|
|
7
8
|
} : never;
|
|
@@ -41,7 +42,7 @@ type UpdateNodeDescription<Shape> = Partial<Omit<{
|
|
|
41
42
|
type KeysWithoutFunctions<T> = {
|
|
42
43
|
[K in keyof T]: T[K] extends Function ? never : K;
|
|
43
44
|
}[keyof T];
|
|
44
|
-
type ShapePropValueToUpdatePartial<ShapeProperty> = ShapeProperty extends Shape ? UpdatePartial<ShapeProperty> : ShapeProperty extends ShapeSet<infer SSType> ? SetUpdateValue<SSType> : ShapeProperty;
|
|
45
|
+
type ShapePropValueToUpdatePartial<ShapeProperty> = ShapeProperty extends Shape ? UpdatePartial<ShapeProperty> : ShapeProperty extends ShapeSet<infer SSType> ? SetUpdateValue<SSType> : ShapeProperty | ExpressionNode;
|
|
45
46
|
type SetUpdateValue<SSType> = UpdatePartial<SSType>[] | SetModification<SSType>;
|
|
46
47
|
export type SetModification<SSType> = {
|
|
47
48
|
add?: UpdatePartial<SSType>[] | UpdatePartial<SSType>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryFactory.js","sourceRoot":"","sources":["../../../src/queries/QueryFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"QueryFactory.js","sourceRoot":"","sources":["../../../src/queries/QueryFactory.ts"],"names":[],"mappings":"AAmKA,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAG1D,MAAM,OAAgB,YAAY;CAAG;AAErC,MAAM,UAAU,sBAAsB,CACpC,KAAU;IAEV,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3B,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;IACjC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACxC,mBAAmB;IACnB,OAAO,CACL,CAAC,SAAS,IAAI,YAAY,IAAI,OAAO,KAAK,CAAC,CAAC;QAC5C,CAAC,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC;QAC5B,CAAC,YAAY,IAAI,OAAO,KAAK,CAAC,CAAC,CAChC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,SAAwB,EAAE,SAAiB;IACvE,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,CAAC,KAAK,mBAAmB,SAAS,CAAC,QAAQ,4BAA4B,SAAS,EAAE,CAC7H,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,gCAAgC,SAAS,CAAC,KAAK,mBAAmB,SAAS,CAAC,QAAQ,4BAA4B,SAAS,EAAE,CAC5H,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -8,6 +8,7 @@ import type { IRSelectQuery } from './IntermediateRepresentation.js';
|
|
|
8
8
|
import { FieldSet } from './FieldSet.js';
|
|
9
9
|
import { PropertyPath } from './PropertyPath.js';
|
|
10
10
|
import type { QueryBuilder } from './QueryBuilder.js';
|
|
11
|
+
import { ExpressionNode } from '../expressions/ExpressionNode.js';
|
|
11
12
|
/**
|
|
12
13
|
* The canonical SelectQuery type — an IR AST node representing a select query.
|
|
13
14
|
* This is the type received by IQuadStore.selectQuery().
|
|
@@ -25,7 +26,7 @@ export type SingleResult<ResultType> = ResultType extends Array<infer R> ? R : R
|
|
|
25
26
|
* All the possible types that a regular get/set method of a Shape can return
|
|
26
27
|
*/
|
|
27
28
|
export type AccessorReturnValue = Shape | ShapeSet | JSPrimitive | NodeReferenceValue;
|
|
28
|
-
export type WhereClause<S extends Shape | AccessorReturnValue> = Evaluation | ((s: ToQueryBuilderObject<S>) => Evaluation);
|
|
29
|
+
export type WhereClause<S extends Shape | AccessorReturnValue> = Evaluation | ExpressionNode | ((s: ToQueryBuilderObject<S>) => Evaluation | ExpressionNode);
|
|
29
30
|
export type QueryBuildFn<T extends Shape, ResponseType> = (p: ToQueryBuilderObject<T>) => ResponseType;
|
|
30
31
|
export type QueryWrapperObject<ShapeType extends Shape = any> = {
|
|
31
32
|
[key: string]: FieldSet<any, any>;
|
|
@@ -95,7 +96,10 @@ export type ToQueryBuilderObject<T, Source = null, Property extends string | num
|
|
|
95
96
|
export type ToQueryPrimitive<T extends string | number | Date | boolean, Source, Property extends string | number | symbol = ''> = T extends string ? QueryPrimitive<string, Source, Property> : T extends number ? QueryPrimitive<number, Source, Property> : T extends Date ? QueryPrimitive<Date, Source, Property> : T extends boolean ? QueryPrimitive<boolean, Source, Property> : never & {
|
|
96
97
|
__error: 'ToQueryPrimitive: no matching primitive type';
|
|
97
98
|
};
|
|
98
|
-
export type
|
|
99
|
+
export type WhereExpressionPath = {
|
|
100
|
+
expressionNode: ExpressionNode;
|
|
101
|
+
};
|
|
102
|
+
export type WherePath = WhereEvaluationPath | WhereAndOr | WhereExpressionPath;
|
|
99
103
|
export type WhereEvaluationPath = {
|
|
100
104
|
path: QueryPropertyPath;
|
|
101
105
|
method: WhereMethods;
|