@graphitation/supermassive 3.3.0 → 3.4.0
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 +10 -2
- package/lib/collectFields.d.ts +8 -21
- package/lib/collectFields.d.ts.map +1 -1
- package/lib/collectFields.js +95 -97
- package/lib/collectFields.js.map +2 -2
- package/lib/collectFields.mjs +95 -97
- package/lib/collectFields.mjs.map +2 -2
- package/lib/executeWithoutSchema.d.ts +50 -6
- package/lib/executeWithoutSchema.d.ts.map +1 -1
- package/lib/executeWithoutSchema.js +517 -622
- package/lib/executeWithoutSchema.js.map +3 -3
- package/lib/executeWithoutSchema.mjs +518 -633
- package/lib/executeWithoutSchema.mjs.map +3 -3
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/types.d.ts +27 -63
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/values.d.ts +4 -5
- package/lib/values.d.ts.map +1 -1
- package/lib/values.js +8 -13
- package/lib/values.js.map +2 -2
- package/lib/values.mjs +8 -13
- package/lib/values.mjs.map +2 -2
- package/package.json +1 -1
- package/lib/IncrementalPublisher.d.ts +0 -131
- package/lib/IncrementalPublisher.d.ts.map +0 -1
- package/lib/IncrementalPublisher.js +0 -519
- package/lib/IncrementalPublisher.js.map +0 -7
- package/lib/IncrementalPublisher.mjs +0 -503
- package/lib/IncrementalPublisher.mjs.map +0 -7
- package/lib/buildFieldPlan.d.ts +0 -18
- package/lib/buildFieldPlan.d.ts.map +0 -1
- package/lib/buildFieldPlan.js +0 -120
- package/lib/buildFieldPlan.js.map +0 -7
- package/lib/buildFieldPlan.mjs +0 -101
- package/lib/buildFieldPlan.mjs.map +0 -7
- package/lib/jsutils/getBySet.d.ts +0 -2
- package/lib/jsutils/getBySet.d.ts.map +0 -1
- package/lib/jsutils/getBySet.js +0 -32
- package/lib/jsutils/getBySet.js.map +0 -7
- package/lib/jsutils/getBySet.mjs +0 -13
- package/lib/jsutils/getBySet.mjs.map +0 -7
- package/lib/jsutils/isSameSet.d.ts +0 -2
- package/lib/jsutils/isSameSet.d.ts.map +0 -1
- package/lib/jsutils/isSameSet.js +0 -34
- package/lib/jsutils/isSameSet.js.map +0 -7
- package/lib/jsutils/isSameSet.mjs +0 -15
- package/lib/jsutils/isSameSet.mjs.map +0 -7
- package/lib/jsutils/promiseWithResolvers.d.ts +0 -11
- package/lib/jsutils/promiseWithResolvers.d.ts.map +0 -1
- package/lib/jsutils/promiseWithResolvers.js +0 -32
- package/lib/jsutils/promiseWithResolvers.js.map +0 -7
- package/lib/jsutils/promiseWithResolvers.mjs +0 -13
- package/lib/jsutils/promiseWithResolvers.mjs.map +0 -7
package/lib/collectFields.mjs
CHANGED
|
@@ -12,141 +12,145 @@ import { AccumulatorMap } from "./jsutils/AccumulatorMap.mjs";
|
|
|
12
12
|
import invariant from "invariant";
|
|
13
13
|
import { isAbstractType, isSubType } from "./schema/definition.mjs";
|
|
14
14
|
function collectFields(exeContext, runtimeTypeName) {
|
|
15
|
+
const { operation } = exeContext;
|
|
15
16
|
const groupedFieldSet = new AccumulatorMap();
|
|
16
|
-
const
|
|
17
|
-
schemaFragment: exeContext.schemaFragment,
|
|
18
|
-
fragments: exeContext.fragments,
|
|
19
|
-
variableValues: exeContext.variableValues,
|
|
20
|
-
runtimeTypeName,
|
|
21
|
-
operation: exeContext.operation,
|
|
22
|
-
visitedFragmentNames: /* @__PURE__ */ new Set()
|
|
23
|
-
};
|
|
17
|
+
const patches = [];
|
|
24
18
|
collectFieldsImpl(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
exeContext,
|
|
20
|
+
runtimeTypeName,
|
|
21
|
+
operation.selectionSet,
|
|
22
|
+
groupedFieldSet,
|
|
23
|
+
patches,
|
|
24
|
+
/* @__PURE__ */ new Set()
|
|
28
25
|
);
|
|
29
|
-
return groupedFieldSet;
|
|
26
|
+
return { groupedFieldSet, patches };
|
|
30
27
|
}
|
|
31
|
-
function collectSubfields(
|
|
32
|
-
const context = {
|
|
33
|
-
schemaFragment,
|
|
34
|
-
fragments,
|
|
35
|
-
variableValues,
|
|
36
|
-
runtimeTypeName: returnTypeName,
|
|
37
|
-
operation,
|
|
38
|
-
visitedFragmentNames: /* @__PURE__ */ new Set()
|
|
39
|
-
};
|
|
28
|
+
function collectSubfields(exeContext, returnTypeName, fieldGroup) {
|
|
40
29
|
const subGroupedFieldSet = new AccumulatorMap();
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
const visitedFragmentNames = /* @__PURE__ */ new Set();
|
|
31
|
+
const subPatches = [];
|
|
32
|
+
const subFieldsAndPatches = {
|
|
33
|
+
groupedFieldSet: subGroupedFieldSet,
|
|
34
|
+
patches: subPatches
|
|
35
|
+
};
|
|
36
|
+
for (const node of fieldGroup) {
|
|
43
37
|
if (node.selectionSet) {
|
|
44
38
|
collectFieldsImpl(
|
|
45
|
-
|
|
39
|
+
exeContext,
|
|
40
|
+
returnTypeName,
|
|
46
41
|
node.selectionSet,
|
|
47
42
|
subGroupedFieldSet,
|
|
48
|
-
|
|
43
|
+
subPatches,
|
|
44
|
+
visitedFragmentNames
|
|
49
45
|
);
|
|
50
46
|
}
|
|
51
47
|
}
|
|
52
|
-
return
|
|
48
|
+
return subFieldsAndPatches;
|
|
53
49
|
}
|
|
54
|
-
function collectFieldsImpl(
|
|
55
|
-
const {
|
|
56
|
-
schemaFragment,
|
|
57
|
-
fragments,
|
|
58
|
-
variableValues,
|
|
59
|
-
runtimeTypeName,
|
|
60
|
-
operation,
|
|
61
|
-
visitedFragmentNames
|
|
62
|
-
} = context;
|
|
50
|
+
function collectFieldsImpl(exeContext, runtimeTypeName, selectionSet, groupedFieldSet, patches, visitedFragmentNames) {
|
|
63
51
|
for (const selection of selectionSet.selections) {
|
|
64
52
|
switch (selection.kind) {
|
|
65
53
|
case Kind.FIELD: {
|
|
66
|
-
if (!shouldIncludeNode(
|
|
54
|
+
if (!shouldIncludeNode(exeContext, selection)) {
|
|
67
55
|
continue;
|
|
68
56
|
}
|
|
69
|
-
groupedFieldSet.add(getFieldEntryKey(selection),
|
|
70
|
-
node: selection,
|
|
71
|
-
deferUsage: deferUsage != null ? deferUsage : parentDeferUsage
|
|
72
|
-
});
|
|
57
|
+
groupedFieldSet.add(getFieldEntryKey(selection), selection);
|
|
73
58
|
break;
|
|
74
59
|
}
|
|
75
60
|
case Kind.INLINE_FRAGMENT: {
|
|
76
|
-
if (!shouldIncludeNode(
|
|
61
|
+
if (!shouldIncludeNode(exeContext, selection) || !doesFragmentConditionMatch(
|
|
77
62
|
selection,
|
|
78
63
|
runtimeTypeName,
|
|
79
|
-
schemaFragment
|
|
64
|
+
exeContext.schemaFragment
|
|
80
65
|
)) {
|
|
81
66
|
continue;
|
|
82
67
|
}
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
68
|
+
const defer = getDeferValues(exeContext, selection);
|
|
69
|
+
if (defer) {
|
|
70
|
+
const patchFields = new AccumulatorMap();
|
|
71
|
+
collectFieldsImpl(
|
|
72
|
+
exeContext,
|
|
73
|
+
runtimeTypeName,
|
|
74
|
+
selection.selectionSet,
|
|
75
|
+
patchFields,
|
|
76
|
+
patches,
|
|
77
|
+
visitedFragmentNames
|
|
78
|
+
);
|
|
79
|
+
patches.push({
|
|
80
|
+
label: defer.label,
|
|
81
|
+
groupedFieldSet: patchFields
|
|
82
|
+
});
|
|
83
|
+
} else {
|
|
84
|
+
collectFieldsImpl(
|
|
85
|
+
exeContext,
|
|
86
|
+
runtimeTypeName,
|
|
87
|
+
selection.selectionSet,
|
|
88
|
+
groupedFieldSet,
|
|
89
|
+
patches,
|
|
90
|
+
visitedFragmentNames
|
|
91
|
+
);
|
|
92
|
+
}
|
|
97
93
|
break;
|
|
98
94
|
}
|
|
99
95
|
case Kind.FRAGMENT_SPREAD: {
|
|
100
96
|
const fragName = selection.name.value;
|
|
101
|
-
|
|
102
|
-
schemaFragment,
|
|
103
|
-
operation,
|
|
104
|
-
variableValues,
|
|
105
|
-
selection,
|
|
106
|
-
parentDeferUsage
|
|
107
|
-
);
|
|
108
|
-
if (!newDeferUsage && (visitedFragmentNames.has(fragName) || !shouldIncludeNode(schemaFragment, variableValues, selection))) {
|
|
97
|
+
if (!shouldIncludeNode(exeContext, selection)) {
|
|
109
98
|
continue;
|
|
110
99
|
}
|
|
111
|
-
const
|
|
112
|
-
if (
|
|
100
|
+
const defer = getDeferValues(exeContext, selection);
|
|
101
|
+
if (visitedFragmentNames.has(fragName) && !defer) {
|
|
113
102
|
continue;
|
|
114
103
|
}
|
|
115
|
-
|
|
104
|
+
const fragment = exeContext.fragments[fragName];
|
|
105
|
+
if (fragment == null || !doesFragmentConditionMatch(
|
|
106
|
+
fragment,
|
|
107
|
+
runtimeTypeName,
|
|
108
|
+
exeContext.schemaFragment
|
|
109
|
+
)) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (!defer) {
|
|
116
113
|
visitedFragmentNames.add(fragName);
|
|
117
114
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
115
|
+
if (defer) {
|
|
116
|
+
const patchFields = new AccumulatorMap();
|
|
117
|
+
collectFieldsImpl(
|
|
118
|
+
exeContext,
|
|
119
|
+
runtimeTypeName,
|
|
120
|
+
fragment.selectionSet,
|
|
121
|
+
patchFields,
|
|
122
|
+
patches,
|
|
123
|
+
visitedFragmentNames
|
|
124
|
+
);
|
|
125
|
+
patches.push({
|
|
126
|
+
label: defer.label,
|
|
127
|
+
groupedFieldSet: patchFields
|
|
128
|
+
});
|
|
129
|
+
} else {
|
|
130
|
+
collectFieldsImpl(
|
|
131
|
+
exeContext,
|
|
132
|
+
runtimeTypeName,
|
|
133
|
+
fragment.selectionSet,
|
|
134
|
+
groupedFieldSet,
|
|
135
|
+
patches,
|
|
136
|
+
visitedFragmentNames
|
|
137
|
+
);
|
|
138
|
+
}
|
|
125
139
|
break;
|
|
126
140
|
}
|
|
127
141
|
}
|
|
128
142
|
}
|
|
129
143
|
}
|
|
130
|
-
function shouldIncludeNode(
|
|
144
|
+
function shouldIncludeNode(exeContext, node) {
|
|
131
145
|
var _a;
|
|
132
146
|
if (!((_a = node.directives) == null ? void 0 : _a.length)) {
|
|
133
147
|
return true;
|
|
134
148
|
}
|
|
135
|
-
const skip = getDirectiveValues(
|
|
136
|
-
schemaFragment,
|
|
137
|
-
GraphQLSkipDirective,
|
|
138
|
-
node,
|
|
139
|
-
variableValues
|
|
140
|
-
);
|
|
149
|
+
const skip = getDirectiveValues(exeContext, GraphQLSkipDirective, node);
|
|
141
150
|
if ((skip == null ? void 0 : skip.if) === true) {
|
|
142
151
|
return false;
|
|
143
152
|
}
|
|
144
|
-
const include = getDirectiveValues(
|
|
145
|
-
schemaFragment,
|
|
146
|
-
GraphQLIncludeDirective,
|
|
147
|
-
node,
|
|
148
|
-
variableValues
|
|
149
|
-
);
|
|
153
|
+
const include = getDirectiveValues(exeContext, GraphQLIncludeDirective, node);
|
|
150
154
|
if ((include == null ? void 0 : include.if) === false) {
|
|
151
155
|
return false;
|
|
152
156
|
}
|
|
@@ -169,13 +173,8 @@ function doesFragmentConditionMatch(fragment, typeName, { definitions }) {
|
|
|
169
173
|
function getFieldEntryKey(node) {
|
|
170
174
|
return node.alias ? node.alias.value : node.name.value;
|
|
171
175
|
}
|
|
172
|
-
function
|
|
173
|
-
const defer = getDirectiveValues(
|
|
174
|
-
schemaFragment,
|
|
175
|
-
GraphQLDeferDirective,
|
|
176
|
-
node,
|
|
177
|
-
variableValues
|
|
178
|
-
);
|
|
176
|
+
function getDeferValues(exeContext, node) {
|
|
177
|
+
const defer = getDirectiveValues(exeContext, GraphQLDeferDirective, node);
|
|
179
178
|
if (!defer) {
|
|
180
179
|
return;
|
|
181
180
|
}
|
|
@@ -183,12 +182,11 @@ function getDeferUsage(schemaFragment, operation, variableValues, node, parentDe
|
|
|
183
182
|
return;
|
|
184
183
|
}
|
|
185
184
|
invariant(
|
|
186
|
-
operation.operation !== "subscription",
|
|
185
|
+
exeContext.operation.operation !== "subscription",
|
|
187
186
|
"`@defer` directive not supported on subscription operations. Disable `@defer` by setting the `if` argument to `false`."
|
|
188
187
|
);
|
|
189
188
|
return {
|
|
190
|
-
label: typeof defer.label === "string" ? defer.label : void 0
|
|
191
|
-
parentDeferUsage
|
|
189
|
+
label: typeof defer.label === "string" ? defer.label : void 0
|
|
192
190
|
};
|
|
193
191
|
}
|
|
194
192
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/collectFields.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n Kind,\n FieldNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n SelectionNode,\n SelectionSetNode,\n
|
|
5
|
-
"mappings": ";AAAA;AAAA,EACE;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 { isAbstractType, isSubType } from \"./schema/definition\";\nimport { SchemaFragment } from \"./types\";\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.schemaFragment,\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.schemaFragment,\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 { definitions }: 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 (isAbstractType(definitions, conditionalTypeName)) {\n return isSubType(definitions, 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,12 +1,11 @@
|
|
|
1
|
-
import { DocumentNode, FragmentDefinitionNode, OperationDefinitionNode, OperationTypeDefinitionNode } from "graphql";
|
|
1
|
+
import { GraphQLError, DocumentNode, FragmentDefinitionNode, OperationDefinitionNode, OperationTypeDefinitionNode } from "graphql";
|
|
2
|
+
import { FieldGroup } from "./collectFields";
|
|
2
3
|
import type { Maybe } from "./jsutils/Maybe";
|
|
3
4
|
import type { ObjMap } from "./jsutils/ObjMap";
|
|
4
5
|
import type { Path } from "./jsutils/Path";
|
|
5
6
|
import type { PromiseOrValue } from "./jsutils/PromiseOrValue";
|
|
6
|
-
import type { ExecutionWithoutSchemaArgs, FunctionFieldResolver, ResolveInfo, TypeResolver, ExecutionResult, TotalExecutionResult, SchemaFragment, SchemaFragmentLoader
|
|
7
|
+
import type { ExecutionWithoutSchemaArgs, FunctionFieldResolver, ResolveInfo, TypeResolver, ExecutionResult, TotalExecutionResult, IncrementalExecutionResult, SchemaFragment, SchemaFragmentLoader } from "./types";
|
|
7
8
|
import { ExecutionHooks } from "./hooks/types";
|
|
8
|
-
import { FieldGroup } from "./buildFieldPlan";
|
|
9
|
-
import { IncrementalPublisher } from "./IncrementalPublisher";
|
|
10
9
|
/**
|
|
11
10
|
* Terminology
|
|
12
11
|
*
|
|
@@ -46,8 +45,9 @@ export interface ExecutionContext {
|
|
|
46
45
|
fieldResolver: FunctionFieldResolver<unknown, unknown>;
|
|
47
46
|
typeResolver: TypeResolver<unknown, unknown>;
|
|
48
47
|
subscribeFieldResolver: FunctionFieldResolver<unknown, unknown>;
|
|
48
|
+
errors: Array<GraphQLError>;
|
|
49
49
|
fieldExecutionHooks?: ExecutionHooks;
|
|
50
|
-
|
|
50
|
+
subsequentPayloads: Set<IncrementalDataRecord>;
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
53
|
* Implements the "Executing requests" section of the GraphQL specification.
|
|
@@ -92,6 +92,50 @@ export declare const defaultTypeResolver: TypeResolver<unknown, unknown>;
|
|
|
92
92
|
*/
|
|
93
93
|
export declare const defaultFieldResolver: FunctionFieldResolver<unknown, unknown>;
|
|
94
94
|
export declare function getOperationRootTypeName(operation: OperationDefinitionNode | OperationTypeDefinitionNode): string;
|
|
95
|
-
export
|
|
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 declare function isIncrementalExecutionResult<TData = ObjMap<unknown>, TExtensions = ObjMap<unknown>>(result: ExecutionResult<TData, TExtensions>): result is IncrementalExecutionResult<TData, TExtensions>;
|
|
96
139
|
export declare function isTotalExecutionResult<TData = ObjMap<unknown>, TExtensions = ObjMap<unknown>>(result: ExecutionResult<TData, TExtensions>): result is TotalExecutionResult<TData, TExtensions>;
|
|
140
|
+
export {};
|
|
97
141
|
//# 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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"}
|