@query-graph/core 1.1.5 → 1.1.7
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/LICENSE +2 -1
- package/README.md +104 -20
- package/definition.d.ts +1 -1
- package/definition.js +13 -0
- package/docs/authoring.md +108 -10
- package/docs/composition.md +1 -1
- package/docs/diagnostics.md +25 -1
- package/docs/sql.md +89 -1
- package/docs/type-system.md +63 -1
- package/dsl.d.ts +20 -0
- package/dsl.js +13 -0
- package/lib/authoring/definition.js +1 -1
- package/lib/authoring/primitives.js +91 -3
- package/lib/authoring/symbols.js +2 -0
- package/native.d.ts +1 -0
- package/native.js +50 -50
- package/package.json +5 -5
- package/types/authoring.d.ts +133 -21
- package/types/composition.d.ts +3 -21
- package/types/model.d.ts +25 -3
- package/types/runtime.d.ts +14 -8
package/types/composition.d.ts
CHANGED
|
@@ -12,35 +12,17 @@ import type {
|
|
|
12
12
|
DefinitionParameter,
|
|
13
13
|
DefinitionProjectionField,
|
|
14
14
|
DefinitionProjectionPath,
|
|
15
|
-
|
|
15
|
+
OperationParameterInput,
|
|
16
|
+
OptionalParameter,
|
|
16
17
|
OracleCompileOptions,
|
|
17
18
|
ParameterValue,
|
|
18
19
|
QueryOperationBase,
|
|
19
20
|
RelationalQueryGraph,
|
|
21
|
+
RequiredParameter,
|
|
20
22
|
SqlServerCompileOptions,
|
|
21
23
|
} from './runtime.js'
|
|
22
24
|
import type { ListParameterRef } from './authoring.js'
|
|
23
25
|
|
|
24
|
-
type RequiredParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
|
|
25
|
-
? Parameter extends { required?: true }
|
|
26
|
-
? Parameter
|
|
27
|
-
: never
|
|
28
|
-
: never
|
|
29
|
-
|
|
30
|
-
type OptionalParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
|
|
31
|
-
? Parameter extends { required?: true }
|
|
32
|
-
? never
|
|
33
|
-
: Parameter
|
|
34
|
-
: never
|
|
35
|
-
|
|
36
|
-
type OperationParameterInput<Definition extends GraphDefinitionInput> = [DefinitionParameter<Definition>] extends [
|
|
37
|
-
never,
|
|
38
|
-
]
|
|
39
|
-
? { parameters?: never }
|
|
40
|
-
: [RequiredParameter<DefinitionParameter<Definition>>] extends [never]
|
|
41
|
-
? { parameters?: OperationParameters<Definition> }
|
|
42
|
-
: { parameters: OperationParameters<Definition> }
|
|
43
|
-
|
|
44
26
|
type ProjectionFieldPath<Field> =
|
|
45
27
|
Field extends ProjectionTypeMetadata<infer Path, infer _Type, infer _Nullability, infer _SelectedByDefault>
|
|
46
28
|
? Path
|
package/types/model.d.ts
CHANGED
|
@@ -24,11 +24,11 @@ export type ScalarParameterValue<Type extends ScalarType> = Type extends 'boolea
|
|
|
24
24
|
? JsonValue
|
|
25
25
|
: never
|
|
26
26
|
|
|
27
|
-
export type ParameterShape = 'scalar' | 'list'
|
|
27
|
+
export type ParameterShape = 'scalar' | 'list' | 'groupedList'
|
|
28
28
|
export type RelationCardinality = 'one' | 'many'
|
|
29
29
|
export type OrderDirection = 'asc' | 'desc'
|
|
30
30
|
export type NullsOrder = 'first' | 'last'
|
|
31
|
-
export type SemanticFunctionName = 'lower' | 'upper' | 'coalesce' | 'concat'
|
|
31
|
+
export type SemanticFunctionName = 'lower' | 'upper' | 'coalesce' | 'concat' | 'divide' | 'truncate' | 'modulo'
|
|
32
32
|
export type AggregateFunctionName = 'count' | 'countDistinct' | 'sum' | 'average' | 'minimum' | 'maximum'
|
|
33
33
|
export type ProjectionFieldRole = 'value' | 'dimension' | 'measure'
|
|
34
34
|
|
|
@@ -86,6 +86,7 @@ export interface ParameterDefinition {
|
|
|
86
86
|
name: string
|
|
87
87
|
scalarType: ScalarType
|
|
88
88
|
shape?: ParameterShape
|
|
89
|
+
keyType?: ScalarType
|
|
89
90
|
required?: boolean
|
|
90
91
|
}
|
|
91
92
|
|
|
@@ -144,6 +145,24 @@ export interface InParameterExpression<Name extends string = string> {
|
|
|
144
145
|
parameter: Name
|
|
145
146
|
}
|
|
146
147
|
|
|
148
|
+
export interface GroupKeyExpression {
|
|
149
|
+
kind: 'groupKey'
|
|
150
|
+
scope: string
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export interface InGroupValuesExpression {
|
|
154
|
+
kind: 'inGroupValues'
|
|
155
|
+
expression: Expression
|
|
156
|
+
scope: string
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface AllGroupsExpression<Name extends string = string> {
|
|
160
|
+
kind: 'allGroups'
|
|
161
|
+
parameter: Name
|
|
162
|
+
scope: string
|
|
163
|
+
predicate: Expression
|
|
164
|
+
}
|
|
165
|
+
|
|
147
166
|
export interface ExpressionGroup {
|
|
148
167
|
kind: 'and' | 'or'
|
|
149
168
|
expressions: Expression[]
|
|
@@ -181,6 +200,9 @@ export type Expression =
|
|
|
181
200
|
| LikeExpression
|
|
182
201
|
| InExpression
|
|
183
202
|
| InParameterExpression
|
|
203
|
+
| GroupKeyExpression
|
|
204
|
+
| InGroupValuesExpression
|
|
205
|
+
| AllGroupsExpression
|
|
184
206
|
| ExpressionGroup
|
|
185
207
|
| UnaryExpression
|
|
186
208
|
| ExistsExpression
|
|
@@ -376,7 +398,7 @@ export interface FirstBySelection {
|
|
|
376
398
|
export type RelationSelection = FirstBySelection
|
|
377
399
|
|
|
378
400
|
export interface GraphDefinitionInput {
|
|
379
|
-
schemaVersion:
|
|
401
|
+
schemaVersion: 12
|
|
380
402
|
name: string
|
|
381
403
|
root: string
|
|
382
404
|
sources: SourceDefinition[]
|
package/types/runtime.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
ProjectionDefinitionInput,
|
|
7
7
|
RelationalMapping,
|
|
8
8
|
ScalarParameterValue,
|
|
9
|
+
ScalarType,
|
|
9
10
|
} from './model.js'
|
|
10
11
|
|
|
11
12
|
export interface QueryOperationBase<SelectPath extends string = string, OrderingName extends string = string> {
|
|
@@ -66,17 +67,22 @@ export type DefinitionRelation<Definition extends GraphDefinitionInput> = NonNul
|
|
|
66
67
|
|
|
67
68
|
export type DefinitionRoot<Definition extends GraphDefinitionInput> = Definition['root']
|
|
68
69
|
|
|
69
|
-
export type ParameterValue<Parameter extends ParameterDefinition> = Parameter extends {
|
|
70
|
-
|
|
71
|
-
:
|
|
70
|
+
export type ParameterValue<Parameter extends ParameterDefinition> = Parameter extends {
|
|
71
|
+
shape: 'groupedList'
|
|
72
|
+
keyType: infer Key extends ScalarType
|
|
73
|
+
}
|
|
74
|
+
? readonly { key: ScalarParameterValue<Key>; values: readonly ScalarParameterValue<Parameter['scalarType']>[] }[]
|
|
75
|
+
: Parameter extends { shape: 'list' }
|
|
76
|
+
? readonly ScalarParameterValue<Parameter['scalarType']>[]
|
|
77
|
+
: ScalarParameterValue<Parameter['scalarType']>
|
|
72
78
|
|
|
73
|
-
type RequiredParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
|
|
79
|
+
export type RequiredParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
|
|
74
80
|
? Parameter extends { required?: true }
|
|
75
81
|
? Parameter
|
|
76
82
|
: never
|
|
77
83
|
: never
|
|
78
84
|
|
|
79
|
-
type OptionalParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
|
|
85
|
+
export type OptionalParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
|
|
80
86
|
? Parameter extends { required?: true }
|
|
81
87
|
? never
|
|
82
88
|
: Parameter
|
|
@@ -88,9 +94,9 @@ export type OperationParameters<Definition extends GraphDefinitionInput> = {
|
|
|
88
94
|
[Parameter in OptionalParameter<DefinitionParameter<Definition>> as Parameter['name']]?: ParameterValue<Parameter>
|
|
89
95
|
}
|
|
90
96
|
|
|
91
|
-
type OperationParameterInput<Definition extends GraphDefinitionInput> = [
|
|
92
|
-
|
|
93
|
-
]
|
|
97
|
+
export type OperationParameterInput<Definition extends GraphDefinitionInput> = [
|
|
98
|
+
DefinitionParameter<Definition>,
|
|
99
|
+
] extends [never]
|
|
94
100
|
? { parameters?: never }
|
|
95
101
|
: [RequiredParameter<DefinitionParameter<Definition>>] extends [never]
|
|
96
102
|
? { parameters?: OperationParameters<Definition> }
|