Skip to content

Commit 5665e65

Browse files
committed
condense defer payloads
1 parent 00cf124 commit 5665e65

File tree

3 files changed

+34
-65
lines changed

3 files changed

+34
-65
lines changed

src/execution/__tests__/defer-test.ts

Lines changed: 10 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -367,20 +367,14 @@ describe('Execute: defer directive', () => {
367367
},
368368
id: '0',
369369
},
370-
],
371-
completed: [{ id: '0' }],
372-
hasNext: true,
373-
},
374-
{
375-
incremental: [
376370
{
377371
data: {
378372
friends: [{ name: 'Han' }, { name: 'Leia' }, { name: 'C-3PO' }],
379373
},
380374
id: '1',
381375
},
382376
],
383-
completed: [{ id: '1' }],
377+
completed: [{ id: '0' }, { id: '1' }],
384378
hasNext: false,
385379
},
386380
]);
@@ -732,20 +726,14 @@ describe('Execute: defer directive', () => {
732726
},
733727
id: '0',
734728
},
735-
],
736-
completed: [{ id: '0' }],
737-
hasNext: true,
738-
},
739-
{
740-
incremental: [
741729
{
742730
data: {
743731
id: '1',
744732
},
745733
id: '1',
746734
},
747735
],
748-
completed: [{ id: '1' }],
736+
completed: [{ id: '0' }, { id: '1' }],
749737
hasNext: false,
750738
},
751739
]);
@@ -909,20 +897,14 @@ describe('Execute: defer directive', () => {
909897
},
910898
id: '0',
911899
},
912-
],
913-
completed: [{ id: '0' }],
914-
hasNext: true,
915-
},
916-
{
917-
incremental: [
918900
{
919901
data: {
920902
bar: 'bar',
921903
},
922904
id: '1',
923905
},
924906
],
925-
completed: [{ id: '1' }],
907+
completed: [{ id: '0' }, { id: '1' }],
926908
hasNext: false,
927909
},
928910
]);
@@ -983,37 +965,27 @@ describe('Execute: defer directive', () => {
983965
hasNext: true,
984966
},
985967
{
986-
pending: [{ id: '1', path: ['hero', 'nestedObject'] }],
968+
pending: [
969+
{ id: '1', path: ['hero', 'nestedObject'] },
970+
{ id: '2', path: ['hero', 'nestedObject', 'deeperObject'] },
971+
],
987972
incremental: [
988973
{
989974
data: { bar: 'bar' },
990975
id: '0',
991976
subPath: ['nestedObject', 'deeperObject'],
992977
},
993-
],
994-
completed: [{ id: '0' }],
995-
hasNext: true,
996-
},
997-
{
998-
pending: [{ id: '2', path: ['hero', 'nestedObject', 'deeperObject'] }],
999-
incremental: [
1000978
{
1001979
data: { baz: 'baz' },
1002980
id: '1',
1003981
subPath: ['deeperObject'],
1004982
},
1005-
],
1006-
completed: [{ id: '1' }],
1007-
hasNext: true,
1008-
},
1009-
{
1010-
incremental: [
1011983
{
1012984
data: { bak: 'bak' },
1013985
id: '2',
1014986
},
1015987
],
1016-
completed: [{ id: '2' }],
988+
completed: [{ id: '0' }, { id: '1' }, { id: '2' }],
1017989
hasNext: false,
1018990
},
1019991
]);
@@ -2080,17 +2052,11 @@ describe('Execute: defer directive', () => {
20802052
data: { name: 'slow', friends: [{}, {}, {}] },
20812053
id: '0',
20822054
},
2083-
],
2084-
completed: [{ id: '0' }],
2085-
hasNext: true,
2086-
},
2087-
{
2088-
incremental: [
20892055
{ data: { name: 'Han' }, id: '1' },
20902056
{ data: { name: 'Leia' }, id: '2' },
20912057
{ data: { name: 'C-3PO' }, id: '3' },
20922058
],
2093-
completed: [{ id: '1' }, { id: '2' }, { id: '3' }],
2059+
completed: [{ id: '0' }, { id: '1' }, { id: '2' }, { id: '3' }],
20942060
hasNext: false,
20952061
},
20962062
]);
@@ -2136,17 +2102,11 @@ describe('Execute: defer directive', () => {
21362102
},
21372103
id: '0',
21382104
},
2139-
],
2140-
completed: [{ id: '0' }],
2141-
hasNext: true,
2142-
},
2143-
{
2144-
incremental: [
21452105
{ data: { name: 'Han' }, id: '1' },
21462106
{ data: { name: 'Leia' }, id: '2' },
21472107
{ data: { name: 'C-3PO' }, id: '3' },
21482108
],
2149-
completed: [{ id: '1' }, { id: '2' }, { id: '3' }],
2109+
completed: [{ id: '0' }, { id: '1' }, { id: '2' }, { id: '3' }],
21502110
hasNext: false,
21512111
},
21522112
]);

src/execution/__tests__/stream-test.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,10 +1444,6 @@ describe('Execute: stream directive', () => {
14441444
},
14451445
{
14461446
incremental: [
1447-
{
1448-
items: [{ name: 'Luke' }],
1449-
id: '1',
1450-
},
14511447
{
14521448
data: { scalarField: null },
14531449
id: '0',
@@ -1459,6 +1455,10 @@ describe('Execute: stream directive', () => {
14591455
},
14601456
],
14611457
},
1458+
{
1459+
items: [{ name: 'Luke' }],
1460+
id: '1',
1461+
},
14621462
],
14631463
completed: [{ id: '0' }],
14641464
hasNext: true,
@@ -1944,14 +1944,14 @@ describe('Execute: stream directive', () => {
19441944
value: {
19451945
pending: [{ id: '2', path: ['friendList', 1], label: 'DeferName' }],
19461946
incremental: [
1947-
{
1948-
items: [{ id: '2' }],
1949-
id: '1',
1950-
},
19511947
{
19521948
data: { name: 'Luke' },
19531949
id: '0',
19541950
},
1951+
{
1952+
items: [{ id: '2' }],
1953+
id: '1',
1954+
},
19551955
],
19561956
completed: [{ id: '0' }],
19571957
hasNext: true,
@@ -2047,14 +2047,14 @@ describe('Execute: stream directive', () => {
20472047
value: {
20482048
pending: [{ id: '2', path: ['friendList', 1], label: 'DeferName' }],
20492049
incremental: [
2050-
{
2051-
items: [{ id: '2' }],
2052-
id: '1',
2053-
},
20542050
{
20552051
data: { name: 'Luke' },
20562052
id: '0',
20572053
},
2054+
{
2055+
items: [{ id: '2' }],
2056+
id: '1',
2057+
},
20582058
],
20592059
completed: [{ id: '0' }],
20602060
hasNext: true,

src/execution/execute.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2106,13 +2106,22 @@ function executeDeferredGroupedFieldSets(
21062106
deferMap,
21072107
);
21082108

2109+
const result = shouldDefer(parentDeferUsages, deferUsageSet)
2110+
? Promise.resolve().then(executor)
2111+
: executor();
2112+
21092113
const deferredGroupedFieldSetRecord: DeferredGroupedFieldSetRecord = {
21102114
deferredFragmentRecords,
2111-
result: shouldDefer(parentDeferUsages, deferUsageSet)
2112-
? Promise.resolve().then(executor)
2113-
: executor(),
2115+
result,
21142116
};
21152117

2118+
if (isPromise(result)) {
2119+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
2120+
result.then((resolved) => {
2121+
deferredGroupedFieldSetRecord.result = resolved;
2122+
});
2123+
}
2124+
21162125
newDeferredGroupedFieldSetRecords.push(deferredGroupedFieldSetRecord);
21172126
}
21182127

0 commit comments

Comments
 (0)