Skip to content

Commit dfd48fb

Browse files
committed
refactor(incremental): introduce BoxedPromiseOrValue to save resolved promise results
1 parent acc4fc7 commit dfd48fb

File tree

7 files changed

+181
-237
lines changed

7 files changed

+181
-237
lines changed

src/execution/IncrementalGraph.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export class IncrementalGraph {
110110
this._newPending.clear();
111111

112112
for (const incrementalDataRecord of this._newIncrementalDataRecords) {
113-
const result = incrementalDataRecord.result;
113+
const result = incrementalDataRecord.result.value;
114114
if (isPromise(result)) {
115115
// eslint-disable-next-line @typescript-eslint/no-floating-promises
116116
result.then((resolved) => this._enqueue(resolved));

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
]);

0 commit comments

Comments
 (0)