@graphitation/supermassive 3.17.2-canary.0 → 3.18.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 +17 -1
- package/README.md +25 -0
- package/lib/executeWithSchema.d.ts +1 -1
- package/lib/executeWithSchema.d.ts.map +1 -1
- package/lib/executeWithSchema.js +8 -2
- package/lib/executeWithSchema.js.map +2 -2
- package/lib/executeWithSchema.mjs +8 -2
- package/lib/executeWithSchema.mjs.map +2 -2
- package/lib/executeWithoutSchema.d.ts +4 -0
- package/lib/executeWithoutSchema.d.ts.map +1 -1
- package/lib/executeWithoutSchema.js +153 -22
- package/lib/executeWithoutSchema.js.map +2 -2
- package/lib/executeWithoutSchema.mjs +153 -22
- package/lib/executeWithoutSchema.mjs.map +2 -2
- package/lib/jsutils/getObjectAtPath.d.ts +8 -0
- package/lib/jsutils/getObjectAtPath.d.ts.map +1 -0
- package/lib/jsutils/getObjectAtPath.js +34 -0
- package/lib/jsutils/getObjectAtPath.js.map +7 -0
- package/lib/jsutils/getObjectAtPath.mjs +15 -0
- package/lib/jsutils/getObjectAtPath.mjs.map +7 -0
- package/lib/types.d.ts +3 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
# Change Log - @graphitation/supermassive
|
|
2
2
|
|
|
3
|
-
<!-- This log was last generated on
|
|
3
|
+
<!-- This log was last generated on Thu, 16 Jul 2026 09:12:12 GMT and should not be manually modified. -->
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 3.18.0
|
|
8
|
+
|
|
9
|
+
Thu, 16 Jul 2026 09:12:12 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- early execution and merge (pavelglac@microsoft.com)
|
|
14
|
+
|
|
15
|
+
## 3.17.1
|
|
16
|
+
|
|
17
|
+
Tue, 14 Jul 2026 09:11:43 GMT
|
|
18
|
+
|
|
19
|
+
### Patches
|
|
20
|
+
|
|
21
|
+
- yarn upgrade (pavelglac@gmail.com)
|
|
22
|
+
|
|
7
23
|
## 3.17.0
|
|
8
24
|
|
|
9
25
|
Wed, 15 Apr 2026 15:45:05 GMT
|
package/README.md
CHANGED
|
@@ -63,6 +63,31 @@ However, APIs and response format _will_ change, expect breaking changes.
|
|
|
63
63
|
> Note: see [this discussion](https://github.com/graphql/defer-stream-wg) of the new response format in the
|
|
64
64
|
> defer and stream working group
|
|
65
65
|
|
|
66
|
+
#### Incremental delivery flags
|
|
67
|
+
|
|
68
|
+
The following optional execution arguments tune how deferred/streamed payloads are executed and delivered.
|
|
69
|
+
|
|
70
|
+
- **`enableEarlyExecution`** (`boolean`, default `false`) — When enabled, deferred fragments (`@defer`
|
|
71
|
+
patches) start executing immediately alongside the main selection set, instead of only after the initial
|
|
72
|
+
result has been resolved. This can reduce the overall latency of incremental payloads at the cost of doing
|
|
73
|
+
more work up front.
|
|
74
|
+
|
|
75
|
+
- **`enableDeferredMerge`** (`boolean`, default `false`) — When enabled, deferred fragments that have already
|
|
76
|
+
completed by the time the response is built are merged directly into their parent result instead of being
|
|
77
|
+
emitted as separate incremental payloads. This reduces the number of payloads a client has to process and
|
|
78
|
+
re-normalize.
|
|
79
|
+
|
|
80
|
+
- **`incrementalPayloadBatchingTimeoutMs`** (`number`, optional) — Sets a time window (in milliseconds) used to
|
|
81
|
+
batch incremental payloads together before they are delivered:
|
|
82
|
+
- In combination with `enableDeferredMerge`, execution waits up to this many milliseconds for pending
|
|
83
|
+
deferred fragments so they can be merged into the initial result rather than streamed separately.
|
|
84
|
+
- For the subsequent payload stream, multiple incremental results that complete within the window are
|
|
85
|
+
grouped into a single delivery.
|
|
86
|
+
|
|
87
|
+
A value of `0` (or a non-finite value) disables the wait. Note that the merge-into-initial-result behavior
|
|
88
|
+
requires `enableDeferredMerge`; without it the timeout only affects batching of the subsequent payload
|
|
89
|
+
stream.
|
|
90
|
+
|
|
66
91
|
### Possible future - pre-normalized executor
|
|
67
92
|
|
|
68
93
|
In a scenario where executor is running close to the client (sometimes even in same process or at least in same browser), it might be worth exploring removing some of the requirements imposed by the usual GraphQL transport - for example serialization. Not only GraphQL executors do the JSON serialization, but also they return the data that is optimized for transport and that matches the query tree. This means clients need to perform often expensive normazilation. As traffic and message size might be less important in same process / same browser scenarios, it might be worthwhile exploring return pre-normalized data from supermassive. This offers massive speedups for some clients like Apollo ([see benchmarks](https://github.com/vladar/graphql-normalized)).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { PromiseOrValue } from "./jsutils/PromiseOrValue";
|
|
2
2
|
import { ExecutionResult, ExecutionWithSchemaArgs } from "./types";
|
|
3
|
-
export declare function executeWithSchema({ document, definitions, resolvers, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver, fieldExecutionHooks, enablePerEventContext, }: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult>;
|
|
3
|
+
export declare function executeWithSchema({ document, definitions, resolvers, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver, fieldExecutionHooks, enablePerEventContext, enableEarlyExecution, enableDeferredMerge, incrementalPayloadBatchingTimeoutMs, }: 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":"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,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,
|
|
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,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,mCAAmC,GACpC,EAAE,uBAAuB,GAAG,cAAc,CAAC,eAAe,CAAC,CAwB3D"}
|
package/lib/executeWithSchema.js
CHANGED
|
@@ -35,7 +35,10 @@ function executeWithSchema({
|
|
|
35
35
|
fieldResolver,
|
|
36
36
|
typeResolver,
|
|
37
37
|
fieldExecutionHooks,
|
|
38
|
-
enablePerEventContext
|
|
38
|
+
enablePerEventContext,
|
|
39
|
+
enableEarlyExecution,
|
|
40
|
+
enableDeferredMerge,
|
|
41
|
+
incrementalPayloadBatchingTimeoutMs
|
|
39
42
|
}) {
|
|
40
43
|
const extracted = (0, import_extractMinimalViableSchemaForRequestDocument.extractMinimalViableSchemaForRequestDocument)(
|
|
41
44
|
(0, import_graphql.buildASTSchema)(definitions),
|
|
@@ -55,6 +58,9 @@ function executeWithSchema({
|
|
|
55
58
|
fieldResolver,
|
|
56
59
|
typeResolver,
|
|
57
60
|
fieldExecutionHooks,
|
|
58
|
-
enablePerEventContext
|
|
61
|
+
enablePerEventContext,
|
|
62
|
+
enableEarlyExecution,
|
|
63
|
+
enableDeferredMerge,
|
|
64
|
+
incrementalPayloadBatchingTimeoutMs
|
|
59
65
|
});
|
|
60
66
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/executeWithSchema.ts"],
|
|
4
|
-
"sourcesContent": ["import { buildASTSchema } from \"graphql\";\nimport { executeWithoutSchema } from \"./index\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ExecutionResult, ExecutionWithSchemaArgs } from \"./types\";\nimport { extractMinimalViableSchemaForRequestDocument } from \"./utilities/extractMinimalViableSchemaForRequestDocument\";\n\nexport function executeWithSchema({\n document,\n definitions,\n resolvers,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\n}: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult> {\n const extracted = extractMinimalViableSchemaForRequestDocument(\n buildASTSchema(definitions),\n document,\n );\n return executeWithoutSchema({\n document,\n schemaFragment: {\n schemaId: \"executeWithSchema\",\n definitions: extracted.definitions,\n resolvers,\n },\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\n });\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA+B;AAC/B,mBAAqC;AAGrC,0DAA6D;AAEtD,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6D;AAC3D,QAAM,gBAAY;AAAA,QAChB,+BAAe,WAAW;AAAA,IAC1B;AAAA,EACF;AACA,aAAO,mCAAqB;AAAA,IAC1B;AAAA,IACA,gBAAgB;AAAA,MACd,UAAU;AAAA,MACV,aAAa,UAAU;AAAA,MACvB;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;",
|
|
4
|
+
"sourcesContent": ["import { buildASTSchema } from \"graphql\";\nimport { executeWithoutSchema } from \"./index\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ExecutionResult, ExecutionWithSchemaArgs } from \"./types\";\nimport { extractMinimalViableSchemaForRequestDocument } from \"./utilities/extractMinimalViableSchemaForRequestDocument\";\n\nexport function executeWithSchema({\n document,\n definitions,\n resolvers,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\n enableEarlyExecution,\n enableDeferredMerge,\n incrementalPayloadBatchingTimeoutMs,\n}: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult> {\n const extracted = extractMinimalViableSchemaForRequestDocument(\n buildASTSchema(definitions),\n document,\n );\n return executeWithoutSchema({\n document,\n schemaFragment: {\n schemaId: \"executeWithSchema\",\n definitions: extracted.definitions,\n resolvers,\n },\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\n enableEarlyExecution,\n enableDeferredMerge,\n incrementalPayloadBatchingTimeoutMs,\n });\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA+B;AAC/B,mBAAqC;AAGrC,0DAA6D;AAEtD,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6D;AAC3D,QAAM,gBAAY;AAAA,QAChB,+BAAe,WAAW;AAAA,IAC1B;AAAA,EACF;AACA,aAAO,mCAAqB;AAAA,IAC1B;AAAA,IACA,gBAAgB;AAAA,MACd,UAAU;AAAA,MACV,aAAa,UAAU;AAAA,MACvB;AAAA,IACF;AAAA,IACA;AAAA,IACA;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
|
}
|
|
@@ -13,7 +13,10 @@ function executeWithSchema({
|
|
|
13
13
|
fieldResolver,
|
|
14
14
|
typeResolver,
|
|
15
15
|
fieldExecutionHooks,
|
|
16
|
-
enablePerEventContext
|
|
16
|
+
enablePerEventContext,
|
|
17
|
+
enableEarlyExecution,
|
|
18
|
+
enableDeferredMerge,
|
|
19
|
+
incrementalPayloadBatchingTimeoutMs
|
|
17
20
|
}) {
|
|
18
21
|
const extracted = extractMinimalViableSchemaForRequestDocument(
|
|
19
22
|
buildASTSchema(definitions),
|
|
@@ -33,7 +36,10 @@ function executeWithSchema({
|
|
|
33
36
|
fieldResolver,
|
|
34
37
|
typeResolver,
|
|
35
38
|
fieldExecutionHooks,
|
|
36
|
-
enablePerEventContext
|
|
39
|
+
enablePerEventContext,
|
|
40
|
+
enableEarlyExecution,
|
|
41
|
+
enableDeferredMerge,
|
|
42
|
+
incrementalPayloadBatchingTimeoutMs
|
|
37
43
|
});
|
|
38
44
|
}
|
|
39
45
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/executeWithSchema.ts"],
|
|
4
|
-
"sourcesContent": ["import { buildASTSchema } from \"graphql\";\nimport { executeWithoutSchema } from \"./index\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ExecutionResult, ExecutionWithSchemaArgs } from \"./types\";\nimport { extractMinimalViableSchemaForRequestDocument } from \"./utilities/extractMinimalViableSchemaForRequestDocument\";\n\nexport function executeWithSchema({\n document,\n definitions,\n resolvers,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\n}: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult> {\n const extracted = extractMinimalViableSchemaForRequestDocument(\n buildASTSchema(definitions),\n document,\n );\n return executeWithoutSchema({\n document,\n schemaFragment: {\n schemaId: \"executeWithSchema\",\n definitions: extracted.definitions,\n resolvers,\n },\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\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;AAAA,EACA;AACF,GAA6D;AAC3D,QAAM,YAAY;AAAA,IAChB,eAAe,WAAW;AAAA,IAC1B;AAAA,EACF;AACA,SAAO,qBAAqB;AAAA,IAC1B;AAAA,IACA,gBAAgB;AAAA,MACd,UAAU;AAAA,MACV,aAAa,UAAU;AAAA,MACvB;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;",
|
|
4
|
+
"sourcesContent": ["import { buildASTSchema } from \"graphql\";\nimport { executeWithoutSchema } from \"./index\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ExecutionResult, ExecutionWithSchemaArgs } from \"./types\";\nimport { extractMinimalViableSchemaForRequestDocument } from \"./utilities/extractMinimalViableSchemaForRequestDocument\";\n\nexport function executeWithSchema({\n document,\n definitions,\n resolvers,\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\n enableEarlyExecution,\n enableDeferredMerge,\n incrementalPayloadBatchingTimeoutMs,\n}: ExecutionWithSchemaArgs): PromiseOrValue<ExecutionResult> {\n const extracted = extractMinimalViableSchemaForRequestDocument(\n buildASTSchema(definitions),\n document,\n );\n return executeWithoutSchema({\n document,\n schemaFragment: {\n schemaId: \"executeWithSchema\",\n definitions: extracted.definitions,\n resolvers,\n },\n rootValue,\n contextValue,\n variableValues,\n operationName,\n fieldResolver,\n typeResolver,\n fieldExecutionHooks,\n enablePerEventContext,\n enableEarlyExecution,\n enableDeferredMerge,\n incrementalPayloadBatchingTimeoutMs,\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;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6D;AAC3D,QAAM,YAAY;AAAA,IAChB,eAAe,WAAW;AAAA,IAC1B;AAAA,EACF;AACA,SAAO,qBAAqB;AAAA,IAC1B;AAAA,IACA,gBAAgB;AAAA,MACd,UAAU;AAAA,MACV,aAAa,UAAU;AAAA,MACvB;AAAA,IACF;AAAA,IACA;AAAA,IACA;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
|
}
|
|
@@ -49,6 +49,9 @@ export interface ExecutionContext {
|
|
|
49
49
|
fieldExecutionHooks?: ExecutionHooks;
|
|
50
50
|
subsequentPayloads: Set<IncrementalDataRecord>;
|
|
51
51
|
enablePerEventContext: boolean;
|
|
52
|
+
enableEarlyExecution: boolean;
|
|
53
|
+
enableDeferredMerge: boolean;
|
|
54
|
+
incrementalPayloadBatchingTimeoutMs?: number;
|
|
52
55
|
}
|
|
53
56
|
/**
|
|
54
57
|
* Implements the "Executing requests" section of the GraphQL specification.
|
|
@@ -111,6 +114,7 @@ declare class DeferredFragmentRecord {
|
|
|
111
114
|
parentContext: IncrementalDataRecord | undefined;
|
|
112
115
|
exeContext: ExecutionContext;
|
|
113
116
|
});
|
|
117
|
+
private complete;
|
|
114
118
|
addData(data: PromiseOrValue<ObjMap<unknown> | null>): void;
|
|
115
119
|
}
|
|
116
120
|
declare class StreamItemsRecord {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeWithoutSchema.d.ts","sourceRoot":"","sources":["../src/executeWithoutSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,UAAU,
|
|
1
|
+
{"version":3,"file":"executeWithoutSchema.d.ts","sourceRoot":"","sources":["../src/executeWithoutSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,7 @@ module.exports = __toCommonJS(executeWithoutSchema_exports);
|
|
|
41
41
|
var import_graphql = require("graphql");
|
|
42
42
|
var import_collectFields = require("./collectFields");
|
|
43
43
|
var import_devAssert = require("./jsutils/devAssert");
|
|
44
|
+
var import_getObjectAtPath = require("./jsutils/getObjectAtPath");
|
|
44
45
|
var import_inspect = require("./jsutils/inspect");
|
|
45
46
|
var import_invariant = require("./jsutils/invariant");
|
|
46
47
|
var import_isIterableObject = require("./jsutils/isIterableObject");
|
|
@@ -91,7 +92,10 @@ function buildExecutionContext(args) {
|
|
|
91
92
|
typeResolver,
|
|
92
93
|
subscribeFieldResolver,
|
|
93
94
|
fieldExecutionHooks,
|
|
94
|
-
enablePerEventContext
|
|
95
|
+
enablePerEventContext,
|
|
96
|
+
enableEarlyExecution,
|
|
97
|
+
enableDeferredMerge,
|
|
98
|
+
incrementalPayloadBatchingTimeoutMs
|
|
95
99
|
} = args;
|
|
96
100
|
assertValidExecutionArguments(document, variableValues);
|
|
97
101
|
let operation;
|
|
@@ -149,7 +153,10 @@ function buildExecutionContext(args) {
|
|
|
149
153
|
errors: [],
|
|
150
154
|
fieldExecutionHooks,
|
|
151
155
|
subsequentPayloads: /* @__PURE__ */ new Set(),
|
|
152
|
-
enablePerEventContext: enablePerEventContext != null ? enablePerEventContext : true
|
|
156
|
+
enablePerEventContext: enablePerEventContext != null ? enablePerEventContext : true,
|
|
157
|
+
enableEarlyExecution: enableEarlyExecution != null ? enableEarlyExecution : false,
|
|
158
|
+
enableDeferredMerge: enableDeferredMerge != null ? enableDeferredMerge : false,
|
|
159
|
+
incrementalPayloadBatchingTimeoutMs
|
|
153
160
|
};
|
|
154
161
|
}
|
|
155
162
|
function buildPerEventExecutionContext(exeContext, payload) {
|
|
@@ -198,7 +205,8 @@ function executeOperation(exeContext) {
|
|
|
198
205
|
rootValue,
|
|
199
206
|
path,
|
|
200
207
|
groupedFieldSet,
|
|
201
|
-
void 0
|
|
208
|
+
void 0,
|
|
209
|
+
exeContext.enableEarlyExecution ? patches : void 0
|
|
202
210
|
);
|
|
203
211
|
result = buildResponse(exeContext, result);
|
|
204
212
|
break;
|
|
@@ -208,7 +216,8 @@ function executeOperation(exeContext) {
|
|
|
208
216
|
rootTypeName,
|
|
209
217
|
rootValue,
|
|
210
218
|
path,
|
|
211
|
-
groupedFieldSet
|
|
219
|
+
groupedFieldSet,
|
|
220
|
+
exeContext.enableEarlyExecution ? patches : void 0
|
|
212
221
|
);
|
|
213
222
|
result = buildResponse(exeContext, result);
|
|
214
223
|
break;
|
|
@@ -229,16 +238,18 @@ function executeOperation(exeContext) {
|
|
|
229
238
|
`Operation "${operation.operation}" is not a part of GraphQL spec`
|
|
230
239
|
);
|
|
231
240
|
}
|
|
232
|
-
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
241
|
+
if (!exeContext.enableEarlyExecution) {
|
|
242
|
+
for (const patch of patches) {
|
|
243
|
+
const { label, groupedFieldSet: patchGroupedFieldSet } = patch;
|
|
244
|
+
executeDeferredFragment(
|
|
245
|
+
exeContext,
|
|
246
|
+
rootTypeName,
|
|
247
|
+
rootValue,
|
|
248
|
+
patchGroupedFieldSet,
|
|
249
|
+
label,
|
|
250
|
+
path
|
|
251
|
+
);
|
|
252
|
+
}
|
|
242
253
|
}
|
|
243
254
|
return result;
|
|
244
255
|
} catch (error) {
|
|
@@ -246,7 +257,7 @@ function executeOperation(exeContext) {
|
|
|
246
257
|
return buildResponse(exeContext, null);
|
|
247
258
|
}
|
|
248
259
|
}
|
|
249
|
-
function buildResponse(exeContext, data) {
|
|
260
|
+
function buildResponse(exeContext, data, deferredMergeAwaited = false) {
|
|
250
261
|
var _a, _b;
|
|
251
262
|
if ((0, import_isPromise.isPromise)(data)) {
|
|
252
263
|
return data.then(
|
|
@@ -259,6 +270,16 @@ function buildResponse(exeContext, data) {
|
|
|
259
270
|
}
|
|
260
271
|
const hooks = exeContext.fieldExecutionHooks;
|
|
261
272
|
try {
|
|
273
|
+
if (exeContext.enableDeferredMerge && data !== null) {
|
|
274
|
+
const pendingDeferredFragments = includeCompletedDeferredFragmentsInResult(exeContext, data);
|
|
275
|
+
const batchTimeout = exeContext.incrementalPayloadBatchingTimeoutMs;
|
|
276
|
+
if (typeof batchTimeout === "number" && !deferredMergeAwaited && pendingDeferredFragments.length > 0) {
|
|
277
|
+
return raceIncrementalPayloadBatch(
|
|
278
|
+
pendingDeferredFragments,
|
|
279
|
+
batchTimeout
|
|
280
|
+
).then(() => buildResponse(exeContext, data, true));
|
|
281
|
+
}
|
|
282
|
+
}
|
|
262
283
|
const initialResult = exeContext.errors.length === 0 ? { data } : { errors: exeContext.errors, data };
|
|
263
284
|
if (exeContext.subsequentPayloads.size > 0) {
|
|
264
285
|
return {
|
|
@@ -288,7 +309,17 @@ function buildResponse(exeContext, data) {
|
|
|
288
309
|
return buildResponse(exeContext, null);
|
|
289
310
|
}
|
|
290
311
|
}
|
|
291
|
-
function executeFieldsSerially(exeContext, parentTypeName, sourceValue, path, groupedFieldSet) {
|
|
312
|
+
function executeFieldsSerially(exeContext, parentTypeName, sourceValue, path, groupedFieldSet, patches) {
|
|
313
|
+
if (exeContext.enableEarlyExecution) {
|
|
314
|
+
startExecutingPatches(
|
|
315
|
+
exeContext,
|
|
316
|
+
parentTypeName,
|
|
317
|
+
sourceValue,
|
|
318
|
+
path,
|
|
319
|
+
patches,
|
|
320
|
+
void 0
|
|
321
|
+
);
|
|
322
|
+
}
|
|
292
323
|
return (0, import_promiseReduce.promiseReduce)(
|
|
293
324
|
groupedFieldSet,
|
|
294
325
|
(results, [responseName, fieldGroup]) => {
|
|
@@ -319,9 +350,19 @@ function executeFieldsSerially(exeContext, parentTypeName, sourceValue, path, gr
|
|
|
319
350
|
/* @__PURE__ */ Object.create(null)
|
|
320
351
|
);
|
|
321
352
|
}
|
|
322
|
-
function executeFields(exeContext, parentTypeName, sourceValue, path, groupedFieldSet, incrementalDataRecord) {
|
|
353
|
+
function executeFields(exeContext, parentTypeName, sourceValue, path, groupedFieldSet, incrementalDataRecord, patches) {
|
|
323
354
|
const results = /* @__PURE__ */ Object.create(null);
|
|
324
355
|
let containsPromise = false;
|
|
356
|
+
if (exeContext.enableEarlyExecution) {
|
|
357
|
+
startExecutingPatches(
|
|
358
|
+
exeContext,
|
|
359
|
+
parentTypeName,
|
|
360
|
+
sourceValue,
|
|
361
|
+
path,
|
|
362
|
+
patches,
|
|
363
|
+
incrementalDataRecord
|
|
364
|
+
);
|
|
365
|
+
}
|
|
325
366
|
try {
|
|
326
367
|
for (const [responseName, fieldGroup] of groupedFieldSet) {
|
|
327
368
|
const fieldPath = (0, import_Path.addPath)(path, responseName, parentTypeName);
|
|
@@ -353,6 +394,46 @@ function executeFields(exeContext, parentTypeName, sourceValue, path, groupedFie
|
|
|
353
394
|
}
|
|
354
395
|
return (0, import_promiseForObject.promiseForObject)(results);
|
|
355
396
|
}
|
|
397
|
+
function startExecutingPatches(exeContext, parentTypeName, sourceValue, path, patches, incrementalDataRecord) {
|
|
398
|
+
if (!patches) {
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
for (const { label, groupedFieldSet: patchGroupedFieldSet } of patches) {
|
|
402
|
+
executeDeferredFragment(
|
|
403
|
+
exeContext,
|
|
404
|
+
parentTypeName,
|
|
405
|
+
sourceValue,
|
|
406
|
+
patchGroupedFieldSet,
|
|
407
|
+
label,
|
|
408
|
+
path,
|
|
409
|
+
incrementalDataRecord
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
function includeCompletedDeferredFragmentsInResult(exeContext, result) {
|
|
414
|
+
const pendingDeferredFragments = [];
|
|
415
|
+
for (const incrementalDataRecord of exeContext.subsequentPayloads) {
|
|
416
|
+
if (!isDeferredFragmentRecord(incrementalDataRecord)) {
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
if (!incrementalDataRecord.isCompleted) {
|
|
420
|
+
pendingDeferredFragments.push(incrementalDataRecord.promise);
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
const target = (0, import_getObjectAtPath.getObjectAtPath)(result, incrementalDataRecord.path);
|
|
424
|
+
if (!target) {
|
|
425
|
+
continue;
|
|
426
|
+
}
|
|
427
|
+
if (incrementalDataRecord.data != null) {
|
|
428
|
+
Object.assign(target, incrementalDataRecord.data);
|
|
429
|
+
}
|
|
430
|
+
if (incrementalDataRecord.errors.length > 0) {
|
|
431
|
+
exeContext.errors.push(...incrementalDataRecord.errors);
|
|
432
|
+
}
|
|
433
|
+
exeContext.subsequentPayloads.delete(incrementalDataRecord);
|
|
434
|
+
}
|
|
435
|
+
return pendingDeferredFragments;
|
|
436
|
+
}
|
|
356
437
|
function executeField(exeContext, parentTypeName, source, fieldGroup, path, incrementalDataRecord) {
|
|
357
438
|
const schemaFragment = exeContext.schemaFragment;
|
|
358
439
|
const fieldName = fieldGroup[0].name.value;
|
|
@@ -1330,6 +1411,17 @@ function completeObjectValue(exeContext, returnTypeName, fieldGroup, path, resul
|
|
|
1330
1411
|
}
|
|
1331
1412
|
function collectAndExecuteSubfields(exeContext, returnTypeName, fieldGroup, path, result, incrementalDataRecord) {
|
|
1332
1413
|
const { groupedFieldSet: subGroupedFieldSet, patches: subPatches } = collectSubfields(exeContext, { name: returnTypeName }, fieldGroup);
|
|
1414
|
+
if (exeContext.enableEarlyExecution) {
|
|
1415
|
+
return executeFields(
|
|
1416
|
+
exeContext,
|
|
1417
|
+
returnTypeName,
|
|
1418
|
+
result,
|
|
1419
|
+
path,
|
|
1420
|
+
subGroupedFieldSet,
|
|
1421
|
+
incrementalDataRecord,
|
|
1422
|
+
subPatches
|
|
1423
|
+
);
|
|
1424
|
+
}
|
|
1333
1425
|
const subFields = executeFields(
|
|
1334
1426
|
exeContext,
|
|
1335
1427
|
returnTypeName,
|
|
@@ -1948,6 +2040,34 @@ function getCompletedIncrementalResults(exeContext) {
|
|
|
1948
2040
|
}
|
|
1949
2041
|
return incrementalResults;
|
|
1950
2042
|
}
|
|
2043
|
+
async function getCompletedIncrementalResultsWithBatching(exeContext, batchTimeout) {
|
|
2044
|
+
const incremental = getCompletedIncrementalResults(exeContext);
|
|
2045
|
+
if (incremental.length && exeContext.subsequentPayloads.size > 0) {
|
|
2046
|
+
await raceIncrementalPayloadBatch(
|
|
2047
|
+
Array.from(exeContext.subsequentPayloads).map((p) => p.promise),
|
|
2048
|
+
batchTimeout
|
|
2049
|
+
);
|
|
2050
|
+
incremental.push(...getCompletedIncrementalResults(exeContext));
|
|
2051
|
+
}
|
|
2052
|
+
return incremental;
|
|
2053
|
+
}
|
|
2054
|
+
function raceIncrementalPayloadBatch(promises, batchTimeout) {
|
|
2055
|
+
if (!Number.isFinite(batchTimeout) || batchTimeout <= 0) {
|
|
2056
|
+
return Promise.resolve();
|
|
2057
|
+
}
|
|
2058
|
+
let timeoutId;
|
|
2059
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
2060
|
+
timeoutId = setTimeout(resolve, batchTimeout);
|
|
2061
|
+
});
|
|
2062
|
+
return Promise.race([
|
|
2063
|
+
Promise.all(promises).then(() => void 0),
|
|
2064
|
+
timeoutPromise
|
|
2065
|
+
]).finally(() => {
|
|
2066
|
+
if (timeoutId !== void 0) {
|
|
2067
|
+
clearTimeout(timeoutId);
|
|
2068
|
+
}
|
|
2069
|
+
});
|
|
2070
|
+
}
|
|
1951
2071
|
function yieldSubsequentPayloads(exeContext) {
|
|
1952
2072
|
let isDone = false;
|
|
1953
2073
|
async function next() {
|
|
@@ -1960,7 +2080,11 @@ function yieldSubsequentPayloads(exeContext) {
|
|
|
1960
2080
|
if (isDone) {
|
|
1961
2081
|
return { value: void 0, done: true };
|
|
1962
2082
|
}
|
|
1963
|
-
const
|
|
2083
|
+
const batchTimeout = exeContext.incrementalPayloadBatchingTimeoutMs;
|
|
2084
|
+
const incremental = typeof batchTimeout === "number" ? await getCompletedIncrementalResultsWithBatching(
|
|
2085
|
+
exeContext,
|
|
2086
|
+
batchTimeout
|
|
2087
|
+
) : getCompletedIncrementalResults(exeContext);
|
|
1964
2088
|
const hasNext = exeContext.subsequentPayloads.size > 0;
|
|
1965
2089
|
if (!incremental.length && hasNext) {
|
|
1966
2090
|
return next();
|
|
@@ -2003,6 +2127,9 @@ function yieldSubsequentPayloads(exeContext) {
|
|
|
2003
2127
|
function isStreamItemsRecord(incrementalDataRecord) {
|
|
2004
2128
|
return incrementalDataRecord.type === "stream";
|
|
2005
2129
|
}
|
|
2130
|
+
function isDeferredFragmentRecord(incrementalDataRecord) {
|
|
2131
|
+
return incrementalDataRecord.type === "defer";
|
|
2132
|
+
}
|
|
2006
2133
|
class DeferredFragmentRecord {
|
|
2007
2134
|
constructor(opts) {
|
|
2008
2135
|
this.type = "defer";
|
|
@@ -2018,10 +2145,11 @@ class DeferredFragmentRecord {
|
|
|
2018
2145
|
this._resolve = (promiseOrValue) => {
|
|
2019
2146
|
resolve(promiseOrValue);
|
|
2020
2147
|
};
|
|
2021
|
-
}).then((data) =>
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2148
|
+
}).then((data) => this.complete(data));
|
|
2149
|
+
}
|
|
2150
|
+
complete(data) {
|
|
2151
|
+
this.data = data;
|
|
2152
|
+
this.isCompleted = true;
|
|
2025
2153
|
}
|
|
2026
2154
|
addData(data) {
|
|
2027
2155
|
var _a, _b, _c;
|
|
@@ -2030,6 +2158,9 @@ class DeferredFragmentRecord {
|
|
|
2030
2158
|
(_b = this._resolve) == null ? void 0 : _b.call(this, parentData.then(() => data));
|
|
2031
2159
|
return;
|
|
2032
2160
|
}
|
|
2161
|
+
if (!(0, import_isPromise.isPromise)(data)) {
|
|
2162
|
+
this.complete(data);
|
|
2163
|
+
}
|
|
2033
2164
|
(_c = this._resolve) == null ? void 0 : _c.call(this, data);
|
|
2034
2165
|
}
|
|
2035
2166
|
}
|