@graphitation/supermassive 2.6.1 → 3.0.0-alpha.3
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/.eslintcache +1 -1
- package/CHANGELOG.md +17 -1
- package/lib/__testUtils__/execute.d.ts +13 -0
- package/lib/__testUtils__/execute.d.ts.map +1 -0
- package/lib/__testUtils__/execute.js +196 -0
- package/lib/__testUtils__/execute.js.map +7 -0
- package/lib/__testUtils__/execute.mjs +174 -0
- package/lib/__testUtils__/execute.mjs.map +7 -0
- package/lib/benchmarks/index.js +11 -20
- package/lib/benchmarks/index.js.map +3 -3
- package/lib/benchmarks/index.mjs +12 -23
- package/lib/benchmarks/index.mjs.map +2 -2
- package/lib/benchmarks/swapi-schema/index.d.ts +4 -2
- package/lib/benchmarks/swapi-schema/index.d.ts.map +1 -1
- package/lib/benchmarks/swapi-schema/index.js +8 -2
- package/lib/benchmarks/swapi-schema/index.js.map +2 -2
- package/lib/benchmarks/swapi-schema/index.mjs +8 -2
- package/lib/benchmarks/swapi-schema/index.mjs.map +2 -2
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts +7 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts.map +1 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.js +916 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.js.map +7 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs +903 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs.map +7 -0
- package/lib/benchmarks/swapi-schema/resolvers.d.ts.map +1 -1
- package/lib/benchmarks/swapi-schema/resolvers.js +53 -17
- package/lib/benchmarks/swapi-schema/resolvers.js.map +2 -2
- package/lib/benchmarks/swapi-schema/resolvers.mjs +54 -18
- package/lib/benchmarks/swapi-schema/resolvers.mjs.map +2 -2
- package/lib/collectFields.d.ts +27 -10
- package/lib/collectFields.d.ts.map +1 -1
- package/lib/collectFields.js +146 -80
- package/lib/collectFields.js.map +3 -3
- package/lib/collectFields.mjs +143 -81
- package/lib/collectFields.mjs.map +2 -2
- package/lib/executeWithSchema.d.ts +1 -1
- package/lib/executeWithSchema.d.ts.map +1 -1
- package/lib/executeWithSchema.js +7 -13
- package/lib/executeWithSchema.js.map +2 -2
- package/lib/executeWithSchema.mjs +9 -20
- package/lib/executeWithSchema.mjs.map +2 -2
- package/lib/executeWithoutSchema.d.ts +53 -16
- package/lib/executeWithoutSchema.d.ts.map +1 -1
- package/lib/executeWithoutSchema.js +1076 -274
- package/lib/executeWithoutSchema.js.map +3 -3
- package/lib/executeWithoutSchema.mjs +1092 -281
- package/lib/executeWithoutSchema.mjs.map +3 -3
- package/lib/index.d.ts +3 -9
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -7
- package/lib/index.js.map +2 -2
- package/lib/index.mjs +3 -10
- package/lib/index.mjs.map +2 -2
- package/lib/jsutils/AccumulatorMap.d.ts +8 -0
- package/lib/jsutils/AccumulatorMap.d.ts.map +1 -0
- package/lib/jsutils/AccumulatorMap.js +36 -0
- package/lib/jsutils/AccumulatorMap.js.map +7 -0
- package/lib/jsutils/AccumulatorMap.mjs +17 -0
- package/lib/jsutils/AccumulatorMap.mjs.map +7 -0
- package/lib/jsutils/didYouMean.d.ts +1 -2
- package/lib/jsutils/didYouMean.d.ts.map +1 -1
- package/lib/jsutils/didYouMean.js.map +2 -2
- package/lib/jsutils/didYouMean.mjs.map +2 -2
- package/lib/jsutils/instanceOf.js.map +2 -2
- package/lib/jsutils/instanceOf.mjs.map +2 -2
- package/lib/schema/definition.d.ts +95 -0
- package/lib/schema/definition.d.ts.map +1 -0
- package/lib/schema/definition.js +77 -0
- package/lib/schema/definition.js.map +7 -0
- package/lib/schema/definition.mjs +58 -0
- package/lib/schema/definition.mjs.map +7 -0
- package/lib/schema/directives.d.ts +41 -0
- package/lib/schema/directives.d.ts.map +1 -0
- package/lib/schema/directives.js +82 -0
- package/lib/schema/directives.js.map +7 -0
- package/lib/schema/directives.mjs +65 -0
- package/lib/schema/directives.mjs.map +7 -0
- package/lib/schema/fragment.d.ts +41 -0
- package/lib/schema/fragment.d.ts.map +1 -0
- package/lib/schema/fragment.js +270 -0
- package/lib/schema/fragment.js.map +7 -0
- package/lib/schema/fragment.mjs +267 -0
- package/lib/schema/fragment.mjs.map +7 -0
- package/lib/schema/reference.d.ts +12 -0
- package/lib/schema/reference.d.ts.map +1 -0
- package/lib/schema/reference.js +137 -0
- package/lib/schema/reference.js.map +7 -0
- package/lib/schema/reference.mjs +118 -0
- package/lib/schema/reference.mjs.map +7 -0
- package/lib/schema/resolvers.d.ts +9 -0
- package/lib/schema/resolvers.d.ts.map +1 -0
- package/lib/schema/resolvers.js +47 -0
- package/lib/schema/resolvers.js.map +7 -0
- package/lib/schema/resolvers.mjs +35 -0
- package/lib/schema/resolvers.mjs.map +7 -0
- package/lib/subscribeWithSchema.d.ts +3 -2
- package/lib/subscribeWithSchema.d.ts.map +1 -1
- package/lib/subscribeWithSchema.js +7 -13
- package/lib/subscribeWithSchema.js.map +2 -2
- package/lib/subscribeWithSchema.mjs +9 -20
- package/lib/subscribeWithSchema.mjs.map +2 -2
- package/lib/subscribeWithoutSchema.d.ts +3 -35
- package/lib/subscribeWithoutSchema.d.ts.map +1 -1
- package/lib/subscribeWithoutSchema.js +1 -163
- package/lib/subscribeWithoutSchema.js.map +2 -2
- package/lib/subscribeWithoutSchema.mjs +2 -175
- package/lib/subscribeWithoutSchema.mjs.map +2 -2
- package/lib/types.d.ts +71 -29
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +14 -0
- package/lib/types.js.map +2 -2
- package/lib/types.mjs +11 -0
- package/lib/types.mjs.map +3 -3
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.d.ts +9 -0
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.d.ts.map +1 -0
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.js +303 -0
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.js.map +7 -0
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.mjs +317 -0
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.mjs.map +7 -0
- package/lib/utilities/annotateDocumentGraphQLTransform.d.ts +3 -0
- package/lib/utilities/annotateDocumentGraphQLTransform.d.ts.map +1 -0
- package/lib/utilities/annotateDocumentGraphQLTransform.js +34 -0
- package/lib/utilities/annotateDocumentGraphQLTransform.js.map +7 -0
- package/lib/utilities/annotateDocumentGraphQLTransform.mjs +17 -0
- package/lib/utilities/annotateDocumentGraphQLTransform.mjs.map +7 -0
- package/lib/utilities/coerceInputValue.d.ts +10 -0
- package/lib/utilities/coerceInputValue.d.ts.map +1 -0
- package/lib/utilities/coerceInputValue.js +181 -0
- package/lib/utilities/coerceInputValue.js.map +7 -0
- package/lib/utilities/coerceInputValue.mjs +167 -0
- package/lib/utilities/coerceInputValue.mjs.map +7 -0
- package/lib/utilities/decodeASTSchema.d.ts +7 -0
- package/lib/utilities/decodeASTSchema.d.ts.map +1 -0
- package/lib/utilities/decodeASTSchema.js +243 -0
- package/lib/utilities/decodeASTSchema.js.map +7 -0
- package/lib/utilities/decodeASTSchema.mjs +242 -0
- package/lib/utilities/decodeASTSchema.mjs.map +7 -0
- package/lib/utilities/encodeASTSchema.d.ts +4 -0
- package/lib/utilities/encodeASTSchema.d.ts.map +1 -0
- package/lib/utilities/encodeASTSchema.js +122 -0
- package/lib/utilities/encodeASTSchema.js.map +7 -0
- package/lib/utilities/encodeASTSchema.mjs +105 -0
- package/lib/utilities/encodeASTSchema.mjs.map +7 -0
- package/lib/utilities/getSchemaFragment.d.ts +4 -0
- package/lib/utilities/getSchemaFragment.d.ts.map +1 -0
- package/lib/utilities/getSchemaFragment.js +38 -0
- package/lib/utilities/getSchemaFragment.js.map +7 -0
- package/lib/utilities/getSchemaFragment.mjs +22 -0
- package/lib/utilities/getSchemaFragment.mjs.map +7 -0
- package/lib/utilities/makeReadableErrorPath.d.ts +3 -0
- package/lib/utilities/makeReadableErrorPath.d.ts.map +1 -0
- package/lib/utilities/makeReadableErrorPath.js +47 -0
- package/lib/utilities/makeReadableErrorPath.js.map +7 -0
- package/lib/utilities/makeReadableErrorPath.mjs +28 -0
- package/lib/utilities/makeReadableErrorPath.mjs.map +7 -0
- package/lib/utilities/mergeDefinitions.d.ts +8 -0
- package/lib/utilities/mergeDefinitions.d.ts.map +1 -0
- package/lib/utilities/mergeDefinitions.js +126 -0
- package/lib/utilities/mergeDefinitions.js.map +7 -0
- package/lib/utilities/mergeDefinitions.mjs +114 -0
- package/lib/utilities/mergeDefinitions.mjs.map +7 -0
- package/lib/utilities/mergeResolvers.d.ts +1 -1
- package/lib/utilities/mergeResolvers.d.ts.map +1 -1
- package/lib/utilities/mergeResolvers.js.map +2 -2
- package/lib/utilities/mergeResolvers.mjs.map +2 -2
- package/lib/utilities/typeNameFromAST.d.ts +1 -1
- package/lib/utilities/typeNameFromAST.d.ts.map +1 -1
- package/lib/utilities/typeNameFromAST.js.map +2 -2
- package/lib/utilities/typeNameFromAST.mjs.map +2 -2
- package/lib/utilities/valueFromAST.d.ts +27 -0
- package/lib/utilities/valueFromAST.d.ts.map +1 -0
- package/lib/utilities/valueFromAST.js +139 -0
- package/lib/utilities/valueFromAST.js.map +7 -0
- package/lib/utilities/valueFromAST.mjs +125 -0
- package/lib/utilities/valueFromAST.mjs.map +7 -0
- package/lib/utilities/valueFromASTUntyped.d.ts +21 -0
- package/lib/utilities/valueFromASTUntyped.d.ts.map +1 -0
- package/lib/utilities/valueFromASTUntyped.js +51 -0
- package/lib/utilities/valueFromASTUntyped.js.map +7 -0
- package/lib/utilities/valueFromASTUntyped.mjs +32 -0
- package/lib/utilities/valueFromASTUntyped.mjs.map +7 -0
- package/lib/values.d.ts +8 -13
- package/lib/values.d.ts.map +1 -1
- package/lib/values.js +83 -75
- package/lib/values.js.map +2 -2
- package/lib/values.mjs +85 -83
- package/lib/values.mjs.map +2 -2
- package/package.json +8 -9
- package/lib/definition.d.ts +0 -7
- package/lib/definition.d.ts.map +0 -1
- package/lib/definition.js +0 -59
- package/lib/definition.js.map +0 -7
- package/lib/definition.mjs +0 -40
- package/lib/definition.mjs.map +0 -7
- package/lib/directives.d.ts +0 -79
- package/lib/directives.d.ts.map +0 -1
- package/lib/directives.js +0 -160
- package/lib/directives.js.map +0 -7
- package/lib/directives.mjs +0 -146
- package/lib/directives.mjs.map +0 -7
- package/lib/extractImplicitTypesRuntime.d.ts +0 -4
- package/lib/extractImplicitTypesRuntime.d.ts.map +0 -1
- package/lib/extractImplicitTypesRuntime.js +0 -123
- package/lib/extractImplicitTypesRuntime.js.map +0 -7
- package/lib/extractImplicitTypesRuntime.mjs +0 -114
- package/lib/extractImplicitTypesRuntime.mjs.map +0 -7
package/lib/collectFields.mjs
CHANGED
|
@@ -1,132 +1,194 @@
|
|
|
1
1
|
// src/collectFields.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Kind
|
|
4
|
+
} from "graphql";
|
|
3
5
|
import { getDirectiveValues } from "./values.mjs";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
GraphQLSkipDirective,
|
|
8
|
+
GraphQLIncludeDirective,
|
|
9
|
+
GraphQLDeferDirective
|
|
10
|
+
} from "./schema/directives.mjs";
|
|
11
|
+
import { AccumulatorMap } from "./jsutils/AccumulatorMap.mjs";
|
|
12
|
+
import invariant from "invariant";
|
|
13
|
+
function collectFields(exeContext, runtimeTypeName) {
|
|
14
|
+
const { operation } = exeContext;
|
|
15
|
+
const groupedFieldSet = new AccumulatorMap();
|
|
16
|
+
const patches = [];
|
|
17
|
+
collectFieldsImpl(
|
|
18
|
+
exeContext,
|
|
19
|
+
runtimeTypeName,
|
|
20
|
+
operation.selectionSet,
|
|
21
|
+
groupedFieldSet,
|
|
22
|
+
patches,
|
|
23
|
+
/* @__PURE__ */ new Set()
|
|
24
|
+
);
|
|
25
|
+
return { groupedFieldSet, patches };
|
|
26
|
+
}
|
|
27
|
+
function collectSubfields(exeContext, returnTypeName, fieldGroup) {
|
|
28
|
+
const subGroupedFieldSet = new AccumulatorMap();
|
|
29
|
+
const visitedFragmentNames = /* @__PURE__ */ new Set();
|
|
30
|
+
const subPatches = [];
|
|
31
|
+
const subFieldsAndPatches = {
|
|
32
|
+
groupedFieldSet: subGroupedFieldSet,
|
|
33
|
+
patches: subPatches
|
|
34
|
+
};
|
|
35
|
+
for (const node of fieldGroup) {
|
|
36
|
+
if (node.selectionSet) {
|
|
37
|
+
collectFieldsImpl(
|
|
38
|
+
exeContext,
|
|
39
|
+
returnTypeName,
|
|
40
|
+
node.selectionSet,
|
|
41
|
+
subGroupedFieldSet,
|
|
42
|
+
subPatches,
|
|
43
|
+
visitedFragmentNames
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return subFieldsAndPatches;
|
|
48
|
+
}
|
|
49
|
+
function collectFieldsImpl(exeContext, runtimeTypeName, selectionSet, groupedFieldSet, patches, visitedFragmentNames) {
|
|
8
50
|
for (const selection of selectionSet.selections) {
|
|
9
51
|
switch (selection.kind) {
|
|
10
52
|
case Kind.FIELD: {
|
|
11
|
-
if (!shouldIncludeNode(
|
|
53
|
+
if (!shouldIncludeNode(exeContext, selection)) {
|
|
12
54
|
continue;
|
|
13
55
|
}
|
|
14
|
-
|
|
15
|
-
const fieldList = fields.get(name);
|
|
16
|
-
if (fieldList !== void 0) {
|
|
17
|
-
fieldList.push(selection);
|
|
18
|
-
} else {
|
|
19
|
-
fields.set(name, [selection]);
|
|
20
|
-
}
|
|
56
|
+
groupedFieldSet.add(getFieldEntryKey(selection), selection);
|
|
21
57
|
break;
|
|
22
58
|
}
|
|
23
59
|
case Kind.INLINE_FRAGMENT: {
|
|
24
|
-
if (!shouldIncludeNode(
|
|
60
|
+
if (!shouldIncludeNode(exeContext, selection) || !doesFragmentConditionMatch(
|
|
61
|
+
selection,
|
|
62
|
+
runtimeTypeName,
|
|
63
|
+
exeContext.schemaTypes
|
|
64
|
+
)) {
|
|
25
65
|
continue;
|
|
26
66
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
67
|
+
const defer = getDeferValues(exeContext, selection);
|
|
68
|
+
if (defer) {
|
|
69
|
+
const patchFields = new AccumulatorMap();
|
|
70
|
+
collectFieldsImpl(
|
|
71
|
+
exeContext,
|
|
72
|
+
runtimeTypeName,
|
|
73
|
+
selection.selectionSet,
|
|
74
|
+
patchFields,
|
|
75
|
+
patches,
|
|
76
|
+
visitedFragmentNames
|
|
77
|
+
);
|
|
78
|
+
patches.push({
|
|
79
|
+
label: defer.label,
|
|
80
|
+
groupedFieldSet: patchFields
|
|
81
|
+
});
|
|
82
|
+
} else {
|
|
83
|
+
collectFieldsImpl(
|
|
84
|
+
exeContext,
|
|
85
|
+
runtimeTypeName,
|
|
86
|
+
selection.selectionSet,
|
|
87
|
+
groupedFieldSet,
|
|
88
|
+
patches,
|
|
89
|
+
visitedFragmentNames
|
|
90
|
+
);
|
|
91
|
+
}
|
|
36
92
|
break;
|
|
37
93
|
}
|
|
38
94
|
case Kind.FRAGMENT_SPREAD: {
|
|
39
95
|
const fragName = selection.name.value;
|
|
40
|
-
if (
|
|
96
|
+
if (!shouldIncludeNode(exeContext, selection)) {
|
|
41
97
|
continue;
|
|
42
98
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!fragment || !doesFragmentConditionMatch(fragment, runtimeTypeName, resolvers)) {
|
|
99
|
+
const defer = getDeferValues(exeContext, selection);
|
|
100
|
+
if (visitedFragmentNames.has(fragName) && !defer) {
|
|
46
101
|
continue;
|
|
47
102
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
variableValues,
|
|
103
|
+
const fragment = exeContext.fragments[fragName];
|
|
104
|
+
if (fragment == null || !doesFragmentConditionMatch(
|
|
105
|
+
fragment,
|
|
52
106
|
runtimeTypeName,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
107
|
+
exeContext.schemaTypes
|
|
108
|
+
)) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (!defer) {
|
|
112
|
+
visitedFragmentNames.add(fragName);
|
|
113
|
+
}
|
|
114
|
+
if (defer) {
|
|
115
|
+
const patchFields = new AccumulatorMap();
|
|
116
|
+
collectFieldsImpl(
|
|
117
|
+
exeContext,
|
|
118
|
+
runtimeTypeName,
|
|
119
|
+
fragment.selectionSet,
|
|
120
|
+
patchFields,
|
|
121
|
+
patches,
|
|
122
|
+
visitedFragmentNames
|
|
123
|
+
);
|
|
124
|
+
patches.push({
|
|
125
|
+
label: defer.label,
|
|
126
|
+
groupedFieldSet: patchFields
|
|
127
|
+
});
|
|
128
|
+
} else {
|
|
129
|
+
collectFieldsImpl(
|
|
130
|
+
exeContext,
|
|
131
|
+
runtimeTypeName,
|
|
132
|
+
fragment.selectionSet,
|
|
133
|
+
groupedFieldSet,
|
|
134
|
+
patches,
|
|
135
|
+
visitedFragmentNames
|
|
136
|
+
);
|
|
137
|
+
}
|
|
57
138
|
break;
|
|
58
139
|
}
|
|
59
140
|
}
|
|
60
141
|
}
|
|
61
|
-
return fields;
|
|
62
142
|
}
|
|
63
|
-
function shouldIncludeNode(
|
|
143
|
+
function shouldIncludeNode(exeContext, node) {
|
|
64
144
|
var _a;
|
|
65
145
|
if (!((_a = node.directives) == null ? void 0 : _a.length)) {
|
|
66
146
|
return true;
|
|
67
147
|
}
|
|
68
|
-
const skip = getDirectiveValues(
|
|
69
|
-
GraphQLSkipDirective,
|
|
70
|
-
node,
|
|
71
|
-
resolvers,
|
|
72
|
-
variableValues
|
|
73
|
-
);
|
|
148
|
+
const skip = getDirectiveValues(exeContext, GraphQLSkipDirective, node);
|
|
74
149
|
if ((skip == null ? void 0 : skip.if) === true) {
|
|
75
150
|
return false;
|
|
76
151
|
}
|
|
77
|
-
const include = getDirectiveValues(
|
|
78
|
-
GraphQLIncludeDirective,
|
|
79
|
-
node,
|
|
80
|
-
resolvers,
|
|
81
|
-
variableValues
|
|
82
|
-
);
|
|
152
|
+
const include = getDirectiveValues(exeContext, GraphQLIncludeDirective, node);
|
|
83
153
|
if ((include == null ? void 0 : include.if) === false) {
|
|
84
154
|
return false;
|
|
85
155
|
}
|
|
86
156
|
return true;
|
|
87
157
|
}
|
|
88
|
-
function doesFragmentConditionMatch(fragment, typeName,
|
|
158
|
+
function doesFragmentConditionMatch(fragment, typeName, schemaFragment) {
|
|
89
159
|
const typeConditionNode = fragment.typeCondition;
|
|
90
160
|
if (!typeConditionNode) {
|
|
91
161
|
return true;
|
|
92
162
|
}
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
163
|
+
const conditionalTypeName = typeConditionNode.name.value;
|
|
164
|
+
if (conditionalTypeName === typeName) {
|
|
95
165
|
return true;
|
|
96
166
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
function getSubTypes(resolvers, abstractTypes, conditionalType) {
|
|
101
|
-
const resolver = resolvers[conditionalType];
|
|
102
|
-
if (isInterfaceResolverType(resolver)) {
|
|
103
|
-
const result = resolver.__implementedBy.reduce(
|
|
104
|
-
(acc, item) => {
|
|
105
|
-
if (!abstractTypes.has(item)) {
|
|
106
|
-
const newTypes = /* @__PURE__ */ new Set([...abstractTypes, item]);
|
|
107
|
-
acc.push(...abstractTypes, ...getSubTypes(resolvers, newTypes, item));
|
|
108
|
-
}
|
|
109
|
-
return acc;
|
|
110
|
-
},
|
|
111
|
-
[]
|
|
112
|
-
);
|
|
113
|
-
return /* @__PURE__ */ new Set([...result]);
|
|
167
|
+
if (schemaFragment.isAbstractType(conditionalTypeName)) {
|
|
168
|
+
return schemaFragment.isSubType(conditionalTypeName, typeName);
|
|
114
169
|
}
|
|
115
|
-
|
|
116
|
-
const result = resolver.__types.reduce((acc, item) => {
|
|
117
|
-
if (!abstractTypes.has(item)) {
|
|
118
|
-
const newTypes = /* @__PURE__ */ new Set([...abstractTypes, item]);
|
|
119
|
-
acc.push(...abstractTypes, ...getSubTypes(resolvers, newTypes, item));
|
|
120
|
-
}
|
|
121
|
-
return acc;
|
|
122
|
-
}, []);
|
|
123
|
-
return /* @__PURE__ */ new Set([...result]);
|
|
124
|
-
}
|
|
125
|
-
return abstractTypes;
|
|
170
|
+
return false;
|
|
126
171
|
}
|
|
127
172
|
function getFieldEntryKey(node) {
|
|
128
173
|
return node.alias ? node.alias.value : node.name.value;
|
|
129
174
|
}
|
|
175
|
+
function getDeferValues(exeContext, node) {
|
|
176
|
+
const defer = getDirectiveValues(exeContext, GraphQLDeferDirective, node);
|
|
177
|
+
if (!defer) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (defer.if === false) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
invariant(
|
|
184
|
+
exeContext.operation.operation !== "subscription",
|
|
185
|
+
"`@defer` directive not supported on subscription operations. Disable `@defer` by setting the `if` argument to `false`."
|
|
186
|
+
);
|
|
187
|
+
return {
|
|
188
|
+
label: typeof defer.label === "string" ? defer.label : void 0
|
|
189
|
+
};
|
|
190
|
+
}
|
|
130
191
|
export {
|
|
131
|
-
collectFields
|
|
192
|
+
collectFields,
|
|
193
|
+
collectSubfields
|
|
132
194
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/collectFields.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";AAAA,
|
|
4
|
+
"sourcesContent": ["import {\n Kind,\n FieldNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n SelectionNode,\n SelectionSetNode,\n} from \"graphql\";\nimport { getDirectiveValues } from \"./values\";\nimport {\n GraphQLSkipDirective,\n GraphQLIncludeDirective,\n GraphQLDeferDirective,\n} from \"./schema/directives\";\n\nimport { AccumulatorMap } from \"./jsutils/AccumulatorMap\";\nimport invariant from \"invariant\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport { SchemaFragment } from \"./schema/fragment\";\n\nexport type FieldGroup = ReadonlyArray<FieldNode>;\n\nexport type GroupedFieldSet = Map<string, FieldGroup>;\n\nexport interface PatchFields {\n label: string | undefined;\n groupedFieldSet: GroupedFieldSet;\n}\n\nexport interface FieldsAndPatches {\n groupedFieldSet: GroupedFieldSet;\n patches: Array<PatchFields>;\n}\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\nexport function collectFields(\n exeContext: ExecutionContext,\n runtimeTypeName: string,\n): FieldsAndPatches {\n const { operation } = exeContext;\n const groupedFieldSet = new AccumulatorMap<string, FieldNode>();\n const patches: Array<PatchFields> = [];\n collectFieldsImpl(\n exeContext,\n runtimeTypeName,\n operation.selectionSet,\n groupedFieldSet,\n patches,\n new Set(),\n );\n return { groupedFieldSet, patches };\n}\n\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectSubfields(\n exeContext: ExecutionContext,\n returnTypeName: string,\n fieldGroup: FieldGroup,\n): FieldsAndPatches {\n const subGroupedFieldSet = new AccumulatorMap<string, FieldNode>();\n const visitedFragmentNames = new Set<string>();\n\n const subPatches: Array<PatchFields> = [];\n const subFieldsAndPatches = {\n groupedFieldSet: subGroupedFieldSet,\n patches: subPatches,\n };\n\n for (const node of fieldGroup) {\n if (node.selectionSet) {\n collectFieldsImpl(\n exeContext,\n returnTypeName,\n node.selectionSet,\n subGroupedFieldSet,\n subPatches,\n visitedFragmentNames,\n );\n }\n }\n return subFieldsAndPatches;\n}\n\n// eslint-disable-next-line max-params\nfunction collectFieldsImpl(\n exeContext: ExecutionContext,\n runtimeTypeName: string,\n selectionSet: SelectionSetNode,\n groupedFieldSet: AccumulatorMap<string, FieldNode>,\n patches: Array<PatchFields>,\n visitedFragmentNames: Set<string>,\n): void {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (!shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n groupedFieldSet.add(getFieldEntryKey(selection), selection);\n break;\n }\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(exeContext, selection) ||\n !doesFragmentConditionMatch(\n selection,\n runtimeTypeName,\n exeContext.schemaTypes,\n )\n ) {\n continue;\n }\n\n const defer = getDeferValues(exeContext, selection);\n\n if (defer) {\n const patchFields = new AccumulatorMap<string, FieldNode>();\n collectFieldsImpl(\n exeContext,\n runtimeTypeName,\n selection.selectionSet,\n patchFields,\n patches,\n visitedFragmentNames,\n );\n patches.push({\n label: defer.label,\n groupedFieldSet: patchFields,\n });\n } else {\n collectFieldsImpl(\n exeContext,\n runtimeTypeName,\n selection.selectionSet,\n groupedFieldSet,\n patches,\n visitedFragmentNames,\n );\n }\n break;\n }\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (!shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n\n const defer = getDeferValues(exeContext, selection);\n if (visitedFragmentNames.has(fragName) && !defer) {\n continue;\n }\n\n const fragment = exeContext.fragments[fragName];\n if (\n fragment == null ||\n !doesFragmentConditionMatch(\n fragment,\n runtimeTypeName,\n exeContext.schemaTypes,\n )\n ) {\n continue;\n }\n\n if (!defer) {\n visitedFragmentNames.add(fragName);\n }\n\n if (defer) {\n const patchFields = new AccumulatorMap<string, FieldNode>();\n collectFieldsImpl(\n exeContext,\n runtimeTypeName,\n fragment.selectionSet,\n patchFields,\n patches,\n visitedFragmentNames,\n );\n patches.push({\n label: defer.label,\n groupedFieldSet: patchFields,\n });\n } else {\n collectFieldsImpl(\n exeContext,\n runtimeTypeName,\n fragment.selectionSet,\n groupedFieldSet,\n patches,\n visitedFragmentNames,\n );\n }\n break;\n }\n }\n }\n}\n\n/**\n * Determines if a field should be included based on the @include and @skip\n * directives, where @skip has higher precedence than @include.\n */\nfunction shouldIncludeNode(\n exeContext: ExecutionContext,\n node: SelectionNode,\n): boolean {\n if (!node.directives?.length) {\n return true;\n }\n\n const skip = getDirectiveValues(exeContext, GraphQLSkipDirective, node);\n if (skip?.if === true) {\n return false;\n }\n\n const include = getDirectiveValues(exeContext, GraphQLIncludeDirective, node);\n if (include?.if === false) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Determines if a fragment is applicable to the given type.\n */\nfunction doesFragmentConditionMatch(\n fragment: FragmentDefinitionNode | InlineFragmentNode,\n typeName: string,\n // resolvers: Resolvers,\n schemaFragment: SchemaFragment,\n): boolean {\n const typeConditionNode = fragment.typeCondition;\n if (!typeConditionNode) {\n return true;\n }\n\n const conditionalTypeName = typeConditionNode.name.value;\n\n if (conditionalTypeName === typeName) {\n return true;\n }\n if (schemaFragment.isAbstractType(conditionalTypeName)) {\n return schemaFragment.isSubType(conditionalTypeName, typeName);\n }\n return false;\n}\n\n/**\n * Implements the logic to compute the key of a given field's entry\n */\nfunction getFieldEntryKey(node: FieldNode): string {\n return node.alias ? node.alias.value : node.name.value;\n}\n\n/**\n * Returns an object containing the `@defer` arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n */\nfunction getDeferValues(\n exeContext: ExecutionContext,\n node: FragmentSpreadNode | InlineFragmentNode,\n): undefined | { label: string | undefined } {\n const defer = getDirectiveValues(exeContext, GraphQLDeferDirective, node);\n\n if (!defer) {\n return;\n }\n\n if (defer.if === false) {\n return;\n }\n\n invariant(\n exeContext.operation.operation !== \"subscription\",\n \"`@defer` directive not supported on subscription operations. Disable `@defer` by setting the `if` argument to `false`.\",\n );\n\n return {\n label: typeof defer.label === \"string\" ? defer.label : undefined,\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { PromiseOrValue } from "./jsutils/PromiseOrValue";
|
|
2
2
|
import { ExecutionResult, ExecutionWithSchemaArgs } from "./types";
|
|
3
|
-
export declare function executeWithSchema({ typeDefs, resolvers, document
|
|
3
|
+
export declare function executeWithSchema({ typeDefs, resolvers, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver, fieldExecutionHooks, }: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult>;
|
|
4
4
|
//# sourceMappingURL=executeWithSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeWithSchema.d.ts","sourceRoot":"","sources":["../src/executeWithSchema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executeWithSchema.d.ts","sourceRoot":"","sources":["../src/executeWithSchema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,mBAAmB,GACpB,EAAE,uBAAuB,GAAG,cAAc,CAAC,eAAe,CAAC,CAmB3D"}
|
package/lib/executeWithSchema.js
CHANGED
|
@@ -23,10 +23,11 @@ __export(executeWithSchema_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(executeWithSchema_exports);
|
|
24
24
|
var import_graphql = require("graphql");
|
|
25
25
|
var import_index = require("./index");
|
|
26
|
+
var import_addMinimalViableSchemaToRequestDocument = require("./utilities/addMinimalViableSchemaToRequestDocument");
|
|
26
27
|
function executeWithSchema({
|
|
27
28
|
typeDefs,
|
|
28
29
|
resolvers,
|
|
29
|
-
document
|
|
30
|
+
document,
|
|
30
31
|
rootValue,
|
|
31
32
|
contextValue,
|
|
32
33
|
variableValues,
|
|
@@ -36,21 +37,14 @@ function executeWithSchema({
|
|
|
36
37
|
fieldExecutionHooks
|
|
37
38
|
}) {
|
|
38
39
|
const schema = (0, import_graphql.buildASTSchema)(typeDefs);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return type;
|
|
44
|
-
} else {
|
|
45
|
-
throw new Error("Invalid type");
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
extractedResolvers = (0, import_index.extractImplicitTypes)(typeDefs, getTypeByName);
|
|
49
|
-
const document = (0, import_index.addTypesToRequestDocument)(schema, rawDocument);
|
|
40
|
+
const schemaFragment = (0, import_addMinimalViableSchemaToRequestDocument.extractMinimalViableSchemaForRequestDocument)(
|
|
41
|
+
schema,
|
|
42
|
+
document
|
|
43
|
+
);
|
|
50
44
|
return (0, import_index.executeWithoutSchema)({
|
|
51
45
|
document,
|
|
52
46
|
resolvers,
|
|
53
|
-
|
|
47
|
+
schemaFragment,
|
|
54
48
|
rootValue,
|
|
55
49
|
contextValue,
|
|
56
50
|
variableValues,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/executeWithSchema.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"sourcesContent": ["import { buildASTSchema } from \"graphql\";\nimport { executeWithoutSchema } from \"./index\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ExecutionResult, ExecutionWithSchemaArgs } from \"./types\";\nimport { extractMinimalViableSchemaForRequestDocument } from \"./utilities/addMinimalViableSchemaToRequestDocument\";\n\nexport function executeWithSchema({\n typeDefs,\n resolvers,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n}: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult> {\n const schema = buildASTSchema(typeDefs);\n const schemaFragment = extractMinimalViableSchemaForRequestDocument(\n schema,\n document,\n );\n\n return executeWithoutSchema({\n document,\n resolvers,\n schemaFragment,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n });\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA+B;AAC/B,mBAAqC;AAGrC,qDAA6D;AAEtD,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6D;AAC3D,QAAM,aAAS,+BAAe,QAAQ;AACtC,QAAM,qBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AAEA,aAAO,mCAAqB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
// src/executeWithSchema.ts
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
executeWithoutSchema,
|
|
6
|
-
extractImplicitTypes,
|
|
7
|
-
specifiedScalars
|
|
8
|
-
} from "./index.mjs";
|
|
2
|
+
import { buildASTSchema } from "graphql";
|
|
3
|
+
import { executeWithoutSchema } from "./index.mjs";
|
|
4
|
+
import { extractMinimalViableSchemaForRequestDocument } from "./utilities/addMinimalViableSchemaToRequestDocument.mjs";
|
|
9
5
|
function executeWithSchema({
|
|
10
6
|
typeDefs,
|
|
11
7
|
resolvers,
|
|
12
|
-
document
|
|
8
|
+
document,
|
|
13
9
|
rootValue,
|
|
14
10
|
contextValue,
|
|
15
11
|
variableValues,
|
|
@@ -19,21 +15,14 @@ function executeWithSchema({
|
|
|
19
15
|
fieldExecutionHooks
|
|
20
16
|
}) {
|
|
21
17
|
const schema = buildASTSchema(typeDefs);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return type;
|
|
27
|
-
} else {
|
|
28
|
-
throw new Error("Invalid type");
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
extractedResolvers = extractImplicitTypes(typeDefs, getTypeByName);
|
|
32
|
-
const document = addTypesToRequestDocument(schema, rawDocument);
|
|
18
|
+
const schemaFragment = extractMinimalViableSchemaForRequestDocument(
|
|
19
|
+
schema,
|
|
20
|
+
document
|
|
21
|
+
);
|
|
33
22
|
return executeWithoutSchema({
|
|
34
23
|
document,
|
|
35
24
|
resolvers,
|
|
36
|
-
|
|
25
|
+
schemaFragment,
|
|
37
26
|
rootValue,
|
|
38
27
|
contextValue,
|
|
39
28
|
variableValues,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/executeWithSchema.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";AAAA,SAAS,
|
|
4
|
+
"sourcesContent": ["import { buildASTSchema } from \"graphql\";\nimport { executeWithoutSchema } from \"./index\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ExecutionResult, ExecutionWithSchemaArgs } from \"./types\";\nimport { extractMinimalViableSchemaForRequestDocument } from \"./utilities/addMinimalViableSchemaToRequestDocument\";\n\nexport function executeWithSchema({\n typeDefs,\n resolvers,\n document,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n}: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult> {\n const schema = buildASTSchema(typeDefs);\n const schemaFragment = extractMinimalViableSchemaForRequestDocument(\n schema,\n document,\n );\n\n return executeWithoutSchema({\n document,\n resolvers,\n schemaFragment,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n });\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,sBAAsB;AAC/B,SAAS,4BAA4B;AAGrC,SAAS,oDAAoD;AAEtD,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6D;AAC3D,QAAM,SAAS,eAAe,QAAQ;AACtC,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AAEA,SAAO,qBAAqB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { GraphQLError } from "graphql";
|
|
2
|
-
import {
|
|
1
|
+
import { GraphQLError, DocumentNode, FragmentDefinitionNode, OperationDefinitionNode, OperationTypeDefinitionNode } from "graphql";
|
|
2
|
+
import { FieldGroup } from "./collectFields";
|
|
3
3
|
import type { Maybe } from "./jsutils/Maybe";
|
|
4
4
|
import type { ObjMap } from "./jsutils/ObjMap";
|
|
5
5
|
import type { Path } from "./jsutils/Path";
|
|
6
6
|
import type { PromiseOrValue } from "./jsutils/PromiseOrValue";
|
|
7
|
-
import { ExecutionWithoutSchemaArgs, FunctionFieldResolver, ResolveInfo,
|
|
7
|
+
import { ExecutionWithoutSchemaArgs, FunctionFieldResolver, ResolveInfo, TypeResolver, ExecutionResult } from "./types";
|
|
8
8
|
import { ExecutionHooks } from "./hooks/types";
|
|
9
|
+
import { SchemaFragment } from "./schema/fragment";
|
|
9
10
|
/**
|
|
10
11
|
* Terminology
|
|
11
12
|
*
|
|
@@ -32,18 +33,21 @@ import { ExecutionHooks } from "./hooks/types";
|
|
|
32
33
|
* and the fragments defined in the query document
|
|
33
34
|
*/
|
|
34
35
|
export interface ExecutionContext {
|
|
35
|
-
|
|
36
|
+
schemaTypes: SchemaFragment;
|
|
36
37
|
fragments: ObjMap<FragmentDefinitionNode>;
|
|
37
38
|
rootValue: unknown;
|
|
38
39
|
contextValue: unknown;
|
|
40
|
+
buildContextValue?: (contextValue?: unknown) => unknown;
|
|
39
41
|
operation: OperationDefinitionNode;
|
|
40
42
|
variableValues: {
|
|
41
43
|
[variable: string]: unknown;
|
|
42
44
|
};
|
|
43
45
|
fieldResolver: FunctionFieldResolver<unknown, unknown>;
|
|
44
46
|
typeResolver: TypeResolver<unknown, unknown>;
|
|
47
|
+
subscribeFieldResolver: FunctionFieldResolver<unknown, unknown>;
|
|
45
48
|
errors: Array<GraphQLError>;
|
|
46
49
|
fieldExecutionHooks?: ExecutionHooks;
|
|
50
|
+
subsequentPayloads: Set<IncrementalDataRecord>;
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* Implements the "Executing requests" section of the GraphQL specification.
|
|
@@ -65,21 +69,10 @@ export declare function executeWithoutSchema(args: ExecutionWithoutSchemaArgs):
|
|
|
65
69
|
export declare function assertValidExecutionArguments(document: DocumentNode, rawVariableValues: Maybe<{
|
|
66
70
|
[variable: string]: unknown;
|
|
67
71
|
}>): void;
|
|
68
|
-
/**
|
|
69
|
-
* Constructs a ExecutionContext object from the arguments passed to
|
|
70
|
-
* execute, which we will pass throughout the other execution methods.
|
|
71
|
-
*
|
|
72
|
-
* Throws a GraphQLError if a valid execution context cannot be created.
|
|
73
|
-
*
|
|
74
|
-
* @internal
|
|
75
|
-
*/
|
|
76
|
-
export declare function buildExecutionContext(resolvers: Resolvers, document: DocumentNode, rootValue: unknown, contextValue: unknown, rawVariableValues: Maybe<{
|
|
77
|
-
[variable: string]: unknown;
|
|
78
|
-
}>, operationName: Maybe<string>, fieldResolver: Maybe<FunctionFieldResolver<unknown, unknown>>, typeResolver?: Maybe<TypeResolver<unknown, unknown>>, fieldExecutionHooks?: ExecutionHooks): Array<GraphQLError> | ExecutionContext;
|
|
79
72
|
/**
|
|
80
73
|
* @internal
|
|
81
74
|
*/
|
|
82
|
-
export declare function buildResolveInfo(exeContext: ExecutionContext, fieldName: string,
|
|
75
|
+
export declare function buildResolveInfo(exeContext: ExecutionContext, fieldName: string, fieldGroup: FieldGroup, parentTypeName: string, returnTypeName: string, path: Path): ResolveInfo;
|
|
83
76
|
/**
|
|
84
77
|
* If a resolveType function is not given, then a default resolve behavior is
|
|
85
78
|
* used which attempts two strategies:
|
|
@@ -99,4 +92,48 @@ export declare const defaultTypeResolver: TypeResolver<unknown, unknown>;
|
|
|
99
92
|
*/
|
|
100
93
|
export declare const defaultFieldResolver: FunctionFieldResolver<unknown, unknown>;
|
|
101
94
|
export declare function getOperationRootTypeName(operation: OperationDefinitionNode | OperationTypeDefinitionNode): string;
|
|
95
|
+
export type IncrementalDataRecord = DeferredFragmentRecord | StreamItemsRecord;
|
|
96
|
+
declare class DeferredFragmentRecord {
|
|
97
|
+
type: "defer";
|
|
98
|
+
errors: Array<GraphQLError>;
|
|
99
|
+
label: string | undefined;
|
|
100
|
+
path: Array<string | number>;
|
|
101
|
+
promise: Promise<void>;
|
|
102
|
+
data: ObjMap<unknown> | null;
|
|
103
|
+
parentContext: IncrementalDataRecord | undefined;
|
|
104
|
+
isCompleted: boolean;
|
|
105
|
+
_exeContext: ExecutionContext;
|
|
106
|
+
_resolve?: (arg: PromiseOrValue<ObjMap<unknown> | null>) => void;
|
|
107
|
+
constructor(opts: {
|
|
108
|
+
label: string | undefined;
|
|
109
|
+
path: Path | undefined;
|
|
110
|
+
parentContext: IncrementalDataRecord | undefined;
|
|
111
|
+
exeContext: ExecutionContext;
|
|
112
|
+
});
|
|
113
|
+
addData(data: PromiseOrValue<ObjMap<unknown> | null>): void;
|
|
114
|
+
}
|
|
115
|
+
declare class StreamItemsRecord {
|
|
116
|
+
type: "stream";
|
|
117
|
+
errors: Array<GraphQLError>;
|
|
118
|
+
label: string | undefined;
|
|
119
|
+
path: Array<string | number>;
|
|
120
|
+
items: Array<unknown> | null;
|
|
121
|
+
promise: Promise<void>;
|
|
122
|
+
parentContext: IncrementalDataRecord | undefined;
|
|
123
|
+
asyncIterator: AsyncIterator<unknown> | undefined;
|
|
124
|
+
isCompletedAsyncIterator?: boolean;
|
|
125
|
+
isCompleted: boolean;
|
|
126
|
+
_exeContext: ExecutionContext;
|
|
127
|
+
_resolve?: (arg: PromiseOrValue<Array<unknown> | null>) => void;
|
|
128
|
+
constructor(opts: {
|
|
129
|
+
label: string | undefined;
|
|
130
|
+
path: Path | undefined;
|
|
131
|
+
asyncIterator?: AsyncIterator<unknown>;
|
|
132
|
+
parentContext: IncrementalDataRecord | undefined;
|
|
133
|
+
exeContext: ExecutionContext;
|
|
134
|
+
});
|
|
135
|
+
addItems(items: PromiseOrValue<Array<unknown> | null>): void;
|
|
136
|
+
setIsCompletedAsyncIterator(): void;
|
|
137
|
+
}
|
|
138
|
+
export {};
|
|
102
139
|
//# sourceMappingURL=executeWithoutSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeWithoutSchema.d.ts","sourceRoot":"","sources":["../src/executeWithoutSchema.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"executeWithoutSchema.d.ts","sourceRoot":"","sources":["../src/executeWithoutSchema.ts"],"names":[],"mappings":"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"}
|