@query-graph/core 1.1.4 → 1.1.5

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.
@@ -0,0 +1,394 @@
1
+ import type {
2
+ AllNullability,
3
+ AnyNullability,
4
+ GraphDefinitionInput,
5
+ JsonValue,
6
+ NullabilityExpression,
7
+ ProjectionFieldDefinition,
8
+ ProjectionObjectDefinition,
9
+ ProjectionObjectTypeMetadata,
10
+ ProjectionTypeMetadata,
11
+ RelationDefinition,
12
+ SourceFieldNullability,
13
+ } from './model.js'
14
+ import type {
15
+ DefinitionOf,
16
+ DefinitionProjectionField,
17
+ DefinitionProjectionObject,
18
+ DefinitionProjectionPath,
19
+ DefinitionRelation,
20
+ DefinitionRoot,
21
+ QueryGraph,
22
+ RelationalQueryGraph,
23
+ } from './runtime.js'
24
+ import type { BatchQuery, BatchRelation, ComposedQueryGraph } from './composition.js'
25
+
26
+ type BooleanOr<Value extends boolean> = true extends Value ? true : false
27
+
28
+ type BatchQueryGraph<Query extends BatchQuery> =
29
+ Query extends BatchQuery<infer Child, infer _KeyPath, infer _KeyParameter> ? Child : never
30
+
31
+ type ChildPathsForRelation<Relation extends BatchRelation> = Relation extends BatchRelation
32
+ ? `${Relation['name']}.${DefinitionProjectionPath<DefinitionOf<BatchQueryGraph<Relation['query']>>>}`
33
+ : never
34
+
35
+ type ChildPaths<Relations extends readonly BatchRelation[]> = ChildPathsForRelation<Relations[number]>
36
+
37
+ export interface ScalarOutputTypeMap {
38
+ boolean: unknown
39
+ int32: unknown
40
+ int64: unknown
41
+ float64: unknown
42
+ decimal: unknown
43
+ string: unknown
44
+ date: unknown
45
+ dateTime: unknown
46
+ binary: unknown
47
+ json: unknown
48
+ }
49
+
50
+ export interface DefaultScalarOutputTypeMap extends ScalarOutputTypeMap {
51
+ boolean: boolean
52
+ int32: number
53
+ int64: number | string
54
+ float64: number
55
+ decimal: number | string
56
+ string: string
57
+ date: string
58
+ dateTime: string
59
+ binary: string
60
+ json: JsonValue
61
+ }
62
+
63
+ type IncomingRelation<Definition extends GraphDefinitionInput, Source extends string> =
64
+ DefinitionRelation<Definition> extends infer Candidate
65
+ ? Candidate extends RelationDefinition<infer _Name, infer _From, infer To, infer _Required, infer _Cardinality>
66
+ ? Source extends To
67
+ ? Candidate
68
+ : never
69
+ : never
70
+ : never
71
+
72
+ type RelationPathNullability<
73
+ Definition extends GraphDefinitionInput,
74
+ Relation,
75
+ Visited extends string,
76
+ Depth extends readonly unknown[],
77
+ > =
78
+ Relation extends RelationDefinition<infer _Name, infer From, infer _To, infer Required, infer _Cardinality>
79
+ ? BooleanOr<
80
+ | (Required extends true ? false : true)
81
+ | SourceOuterNullable<Definition, From, Visited, readonly [...Depth, unknown]>
82
+ >
83
+ : boolean
84
+
85
+ type SourceOuterNullable<
86
+ Definition extends GraphDefinitionInput,
87
+ Source extends string,
88
+ Visited extends string = never,
89
+ Depth extends readonly unknown[] = readonly [],
90
+ > = Depth['length'] extends 12
91
+ ? boolean
92
+ : string extends Source
93
+ ? boolean
94
+ : string extends DefinitionRoot<Definition>
95
+ ? boolean
96
+ : Source extends DefinitionRoot<Definition>
97
+ ? false
98
+ : Source extends Visited
99
+ ? boolean
100
+ : [IncomingRelation<Definition, Source>] extends [never]
101
+ ? boolean
102
+ : BooleanOr<
103
+ RelationPathNullability<Definition, IncomingRelation<Definition, Source>, Visited | Source, Depth>
104
+ >
105
+
106
+ type CombineAllNullability<Left extends boolean, Right extends boolean> = [Left] extends [false]
107
+ ? false
108
+ : [Right] extends [false]
109
+ ? false
110
+ : [Left] extends [true]
111
+ ? Right
112
+ : [Right] extends [true]
113
+ ? Left
114
+ : boolean
115
+
116
+ type EvaluateAnyNullability<
117
+ Definition extends GraphDefinitionInput,
118
+ Values,
119
+ Depth extends readonly unknown[],
120
+ > = Values extends readonly []
121
+ ? false
122
+ : Values extends readonly [
123
+ infer First extends NullabilityExpression,
124
+ ...infer Rest extends readonly NullabilityExpression[],
125
+ ]
126
+ ? BooleanOr<
127
+ | EvaluateNullability<Definition, First, readonly [...Depth, unknown]>
128
+ | EvaluateAnyNullability<Definition, Rest, readonly [...Depth, unknown]>
129
+ >
130
+ : Values extends readonly (infer Value extends NullabilityExpression)[]
131
+ ? BooleanOr<EvaluateNullability<Definition, Value, readonly [...Depth, unknown]>>
132
+ : boolean
133
+
134
+ type EvaluateAllNullability<
135
+ Definition extends GraphDefinitionInput,
136
+ Values,
137
+ Depth extends readonly unknown[],
138
+ > = Values extends readonly []
139
+ ? true
140
+ : Values extends readonly [
141
+ infer First extends NullabilityExpression,
142
+ ...infer Rest extends readonly NullabilityExpression[],
143
+ ]
144
+ ? CombineAllNullability<
145
+ EvaluateNullability<Definition, First, readonly [...Depth, unknown]>,
146
+ EvaluateAllNullability<Definition, Rest, readonly [...Depth, unknown]>
147
+ >
148
+ : boolean
149
+
150
+ type EvaluateNullability<
151
+ Definition extends GraphDefinitionInput,
152
+ Formula extends NullabilityExpression,
153
+ Depth extends readonly unknown[] = readonly [],
154
+ > = Depth['length'] extends 16
155
+ ? boolean
156
+ : NullabilityExpression extends Formula
157
+ ? boolean
158
+ : Formula extends boolean
159
+ ? Formula
160
+ : Formula extends SourceFieldNullability<infer Source, infer FieldNullable>
161
+ ? BooleanOr<FieldNullable | SourceOuterNullable<Definition, Source, never, Depth>>
162
+ : Formula extends AnyNullability<infer Values>
163
+ ? EvaluateAnyNullability<Definition, Values, Depth>
164
+ : Formula extends AllNullability<infer Values>
165
+ ? EvaluateAllNullability<Definition, Values, Depth>
166
+ : boolean
167
+
168
+ type ProjectionFieldPath<Field> =
169
+ Field extends ProjectionTypeMetadata<infer Path, infer _Type, infer _Nullability, infer _SelectedByDefault>
170
+ ? Path
171
+ : Field extends ProjectionFieldDefinition<infer Path>
172
+ ? Path
173
+ : never
174
+
175
+ type ProjectionObjectPath<Object> =
176
+ Object extends ProjectionObjectTypeMetadata<infer Path, infer _Nullability>
177
+ ? Path
178
+ : Object extends ProjectionObjectDefinition<infer Path>
179
+ ? Path
180
+ : never
181
+
182
+ type ProjectionObjectNullability<Object> =
183
+ Object extends ProjectionObjectTypeMetadata<infer _Path, infer Nullability>
184
+ ? Nullability
185
+ : Object extends ProjectionObjectDefinition<infer _Path, infer Nullability>
186
+ ? Nullability
187
+ : boolean
188
+
189
+ type ProjectionObjectIsNullable<Definition extends GraphDefinitionInput, Object> =
190
+ true extends EvaluateNullability<Definition, ProjectionObjectNullability<Object>> ? true : false
191
+
192
+ type ProjectionFieldValue<Definition extends GraphDefinitionInput, Field, TypeMap extends ScalarOutputTypeMap> =
193
+ Field extends ProjectionTypeMetadata<infer _Path, infer Type, infer Nullability, infer _SelectedByDefault>
194
+ ? true extends EvaluateNullability<Definition, Nullability>
195
+ ? TypeMap[Type] | null
196
+ : TypeMap[Type]
197
+ : Field extends ProjectionFieldDefinition<infer _Path, infer Type, infer Nullability, infer _SelectedByDefault>
198
+ ? true extends EvaluateNullability<Definition, Nullability>
199
+ ? TypeMap[Type] | null
200
+ : TypeMap[Type]
201
+ : never
202
+
203
+ type ProjectionFieldByPath<Field, Path extends string> = Field extends ProjectionFieldDefinition
204
+ ? ProjectionFieldPath<Field> extends Path
205
+ ? Field
206
+ : never
207
+ : never
208
+
209
+ type ProjectionDefaultAtPath<Field, Path extends string> =
210
+ Field extends ProjectionTypeMetadata<infer FieldPath, infer _Type, infer _Nullability, infer SelectedByDefault>
211
+ ? FieldPath extends Path
212
+ ? SelectedByDefault
213
+ : never
214
+ : Field extends ProjectionFieldDefinition
215
+ ? ProjectionFieldPath<Field> extends Path
216
+ ? Field extends { selectedByDefault: true }
217
+ ? true
218
+ : false
219
+ : never
220
+ : never
221
+
222
+ type DefaultProjectionPath<Field, Path extends string = ProjectionFieldPath<Field>> = Path extends unknown
223
+ ? [ProjectionDefaultAtPath<Field, Path>] extends [never]
224
+ ? never
225
+ : ProjectionDefaultAtPath<Field, Path> extends true
226
+ ? Path
227
+ : never
228
+ : never
229
+
230
+ type DefaultProjectionField<Field> = ProjectionFieldByPath<Field, DefaultProjectionPath<Field>>
231
+
232
+ type SelectedProjectionField<Definition extends GraphDefinitionInput, Operation> = [Operation] extends [undefined]
233
+ ? DefaultProjectionField<DefinitionProjectionField<Definition>>
234
+ : Operation extends { select: readonly (infer Path extends string)[] }
235
+ ? ProjectionFieldByPath<DefinitionProjectionField<Definition>, Path>
236
+ : DefaultProjectionField<DefinitionProjectionField<Definition>>
237
+
238
+ type ProjectionObjectForField<Object, Field> = Object extends ProjectionObjectDefinition
239
+ ? Field extends ProjectionFieldDefinition
240
+ ? ProjectionFieldPath<Field> extends `${ProjectionObjectPath<Object>}.${string}`
241
+ ? Object
242
+ : never
243
+ : never
244
+ : never
245
+
246
+ type SelectedProjectionObject<Definition extends GraphDefinitionInput, Field> = ProjectionObjectForField<
247
+ DefinitionProjectionObject<Definition>,
248
+ Field
249
+ >
250
+
251
+ type ProjectionEntry<
252
+ Definition extends GraphDefinitionInput,
253
+ Field,
254
+ TypeMap extends ScalarOutputTypeMap,
255
+ > = Field extends ProjectionFieldDefinition
256
+ ? {
257
+ path: ProjectionFieldPath<Field>
258
+ value: ProjectionFieldValue<Definition, Field, TypeMap>
259
+ }
260
+ : never
261
+
262
+ type ProjectionObjectEntry<Definition extends GraphDefinitionInput, Object> = Object extends ProjectionObjectDefinition
263
+ ? {
264
+ path: ProjectionObjectPath<Object>
265
+ nullable: ProjectionObjectIsNullable<Definition, Object>
266
+ }
267
+ : never
268
+
269
+ type ProjectionEntryHead<Entry> = Entry extends { path: infer Path extends string }
270
+ ? Path extends `${infer Head}.${string}`
271
+ ? Head
272
+ : Path
273
+ : never
274
+
275
+ type DirectProjectionEntryValue<Entry, Key extends string> = Entry extends {
276
+ path: infer Path extends string
277
+ value: infer Value
278
+ }
279
+ ? Path extends Key
280
+ ? Value
281
+ : never
282
+ : never
283
+
284
+ type NestedProjectionEntry<Entry, Key extends string> = Entry extends {
285
+ path: infer Path extends string
286
+ value: infer Value
287
+ }
288
+ ? Path extends `${Key}.${infer Rest}`
289
+ ? { path: Rest; value: Value }
290
+ : never
291
+ : never
292
+
293
+ type DirectProjectionObjectNullable<ObjectEntry, Key extends string> = ObjectEntry extends {
294
+ path: infer Path extends string
295
+ nullable: infer Nullable extends boolean
296
+ }
297
+ ? Path extends Key
298
+ ? Nullable
299
+ : never
300
+ : never
301
+
302
+ type NestedProjectionObjectEntry<ObjectEntry, Key extends string> = ObjectEntry extends {
303
+ path: infer Path extends string
304
+ nullable: infer Nullable extends boolean
305
+ }
306
+ ? Path extends `${Key}.${infer Rest}`
307
+ ? { path: Rest; nullable: Nullable }
308
+ : never
309
+ : never
310
+
311
+ type ApplyProjectionObjectNullability<Value, ObjectEntry, Key extends string> =
312
+ true extends DirectProjectionObjectNullable<ObjectEntry, Key> ? Value | null : Value
313
+
314
+ type ProjectionValueAtKeyWithoutObject<Entry, ObjectEntry, Key extends string> = [
315
+ NestedProjectionEntry<Entry, Key>,
316
+ ] extends [never]
317
+ ? DirectProjectionEntryValue<Entry, Key>
318
+ : [DirectProjectionEntryValue<Entry, Key>] extends [never]
319
+ ? BuildProjectionResult<NestedProjectionEntry<Entry, Key>, NestedProjectionObjectEntry<ObjectEntry, Key>>
320
+ :
321
+ | DirectProjectionEntryValue<Entry, Key>
322
+ | BuildProjectionResult<NestedProjectionEntry<Entry, Key>, NestedProjectionObjectEntry<ObjectEntry, Key>>
323
+
324
+ type ProjectionValueAtKey<Entry, ObjectEntry, Key extends string> = ApplyProjectionObjectNullability<
325
+ ProjectionValueAtKeyWithoutObject<Entry, ObjectEntry, Key>,
326
+ ObjectEntry,
327
+ Key
328
+ >
329
+
330
+ type BuildProjectionResult<Entry, ObjectEntry = never> = [Entry] extends [never]
331
+ ? Record<never, never>
332
+ : {
333
+ [Key in ProjectionEntryHead<Entry>]: ProjectionValueAtKey<Entry, ObjectEntry, Key>
334
+ }
335
+
336
+ export type ResultOf<
337
+ Subject extends GraphDefinitionInput | QueryGraph | RelationalQueryGraph | ComposedQueryGraph,
338
+ Operation = undefined,
339
+ TypeMap extends ScalarOutputTypeMap = DefaultScalarOutputTypeMap,
340
+ > =
341
+ Subject extends ComposedQueryGraph<infer Root, infer Relations>
342
+ ? ComposedResult<Root, Relations, Operation, TypeMap>
343
+ : DefinitionOf<
344
+ Extract<Subject, GraphDefinitionInput | QueryGraph | RelationalQueryGraph>
345
+ > extends infer Definition extends GraphDefinitionInput
346
+ ? SelectedProjectionField<Definition, Operation> extends infer Field
347
+ ? BuildProjectionResult<
348
+ ProjectionEntry<Definition, Field, TypeMap>,
349
+ ProjectionObjectEntry<Definition, SelectedProjectionObject<Definition, Field>>
350
+ >
351
+ : never
352
+ : never
353
+
354
+ type SelectedPaths<Operation> = Operation extends { select: readonly (infer Path extends string)[] } ? Path : never
355
+
356
+ type RootOperation<Operation, Relations extends readonly BatchRelation[]> = Operation extends {
357
+ select: readonly string[]
358
+ }
359
+ ? { select: readonly Exclude<SelectedPaths<Operation>, ChildPaths<Relations>>[] }
360
+ : undefined
361
+
362
+ type SelectedChildPath<Operation, Name extends string> =
363
+ Extract<SelectedPaths<Operation>, `${Name}.${string}`> extends `${Name}.${infer Path}` ? Path : never
364
+
365
+ type ChildOperation<Operation, Name extends string> = {
366
+ select: readonly SelectedChildPath<Operation, Name>[]
367
+ }
368
+
369
+ type SelectedRelationCandidate<Relation extends BatchRelation, Operation> = Relation extends BatchRelation
370
+ ? Extract<SelectedPaths<Operation>, `${Relation['name']}.${string}`> extends never
371
+ ? never
372
+ : Relation
373
+ : never
374
+
375
+ type SelectedRelation<Relations extends readonly BatchRelation[], Operation> = SelectedRelationCandidate<
376
+ Relations[number],
377
+ Operation
378
+ >
379
+
380
+ type BatchResult<Relation extends BatchRelation, Operation, TypeMap extends ScalarOutputTypeMap> =
381
+ ResultOf<BatchQueryGraph<Relation['query']>, ChildOperation<Operation, Relation['name']>, TypeMap> extends infer Child
382
+ ? Relation['cardinality'] extends 'many'
383
+ ? Child[]
384
+ : Child | null
385
+ : never
386
+
387
+ type ComposedResult<
388
+ Root extends RelationalQueryGraph,
389
+ Relations extends readonly BatchRelation[],
390
+ Operation,
391
+ TypeMap extends ScalarOutputTypeMap,
392
+ > = ResultOf<Root, RootOperation<Operation, Relations>, TypeMap> & {
393
+ [Relation in SelectedRelation<Relations, Operation> as Relation['name']]: BatchResult<Relation, Operation, TypeMap>
394
+ }
@@ -0,0 +1,168 @@
1
+ import type {
2
+ GraphDefinition,
3
+ GraphDefinitionInput,
4
+ OrderingDefinition,
5
+ ParameterDefinition,
6
+ ProjectionDefinitionInput,
7
+ RelationalMapping,
8
+ ScalarParameterValue,
9
+ } from './model.js'
10
+
11
+ export interface QueryOperationBase<SelectPath extends string = string, OrderingName extends string = string> {
12
+ select?: readonly SelectPath[]
13
+ ordering?: OrderingName
14
+ offset?: number
15
+ limit?: number
16
+ }
17
+
18
+ export type DefinitionParameter<Definition extends GraphDefinitionInput> =
19
+ Definition extends GraphDefinition<
20
+ infer Parameter,
21
+ infer _ProjectionPath,
22
+ infer _OrderingName,
23
+ infer _ProjectionField,
24
+ infer _Relation,
25
+ infer _Root
26
+ >
27
+ ? Parameter
28
+ : NonNullable<Definition['parameters']>[number]
29
+
30
+ export type DefinitionProjectionPath<Definition extends GraphDefinitionInput> =
31
+ Definition extends GraphDefinition<
32
+ infer _Parameter,
33
+ infer ProjectionPath,
34
+ infer _OrderingName,
35
+ infer _ProjectionField,
36
+ infer _Relation,
37
+ infer _Root
38
+ >
39
+ ? ProjectionPath
40
+ : Definition['projection'] extends ProjectionDefinitionInput<infer ProjectionPath>
41
+ ? ProjectionPath
42
+ : string
43
+
44
+ export type DefinitionOrderingName<Definition extends GraphDefinitionInput> =
45
+ Definition extends GraphDefinition<
46
+ infer _Parameter,
47
+ infer _ProjectionPath,
48
+ infer OrderingName,
49
+ infer _ProjectionField,
50
+ infer _Relation,
51
+ infer _Root
52
+ >
53
+ ? OrderingName
54
+ : NonNullable<Definition['orderings']>[number] extends OrderingDefinition<infer OrderingName>
55
+ ? OrderingName
56
+ : never
57
+
58
+ export type DefinitionProjectionField<Definition extends GraphDefinitionInput> = NonNullable<
59
+ NonNullable<Definition['projection']>['fields']
60
+ >[number]
61
+ export type DefinitionProjectionObject<Definition extends GraphDefinitionInput> = NonNullable<
62
+ NonNullable<Definition['projection']>['objects']
63
+ >[number]
64
+
65
+ export type DefinitionRelation<Definition extends GraphDefinitionInput> = NonNullable<Definition['relations']>[number]
66
+
67
+ export type DefinitionRoot<Definition extends GraphDefinitionInput> = Definition['root']
68
+
69
+ export type ParameterValue<Parameter extends ParameterDefinition> = Parameter extends { shape: 'list' }
70
+ ? readonly ScalarParameterValue<Parameter['scalarType']>[]
71
+ : ScalarParameterValue<Parameter['scalarType']>
72
+
73
+ type RequiredParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
74
+ ? Parameter extends { required?: true }
75
+ ? Parameter
76
+ : never
77
+ : never
78
+
79
+ type OptionalParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
80
+ ? Parameter extends { required?: true }
81
+ ? never
82
+ : Parameter
83
+ : never
84
+
85
+ export type OperationParameters<Definition extends GraphDefinitionInput> = {
86
+ [Parameter in RequiredParameter<DefinitionParameter<Definition>> as Parameter['name']]-?: ParameterValue<Parameter>
87
+ } & {
88
+ [Parameter in OptionalParameter<DefinitionParameter<Definition>> as Parameter['name']]?: ParameterValue<Parameter>
89
+ }
90
+
91
+ type OperationParameterInput<Definition extends GraphDefinitionInput> = [DefinitionParameter<Definition>] extends [
92
+ never,
93
+ ]
94
+ ? { parameters?: never }
95
+ : [RequiredParameter<DefinitionParameter<Definition>>] extends [never]
96
+ ? { parameters?: OperationParameters<Definition> }
97
+ : { parameters: OperationParameters<Definition> }
98
+
99
+ export type QueryOperation<Definition extends GraphDefinitionInput = GraphDefinitionInput> = QueryOperationBase<
100
+ DefinitionProjectionPath<Definition>,
101
+ DefinitionOrderingName<Definition>
102
+ > &
103
+ OperationParameterInput<Definition>
104
+
105
+ declare const graphDefinitionType: unique symbol
106
+
107
+ export interface QueryGraph<Definition extends GraphDefinitionInput = GraphDefinitionInput> {
108
+ readonly [graphDefinitionType]?: Definition
109
+ readonly name: string
110
+ readonly root: string
111
+ readonly sourceCount: number
112
+ readonly relationCount: number
113
+ hasSource(source: string): boolean
114
+ hasField(source: string, field: string): boolean
115
+ hasParameter(parameter: string): boolean
116
+ hasRelation(relation: string): boolean
117
+ selectableFields(): Array<DefinitionProjectionPath<Definition>>
118
+ withRelationalMapping(mapping: RelationalMapping): RelationalQueryGraph<Definition>
119
+ withRelationalMappings(mappings: readonly RelationalMapping[]): RelationalQueryGraph<Definition>
120
+ }
121
+
122
+ export interface RelationalQueryGraph<Definition extends GraphDefinitionInput = GraphDefinitionInput> {
123
+ readonly [graphDefinitionType]?: Definition
124
+ readonly name: string
125
+ compileSqlServer(
126
+ operation: QueryOperation<Definition>,
127
+ options?: SqlServerCompileOptions,
128
+ ): import('../native.js').CompiledSqlStatement
129
+ compileOracle(
130
+ operation: QueryOperation<Definition>,
131
+ options?: OracleCompileOptions,
132
+ ): import('../native.js').CompiledSqlStatement
133
+ }
134
+
135
+ export type DefinitionOf<Subject extends GraphDefinitionInput | QueryGraph | RelationalQueryGraph> =
136
+ Subject extends GraphDefinitionInput
137
+ ? Subject
138
+ : Subject extends QueryGraph<infer Definition>
139
+ ? Definition
140
+ : Subject extends RelationalQueryGraph<infer Definition>
141
+ ? Definition
142
+ : never
143
+
144
+ export type SqlServerVersion = '2008' | '2012' | '2016' | '2019' | '2022'
145
+ export type OracleVersion = '11g' | '12c' | '19c' | '21c' | '23ai'
146
+
147
+ export interface SqlServerCompileOptions {
148
+ version?: SqlServerVersion
149
+ }
150
+
151
+ export interface OracleCompileOptions {
152
+ version?: OracleVersion
153
+ }
154
+
155
+ export type QueryGraphErrorPhase = 'definition' | 'mapping' | 'composition' | 'operation' | 'sql'
156
+
157
+ export interface QueryGraphDiagnostic {
158
+ code: string
159
+ location: string
160
+ message: string
161
+ }
162
+
163
+ export interface QueryGraphError extends Error {
164
+ readonly name: 'QueryGraphError'
165
+ readonly code: string
166
+ readonly phase: QueryGraphErrorPhase
167
+ readonly issues: readonly QueryGraphDiagnostic[]
168
+ }